From 12b46193f31a795f3a7c0e4fbf824e27586afb3b Mon Sep 17 00:00:00 2001 From: "sven-dmlr (via github-actions)" Date: Fri, 14 Feb 2025 12:11:02 +0000 Subject: [PATCH 1/4] SPDX headers added by SecHub release job @github-actions --- .../mercedesbenz/sechub/commons/core/CachingPatternProvider.java | 1 + .../com/mercedesbenz/sechub/commons/core/PatternCompiler.java | 1 + .../sechub/commons/core/CachingPatternProviderTest.java | 1 + .../mercedesbenz/sechub/commons/core/PatternCompilerTest.java | 1 + .../sechub/commons/model/template/TemplateUsageValidator.java | 1 + .../commons/model/template/TemplateUsageValidatorTest.java | 1 + .../domain/scan/ScanSecHubConfigurationRuntimeInspector.java | 1 + .../domain/scan/ScanSecHubConfigurationRuntimeInspectorTest.java | 1 + .../schedule/ScheduleSecHubConfigurationRuntimeValidation.java | 1 + .../ScheduleSecHubConfigurationRuntimeValidationTest.java | 1 + 10 files changed, 10 insertions(+) diff --git a/sechub-commons-core/src/main/java/com/mercedesbenz/sechub/commons/core/CachingPatternProvider.java b/sechub-commons-core/src/main/java/com/mercedesbenz/sechub/commons/core/CachingPatternProvider.java index 9103c0fdf..08bdcc3bf 100644 --- a/sechub-commons-core/src/main/java/com/mercedesbenz/sechub/commons/core/CachingPatternProvider.java +++ b/sechub-commons-core/src/main/java/com/mercedesbenz/sechub/commons/core/CachingPatternProvider.java @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT package com.mercedesbenz.sechub.commons.core; import static java.util.Objects.*; diff --git a/sechub-commons-core/src/main/java/com/mercedesbenz/sechub/commons/core/PatternCompiler.java b/sechub-commons-core/src/main/java/com/mercedesbenz/sechub/commons/core/PatternCompiler.java index 2a8e11caa..feecf5e0c 100644 --- a/sechub-commons-core/src/main/java/com/mercedesbenz/sechub/commons/core/PatternCompiler.java +++ b/sechub-commons-core/src/main/java/com/mercedesbenz/sechub/commons/core/PatternCompiler.java @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT package com.mercedesbenz.sechub.commons.core; import static java.util.Objects.*; diff --git a/sechub-commons-core/src/test/java/com/mercedesbenz/sechub/commons/core/CachingPatternProviderTest.java b/sechub-commons-core/src/test/java/com/mercedesbenz/sechub/commons/core/CachingPatternProviderTest.java index 223a4c026..40c6fe6c0 100644 --- a/sechub-commons-core/src/test/java/com/mercedesbenz/sechub/commons/core/CachingPatternProviderTest.java +++ b/sechub-commons-core/src/test/java/com/mercedesbenz/sechub/commons/core/CachingPatternProviderTest.java @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT package com.mercedesbenz.sechub.commons.core; import static org.assertj.core.api.Assertions.*; diff --git a/sechub-commons-core/src/test/java/com/mercedesbenz/sechub/commons/core/PatternCompilerTest.java b/sechub-commons-core/src/test/java/com/mercedesbenz/sechub/commons/core/PatternCompilerTest.java index f659c022d..720f2b1e4 100644 --- a/sechub-commons-core/src/test/java/com/mercedesbenz/sechub/commons/core/PatternCompilerTest.java +++ b/sechub-commons-core/src/test/java/com/mercedesbenz/sechub/commons/core/PatternCompilerTest.java @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT package com.mercedesbenz.sechub.commons.core; import static org.assertj.core.api.Assertions.*; diff --git a/sechub-commons-model/src/main/java/com/mercedesbenz/sechub/commons/model/template/TemplateUsageValidator.java b/sechub-commons-model/src/main/java/com/mercedesbenz/sechub/commons/model/template/TemplateUsageValidator.java index 0b3073fd8..4a98a4201 100644 --- a/sechub-commons-model/src/main/java/com/mercedesbenz/sechub/commons/model/template/TemplateUsageValidator.java +++ b/sechub-commons-model/src/main/java/com/mercedesbenz/sechub/commons/model/template/TemplateUsageValidator.java @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT package com.mercedesbenz.sechub.commons.model.template; import static java.util.Objects.*; diff --git a/sechub-commons-model/src/test/java/com/mercedesbenz/sechub/commons/model/template/TemplateUsageValidatorTest.java b/sechub-commons-model/src/test/java/com/mercedesbenz/sechub/commons/model/template/TemplateUsageValidatorTest.java index 8003500f9..0a50a86c6 100644 --- a/sechub-commons-model/src/test/java/com/mercedesbenz/sechub/commons/model/template/TemplateUsageValidatorTest.java +++ b/sechub-commons-model/src/test/java/com/mercedesbenz/sechub/commons/model/template/TemplateUsageValidatorTest.java @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT package com.mercedesbenz.sechub.commons.model.template; import static org.assertj.core.api.Assertions.*; diff --git a/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/ScanSecHubConfigurationRuntimeInspector.java b/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/ScanSecHubConfigurationRuntimeInspector.java index 7d227ea9e..1a5cde570 100644 --- a/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/ScanSecHubConfigurationRuntimeInspector.java +++ b/sechub-scan/src/main/java/com/mercedesbenz/sechub/domain/scan/ScanSecHubConfigurationRuntimeInspector.java @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT package com.mercedesbenz.sechub.domain.scan; import java.util.List; diff --git a/sechub-scan/src/test/java/com/mercedesbenz/sechub/domain/scan/ScanSecHubConfigurationRuntimeInspectorTest.java b/sechub-scan/src/test/java/com/mercedesbenz/sechub/domain/scan/ScanSecHubConfigurationRuntimeInspectorTest.java index c9fcbcf3b..5dba55272 100644 --- a/sechub-scan/src/test/java/com/mercedesbenz/sechub/domain/scan/ScanSecHubConfigurationRuntimeInspectorTest.java +++ b/sechub-scan/src/test/java/com/mercedesbenz/sechub/domain/scan/ScanSecHubConfigurationRuntimeInspectorTest.java @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT package com.mercedesbenz.sechub.domain.scan; import static org.assertj.core.api.Assertions.*; diff --git a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/ScheduleSecHubConfigurationRuntimeValidation.java b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/ScheduleSecHubConfigurationRuntimeValidation.java index 5263dfd00..97cc80cfe 100644 --- a/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/ScheduleSecHubConfigurationRuntimeValidation.java +++ b/sechub-schedule/src/main/java/com/mercedesbenz/sechub/domain/schedule/ScheduleSecHubConfigurationRuntimeValidation.java @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT package com.mercedesbenz.sechub.domain.schedule; import static java.util.Objects.*; diff --git a/sechub-schedule/src/test/java/com/mercedesbenz/sechub/domain/schedule/ScheduleSecHubConfigurationRuntimeValidationTest.java b/sechub-schedule/src/test/java/com/mercedesbenz/sechub/domain/schedule/ScheduleSecHubConfigurationRuntimeValidationTest.java index ba829159b..a0e6372e9 100644 --- a/sechub-schedule/src/test/java/com/mercedesbenz/sechub/domain/schedule/ScheduleSecHubConfigurationRuntimeValidationTest.java +++ b/sechub-schedule/src/test/java/com/mercedesbenz/sechub/domain/schedule/ScheduleSecHubConfigurationRuntimeValidationTest.java @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: MIT package com.mercedesbenz.sechub.domain.schedule; import static org.assertj.core.api.Assertions.*; From b5a19707ecc7f842aafef015d78aa94dd90d5c38 Mon Sep 17 00:00:00 2001 From: Sven Dolderer Date: Fri, 14 Feb 2025 15:58:57 +0100 Subject: [PATCH 2/4] added missing package #3744 --- sechub-website/package-lock.json | 450 ++++++++++++++++++++++++++++++- sechub-website/package.json | 3 +- 2 files changed, 450 insertions(+), 3 deletions(-) diff --git a/sechub-website/package-lock.json b/sechub-website/package-lock.json index a13865f2b..ce2dbcfa1 100644 --- a/sechub-website/package-lock.json +++ b/sechub-website/package-lock.json @@ -11,12 +11,13 @@ "devDependencies": { "@headlessui/vue": "^1.7.19", "@heroicons/vue": "^2.1.1", - "@nuxt/devtools": "*", + "@nuxt/devtools": "latest", "@nuxtjs/tailwindcss": "^6.11.4", "nuxt": "^3.15.4", "nuxt-security": "^1.2.1", "prettier": "^3.2.5", - "prettier-plugin-tailwindcss": "^0.5.11" + "prettier-plugin-tailwindcss": "^0.5.11", + "sass-embedded": "^1.85.0" } }, "node_modules/@alloc/quick-lru": { @@ -544,6 +545,12 @@ "node": ">=6.9.0" } }, + "node_modules/@bufbuild/protobuf": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.3.tgz", + "integrity": "sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg==", + "dev": true + }, "node_modules/@cloudflare/kv-asset-handler": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.4.tgz", @@ -3961,6 +3968,12 @@ "ieee754": "^1.2.1" } }, + "node_modules/buffer-builder": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz", + "integrity": "sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==", + "dev": true + }, "node_modules/buffer-crc32": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", @@ -4418,6 +4431,12 @@ "dev": true, "license": "MIT" }, + "node_modules/colorjs.io": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz", + "integrity": "sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==", + "dev": true + }, "node_modules/commander": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", @@ -6041,6 +6060,12 @@ "dev": true, "license": "MIT" }, + "node_modules/immutable": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "dev": true + }, "node_modules/impound": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/impound/-/impound-0.2.0.tgz", @@ -9415,12 +9440,400 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/sass-embedded": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.85.0.tgz", + "integrity": "sha512-x3Vv54g0jv1aPSW8OTA/0GzQCs/HMQOjIkLtZJ3Xsn/I4vnyjKbVTQmFTax9bQjldqLEEkdbvy6ES/cOOnYNwA==", + "dev": true, + "dependencies": { + "@bufbuild/protobuf": "^2.0.0", + "buffer-builder": "^0.2.0", + "colorjs.io": "^0.5.0", + "immutable": "^5.0.2", + "rxjs": "^7.4.0", + "supports-color": "^8.1.1", + "sync-child-process": "^1.0.2", + "varint": "^6.0.0" + }, + "bin": { + "sass": "dist/bin/sass.js" + }, + "engines": { + "node": ">=16.0.0" + }, + "optionalDependencies": { + "sass-embedded-android-arm": "1.85.0", + "sass-embedded-android-arm64": "1.85.0", + "sass-embedded-android-ia32": "1.85.0", + "sass-embedded-android-riscv64": "1.85.0", + "sass-embedded-android-x64": "1.85.0", + "sass-embedded-darwin-arm64": "1.85.0", + "sass-embedded-darwin-x64": "1.85.0", + "sass-embedded-linux-arm": "1.85.0", + "sass-embedded-linux-arm64": "1.85.0", + "sass-embedded-linux-ia32": "1.85.0", + "sass-embedded-linux-musl-arm": "1.85.0", + "sass-embedded-linux-musl-arm64": "1.85.0", + "sass-embedded-linux-musl-ia32": "1.85.0", + "sass-embedded-linux-musl-riscv64": "1.85.0", + "sass-embedded-linux-musl-x64": "1.85.0", + "sass-embedded-linux-riscv64": "1.85.0", + "sass-embedded-linux-x64": "1.85.0", + "sass-embedded-win32-arm64": "1.85.0", + "sass-embedded-win32-ia32": "1.85.0", + "sass-embedded-win32-x64": "1.85.0" + } + }, + "node_modules/sass-embedded-android-arm": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.85.0.tgz", + "integrity": "sha512-pPBT7Ad6G8Mlao8ypVNXW2ya7I/Bhcny+RYZ/EmrunEXfhzCNp4PWV2VAweitPO9RnPIJwvUTkLc8Fu6K3nVmw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-arm64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.85.0.tgz", + "integrity": "sha512-4itDzRwezwrW8+YzMLIwHtMeH+qrBNdBsRn9lTVI15K+cNLC8z5JWJi6UCZ8TNNZr9LDBfsh5jUdjSub0yF7jg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-ia32": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.85.0.tgz", + "integrity": "sha512-bwqKq95hzbGbMTeXCMQhH7yEdc2xJVwIXj7rGdD3McvyFWbED6362XRFFPI5YyjfD2wRJd9yWLh/hn+6VyjcYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-riscv64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.85.0.tgz", + "integrity": "sha512-Fgkgay+5EePJXZFHR5Vlkutnsmox2V6nX4U3mfGbSN1xjLRm8F5ST72V2s5Z0mnIFpGvEu/v7hfptgViqMvaxg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-android-x64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.85.0.tgz", + "integrity": "sha512-/bG3JgTn3eoIDHCiJNVkLeJgUesat4ghxqYmKMZUJx++4e6iKCDj8XwQTJAgm+QDrsPKXHBacHEANJ9LEAuTqg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-arm64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.85.0.tgz", + "integrity": "sha512-plp8TyMz97YFBCB3ndftEvoW29vyfsSBJILM5U84cGzr06SvLh/Npjj8psfUeRw+upEk1zkFtw5u61sRCdgwIw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-darwin-x64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.85.0.tgz", + "integrity": "sha512-LP8Zv8DG57Gn6PmSwWzC0gEZUsGdg36Ps3m0i1fVTOelql7N3HZIrlPYRjJvidL8ZlB3ISxNANebTREUHn/wkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.85.0.tgz", + "integrity": "sha512-18xOAEfazJt1MMVS2TRHV94n81VyMnywOoJ7/S7I79qno/zx26OoqqP4XvH107xu8+mZ9Gg54LrUH6ZcgHk08g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-arm64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.85.0.tgz", + "integrity": "sha512-JRIRKVOY5Y8M1zlUOv9AQGju4P6lj8i5vLJZsVYVN/uY8Cd2dDJZPC8EOhjntp+IpF8AOGIHqCeCkHBceIyIjA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-ia32": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.85.0.tgz", + "integrity": "sha512-4JH+h+gLt9So22nNPQtsKojEsLzjld9ol3zWcOtMGclv+HojZGbCuhJUrLUcK72F8adXYsULmWhJPKROLIwYMA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.85.0.tgz", + "integrity": "sha512-Z1j4ageDVFihqNUBnm89fxY46pY0zD/Clp1D3ZdI7S+D280+AEpbm5vMoH8LLhBQfQLf2w7H++SZGpQwrisudQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-arm64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.85.0.tgz", + "integrity": "sha512-aoQjUjK28bvdw9XKTjQeayn8oWQ2QqvoTD11myklGd3IHH7Jj0nwXUstI4NxDueCKt3wghuZoIQkjOheReQxlg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-ia32": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.85.0.tgz", + "integrity": "sha512-/cJCSXOfXmQFH8deE+3U9x+BSz8i0d1Tt9gKV/Gat1Xm43Oumw8pmZgno+cDuGjYQInr9ryW5121pTMlj/PBXQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-riscv64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.85.0.tgz", + "integrity": "sha512-l+FJxMXkmg42RZq5RFKXg4InX0IA7yEiPHe4kVSdrczP7z3NLxk+W9wVkPnoRKYIMe1qZPPQ25y0TgI4HNWouA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-musl-x64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.85.0.tgz", + "integrity": "sha512-M9ffjcYfFcRvkFA6V3DpOS955AyvmpvPAhL/xNK45d/ma1n1ehTWpd24tVeKiNK5CZkNjjMEfyw2fHa6MpqmEA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-riscv64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.85.0.tgz", + "integrity": "sha512-yqPXQWfM+qiIPkfn++48GOlbmSvUZIyL9nwFstBk0k4x40UhbhilfknqeTUpxoHfQzylTGVhrm5JE7MjM+LNZA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-linux-x64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.85.0.tgz", + "integrity": "sha512-NTDeQFZcuVR7COoaRy8pZD6/+QznwBR8kVFsj7NpmvX9aJ7TX/q+OQZHX7Bfb3tsfKXhf1YZozegPuYxRnMKAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-arm64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.85.0.tgz", + "integrity": "sha512-gO0VAuxC4AdV+uZYJESRWVVHQWCGzNs0C3OKCAdH4r1vGRugooMi7J/5wbwUdXDA1MV9ICfhlKsph2n3GiPdqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-ia32": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.85.0.tgz", + "integrity": "sha512-PCyn6xeFIBUgBceNypuf73/5DWF2VWPlPqPuBprPsTvpZOMUJeBtP+Lf4mnu3dNy1z76mYVnpaCnQmzZ0zHZaA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded-win32-x64": { + "version": "1.85.0", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.85.0.tgz", + "integrity": "sha512-AknE2jLp6OBwrR5hQ8pDsG94KhJCeSheFJ2xgbnk8RUjZX909JiNbgh2sNt9LG+RXf4xZa55dDL537gZoCx/iw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-embedded/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/scule": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", @@ -10004,6 +10417,27 @@ "url": "https://opencollective.com/svgo" } }, + "node_modules/sync-child-process": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz", + "integrity": "sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==", + "dev": true, + "dependencies": { + "sync-message-port": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/sync-message-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz", + "integrity": "sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==", + "dev": true, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/system-architecture": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", @@ -10395,6 +10829,12 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, "node_modules/tsscmp": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", @@ -10953,6 +11393,12 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, + "node_modules/varint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", + "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", + "dev": true + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", diff --git a/sechub-website/package.json b/sechub-website/package.json index 1a3839090..3cabee6da 100644 --- a/sechub-website/package.json +++ b/sechub-website/package.json @@ -19,6 +19,7 @@ "nuxt": "^3.15.4", "nuxt-security": "^1.2.1", "prettier": "^3.2.5", - "prettier-plugin-tailwindcss": "^0.5.11" + "prettier-plugin-tailwindcss": "^0.5.11", + "sass-embedded": "^1.85.0" } } From b96d539ddf4ae1ab2684a88a266cb321f0d61384 Mon Sep 17 00:00:00 2001 From: Sven Dolderer Date: Fri, 14 Feb 2025 16:00:11 +0100 Subject: [PATCH 3/4] added detection of build success #3744 --- sechub-doc/helperscripts/publish+git-add-releasedocs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sechub-doc/helperscripts/publish+git-add-releasedocs.sh b/sechub-doc/helperscripts/publish+git-add-releasedocs.sh index 6a951e7e7..ce492dbb7 100755 --- a/sechub-doc/helperscripts/publish+git-add-releasedocs.sh +++ b/sechub-doc/helperscripts/publish+git-add-releasedocs.sh @@ -103,7 +103,7 @@ if [ "$BRANCH" != "$GIT_RELEASE_BRANCH" ] ; then fi echo "# SecHub website: Build and publish" -"$WEBSITE_HOME"/build-sechub-website.sh +"$WEBSITE_HOME"/build-sechub-website.sh || exit 1 echo # Get list of changes files From c8e6540023e7f587b758e4727d8fc7e09ff0311d Mon Sep 17 00:00:00 2001 From: "sven-dmlr (via github-actions)" Date: Fri, 14 Feb 2025 15:21:06 +0000 Subject: [PATCH 4/4] docs update by SecHub release job @github-actions --- docs/200.html | 18 +- docs/404.html | 18 +- docs/_nuxt/1ixkSwBj.js | 1 - docs/_nuxt/BBZg053E.js | 1 + docs/_nuxt/BMVkI6Ro.js | 1 + docs/_nuxt/CDYRVOow.js | 1 - docs/_nuxt/D9hhhhWN.js | 23 - docs/_nuxt/DztoTzgx.js | 24 + docs/_nuxt/builds/latest.json | 2 +- .../98cf1292-4f7d-457b-95d9-c3106eb94c7e.json | 1 + .../d8b811fa-4cdc-467b-81bf-673a0b8dc665.json | 1 - docs/_nuxt/error-404.1I9kcRJA.css | 1 + docs/_nuxt/error-404.DYxFu4PM.css | 1 - docs/_nuxt/error-500.D2gsH5Ap.css | 1 + docs/_nuxt/error-500.PGmg907S.css | 1 - docs/_payload.json | 2 +- docs/index.html | 20 +- .../images/diagram_pds_events_storage.svg | 2 +- .../diagram_sechub_job_cancellation.svg | 2 +- .../diagram_sechub_job_restart_handling.svg | 2 +- .../images/diagram_target_architecture.svg | 2 +- ...rview_uc_admin_assigns_user_to_project.svg | 2 +- ...w_uc_admin_unassigns_user_from_project.svg | 2 +- ...ssaging_analyze_scan_results_available.svg | 2 +- ...ing_auto_cleanup_configuration_changed.svg | 2 +- ...en_domain_messaging_binary_upload_done.svg | 2 +- ..._get_encryption_status_schedule_domain.svg | 2 +- ...ain_messaging_job_cancellation_running.svg | 2 +- .../gen_domain_messaging_job_created.svg | 2 +- .../images/gen_domain_messaging_job_done.svg | 2 +- ...omain_messaging_job_execution_starting.svg | 2 +- .../gen_domain_messaging_job_failed.svg | 2 +- .../gen_domain_messaging_job_started.svg | 2 +- .../gen_domain_messaging_job_suspended.svg | 2 +- ...essaging_mapping_configuration_changed.svg | 2 +- .../images/gen_domain_messaging_overview.svg | 2 +- ...messaging_project_access_level_changed.svg | 2 +- .../gen_domain_messaging_project_created.svg | 2 +- .../gen_domain_messaging_project_deleted.svg | 2 +- ...domain_messaging_project_owner_changed.svg | 2 +- ...in_messaging_project_whitelist_updated.svg | 2 +- ...ing_request_assign_template_to_project.svg | 2 +- ..._request_full_configuration_validation.svg | 1 + ...ain_messaging_request_job_cancellation.svg | 2 +- ...n_domain_messaging_request_job_restart.svg | 2 +- ...ain_messaging_request_job_restart_hard.svg | 2 +- ...quest_scheduler_disable_job_processing.svg | 2 +- ...equest_scheduler_enable_job_processing.svg | 2 +- ...saging_request_scheduler_status_update.svg | 2 +- ...request_unassign_template_from_project.svg | 2 +- ...saging_request_user_role_recalculation.svg | 2 +- ...g_result_full_configuration_validation.svg | 1 + ...g_schedule_encryption_pool_initialized.svg | 2 +- ...ging_scheduler_job_processing_disabled.svg | 2 +- ...aging_scheduler_job_processing_enabled.svg | 2 +- ...main_messaging_scheduler_status_update.svg | 2 +- ...en_domain_messaging_source_upload_done.svg | 2 +- ...in_messaging_start_encryption_rotation.svg | 2 +- .../gen_domain_messaging_template_deleted.svg | 1 + ...domain_messaging_user_added_to_project.svg | 2 +- ...omain_messaging_user_api_token_changed.svg | 2 +- ...main_messaging_user_becomes_superadmin.svg | 2 +- .../gen_domain_messaging_user_created.svg | 2 +- .../gen_domain_messaging_user_deleted.svg | 2 +- ...n_messaging_user_email_address_changed.svg | 2 +- ...messaging_user_new_api_token_requested.svg | 2 +- ...in_messaging_user_no_longer_superadmin.svg | 2 +- ...in_messaging_user_removed_from_project.svg | 2 +- ...en_domain_messaging_user_roles_changed.svg | 2 +- ...domain_messaging_user_signup_requested.svg | 2 +- docs/latest/images/gen_springprofiles-dev.svg | 2 +- .../gen_springprofiles-integrationtest.svg | 2 +- .../latest/images/gen_springprofiles-prod.svg | 2 +- docs/latest/images/gen_springprofiles.svg | 2 +- docs/latest/sechub-architecture.html | 1159 +++++++++----- docs/latest/sechub-client.html | 6 +- .../sechub-developer-quickstart-guide.html | 14 +- docs/latest/sechub-getting-started.html | 6 +- docs/latest/sechub-operations.html | 397 +++-- .../sechub-product-delegation-server.html | 6 +- docs/latest/sechub-restapi.html | 971 +++++++----- docs/latest/sechub-techdoc.html | 1350 ++++++++++++----- docs/latest/sechub-tutorials.html | 6 +- docs/latest/server-download.html | 2 +- 84 files changed, 2690 insertions(+), 1455 deletions(-) delete mode 100644 docs/_nuxt/1ixkSwBj.js create mode 100644 docs/_nuxt/BBZg053E.js create mode 100644 docs/_nuxt/BMVkI6Ro.js delete mode 100644 docs/_nuxt/CDYRVOow.js delete mode 100644 docs/_nuxt/D9hhhhWN.js create mode 100644 docs/_nuxt/DztoTzgx.js create mode 100644 docs/_nuxt/builds/meta/98cf1292-4f7d-457b-95d9-c3106eb94c7e.json delete mode 100644 docs/_nuxt/builds/meta/d8b811fa-4cdc-467b-81bf-673a0b8dc665.json create mode 100644 docs/_nuxt/error-404.1I9kcRJA.css delete mode 100644 docs/_nuxt/error-404.DYxFu4PM.css create mode 100644 docs/_nuxt/error-500.D2gsH5Ap.css delete mode 100644 docs/_nuxt/error-500.PGmg907S.css create mode 100644 docs/latest/images/gen_domain_messaging_request_full_configuration_validation.svg create mode 100644 docs/latest/images/gen_domain_messaging_result_full_configuration_validation.svg create mode 100644 docs/latest/images/gen_domain_messaging_template_deleted.svg diff --git a/docs/200.html b/docs/200.html index 1289c8c00..df6bc65cc 100644 --- a/docs/200.html +++ b/docs/200.html @@ -1,12 +1,12 @@ SecHub - - - - - - - -
- \ No newline at end of file + + + + + + + +
+ \ No newline at end of file diff --git a/docs/404.html b/docs/404.html index 1289c8c00..faeb571ae 100644 --- a/docs/404.html +++ b/docs/404.html @@ -1,12 +1,12 @@ SecHub - - - - - - - -
- \ No newline at end of file + + + + + + + +
+ \ No newline at end of file diff --git a/docs/_nuxt/1ixkSwBj.js b/docs/_nuxt/1ixkSwBj.js deleted file mode 100644 index 0bd6d1fda..000000000 --- a/docs/_nuxt/1ixkSwBj.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,u as o,o as s,c as i,a as e,t as r,p as u,f as c}from"./D9hhhhWN.js";const l=t=>(u("data-v-1e3620c9"),t=t(),c(),t),d={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},p=l(()=>e("div",{class:"fixed -bottom-1/2 left-0 right-0 h-1/2 spotlight"},null,-1)),h={class:"max-w-520px text-center"},g=["textContent"],b=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const n=t;return o({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[],style:[{children:'*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(m,x)=>(s(),i("div",d,[p,e("div",h,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:r(t.statusCode)},null,8,g),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:r(t.description)},null,8,b)])]))}},k=a(f,[["__scopeId","data-v-1e3620c9"]]);export{k as default}; diff --git a/docs/_nuxt/BBZg053E.js b/docs/_nuxt/BBZg053E.js new file mode 100644 index 000000000..4209aef27 --- /dev/null +++ b/docs/_nuxt/BBZg053E.js @@ -0,0 +1 @@ +import{_ as a,u as i,o as u,c,a as e,t as r,b as l,w as d,d as p,e as f}from"./DztoTzgx.js";const m={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},g={class:"max-w-520px text-center z-20"},h=["textContent"],b=["textContent"],x={class:"flex items-center justify-center w-full"},y={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return i({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[{children:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{children:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(k,o)=>{const s=f;return u(),c("div",m,[o[0]||(o[0]=e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),e("div",g,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:r(t.statusCode)},null,8,h),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:r(t.description)},null,8,b),e("div",x,[l(s,{to:"/",class:"cursor-pointer gradient-border px-4 py-2 sm:px-6 sm:py-3 sm:text-xl text-md"},{default:d(()=>[p(r(t.backHome),1)]),_:1})])])])}}},_=a(y,[["__scopeId","data-v-c2c324f7"]]);export{_ as default}; diff --git a/docs/_nuxt/BMVkI6Ro.js b/docs/_nuxt/BMVkI6Ro.js new file mode 100644 index 000000000..0e2e63f34 --- /dev/null +++ b/docs/_nuxt/BMVkI6Ro.js @@ -0,0 +1 @@ +import{_ as s,u as a,o as i,c as u,a as e,t as o}from"./DztoTzgx.js";const l={class:"antialiased bg-white dark:bg-black dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-black"},c={class:"max-w-520px text-center"},d=["textContent"],p=["textContent"],f={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const r=t;return a({title:`${r.statusCode} - ${r.statusMessage} | ${r.appName}`,script:[{children:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver((e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)})).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{children:'*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1{font-size:inherit;font-weight:inherit}h1,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(g,n)=>(i(),u("div",l,[n[0]||(n[0]=e("div",{class:"-bottom-1/2 fixed h-1/2 left-0 right-0 spotlight"},null,-1)),e("div",c,[e("h1",{class:"font-medium mb-8 sm:text-10xl text-8xl",textContent:o(t.statusCode)},null,8,d),e("p",{class:"font-light leading-tight mb-16 px-8 sm:px-0 sm:text-4xl text-xl",textContent:o(t.description)},null,8,p)])]))}},m=s(f,[["__scopeId","data-v-3726f659"]]);export{m as default}; diff --git a/docs/_nuxt/CDYRVOow.js b/docs/_nuxt/CDYRVOow.js deleted file mode 100644 index cf9d4e4dc..000000000 --- a/docs/_nuxt/CDYRVOow.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as r,u as s,o as i,c as u,a as e,t as o,b as c,w as d,d as l,e as p,p as h,f as b}from"./D9hhhhWN.js";const f=t=>(h("data-v-922baad2"),t=t(),b(),t),g={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},x=f(()=>e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),m={class:"max-w-520px text-center z-20"},y=["textContent"],_=["textContent"],k={class:"w-full flex items-center justify-center"},w={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const n=t;return s({title:`${n.statusCode} - ${n.statusMessage} | ${n.appName}`,script:[],style:[{children:'*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:var(--un-default-border-color, #e5e7eb)}:before,:after{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}h1{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}h1,p{margin:0}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }'}]}),(z,S)=>{const a=p;return i(),u("div",g,[x,e("div",m,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:o(t.statusCode)},null,8,y),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:o(t.description)},null,8,_),e("div",k,[c(a,{to:"/",class:"gradient-border text-md sm:text-xl py-2 px-4 sm:py-3 sm:px-6 cursor-pointer"},{default:d(()=>[l(o(t.backHome),1)]),_:1})])])])}}},C=r(w,[["__scopeId","data-v-922baad2"]]);export{C as default}; diff --git a/docs/_nuxt/D9hhhhWN.js b/docs/_nuxt/D9hhhhWN.js deleted file mode 100644 index 331a40d92..000000000 --- a/docs/_nuxt/D9hhhhWN.js +++ /dev/null @@ -1,23 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CDYRVOow.js","./error-404.DYxFu4PM.css","./1ixkSwBj.js","./error-500.PGmg907S.css"])))=>i.map(i=>d[i]); -/** -* @vue/shared v3.4.36 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function ms(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ae={},Ht=[],Le=()=>{},$a=()=>!1,un=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),ys=e=>e.startsWith("onUpdate:"),_e=Object.assign,_s=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ha=Object.prototype.hasOwnProperty,Y=(e,t)=>Ha.call(e,t),W=Array.isArray,Lt=e=>tr(e)==="[object Map]",xi=e=>tr(e)==="[object Set]",G=e=>typeof e=="function",ce=e=>typeof e=="string",dt=e=>typeof e=="symbol",oe=e=>e!==null&&typeof e=="object",Ei=e=>(oe(e)||G(e))&&G(e.then)&&G(e.catch),Ti=Object.prototype.toString,tr=e=>Ti.call(e),La=e=>tr(e).slice(8,-1),Si=e=>tr(e)==="[object Object]",vs=e=>ce(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Nt=ms(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),nr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Na=/-(\w)/g,De=nr(e=>e.replace(Na,(t,n)=>n?n.toUpperCase():"")),ja=/\B([A-Z])/g,kt=nr(e=>e.replace(ja,"-$1").toLowerCase()),rr=nr(e=>e.charAt(0).toUpperCase()+e.slice(1)),Er=nr(e=>e?`on${rr(e)}`:""),ut=(e,t)=>!Object.is(e,t),Tr=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Fa=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ai=e=>{const t=ce(e)?Number(e):NaN;return isNaN(t)?e:t};let oo;const Ri=()=>oo||(oo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function sr(e){if(W(e)){const t={};for(let n=0;n{if(n){const r=n.split(Ua);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function or(e){let t="";if(ce(e))t=e;else if(W(e))for(let n=0;n!!(e&&e.__v_isRef===!0),St=e=>ce(e)?e:e==null?"":W(e)||oe(e)&&(e.toString===Ti||!G(e.toString))?ki(e)?St(e.value):JSON.stringify(e,Ii,2):String(e),Ii=(e,t)=>ki(t)?Ii(e,t.value):Lt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Sr(r,o)+" =>"]=s,n),{})}:xi(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Sr(n))}:dt(t)?Sr(t):oe(t)&&!W(t)&&!Si(t)?String(t):t,Sr=(e,t="")=>{var n;return dt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.4.36 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Fe;class Mi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Fe,!t&&Fe&&(this.index=(Fe.scopes||(Fe.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Fe;try{return Fe=this,t()}finally{Fe=n}}}on(){Fe=this}off(){Fe=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),pt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=at,n=Ct;try{return at=!0,Ct=this,this._runnings++,io(this),this.fn()}finally{lo(this),this._runnings--,Ct=n,at=t}}stop(){this.active&&(io(this),lo(this),this.onStop&&this.onStop(),this.active=!1)}}function za(e){return e.value}function io(e){e._trackId++,e._depsLength=0}function lo(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},Fn=new WeakMap,At=Symbol(""),Br=Symbol("");function Re(e,t,n){if(at&&Ct){let r=Fn.get(e);r||Fn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=ji(()=>r.delete(n))),Li(Ct,s)}}function Xe(e,t,n,r,s,o){const i=Fn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&W(e)){const a=Number(r);i.forEach((f,u)=>{(u==="length"||!dt(u)&&u>=a)&&l.push(f)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":W(e)?vs(n)&&l.push(i.get("length")):(l.push(i.get(At)),Lt(e)&&l.push(i.get(Br)));break;case"delete":W(e)||(l.push(i.get(At)),Lt(e)&&l.push(i.get(Br)));break;case"set":Lt(e)&&l.push(i.get(At));break}ws();for(const a of l)a&&Ni(a,4);xs()}function Ja(e,t){const n=Fn.get(e);return n&&n.get(t)}const Xa=ms("__proto__,__v_isRef,__isVue"),Fi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(dt)),ao=Ya();function Ya(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=ee(this);for(let o=0,i=this.length;o{e[t]=function(...n){ht(),ws();const r=ee(this)[t].apply(this,n);return xs(),pt(),r}}),e}function Qa(e){dt(e)||(e=String(e));const t=ee(this);return Re(t,"has",e),t.hasOwnProperty(e)}class Di{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?dc:Wi:o?Vi:Bi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=W(t);if(!s){if(i&&Y(ao,n))return Reflect.get(ao,n,r);if(n==="hasOwnProperty")return Qa}const l=Reflect.get(t,n,r);return(dt(n)?Fi.has(n):Xa(n))||(s||Re(t,"get",n),o)?l:xe(l)?i&&vs(n)?l:l.value:oe(l)?s?Ki(l):Pt(l):l}}class Ui extends Di{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const a=ft(o);if(!Bt(r)&&!ft(r)&&(o=ee(o),r=ee(r)),!W(t)&&xe(o)&&!xe(r))return a?!1:(o.value=r,!0)}const i=W(t)&&vs(n)?Number(n)e,ir=e=>Reflect.getPrototypeOf(e);function _n(e,t,n=!1,r=!1){e=e.__v_raw;const s=ee(e),o=ee(t);n||(ut(t,o)&&Re(s,"get",t),Re(s,"get",o));const{has:i}=ir(s),l=r?Es:n?Cs:nn;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function vn(e,t=!1){const n=this.__v_raw,r=ee(n),s=ee(e);return t||(ut(e,s)&&Re(r,"has",e),Re(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function bn(e,t=!1){return e=e.__v_raw,!t&&Re(ee(e),"iterate",At),Reflect.get(e,"size",e)}function co(e,t=!1){!t&&!Bt(e)&&!ft(e)&&(e=ee(e));const n=ee(this);return ir(n).has.call(n,e)||(n.add(e),Xe(n,"add",e,e)),this}function uo(e,t,n=!1){!n&&!Bt(t)&&!ft(t)&&(t=ee(t));const r=ee(this),{has:s,get:o}=ir(r);let i=s.call(r,e);i||(e=ee(e),i=s.call(r,e));const l=o.call(r,e);return r.set(e,t),i?ut(t,l)&&Xe(r,"set",e,t):Xe(r,"add",e,t),this}function fo(e){const t=ee(this),{has:n,get:r}=ir(t);let s=n.call(t,e);s||(e=ee(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&Xe(t,"delete",e,void 0),o}function ho(){const e=ee(this),t=e.size!==0,n=e.clear();return t&&Xe(e,"clear",void 0,void 0),n}function wn(e,t){return function(r,s){const o=this,i=o.__v_raw,l=ee(i),a=t?Es:e?Cs:nn;return!e&&Re(l,"iterate",At),i.forEach((f,u)=>r.call(s,a(f),a(u),o))}}function xn(e,t,n){return function(...r){const s=this.__v_raw,o=ee(s),i=Lt(o),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,f=s[e](...r),u=n?Es:t?Cs:nn;return!t&&Re(o,"iterate",a?Br:At),{next(){const{value:c,done:d}=f.next();return d?{value:c,done:d}:{value:l?[u(c[0]),u(c[1])]:u(c),done:d}},[Symbol.iterator](){return this}}}}function tt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function sc(){const e={get(o){return _n(this,o)},get size(){return bn(this)},has:vn,add:co,set:uo,delete:fo,clear:ho,forEach:wn(!1,!1)},t={get(o){return _n(this,o,!1,!0)},get size(){return bn(this)},has:vn,add(o){return co.call(this,o,!0)},set(o,i){return uo.call(this,o,i,!0)},delete:fo,clear:ho,forEach:wn(!1,!0)},n={get(o){return _n(this,o,!0)},get size(){return bn(this,!0)},has(o){return vn.call(this,o,!0)},add:tt("add"),set:tt("set"),delete:tt("delete"),clear:tt("clear"),forEach:wn(!0,!1)},r={get(o){return _n(this,o,!0,!0)},get size(){return bn(this,!0)},has(o){return vn.call(this,o,!0)},add:tt("add"),set:tt("set"),delete:tt("delete"),clear:tt("clear"),forEach:wn(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=xn(o,!1,!1),n[o]=xn(o,!0,!1),t[o]=xn(o,!1,!0),r[o]=xn(o,!0,!0)}),[e,n,t,r]}const[oc,ic,lc,ac]=sc();function Ts(e,t){const n=t?e?ac:lc:e?ic:oc;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Y(n,s)&&s in r?n:r,s,o)}const cc={get:Ts(!1,!1)},uc={get:Ts(!1,!0)},fc={get:Ts(!0,!1)};const Bi=new WeakMap,Vi=new WeakMap,Wi=new WeakMap,dc=new WeakMap;function hc(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pc(e){return e.__v_skip||!Object.isExtensible(e)?0:hc(La(e))}function Pt(e){return ft(e)?e:Ss(e,!1,tc,cc,Bi)}function $t(e){return Ss(e,!1,rc,uc,Vi)}function Ki(e){return Ss(e,!0,nc,fc,Wi)}function Ss(e,t,n,r,s){if(!oe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=pc(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function jt(e){return ft(e)?jt(e.__v_raw):!!(e&&e.__v_isReactive)}function ft(e){return!!(e&&e.__v_isReadonly)}function Bt(e){return!!(e&&e.__v_isShallow)}function qi(e){return e?!!e.__v_raw:!1}function ee(e){const t=e&&e.__v_raw;return t?ee(t):e}function gc(e){return Object.isExtensible(e)&&Ci(e,"__v_skip",!0),e}const nn=e=>oe(e)?Pt(e):e,Cs=e=>oe(e)?Ki(e):e;class Gi{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new bs(()=>t(this._value),()=>kn(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=ee(this);return(!t._cacheable||t.effect.dirty)&&ut(t._value,t._value=t.effect.run())&&kn(t,4),Zi(t),t.effect._dirtyLevel>=2&&kn(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function mc(e,t,n=!1){let r,s;const o=G(e);return o?(r=e,s=Le):(r=e.get,s=e.set),new Gi(r,s,o||!s,n)}function Zi(e){var t;at&&Ct&&(e=ee(e),Li(Ct,(t=e.dep)!=null?t:e.dep=ji(()=>e.dep=void 0,e instanceof Gi?e:void 0)))}function kn(e,t=4,n,r){e=ee(e);const s=e.dep;s&&Ni(s,t)}function xe(e){return!!(e&&e.__v_isRef===!0)}function le(e){return zi(e,!1)}function po(e){return zi(e,!0)}function zi(e,t){return xe(e)?e:new yc(e,t)}class yc{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:ee(t),this._value=n?t:nn(t)}get value(){return Zi(this),this._value}set value(t){const n=this.__v_isShallow||Bt(t)||ft(t);t=n?t:ee(t),ut(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:nn(t),kn(this,4))}}function Q(e){return xe(e)?e.value:e}const _c={get:(e,t,n)=>Q(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return xe(s)&&!xe(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Ji(e){return jt(e)?e:new Proxy(e,_c)}class vc{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Ja(ee(this._object),this._key)}}class bc{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function wc(e,t,n){return xe(e)?e:G(e)?new bc(e):oe(e)&&arguments.length>1?xc(e,t,n):le(e)}function xc(e,t,n){const r=e[t];return xe(r)?r:new vc(e,t,n)}/** -* @vue/runtime-core v3.4.36 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function ct(e,t,n,r){try{return r?e(...r):e()}catch(s){Kt(s,t,n)}}function Ne(e,t,n,r){if(G(e)){const s=ct(e,t,n,r);return s&&Ei(s)&&s.catch(o=>{Kt(o,t,n)}),s}if(W(e)){const s=[];for(let o=0;o>>1,s=we[r],o=sn(s);oKe&&we.splice(t,1)}function Wr(e){W(e)?Ft.push(...e):(!ot||!ot.includes(e,e.allowRecurse?xt+1:xt))&&Ft.push(e),Yi()}function go(e,t,n=rn?Ke+1:0){for(;nsn(n)-sn(r));if(Ft.length=0,ot){ot.push(...t);return}for(ot=t,xt=0;xte.id==null?1/0:e.id,Cc=(e,t)=>{const n=sn(e)-sn(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function Qi(e){Vr=!1,rn=!0,we.sort(Cc);try{for(Ke=0;Ke{r._d&&Po(-1);const o=Un(t);let i;try{i=e(...s)}finally{Un(o),r._d&&Po(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function We(e,t,n,r){const s=e.dirs,o=t&&t.dirs;for(let i=0;i{e.isMounted=!0}),ur(()=>{e.isUnmounting=!0}),e}const $e=[Function,Array],el={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:$e,onEnter:$e,onAfterEnter:$e,onEnterCancelled:$e,onBeforeLeave:$e,onLeave:$e,onAfterLeave:$e,onLeaveCancelled:$e,onBeforeAppear:$e,onAppear:$e,onAfterAppear:$e,onAppearCancelled:$e},tl=e=>{const t=e.subTree;return t.component?tl(t.component):t},Rc={name:"BaseTransition",props:el,setup(e,{slots:t}){const n=Hs(),r=Ac();return()=>{const s=t.default&&rl(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const d of s)if(d.type!==Ce){o=d;break}}const i=ee(e),{mode:l}=i;if(r.isLeaving)return Cr(o);const a=mo(o);if(!a)return Cr(o);let f=Kr(a,i,r,n,d=>f=d);Bn(a,f);const u=n.subTree,c=u&&mo(u);if(c&&c.type!==Ce&&!qe(a,c)&&tl(n).type!==Ce){const d=Kr(c,i,r,n);if(Bn(c,d),l==="out-in"&&a.type!==Ce)return r.isLeaving=!0,d.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Cr(o);l==="in-out"&&a.type!==Ce&&(d.delayLeave=(p,m,_)=>{const A=nl(r,c);A[String(c.key)]=c,p[it]=()=>{m(),p[it]=void 0,delete f.delayedLeave},f.delayedLeave=_})}return o}}},Pc=Rc;function nl(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function Kr(e,t,n,r,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:f,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:d,onLeave:p,onAfterLeave:m,onLeaveCancelled:_,onBeforeAppear:A,onAppear:P,onAfterAppear:H,onAppearCancelled:y}=t,S=String(e.key),T=nl(n,e),w=(O,I)=>{O&&Ne(O,r,9,I)},U=(O,I)=>{const K=I[1];w(O,I),W(O)?O.every(R=>R.length<=1)&&K():O.length<=1&&K()},q={mode:i,persisted:l,beforeEnter(O){let I=a;if(!n.isMounted)if(o)I=A||a;else return;O[it]&&O[it](!0);const K=T[S];K&&qe(e,K)&&K.el[it]&&K.el[it](),w(I,[O])},enter(O){let I=f,K=u,R=c;if(!n.isMounted)if(o)I=P||f,K=H||u,R=y||c;else return;let B=!1;const te=O[En]=se=>{B||(B=!0,se?w(R,[O]):w(K,[O]),q.delayedLeave&&q.delayedLeave(),O[En]=void 0)};I?U(I,[O,te]):te()},leave(O,I){const K=String(e.key);if(O[En]&&O[En](!0),n.isUnmounting)return I();w(d,[O]);let R=!1;const B=O[it]=te=>{R||(R=!0,I(),te?w(_,[O]):w(m,[O]),O[it]=void 0,T[K]===e&&delete T[K])};T[K]=e,p?U(p,[O,B]):B()},clone(O){const I=Kr(O,t,n,r,s);return s&&s(I),I}};return q}function Cr(e){if(fn(e))return e=Qe(e),e.children=null,e}function mo(e){if(!fn(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&G(n.default))return n.default()}}function Bn(e,t){e.shapeFlag&6&&e.component?Bn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function rl(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function yo(e){G(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let a=null,f,u=0;const c=()=>(u++,a=null,d()),d=()=>{let p;return a||(p=a=t().catch(m=>{if(m=m instanceof Error?m:new Error(String(m)),l)return new Promise((_,A)=>{l(m,()=>_(c()),()=>A(m),u+1)});throw m}).then(m=>p!==a&&a?a:(m&&(m.__esModule||m[Symbol.toStringTag]==="Module")&&(m=m.default),f=m,m)))};return Ue({name:"AsyncComponentWrapper",__asyncLoader:d,get __asyncResolved(){return f},setup(){const p=pe;if(f)return()=>Ar(f,p);const m=H=>{a=null,Kt(H,p,13,!r)};if(i&&p.suspense||pn)return d().then(H=>()=>Ar(H,p)).catch(H=>(m(H),()=>r?Z(r,{error:H}):null));const _=le(!1),A=le(),P=le(!!s);return s&&setTimeout(()=>{P.value=!1},s),o!=null&&setTimeout(()=>{if(!_.value&&!A.value){const H=new Error(`Async component timed out after ${o}ms.`);m(H),A.value=H}},o),d().then(()=>{_.value=!0,p.parent&&fn(p.parent.vnode)&&(p.parent.effect.dirty=!0,lr(p.parent.update))}).catch(H=>{m(H),A.value=H}),()=>{if(_.value&&f)return Ar(f,p);if(A.value&&r)return Z(r,{error:A.value});if(n&&!P.value)return Z(n)}}})}function Ar(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=Z(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const fn=e=>e.type.__isKeepAlive;function sl(e,t){il(e,"a",t)}function ol(e,t){il(e,"da",t)}function il(e,t,n=pe){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(cr(t,r,n),n){let s=n.parent;for(;s&&s.parent;)fn(s.parent.vnode)&&kc(r,t,n,s),s=s.parent}}function kc(e,t,n,r){const s=cr(t,e,r,!0);Rs(()=>{_s(r[t],s)},n)}function cr(e,t,n=pe,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{ht();const l=hn(n),a=Ne(t,n,e,i);return l(),pt(),a});return r?s.unshift(o):s.push(o),o}}const et=e=>(t,n=pe)=>{(!pn||e==="sp")&&cr(e,(...r)=>t(...r),n)},Ic=et("bm"),dn=et("m"),Mc=et("bu"),Oc=et("u"),ur=et("bum"),Rs=et("um"),$c=et("sp"),Hc=et("rtg"),Lc=et("rtc");function ll(e,t=pe){cr("ec",e,t)}const al="components";function _o(e,t){return fl(al,e,!0,t)||e}const cl=Symbol.for("v-ndc");function ul(e){return ce(e)?fl(al,e,!1)||e:e||cl}function fl(e,t,n=!0,r=!1){const s=Ie||pe;if(s){const o=s.type;{const l=Iu(o,!1);if(l&&(l===t||l===De(t)||l===rr(De(t))))return o}const i=vo(s[e]||o[e],t)||vo(s.appContext[e],t);return!i&&r?o:i}}function vo(e,t){return e&&(e[t]||e[De(t)]||e[rr(De(t))])}function In(e,t,n,r){let s;const o=n;if(W(e)||ce(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,a=i.length;le?Ll(e)?Ls(e):qr(e.parent):null,Yt=_e(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>qr(e.parent),$root:e=>qr(e.root),$emit:e=>e.emit,$options:e=>Ps(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,lr(e.update)}),$nextTick:e=>e.n||(e.n=Ge.bind(e.proxy)),$watch:e=>lu.bind(e)}),Rr=(e,t)=>e!==ae&&!e.__isScriptSetup&&Y(e,t),Nc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:a}=e;let f;if(t[0]!=="$"){const p=i[t];if(p!==void 0)switch(p){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(Rr(r,t))return i[t]=1,r[t];if(s!==ae&&Y(s,t))return i[t]=2,s[t];if((f=e.propsOptions[0])&&Y(f,t))return i[t]=3,o[t];if(n!==ae&&Y(n,t))return i[t]=4,n[t];Gr&&(i[t]=0)}}const u=Yt[t];let c,d;if(u)return t==="$attrs"&&Re(e.attrs,"get",""),u(e);if((c=l.__cssModules)&&(c=c[t]))return c;if(n!==ae&&Y(n,t))return i[t]=4,n[t];if(d=a.config.globalProperties,Y(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return Rr(s,t)?(s[t]=n,!0):r!==ae&&Y(r,t)?(r[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ae&&Y(e,i)||Rr(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(Yt,i)||Y(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function bo(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Gr=!0;function jc(e){const t=Ps(e),n=e.proxy,r=e.ctx;Gr=!1,t.beforeCreate&&wo(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:a,inject:f,created:u,beforeMount:c,mounted:d,beforeUpdate:p,updated:m,activated:_,deactivated:A,beforeDestroy:P,beforeUnmount:H,destroyed:y,unmounted:S,render:T,renderTracked:w,renderTriggered:U,errorCaptured:q,serverPrefetch:O,expose:I,inheritAttrs:K,components:R,directives:B,filters:te}=t;if(f&&Fc(f,r,null),i)for(const J in i){const V=i[J];G(V)&&(r[J]=V.bind(n))}if(s){const J=s.call(n,n);oe(J)&&(e.data=Pt(J))}if(Gr=!0,o)for(const J in o){const V=o[J],ve=G(V)?V.bind(n,n):G(V.get)?V.get.bind(n,n):Le,mn=!G(V)&&G(V.set)?V.set.bind(n):Le,yt=he({get:ve,set:mn});Object.defineProperty(r,J,{enumerable:!0,configurable:!0,get:()=>yt.value,set:Be=>yt.value=Be})}if(l)for(const J in l)dl(l[J],r,n,J);if(a){const J=G(a)?a.call(n):a;Reflect.ownKeys(J).forEach(V=>{fr(V,J[V])})}u&&wo(u,e,"c");function j(J,V){W(V)?V.forEach(ve=>J(ve.bind(n))):V&&J(V.bind(n))}if(j(Ic,c),j(dn,d),j(Mc,p),j(Oc,m),j(sl,_),j(ol,A),j(ll,q),j(Lc,w),j(Hc,U),j(ur,H),j(Rs,S),j($c,O),W(I))if(I.length){const J=e.exposed||(e.exposed={});I.forEach(V=>{Object.defineProperty(J,V,{get:()=>n[V],set:ve=>n[V]=ve})})}else e.exposed||(e.exposed={});T&&e.render===Le&&(e.render=T),K!=null&&(e.inheritAttrs=K),R&&(e.components=R),B&&(e.directives=B)}function Fc(e,t,n=Le){W(e)&&(e=Zr(e));for(const r in e){const s=e[r];let o;oe(s)?"default"in s?o=Ye(s.from||r,s.default,!0):o=Ye(s.from||r):o=Ye(s),xe(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function wo(e,t,n){Ne(W(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function dl(e,t,n,r){const s=r.includes(".")?Rl(n,r):()=>n[r];if(ce(e)){const o=t[e];G(o)&&Mn(s,o)}else if(G(e))Mn(s,e.bind(n));else if(oe(e))if(W(e))e.forEach(o=>dl(o,t,n,r));else{const o=G(e.handler)?e.handler.bind(n):t[e.handler];G(o)&&Mn(s,o,e)}}function Ps(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let a;return l?a=l:!s.length&&!n&&!r?a=t:(a={},s.length&&s.forEach(f=>Vn(a,f,i,!0)),Vn(a,t,i)),oe(t)&&o.set(t,a),a}function Vn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Vn(e,o,n,!0),s&&s.forEach(i=>Vn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Dc[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Dc={data:xo,props:Eo,emits:Eo,methods:Jt,computed:Jt,beforeCreate:Te,created:Te,beforeMount:Te,mounted:Te,beforeUpdate:Te,updated:Te,beforeDestroy:Te,beforeUnmount:Te,destroyed:Te,unmounted:Te,activated:Te,deactivated:Te,errorCaptured:Te,serverPrefetch:Te,components:Jt,directives:Jt,watch:Bc,provide:xo,inject:Uc};function xo(e,t){return t?e?function(){return _e(G(e)?e.call(this,this):e,G(t)?t.call(this,this):t)}:t:e}function Uc(e,t){return Jt(Zr(e),Zr(t))}function Zr(e){if(W(e)){const t={};for(let n=0;n1)return n&&G(t)?t.call(r&&r.proxy):t}}function pl(){return!!(pe||Ie||Dt)}const gl={},ml=()=>Object.create(gl),yl=e=>Object.getPrototypeOf(e)===gl;function Kc(e,t,n,r=!1){const s={},o=ml();e.propsDefaults=Object.create(null),_l(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:$t(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function qc(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=ee(s),[a]=e.propsOptions;let f=!1;if((r||i>0)&&!(i&16)){if(i&8){const u=e.vnode.dynamicProps;for(let c=0;c{a=!0;const[d,p]=vl(c,t,!0);_e(i,d),p&&l.push(...p)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!o&&!a)return oe(e)&&r.set(e,Ht),Ht;if(W(o))for(let u=0;ue[0]==="_"||e==="$stable",ks=e=>W(e)?e.map(ke):[ke(e)],Zc=(e,t,n)=>{if(t._n)return t;const r=de((...s)=>ks(t(...s)),n);return r._c=!1,r},wl=(e,t,n)=>{const r=e._ctx;for(const s in e){if(bl(s))continue;const o=e[s];if(G(o))t[s]=Zc(s,o,r);else if(o!=null){const i=ks(o);t[s]=()=>i}}},xl=(e,t)=>{const n=ks(t);e.slots.default=()=>n},El=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},zc=(e,t,n)=>{const r=e.slots=ml();if(e.vnode.shapeFlag&32){const s=t._;s?(El(r,t,n),n&&Ci(r,"_",s,!0)):wl(t,r)}else t&&xl(e,t)},Jc=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ae;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:El(s,t,n):(o=!t.$stable,wl(t,s)),i=t}else t&&(xl(e,t),i={default:1});if(o)for(const l in s)!bl(l)&&i[l]==null&&delete s[l]};function Wn(e,t,n,r,s=!1){if(W(e)){e.forEach((d,p)=>Wn(d,t&&(W(t)?t[p]:t),n,r,s));return}if(Xt(r)&&!s)return;const o=r.shapeFlag&4?Ls(r.component):r.el,i=s?null:o,{i:l,r:a}=e,f=t&&t.r,u=l.refs===ae?l.refs={}:l.refs,c=l.setupState;if(f!=null&&f!==a&&(ce(f)?(u[f]=null,Y(c,f)&&(c[f]=null)):xe(f)&&(f.value=null)),G(a))ct(a,l,12,[i,u]);else{const d=ce(a),p=xe(a);if(d||p){const m=()=>{if(e.f){const _=d?Y(c,a)?c[a]:u[a]:a.value;s?W(_)&&_s(_,o):W(_)?_.includes(o)||_.push(o):d?(u[a]=[o],Y(c,a)&&(c[a]=u[a])):(a.value=[o],e.k&&(u[e.k]=a.value))}else d?(u[a]=i,Y(c,a)&&(c[a]=i)):p&&(a.value=i,e.k&&(u[e.k]=i))};i?(m.id=-1,Se(m,n)):m()}}}const Xc=Symbol("_vte"),Yc=e=>e.__isTeleport;let So=!1;const Ot=()=>{So||(console.error("Hydration completed but contains mismatches."),So=!0)},Qc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",eu=e=>e.namespaceURI.includes("MathML"),Tn=e=>{if(Qc(e))return"svg";if(eu(e))return"mathml"},Sn=e=>e.nodeType===8;function tu(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:a,createComment:f}}=e,u=(y,S)=>{if(!S.hasChildNodes()){n(null,y,S),Dn(),S._vnode=y;return}c(S.firstChild,y,null,null,null),Dn(),S._vnode=y},c=(y,S,T,w,U,q=!1)=>{q=q||!!S.dynamicChildren;const O=Sn(y)&&y.data==="[",I=()=>_(y,S,T,w,U,O),{type:K,ref:R,shapeFlag:B,patchFlag:te}=S;let se=y.nodeType;S.el=y,te===-2&&(q=!1,S.dynamicChildren=null);let j=null;switch(K){case Rt:se!==3?S.children===""?(a(S.el=s(""),i(y),y),j=y):j=I():(y.data!==S.children&&(Ot(),y.data=S.children),j=o(y));break;case Ce:H(y)?(j=o(y),P(S.el=y.content.firstChild,y,T)):se!==8||O?j=I():j=o(y);break;case Qt:if(O&&(y=o(y),se=y.nodeType),se===1||se===3){j=y;const J=!S.children.length;for(let V=0;V{q=q||!!S.dynamicChildren;const{type:O,props:I,patchFlag:K,shapeFlag:R,dirs:B,transition:te}=S,se=O==="input"||O==="option";if(se||K!==-1){B&&We(S,null,T,"created");let j=!1;if(H(y)){j=Sl(w,te)&&T&&T.vnode.props&&T.vnode.props.appear;const V=y.content.firstChild;j&&te.beforeEnter(V),P(V,y,T),S.el=y=V}if(R&16&&!(I&&(I.innerHTML||I.textContent))){let V=p(y.firstChild,S,y,T,w,U,q);for(;V;){Ot();const ve=V;V=V.nextSibling,l(ve)}}else R&8&&y.textContent!==S.children&&(Ot(),y.textContent=S.children);if(I){if(se||!q||K&48){const V=y.tagName.includes("-");for(const ve in I)(se&&(ve.endsWith("value")||ve==="indeterminate")||un(ve)&&!Nt(ve)||ve[0]==="."||V)&&r(y,ve,null,I[ve],void 0,T)}else if(I.onClick)r(y,"onClick",null,I.onClick,void 0,T);else if(K&4&&jt(I.style))for(const V in I.style)I.style[V]}let J;(J=I&&I.onVnodeBeforeMount)&&He(J,T,S),B&&We(S,null,T,"beforeMount"),((J=I&&I.onVnodeMounted)||B||j)&&Il(()=>{J&&He(J,T,S),j&&te.enter(y),B&&We(S,null,T,"mounted")},w)}return y.nextSibling},p=(y,S,T,w,U,q,O)=>{O=O||!!S.dynamicChildren;const I=S.children,K=I.length;for(let R=0;R{const{slotScopeIds:O}=S;O&&(U=U?U.concat(O):O);const I=i(y),K=p(o(y),S,I,T,w,U,q);return K&&Sn(K)&&K.data==="]"?o(S.anchor=K):(Ot(),a(S.anchor=f("]"),I,K),K)},_=(y,S,T,w,U,q)=>{if(Ot(),S.el=null,q){const K=A(y);for(;;){const R=o(y);if(R&&R!==K)l(R);else break}}const O=o(y),I=i(y);return l(y),n(null,S,I,O,T,w,Tn(I),U),O},A=(y,S="[",T="]")=>{let w=0;for(;y;)if(y=o(y),y&&Sn(y)&&(y.data===S&&w++,y.data===T)){if(w===0)return o(y);w--}return y},P=(y,S,T)=>{const w=S.parentNode;w&&w.replaceChild(y,S);let U=T;for(;U;)U.vnode.el===S&&(U.vnode.el=U.subTree.el=y),U=U.parent},H=y=>y.nodeType===1&&y.tagName.toLowerCase()==="template";return[u,c]}const Se=Il;function nu(e){return Tl(e)}function ru(e){return Tl(e,tu)}function Tl(e,t){const n=Ri();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:a,setText:f,setElementText:u,parentNode:c,nextSibling:d,setScopeId:p=Le,insertStaticContent:m}=e,_=(h,g,v,E=null,b=null,C=null,$=void 0,k=null,M=!!g.dynamicChildren)=>{if(h===g)return;h&&!qe(h,g)&&(E=yn(h),Be(h,b,C,!0),h=null),g.patchFlag===-2&&(M=!1,g.dynamicChildren=null);const{type:x,ref:L,shapeFlag:D}=g;switch(x){case Rt:A(h,g,v,E);break;case Ce:P(h,g,v,E);break;case Qt:h==null&&H(g,v,E,$);break;case ye:R(h,g,v,E,b,C,$,k,M);break;default:D&1?T(h,g,v,E,b,C,$,k,M):D&6?B(h,g,v,E,b,C,$,k,M):(D&64||D&128)&&x.process(h,g,v,E,b,C,$,k,M,It)}L!=null&&b&&Wn(L,h&&h.ref,C,g||h,!g)},A=(h,g,v,E)=>{if(h==null)r(g.el=l(g.children),v,E);else{const b=g.el=h.el;g.children!==h.children&&f(b,g.children)}},P=(h,g,v,E)=>{h==null?r(g.el=a(g.children||""),v,E):g.el=h.el},H=(h,g,v,E)=>{[h.el,h.anchor]=m(h.children,g,v,E,h.el,h.anchor)},y=({el:h,anchor:g},v,E)=>{let b;for(;h&&h!==g;)b=d(h),r(h,v,E),h=b;r(g,v,E)},S=({el:h,anchor:g})=>{let v;for(;h&&h!==g;)v=d(h),s(h),h=v;s(g)},T=(h,g,v,E,b,C,$,k,M)=>{g.type==="svg"?$="svg":g.type==="math"&&($="mathml"),h==null?w(g,v,E,b,C,$,k,M):O(h,g,b,C,$,k,M)},w=(h,g,v,E,b,C,$,k)=>{let M,x;const{props:L,shapeFlag:D,transition:F,dirs:z}=h;if(M=h.el=i(h.type,C,L&&L.is,L),D&8?u(M,h.children):D&16&&q(h.children,M,null,E,b,Pr(h,C),$,k),z&&We(h,null,E,"created"),U(M,h,h.scopeId,$,E),L){for(const ie in L)ie!=="value"&&!Nt(ie)&&o(M,ie,null,L[ie],C,E);"value"in L&&o(M,"value",null,L.value,C),(x=L.onVnodeBeforeMount)&&He(x,E,h)}z&&We(h,null,E,"beforeMount");const X=Sl(b,F);X&&F.beforeEnter(M),r(M,g,v),((x=L&&L.onVnodeMounted)||X||z)&&Se(()=>{x&&He(x,E,h),X&&F.enter(M),z&&We(h,null,E,"mounted")},b)},U=(h,g,v,E,b)=>{if(v&&p(h,v),E)for(let C=0;C{for(let x=M;x{const k=g.el=h.el;let{patchFlag:M,dynamicChildren:x,dirs:L}=g;M|=h.patchFlag&16;const D=h.props||ae,F=g.props||ae;let z;if(v&&_t(v,!1),(z=F.onVnodeBeforeUpdate)&&He(z,v,g,h),L&&We(g,h,v,"beforeUpdate"),v&&_t(v,!0),(D.innerHTML&&F.innerHTML==null||D.textContent&&F.textContent==null)&&u(k,""),x?I(h.dynamicChildren,x,k,v,E,Pr(g,b),C):$||V(h,g,k,null,v,E,Pr(g,b),C,!1),M>0){if(M&16)K(k,D,F,v,b);else if(M&2&&D.class!==F.class&&o(k,"class",null,F.class,b),M&4&&o(k,"style",D.style,F.style,b),M&8){const X=g.dynamicProps;for(let ie=0;ie{z&&He(z,v,g,h),L&&We(g,h,v,"updated")},E)},I=(h,g,v,E,b,C,$)=>{for(let k=0;k{if(g!==v){if(g!==ae)for(const C in g)!Nt(C)&&!(C in v)&&o(h,C,g[C],null,b,E);for(const C in v){if(Nt(C))continue;const $=v[C],k=g[C];$!==k&&C!=="value"&&o(h,C,k,$,b,E)}"value"in v&&o(h,"value",g.value,v.value,b)}},R=(h,g,v,E,b,C,$,k,M)=>{const x=g.el=h?h.el:l(""),L=g.anchor=h?h.anchor:l("");let{patchFlag:D,dynamicChildren:F,slotScopeIds:z}=g;z&&(k=k?k.concat(z):z),h==null?(r(x,v,E),r(L,v,E),q(g.children||[],v,L,b,C,$,k,M)):D>0&&D&64&&F&&h.dynamicChildren?(I(h.dynamicChildren,F,v,b,C,$,k),(g.key!=null||b&&g===b.subTree)&&Cl(h,g,!0)):V(h,g,v,L,b,C,$,k,M)},B=(h,g,v,E,b,C,$,k,M)=>{g.slotScopeIds=k,h==null?g.shapeFlag&512?b.ctx.activate(g,v,E,$,M):te(g,v,E,b,C,$,M):se(h,g,M)},te=(h,g,v,E,b,C,$)=>{const k=h.component=Cu(h,E,b);if(fn(h)&&(k.ctx.renderer=It),Au(k,!1,$),k.asyncDep){if(b&&b.registerDep(k,j,$),!h.el){const M=k.subTree=Z(Ce);P(null,M,g,v)}}else j(k,h,g,v,b,C,$)},se=(h,g,v)=>{const E=g.component=h.component;if(hu(h,g,v))if(E.asyncDep&&!E.asyncResolved){J(E,g,v);return}else E.next=g,Sc(E.update),E.effect.dirty=!0,E.update();else g.el=h.el,E.vnode=g},j=(h,g,v,E,b,C,$)=>{const k=()=>{if(h.isMounted){let{next:L,bu:D,u:F,parent:z,vnode:X}=h;{const Mt=Al(h);if(Mt){L&&(L.el=X.el,J(h,L,$)),Mt.asyncDep.then(()=>{h.isUnmounted||k()});return}}let ie=L,ne;_t(h,!1),L?(L.el=X.el,J(h,L,$)):L=X,D&&Tr(D),(ne=L.props&&L.props.onVnodeBeforeUpdate)&&He(ne,z,L,X),_t(h,!0);const me=kr(h),je=h.subTree;h.subTree=me,_(je,me,c(je.el),yn(je),h,b,C),L.el=me.el,ie===null&&Ms(h,me.el),F&&Se(F,b),(ne=L.props&&L.props.onVnodeUpdated)&&Se(()=>He(ne,z,L,X),b)}else{let L;const{el:D,props:F}=g,{bm:z,m:X,parent:ie}=h,ne=Xt(g);if(_t(h,!1),z&&Tr(z),!ne&&(L=F&&F.onVnodeBeforeMount)&&He(L,ie,g),_t(h,!0),D&&xr){const me=()=>{h.subTree=kr(h),xr(D,h.subTree,h,b,null)};ne?g.type.__asyncLoader().then(()=>!h.isUnmounted&&me()):me()}else{const me=h.subTree=kr(h);_(null,me,v,E,h,b,C),g.el=me.el}if(X&&Se(X,b),!ne&&(L=F&&F.onVnodeMounted)){const me=g;Se(()=>He(L,ie,me),b)}(g.shapeFlag&256||ie&&Xt(ie.vnode)&&ie.vnode.shapeFlag&256)&&h.a&&Se(h.a,b),h.isMounted=!0,g=v=E=null}},M=h.effect=new bs(k,Le,()=>lr(x),h.scope),x=h.update=()=>{M.dirty&&M.run()};x.i=h,x.id=h.uid,_t(h,!0),x()},J=(h,g,v)=>{g.component=h;const E=h.vnode.props;h.vnode=g,h.next=null,qc(h,g.props,E,v),Jc(h,g.children,v),ht(),go(h),pt()},V=(h,g,v,E,b,C,$,k,M=!1)=>{const x=h&&h.children,L=h?h.shapeFlag:0,D=g.children,{patchFlag:F,shapeFlag:z}=g;if(F>0){if(F&128){mn(x,D,v,E,b,C,$,k,M);return}else if(F&256){ve(x,D,v,E,b,C,$,k,M);return}}z&8?(L&16&&Gt(x,b,C),D!==x&&u(v,D)):L&16?z&16?mn(x,D,v,E,b,C,$,k,M):Gt(x,b,C,!0):(L&8&&u(v,""),z&16&&q(D,v,E,b,C,$,k,M))},ve=(h,g,v,E,b,C,$,k,M)=>{h=h||Ht,g=g||Ht;const x=h.length,L=g.length,D=Math.min(x,L);let F;for(F=0;FL?Gt(h,b,C,!0,!1,D):q(g,v,E,b,C,$,k,M,D)},mn=(h,g,v,E,b,C,$,k,M)=>{let x=0;const L=g.length;let D=h.length-1,F=L-1;for(;x<=D&&x<=F;){const z=h[x],X=g[x]=M?lt(g[x]):ke(g[x]);if(qe(z,X))_(z,X,v,null,b,C,$,k,M);else break;x++}for(;x<=D&&x<=F;){const z=h[D],X=g[F]=M?lt(g[F]):ke(g[F]);if(qe(z,X))_(z,X,v,null,b,C,$,k,M);else break;D--,F--}if(x>D){if(x<=F){const z=F+1,X=zF)for(;x<=D;)Be(h[x],b,C,!0),x++;else{const z=x,X=x,ie=new Map;for(x=X;x<=F;x++){const Pe=g[x]=M?lt(g[x]):ke(g[x]);Pe.key!=null&&ie.set(Pe.key,x)}let ne,me=0;const je=F-X+1;let Mt=!1,no=0;const Zt=new Array(je);for(x=0;x=je){Be(Pe,b,C,!0);continue}let Ve;if(Pe.key!=null)Ve=ie.get(Pe.key);else for(ne=X;ne<=F;ne++)if(Zt[ne-X]===0&&qe(Pe,g[ne])){Ve=ne;break}Ve===void 0?Be(Pe,b,C,!0):(Zt[Ve-X]=x+1,Ve>=no?no=Ve:Mt=!0,_(Pe,g[Ve],v,null,b,C,$,k,M),me++)}const ro=Mt?su(Zt):Ht;for(ne=ro.length-1,x=je-1;x>=0;x--){const Pe=X+x,Ve=g[Pe],so=Pe+1{const{el:C,type:$,transition:k,children:M,shapeFlag:x}=h;if(x&6){yt(h.component.subTree,g,v,E);return}if(x&128){h.suspense.move(g,v,E);return}if(x&64){$.move(h,g,v,It);return}if($===ye){r(C,g,v);for(let D=0;Dk.enter(C),b);else{const{leave:D,delayLeave:F,afterLeave:z}=k,X=()=>r(C,g,v),ie=()=>{D(C,()=>{X(),z&&z()})};F?F(C,X,ie):ie()}else r(C,g,v)},Be=(h,g,v,E=!1,b=!1)=>{const{type:C,props:$,ref:k,children:M,dynamicChildren:x,shapeFlag:L,patchFlag:D,dirs:F,cacheIndex:z}=h;if(D===-2&&(b=!1),k!=null&&Wn(k,null,v,h,!0),z!=null&&(g.renderCache[z]=void 0),L&256){g.ctx.deactivate(h);return}const X=L&1&&F,ie=!Xt(h);let ne;if(ie&&(ne=$&&$.onVnodeBeforeUnmount)&&He(ne,g,h),L&6)Oa(h.component,v,E);else{if(L&128){h.suspense.unmount(v,E);return}X&&We(h,null,g,"beforeUnmount"),L&64?h.type.remove(h,g,v,It,E):x&&!x.hasOnce&&(C!==ye||D>0&&D&64)?Gt(x,g,v,!1,!0):(C===ye&&D&384||!b&&L&16)&&Gt(M,g,v),E&&eo(h)}(ie&&(ne=$&&$.onVnodeUnmounted)||X)&&Se(()=>{ne&&He(ne,g,h),X&&We(h,null,g,"unmounted")},v)},eo=h=>{const{type:g,el:v,anchor:E,transition:b}=h;if(g===ye){Ma(v,E);return}if(g===Qt){S(h);return}const C=()=>{s(v),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(h.shapeFlag&1&&b&&!b.persisted){const{leave:$,delayLeave:k}=b,M=()=>$(v,C);k?k(h.el,C,M):M()}else C()},Ma=(h,g)=>{let v;for(;h!==g;)v=d(h),s(h),h=v;s(g)},Oa=(h,g,v)=>{const{bum:E,scope:b,update:C,subTree:$,um:k,m:M,a:x}=h;Co(M),Co(x),E&&Tr(E),b.stop(),C&&(C.active=!1,Be($,h,g,v)),k&&Se(k,g),Se(()=>{h.isUnmounted=!0},g),g&&g.pendingBranch&&!g.isUnmounted&&h.asyncDep&&!h.asyncResolved&&h.suspenseId===g.pendingId&&(g.deps--,g.deps===0&&g.resolve())},Gt=(h,g,v,E=!1,b=!1,C=0)=>{for(let $=C;${if(h.shapeFlag&6)return yn(h.component.subTree);if(h.shapeFlag&128)return h.suspense.next();const g=d(h.anchor||h.el),v=g&&g[Xc];return v?d(v):g};let br=!1;const to=(h,g,v)=>{h==null?g._vnode&&Be(g._vnode,null,null,!0):_(g._vnode||null,h,g,null,null,null,v),br||(br=!0,go(),Dn(),br=!1),g._vnode=h},It={p:_,um:Be,m:yt,r:eo,mt:te,mc:q,pc:V,pbc:I,n:yn,o:e};let wr,xr;return t&&([wr,xr]=t(It)),{render:to,hydrate:wr,createApp:Wc(to,wr)}}function Pr({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function _t({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Sl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Cl(e,t,n=!1){const r=e.children,s=t.children;if(W(r)&&W(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function Al(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Al(t)}function Co(e){if(e)for(let t=0;tYe(ou);function qt(e,t){return Is(e,null,t)}const Cn={};function Mn(e,t,n){return Is(e,t,n)}function Is(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ae){if(t&&o){const w=t;t=(...U)=>{w(...U),T()}}const a=pe,f=w=>r===!0?w:Et(w,r===!1?1:void 0);let u,c=!1,d=!1;if(xe(e)?(u=()=>e.value,c=Bt(e)):jt(e)?(u=()=>f(e),c=!0):W(e)?(d=!0,c=e.some(w=>jt(w)||Bt(w)),u=()=>e.map(w=>{if(xe(w))return w.value;if(jt(w))return f(w);if(G(w))return ct(w,a,2)})):G(e)?t?u=()=>ct(e,a,2):u=()=>(p&&p(),Ne(e,a,3,[m])):u=Le,t&&r){const w=u;u=()=>Et(w())}let p,m=w=>{p=y.onStop=()=>{ct(w,a,4),p=y.onStop=void 0}},_;if(pn)if(m=Le,t?n&&Ne(t,a,3,[u(),d?[]:void 0,m]):u(),s==="sync"){const w=iu();_=w.__watcherHandles||(w.__watcherHandles=[])}else return Le;let A=d?new Array(e.length).fill(Cn):Cn;const P=()=>{if(!(!y.active||!y.dirty))if(t){const w=y.run();(r||c||(d?w.some((U,q)=>ut(U,A[q])):ut(w,A)))&&(p&&p(),Ne(t,a,3,[w,A===Cn?void 0:d&&A[0]===Cn?[]:A,m]),A=w)}else y.run()};P.allowRecurse=!!t;let H;s==="sync"?H=P:s==="post"?H=()=>Se(P,a&&a.suspense):(P.pre=!0,a&&(P.id=a.uid),H=()=>lr(P));const y=new bs(u,Le,H),S=Oi(),T=()=>{y.stop(),S&&_s(S.effects,y)};return t?n?P():A=y.run():s==="post"?Se(y.run.bind(y),a&&a.suspense):y.run(),_&&_.push(T),T}function lu(e,t,n){const r=this.proxy,s=ce(e)?e.includes(".")?Rl(r,e):()=>r[e]:e.bind(r,r);let o;G(t)?o=t:(o=t.handler,n=t);const i=hn(this),l=Is(s,o.bind(r),n);return i(),l}function Rl(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s{Et(r,t,n)});else if(Si(e)){for(const r in e)Et(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&Et(e[r],t,n)}return e}const au=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${De(t)}Modifiers`]||e[`${kt(t)}Modifiers`];function cu(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||ae;let s=n;const o=t.startsWith("update:"),i=o&&au(r,t.slice(7));i&&(i.trim&&(s=n.map(u=>ce(u)?u.trim():u)),i.number&&(s=n.map(Fa)));let l,a=r[l=Er(t)]||r[l=Er(De(t))];!a&&o&&(a=r[l=Er(kt(t))]),a&&Ne(a,e,6,s);const f=r[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ne(f,e,6,s)}}function Pl(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!G(e)){const a=f=>{const u=Pl(f,t,!0);u&&(l=!0,_e(i,u))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?(oe(e)&&r.set(e,null),null):(W(o)?o.forEach(a=>i[a]=null):_e(i,o),oe(e)&&r.set(e,i),i)}function dr(e,t){return!e||!un(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,kt(t))||Y(e,t))}function kr(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:a,render:f,renderCache:u,props:c,data:d,setupState:p,ctx:m,inheritAttrs:_}=e,A=Un(e);let P,H;try{if(n.shapeFlag&4){const S=s||r,T=S;P=ke(f.call(T,S,u,c,p,d,m)),H=l}else{const S=t;P=ke(S.length>1?S(c,{attrs:l,slots:i,emit:a}):S(c,null)),H=t.props?l:fu(l)}}catch(S){en.length=0,Kt(S,e,1),P=Z(Ce)}let y=P;if(H&&_!==!1){const S=Object.keys(H),{shapeFlag:T}=y;S.length&&T&7&&(o&&S.some(ys)&&(H=du(H,o)),y=Qe(y,H,!1,!0))}return n.dirs&&(y=Qe(y,null,!1,!0),y.dirs=y.dirs?y.dirs.concat(n.dirs):n.dirs),n.transition&&(y.transition=n.transition),P=y,Un(A),P}function uu(e,t=!0){let n;for(let r=0;r{let t;for(const n in e)(n==="class"||n==="style"||un(n))&&((t||(t={}))[n]=e[n]);return t},du=(e,t)=>{const n={};for(const r in e)(!ys(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function hu(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:a}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?Ao(r,i,f):!!i;if(a&8){const u=t.dynamicProps;for(let c=0;ce.__isSuspense;let Jr=0;const gu={name:"Suspense",__isSuspense:!0,process(e,t,n,r,s,o,i,l,a,f){if(e==null)yu(t,n,r,s,o,i,l,a,f);else{if(o&&o.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}_u(e,t,n,r,s,i,l,a,f)}},hydrate:vu,normalize:bu},mu=gu;function on(e,t){const n=e.props&&e.props[t];G(n)&&n()}function yu(e,t,n,r,s,o,i,l,a){const{p:f,o:{createElement:u}}=a,c=u("div"),d=e.suspense=kl(e,s,r,t,c,n,o,i,l,a);f(null,d.pendingBranch=e.ssContent,c,null,r,d,o,i),d.deps>0?(on(e,"onPending"),on(e,"onFallback"),f(null,e.ssFallback,t,n,r,null,o,i),Ut(d,e.ssFallback)):d.resolve(!1,!0)}function _u(e,t,n,r,s,o,i,l,{p:a,um:f,o:{createElement:u}}){const c=t.suspense=e.suspense;c.vnode=t,t.el=e.el;const d=t.ssContent,p=t.ssFallback,{activeBranch:m,pendingBranch:_,isInFallback:A,isHydrating:P}=c;if(_)c.pendingBranch=d,qe(d,_)?(a(_,d,c.hiddenContainer,null,s,c,o,i,l),c.deps<=0?c.resolve():A&&(P||(a(m,p,n,r,s,null,o,i,l),Ut(c,p)))):(c.pendingId=Jr++,P?(c.isHydrating=!1,c.activeBranch=_):f(_,s,c),c.deps=0,c.effects.length=0,c.hiddenContainer=u("div"),A?(a(null,d,c.hiddenContainer,null,s,c,o,i,l),c.deps<=0?c.resolve():(a(m,p,n,r,s,null,o,i,l),Ut(c,p))):m&&qe(d,m)?(a(m,d,n,r,s,c,o,i,l),c.resolve(!0)):(a(null,d,c.hiddenContainer,null,s,c,o,i,l),c.deps<=0&&c.resolve()));else if(m&&qe(d,m))a(m,d,n,r,s,c,o,i,l),Ut(c,d);else if(on(t,"onPending"),c.pendingBranch=d,d.shapeFlag&512?c.pendingId=d.component.suspenseId:c.pendingId=Jr++,a(null,d,c.hiddenContainer,null,s,c,o,i,l),c.deps<=0)c.resolve();else{const{timeout:H,pendingId:y}=c;H>0?setTimeout(()=>{c.pendingId===y&&c.fallback(p)},H):H===0&&c.fallback(p)}}function kl(e,t,n,r,s,o,i,l,a,f,u=!1){const{p:c,m:d,um:p,n:m,o:{parentNode:_,remove:A}}=f;let P;const H=wu(e);H&&t&&t.pendingBranch&&(P=t.pendingId,t.deps++);const y=e.props?Ai(e.props.timeout):void 0,S=o,T={vnode:e,parent:t,parentComponent:n,namespace:i,container:r,hiddenContainer:s,deps:0,pendingId:Jr++,timeout:typeof y=="number"?y:-1,activeBranch:null,pendingBranch:null,isInFallback:!u,isHydrating:u,isUnmounted:!1,effects:[],resolve(w=!1,U=!1){const{vnode:q,activeBranch:O,pendingBranch:I,pendingId:K,effects:R,parentComponent:B,container:te}=T;let se=!1;T.isHydrating?T.isHydrating=!1:w||(se=O&&I.transition&&I.transition.mode==="out-in",se&&(O.transition.afterLeave=()=>{K===T.pendingId&&(d(I,te,o===S?m(O):o,0),Wr(R))}),O&&(_(O.el)!==T.hiddenContainer&&(o=m(O)),p(O,B,T,!0)),se||d(I,te,o,0)),Ut(T,I),T.pendingBranch=null,T.isInFallback=!1;let j=T.parent,J=!1;for(;j;){if(j.pendingBranch){j.effects.push(...R),J=!0;break}j=j.parent}!J&&!se&&Wr(R),T.effects=[],H&&t&&t.pendingBranch&&P===t.pendingId&&(t.deps--,t.deps===0&&!U&&t.resolve()),on(q,"onResolve")},fallback(w){if(!T.pendingBranch)return;const{vnode:U,activeBranch:q,parentComponent:O,container:I,namespace:K}=T;on(U,"onFallback");const R=m(q),B=()=>{T.isInFallback&&(c(null,w,I,R,O,null,K,l,a),Ut(T,w))},te=w.transition&&w.transition.mode==="out-in";te&&(q.transition.afterLeave=B),T.isInFallback=!0,p(q,O,null,!0),te||B()},move(w,U,q){T.activeBranch&&d(T.activeBranch,w,U,q),T.container=w},next(){return T.activeBranch&&m(T.activeBranch)},registerDep(w,U,q){const O=!!T.pendingBranch;O&&T.deps++;const I=w.vnode.el;w.asyncDep.catch(K=>{Kt(K,w,0)}).then(K=>{if(w.isUnmounted||T.isUnmounted||T.pendingId!==w.suspenseId)return;w.asyncResolved=!0;const{vnode:R}=w;Yr(w,K,!1),I&&(R.el=I);const B=!I&&w.subTree.el;U(w,R,_(I||w.subTree.el),I?null:m(w.subTree),T,i,q),B&&A(B),Ms(w,R.el),O&&--T.deps===0&&T.resolve()})},unmount(w,U){T.isUnmounted=!0,T.activeBranch&&p(T.activeBranch,n,w,U),T.pendingBranch&&p(T.pendingBranch,n,w,U)}};return T}function vu(e,t,n,r,s,o,i,l,a){const f=t.suspense=kl(t,r,n,e.parentNode,document.createElement("div"),null,s,o,i,l,!0),u=a(e,f.pendingBranch=t.ssContent,n,f,o,i);return f.deps===0&&f.resolve(!1,!0),u}function bu(e){const{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=Ro(r?n.default:n),e.ssFallback=r?Ro(n.fallback):Z(Ce)}function Ro(e){let t;if(G(e)){const n=Vt&&e._c;n&&(e._d=!1,re()),e=e(),n&&(e._d=!0,t=Ae,Ml())}return W(e)&&(e=uu(e)),e=ke(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function Il(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):Wr(e)}function Ut(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e;let s=t.el;for(;!s&&t.component;)t=t.component.subTree,s=t.el;n.el=s,r&&r.subTree===n&&(r.vnode.el=s,Ms(r,s))}function wu(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const ye=Symbol.for("v-fgt"),Rt=Symbol.for("v-txt"),Ce=Symbol.for("v-cmt"),Qt=Symbol.for("v-stc"),en=[];let Ae=null;function re(e=!1){en.push(Ae=e?null:[])}function Ml(){en.pop(),Ae=en[en.length-1]||null}let Vt=1;function Po(e){Vt+=e,e<0&&Ae&&(Ae.hasOnce=!0)}function Ol(e){return e.dynamicChildren=Vt>0?Ae||Ht:null,Ml(),Vt>0&&Ae&&Ae.push(e),e}function fe(e,t,n,r,s,o){return Ol(N(e,t,n,r,s,o,!0))}function Tt(e,t,n,r,s){return Ol(Z(e,t,n,r,s,!0))}function Kn(e){return e?e.__v_isVNode===!0:!1}function qe(e,t){return e.type===t.type&&e.key===t.key}const $l=({key:e})=>e??null,On=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ce(e)||xe(e)||G(e)?{i:Ie,r:e,k:t,f:!!n}:e:null);function N(e,t=null,n=null,r=0,s=null,o=e===ye?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&$l(t),ref:t&&On(t),scopeId:ar,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:Ie};return l?($s(a,n),o&128&&e.normalize(a)):n&&(a.shapeFlag|=ce(n)?8:16),Vt>0&&!i&&Ae&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&Ae.push(a),a}const Z=xu;function xu(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===cl)&&(e=Ce),Kn(e)){const l=Qe(e,t,!0);return n&&$s(l,n),Vt>0&&!o&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(Mu(e)&&(e=e.__vccOpts),t){t=Hl(t);let{class:l,style:a}=t;l&&!ce(l)&&(t.class=or(l)),oe(a)&&(qi(a)&&!W(a)&&(a=_e({},a)),t.style=sr(a))}const i=ce(e)?1:pu(e)?128:Yc(e)?64:oe(e)?4:G(e)?2:0;return N(e,t,n,r,s,i,o,!0)}function Hl(e){return e?qi(e)||yl(e)?_e({},e):e:null}function Qe(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:a}=e,f=t?Eu(s||{},t):s,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&$l(f),ref:t&&t.ref?n&&o?W(o)?o.concat(On(t)):[o,On(t)]:On(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Qe(e.ssContent),ssFallback:e.ssFallback&&Qe(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&r&&Bn(u,a.clone(u)),u}function Me(e=" ",t=0){return Z(Rt,null,e,t)}function Os(e,t){const n=Z(Qt,null,e);return n.staticCount=t,n}function ke(e){return e==null||typeof e=="boolean"?Z(Ce):W(e)?Z(ye,null,e.slice()):typeof e=="object"?lt(e):Z(Rt,null,String(e))}function lt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Qe(e)}function $s(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),$s(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!yl(t)?t._ctx=Ie:s===3&&Ie&&(Ie.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else G(t)?(t={default:t,_ctx:Ie},n=32):(t=String(t),r&64?(n=16,t=[Me(t)]):n=8);e.children=t,e.shapeFlag|=n}function Eu(...e){const t={};for(let n=0;npe||Ie;let qn,Xr;{const e=Ri(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};qn=t("__VUE_INSTANCE_SETTERS__",n=>pe=n),Xr=t("__VUE_SSR_SETTERS__",n=>pn=n)}const hn=e=>{const t=pe;return qn(e),e.scope.on(),()=>{e.scope.off(),qn(t)}},ko=()=>{pe&&pe.scope.off(),qn(null)};function Ll(e){return e.vnode.shapeFlag&4}let pn=!1;function Au(e,t=!1,n=!1){t&&Xr(t);const{props:r,children:s}=e.vnode,o=Ll(e);Kc(e,r,o,t),zc(e,s,n);const i=o?Ru(e,t):void 0;return t&&Xr(!1),i}function Ru(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Nc);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?ku(e):null,o=hn(e);ht();const i=ct(r,e,0,[e.props,s]);if(pt(),o(),Ei(i)){if(i.then(ko,ko),t)return i.then(l=>{Yr(e,l,t)}).catch(l=>{Kt(l,e,0)});e.asyncDep=i}else Yr(e,i,t)}else Nl(e,t)}function Yr(e,t,n){G(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:oe(t)&&(e.setupState=Ji(t)),Nl(e,n)}let Io;function Nl(e,t,n){const r=e.type;if(!e.render){if(!t&&Io&&!r.render){const s=r.template||Ps(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:a}=r,f=_e(_e({isCustomElement:o,delimiters:l},i),a);r.render=Io(s,f)}}e.render=r.render||Le}{const s=hn(e);ht();try{jc(e)}finally{pt(),s()}}}const Pu={get(e,t){return Re(e,"get",""),e[t]}};function ku(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Pu),slots:e.slots,emit:e.emit,expose:t}}function Ls(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ji(gc(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Yt)return Yt[n](e)},has(t,n){return n in t||n in Yt}})):e.proxy}function Iu(e,t=!0){return G(e)?e.displayName||e.name:e.name||t&&e.__name}function Mu(e){return G(e)&&"__vccOpts"in e}const he=(e,t)=>mc(e,t,pn);function ln(e,t,n){const r=arguments.length;return r===2?oe(t)&&!W(t)?Kn(t)?Z(e,null,[t]):Z(e,t):Z(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Kn(n)&&(n=[n]),Z(e,t,n))}const jl="3.4.36";/** -* @vue/runtime-dom v3.4.36 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const Ou="http://www.w3.org/2000/svg",$u="http://www.w3.org/1998/Math/MathML",ze=typeof document<"u"?document:null,Mo=ze&&ze.createElement("template"),Hu={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?ze.createElementNS(Ou,e):t==="mathml"?ze.createElementNS($u,e):n?ze.createElement(e,{is:n}):ze.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>ze.createTextNode(e),createComment:e=>ze.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>ze.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Mo.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Mo.content;if(r==="svg"||r==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},nt="transition",zt="animation",an=Symbol("_vtc"),Gn=(e,{slots:t})=>ln(Pc,Lu(e),t);Gn.displayName="Transition";const Fl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Gn.props=_e({},el,Fl);const vt=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},Oo=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function Lu(e){const t={};for(const R in e)R in Fl||(t[R]=e[R]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=o,appearActiveClass:f=i,appearToClass:u=l,leaveFromClass:c=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:p=`${n}-leave-to`}=e,m=Nu(s),_=m&&m[0],A=m&&m[1],{onBeforeEnter:P,onEnter:H,onEnterCancelled:y,onLeave:S,onLeaveCancelled:T,onBeforeAppear:w=P,onAppear:U=H,onAppearCancelled:q=y}=t,O=(R,B,te)=>{bt(R,B?u:l),bt(R,B?f:i),te&&te()},I=(R,B)=>{R._isLeaving=!1,bt(R,c),bt(R,p),bt(R,d),B&&B()},K=R=>(B,te)=>{const se=R?U:H,j=()=>O(B,R,te);vt(se,[B,j]),$o(()=>{bt(B,R?a:o),rt(B,R?u:l),Oo(se)||Ho(B,r,_,j)})};return _e(t,{onBeforeEnter(R){vt(P,[R]),rt(R,o),rt(R,i)},onBeforeAppear(R){vt(w,[R]),rt(R,a),rt(R,f)},onEnter:K(!1),onAppear:K(!0),onLeave(R,B){R._isLeaving=!0;const te=()=>I(R,B);rt(R,c),rt(R,d),Du(),$o(()=>{R._isLeaving&&(bt(R,c),rt(R,p),Oo(S)||Ho(R,r,A,te))}),vt(S,[R,te])},onEnterCancelled(R){O(R,!1),vt(y,[R])},onAppearCancelled(R){O(R,!0),vt(q,[R])},onLeaveCancelled(R){I(R),vt(T,[R])}})}function Nu(e){if(e==null)return null;if(oe(e))return[Ir(e.enter),Ir(e.leave)];{const t=Ir(e);return[t,t]}}function Ir(e){return Ai(e)}function rt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[an]||(e[an]=new Set)).add(t)}function bt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[an];n&&(n.delete(t),n.size||(e[an]=void 0))}function $o(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ju=0;function Ho(e,t,n,r){const s=e._endId=++ju,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:a}=Fu(e,t);if(!i)return r();const f=i+"end";let u=0;const c=()=>{e.removeEventListener(f,d),o()},d=p=>{p.target===e&&++u>=a&&c()};setTimeout(()=>{u(n[m]||"").split(", "),s=r(`${nt}Delay`),o=r(`${nt}Duration`),i=Lo(s,o),l=r(`${zt}Delay`),a=r(`${zt}Duration`),f=Lo(l,a);let u=null,c=0,d=0;t===nt?i>0&&(u=nt,c=i,d=o.length):t===zt?f>0&&(u=zt,c=f,d=a.length):(c=Math.max(i,f),u=c>0?i>f?nt:zt:null,d=u?u===nt?o.length:a.length:0);const p=u===nt&&/\b(transform|all)(,|$)/.test(r(`${nt}Property`).toString());return{type:u,timeout:c,propCount:d,hasTransform:p}}function Lo(e,t){for(;e.lengthNo(n)+No(e[r])))}function No(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Du(){return document.body.offsetHeight}function Uu(e,t,n){const r=e[an];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jo=Symbol("_vod"),Bu=Symbol("_vsh"),Vu=Symbol(""),Wu=/(^|;)\s*display\s*:/;function Ku(e,t,n){const r=e.style,s=ce(n);let o=!1;if(n&&!s){if(t)if(ce(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&$n(r,l,"")}else for(const i in t)n[i]==null&&$n(r,i,"");for(const i in n)i==="display"&&(o=!0),$n(r,i,n[i])}else if(s){if(t!==n){const i=r[Vu];i&&(n+=";"+i),r.cssText=n,o=Wu.test(n)}}else t&&e.removeAttribute("style");jo in e&&(e[jo]=o?r.display:"",e[Bu]&&(r.display="none"))}const Fo=/\s*!important$/;function $n(e,t,n){if(W(n))n.forEach(r=>$n(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=qu(e,t);Fo.test(n)?e.setProperty(kt(r),n.replace(Fo,""),"important"):e[r]=n}}const Do=["Webkit","Moz","ms"],Mr={};function qu(e,t){const n=Mr[t];if(n)return n;let r=De(t);if(r!=="filter"&&r in e)return Mr[t]=r;r=rr(r);for(let s=0;sOr||(Yu.then(()=>Or=0),Or=Date.now());function ef(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Ne(tf(r,n.value),t,5,[r])};return n.value=e,n.attached=Qu(),n}function tf(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Ko=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,nf=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?Uu(e,r,i):t==="style"?Ku(e,n,r):un(t)?ys(t)||Ju(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):rf(e,t,r,i))?(Gu(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Bo(e,t,r,i,o,t!=="value")):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Bo(e,t,r,i))};function rf(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ko(t)&&G(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Ko(t)&&ce(n)?!1:t in e}const Dl=_e({patchProp:nf},Hu);let tn,qo=!1;function sf(){return tn||(tn=nu(Dl))}function of(){return tn=qo?tn:ru(Dl),qo=!0,tn}const lf=(...e)=>{const t=sf().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Bl(r);if(!s)return;const o=t._component;!G(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,Ul(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},af=(...e)=>{const t=of().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Bl(r);if(s)return n(s,!0,Ul(s))},t};function Ul(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Bl(e){return ce(e)?document.querySelector(e):e}const cf=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,uf=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,ff=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function df(e,t){if(e==="__proto__"||e==="constructor"&&t&&typeof t=="object"&&"prototype"in t){hf(e);return}return t}function hf(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function Zn(e,t={}){if(typeof e!="string")return e;const n=e.trim();if(e[0]==='"'&&e.endsWith('"')&&!e.includes("\\"))return n.slice(1,-1);if(n.length<=9){const r=n.toLowerCase();if(r==="true")return!0;if(r==="false")return!1;if(r==="undefined")return;if(r==="null")return null;if(r==="nan")return Number.NaN;if(r==="infinity")return Number.POSITIVE_INFINITY;if(r==="-infinity")return Number.NEGATIVE_INFINITY}if(!ff.test(e)){if(t.strict)throw new SyntaxError("[destr] Invalid JSON");return e}try{if(cf.test(e)||uf.test(e)){if(t.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(e,df)}return JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}const pf=/#/g,gf=/&/g,mf=/\//g,yf=/=/g,Ns=/\+/g,_f=/%5e/gi,vf=/%60/gi,bf=/%7c/gi,wf=/%20/gi;function xf(e){return encodeURI(""+e).replace(bf,"|")}function Qr(e){return xf(typeof e=="string"?e:JSON.stringify(e)).replace(Ns,"%2B").replace(wf,"+").replace(pf,"%23").replace(gf,"%26").replace(vf,"`").replace(_f,"^").replace(mf,"%2F")}function $r(e){return Qr(e).replace(yf,"%3D")}function zn(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function Ef(e){return zn(e.replace(Ns," "))}function Tf(e){return zn(e.replace(Ns," "))}function js(e=""){const t={};e[0]==="?"&&(e=e.slice(1));for(const n of e.split("&")){const r=n.match(/([^=]+)=?(.*)/)||[];if(r.length<2)continue;const s=Ef(r[1]);if(s==="__proto__"||s==="constructor")continue;const o=Tf(r[2]||"");t[s]===void 0?t[s]=o:Array.isArray(t[s])?t[s].push(o):t[s]=[t[s],o]}return t}function Sf(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${$r(e)}=${Qr(n)}`).join("&"):`${$r(e)}=${Qr(t)}`:$r(e)}function Vl(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>Sf(t,e[t])).filter(Boolean).join("&")}const Cf=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,Af=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,Rf=/^([/\\]\s*){2,}[^/\\]/,Pf=/^[\s\0]*(blob|data|javascript|vbscript):$/i,kf=/\/$|\/\?|\/#/,If=/^\.?\//;function gt(e,t={}){return typeof t=="boolean"&&(t={acceptRelative:t}),t.strict?Cf.test(e):Af.test(e)||(t.acceptRelative?Rf.test(e):!1)}function Mf(e){return!!e&&Pf.test(e)}function es(e="",t){return t?kf.test(e):e.endsWith("/")}function hr(e="",t){if(!t)return(es(e)?e.slice(0,-1):e)||"/";if(!es(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");s>=0&&(n=e.slice(0,s),r=e.slice(s));const[o,...i]=n.split("?");return((o.endsWith("/")?o.slice(0,-1):o)||"/")+(i.length>0?`?${i.join("?")}`:"")+r}function Jn(e="",t){if(!t)return e.endsWith("/")?e:e+"/";if(es(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");if(s>=0&&(n=e.slice(0,s),r=e.slice(s),!n))return r;const[o,...i]=n.split("?");return o+"/"+(i.length>0?`?${i.join("?")}`:"")+r}function Of(e=""){return e.startsWith("/")}function Go(e=""){return Of(e)?e:"/"+e}function $f(e,t){if(Kl(t)||gt(e))return e;const n=hr(t);return e.startsWith(n)?e:gn(n,e)}function Hf(e,t){if(Kl(t))return e;const n=hr(t);if(!e.startsWith(n))return e;const r=e.slice(n.length);return r[0]==="/"?r:"/"+r}function Wl(e,t){const n=jf(e),r={...js(n.search),...t};return n.search=Vl(r),Zl(n)}function Kl(e){return!e||e==="/"}function Lf(e){return e&&e!=="/"}function gn(e,...t){let n=e||"";for(const r of t.filter(s=>Lf(s)))if(n){const s=r.replace(If,"");n=Jn(n)+s}else n=r;return n}function ql(...e){var i,l,a,f;const t=/\/(?!\/)/,n=e.filter(Boolean),r=[];let s=0;for(const u of n)if(!(!u||u==="/")){for(const[c,d]of u.split(t).entries())if(!(!d||d===".")){if(d===".."){if(r.length===1&>(r[0]))continue;r.pop(),s--;continue}if(c===1&&((i=r[r.length-1])!=null&&i.endsWith(":/"))){r[r.length-1]+="/"+d;continue}r.push(d),s++}}let o=r.join("/");return s>=0?(l=n[0])!=null&&l.startsWith("/")&&!o.startsWith("/")?o="/"+o:(a=n[0])!=null&&a.startsWith("./")&&!o.startsWith("./")&&(o="./"+o):o="../".repeat(-1*s)+o,(f=n[n.length-1])!=null&&f.endsWith("/")&&!o.endsWith("/")&&(o+="/"),o}function Nf(e,t,n={}){return n.trailingSlash||(e=Jn(e),t=Jn(t)),n.leadingSlash||(e=Go(e),t=Go(t)),n.encoding||(e=zn(e),t=zn(t)),e===t}const Gl=Symbol.for("ufo:protocolRelative");function jf(e="",t){const n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){const[,c,d=""]=n;return{protocol:c.toLowerCase(),pathname:d,href:c+d,auth:"",host:"",search:"",hash:""}}if(!gt(e,{acceptRelative:!0}))return Zo(e);const[,r="",s,o=""]=e.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[];let[,i="",l=""]=o.match(/([^#/?]*)(.*)?/)||[];r==="file:"&&(l=l.replace(/\/(?=[A-Za-z]:)/,""));const{pathname:a,search:f,hash:u}=Zo(l);return{protocol:r.toLowerCase(),auth:s?s.slice(0,Math.max(0,s.length-1)):"",host:i,pathname:a,search:f,hash:u,[Gl]:!r}}function Zo(e=""){const[t="",n="",r=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function Zl(e){const t=e.pathname||"",n=e.search?(e.search.startsWith("?")?"":"?")+e.search:"",r=e.hash||"",s=e.auth?e.auth+"@":"",o=e.host||"";return(e.protocol||e[Gl]?(e.protocol||"")+"//":"")+s+o+t+n+r}class Ff extends Error{constructor(t,n){super(t,n),this.name="FetchError",n!=null&&n.cause&&!this.cause&&(this.cause=n.cause)}}function Df(e){var a,f,u,c,d;const t=((a=e.error)==null?void 0:a.message)||((f=e.error)==null?void 0:f.toString())||"",n=((u=e.request)==null?void 0:u.method)||((c=e.options)==null?void 0:c.method)||"GET",r=((d=e.request)==null?void 0:d.url)||String(e.request)||"/",s=`[${n}] ${JSON.stringify(r)}`,o=e.response?`${e.response.status} ${e.response.statusText}`:"",i=`${s}: ${o}${t?` ${t}`:""}`,l=new Ff(i,e.error?{cause:e.error}:void 0);for(const p of["request","options","response"])Object.defineProperty(l,p,{get(){return e[p]}});for(const[p,m]of[["data","_data"],["status","status"],["statusCode","status"],["statusText","statusText"],["statusMessage","statusText"]])Object.defineProperty(l,p,{get(){return e.response&&e.response[m]}});return l}const Uf=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function zo(e="GET"){return Uf.has(e.toUpperCase())}function Bf(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const Vf=new Set(["image/svg","application/xml","application/xhtml","application/html"]),Wf=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function Kf(e=""){if(!e)return"json";const t=e.split(";").shift()||"";return Wf.test(t)?"json":Vf.has(t)||t.startsWith("text/")?"text":"blob"}function qf(e,t,n=globalThis.Headers){const r={...t,...e};if(t!=null&&t.params&&(e!=null&&e.params)&&(r.params={...t==null?void 0:t.params,...e==null?void 0:e.params}),t!=null&&t.query&&(e!=null&&e.query)&&(r.query={...t==null?void 0:t.query,...e==null?void 0:e.query}),t!=null&&t.headers&&(e!=null&&e.headers)){r.headers=new n((t==null?void 0:t.headers)||{});for(const[s,o]of new n((e==null?void 0:e.headers)||{}))r.headers.set(s,o)}return r}const Gf=new Set([408,409,425,429,500,502,503,504]),Zf=new Set([101,204,205,304]);function zl(e={}){const{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function s(l){const a=l.error&&l.error.name==="AbortError"&&!l.options.timeout||!1;if(l.options.retry!==!1&&!a){let u;typeof l.options.retry=="number"?u=l.options.retry:u=zo(l.options.method)?0:1;const c=l.response&&l.response.status||500;if(u>0&&(Array.isArray(l.options.retryStatusCodes)?l.options.retryStatusCodes.includes(c):Gf.has(c))){const d=l.options.retryDelay||0;return d>0&&await new Promise(p=>setTimeout(p,d)),o(l.request,{...l.options,retry:u-1})}}const f=Df(l);throw Error.captureStackTrace&&Error.captureStackTrace(f,o),f}const o=async function(a,f={}){var p;const u={request:a,options:qf(f,e.defaults,n),response:void 0,error:void 0};u.options.method=(p=u.options.method)==null?void 0:p.toUpperCase(),u.options.onRequest&&await u.options.onRequest(u),typeof u.request=="string"&&(u.options.baseURL&&(u.request=$f(u.request,u.options.baseURL)),(u.options.query||u.options.params)&&(u.request=Wl(u.request,{...u.options.params,...u.options.query}))),u.options.body&&zo(u.options.method)&&(Bf(u.options.body)?(u.options.body=typeof u.options.body=="string"?u.options.body:JSON.stringify(u.options.body),u.options.headers=new n(u.options.headers||{}),u.options.headers.has("content-type")||u.options.headers.set("content-type","application/json"),u.options.headers.has("accept")||u.options.headers.set("accept","application/json")):("pipeTo"in u.options.body&&typeof u.options.body.pipeTo=="function"||typeof u.options.body.pipe=="function")&&("duplex"in u.options||(u.options.duplex="half")));let c;if(!u.options.signal&&u.options.timeout){const m=new r;c=setTimeout(()=>m.abort(),u.options.timeout),u.options.signal=m.signal}try{u.response=await t(u.request,u.options)}catch(m){return u.error=m,u.options.onRequestError&&await u.options.onRequestError(u),await s(u)}finally{c&&clearTimeout(c)}if(u.response.body&&!Zf.has(u.response.status)&&u.options.method!=="HEAD"){const m=(u.options.parseResponse?"json":u.options.responseType)||Kf(u.response.headers.get("content-type")||"");switch(m){case"json":{const _=await u.response.text(),A=u.options.parseResponse||Zn;u.response._data=A(_);break}case"stream":{u.response._data=u.response.body;break}default:u.response._data=await u.response[m]()}}return u.options.onResponse&&await u.options.onResponse(u),!u.options.ignoreResponseError&&u.response.status>=400&&u.response.status<600?(u.options.onResponseError&&await u.options.onResponseError(u),await s(u)):u.response},i=async function(a,f){return(await o(a,f))._data};return i.raw=o,i.native=(...l)=>t(...l),i.create=(l={})=>zl({...e,defaults:{...e.defaults,...l}}),i}const Fs=function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")}(),zf=Fs.fetch||(()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!"))),Jf=Fs.Headers,Xf=Fs.AbortController,Yf=zl({fetch:zf,Headers:Jf,AbortController:Xf}),Qf=Yf,ed=()=>{var e;return((e=window==null?void 0:window.__NUXT__)==null?void 0:e.config)||{}},Xn=ed().app,td=()=>Xn.baseURL,nd=()=>Xn.buildAssetsDir,Ds=(...e)=>ql(pr(),nd(),...e),pr=(...e)=>{const t=Xn.cdnURL||Xn.baseURL;return e.length?ql(t,...e):t};globalThis.__buildAssetsURL=Ds,globalThis.__publicAssetsURL=pr;globalThis.$fetch||(globalThis.$fetch=Qf.create({baseURL:td()}));function ts(e,t={},n){for(const r in e){const s=e[r],o=n?`${n}:${r}`:r;typeof s=="object"&&s!==null?ts(s,t,o):typeof s=="function"&&(t[o]=s)}return t}const rd={run:e=>e()},sd=()=>rd,Jl=typeof console.createTask<"u"?console.createTask:sd;function od(e,t){const n=t.shift(),r=Jl(n);return e.reduce((s,o)=>s.then(()=>r.run(()=>o(...t))),Promise.resolve())}function id(e,t){const n=t.shift(),r=Jl(n);return Promise.all(e.map(s=>r.run(()=>s(...t))))}function Hr(e,t){for(const n of[...e])n(t)}class ld{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const s=t;let o;for(;this._deprecatedHooks[t];)o=this._deprecatedHooks[t],t=o.to;if(o&&!r.allowDeprecated){let i=o.message;i||(i=`${s} hook has been deprecated`+(o.to?`, please use ${o.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let r,s=(...o)=>(typeof r=="function"&&r(),r=void 0,s=void 0,n(...o));return r=this.hook(t,s),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];delete this._hooks[t];for(const s of r)this.hook(t,s)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=ts(t),r=Object.keys(n).map(s=>this.hook(s,n[s]));return()=>{for(const s of r.splice(0,r.length))s()}}removeHooks(t){const n=ts(t);for(const r in n)this.removeHook(r,n[r])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(od,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(id,t,...n)}callHookWith(t,n,...r){const s=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&Hr(this._before,s);const o=t(n in this._hooks?[...this._hooks[n]]:[],r);return o instanceof Promise?o.finally(()=>{this._after&&s&&Hr(this._after,s)}):(this._after&&s&&Hr(this._after,s),o)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function Xl(){return new ld}function ad(e={}){let t,n=!1;const r=i=>{if(t&&t!==i)throw new Error("Context conflict")};let s;if(e.asyncContext){const i=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;i?s=new i:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}const o=()=>{if(s&&t===void 0){const i=s.getStore();if(i!==void 0)return i}return t};return{use:()=>{const i=o();if(i===void 0)throw new Error("Context is not available");return i},tryUse:()=>o(),set:(i,l)=>{l||r(i),t=i,n=!0},unset:()=>{t=void 0,n=!1},call:(i,l)=>{r(i),t=i;try{return s?s.run(i,l):l()}finally{n||(t=void 0)}},async callAsync(i,l){t=i;const a=()=>{t=i},f=()=>t===i?a:void 0;ns.add(f);try{const u=s?s.run(i,l):l();return n||(t=void 0),await u}finally{ns.delete(f)}}}}function cd(e={}){const t={};return{get(n,r={}){return t[n]||(t[n]=ad({...e,...r})),t[n],t[n]}}}const Yn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},Jo="__unctx__",ud=Yn[Jo]||(Yn[Jo]=cd()),fd=(e,t={})=>ud.get(e,t),Xo="__unctx_async_handlers__",ns=Yn[Xo]||(Yn[Xo]=new Set);function Yl(e){const t=[];for(const s of ns){const o=s();o&&t.push(o)}const n=()=>{for(const s of t)s()};let r=e();return r&&typeof r=="object"&&"catch"in r&&(r=r.catch(s=>{throw n(),s})),[r,n]}const dd={componentName:"NuxtLink"},hd=null,pd="#__nuxt",Ql="nuxt-app",Yo=36e5;function ea(e=Ql){return fd(e,{asyncContext:!1})}const gd="__nuxt_plugin";function md(e){let t=0;const n={_name:Ql,_scope:Ga(),provide:void 0,globalName:"nuxt",versions:{get nuxt(){return"3.12.4"},get vue(){return n.vueApp.version}},payload:$t({data:$t({}),state:Pt({}),once:new Set,_errors:$t({})}),static:{data:{}},runWithContext(s){return n._scope.active&&!Oi()?n._scope.run(()=>Qo(n,s)):Qo(n,s)},isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let s=!1;return()=>{if(!s&&(s=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:$t({}),_payloadRevivers:{},...e};if(window.__NUXT__)for(const s in window.__NUXT__)switch(s){case"data":case"state":case"_errors":Object.assign(n.payload[s],window.__NUXT__[s]);break;default:n.payload[s]=window.__NUXT__[s]}n.hooks=Xl(),n.hook=n.hooks.hook,n.callHook=n.hooks.callHook,n.provide=(s,o)=>{const i="$"+s;An(n,i,o),An(n.vueApp.config.globalProperties,i,o)},An(n.vueApp,"$nuxt",n),An(n.vueApp.config.globalProperties,"$nuxt",n);{window.addEventListener("nuxt.preloadError",o=>{n.callHook("app:chunkError",{error:o.payload})}),window.useNuxtApp=window.useNuxtApp||ge;const s=n.hook("app:error",(...o)=>{console.error("[nuxt] error caught during app initialization",...o)});n.hook("app:mounted",s)}const r=n.payload.config;return n.provide("config",r),n}function yd(e,t){t.hooks&&e.hooks.addHooks(t.hooks)}async function _d(e,t){if(typeof t=="function"){const{provide:n}=await e.runWithContext(()=>t(e))||{};if(n&&typeof n=="object")for(const r in n)e.provide(r,n[r])}}async function vd(e,t){const n=[],r=[],s=[],o=[];let i=0;async function l(a){var u;const f=((u=a.dependsOn)==null?void 0:u.filter(c=>t.some(d=>d._name===c)&&!n.includes(c)))??[];if(f.length>0)r.push([new Set(f),a]);else{const c=_d(e,a).then(async()=>{a._name&&(n.push(a._name),await Promise.all(r.map(async([d,p])=>{d.has(a._name)&&(d.delete(a._name),d.size===0&&(i++,await l(p)))})))});a.parallel?s.push(c.catch(d=>o.push(d))):await c}}for(const a of t)yd(e,a);for(const a of t)await l(a);if(await Promise.all(s),i)for(let a=0;a{}),e,{[gd]:!0,_name:t})}function Qo(e,t,n){const r=()=>t();return ea(e._name).set(e),e.vueApp.runWithContext(r)}function bd(e){var n;let t;return pl()&&(t=(n=Hs())==null?void 0:n.appContext.app.$nuxt),t=t||ea(e).tryUse(),t||null}function ge(e){const t=bd(e);if(!t)throw new Error("[nuxt] instance unavailable");return t}function Wt(e){return ge().$config}function An(e,t,n){Object.defineProperty(e,t,{get:()=>n})}function wd(e,t){return{ctx:{table:e},matchAll:n=>na(n,e)}}function ta(e){const t={};for(const n in e)t[n]=n==="dynamic"?new Map(Object.entries(e[n]).map(([r,s])=>[r,ta(s)])):new Map(Object.entries(e[n]));return t}function xd(e){return wd(ta(e))}function na(e,t,n){e.endsWith("/")&&(e=e.slice(0,-1)||"/");const r=[];for(const[o,i]of ei(t.wildcard))(e===o||e.startsWith(o+"/"))&&r.push(i);for(const[o,i]of ei(t.dynamic))if(e.startsWith(o+"/")){const l="/"+e.slice(o.length).split("/").splice(2).join("/");r.push(...na(l,i))}const s=t.static.get(e);return s&&r.push(s),r.filter(Boolean)}function ei(e){return[...e.entries()].sort((t,n)=>t[0].length-n[0].length)}function Lr(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function rs(e,t,n=".",r){if(!Lr(t))return rs(e,{},n,r);const s=Object.assign({},t);for(const o in e){if(o==="__proto__"||o==="constructor")continue;const i=e[o];i!=null&&(r&&r(s,o,i,n)||(Array.isArray(i)&&Array.isArray(s[o])?s[o]=[...i,...s[o]]:Lr(i)&&Lr(s[o])?s[o]=rs(i,s[o],(n?`${n}.`:"")+o.toString(),r):s[o]=i))}return s}function Ed(e){return(...t)=>t.reduce((n,r)=>rs(n,r,"",e),{})}const Td=Ed();function Sd(e,t){try{return t in e}catch{return!1}}var Cd=Object.defineProperty,Ad=(e,t,n)=>t in e?Cd(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,wt=(e,t,n)=>(Ad(e,typeof t!="symbol"?t+"":t,n),n);class ss extends Error{constructor(t,n={}){super(t,n),wt(this,"statusCode",500),wt(this,"fatal",!1),wt(this,"unhandled",!1),wt(this,"statusMessage"),wt(this,"data"),wt(this,"cause"),n.cause&&!this.cause&&(this.cause=n.cause)}toJSON(){const t={message:this.message,statusCode:os(this.statusCode,500)};return this.statusMessage&&(t.statusMessage=ra(this.statusMessage)),this.data!==void 0&&(t.data=this.data),t}}wt(ss,"__h3_error__",!0);function Rd(e){if(typeof e=="string")return new ss(e);if(Pd(e))return e;const t=new ss(e.message??e.statusMessage??"",{cause:e.cause||e});if(Sd(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=os(e.statusCode,t.statusCode):e.status&&(t.statusCode=os(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;ra(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function Pd(e){var t;return((t=e==null?void 0:e.constructor)==null?void 0:t.__h3_error__)===!0}const kd=/[^\u0009\u0020-\u007E]/g;function ra(e=""){return e.replace(kd,"")}function os(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const sa=Symbol("route"),Ze=()=>{var e;return(e=ge())==null?void 0:e.$router},oa=()=>pl()?Ye(sa,ge()._route):ge()._route;const Id=()=>{try{if(ge()._processingMiddleware)return!0}catch{return!1}return!1},ia=(e,t)=>{e||(e="/");const n=typeof e=="string"?e:"path"in e?is(e):Ze().resolve(e).href;if(t!=null&&t.open){const{target:a="_blank",windowFeatures:f={}}=t.open,u=Object.entries(f).filter(([c,d])=>d!==void 0).map(([c,d])=>`${c.toLowerCase()}=${d}`).join(", ");return open(n,a,u),Promise.resolve()}const r=gt(n,{acceptRelative:!0}),s=(t==null?void 0:t.external)||r;if(s){if(!(t!=null&&t.external))throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const{protocol:a}=new URL(n,window.location.href);if(a&&Mf(a))throw new Error(`Cannot navigate to a URL with '${a}' protocol.`)}const o=Id();if(!s&&o)return e;const i=Ze(),l=ge();return s?(l._scope.stop(),t!=null&&t.replace?location.replace(n):location.href=n,o?l.isHydrating?new Promise(()=>{}):!1:Promise.resolve()):t!=null&&t.replace?i.replace(e):i.push(e)};function is(e){return Wl(e.path||"",e.query||{})+(e.hash||"")}const la="__nuxt_error",Us=()=>wc(ge().payload,"error"),Md=e=>{const t=Bs(e);try{const n=ge(),r=Us();n.hooks.callHook("app:error",t),r.value=r.value||t}catch{throw t}return t},Od=async(e={})=>{const t=ge(),n=Us();t.callHook("app:error:cleared",e),e.redirect&&await Ze().replace(e.redirect),n.value=hd},$d=e=>!!e&&typeof e=="object"&&la in e,Bs=e=>{const t=Rd(e);return Object.defineProperty(t,la,{value:!0,configurable:!1,writable:!1}),t},Hd=-1,Ld=-2,Nd=-3,jd=-4,Fd=-5,Dd=-6;function Ud(e,t){return Bd(JSON.parse(e),t)}function Bd(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);function s(o,i=!1){if(o===Hd)return;if(o===Nd)return NaN;if(o===jd)return 1/0;if(o===Fd)return-1/0;if(o===Dd)return-0;if(i)throw new Error("Invalid input");if(o in r)return r[o];const l=n[o];if(!l||typeof l!="object")r[o]=l;else if(Array.isArray(l))if(typeof l[0]=="string"){const a=l[0],f=t==null?void 0:t[a];if(f)return r[o]=f(s(l[1]));switch(a){case"Date":r[o]=new Date(l[1]);break;case"Set":const u=new Set;r[o]=u;for(let p=1;p>>9)+65536).toString(16).substring(1,8).toLowerCase()}function ti(e){return e._h||Vs(e._d?e._d:`${e.tag}:${e.textContent||e.innerHTML||""}:${Object.entries(e.props).map(([t,n])=>`${t}:${String(n)}`).join(",")}`)}function ca(e,t){const{props:n,tag:r}=e;if(qd.includes(r))return r;if(r==="link"&&n.rel==="canonical")return"canonical";if(n.charset)return"charset";const s=["id"];r==="meta"&&s.push("name","property","http-equiv");for(const o of s)if(typeof n[o]<"u"){const i=String(n[o]);return`${r}:${o}:${i}`}return!1}function ni(e,t){return e==null?t||null:typeof e=="function"?e(t):e}function ua(e,t){const n=[],r=t.resolveKeyData||(o=>o.key),s=t.resolveValueData||(o=>o.value);for(const[o,i]of Object.entries(e))n.push(...(Array.isArray(i)?i:[i]).map(l=>{const a={key:o,value:l},f=s(a);return typeof f=="object"?ua(f,t):Array.isArray(f)?f:{[typeof t.key=="function"?t.key(a):t.key]:r(a),[typeof t.value=="function"?t.value(a):t.value]:f}}).flat());return n}function fa(e,t){return Object.entries(e).map(([n,r])=>{if(typeof r=="object"&&(r=fa(r,t)),t.resolve){const s=t.resolve({key:n,value:r});if(typeof s<"u")return s}return typeof r=="number"&&(r=r.toString()),typeof r=="string"&&t.wrapValue&&(r=r.replace(new RegExp(t.wrapValue,"g"),`\\${t.wrapValue}`),r=`${t.wrapValue}${r}${t.wrapValue}`),`${n}${t.keyValueSeparator||""}${r}`}).join(t.entrySeparator||"")}const Ee=e=>({keyValue:e,metaKey:"property"}),Nr=e=>({keyValue:e}),Ws={appleItunesApp:{unpack:{entrySeparator:", ",resolve({key:e,value:t}){return`${Je(e)}=${t}`}}},articleExpirationTime:Ee("article:expiration_time"),articleModifiedTime:Ee("article:modified_time"),articlePublishedTime:Ee("article:published_time"),bookReleaseDate:Ee("book:release_date"),charset:{metaKey:"charset"},contentSecurityPolicy:{unpack:{entrySeparator:"; ",resolve({key:e,value:t}){return`${Je(e)} ${t}`}},metaKey:"http-equiv"},contentType:{metaKey:"http-equiv"},defaultStyle:{metaKey:"http-equiv"},fbAppId:Ee("fb:app_id"),msapplicationConfig:Nr("msapplication-Config"),msapplicationTileColor:Nr("msapplication-TileColor"),msapplicationTileImage:Nr("msapplication-TileImage"),ogAudioSecureUrl:Ee("og:audio:secure_url"),ogAudioUrl:Ee("og:audio"),ogImageSecureUrl:Ee("og:image:secure_url"),ogImageUrl:Ee("og:image"),ogSiteName:Ee("og:site_name"),ogVideoSecureUrl:Ee("og:video:secure_url"),ogVideoUrl:Ee("og:video"),profileFirstName:Ee("profile:first_name"),profileLastName:Ee("profile:last_name"),profileUsername:Ee("profile:username"),refresh:{metaKey:"http-equiv",unpack:{entrySeparator:";",resolve({key:e,value:t}){if(e==="seconds")return`${t}`}}},robots:{unpack:{entrySeparator:", ",resolve({key:e,value:t}){return typeof t=="boolean"?`${Je(e)}`:`${Je(e)}:${t}`}}},xUaCompatible:{metaKey:"http-equiv"}},da=["og","book","article","profile"];function ha(e){var n;const t=Je(e).split(":")[0];return da.includes(t)?"property":((n=Ws[e])==null?void 0:n.metaKey)||"name"}function Zd(e){var t;return((t=Ws[e])==null?void 0:t.keyValue)||Je(e)}function Je(e){const t=e.replace(/([A-Z])/g,"-$1").toLowerCase(),n=t.split("-")[0];return da.includes(n)||n==="twitter"?e.replace(/([A-Z])/g,":$1").toLowerCase():t}function ls(e){if(Array.isArray(e))return e.map(n=>ls(n));if(typeof e!="object"||Array.isArray(e))return e;const t={};for(const[n,r]of Object.entries(e))t[Je(n)]=ls(r);return t}function zd(e,t){const n=Ws[t];return t==="refresh"?`${e.seconds};url=${e.url}`:fa(ls(e),{keyValueSeparator:"=",entrySeparator:", ",resolve({value:r,key:s}){if(r===null)return"";if(typeof r=="boolean")return`${s}`},...n==null?void 0:n.unpack})}const pa=["og:image","og:video","og:audio","twitter:image"];function ga(e){const t={};return Object.entries(e).forEach(([n,r])=>{String(r)!=="false"&&n&&(t[n]=r)}),t}function ri(e,t){const n=ga(t),r=Je(e),s=ha(r);if(pa.includes(r)){const o={};return Object.entries(n).forEach(([i,l])=>{o[`${e}${i==="url"?"":`${i.charAt(0).toUpperCase()}${i.slice(1)}`}`]=l}),Ks(o).sort((i,l)=>{var a,f;return(((a=i[s])==null?void 0:a.length)||0)-(((f=l[s])==null?void 0:f.length)||0)})}return[{[s]:r,...n}]}function Ks(e){const t=[],n={};Object.entries(e).forEach(([s,o])=>{if(!Array.isArray(o)){if(typeof o=="object"&&o){if(pa.includes(Je(s))){t.push(...ri(s,o));return}n[s]=ga(o)}else n[s]=o;return}o.forEach(i=>{t.push(...typeof i=="string"?Ks({[s]:i}):ri(s,i))})});const r=ua(n,{key({key:s}){return ha(s)},value({key:s}){return s==="charset"?"charset":"content"},resolveKeyData({key:s}){return Zd(s)},resolveValueData({value:s,key:o}){return s===null?"_null":typeof s=="object"?zd(s,o):typeof s=="number"?s.toString():s}});return[...t,...r].map(s=>(s.content==="_null"&&(s.content=null),s))}async function Jd(e,t,n){const r={tag:e,props:await ma(typeof t=="object"&&typeof t!="function"&&!(t instanceof Promise)?{...t}:{[["script","noscript","style"].includes(e)?"innerHTML":"textContent"]:t},["templateParams","titleTemplate"].includes(e))};return aa.forEach(s=>{const o=typeof r.props[s]<"u"?r.props[s]:n[s];typeof o<"u"&&((!["innerHTML","textContent","children"].includes(s)||Wd.includes(r.tag))&&(r[s==="children"?"innerHTML":s]=o),delete r.props[s])}),r.props.body&&(r.tagPosition="bodyClose",delete r.props.body),r.tag==="script"&&typeof r.innerHTML=="object"&&(r.innerHTML=JSON.stringify(r.innerHTML),r.props.type=r.props.type||"application/json"),Array.isArray(r.props.content)?r.props.content.map(s=>({...r,props:{...r.props,content:s}})):r}function Xd(e,t){var r;const n=e==="class"?" ":";";return typeof t=="object"&&!Array.isArray(t)&&(t=Object.entries(t).filter(([,s])=>s).map(([s,o])=>e==="style"?`${s}:${o}`:s)),(r=String(Array.isArray(t)?t.join(n):t))==null?void 0:r.split(n).filter(s=>s.trim()).filter(Boolean).join(n)}async function ma(e,t){for(const n of Object.keys(e)){if(["class","style"].includes(n)){e[n]=Xd(n,e[n]);continue}if(e[n]instanceof Promise&&(e[n]=await e[n]),!t&&!aa.includes(n)){const r=String(e[n]),s=n.startsWith("data-");r==="true"||r===""?e[n]=s?"true":!0:e[n]||(s&&r==="false"?e[n]="false":delete e[n])}}return e}const Yd=10;async function Qd(e){const t=[];return Object.entries(e.resolvedInput).filter(([n,r])=>typeof r<"u"&&Kd.includes(n)).forEach(([n,r])=>{const s=Vd(r);t.push(...s.map(o=>Jd(n,o,e)).flat())}),(await Promise.all(t)).flat().filter(Boolean).map((n,r)=>(n._e=e._i,e.mode&&(n._m=e.mode),n._p=(e._i<a&&a[f]||void 0,t):l=t[i],typeof l<"u"?(l||"").replace(/"/g,'\\"'):!1}let s=e;try{s=decodeURI(e)}catch{}return(s.match(/%(\w+\.+\w+)|%(\w+)/g)||[]).sort().reverse().forEach(i=>{const l=r(i.slice(1));typeof l=="string"&&(e=e.replace(new RegExp(`\\${i}(\\W|$)`,"g"),(a,f)=>`${l}${f}`).trim())}),e.includes(st)&&(e.endsWith(st)&&(e=e.slice(0,-st.length).trim()),e.startsWith(st)&&(e=e.slice(st.length).trim()),e=e.replace(new RegExp(`\\${st}\\s*\\${st}`,"g"),st),e=Ln(e,{separator:n},n)),e}async function ya(e,t={}){var u;const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!r.shouldRender)return;const s=(await e.resolveTags()).map(c=>({tag:c,id:Hn.includes(c.tag)?ti(c):c.tag,shouldRender:!0}));let o=e._dom;if(!o){o={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};for(const c of["body","head"]){const d=(u=n[c])==null?void 0:u.children,p=[];for(const m of[...d].filter(_=>Hn.includes(_.tagName.toLowerCase()))){const _={tag:m.tagName.toLowerCase(),props:await ma(m.getAttributeNames().reduce((H,y)=>({...H,[y]:m.getAttribute(y)}),{})),innerHTML:m.innerHTML};let A=1,P=ca(_);for(;P&&p.find(H=>H._d===P);)P=`${P}:${A++}`;_._d=P||void 0,p.push(_),o.elMap[m.getAttribute("data-hid")||ti(_)]=m}}}o.pendingSideEffects={...o.sideEffects||{}},o.sideEffects={};function i(c,d,p){const m=`${c}:${d}`;o.sideEffects[m]=p,delete o.pendingSideEffects[m]}function l({id:c,$el:d,tag:p}){const m=p.tag.endsWith("Attrs");o.elMap[c]=d,m||(["textContent","innerHTML"].forEach(_=>{p[_]&&p[_]!==d[_]&&(d[_]=p[_])}),i(c,"el",()=>{var _;(_=o.elMap[c])==null||_.remove(),delete o.elMap[c]}));for(const[_,A]of Object.entries(p._eventHandlers||{}))d.getAttribute(`data-${_}`)!==""&&((p.tag==="bodyAttrs"?n.defaultView:d).addEventListener(_.replace("on",""),A.bind(d)),d.setAttribute(`data-${_}`,""));Object.entries(p.props).forEach(([_,A])=>{const P=`attr:${_}`;if(_==="class")for(const H of(A||"").split(" ").filter(Boolean))m&&i(c,`${P}:${H}`,()=>d.classList.remove(H)),!d.classList.contains(H)&&d.classList.add(H);else if(_==="style")for(const H of(A||"").split(";").filter(Boolean)){const[y,...S]=H.split(":").map(T=>T.trim());i(c,`${P}:${y}`,()=>{d.style.removeProperty(y)}),d.style.setProperty(y,S.join(":"))}else d.getAttribute(_)!==A&&d.setAttribute(_,A===!0?"":String(A)),m&&i(c,P,()=>d.removeAttribute(_))})}const a=[],f={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const c of s){const{tag:d,shouldRender:p,id:m}=c;if(p){if(d.tag==="title"){n.title=d.textContent;continue}c.$el=c.$el||o.elMap[m],c.$el?l(c):Hn.includes(d.tag)&&a.push(c)}}for(const c of a){const d=c.tag.tagPosition||"head";c.$el=n.createElement(c.tag.tag),l(c),f[d]=f[d]||n.createDocumentFragment(),f[d].appendChild(c.$el)}for(const c of s)await e.hooks.callHook("dom:renderTag",c,n,i);f.head&&n.head.appendChild(f.head),f.bodyOpen&&n.body.insertBefore(f.bodyOpen,n.body.firstChild),f.bodyClose&&n.body.appendChild(f.bodyClose),Object.values(o.pendingSideEffects).forEach(c=>c()),e._dom=o,e.dirty=!1,await e.hooks.callHook("dom:rendered",{renders:s})}async function th(e,t={}){const n=t.delayFn||(r=>setTimeout(r,10));return e._domUpdatePromise=e._domUpdatePromise||new Promise(r=>n(async()=>{await ya(e,t),delete e._domUpdatePromise,r()}))}function nh(e){return t=>{var r,s;const n=((s=(r=t.resolvedOptions.document)==null?void 0:r.head.querySelector('script[id="unhead:payload"]'))==null?void 0:s.innerHTML)||!1;return n&&t.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":function(o){th(o,e)}}}}}const rh=["templateParams","htmlAttrs","bodyAttrs"],sh={hooks:{"tag:normalise":function({tag:e}){["hid","vmid","key"].forEach(r=>{e.props[r]&&(e.key=e.props[r],delete e.props[r])});const n=ca(e)||(e.key?`${e.tag}:${e.key}`:!1);n&&(e._d=n)},"tags:resolve":function(e){const t={};e.tags.forEach(r=>{const s=(r.key?`${r.tag}:${r.key}`:r._d)||r._p,o=t[s];if(o){let l=r==null?void 0:r.tagDuplicateStrategy;if(!l&&rh.includes(r.tag)&&(l="merge"),l==="merge"){const a=o.props;["class","style"].forEach(f=>{a[f]&&(r.props[f]?(f==="style"&&!a[f].endsWith(";")&&(a[f]+=";"),r.props[f]=`${a[f]} ${r.props[f]}`):r.props[f]=a[f])}),t[s].props={...a,...r.props};return}else if(r._e===o._e){o._duped=o._duped||[],r._d=`${o._d}:${o._duped.length+1}`,o._duped.push(r);return}else if(Qn(r)>Qn(o))return}const i=Object.keys(r.props).length+(r.innerHTML?1:0)+(r.textContent?1:0);if(Hn.includes(r.tag)&&i===0){delete t[s];return}t[s]=r});const n=[];Object.values(t).forEach(r=>{const s=r._duped;delete r._duped,n.push(r),s&&n.push(...s)}),e.tags=n,e.tags=e.tags.filter(r=>!(r.tag==="meta"&&(r.props.name||r.props.property)&&!r.props.content))}}},oh={mode:"server",hooks:{"tags:resolve":function(e){const t={};e.tags.filter(n=>["titleTemplate","templateParams","title"].includes(n.tag)&&n._m==="server").forEach(n=>{t[n.tag]=n.tag.startsWith("title")?n.textContent:n.props}),Object.keys(t).length&&e.tags.push({tag:"script",innerHTML:JSON.stringify(t),props:{id:"unhead:payload",type:"application/json"}})}}},ih=["script","link","bodyAttrs"],lh=e=>({hooks:{"tags:resolve":function(t){for(const n of t.tags.filter(r=>ih.includes(r.tag)))Object.entries(n.props).forEach(([r,s])=>{r.startsWith("on")&&typeof s=="function"&&(e.ssr&&ii.includes(r)?n.props[r]=`this.dataset.${r}fired = true`:delete n.props[r],n._eventHandlers=n._eventHandlers||{},n._eventHandlers[r]=s)}),e.ssr&&n._eventHandlers&&(n.props.src||n.props.href)&&(n.key=n.key||Vs(n.props.src||n.props.href))},"dom:renderTag":function({$el:t,tag:n}){var r,s;for(const o of Object.keys((t==null?void 0:t.dataset)||{}).filter(i=>ii.some(l=>`${l}fired`===i))){const i=o.replace("fired","");(s=(r=n._eventHandlers)==null?void 0:r[i])==null||s.call(t,new Event(i.replace("on","")))}}}}),ah=["link","style","script","noscript"],ch={hooks:{"tag:normalise":({tag:e})=>{e.key&&ah.includes(e.tag)&&(e.props["data-hid"]=e._h=Vs(e.key))}}},uh={hooks:{"tags:resolve":e=>{const t=n=>{var r;return(r=e.tags.find(s=>s._d===n))==null?void 0:r._p};for(const{prefix:n,offset:r}of eh)for(const s of e.tags.filter(o=>typeof o.tagPriority=="string"&&o.tagPriority.startsWith(n))){const o=t(s.tagPriority.replace(n,""));typeof o<"u"&&(s._p=o+r)}e.tags.sort((n,r)=>n._p-r._p).sort((n,r)=>Qn(n)-Qn(r))}}},fh={meta:"content",link:"href",htmlAttrs:"lang"},dh=e=>({hooks:{"tags:resolve":t=>{var l;const{tags:n}=t,r=(l=n.find(a=>a.tag==="title"))==null?void 0:l.textContent,s=n.findIndex(a=>a.tag==="templateParams"),o=s!==-1?n[s].props:{},i=o.separator||"|";delete o.separator,o.pageTitle=Ln(o.pageTitle||r||"",o,i);for(const a of n.filter(f=>f.processTemplateParams!==!1)){const f=fh[a.tag];f&&typeof a.props[f]=="string"?a.props[f]=Ln(a.props[f],o,i):(a.processTemplateParams===!0||["titleTemplate","title"].includes(a.tag))&&["innerHTML","textContent"].forEach(u=>{typeof a[u]=="string"&&(a[u]=Ln(a[u],o,i))})}e._templateParams=o,e._separator=i,t.tags=n.filter(a=>a.tag!=="templateParams")}}}),hh={hooks:{"tags:resolve":e=>{const{tags:t}=e;let n=t.findIndex(s=>s.tag==="titleTemplate");const r=t.findIndex(s=>s.tag==="title");if(r!==-1&&n!==-1){const s=ni(t[n].textContent,t[r].textContent);s!==null?t[r].textContent=s||t[r].textContent:delete t[r]}else if(n!==-1){const s=ni(t[n].textContent);s!==null&&(t[n].textContent=s,t[n].tag="title",n=-1)}n!==-1&&delete t[n],e.tags=t.filter(Boolean)}}},ph={hooks:{"tags:afterResolve":function(e){for(const t of e.tags)typeof t.innerHTML=="string"&&(t.innerHTML&&["application/ld+json","application/json"].includes(t.props.type)?t.innerHTML=t.innerHTML.replace(/{l.dirty=!0,t.callHook("entries:updated",l)};let s=0,o=[];const i=[],l={plugins:i,dirty:!1,resolvedOptions:e,hooks:t,headEntries(){return o},use(a){const f=typeof a=="function"?a(l):a;(!f.key||!i.some(u=>u.key===f.key))&&(i.push(f),li(f.mode,n)&&t.addHooks(f.hooks||{}))},push(a,f){f==null||delete f.head;const u={_i:s++,input:a,...f};return li(u.mode,n)&&(o.push(u),r()),{dispose(){o=o.filter(c=>c._i!==u._i),t.callHook("entries:updated",l),r()},patch(c){o=o.map(d=>(d._i===u._i&&(d.input=u.input=c),d)),r()}}},async resolveTags(){const a={tags:[],entries:[...o]};await t.callHook("entries:resolve",a);for(const f of a.entries){const u=f.resolvedInput||f.input;if(f.resolvedInput=await(f.transform?f.transform(u):u),f.resolvedInput)for(const c of await Qd(f)){const d={tag:c,entry:f,resolvedOptions:l.resolvedOptions};await t.callHook("tag:normalise",d),a.tags.push(d.tag)}}return await t.callHook("tags:beforeResolve",a),await t.callHook("tags:resolve",a),await t.callHook("tags:afterResolve",a),a.tags},ssr:n};return[sh,oh,lh,ch,uh,dh,hh,ph,...(e==null?void 0:e.plugins)||[]].forEach(a=>l.use(a)),l.hooks.callHook("init",l),l}function yh(){return _a}const _h=jl.startsWith("3");function vh(e){return typeof e=="function"?e():Q(e)}function er(e,t=""){if(e instanceof Promise)return e;const n=vh(e);return!e||!n?n:Array.isArray(n)?n.map(r=>er(r,t)):typeof n=="object"?Object.fromEntries(Object.entries(n).map(([r,s])=>r==="titleTemplate"||r.startsWith("on")?[r,Q(s)]:[r,er(s,r)])):n}const bh={hooks:{"entries:resolve":function(e){for(const t of e.entries)t.resolvedInput=er(t.input)}}},va="usehead";function wh(e){return{install(n){_h&&(n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(va,e))}}.install}function xh(e={}){e.domDelayFn=e.domDelayFn||(n=>Ge(()=>setTimeout(()=>n(),0)));const t=gh(e);return t.use(bh),t.install=wh(t),t}const as=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},cs="__unhead_injection_handler__";function Eh(e){as[cs]=e}function Th(){if(cs in as)return as[cs]();const e=Ye(va);return e||yh()}function Sh(e,t={}){const n=t.head||Th();if(n)return n.ssr?n.push(e,t):Ch(n,e,t)}function Ch(e,t,n={}){const r=le(!1),s=le({});qt(()=>{s.value=r.value?{}:er(t)});const o=e.push(s.value,n);return Mn(s,l=>{o.patch(l)}),Hs()&&(ur(()=>{o.dispose()}),ol(()=>{r.value=!0}),sl(()=>{r.value=!1})),o}function Ah(e,t){const{title:n,titleTemplate:r,...s}=e;return Sh({title:n,titleTemplate:r,_flatMeta:s},{...t,transform(o){const i=Ks({...o._flatMeta});return delete o._flatMeta,{...o,meta:i}}})}let Nn,jn;function Rh(){return Nn=$fetch(Ds(`builds/meta/${Wt().app.buildId}.json`),{responseType:"json"}),Nn.then(e=>{jn=xd(e.matcher)}).catch(e=>{console.error("[nuxt] Error fetching app manifest.",e)}),Nn}function gr(){return Nn||Rh()}async function qs(e){if(await gr(),!jn)return console.error("[nuxt] Error creating app manifest matcher.",jn),{};try{return Td({},...jn.matchAll(e).reverse())}catch(t){return console.error("[nuxt] Error matching route rules.",t),{}}}async function ai(e,t={}){const n=await kh(e,t),r=ge(),s=r._payloadCache=r._payloadCache||{};return n in s||(s[n]=wa(e).then(o=>o?ba(n).then(i=>i||(delete s[n],null)):(s[n]=null,null))),s[n]}const Ph="_payload.json";async function kh(e,t={}){const n=new URL(e,"http://localhost");if(n.host!=="localhost"||gt(n.pathname,{acceptRelative:!0}))throw new Error("Payload URL must not include hostname: "+e);const r=Wt(),s=t.hash||(t.fresh?Date.now():r.app.buildId),o=r.app.cdnURL,i=o&&await wa(e)?o:r.app.baseURL;return gn(i,n.pathname,Ph+(s?`?${s}`:""))}async function ba(e){const t=fetch(e).then(n=>n.text().then(xa));try{return await t}catch(n){console.warn("[nuxt] Cannot load payload ",e,n)}return null}async function wa(e=oa().path){if(e=hr(e),(await gr()).prerendered.includes(e))return!0;const n=await qs(e);return!!n.prerender&&!n.redirect}let Rn=null;async function Ih(){if(Rn)return Rn;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await xa(e.textContent||""),n=e.dataset.src?await ba(e.dataset.src):void 0;return Rn={...t,...n,...window.__NUXT__},Rn}async function xa(e){return await Ud(e,ge()._payloadRevivers)}function Mh(e,t){ge()._payloadRevivers[e]=t}const ci={NuxtError:e=>Bs(e),EmptyShallowRef:e=>po(e==="_"?void 0:e==="0n"?BigInt(0):Zn(e)),EmptyRef:e=>le(e==="_"?void 0:e==="0n"?BigInt(0):Zn(e)),ShallowRef:e=>po(e),ShallowReactive:e=>$t(e),Ref:e=>le(e),Reactive:e=>Pt(e)},Oh=mt({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const r in ci)Mh(r,ci[r]);Object.assign(e.payload,([t,n]=Yl(()=>e.runWithContext(Ih)),t=await t,n(),t)),window.__NUXT__=e.payload}}),$h=[],Hh=mt({name:"nuxt:head",enforce:"pre",setup(e){const t=xh({plugins:$h});Eh(()=>ge().vueApp._context.provides.usehead),e.vueApp.use(t);{let n=!0;const r=async()=>{n=!1,await ya(t)};t.hooks.hook("dom:beforeRender",s=>{s.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||r()}),e.hooks.hook("app:error",r),e.hooks.hook("app:suspense:resolve",r)}}}),Lh=async e=>{let t,n;const r=([t,n]=Yl(()=>qs(e.path)),t=await t,n(),t);if(r.redirect)return gt(r.redirect,{acceptRelative:!0})?(window.location.href=r.redirect,!1):r.redirect},Nh=[Lh];function jr(e){typeof e=="object"&&(e=Zl({pathname:e.path||"",search:Vl(e.query||{}),hash:e.hash||""}));const t=new URL(e.toString(),window.location.href);return{path:t.pathname,fullPath:e,query:js(t.search),hash:t.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:e}}const jh=mt({name:"nuxt:router",enforce:"pre",setup(e){const t=Hf(window.location.pathname,Wt().app.baseURL)+window.location.search+window.location.hash,n=[],r={"navigate:before":[],"resolve:before":[],"navigate:after":[],error:[]},s=(c,d)=>(r[c].push(d),()=>r[c].splice(r[c].indexOf(d),1)),o=Wt().app.baseURL,i=Pt(jr(t));async function l(c,d){try{const p=jr(c);for(const m of r["navigate:before"]){const _=await m(p,i);if(_===!1||_ instanceof Error)return;if(typeof _=="string"&&_.length)return l(_,!0)}for(const m of r["resolve:before"])await m(p,i);Object.assign(i,p),window.history[d?"replaceState":"pushState"]({},"",gn(o,p.fullPath)),e.isHydrating||await e.runWithContext(Od);for(const m of r["navigate:after"])await m(p,i)}catch(p){for(const m of r.error)await m(p)}}const f={currentRoute:he(()=>i),isReady:()=>Promise.resolve(),options:{},install:()=>Promise.resolve(),push:c=>l(c,!1),replace:c=>l(c,!0),back:()=>window.history.go(-1),go:c=>window.history.go(c),forward:()=>window.history.go(1),beforeResolve:c=>s("resolve:before",c),beforeEach:c=>s("navigate:before",c),afterEach:c=>s("navigate:after",c),onError:c=>s("error",c),resolve:jr,addRoute:(c,d)=>{n.push(d)},getRoutes:()=>n,hasRoute:c=>n.some(d=>d.name===c),removeRoute:c=>{const d=n.findIndex(p=>p.name===c);d!==-1&&n.splice(d,1)}};e.vueApp.component("RouterLink",Ue({functional:!0,props:{to:{type:String,required:!0},custom:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:String},setup:(c,{slots:d})=>{const p=()=>l(c.to,c.replace);return()=>{var _;const m=f.resolve(c.to);return c.custom?(_=d.default)==null?void 0:_.call(d,{href:c.to,navigate:p,route:m}):ln("a",{href:c.to,onClick:A=>(A.preventDefault(),p())},d)}}})),window.addEventListener("popstate",c=>{const d=c.target.location;f.replace(d.href.replace(d.origin,""))}),e._route=i,e._middleware=e._middleware||{global:[],named:{}};const u=e.payload.state._layout;return e.hooks.hookOnce("app:created",async()=>{f.beforeEach(async(c,d)=>{c.meta=Pt(c.meta||{}),e.isHydrating&&u&&!ft(c.meta.layout)&&(c.meta.layout=u),e._processingMiddleware=!0;{const p=new Set([...Nh,...e._middleware.global]);{const m=await e.runWithContext(()=>qs(c.path));if(m.appMiddleware)for(const _ in m.appMiddleware){const A=e._middleware.named[_];if(!A)return;m.appMiddleware[_]?p.add(A):p.delete(A)}}for(const m of p){const _=await e.runWithContext(()=>m(c,d));if(_!==!0&&(_||_===!1))return _}}}),f.afterEach(()=>{delete e._processingMiddleware}),await f.replace(t),Nf(i.fullPath,t)||await e.runWithContext(()=>ia(i.fullPath))}),{provide:{route:i,router:f}}}}),us=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),Fh=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),mr=e=>{const t=ge();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{us(()=>e())}):us(()=>e())},Dh=mt({name:"nuxt:payload",setup(e){Ze().beforeResolve(async(t,n)=>{if(t.path===n.path)return;const r=await ai(t.path);r&&Object.assign(e.static.data,r.data)}),mr(()=>{var t;e.hooks.hook("link:prefetch",async n=>{const{hostname:r}=new URL(n,window.location.href);r===window.location.hostname&&await ai(n)}),((t=navigator.connection)==null?void 0:t.effectiveType)!=="slow-2g"&&setTimeout(gr,1e3)})}}),Uh=mt(()=>{const e=Ze();mr(()=>{e.beforeResolve(async()=>{await new Promise(t=>{setTimeout(t,100),requestAnimationFrame(()=>{setTimeout(t,0)})})})})}),Bh=mt(e=>{let t;async function n(){const r=await gr();t&&clearTimeout(t),t=setTimeout(n,Yo);try{const s=await $fetch(Ds("builds/latest.json")+`?${Date.now()}`);s.id!==r.id&&e.hooks.callHook("app:manifest:update",s)}catch{}}mr(()=>{t=setTimeout(n,Yo)})});function Vh(e={}){const t=e.path||window.location.pathname;let n={};try{n=Zn(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||(n==null?void 0:n.path)!==t||(n==null?void 0:n.expires){r.clear()}),e.hook("app:chunkError",({error:o})=>{r.add(o)});function s(o){const l="href"in o&&o.href[0]==="#"?n.app.baseURL+o.href:gn(n.app.baseURL,o.fullPath);Vh({path:l,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(s)}),t.onError((o,i)=>{r.has(o)&&s(i)})}}),Kh=mt({name:"nuxt:global-components"}),qh=[Oh,Hh,jh,Dh,Uh,Bh,Wh,Kh],Gh="modulepreload",Zh=function(e,t){return new URL(e,t).href},ui={},zh=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),a=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));s=Promise.allSettled(n.map(f=>{if(f=Zh(f,r),f in ui)return;ui[f]=!0;const u=f.endsWith(".css"),c=u?'[rel="stylesheet"]':"";if(!!r)for(let m=i.length-1;m>=0;m--){const _=i[m];if(_.href===f&&(!u||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${c}`))return;const p=document.createElement("link");if(p.rel=u?"stylesheet":Gh,u||(p.as="script"),p.crossOrigin="",p.href=f,a&&p.setAttribute("nonce",a),document.head.appendChild(p),u)return new Promise((m,_)=>{p.addEventListener("load",m),p.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${f}`)))})}))}function o(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return s.then(i=>{for(const l of i||[])l.status==="rejected"&&o(l.reason);return t().catch(o)})},fi=(...e)=>zh(...e).catch(t=>{const n=new Event("nuxt.preloadError");throw n.payload=t,window.dispatchEvent(n),t});async function Ea(e,t=Ze()){const{path:n,matched:r}=t.resolve(e);if(!r.length||(t._routePreloaded||(t._routePreloaded=new Set),t._routePreloaded.has(n)))return;const s=t._preloadPromises=t._preloadPromises||[];if(s.length>4)return Promise.all(s).then(()=>Ea(e,t));t._routePreloaded.add(n);const o=r.map(i=>{var l;return(l=i.components)==null?void 0:l.default}).filter(i=>typeof i=="function");for(const i of o){const l=Promise.resolve(i()).catch(()=>{}).finally(()=>s.splice(s.indexOf(l)));s.push(l)}await Promise.all(s)}const Jh=(...e)=>e.find(t=>t!==void 0);function Xh(e){const t=e.componentName||"NuxtLink";function n(s,o){if(!s||e.trailingSlash!=="append"&&e.trailingSlash!=="remove")return s;if(typeof s=="string")return di(s,e.trailingSlash);const i="path"in s&&s.path!==void 0?s.path:o(s).path;return{...s,name:void 0,path:di(i,e.trailingSlash)}}function r(s){const o=Ze(),i=Wt(),l=he(()=>!!s.target&&s.target!=="_self"),a=he(()=>{const _=s.to||s.href||"";return typeof _=="string"&>(_,{acceptRelative:!0})}),f=_o("RouterLink"),u=f&&typeof f!="string"?f.useLink:void 0,c=he(()=>{if(s.external)return!0;const _=s.to||s.href||"";return typeof _=="object"?!1:_===""||a.value}),d=he(()=>{const _=s.to||s.href||"";return c.value?_:n(_,o.resolve)}),p=c.value||u==null?void 0:u({...s,to:d}),m=he(()=>{var _;if(!d.value||a.value)return d.value;if(c.value){const A=typeof d.value=="object"&&"path"in d.value?is(d.value):d.value,P=typeof A=="object"?o.resolve(A).href:A;return n(P,o.resolve)}return typeof d.value=="object"?((_=o.resolve(d.value))==null?void 0:_.href)??null:n(gn(i.app.baseURL,d.value),o.resolve)});return{to:d,hasTarget:l,isAbsoluteUrl:a,isExternal:c,href:m,isActive:(p==null?void 0:p.isActive)??he(()=>d.value===o.currentRoute.value.path),isExactActive:(p==null?void 0:p.isExactActive)??he(()=>d.value===o.currentRoute.value.path),route:(p==null?void 0:p.route)??he(()=>o.resolve(d.value)),async navigate(){await ia(m.value,{replace:s.replace,external:c.value||l.value})}}}return Ue({name:t,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},useLink:r,setup(s,{slots:o}){const i=Ze(),{to:l,href:a,navigate:f,isExternal:u,hasTarget:c,isAbsoluteUrl:d}=r(s),p=le(!1),m=le(null),_=A=>{var P;m.value=s.custom?(P=A==null?void 0:A.$el)==null?void 0:P.nextElementSibling:A==null?void 0:A.$el};if(s.prefetch!==!1&&s.noPrefetch!==!0&&s.target!=="_blank"&&!Qh()){const P=ge();let H,y=null;dn(()=>{const S=Yh();mr(()=>{H=us(()=>{var T;(T=m==null?void 0:m.value)!=null&&T.tagName&&(y=S.observe(m.value,async()=>{y==null||y(),y=null;const w=typeof l.value=="string"?l.value:u.value?is(l.value):i.resolve(l.value).fullPath;await Promise.all([P.hooks.callHook("link:prefetch",w).catch(()=>{}),!u.value&&!c.value&&Ea(l.value,i).catch(()=>{})]),p.value=!0}))})})}),ur(()=>{H&&Fh(H),y==null||y(),y=null})}return()=>{var H;if(!u.value&&!c.value){const y={ref:_,to:l.value,activeClass:s.activeClass||e.activeClass,exactActiveClass:s.exactActiveClass||e.exactActiveClass,replace:s.replace,ariaCurrentValue:s.ariaCurrentValue,custom:s.custom};return s.custom||(p.value&&(y.class=s.prefetchedClass||e.prefetchedClass),y.rel=s.rel||void 0),ln(_o("RouterLink"),y,o.default)}const A=s.target||null,P=Jh(s.noRel?"":s.rel,e.externalRelAttribute,d.value||c.value?"noopener noreferrer":"")||null;return s.custom?o.default?o.default({href:a.value,navigate:f,get route(){if(!a.value)return;const y=new URL(a.value,window.location.href);return{path:y.pathname,fullPath:y.pathname,get query(){return js(y.search)},hash:y.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:a.value}},rel:P,target:A,isExternal:u.value||c.value,isActive:!1,isExactActive:!1}):null:ln("a",{ref:m,href:a.value||null,rel:P,target:A},(H=o.default)==null?void 0:H.call(o))}}})}const Ta=Xh(dd);function di(e,t){const n=t==="append"?Jn:hr;return gt(e)&&!e.startsWith("http")?e:n(e,!0)}function Yh(){const e=ge();if(e._observer)return e._observer;let t=null;const n=new Map,r=(o,i)=>(t||(t=new IntersectionObserver(l=>{for(const a of l){const f=n.get(a.target);(a.isIntersecting||a.intersectionRatio>0)&&f&&f()}})),n.set(o,i),t.observe(o),()=>{n.delete(o),t.unobserve(o),n.size===0&&(t.disconnect(),t=null)});return e._observer={observe:r}}function Qh(){const e=navigator.connection;return!!(e&&(e.saveData||/2g/.test(e.effectiveType)))}const Gs=pr("/logo.svg"),ep=pr("/github.svg");let tp=Symbol("headlessui.useid"),np=0;function Zs(){return Ye(tp,()=>`${++np}`)()}function ue(e){var t;if(e==null||e.value==null)return null;let n=(t=e.value.$el)!=null?t:e.value;return n instanceof Node?n:null}function yr(e,t,...n){if(e in t){let s=t[e];return typeof s=="function"?s(...n):s}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map(s=>`"${s}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,yr),r}var rp=Object.defineProperty,sp=(e,t,n)=>t in e?rp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,hi=(e,t,n)=>(sp(e,typeof t!="symbol"?t+"":t,n),n);let op=class{constructor(){hi(this,"current",this.detect()),hi(this,"currentId",0)}set(t){this.current!==t&&(this.currentId=0,this.current=t)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current==="server"}get isClient(){return this.current==="client"}detect(){return typeof window>"u"||typeof document>"u"?"server":"client"}},zs=new op;function Js(e){if(zs.isServer)return null;if(e instanceof Node)return e.ownerDocument;if(e!=null&&e.hasOwnProperty("value")){let t=ue(e);if(t)return t.ownerDocument}return document}let fs=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var ds=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(ds||{}),ip=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(ip||{}),lp=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(lp||{});function Sa(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(fs)).sort((t,n)=>Math.sign((t.tabIndex||Number.MAX_SAFE_INTEGER)-(n.tabIndex||Number.MAX_SAFE_INTEGER)))}var Xs=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(Xs||{});function Ys(e,t=0){var n;return e===((n=Js(e))==null?void 0:n.body)?!1:yr(t,{0(){return e.matches(fs)},1(){let r=e;for(;r!==null;){if(r.matches(fs))return!0;r=r.parentElement}return!1}})}function Ca(e){let t=Js(e);Ge(()=>{t&&!Ys(t.activeElement,0)&&cp(e)})}var ap=(e=>(e[e.Keyboard=0]="Keyboard",e[e.Mouse=1]="Mouse",e))(ap||{});typeof window<"u"&&typeof document<"u"&&(document.addEventListener("keydown",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));function cp(e){e==null||e.focus({preventScroll:!0})}let up=["textarea","input"].join(",");function fp(e){var t,n;return(n=(t=e==null?void 0:e.matches)==null?void 0:t.call(e,up))!=null?n:!1}function Aa(e,t=n=>n){return e.slice().sort((n,r)=>{let s=t(n),o=t(r);if(s===null||o===null)return 0;let i=s.compareDocumentPosition(o);return i&Node.DOCUMENT_POSITION_FOLLOWING?-1:i&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function dp(e,t){return hp(Sa(),t,{relativeTo:e})}function hp(e,t,{sorted:n=!0,relativeTo:r=null,skipElements:s=[]}={}){var o;let i=(o=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e==null?void 0:e.ownerDocument)!=null?o:document,l=Array.isArray(e)?n?Aa(e):e:Sa(e);s.length>0&&l.length>1&&(l=l.filter(m=>!s.includes(m))),r=r??i.activeElement;let a=(()=>{if(t&5)return 1;if(t&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),f=(()=>{if(t&1)return 0;if(t&2)return Math.max(0,l.indexOf(r))-1;if(t&4)return Math.max(0,l.indexOf(r))+1;if(t&8)return l.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),u=t&32?{preventScroll:!0}:{},c=0,d=l.length,p;do{if(c>=d||c+d<=0)return 0;let m=f+c;if(t&16)m=(m+d)%d;else{if(m<0)return 3;if(m>=d)return 1}p=l[m],p==null||p.focus(u),c+=a}while(p!==i.activeElement);return t&6&&fp(p)&&p.select(),2}function pp(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function gp(){return/Android/gi.test(window.navigator.userAgent)}function mp(){return pp()||gp()}function Pn(e,t,n){zs.isServer||qt(r=>{document.addEventListener(e,t,n),r(()=>document.removeEventListener(e,t,n))})}function yp(e,t,n){zs.isServer||qt(r=>{window.addEventListener(e,t,n),r(()=>window.removeEventListener(e,t,n))})}function _p(e,t,n=he(()=>!0)){function r(o,i){if(!n.value||o.defaultPrevented)return;let l=i(o);if(l===null||!l.getRootNode().contains(l))return;let a=function f(u){return typeof u=="function"?f(u()):Array.isArray(u)||u instanceof Set?u:[u]}(e);for(let f of a){if(f===null)continue;let u=f instanceof HTMLElement?f:ue(f);if(u!=null&&u.contains(l)||o.composed&&o.composedPath().includes(u))return}return!Ys(l,Xs.Loose)&&l.tabIndex!==-1&&o.preventDefault(),t(o,l)}let s=le(null);Pn("pointerdown",o=>{var i,l;n.value&&(s.value=((l=(i=o.composedPath)==null?void 0:i.call(o))==null?void 0:l[0])||o.target)},!0),Pn("mousedown",o=>{var i,l;n.value&&(s.value=((l=(i=o.composedPath)==null?void 0:i.call(o))==null?void 0:l[0])||o.target)},!0),Pn("click",o=>{mp()||s.value&&(r(o,()=>s.value),s.value=null)},!0),Pn("touchend",o=>r(o,()=>o.target instanceof HTMLElement?o.target:null),!0),yp("blur",o=>r(o,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}function pi(e,t){if(e)return e;let n=t??"button";if(typeof n=="string"&&n.toLowerCase()==="button")return"button"}function vp(e,t){let n=le(pi(e.value.type,e.value.as));return dn(()=>{n.value=pi(e.value.type,e.value.as)}),qt(()=>{var r;n.value||ue(t)&&ue(t)instanceof HTMLButtonElement&&!((r=ue(t))!=null&&r.hasAttribute("type"))&&(n.value="button")}),n}function gi(e){return[e.screenX,e.screenY]}function bp(){let e=le([-1,-1]);return{wasMoved(t){let n=gi(t);return e.value[0]===n[0]&&e.value[1]===n[1]?!1:(e.value=n,!0)},update(t){e.value=gi(t)}}}function wp({container:e,accept:t,walk:n,enabled:r}){qt(()=>{let s=e.value;if(!s||r!==void 0&&!r.value)return;let o=Js(e);if(!o)return;let i=Object.assign(a=>t(a),{acceptNode:t}),l=o.createTreeWalker(s,NodeFilter.SHOW_ELEMENT,i,!1);for(;l.nextNode();)n(l.currentNode)})}var hs=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(hs||{}),xp=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(xp||{});function _r({visible:e=!0,features:t=0,ourProps:n,theirProps:r,...s}){var o;let i=Pa(r,n),l=Object.assign(s,{props:i});if(e||t&2&&i.static)return Fr(l);if(t&1){let a=(o=i.unmount)==null||o?0:1;return yr(a,{0(){return null},1(){return Fr({...s,props:{...i,hidden:!0,style:{display:"none"}}})}})}return Fr(l)}function Fr({props:e,attrs:t,slots:n,slot:r,name:s}){var o,i;let{as:l,...a}=Ep(e,["unmount","static"]),f=(o=n.default)==null?void 0:o.call(n,r),u={};if(r){let c=!1,d=[];for(let[p,m]of Object.entries(r))typeof m=="boolean"&&(c=!0),m===!0&&d.push(p);c&&(u["data-headlessui-state"]=d.join(" "))}if(l==="template"){if(f=Ra(f??[]),Object.keys(a).length>0||Object.keys(t).length>0){let[c,...d]=f??[];if(!Tp(c)||d.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${s} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(a).concat(Object.keys(t)).map(_=>_.trim()).filter((_,A,P)=>P.indexOf(_)===A).sort((_,A)=>_.localeCompare(A)).map(_=>` - ${_}`).join(` -`),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map(_=>` - ${_}`).join(` -`)].join(` -`));let p=Pa((i=c.props)!=null?i:{},a,u),m=Qe(c,p,!0);for(let _ in p)_.startsWith("on")&&(m.props||(m.props={}),m.props[_]=p[_]);return m}return Array.isArray(f)&&f.length===1?f[0]:f}return ln(l,Object.assign({},a,u),{default:()=>f})}function Ra(e){return e.flatMap(t=>t.type===ye?Ra(t.children):[t])}function Pa(...e){if(e.length===0)return{};if(e.length===1)return e[0];let t={},n={};for(let r of e)for(let s in r)s.startsWith("on")&&typeof r[s]=="function"?(n[s]!=null||(n[s]=[]),n[s].push(r[s])):t[s]=r[s];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map(r=>[r,void 0])));for(let r in n)Object.assign(t,{[r](s,...o){let i=n[r];for(let l of i){if(s instanceof Event&&s.defaultPrevented)return;l(s,...o)}}});return t}function Ep(e,t=[]){let n=Object.assign({},e);for(let r of t)r in n&&delete n[r];return n}function Tp(e){return e==null?!1:typeof e.type=="string"||typeof e.type=="object"||typeof e.type=="function"}let ka=Symbol("Context");var cn=(e=>(e[e.Open=1]="Open",e[e.Closed=2]="Closed",e[e.Closing=4]="Closing",e[e.Opening=8]="Opening",e))(cn||{});function Sp(){return Ye(ka,null)}function Cp(e){fr(ka,e)}var be=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(be||{});function Ap(e){throw new Error("Unexpected object: "+e)}var Oe=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))(Oe||{});function Rp(e,t){let n=t.resolveItems();if(n.length<=0)return null;let r=t.resolveActiveIndex(),s=r??-1;switch(e.focus){case 0:{for(let o=0;o=0;--o)if(!t.resolveDisabled(n[o],o,n))return o;return r}case 2:{for(let o=s+1;o=0;--o)if(!t.resolveDisabled(n[o],o,n))return o;return r}case 4:{for(let o=0;o{let o=document.getElementById(s);if(o){let i=o.getAttribute("aria-label");return typeof i=="string"?i.trim():yi(o).trim()}return null}).filter(Boolean);if(r.length>0)return r.join(", ")}return yi(e).trim()}function kp(e){let t=le(""),n=le("");return()=>{let r=ue(e);if(!r)return"";let s=r.innerText;if(t.value===s)return n.value;let o=Pp(r).trim().toLowerCase();return t.value=s,n.value=o,o}}var Ip=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(Ip||{}),Mp=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(Mp||{});function Op(e){requestAnimationFrame(()=>requestAnimationFrame(e))}let Ia=Symbol("MenuContext");function vr(e){let t=Ye(Ia,null);if(t===null){let n=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,vr),n}return t}let ps=Ue({name:"Menu",props:{as:{type:[Object,String],default:"template"}},setup(e,{slots:t,attrs:n}){let r=le(1),s=le(null),o=le(null),i=le([]),l=le(""),a=le(null),f=le(1);function u(d=p=>p){let p=a.value!==null?i.value[a.value]:null,m=Aa(d(i.value.slice()),A=>ue(A.dataRef.domRef)),_=p?m.indexOf(p):null;return _===-1&&(_=null),{items:m,activeItemIndex:_}}let c={menuState:r,buttonRef:s,itemsRef:o,items:i,searchQuery:l,activeItemIndex:a,activationTrigger:f,closeMenu:()=>{r.value=1,a.value=null},openMenu:()=>r.value=0,goToItem(d,p,m){let _=u(),A=Rp(d===Oe.Specific?{focus:Oe.Specific,id:p}:{focus:d},{resolveItems:()=>_.items,resolveActiveIndex:()=>_.activeItemIndex,resolveId:P=>P.id,resolveDisabled:P=>P.dataRef.disabled});l.value="",a.value=A,f.value=m??1,i.value=_.items},search(d){let p=l.value!==""?0:1;l.value+=d.toLowerCase();let m=(a.value!==null?i.value.slice(a.value+p).concat(i.value.slice(0,a.value+p)):i.value).find(A=>A.dataRef.textValue.startsWith(l.value)&&!A.dataRef.disabled),_=m?i.value.indexOf(m):-1;_===-1||_===a.value||(a.value=_,f.value=1)},clearSearch(){l.value=""},registerItem(d,p){let m=u(_=>[..._,{id:d,dataRef:p}]);i.value=m.items,a.value=m.activeItemIndex,f.value=1},unregisterItem(d){let p=u(m=>{let _=m.findIndex(A=>A.id===d);return _!==-1&&m.splice(_,1),m});i.value=p.items,a.value=p.activeItemIndex,f.value=1}};return _p([s,o],(d,p)=>{var m;c.closeMenu(),Ys(p,Xs.Loose)||(d.preventDefault(),(m=ue(s))==null||m.focus())},he(()=>r.value===0)),fr(Ia,c),Cp(he(()=>yr(r.value,{0:cn.Open,1:cn.Closed}))),()=>{let d={open:r.value===0,close:c.closeMenu};return _r({ourProps:{},theirProps:e,slot:d,slots:t,attrs:n,name:"Menu"})}}}),gs=Ue({name:"MenuButton",props:{disabled:{type:Boolean,default:!1},as:{type:[Object,String],default:"button"},id:{type:String,default:null}},setup(e,{attrs:t,slots:n,expose:r}){var s;let o=(s=e.id)!=null?s:`headlessui-menu-button-${Zs()}`,i=vr("MenuButton");r({el:i.buttonRef,$el:i.buttonRef});function l(c){switch(c.key){case be.Space:case be.Enter:case be.ArrowDown:c.preventDefault(),c.stopPropagation(),i.openMenu(),Ge(()=>{var d;(d=ue(i.itemsRef))==null||d.focus({preventScroll:!0}),i.goToItem(Oe.First)});break;case be.ArrowUp:c.preventDefault(),c.stopPropagation(),i.openMenu(),Ge(()=>{var d;(d=ue(i.itemsRef))==null||d.focus({preventScroll:!0}),i.goToItem(Oe.Last)});break}}function a(c){switch(c.key){case be.Space:c.preventDefault();break}}function f(c){e.disabled||(i.menuState.value===0?(i.closeMenu(),Ge(()=>{var d;return(d=ue(i.buttonRef))==null?void 0:d.focus({preventScroll:!0})})):(c.preventDefault(),i.openMenu(),Op(()=>{var d;return(d=ue(i.itemsRef))==null?void 0:d.focus({preventScroll:!0})})))}let u=vp(he(()=>({as:e.as,type:t.type})),i.buttonRef);return()=>{var c;let d={open:i.menuState.value===0},{...p}=e,m={ref:i.buttonRef,id:o,type:u.value,"aria-haspopup":"menu","aria-controls":(c=ue(i.itemsRef))==null?void 0:c.id,"aria-expanded":i.menuState.value===0,onKeydown:l,onKeyup:a,onClick:f};return _r({ourProps:m,theirProps:p,slot:d,attrs:t,slots:n,name:"MenuButton"})}}}),_i=Ue({name:"MenuItems",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:null}},setup(e,{attrs:t,slots:n,expose:r}){var s;let o=(s=e.id)!=null?s:`headlessui-menu-items-${Zs()}`,i=vr("MenuItems"),l=le(null);r({el:i.itemsRef,$el:i.itemsRef}),wp({container:he(()=>ue(i.itemsRef)),enabled:he(()=>i.menuState.value===0),accept(d){return d.getAttribute("role")==="menuitem"?NodeFilter.FILTER_REJECT:d.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk(d){d.setAttribute("role","none")}});function a(d){var p;switch(l.value&&clearTimeout(l.value),d.key){case be.Space:if(i.searchQuery.value!=="")return d.preventDefault(),d.stopPropagation(),i.search(d.key);case be.Enter:if(d.preventDefault(),d.stopPropagation(),i.activeItemIndex.value!==null){let m=i.items.value[i.activeItemIndex.value];(p=ue(m.dataRef.domRef))==null||p.click()}i.closeMenu(),Ca(ue(i.buttonRef));break;case be.ArrowDown:return d.preventDefault(),d.stopPropagation(),i.goToItem(Oe.Next);case be.ArrowUp:return d.preventDefault(),d.stopPropagation(),i.goToItem(Oe.Previous);case be.Home:case be.PageUp:return d.preventDefault(),d.stopPropagation(),i.goToItem(Oe.First);case be.End:case be.PageDown:return d.preventDefault(),d.stopPropagation(),i.goToItem(Oe.Last);case be.Escape:d.preventDefault(),d.stopPropagation(),i.closeMenu(),Ge(()=>{var m;return(m=ue(i.buttonRef))==null?void 0:m.focus({preventScroll:!0})});break;case be.Tab:d.preventDefault(),d.stopPropagation(),i.closeMenu(),Ge(()=>dp(ue(i.buttonRef),d.shiftKey?ds.Previous:ds.Next));break;default:d.key.length===1&&(i.search(d.key),l.value=setTimeout(()=>i.clearSearch(),350));break}}function f(d){switch(d.key){case be.Space:d.preventDefault();break}}let u=Sp(),c=he(()=>u!==null?(u.value&cn.Open)===cn.Open:i.menuState.value===0);return()=>{var d,p;let m={open:i.menuState.value===0},{..._}=e,A={"aria-activedescendant":i.activeItemIndex.value===null||(d=i.items.value[i.activeItemIndex.value])==null?void 0:d.id,"aria-labelledby":(p=ue(i.buttonRef))==null?void 0:p.id,id:o,onKeydown:a,onKeyup:f,role:"menu",tabIndex:0,ref:i.itemsRef};return _r({ourProps:A,theirProps:_,slot:m,attrs:t,slots:n,features:hs.RenderStrategy|hs.Static,visible:c.value,name:"MenuItems"})}}}),vi=Ue({name:"MenuItem",inheritAttrs:!1,props:{as:{type:[Object,String],default:"template"},disabled:{type:Boolean,default:!1},id:{type:String,default:null}},setup(e,{slots:t,attrs:n,expose:r}){var s;let o=(s=e.id)!=null?s:`headlessui-menu-item-${Zs()}`,i=vr("MenuItem"),l=le(null);r({el:l,$el:l});let a=he(()=>i.activeItemIndex.value!==null?i.items.value[i.activeItemIndex.value].id===o:!1),f=kp(l),u=he(()=>({disabled:e.disabled,get textValue(){return f()},domRef:l}));dn(()=>i.registerItem(o,u)),Rs(()=>i.unregisterItem(o)),qt(()=>{i.menuState.value===0&&a.value&&i.activationTrigger.value!==0&&Ge(()=>{var P,H;return(H=(P=ue(l))==null?void 0:P.scrollIntoView)==null?void 0:H.call(P,{block:"nearest"})})});function c(P){if(e.disabled)return P.preventDefault();i.closeMenu(),Ca(ue(i.buttonRef))}function d(){if(e.disabled)return i.goToItem(Oe.Nothing);i.goToItem(Oe.Specific,o)}let p=bp();function m(P){p.update(P)}function _(P){p.wasMoved(P)&&(e.disabled||a.value||i.goToItem(Oe.Specific,o,0))}function A(P){p.wasMoved(P)&&(e.disabled||a.value&&i.goToItem(Oe.Nothing))}return()=>{let{disabled:P}=e,H={active:a.value,disabled:P,close:i.closeMenu},{...y}=e;return _r({ourProps:{id:o,ref:l,role:"menuitem",tabIndex:P===!0?void 0:-1,"aria-disabled":P===!0?!0:void 0,disabled:void 0,onClick:c,onFocus:d,onPointerenter:m,onMouseenter:m,onPointermove:_,onMousemove:_,onPointerleave:A,onMouseleave:A},theirProps:{...n,...y},slot:H,attrs:n,slots:t,name:"MenuItem"})}}});function $p(e,t){return re(),fe("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{"fill-rule":"evenodd",d:"M2 4.75A.75.75 0 0 1 2.75 4h14.5a.75.75 0 0 1 0 1.5H2.75A.75.75 0 0 1 2 4.75ZM2 10a.75.75 0 0 1 .75-.75h14.5a.75.75 0 0 1 0 1.5H2.75A.75.75 0 0 1 2 10Zm0 5.25a.75.75 0 0 1 .75-.75h14.5a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1-.75-.75Z","clip-rule":"evenodd"})])}function Hp(e,t){return re(),fe("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{d:"M10.75 16.82A7.462 7.462 0 0 1 15 15.5c.71 0 1.396.098 2.046.282A.75.75 0 0 0 18 15.06v-11a.75.75 0 0 0-.546-.721A9.006 9.006 0 0 0 15 3a8.963 8.963 0 0 0-4.25 1.065V16.82ZM9.25 4.065A8.963 8.963 0 0 0 5 3c-.85 0-1.673.118-2.454.339A.75.75 0 0 0 2 4.06v11a.75.75 0 0 0 .954.721A7.506 7.506 0 0 1 5 15.5c1.579 0 3.042.487 4.25 1.32V4.065Z"})])}function Lp(e,t){return re(),fe("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{"fill-rule":"evenodd",d:"M16.403 12.652a3 3 0 0 0 0-5.304 3 3 0 0 0-3.75-3.751 3 3 0 0 0-5.305 0 3 3 0 0 0-3.751 3.75 3 3 0 0 0 0 5.305 3 3 0 0 0 3.75 3.751 3 3 0 0 0 5.305 0 3 3 0 0 0 3.751-3.75Zm-2.546-4.46a.75.75 0 0 0-1.214-.883l-3.483 4.79-1.88-1.88a.75.75 0 1 0-1.06 1.061l2.5 2.5a.75.75 0 0 0 1.137-.089l4-5.5Z","clip-rule":"evenodd"})])}function Np(e,t){return re(),fe("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{"fill-rule":"evenodd",d:"M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z","clip-rule":"evenodd"})])}function jp(e,t){return re(),fe("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{d:"M14 6H6v8h8V6Z"}),N("path",{"fill-rule":"evenodd",d:"M9.25 3V1.75a.75.75 0 0 1 1.5 0V3h1.5V1.75a.75.75 0 0 1 1.5 0V3h.5A2.75 2.75 0 0 1 17 5.75v.5h1.25a.75.75 0 0 1 0 1.5H17v1.5h1.25a.75.75 0 0 1 0 1.5H17v1.5h1.25a.75.75 0 0 1 0 1.5H17v.5A2.75 2.75 0 0 1 14.25 17h-.5v1.25a.75.75 0 0 1-1.5 0V17h-1.5v1.25a.75.75 0 0 1-1.5 0V17h-1.5v1.25a.75.75 0 0 1-1.5 0V17h-.5A2.75 2.75 0 0 1 3 14.25v-.5H1.75a.75.75 0 0 1 0-1.5H3v-1.5H1.75a.75.75 0 0 1 0-1.5H3v-1.5H1.75a.75.75 0 0 1 0-1.5H3v-.5A2.75 2.75 0 0 1 5.75 3h.5V1.75a.75.75 0 0 1 1.5 0V3h1.5ZM4.5 5.75c0-.69.56-1.25 1.25-1.25h8.5c.69 0 1.25.56 1.25 1.25v8.5c0 .69-.56 1.25-1.25 1.25h-8.5c-.69 0-1.25-.56-1.25-1.25v-8.5Z","clip-rule":"evenodd"})])}function Fp(e,t){return re(),fe("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{d:"M12 4.467c0-.405.262-.75.559-1.027.276-.257.441-.584.441-.94 0-.828-.895-1.5-2-1.5s-2 .672-2 1.5c0 .362.171.694.456.953.29.265.544.6.544.994a.968.968 0 0 1-1.024.974 39.655 39.655 0 0 1-3.014-.306.75.75 0 0 0-.847.847c.14.993.242 1.999.306 3.014A.968.968 0 0 1 4.447 10c-.393 0-.729-.253-.994-.544C3.194 9.17 2.862 9 2.5 9 1.672 9 1 9.895 1 11s.672 2 1.5 2c.356 0 .683-.165.94-.441.276-.297.622-.559 1.027-.559a.997.997 0 0 1 1.004 1.03 39.747 39.747 0 0 1-.319 3.734.75.75 0 0 0 .64.842c1.05.146 2.111.252 3.184.318A.97.97 0 0 0 10 16.948c0-.394-.254-.73-.545-.995C9.171 15.693 9 15.362 9 15c0-.828.895-1.5 2-1.5s2 .672 2 1.5c0 .356-.165.683-.441.94-.297.276-.559.622-.559 1.027a.998.998 0 0 0 1.03 1.005c1.337-.05 2.659-.162 3.961-.337a.75.75 0 0 0 .644-.644c.175-1.302.288-2.624.337-3.961A.998.998 0 0 0 16.967 12c-.405 0-.75.262-1.027.559-.257.276-.584.441-.94.441-.828 0-1.5-.895-1.5-2s.672-2 1.5-2c.362 0 .694.17.953.455.265.291.601.545.995.545a.97.97 0 0 0 .976-1.024 41.159 41.159 0 0 0-.318-3.184.75.75 0 0 0-.842-.64c-1.228.164-2.473.271-3.734.319A.997.997 0 0 1 12 4.467Z"})])}function Dp(e,t){return re(),fe("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{d:"M4.464 3.162A2 2 0 0 1 6.28 2h7.44a2 2 0 0 1 1.816 1.162l1.154 2.5c.067.145.115.291.145.438A3.508 3.508 0 0 0 16 6H4c-.288 0-.568.035-.835.1.03-.147.078-.293.145-.438l1.154-2.5Z"}),N("path",{"fill-rule":"evenodd",d:"M2 9.5a2 2 0 0 1 2-2h12a2 2 0 1 1 0 4H4a2 2 0 0 1-2-2Zm13.24 0a.75.75 0 0 1 .75-.75H16a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75h-.01a.75.75 0 0 1-.75-.75V9.5Zm-2.25-.75a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75H13a.75.75 0 0 0 .75-.75V9.5a.75.75 0 0 0-.75-.75h-.01ZM2 15a2 2 0 0 1 2-2h12a2 2 0 1 1 0 4H4a2 2 0 0 1-2-2Zm13.24 0a.75.75 0 0 1 .75-.75H16a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75h-.01a.75.75 0 0 1-.75-.75V15Zm-2.25-.75a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75H13a.75.75 0 0 0 .75-.75V15a.75.75 0 0 0-.75-.75h-.01Z","clip-rule":"evenodd"})])}function Up(e,t){return re(),fe("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{"fill-rule":"evenodd",d:"M14.5 10a4.5 4.5 0 0 0 4.284-5.882c-.105-.324-.51-.391-.752-.15L15.34 6.66a.454.454 0 0 1-.493.11 3.01 3.01 0 0 1-1.618-1.616.455.455 0 0 1 .11-.494l2.694-2.692c.24-.241.174-.647-.15-.752a4.5 4.5 0 0 0-5.873 4.575c.055.873-.128 1.808-.8 2.368l-7.23 6.024a2.724 2.724 0 1 0 3.837 3.837l6.024-7.23c.56-.672 1.495-.855 2.368-.8.096.007.193.01.291.01ZM5 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z","clip-rule":"evenodd"}),N("path",{d:"M14.5 11.5c.173 0 .345-.007.514-.022l3.754 3.754a2.5 2.5 0 0 1-3.536 3.536l-4.41-4.41 2.172-2.607c.052-.063.147-.138.342-.196.202-.06.469-.087.777-.067.128.008.257.012.387.012ZM6 4.586l2.33 2.33a.452.452 0 0 1-.08.09L6.8 8.214 4.586 6H3.309a.5.5 0 0 1-.447-.276l-1.7-3.402a.5.5 0 0 1 .093-.577l.49-.49a.5.5 0 0 1 .577-.094l3.402 1.7A.5.5 0 0 1 6 3.31v1.277Z"})])}const Bp={class:"relative z-50 mx-auto flex max-w-7xl justify-between px-4 py-4 sm:px-6 lg:px-8"},Vp={class:"relative z-10 flex items-center gap-16"},Wp=N("img",{src:Gs,class:"h-12 w-10 object-contain",alt:"SecHub Logo"},null,-1),Kp={class:"hidden items-center lg:flex lg:gap-10"},qp={class:"flex items-center gap-6"},Gp={class:"lg:hidden"},Zp={class:"flex items-center"},zp={class:"lg:hidden"},Jp={class:"flex items-center"},Xp=N("span",{class:"sr-only"},"Open main menu",-1),Yp=N("a",{href:"https://github.com/mercedes-benz/sechub",target:"_blank"},[N("img",{src:ep,class:"size-6 object-contain",alt:"GitHub Logo"})],-1),Qp=Ue({__name:"Header",setup(e){const t="/sechub",n=[{title:"Getting Started",href:"https://mercedes-benz.github.io/sechub/latest/sechub-getting-started.html"},{title:"Client",href:"https://mercedes-benz.github.io/sechub/latest/sechub-client.html"},{title:"Rest API",href:"https://mercedes-benz.github.io/sechub/latest/sechub-restapi.html"},{title:"Product Delegation Server (PDS)",href:"https://mercedes-benz.github.io/sechub/latest/sechub-product-delegation-server.html"},{title:"Operations",href:"https://mercedes-benz.github.io/sechub/latest/sechub-operations.html"},{title:"Developer - Quickstart Guide",href:"https://mercedes-benz.github.io/sechub/latest/sechub-developer-quickstart-guide.html"},{title:"Developer - Architecture",href:"https://mercedes-benz.github.io/sechub/latest/sechub-architecture.html"},{title:"Developer - Technical",href:"https://mercedes-benz.github.io/sechub/latest/sechub-techdoc.html"}],r=[{title:"Documentation",href:"https://mercedes-benz.github.io/sechub/index-old.html"},{title:"Downloads",href:"#download"},{title:"Collaboration",href:"https://github.com/mercedes-benz/sechub/blob/develop/CONTRIBUTING.md"}];return(s,o)=>{const i=Ta;return re(),fe("header",null,[N("nav",null,[N("div",Bp,[N("div",Vp,[Z(i,{"aria-label":"Home",to:`${Q(t)}/`},{default:de(()=>[Wp]),_:1},8,["to"]),N("div",Kp,[(re(),fe(ye,null,In(r,l=>Z(i,{key:l.title,to:l.href,class:"menu-item",target:l.href.startsWith("https")?"_blank":void 0},{default:de(()=>[Me(St(l.title),1)]),_:2},1032,["to","target"])),64))])]),N("div",qp,[N("div",Gp,[Z(Q(ps),{as:"div",class:"relative"},{default:de(()=>[N("div",Zp,[Z(Q(gs),{class:"menu-item flex"},{default:de(()=>[Me(" Docs "),Z(Q(Np),{class:"ml-1 h-5 w-5","aria-hidden":"true"})]),_:1})]),Z(Gn,{"enter-active-class":"transition duration-100 ease-out","enter-from-class":"transform scale-95 opacity-0","enter-to-class":"transform scale-100 opacity-100","leave-active-class":"transition duration-75 ease-in","leave-from-class":"transform scale-100 opacity-100","leave-to-class":"transform scale-95 opacity-0"},{default:de(()=>[Z(Q(_i),{class:"absolute right-0 mt-2 w-56 origin-top-right divide-y divide-gray-100 rounded-md bg-white shadow-lg ring-1 ring-black/5 focus:outline-none"},{default:de(()=>[(re(),fe(ye,null,In(n,l=>Z(Q(vi),{key:l.title},{default:de(()=>[Z(i,{to:l.href,target:"_blank",class:"group flex w-full items-center rounded-md px-2 py-2 text-sm text-gray-700 transition-colors duration-300 hover:bg-fern-500 hover:text-white"},{default:de(()=>[Me(St(l.title),1)]),_:2},1032,["to"])]),_:2},1024)),64))]),_:1})]),_:1})]),_:1})]),N("div",zp,[Z(Q(ps),{as:"div",class:"relative"},{default:de(()=>[N("div",Jp,[Z(Q(gs),null,{default:de(()=>[Xp,Z(Q($p),{class:"size-6"})]),_:1})]),Z(Gn,{"enter-active-class":"transition duration-100 ease-out","enter-from-class":"transform scale-95 opacity-0","enter-to-class":"transform scale-100 opacity-100","leave-active-class":"transition duration-75 ease-in","leave-from-class":"transform scale-100 opacity-100","leave-to-class":"transform scale-95 opacity-0"},{default:de(()=>[Z(Q(_i),{class:"absolute right-0 mt-2 w-56 origin-top-right divide-y divide-gray-100 rounded-md bg-white shadow-lg ring-1 ring-black/5 focus:outline-none"},{default:de(()=>[(re(),fe(ye,null,In(r,l=>Z(Q(vi),{key:l.title},{default:de(()=>[Z(i,{to:l.href,class:"group flex w-full items-center rounded-md px-2 py-2 text-sm text-gray-700 transition-colors duration-300 hover:bg-fern-500 hover:text-white",target:l.href.startsWith("https")?"_blank":void 0},{default:de(()=>[Me(St(l.title),1)]),_:2},1032,["to","target"])]),_:2},1024)),64))]),_:1})]),_:1})]),_:1})]),Yp])])])])}}}),Qs=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},eg={},tg={class:"absolute left-1/2 top-4 h-[1026px] w-[1026px] -translate-x-1/3 stroke-gray-300/70 [mask-image:linear-gradient(to_bottom,white_20%,transparent_75%)] sm:top-16 sm:-translate-x-1/2 lg:-top-16 lg:ml-12 xl:-top-14 xl:ml-0"},ng=Os('',2),rg=[ng];function sg(e,t){return re(),fe("div",tg,rg)}const og=Qs(eg,[["render",sg]]),ig={class:"overflow-hidden pt-16 lg:pb-32 xl:pb-36"},lg={class:"container"},ag={class:"lg:grid lg:grid-cols-12 lg:gap-x-8 lg:gap-y-0"},cg=N("div",{class:"relative z-10 mx-auto max-w-2xl lg:col-span-7 lg:max-w-none lg:pt-6 xl:col-span-6"},[N("h1",{class:"text-4xl font-medium tracking-tight text-gray-900"},"SecHub - One API to secure them all"),N("p",{class:"mt-6 text-lg text-gray-600"}," The free and open-source security platform SecHub, provides a central API to test software with different security tools. "),N("p",{class:"mt-6 text-lg text-gray-600"}," SecHub supports many free and open-source as well as proprietary security tools covering SAST (Static Application Security Testing), DAST (Dynamic Application Security Testing), Secret scanners, Infrastructure scanners, License scanners and more… ")],-1),ug={class:"relative mt-10 sm:mt-20 lg:col-span-5 lg:row-span-2 lg:mt-0 xl:col-span-6"},fg=N("div",{class:"pb-10 [mask-image:linear-gradient(to_bottom,white_60%,transparent)] sm:mx-0 lg:absolute lg:-inset-x-10 lg:-bottom-20 lg:-top-10 lg:h-auto lg:px-0 lg:pt-10 xl:-bottom-32"},[N("div",{class:"relative mx-auto max-w-64 lg:max-w-80"},[N("img",{src:Gs,alt:"SecHub Logo"})])],-1),dg=Ue({__name:"Hero",setup(e){return(t,n)=>{const r=og;return re(),fe("section",ig,[N("div",lg,[N("div",ag,[cg,N("div",ug,[Z(r),fg])])])])}}}),hg={"aria-label":"Features of SecHub",class:"bg-fern-600 py-32"},pg={class:"container"},gg=N("div",{class:"mx-auto max-w-2xl sm:text-center"},[N("h2",{class:"text-3xl font-medium tracking-tight text-white"},"Your Security Guardian."),N("p",{class:"mt-2 text-lg text-white"},[Me(" SecHub orchestrates different security tools by one API layer. "),N("br"),Me(" Users interact with the SecHub Server, eliminating the need for projects to integrate vendor plugins for each security tool. ")])],-1),mg={role:"list",class:"mx-auto mt-16 grid max-w-2xl grid-cols-1 gap-6 text-sm sm:mt-20 sm:grid-cols-2 md:gap-y-10 lg:max-w-none lg:grid-cols-3"},yg={class:"mt-6 font-semibold text-white"},_g={class:"mt-2 text-white"},vg=Ue({__name:"Features",setup(e){const t=[{title:"API Orchestration",description:"SecHub orchestrates tools via an unified API, simplifying integration for projects without the need for different vendor plugins.",icon:Dp},{title:"Easy to use Client",description:"The SecHub client is written in Go and easy to use on your system of choice.",icon:Fp},{title:"License Flexibility",description:"SecHub is MIT licensed. This ensures freedom in use, modification and distribution, fostering collaboration and adoption across all kind of projects.",icon:Lp},{title:"Comprehensive Documentation",description:"Extensive documentation covers Getting Started, Architecture, Client, RestAPI, Operations and more. Available on our documentation.",icon:Hp},{title:"Integration with Build Systems and IDEs",description:"Seamless integration with every build system and multiple developer IDEs adds security to your code without additional complexity.",icon:Up},{title:"Product Delegation Server (PDS)",description:"Explore SecHub's PDS, a vital component providing you the choice of many existing securtiy tools for use with SecHub. It also allows an easy integration of new securtiy tools.",icon:jp}];return(n,r)=>(re(),fe("section",hg,[N("div",pg,[gg,N("ul",mg,[(re(),fe(ye,null,In(t,s=>N("li",{key:s.title,class:"rounded-2xl border border-fern-300 p-8 transition-colors duration-300 hover:bg-fern-500"},[(re(),Tt(ul(s.icon),{class:"size-10 text-white"})),N("h3",yg,St(s.title),1),N("p",_g,St(s.description),1)])),64))])])]))}}),bg={},wg={class:"absolute left-20 top-1/2 -translate-y-1/2 sm:left-1/2 sm:-translate-x-1/2"},xg=Os('',1),Eg=[xg];function Tg(e,t){return re(),fe("div",wg,Eg)}const Sg=Qs(bg,[["render",Tg]]),Cg={"aria-label":"Download Sechub",id:"download",class:"relative bg-gray-100 py-32"},Ag={class:"container"},Rg={class:"mx-auto max-w-md sm:text-center"},Pg=N("h2",{class:"text-3xl font-medium tracking-tight text-gray-900 sm:text-4xl"},"Start Using Today!",-1),kg=N("p",{class:"mt-4 text-lg text-gray-700"},[Me(" Download SecHub for seamless security integration."),N("br"),Me("Orchestrates security tools through an unified API."),N("br"),Me("MIT License. ")],-1),Ig=N("a",{href:"https://mercedes-benz.github.io/sechub/index-old.html"}," Downloads ",-1),Mg={__name:"Download",setup(e){return(t,n)=>{const r=Sg;return re(),fe("section",Cg,[Z(r),N("div",Ag,[N("div",Rg,[Pg,kg,Z(Q(ps),{as:"div",class:"relative mt-8 inline-block text-left"},{default:de(()=>[N("div",null,[Z(Q(gs),{class:"button"},{default:de(()=>[Ig]),_:1})])]),_:1})])])])}}},Og={},$g={class:"border-t border-gray-200"},Hg={class:"container"},Lg={class:"flex flex-col items-start justify-between gap-y-12 pb-6 pt-16 lg:flex-row lg:items-center lg:py-16"},Ng=Os('
SecHub Logo

SecHub

Your security guardian.

',1),jg={class:"mt-6 text-sm text-gray-500"},Fg=N("a",{href:"https://www.mercedes-benz-techinnovation.com/en/imprint/"},"Impressum",-1),Dg=N("div",{class:"lg:w-64"},[N("p",{class:"text-base font-semibold text-gray-900"},"You want to innovate SecHub?"),N("p",{class:"mt-1 text-sm text-gray-700"}," We attach great importance to open and transparent communication for all parts of the community. ")],-1);function Ug(e,t){const n=Ta;return re(),fe("footer",$g,[N("div",Hg,[N("div",Lg,[N("div",null,[Ng,N("p",jg,[Me("© "+St(new Date().getFullYear())+" Mercedes-Benz Tech Innovation GmbH - ",1),Fg,Me(".")])]),Z(n,{class:"group relative -mx-4 flex items-center self-stretch p-4 transition-colors hover:bg-gray-100 sm:self-auto sm:rounded-2xl lg:mx-0 lg:self-auto lg:p-6",to:"https://github.com/mercedes-benz/sechub/blob/develop/CONTRIBUTING.md",target:"_blank"},{default:de(()=>[Dg]),_:1})])])])}const Bg=Qs(Og,[["render",Ug]]),Vg=Ue({__name:"app",setup(e){return Ah({title:"SecHub | Your security guardian.",description:"SecHub is a free and open-source security platform that provides a central API to test software with different security tools.",ogImage:"/og.jpg"}),(t,n)=>{const r=Qp,s=dg,o=vg,i=Mg,l=Bg;return re(),fe(ye,null,[Z(r),N("main",null,[Z(s),Z(o),Z(i)]),Z(l)],64)}}}),Wg={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error;n.stack&&n.stack.split(` -`).splice(1).map(c=>({text:c.replace("webpack:/","").replace(".vue",".js").trim(),internal:c.includes("node_modules")&&!c.includes(".cache")||c.includes("internal")||c.includes("new Promise")})).map(c=>`${c.text}`).join(` -`);const r=Number(n.statusCode||500),s=r===404,o=n.statusMessage??(s?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),l=void 0,u=s?yo(()=>fi(()=>import("./CDYRVOow.js"),__vite__mapDeps([0,1]),import.meta.url).then(c=>c.default||c)):yo(()=>fi(()=>import("./1ixkSwBj.js"),__vite__mapDeps([2,3]),import.meta.url).then(c=>c.default||c));return(c,d)=>(re(),Tt(Q(u),Wa(Hl({statusCode:Q(r),statusMessage:Q(o),description:Q(i),stack:Q(l)})),null,16))}},Kg={key:0},bi={__name:"nuxt-root",setup(e){const t=()=>null,n=ge(),r=n.deferHydration();if(n.isHydrating){const a=n.hooks.hookOnce("app:error",r);Ze().beforeEach(a)}const s=!1;fr(sa,oa()),n.hooks.callHookWith(a=>a.map(f=>f()),"vue:setup");const o=Us(),i=!1;ll((a,f,u)=>{if(n.hooks.callHook("vue:error",a,f,u).catch(c=>console.error("[nuxt] Error in `vue:error` hook",c)),$d(a)&&(a.fatal||a.unhandled))return n.runWithContext(()=>Md(a)),!1});const l=!1;return(a,f)=>(re(),Tt(mu,{onResolve:Q(r)},{default:de(()=>[Q(i)?(re(),fe("div",Kg)):Q(o)?(re(),Tt(Q(Wg),{key:1,error:Q(o)},null,8,["error"])):Q(l)?(re(),Tt(Q(t),{key:2,context:Q(l)},null,8,["context"])):Q(s)?(re(),Tt(ul(Q(s)),{key:3})):(re(),Tt(Q(Vg),{key:4}))]),_:1},8,["onResolve"]))}};let wi;{let e;wi=async function(){var i,l;if(e)return e;const r=!!((i=window.__NUXT__)!=null&&i.serverRendered||((l=document.getElementById("__NUXT_DATA__"))==null?void 0:l.dataset.ssr)==="true")?af(bi):lf(bi),s=md({vueApp:r});async function o(a){await s.callHook("app:error",a),s.payload.error=s.payload.error||Bs(a)}r.config.errorHandler=o;try{await vd(s,qh)}catch(a){o(a)}try{await s.hooks.callHook("app:created",r),await s.hooks.callHook("app:beforeMount",r),r.mount(pd),await s.hooks.callHook("app:mounted",r),await Ge()}catch(a){o(a)}return r.config.errorHandler===o&&(r.config.errorHandler=void 0),r},e=wi().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{Qs as _,N as a,Z as b,fe as c,Me as d,Ta as e,Gg as f,re as o,qg as p,St as t,Sh as u,de as w}; diff --git a/docs/_nuxt/DztoTzgx.js b/docs/_nuxt/DztoTzgx.js new file mode 100644 index 000000000..4fbc68858 --- /dev/null +++ b/docs/_nuxt/DztoTzgx.js @@ -0,0 +1,24 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BBZg053E.js","./error-404.1I9kcRJA.css","./BMVkI6Ro.js","./error-500.D2gsH5Ap.css"])))=>i.map(i=>d[i]); +var za=Object.defineProperty;var Ya=(e,t,n)=>t in e?za(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ct=(e,t,n)=>Ya(e,typeof t!="symbol"?t+"":t,n);/** +* @vue/shared v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function Rs(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const le={},Vt=[],Xe=()=>{},Xa=()=>!1,xn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Is=e=>e.startsWith("onUpdate:"),pe=Object.assign,Ms=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Qa=Object.prototype.hasOwnProperty,te=(e,t)=>Qa.call(e,t),K=Array.isArray,Wt=e=>cr(e)==="[object Map]",Mi=e=>cr(e)==="[object Set]",q=e=>typeof e=="function",ue=e=>typeof e=="string",bt=e=>typeof e=="symbol",ae=e=>e!==null&&typeof e=="object",Oi=e=>(ae(e)||q(e))&&q(e.then)&&q(e.catch),Hi=Object.prototype.toString,cr=e=>Hi.call(e),ec=e=>cr(e).slice(8,-1),Li=e=>cr(e)==="[object Object]",Os=e=>ue(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Kt=Rs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ur=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},tc=/-(\w)/g,Be=ur(e=>e.replace(tc,(t,n)=>n?n.toUpperCase():"")),nc=/\B([A-Z])/g,$t=ur(e=>e.replace(nc,"-$1").toLowerCase()),fr=ur(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ir=ur(e=>e?`on${fr(e)}`:""),mt=(e,t)=>!Object.is(e,t),Mr=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},rc=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ni=e=>{const t=ue(e)?Number(e):NaN;return isNaN(t)?e:t};let yo;const dr=()=>yo||(yo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function hr(e){if(K(e)){const t={};for(let n=0;n{if(n){const r=n.split(oc);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function pr(e){let t="";if(ue(e))t=e;else if(K(e))for(let n=0;n!!(e&&e.__v_isRef===!0),It=e=>ue(e)?e:e==null?"":K(e)||ae(e)&&(e.toString===Hi||!q(e.toString))?ji(e)?It(e.value):JSON.stringify(e,Fi,2):String(e),Fi=(e,t)=>ji(t)?Fi(e,t.value):Wt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Or(r,o)+" =>"]=s,n),{})}:Mi(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Or(n))}:bt(t)?Or(t):ae(t)&&!K(t)&&!Li(t)?String(t):t,Or=(e,t="")=>{var n;return bt(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let He;class Ui{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=He,!t&&He&&(this.index=(He.scopes||(He.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(ln){let t=ln;for(ln=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;on;){let t=on;for(on=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function qi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Gi(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),$s(r),dc(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Yr(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Zi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Zi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===dn))return;e.globalVersion=dn;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Yr(e)){e.flags&=-3;return}const n=ie,r=We;ie=e,We=!0;try{qi(e);const s=e.fn(e._value);(t.version===0||mt(s,e._value))&&(e._value=s,t.version++)}catch(s){throw t.version++,s}finally{ie=n,We=r,Gi(e),e.flags&=-3}}function $s(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)$s(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function dc(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let We=!0;const Ji=[];function _t(){Ji.push(We),We=!1}function wt(){const e=Ji.pop();We=e===void 0?!0:e}function vo(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ie;ie=void 0;try{t()}finally{ie=n}}}let dn=0;class hc{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Ns{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!ie||!We||ie===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ie)n=this.activeLink=new hc(ie,this),ie.deps?(n.prevDep=ie.depsTail,ie.depsTail.nextDep=n,ie.depsTail=n):ie.deps=ie.depsTail=n,zi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=ie.depsTail,n.nextDep=void 0,ie.depsTail.nextDep=n,ie.depsTail=n,ie.deps===n&&(ie.deps=r)}return n}trigger(t){this.version++,dn++,this.notify(t)}notify(t){Hs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ls()}}}function zi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)zi(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Gn=new WeakMap,Mt=Symbol(""),Xr=Symbol(""),hn=Symbol("");function Se(e,t,n){if(We&&ie){let r=Gn.get(e);r||Gn.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new Ns),s.map=r,s.key=n),s.track()}}function st(e,t,n,r,s,o){const i=Gn.get(e);if(!i){dn++;return}const l=a=>{a&&a.trigger()};if(Hs(),t==="clear")i.forEach(l);else{const a=K(e),f=a&&Os(n);if(a&&n==="length"){const c=Number(r);i.forEach((u,d)=>{(d==="length"||d===hn||!bt(d)&&d>=c)&&l(u)})}else switch((n!==void 0||i.has(void 0))&&l(i.get(n)),f&&l(i.get(hn)),t){case"add":a?f&&l(i.get("length")):(l(i.get(Mt)),Wt(e)&&l(i.get(Xr)));break;case"delete":a||(l(i.get(Mt)),Wt(e)&&l(i.get(Xr)));break;case"set":Wt(e)&&l(i.get(Mt));break}}Ls()}function pc(e,t){const n=Gn.get(e);return n&&n.get(t)}function Dt(e){const t=Q(e);return t===e?t:(Se(t,"iterate",hn),Ue(e)?t:t.map(Te))}function gr(e){return Se(e=Q(e),"iterate",hn),e}const gc={__proto__:null,[Symbol.iterator](){return Lr(this,Symbol.iterator,Te)},concat(...e){return Dt(this).concat(...e.map(t=>K(t)?Dt(t):t))},entries(){return Lr(this,"entries",e=>(e[1]=Te(e[1]),e))},every(e,t){return tt(this,"every",e,t,void 0,arguments)},filter(e,t){return tt(this,"filter",e,t,n=>n.map(Te),arguments)},find(e,t){return tt(this,"find",e,t,Te,arguments)},findIndex(e,t){return tt(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return tt(this,"findLast",e,t,Te,arguments)},findLastIndex(e,t){return tt(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return tt(this,"forEach",e,t,void 0,arguments)},includes(...e){return $r(this,"includes",e)},indexOf(...e){return $r(this,"indexOf",e)},join(e){return Dt(this).join(e)},lastIndexOf(...e){return $r(this,"lastIndexOf",e)},map(e,t){return tt(this,"map",e,t,void 0,arguments)},pop(){return nn(this,"pop")},push(...e){return nn(this,"push",e)},reduce(e,...t){return bo(this,"reduce",e,t)},reduceRight(e,...t){return bo(this,"reduceRight",e,t)},shift(){return nn(this,"shift")},some(e,t){return tt(this,"some",e,t,void 0,arguments)},splice(...e){return nn(this,"splice",e)},toReversed(){return Dt(this).toReversed()},toSorted(e){return Dt(this).toSorted(e)},toSpliced(...e){return Dt(this).toSpliced(...e)},unshift(...e){return nn(this,"unshift",e)},values(){return Lr(this,"values",Te)}};function Lr(e,t,n){const r=gr(e),s=r[t]();return r!==e&&!Ue(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.value&&(o.value=n(o.value)),o}),s}const mc=Array.prototype;function tt(e,t,n,r,s,o){const i=gr(e),l=i!==e&&!Ue(e),a=i[t];if(a!==mc[t]){const u=a.apply(e,o);return l?Te(u):u}let f=n;i!==e&&(l?f=function(u,d){return n.call(this,Te(u),d,e)}:n.length>2&&(f=function(u,d){return n.call(this,u,d,e)}));const c=a.call(i,f,r);return l&&s?s(c):c}function bo(e,t,n,r){const s=gr(e);let o=n;return s!==e&&(Ue(e)?n.length>3&&(o=function(i,l,a){return n.call(this,i,l,a,e)}):o=function(i,l,a){return n.call(this,i,Te(l),a,e)}),s[t](o,...r)}function $r(e,t,n){const r=Q(e);Se(r,"iterate",hn);const s=r[t](...n);return(s===-1||s===!1)&&Fs(n[0])?(n[0]=Q(n[0]),r[t](...n)):s}function nn(e,t,n=[]){_t(),Hs();const r=Q(e)[t].apply(e,n);return Ls(),wt(),r}const yc=Rs("__proto__,__v_isRef,__isVue"),Yi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(bt));function vc(e){bt(e)||(e=String(e));const t=Q(this);return Se(t,"has",e),t.hasOwnProperty(e)}class Xi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n==="__v_skip")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?kc:nl:o?tl:el).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=K(t);if(!s){let a;if(i&&(a=gc[n]))return a;if(n==="hasOwnProperty")return vc}const l=Reflect.get(t,n,be(t)?t:r);return(bt(n)?Yi.has(n):yc(n))||(s||Se(t,"get",n),o)?l:be(l)?i&&Os(n)?l:l.value:ae(l)?s?rl(l):yt(l):l}}class Qi extends Xi{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const a=vt(o);if(!Ue(r)&&!vt(r)&&(o=Q(o),r=Q(r)),!K(t)&&be(o)&&!be(r))return a?!1:(o.value=r,!0)}const i=K(t)&&Os(n)?Number(n)e,Rn=e=>Reflect.getPrototypeOf(e);function Sc(e,t,n){return function(...r){const s=this.__v_raw,o=Q(s),i=Wt(o),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,f=s[e](...r),c=n?Qr:t?es:Te;return!t&&Se(o,"iterate",a?Xr:Mt),{next(){const{value:u,done:d}=f.next();return d?{value:u,done:d}:{value:l?[c(u[0]),c(u[1])]:c(u),done:d}},[Symbol.iterator](){return this}}}}function In(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Tc(e,t){const n={get(s){const o=this.__v_raw,i=Q(o),l=Q(s);e||(mt(s,l)&&Se(i,"get",s),Se(i,"get",l));const{has:a}=Rn(i),f=t?Qr:e?es:Te;if(a.call(i,s))return f(o.get(s));if(a.call(i,l))return f(o.get(l));o!==i&&o.get(s)},get size(){const s=this.__v_raw;return!e&&Se(Q(s),"iterate",Mt),Reflect.get(s,"size",s)},has(s){const o=this.__v_raw,i=Q(o),l=Q(s);return e||(mt(s,l)&&Se(i,"has",s),Se(i,"has",l)),s===l?o.has(s):o.has(s)||o.has(l)},forEach(s,o){const i=this,l=i.__v_raw,a=Q(l),f=t?Qr:e?es:Te;return!e&&Se(a,"iterate",Mt),l.forEach((c,u)=>s.call(o,f(c),f(u),i))}};return pe(n,e?{add:In("add"),set:In("set"),delete:In("delete"),clear:In("clear")}:{add(s){!t&&!Ue(s)&&!vt(s)&&(s=Q(s));const o=Q(this);return Rn(o).has.call(o,s)||(o.add(s),st(o,"add",s,s)),this},set(s,o){!t&&!Ue(o)&&!vt(o)&&(o=Q(o));const i=Q(this),{has:l,get:a}=Rn(i);let f=l.call(i,s);f||(s=Q(s),f=l.call(i,s));const c=a.call(i,s);return i.set(s,o),f?mt(o,c)&&st(i,"set",s,o):st(i,"add",s,o),this},delete(s){const o=Q(this),{has:i,get:l}=Rn(o);let a=i.call(o,s);a||(s=Q(s),a=i.call(o,s)),l&&l.call(o,s);const f=o.delete(s);return a&&st(o,"delete",s,void 0),f},clear(){const s=Q(this),o=s.size!==0,i=s.clear();return o&&st(s,"clear",void 0,void 0),i}}),["keys","values","entries",Symbol.iterator].forEach(s=>{n[s]=Sc(s,e,t)}),n}function Ds(e,t){const n=Tc(e,t);return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(te(n,s)&&s in r?n:r,s,o)}const Ec={get:Ds(!1,!1)},Cc={get:Ds(!1,!0)},Ac={get:Ds(!0,!1)};const el=new WeakMap,tl=new WeakMap,nl=new WeakMap,kc=new WeakMap;function Pc(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Rc(e){return e.__v_skip||!Object.isExtensible(e)?0:Pc(ec(e))}function yt(e){return vt(e)?e:js(e,!1,_c,Ec,el)}function Ut(e){return js(e,!1,xc,Cc,tl)}function rl(e){return js(e,!0,wc,Ac,nl)}function js(e,t,n,r,s){if(!ae(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=Rc(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function Ot(e){return vt(e)?Ot(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function Ue(e){return!!(e&&e.__v_isShallow)}function Fs(e){return e?!!e.__v_raw:!1}function Q(e){const t=e&&e.__v_raw;return t?Q(t):e}function Ic(e){return!te(e,"__v_skip")&&Object.isExtensible(e)&&$i(e,"__v_skip",!0),e}const Te=e=>ae(e)?yt(e):e,es=e=>ae(e)?rl(e):e;function be(e){return e?e.__v_isRef===!0:!1}function ce(e){return sl(e,!1)}function _o(e){return sl(e,!0)}function sl(e,t){return be(e)?e:new Mc(e,t)}class Mc{constructor(t,n){this.dep=new Ns,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Q(t),this._value=n?t:Te(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||Ue(t)||vt(t);t=r?t:Q(t),mt(t,n)&&(this._rawValue=t,this._value=r?t:Te(t),this.dep.trigger())}}function ee(e){return be(e)?e.value:e}const Oc={get:(e,t,n)=>t==="__v_raw"?e:ee(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return be(s)&&!be(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function ol(e){return Ot(e)?e:new Proxy(e,Oc)}class Hc{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return pc(Q(this._object),this._key)}}class Lc{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function $c(e,t,n){return be(e)?e:q(e)?new Lc(e):ae(e)&&arguments.length>1?Nc(e,t,n):ce(e)}function Nc(e,t,n){const r=e[t];return be(r)?r:new Hc(e,t,n)}class Dc{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Ns(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=dn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&ie!==this)return Ki(this,!0),!0}get value(){const t=this.dep.track();return Zi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function jc(e,t,n=!1){let r,s;return q(e)?r=e:(r=e.get,s=e.set),new Dc(r,s,n)}const Mn={},Zn=new WeakMap;let Pt;function Fc(e,t=!1,n=Pt){if(n){let r=Zn.get(n);r||Zn.set(n,r=[]),r.push(e)}}function Uc(e,t,n=le){const{immediate:r,deep:s,once:o,scheduler:i,augmentJob:l,call:a}=n,f=b=>s?b:Ue(b)||s===!1||s===0?gt(b,1):gt(b);let c,u,d,h,g=!1,v=!1;if(be(e)?(u=()=>e.value,g=Ue(e)):Ot(e)?(u=()=>f(e),g=!0):K(e)?(v=!0,g=e.some(b=>Ot(b)||Ue(b)),u=()=>e.map(b=>{if(be(b))return b.value;if(Ot(b))return f(b);if(q(b))return a?a(b,2):b()})):q(e)?t?u=a?()=>a(e,2):e:u=()=>{if(d){_t();try{d()}finally{wt()}}const b=Pt;Pt=c;try{return a?a(e,3,[h]):e(h)}finally{Pt=b}}:u=Xe,t&&s){const b=u,w=s===!0?1/0:s;u=()=>gt(b(),w)}const S=Bi(),E=()=>{c.stop(),S&&S.active&&Ms(S.effects,c)};if(o&&t){const b=t;t=(...w)=>{b(...w),E()}}let $=v?new Array(e.length).fill(Mn):Mn;const y=b=>{if(!(!(c.flags&1)||!c.dirty&&!b))if(t){const w=c.run();if(s||g||(v?w.some((k,j)=>mt(k,$[j])):mt(w,$))){d&&d();const k=Pt;Pt=c;try{const j=[w,$===Mn?void 0:v&&$[0]===Mn?[]:$,h];a?a(t,3,j):t(...j),$=w}finally{Pt=k}}}else c.run()};return l&&l(y),c=new Vi(u),c.scheduler=i?()=>i(y,!1):y,h=b=>Fc(b,!1,c),d=c.onStop=()=>{const b=Zn.get(c);if(b){if(a)a(b,4);else for(const w of b)w();Zn.delete(c)}},t?r?y(!0):$=c.run():i?i(y.bind(null,!0),!0):c.run(),E.pause=c.pause.bind(c),E.resume=c.resume.bind(c),E.stop=E,E}function gt(e,t=1/0,n){if(t<=0||!ae(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,be(e))gt(e.value,t,n);else if(K(e))for(let r=0;r{gt(r,t,n)});else if(Li(e)){for(const r in e)gt(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&>(e[r],t,n)}return e}/** +* @vue/runtime-core v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Sn(e,t,n,r){try{return r?e(...r):e()}catch(s){Xt(s,t,n)}}function Ke(e,t,n,r){if(q(e)){const s=Sn(e,t,n,r);return s&&Oi(s)&&s.catch(o=>{Xt(o,t,n)}),s}if(K(e)){const s=[];for(let o=0;o>>1,s=Ae[r],o=pn(s);o=pn(n)?Ae.push(e):Ae.splice(Vc(t),0,e),e.flags|=1,ll()}}function ll(){Jn||(Jn=il.then(al))}function ts(e){K(e)?qt.push(...e):ft&&e.id===-1?ft.splice(Ft+1,0,e):e.flags&1||(qt.push(e),e.flags|=1),ll()}function wo(e,t,n=Je+1){for(;npn(n)-pn(r));if(qt.length=0,ft){ft.push(...t);return}for(ft=t,Ft=0;Fte.id==null?e.flags&2?-1:1/0:e.id;function al(e){try{for(Je=0;Je{r._d&&$o(-1);const o=Yn(t);let i;try{i=e(...s)}finally{Yn(o),r._d&&$o(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function ze(e,t,n,r){const s=e.dirs,o=t&&t.dirs;for(let i=0;ie.__isTeleport,dt=Symbol("_leaveCb"),On=Symbol("_enterCb");function Kc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return En(()=>{e.isMounted=!0}),yr(()=>{e.isUnmounting=!0}),e}const je=[Function,Array],fl={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:je,onEnter:je,onAfterEnter:je,onEnterCancelled:je,onBeforeLeave:je,onLeave:je,onAfterLeave:je,onLeaveCancelled:je,onBeforeAppear:je,onAppear:je,onAfterAppear:je,onAppearCancelled:je},dl=e=>{const t=e.subTree;return t.component?dl(t.component):t},qc={name:"BaseTransition",props:fl,setup(e,{slots:t}){const n=Js(),r=Kc();return()=>{const s=t.default&&gl(t.default(),!0);if(!s||!s.length)return;const o=hl(s),i=Q(e),{mode:l}=i;if(r.isLeaving)return Nr(o);const a=xo(o);if(!a)return Nr(o);let f=ns(a,i,r,n,u=>f=u);a.type!==ke&&gn(a,f);let c=n.subTree&&xo(n.subTree);if(c&&c.type!==ke&&!Ye(a,c)&&dl(n).type!==ke){let u=ns(c,i,r,n);if(gn(c,u),l==="out-in"&&a.type!==ke)return r.isLeaving=!0,u.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete u.afterLeave,c=void 0},Nr(o);l==="in-out"&&a.type!==ke?u.delayLeave=(d,h,g)=>{const v=pl(r,c);v[String(c.key)]=c,d[dt]=()=>{h(),d[dt]=void 0,delete f.delayedLeave,c=void 0},f.delayedLeave=()=>{g(),delete f.delayedLeave,c=void 0}}:c=void 0}else c&&(c=void 0);return o}}};function hl(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ke){t=n;break}}return t}const Gc=qc;function pl(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function ns(e,t,n,r,s){const{appear:o,mode:i,persisted:l=!1,onBeforeEnter:a,onEnter:f,onAfterEnter:c,onEnterCancelled:u,onBeforeLeave:d,onLeave:h,onAfterLeave:g,onLeaveCancelled:v,onBeforeAppear:S,onAppear:E,onAfterAppear:$,onAppearCancelled:y}=t,b=String(e.key),w=pl(n,e),k=(O,M)=>{O&&Ke(O,r,9,M)},j=(O,M)=>{const V=M[1];k(O,M),K(O)?O.every(P=>P.length<=1)&&V():O.length<=1&&V()},Z={mode:i,persisted:l,beforeEnter(O){let M=a;if(!n.isMounted)if(o)M=S||a;else return;O[dt]&&O[dt](!0);const V=w[b];V&&Ye(e,V)&&V.el[dt]&&V.el[dt](),k(M,[O])},enter(O){let M=f,V=c,P=u;if(!n.isMounted)if(o)M=E||f,V=$||c,P=y||u;else return;let B=!1;const X=O[On]=se=>{B||(B=!0,se?k(P,[O]):k(V,[O]),Z.delayedLeave&&Z.delayedLeave(),O[On]=void 0)};M?j(M,[O,X]):X()},leave(O,M){const V=String(e.key);if(O[On]&&O[On](!0),n.isUnmounting)return M();k(d,[O]);let P=!1;const B=O[dt]=X=>{P||(P=!0,M(),X?k(v,[O]):k(g,[O]),O[dt]=void 0,w[V]===e&&delete w[V])};w[V]=e,h?j(h,[O,B]):B()},clone(O){const M=ns(O,t,n,r,s);return s&&s(M),M}};return Z}function Nr(e){if(Tn(e))return e=lt(e),e.children=null,e}function xo(e){if(!Tn(e))return ul(e.type)&&e.children?hl(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function gn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,gn(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function gl(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;omn(g,t&&(K(t)?t[v]:t),n,r,s));return}if(Gt(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&mn(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?zs(r.component):r.el,i=s?null:o,{i:l,r:a}=e,f=t&&t.r,c=l.refs===le?l.refs={}:l.refs,u=l.setupState,d=Q(u),h=u===le?()=>!1:g=>te(d,g);if(f!=null&&f!==a&&(ue(f)?(c[f]=null,h(f)&&(u[f]=null)):be(f)&&(f.value=null)),q(a))Sn(a,l,12,[i,c]);else{const g=ue(a),v=be(a);if(g||v){const S=()=>{if(e.f){const E=g?h(a)?u[a]:c[a]:a.value;s?K(E)&&Ms(E,o):K(E)?E.includes(o)||E.push(o):g?(c[a]=[o],h(a)&&(u[a]=c[a])):(a.value=[o],e.k&&(c[e.k]=a.value))}else g?(c[a]=i,h(a)&&(u[a]=i)):v&&(a.value=i,e.k&&(c[e.k]=i))};i?(S.id=-1,Oe(S,n)):S()}}}let So=!1;const jt=()=>{So||(console.error("Hydration completed but contains mismatches."),So=!0)},Zc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Jc=e=>e.namespaceURI.includes("MathML"),Hn=e=>{if(e.nodeType===1){if(Zc(e))return"svg";if(Jc(e))return"mathml"}},Bt=e=>e.nodeType===8;function zc(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:a,createComment:f}}=e,c=(y,b)=>{if(!b.hasChildNodes()){n(null,y,b),zn(),b._vnode=y;return}u(b.firstChild,y,null,null,null),zn(),b._vnode=y},u=(y,b,w,k,j,Z=!1)=>{Z=Z||!!b.dynamicChildren;const O=Bt(y)&&y.data==="[",M=()=>v(y,b,w,k,j,O),{type:V,ref:P,shapeFlag:B,patchFlag:X}=b;let se=y.nodeType;b.el=y,X===-2&&(Z=!1,b.dynamicChildren=null);let D=null;switch(V){case Lt:se!==3?b.children===""?(a(b.el=s(""),i(y),y),D=y):D=M():(y.data!==b.children&&(jt(),y.data=b.children),D=o(y));break;case ke:$(y)?(D=o(y),E(b.el=y.content.firstChild,y,w)):se!==8||O?D=M():D=o(y);break;case cn:if(O&&(y=o(y),se=y.nodeType),se===1||se===3){D=y;const z=!b.children.length;for(let U=0;U{Z=Z||!!b.dynamicChildren;const{type:O,props:M,patchFlag:V,shapeFlag:P,dirs:B,transition:X}=b,se=O==="input"||O==="option";if(se||V!==-1){B&&ze(b,null,w,"created");let D=!1;if($(y)){D=Nl(null,X)&&w&&w.vnode.props&&w.vnode.props.appear;const U=y.content.firstChild;D&&X.beforeEnter(U),E(U,y,w),b.el=y=U}if(P&16&&!(M&&(M.innerHTML||M.textContent))){let U=h(y.firstChild,b,y,w,k,j,Z);for(;U;){Ln(y,1)||jt();const _e=U;U=U.nextSibling,l(_e)}}else if(P&8){let U=b.children;U[0]===` +`&&(y.tagName==="PRE"||y.tagName==="TEXTAREA")&&(U=U.slice(1)),y.textContent!==U&&(Ln(y,0)||jt(),y.textContent=b.children)}if(M){if(se||!Z||V&48){const U=y.tagName.includes("-");for(const _e in M)(se&&(_e.endsWith("value")||_e==="indeterminate")||xn(_e)&&!Kt(_e)||_e[0]==="."||U)&&r(y,_e,null,M[_e],void 0,w)}else if(M.onClick)r(y,"onClick",null,M.onClick,void 0,w);else if(V&4&&Ot(M.style))for(const U in M.style)M.style[U]}let z;(z=M&&M.onVnodeBeforeMount)&&Fe(z,w,b),B&&ze(b,null,w,"beforeMount"),((z=M&&M.onVnodeMounted)||B||D)&&Wl(()=>{z&&Fe(z,w,b),D&&X.enter(y),B&&ze(b,null,w,"mounted")},k)}return y.nextSibling},h=(y,b,w,k,j,Z,O)=>{O=O||!!b.dynamicChildren;const M=b.children,V=M.length;for(let P=0;P{const{slotScopeIds:O}=b;O&&(j=j?j.concat(O):O);const M=i(y),V=h(o(y),b,M,w,k,j,Z);return V&&Bt(V)&&V.data==="]"?o(b.anchor=V):(jt(),a(b.anchor=f("]"),M,V),V)},v=(y,b,w,k,j,Z)=>{if(Ln(y.parentElement,1)||jt(),b.el=null,Z){const V=S(y);for(;;){const P=o(y);if(P&&P!==V)l(P);else break}}const O=o(y),M=i(y);return l(y),n(null,b,M,O,w,k,Hn(M),j),w&&(w.vnode.el=b.el,_r(w,b.el)),O},S=(y,b="[",w="]")=>{let k=0;for(;y;)if(y=o(y),y&&Bt(y)&&(y.data===b&&k++,y.data===w)){if(k===0)return o(y);k--}return y},E=(y,b,w)=>{const k=b.parentNode;k&&k.replaceChild(y,b);let j=w;for(;j;)j.vnode.el===b&&(j.vnode.el=j.subTree.el=y),j=j.parent},$=y=>y.nodeType===1&&y.tagName==="TEMPLATE";return[c,u]}const To="data-allow-mismatch",Yc={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function Ln(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(To);)e=e.parentElement;const n=e&&e.getAttribute(To);if(n==null)return!1;if(n==="")return!0;{const r=n.split(",");return t===0&&r.includes("children")?!0:n.split(",").includes(Yc[t])}}dr().requestIdleCallback;dr().cancelIdleCallback;function Xc(e,t){if(Bt(e)&&e.data==="["){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(Bt(r))if(r.data==="]"){if(--n===0)break}else r.data==="["&&n++;r=r.nextSibling}}else t(e)}const Gt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function Eo(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:o,timeout:i,suspensible:l=!0,onError:a}=e;let f=null,c,u=0;const d=()=>(u++,f=null,h()),h=()=>{let g;return f||(g=f=t().catch(v=>{if(v=v instanceof Error?v:new Error(String(v)),a)return new Promise((S,E)=>{a(v,()=>S(d()),()=>E(v),u+1)});throw v}).then(v=>g!==f&&f?f:(v&&(v.__esModule||v[Symbol.toStringTag]==="Module")&&(v=v.default),c=v,v)))};return qe({name:"AsyncComponentWrapper",__asyncLoader:h,__asyncHydrate(g,v,S){const E=o?()=>{const $=o(S,y=>Xc(g,y));$&&(v.bum||(v.bum=[])).push($)}:S;c?E():h().then(()=>!v.isUnmounted&&E())},get __asyncResolved(){return c},setup(){const g=ye;if(Bs(g),c)return()=>Dr(c,g);const v=y=>{f=null,Xt(y,g,13,!r)};if(l&&g.suspense||zt)return h().then(y=>()=>Dr(y,g)).catch(y=>(v(y),()=>r?G(r,{error:y}):null));const S=ce(!1),E=ce(),$=ce(!!s);return s&&setTimeout(()=>{$.value=!1},s),i!=null&&setTimeout(()=>{if(!S.value&&!E.value){const y=new Error(`Async component timed out after ${i}ms.`);v(y),E.value=y}},i),h().then(()=>{S.value=!0,g.parent&&Tn(g.parent.vnode)&&g.parent.update()}).catch(y=>{v(y),E.value=y}),()=>{if(S.value&&c)return Dr(c,g);if(E.value&&r)return G(r,{error:E.value});if(n&&!$.value)return G(n)}}})}function Dr(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=G(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const Tn=e=>e.type.__isKeepAlive;function ml(e,t){vl(e,"a",t)}function yl(e,t){vl(e,"da",t)}function vl(e,t,n=ye){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(mr(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Tn(s.parent.vnode)&&Qc(r,t,n,s),s=s.parent}}function Qc(e,t,n,r){const s=mr(t,e,r,!0);Vs(()=>{Ms(r[t],s)},n)}function mr(e,t,n=ye,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{_t();const l=Cn(n),a=Ke(t,n,e,i);return l(),wt(),a});return r?s.unshift(o):s.push(o),o}}const at=e=>(t,n=ye)=>{(!zt||e==="sp")&&mr(e,(...r)=>t(...r),n)},eu=at("bm"),En=at("m"),tu=at("bu"),nu=at("u"),yr=at("bum"),Vs=at("um"),ru=at("sp"),su=at("rtg"),ou=at("rtc");function bl(e,t=ye){mr("ec",e,t)}const _l="components";function Co(e,t){return Sl(_l,e,!0,t)||e}const wl=Symbol.for("v-ndc");function xl(e){return ue(e)?Sl(_l,e,!1)||e:e||wl}function Sl(e,t,n=!0,r=!1){const s=$e||ye;if(s){const o=s.type;{const l=Zu(o,!1);if(l&&(l===t||l===Be(t)||l===fr(Be(t))))return o}const i=Ao(s[e]||o[e],t)||Ao(s.appContext[e],t);return!i&&r?o:i}}function Ao(e,t){return e&&(e[t]||e[Be(t)]||e[fr(Be(t))])}function Fn(e,t,n,r){let s;const o=n,i=K(e);if(i||ue(e)){const l=i&&Ot(e);let a=!1;l&&(a=!Ue(e),e=gr(e)),s=new Array(e.length);for(let f=0,c=e.length;ft(l,a,void 0,o));else{const l=Object.keys(e);s=new Array(l.length);for(let a=0,f=l.length;ae?Jl(e)?zs(e):rs(e.parent):null,an=pe(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>rs(e.parent),$root:e=>rs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ws(e),$forceUpdate:e=>e.f||(e.f=()=>{Us(e.update)}),$nextTick:e=>e.n||(e.n=Qe.bind(e.proxy)),$watch:e=>Eu.bind(e)}),jr=(e,t)=>e!==le&&!e.__isScriptSetup&&te(e,t),iu={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:a}=e;let f;if(t[0]!=="$"){const h=i[t];if(h!==void 0)switch(h){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(jr(r,t))return i[t]=1,r[t];if(s!==le&&te(s,t))return i[t]=2,s[t];if((f=e.propsOptions[0])&&te(f,t))return i[t]=3,o[t];if(n!==le&&te(n,t))return i[t]=4,n[t];ss&&(i[t]=0)}}const c=an[t];let u,d;if(c)return t==="$attrs"&&Se(e.attrs,"get",""),c(e);if((u=l.__cssModules)&&(u=u[t]))return u;if(n!==le&&te(n,t))return i[t]=4,n[t];if(d=a.config.globalProperties,te(d,t))return d[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return jr(s,t)?(s[t]=n,!0):r!==le&&te(r,t)?(r[t]=n,!0):te(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==le&&te(e,i)||jr(t,i)||(l=o[0])&&te(l,i)||te(r,i)||te(an,i)||te(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:te(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function ko(e){return K(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let ss=!0;function lu(e){const t=Ws(e),n=e.proxy,r=e.ctx;ss=!1,t.beforeCreate&&Po(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:a,inject:f,created:c,beforeMount:u,mounted:d,beforeUpdate:h,updated:g,activated:v,deactivated:S,beforeDestroy:E,beforeUnmount:$,destroyed:y,unmounted:b,render:w,renderTracked:k,renderTriggered:j,errorCaptured:Z,serverPrefetch:O,expose:M,inheritAttrs:V,components:P,directives:B,filters:X}=t;if(f&&au(f,r,null),i)for(const z in i){const U=i[z];q(U)&&(r[z]=U.bind(n))}if(s){const z=s.call(n,n);ae(z)&&(e.data=yt(z))}if(ss=!0,o)for(const z in o){const U=o[z],_e=q(U)?U.bind(n,n):q(U.get)?U.get.bind(n,n):Xe,kn=!q(U)&&q(U.set)?U.set.bind(n):Xe,Tt=me({get:_e,set:kn});Object.defineProperty(r,z,{enumerable:!0,configurable:!0,get:()=>Tt.value,set:Ge=>Tt.value=Ge})}if(l)for(const z in l)Tl(l[z],r,n,z);if(a){const z=q(a)?a.call(n):a;Reflect.ownKeys(z).forEach(U=>{vr(U,z[U])})}c&&Po(c,e,"c");function D(z,U){K(U)?U.forEach(_e=>z(_e.bind(n))):U&&z(U.bind(n))}if(D(eu,u),D(En,d),D(tu,h),D(nu,g),D(ml,v),D(yl,S),D(bl,Z),D(ou,k),D(su,j),D(yr,$),D(Vs,b),D(ru,O),K(M))if(M.length){const z=e.exposed||(e.exposed={});M.forEach(U=>{Object.defineProperty(z,U,{get:()=>n[U],set:_e=>n[U]=_e})})}else e.exposed||(e.exposed={});w&&e.render===Xe&&(e.render=w),V!=null&&(e.inheritAttrs=V),P&&(e.components=P),B&&(e.directives=B),O&&Bs(e)}function au(e,t,n=Xe){K(e)&&(e=os(e));for(const r in e){const s=e[r];let o;ae(s)?"default"in s?o=it(s.from||r,s.default,!0):o=it(s.from||r):o=it(s),be(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function Po(e,t,n){Ke(K(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Tl(e,t,n,r){let s=r.includes(".")?Fl(n,r):()=>n[r];if(ue(e)){const o=t[e];q(o)&&Un(s,o)}else if(q(e))Un(s,e.bind(n));else if(ae(e))if(K(e))e.forEach(o=>Tl(o,t,n,r));else{const o=q(e.handler)?e.handler.bind(n):t[e.handler];q(o)&&Un(s,o,e)}}function Ws(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let a;return l?a=l:!s.length&&!n&&!r?a=t:(a={},s.length&&s.forEach(f=>Xn(a,f,i,!0)),Xn(a,t,i)),ae(t)&&o.set(t,a),a}function Xn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&Xn(e,o,n,!0),s&&s.forEach(i=>Xn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=cu[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const cu={data:Ro,props:Io,emits:Io,methods:sn,computed:sn,beforeCreate:Ce,created:Ce,beforeMount:Ce,mounted:Ce,beforeUpdate:Ce,updated:Ce,beforeDestroy:Ce,beforeUnmount:Ce,destroyed:Ce,unmounted:Ce,activated:Ce,deactivated:Ce,errorCaptured:Ce,serverPrefetch:Ce,components:sn,directives:sn,watch:fu,provide:Ro,inject:uu};function Ro(e,t){return t?e?function(){return pe(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function uu(e,t){return sn(os(e),os(t))}function os(e){if(K(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(r&&r.proxy):t}}function Cl(){return!!(ye||$e||Ht)}const Al={},kl=()=>Object.create(Al),Pl=e=>Object.getPrototypeOf(e)===Al;function pu(e,t,n,r=!1){const s={},o=kl();e.propsDefaults=Object.create(null),Rl(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:Ut(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function gu(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=Q(s),[a]=e.propsOptions;let f=!1;if((r||i>0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let u=0;u{a=!0;const[d,h]=Il(u,t,!0);pe(i,d),h&&l.push(...h)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!o&&!a)return ae(e)&&r.set(e,Vt),Vt;if(K(o))for(let c=0;ce[0]==="_"||e==="$stable",Ks=e=>K(e)?e.map(Le):[Le(e)],yu=(e,t,n)=>{if(t._n)return t;const r=ge((...s)=>Ks(t(...s)),n);return r._c=!1,r},Ol=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Ml(s))continue;const o=e[s];if(q(o))t[s]=yu(s,o,r);else if(o!=null){const i=Ks(o);t[s]=()=>i}}},Hl=(e,t)=>{const n=Ks(t);e.slots.default=()=>n},Ll=(e,t,n)=>{for(const r in t)(n||r!=="_")&&(e[r]=t[r])},vu=(e,t,n)=>{const r=e.slots=kl();if(e.vnode.shapeFlag&32){const s=t._;s?(Ll(r,t,n),n&&$i(r,"_",s,!0)):Ol(t,r)}else t&&Hl(e,t)},bu=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=le;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:Ll(s,t,n):(o=!t.$stable,Ol(t,s)),i=t}else t&&(Hl(e,t),i={default:1});if(o)for(const l in s)!Ml(l)&&i[l]==null&&delete s[l]},Oe=Wl;function _u(e){return $l(e)}function wu(e){return $l(e,zc)}function $l(e,t){const n=dr();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:a,setText:f,setElementText:c,parentNode:u,nextSibling:d,setScopeId:h=Xe,insertStaticContent:g}=e,v=(p,m,_,C=null,x=null,T=null,H=void 0,I=null,R=!!m.dynamicChildren)=>{if(p===m)return;p&&!Ye(p,m)&&(C=Pn(p),Ge(p,x,T,!0),p=null),m.patchFlag===-2&&(R=!1,m.dynamicChildren=null);const{type:A,ref:W,shapeFlag:L}=m;switch(A){case Lt:S(p,m,_,C);break;case ke:E(p,m,_,C);break;case cn:p==null&&$(m,_,C,H);break;case ve:P(p,m,_,C,x,T,H,I,R);break;default:L&1?w(p,m,_,C,x,T,H,I,R):L&6?B(p,m,_,C,x,T,H,I,R):(L&64||L&128)&&A.process(p,m,_,C,x,T,H,I,R,Nt)}W!=null&&x&&mn(W,p&&p.ref,T,m||p,!m)},S=(p,m,_,C)=>{if(p==null)r(m.el=l(m.children),_,C);else{const x=m.el=p.el;m.children!==p.children&&f(x,m.children)}},E=(p,m,_,C)=>{p==null?r(m.el=a(m.children||""),_,C):m.el=p.el},$=(p,m,_,C)=>{[p.el,p.anchor]=g(p.children,m,_,C,p.el,p.anchor)},y=({el:p,anchor:m},_,C)=>{let x;for(;p&&p!==m;)x=d(p),r(p,_,C),p=x;r(m,_,C)},b=({el:p,anchor:m})=>{let _;for(;p&&p!==m;)_=d(p),s(p),p=_;s(m)},w=(p,m,_,C,x,T,H,I,R)=>{m.type==="svg"?H="svg":m.type==="math"&&(H="mathml"),p==null?k(m,_,C,x,T,H,I,R):O(p,m,x,T,H,I,R)},k=(p,m,_,C,x,T,H,I)=>{let R,A;const{props:W,shapeFlag:L,transition:F,dirs:J}=p;if(R=p.el=i(p.type,T,W&&W.is,W),L&8?c(R,p.children):L&16&&Z(p.children,R,null,C,x,Fr(p,T),H,I),J&&ze(p,null,C,"created"),j(R,p,p.scopeId,H,C),W){for(const oe in W)oe!=="value"&&!Kt(oe)&&o(R,oe,null,W[oe],T,C);"value"in W&&o(R,"value",null,W.value,T),(A=W.onVnodeBeforeMount)&&Fe(A,C,p)}J&&ze(p,null,C,"beforeMount");const Y=Nl(x,F);Y&&F.beforeEnter(R),r(R,m,_),((A=W&&W.onVnodeMounted)||Y||J)&&Oe(()=>{A&&Fe(A,C,p),Y&&F.enter(R),J&&ze(p,null,C,"mounted")},x)},j=(p,m,_,C,x)=>{if(_&&h(p,_),C)for(let T=0;T{for(let A=R;A{const I=m.el=p.el;let{patchFlag:R,dynamicChildren:A,dirs:W}=m;R|=p.patchFlag&16;const L=p.props||le,F=m.props||le;let J;if(_&&Et(_,!1),(J=F.onVnodeBeforeUpdate)&&Fe(J,_,m,p),W&&ze(m,p,_,"beforeUpdate"),_&&Et(_,!0),(L.innerHTML&&F.innerHTML==null||L.textContent&&F.textContent==null)&&c(I,""),A?M(p.dynamicChildren,A,I,_,C,Fr(m,x),T):H||U(p,m,I,null,_,C,Fr(m,x),T,!1),R>0){if(R&16)V(I,L,F,_,x);else if(R&2&&L.class!==F.class&&o(I,"class",null,F.class,x),R&4&&o(I,"style",L.style,F.style,x),R&8){const Y=m.dynamicProps;for(let oe=0;oe{J&&Fe(J,_,m,p),W&&ze(m,p,_,"updated")},C)},M=(p,m,_,C,x,T,H)=>{for(let I=0;I{if(m!==_){if(m!==le)for(const T in m)!Kt(T)&&!(T in _)&&o(p,T,m[T],null,x,C);for(const T in _){if(Kt(T))continue;const H=_[T],I=m[T];H!==I&&T!=="value"&&o(p,T,I,H,x,C)}"value"in _&&o(p,"value",m.value,_.value,x)}},P=(p,m,_,C,x,T,H,I,R)=>{const A=m.el=p?p.el:l(""),W=m.anchor=p?p.anchor:l("");let{patchFlag:L,dynamicChildren:F,slotScopeIds:J}=m;J&&(I=I?I.concat(J):J),p==null?(r(A,_,C),r(W,_,C),Z(m.children||[],_,W,x,T,H,I,R)):L>0&&L&64&&F&&p.dynamicChildren?(M(p.dynamicChildren,F,_,x,T,H,I),(m.key!=null||x&&m===x.subTree)&&Dl(p,m,!0)):U(p,m,_,W,x,T,H,I,R)},B=(p,m,_,C,x,T,H,I,R)=>{m.slotScopeIds=I,p==null?m.shapeFlag&512?x.ctx.activate(m,_,C,H,R):X(m,_,C,x,T,H,R):se(p,m,R)},X=(p,m,_,C,x,T,H)=>{const I=p.component=Vu(p,C,x);if(Tn(p)&&(I.ctx.renderer=Nt),Wu(I,!1,H),I.asyncDep){if(x&&x.registerDep(I,D,H),!p.el){const R=I.subTree=G(ke);E(null,R,m,_)}}else D(I,p,m,_,x,T,H)},se=(p,m,_)=>{const C=m.component=p.component;if(Iu(p,m,_))if(C.asyncDep&&!C.asyncResolved){z(C,m,_);return}else C.next=m,C.update();else m.el=p.el,C.vnode=m},D=(p,m,_,C,x,T,H)=>{const I=()=>{if(p.isMounted){let{next:L,bu:F,u:J,parent:Y,vnode:oe}=p;{const Ie=jl(p);if(Ie){L&&(L.el=oe.el,z(p,L,H)),Ie.asyncDep.then(()=>{p.isUnmounted||I()});return}}let ne=L,Re;Et(p,!1),L?(L.el=oe.el,z(p,L,H)):L=oe,F&&Mr(F),(Re=L.props&&L.props.onVnodeBeforeUpdate)&&Fe(Re,Y,L,oe),Et(p,!0);const xe=Ur(p),Ve=p.subTree;p.subTree=xe,v(Ve,xe,u(Ve.el),Pn(Ve),p,x,T),L.el=xe.el,ne===null&&_r(p,xe.el),J&&Oe(J,x),(Re=L.props&&L.props.onVnodeUpdated)&&Oe(()=>Fe(Re,Y,L,oe),x)}else{let L;const{el:F,props:J}=m,{bm:Y,m:oe,parent:ne,root:Re,type:xe}=p,Ve=Gt(m);if(Et(p,!1),Y&&Mr(Y),!Ve&&(L=J&&J.onVnodeBeforeMount)&&Fe(L,ne,m),Et(p,!0),F&&Rr){const Ie=()=>{p.subTree=Ur(p),Rr(F,p.subTree,p,x,null)};Ve&&xe.__asyncHydrate?xe.__asyncHydrate(F,p,Ie):Ie()}else{Re.ce&&Re.ce._injectChildStyle(xe);const Ie=p.subTree=Ur(p);v(null,Ie,_,C,p,x,T),m.el=Ie.el}if(oe&&Oe(oe,x),!Ve&&(L=J&&J.onVnodeMounted)){const Ie=m;Oe(()=>Fe(L,ne,Ie),x)}(m.shapeFlag&256||ne&&Gt(ne.vnode)&&ne.vnode.shapeFlag&256)&&p.a&&Oe(p.a,x),p.isMounted=!0,m=_=C=null}};p.scope.on();const R=p.effect=new Vi(I);p.scope.off();const A=p.update=R.run.bind(R),W=p.job=R.runIfDirty.bind(R);W.i=p,W.id=p.uid,R.scheduler=()=>Us(W),Et(p,!0),A()},z=(p,m,_)=>{m.component=p;const C=p.vnode.props;p.vnode=m,p.next=null,gu(p,m.props,C,_),bu(p,m.children,_),_t(),wo(p),wt()},U=(p,m,_,C,x,T,H,I,R=!1)=>{const A=p&&p.children,W=p?p.shapeFlag:0,L=m.children,{patchFlag:F,shapeFlag:J}=m;if(F>0){if(F&128){kn(A,L,_,C,x,T,H,I,R);return}else if(F&256){_e(A,L,_,C,x,T,H,I,R);return}}J&8?(W&16&&en(A,x,T),L!==A&&c(_,L)):W&16?J&16?kn(A,L,_,C,x,T,H,I,R):en(A,x,T,!0):(W&8&&c(_,""),J&16&&Z(L,_,C,x,T,H,I,R))},_e=(p,m,_,C,x,T,H,I,R)=>{p=p||Vt,m=m||Vt;const A=p.length,W=m.length,L=Math.min(A,W);let F;for(F=0;FW?en(p,x,T,!0,!1,L):Z(m,_,C,x,T,H,I,R,L)},kn=(p,m,_,C,x,T,H,I,R)=>{let A=0;const W=m.length;let L=p.length-1,F=W-1;for(;A<=L&&A<=F;){const J=p[A],Y=m[A]=R?ht(m[A]):Le(m[A]);if(Ye(J,Y))v(J,Y,_,null,x,T,H,I,R);else break;A++}for(;A<=L&&A<=F;){const J=p[L],Y=m[F]=R?ht(m[F]):Le(m[F]);if(Ye(J,Y))v(J,Y,_,null,x,T,H,I,R);else break;L--,F--}if(A>L){if(A<=F){const J=F+1,Y=JF)for(;A<=L;)Ge(p[A],x,T,!0),A++;else{const J=A,Y=A,oe=new Map;for(A=Y;A<=F;A++){const Me=m[A]=R?ht(m[A]):Le(m[A]);Me.key!=null&&oe.set(Me.key,A)}let ne,Re=0;const xe=F-Y+1;let Ve=!1,Ie=0;const tn=new Array(xe);for(A=0;A=xe){Ge(Me,x,T,!0);continue}let Ze;if(Me.key!=null)Ze=oe.get(Me.key);else for(ne=Y;ne<=F;ne++)if(tn[ne-Y]===0&&Ye(Me,m[ne])){Ze=ne;break}Ze===void 0?Ge(Me,x,T,!0):(tn[Ze-Y]=A+1,Ze>=Ie?Ie=Ze:Ve=!0,v(Me,m[Ze],_,null,x,T,H,I,R),Re++)}const go=Ve?xu(tn):Vt;for(ne=go.length-1,A=xe-1;A>=0;A--){const Me=Y+A,Ze=m[Me],mo=Me+1{const{el:T,type:H,transition:I,children:R,shapeFlag:A}=p;if(A&6){Tt(p.component.subTree,m,_,C);return}if(A&128){p.suspense.move(m,_,C);return}if(A&64){H.move(p,m,_,Nt);return}if(H===ve){r(T,m,_);for(let L=0;LI.enter(T),x);else{const{leave:L,delayLeave:F,afterLeave:J}=I,Y=()=>r(T,m,_),oe=()=>{L(T,()=>{Y(),J&&J()})};F?F(T,Y,oe):oe()}else r(T,m,_)},Ge=(p,m,_,C=!1,x=!1)=>{const{type:T,props:H,ref:I,children:R,dynamicChildren:A,shapeFlag:W,patchFlag:L,dirs:F,cacheIndex:J}=p;if(L===-2&&(x=!1),I!=null&&mn(I,null,_,p,!0),J!=null&&(m.renderCache[J]=void 0),W&256){m.ctx.deactivate(p);return}const Y=W&1&&F,oe=!Gt(p);let ne;if(oe&&(ne=H&&H.onVnodeBeforeUnmount)&&Fe(ne,m,p),W&6)Ja(p.component,_,C);else{if(W&128){p.suspense.unmount(_,C);return}Y&&ze(p,null,m,"beforeUnmount"),W&64?p.type.remove(p,m,_,Nt,C):A&&!A.hasOnce&&(T!==ve||L>0&&L&64)?en(A,m,_,!1,!0):(T===ve&&L&384||!x&&W&16)&&en(R,m,_),C&&ho(p)}(oe&&(ne=H&&H.onVnodeUnmounted)||Y)&&Oe(()=>{ne&&Fe(ne,m,p),Y&&ze(p,null,m,"unmounted")},_)},ho=p=>{const{type:m,el:_,anchor:C,transition:x}=p;if(m===ve){Za(_,C);return}if(m===cn){b(p);return}const T=()=>{s(_),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(p.shapeFlag&1&&x&&!x.persisted){const{leave:H,delayLeave:I}=x,R=()=>H(_,T);I?I(p.el,T,R):R()}else T()},Za=(p,m)=>{let _;for(;p!==m;)_=d(p),s(p),p=_;s(m)},Ja=(p,m,_)=>{const{bum:C,scope:x,job:T,subTree:H,um:I,m:R,a:A}=p;Oo(R),Oo(A),C&&Mr(C),x.stop(),T&&(T.flags|=8,Ge(H,p,m,_)),I&&Oe(I,m),Oe(()=>{p.isUnmounted=!0},m),m&&m.pendingBranch&&!m.isUnmounted&&p.asyncDep&&!p.asyncResolved&&p.suspenseId===m.pendingId&&(m.deps--,m.deps===0&&m.resolve())},en=(p,m,_,C=!1,x=!1,T=0)=>{for(let H=T;H{if(p.shapeFlag&6)return Pn(p.component.subTree);if(p.shapeFlag&128)return p.suspense.next();const m=d(p.anchor||p.el),_=m&&m[Wc];return _?d(_):m};let kr=!1;const po=(p,m,_)=>{p==null?m._vnode&&Ge(m._vnode,null,null,!0):v(m._vnode||null,p,m,null,null,null,_),m._vnode=p,kr||(kr=!0,wo(),zn(),kr=!1)},Nt={p:v,um:Ge,m:Tt,r:ho,mt:X,mc:Z,pc:U,pbc:M,n:Pn,o:e};let Pr,Rr;return t&&([Pr,Rr]=t(Nt)),{render:po,hydrate:Pr,createApp:hu(po,Pr)}}function Fr({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function Et({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Nl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Dl(e,t,n=!1){const r=e.children,s=t.children;if(K(r)&&K(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function jl(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:jl(t)}function Oo(e){if(e)for(let t=0;tit(Su);function Qt(e,t){return qs(e,null,t)}function Un(e,t,n){return qs(e,t,n)}function qs(e,t,n=le){const{immediate:r,deep:s,flush:o,once:i}=n,l=pe({},n),a=t&&r||!t&&o!=="post";let f;if(zt){if(o==="sync"){const h=Tu();f=h.__watcherHandles||(h.__watcherHandles=[])}else if(!a){const h=()=>{};return h.stop=Xe,h.resume=Xe,h.pause=Xe,h}}const c=ye;l.call=(h,g,v)=>Ke(h,c,g,v);let u=!1;o==="post"?l.scheduler=h=>{Oe(h,c&&c.suspense)}:o!=="sync"&&(u=!0,l.scheduler=(h,g)=>{g?h():Us(h)}),l.augmentJob=h=>{t&&(h.flags|=4),u&&(h.flags|=2,c&&(h.id=c.uid,h.i=c))};const d=Uc(e,t,l);return zt&&(f?f.push(d):a&&d()),d}function Eu(e,t,n){const r=this.proxy,s=ue(e)?e.includes(".")?Fl(r,e):()=>r[e]:e.bind(r,r);let o;q(t)?o=t:(o=t.handler,n=t);const i=Cn(this),l=qs(s,o.bind(r),n);return i(),l}function Fl(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;st==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Be(t)}Modifiers`]||e[`${$t(t)}Modifiers`];function Au(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||le;let s=n;const o=t.startsWith("update:"),i=o&&Cu(r,t.slice(7));i&&(i.trim&&(s=n.map(c=>ue(c)?c.trim():c)),i.number&&(s=n.map(rc)));let l,a=r[l=Ir(t)]||r[l=Ir(Be(t))];!a&&o&&(a=r[l=Ir($t(t))]),a&&Ke(a,e,6,s);const f=r[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ke(f,e,6,s)}}function Ul(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!q(e)){const a=f=>{const c=Ul(f,t,!0);c&&(l=!0,pe(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!l?(ae(e)&&r.set(e,null),null):(K(o)?o.forEach(a=>i[a]=null):pe(i,o),ae(e)&&r.set(e,i),i)}function br(e,t){return!e||!xn(t)?!1:(t=t.slice(2).replace(/Once$/,""),te(e,t[0].toLowerCase()+t.slice(1))||te(e,$t(t))||te(e,t))}function Ur(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:i,attrs:l,emit:a,render:f,renderCache:c,props:u,data:d,setupState:h,ctx:g,inheritAttrs:v}=e,S=Yn(e);let E,$;try{if(n.shapeFlag&4){const b=s||r,w=b;E=Le(f.call(w,b,c,u,h,d,g)),$=l}else{const b=t;E=Le(b.length>1?b(u,{attrs:l,slots:i,emit:a}):b(u,null)),$=t.props?l:Pu(l)}}catch(b){un.length=0,Xt(b,e,1),E=G(ke)}let y=E;if($&&v!==!1){const b=Object.keys($),{shapeFlag:w}=y;b.length&&w&7&&(o&&b.some(Is)&&($=Ru($,o)),y=lt(y,$,!1,!0))}return n.dirs&&(y=lt(y,null,!1,!0),y.dirs=y.dirs?y.dirs.concat(n.dirs):n.dirs),n.transition&&gn(y,n.transition),E=y,Yn(S),E}function ku(e,t=!0){let n;for(let r=0;r{let t;for(const n in e)(n==="class"||n==="style"||xn(n))&&((t||(t={}))[n]=e[n]);return t},Ru=(e,t)=>{const n={};for(const r in e)(!Is(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Iu(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:a}=t,f=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?Ho(r,i,f):!!i;if(a&8){const c=t.dynamicProps;for(let u=0;ue.__isSuspense;let ls=0;const Mu={name:"Suspense",__isSuspense:!0,process(e,t,n,r,s,o,i,l,a,f){if(e==null)Hu(t,n,r,s,o,i,l,a,f);else{if(o&&o.deps>0&&!e.suspense.isInFallback){t.suspense=e.suspense,t.suspense.vnode=t,t.el=e.el;return}Lu(e,t,n,r,s,i,l,a,f)}},hydrate:$u,normalize:Nu},Ou=Mu;function yn(e,t){const n=e.props&&e.props[t];q(n)&&n()}function Hu(e,t,n,r,s,o,i,l,a){const{p:f,o:{createElement:c}}=a,u=c("div"),d=e.suspense=Vl(e,s,r,t,u,n,o,i,l,a);f(null,d.pendingBranch=e.ssContent,u,null,r,d,o,i),d.deps>0?(yn(e,"onPending"),yn(e,"onFallback"),f(null,e.ssFallback,t,n,r,null,o,i),Zt(d,e.ssFallback)):d.resolve(!1,!0)}function Lu(e,t,n,r,s,o,i,l,{p:a,um:f,o:{createElement:c}}){const u=t.suspense=e.suspense;u.vnode=t,t.el=e.el;const d=t.ssContent,h=t.ssFallback,{activeBranch:g,pendingBranch:v,isInFallback:S,isHydrating:E}=u;if(v)u.pendingBranch=d,Ye(d,v)?(a(v,d,u.hiddenContainer,null,s,u,o,i,l),u.deps<=0?u.resolve():S&&(E||(a(g,h,n,r,s,null,o,i,l),Zt(u,h)))):(u.pendingId=ls++,E?(u.isHydrating=!1,u.activeBranch=v):f(v,s,u),u.deps=0,u.effects.length=0,u.hiddenContainer=c("div"),S?(a(null,d,u.hiddenContainer,null,s,u,o,i,l),u.deps<=0?u.resolve():(a(g,h,n,r,s,null,o,i,l),Zt(u,h))):g&&Ye(d,g)?(a(g,d,n,r,s,u,o,i,l),u.resolve(!0)):(a(null,d,u.hiddenContainer,null,s,u,o,i,l),u.deps<=0&&u.resolve()));else if(g&&Ye(d,g))a(g,d,n,r,s,u,o,i,l),Zt(u,d);else if(yn(t,"onPending"),u.pendingBranch=d,d.shapeFlag&512?u.pendingId=d.component.suspenseId:u.pendingId=ls++,a(null,d,u.hiddenContainer,null,s,u,o,i,l),u.deps<=0)u.resolve();else{const{timeout:$,pendingId:y}=u;$>0?setTimeout(()=>{u.pendingId===y&&u.fallback(h)},$):$===0&&u.fallback(h)}}function Vl(e,t,n,r,s,o,i,l,a,f,c=!1){const{p:u,m:d,um:h,n:g,o:{parentNode:v,remove:S}}=f;let E;const $=Du(e);$&&t&&t.pendingBranch&&(E=t.pendingId,t.deps++);const y=e.props?Ni(e.props.timeout):void 0,b=o,w={vnode:e,parent:t,parentComponent:n,namespace:i,container:r,hiddenContainer:s,deps:0,pendingId:ls++,timeout:typeof y=="number"?y:-1,activeBranch:null,pendingBranch:null,isInFallback:!c,isHydrating:c,isUnmounted:!1,effects:[],resolve(k=!1,j=!1){const{vnode:Z,activeBranch:O,pendingBranch:M,pendingId:V,effects:P,parentComponent:B,container:X}=w;let se=!1;w.isHydrating?w.isHydrating=!1:k||(se=O&&M.transition&&M.transition.mode==="out-in",se&&(O.transition.afterLeave=()=>{V===w.pendingId&&(d(M,X,o===b?g(O):o,0),ts(P))}),O&&(v(O.el)===X&&(o=g(O)),h(O,B,w,!0)),se||d(M,X,o,0)),Zt(w,M),w.pendingBranch=null,w.isInFallback=!1;let D=w.parent,z=!1;for(;D;){if(D.pendingBranch){D.effects.push(...P),z=!0;break}D=D.parent}!z&&!se&&ts(P),w.effects=[],$&&t&&t.pendingBranch&&E===t.pendingId&&(t.deps--,t.deps===0&&!j&&t.resolve()),yn(Z,"onResolve")},fallback(k){if(!w.pendingBranch)return;const{vnode:j,activeBranch:Z,parentComponent:O,container:M,namespace:V}=w;yn(j,"onFallback");const P=g(Z),B=()=>{w.isInFallback&&(u(null,k,M,P,O,null,V,l,a),Zt(w,k))},X=k.transition&&k.transition.mode==="out-in";X&&(Z.transition.afterLeave=B),w.isInFallback=!0,h(Z,O,null,!0),X||B()},move(k,j,Z){w.activeBranch&&d(w.activeBranch,k,j,Z),w.container=k},next(){return w.activeBranch&&g(w.activeBranch)},registerDep(k,j,Z){const O=!!w.pendingBranch;O&&w.deps++;const M=k.vnode.el;k.asyncDep.catch(V=>{Xt(V,k,0)}).then(V=>{if(k.isUnmounted||w.isUnmounted||w.pendingId!==k.suspenseId)return;k.asyncResolved=!0;const{vnode:P}=k;cs(k,V,!1),M&&(P.el=M);const B=!M&&k.subTree.el;j(k,P,v(M||k.subTree.el),M?null:g(k.subTree),w,i,Z),B&&S(B),_r(k,P.el),O&&--w.deps===0&&w.resolve()})},unmount(k,j){w.isUnmounted=!0,w.activeBranch&&h(w.activeBranch,n,k,j),w.pendingBranch&&h(w.pendingBranch,n,k,j)}};return w}function $u(e,t,n,r,s,o,i,l,a){const f=t.suspense=Vl(t,r,n,e.parentNode,document.createElement("div"),null,s,o,i,l,!0),c=a(e,f.pendingBranch=t.ssContent,n,f,o,i);return f.deps===0&&f.resolve(!1,!0),c}function Nu(e){const{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=Lo(r?n.default:n),e.ssFallback=r?Lo(n.fallback):G(ke)}function Lo(e){let t;if(q(e)){const n=Jt&&e._c;n&&(e._d=!1,re()),e=e(),n&&(e._d=!0,t=Pe,Kl())}return K(e)&&(e=ku(e)),e=Le(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function Wl(e,t){t&&t.pendingBranch?K(e)?t.effects.push(...e):t.effects.push(e):ts(e)}function Zt(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e;let s=t.el;for(;!s&&t.component;)t=t.component.subTree,s=t.el;n.el=s,r&&r.subTree===n&&(r.vnode.el=s,_r(r,s))}function Du(e){const t=e.props&&e.props.suspensible;return t!=null&&t!==!1}const ve=Symbol.for("v-fgt"),Lt=Symbol.for("v-txt"),ke=Symbol.for("v-cmt"),cn=Symbol.for("v-stc"),un=[];let Pe=null;function re(e=!1){un.push(Pe=e?null:[])}function Kl(){un.pop(),Pe=un[un.length-1]||null}let Jt=1;function $o(e,t=!1){Jt+=e,e<0&&Pe&&t&&(Pe.hasOnce=!0)}function ql(e){return e.dynamicChildren=Jt>0?Pe||Vt:null,Kl(),Jt>0&&Pe&&Pe.push(e),e}function de(e,t,n,r,s,o){return ql(N(e,t,n,r,s,o,!0))}function Rt(e,t,n,r,s){return ql(G(e,t,n,r,s,!0))}function vn(e){return e?e.__v_isVNode===!0:!1}function Ye(e,t){return e.type===t.type&&e.key===t.key}const Gl=({key:e})=>e??null,Bn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?ue(e)||be(e)||q(e)?{i:$e,r:e,k:t,f:!!n}:e:null);function N(e,t=null,n=null,r=0,s=null,o=e===ve?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Gl(t),ref:t&&Bn(t),scopeId:cl,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:$e};return l?(Zs(a,n),o&128&&e.normalize(a)):n&&(a.shapeFlag|=ue(n)?8:16),Jt>0&&!i&&Pe&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&Pe.push(a),a}const G=ju;function ju(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===wl)&&(e=ke),vn(e)){const l=lt(e,t,!0);return n&&Zs(l,n),Jt>0&&!o&&Pe&&(l.shapeFlag&6?Pe[Pe.indexOf(e)]=l:Pe.push(l)),l.patchFlag=-2,l}if(Ju(e)&&(e=e.__vccOpts),t){t=Zl(t);let{class:l,style:a}=t;l&&!ue(l)&&(t.class=pr(l)),ae(a)&&(Fs(a)&&!K(a)&&(a=pe({},a)),t.style=hr(a))}const i=ue(e)?1:Bl(e)?128:ul(e)?64:ae(e)?4:q(e)?2:0;return N(e,t,n,r,s,i,o,!0)}function Zl(e){return e?Fs(e)||Pl(e)?pe({},e):e:null}function lt(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:i,children:l,transition:a}=e,f=t?Fu(s||{},t):s,c={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&Gl(f),ref:t&&t.ref?n&&o?K(o)?o.concat(Bn(t)):[o,Bn(t)]:Bn(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ve?i===-1?16:i|16:i,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&<(e.ssContent),ssFallback:e.ssFallback&<(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&r&&gn(c,a.clone(c)),c}function Ne(e=" ",t=0){return G(Lt,null,e,t)}function Gs(e,t){const n=G(cn,null,e);return n.staticCount=t,n}function Le(e){return e==null||typeof e=="boolean"?G(ke):K(e)?G(ve,null,e.slice()):vn(e)?ht(e):G(Lt,null,String(e))}function ht(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:lt(e)}function Zs(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(K(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Zs(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Pl(t)?t._ctx=$e:s===3&&$e&&($e.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:$e},n=32):(t=String(t),r&64?(n=16,t=[Ne(t)]):n=8);e.children=t,e.shapeFlag|=n}function Fu(...e){const t={};for(let n=0;nye||$e;let Qn,as;{const e=dr(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Qn=t("__VUE_INSTANCE_SETTERS__",n=>ye=n),as=t("__VUE_SSR_SETTERS__",n=>zt=n)}const Cn=e=>{const t=ye;return Qn(e),e.scope.on(),()=>{e.scope.off(),Qn(t)}},No=()=>{ye&&ye.scope.off(),Qn(null)};function Jl(e){return e.vnode.shapeFlag&4}let zt=!1;function Wu(e,t=!1,n=!1){t&&as(t);const{props:r,children:s}=e.vnode,o=Jl(e);pu(e,r,o,t),vu(e,s,n);const i=o?Ku(e,t):void 0;return t&&as(!1),i}function Ku(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,iu);const{setup:r}=n;if(r){_t();const s=e.setupContext=r.length>1?Gu(e):null,o=Cn(e),i=Sn(r,e,0,[e.props,s]),l=Oi(i);if(wt(),o(),(l||e.sp)&&!Gt(e)&&Bs(e),l){if(i.then(No,No),t)return i.then(a=>{cs(e,a,t)}).catch(a=>{Xt(a,e,0)});e.asyncDep=i}else cs(e,i,t)}else zl(e,t)}function cs(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ae(t)&&(e.setupState=ol(t)),zl(e,n)}let Do;function zl(e,t,n){const r=e.type;if(!e.render){if(!t&&Do&&!r.render){const s=r.template||Ws(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:a}=r,f=pe(pe({isCustomElement:o,delimiters:l},i),a);r.render=Do(s,f)}}e.render=r.render||Xe}{const s=Cn(e);_t();try{lu(e)}finally{wt(),s()}}}const qu={get(e,t){return Se(e,"get",""),e[t]}};function Gu(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,qu),slots:e.slots,emit:e.emit,expose:t}}function zs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ol(Ic(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in an)return an[n](e)},has(t,n){return n in t||n in an}})):e.proxy}function Zu(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Ju(e){return q(e)&&"__vccOpts"in e}const me=(e,t)=>jc(e,t,zt);function bn(e,t,n){const r=arguments.length;return r===2?ae(t)&&!K(t)?vn(t)?G(e,null,[t]):G(e,t):G(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&vn(n)&&(n=[n]),G(e,t,n))}const Yl="3.5.13";/** +* @vue/runtime-dom v3.5.13 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let us;const jo=typeof window<"u"&&window.trustedTypes;if(jo)try{us=jo.createPolicy("vue",{createHTML:e=>e})}catch{}const Xl=us?e=>us.createHTML(e):e=>e,zu="http://www.w3.org/2000/svg",Yu="http://www.w3.org/1998/Math/MathML",rt=typeof document<"u"?document:null,Fo=rt&&rt.createElement("template"),Xu={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?rt.createElementNS(zu,e):t==="mathml"?rt.createElementNS(Yu,e):n?rt.createElement(e,{is:n}):rt.createElement(e);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>rt.createTextNode(e),createComment:e=>rt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>rt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Fo.innerHTML=Xl(r==="svg"?`${e}`:r==="mathml"?`${e}`:e);const l=Fo.content;if(r==="svg"||r==="mathml"){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ut="transition",rn="animation",_n=Symbol("_vtc"),Ql={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Qu=pe({},fl,Ql),ef=e=>(e.displayName="Transition",e.props=Qu,e),Uo=ef((e,{slots:t})=>bn(Gc,tf(e),t)),Ct=(e,t=[])=>{K(e)?e.forEach(n=>n(...t)):e&&e(...t)},Bo=e=>e?K(e)?e.some(t=>t.length>1):e.length>1:!1;function tf(e){const t={};for(const P in e)P in Ql||(t[P]=e[P]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=o,appearActiveClass:f=i,appearToClass:c=l,leaveFromClass:u=`${n}-leave-from`,leaveActiveClass:d=`${n}-leave-active`,leaveToClass:h=`${n}-leave-to`}=e,g=nf(s),v=g&&g[0],S=g&&g[1],{onBeforeEnter:E,onEnter:$,onEnterCancelled:y,onLeave:b,onLeaveCancelled:w,onBeforeAppear:k=E,onAppear:j=$,onAppearCancelled:Z=y}=t,O=(P,B,X,se)=>{P._enterCancelled=se,At(P,B?c:l),At(P,B?f:i),X&&X()},M=(P,B)=>{P._isLeaving=!1,At(P,u),At(P,h),At(P,d),B&&B()},V=P=>(B,X)=>{const se=P?j:$,D=()=>O(B,P,X);Ct(se,[B,D]),Vo(()=>{At(B,P?a:o),nt(B,P?c:l),Bo(se)||Wo(B,r,v,D)})};return pe(t,{onBeforeEnter(P){Ct(E,[P]),nt(P,o),nt(P,i)},onBeforeAppear(P){Ct(k,[P]),nt(P,a),nt(P,f)},onEnter:V(!1),onAppear:V(!0),onLeave(P,B){P._isLeaving=!0;const X=()=>M(P,B);nt(P,u),P._enterCancelled?(nt(P,d),Go()):(Go(),nt(P,d)),Vo(()=>{P._isLeaving&&(At(P,u),nt(P,h),Bo(b)||Wo(P,r,S,X))}),Ct(b,[P,X])},onEnterCancelled(P){O(P,!1,void 0,!0),Ct(y,[P])},onAppearCancelled(P){O(P,!0,void 0,!0),Ct(Z,[P])},onLeaveCancelled(P){M(P),Ct(w,[P])}})}function nf(e){if(e==null)return null;if(ae(e))return[Br(e.enter),Br(e.leave)];{const t=Br(e);return[t,t]}}function Br(e){return Ni(e)}function nt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[_n]||(e[_n]=new Set)).add(t)}function At(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[_n];n&&(n.delete(t),n.size||(e[_n]=void 0))}function Vo(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let rf=0;function Wo(e,t,n,r){const s=e._endId=++rf,o=()=>{s===e._endId&&r()};if(n!=null)return setTimeout(o,n);const{type:i,timeout:l,propCount:a}=sf(e,t);if(!i)return r();const f=i+"end";let c=0;const u=()=>{e.removeEventListener(f,d),o()},d=h=>{h.target===e&&++c>=a&&u()};setTimeout(()=>{c(n[g]||"").split(", "),s=r(`${ut}Delay`),o=r(`${ut}Duration`),i=Ko(s,o),l=r(`${rn}Delay`),a=r(`${rn}Duration`),f=Ko(l,a);let c=null,u=0,d=0;t===ut?i>0&&(c=ut,u=i,d=o.length):t===rn?f>0&&(c=rn,u=f,d=a.length):(u=Math.max(i,f),c=u>0?i>f?ut:rn:null,d=c?c===ut?o.length:a.length:0);const h=c===ut&&/\b(transform|all)(,|$)/.test(r(`${ut}Property`).toString());return{type:c,timeout:u,propCount:d,hasTransform:h}}function Ko(e,t){for(;e.lengthqo(n)+qo(e[r])))}function qo(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Go(){return document.body.offsetHeight}function of(e,t,n){const r=e[_n];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Zo=Symbol("_vod"),lf=Symbol("_vsh"),af=Symbol(""),cf=/(^|;)\s*display\s*:/;function uf(e,t,n){const r=e.style,s=ue(n);let o=!1;if(n&&!s){if(t)if(ue(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&Vn(r,l,"")}else for(const i in t)n[i]==null&&Vn(r,i,"");for(const i in n)i==="display"&&(o=!0),Vn(r,i,n[i])}else if(s){if(t!==n){const i=r[af];i&&(n+=";"+i),r.cssText=n,o=cf.test(n)}}else t&&e.removeAttribute("style");Zo in e&&(e[Zo]=o?r.display:"",e[lf]&&(r.display="none"))}const Jo=/\s*!important$/;function Vn(e,t,n){if(K(n))n.forEach(r=>Vn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=ff(e,t);Jo.test(n)?e.setProperty($t(r),n.replace(Jo,""),"important"):e[r]=n}}const zo=["Webkit","Moz","ms"],Vr={};function ff(e,t){const n=Vr[t];if(n)return n;let r=Be(t);if(r!=="filter"&&r in e)return Vr[t]=r;r=fr(r);for(let s=0;sWr||(mf.then(()=>Wr=0),Wr=Date.now());function vf(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Ke(bf(r,n.value),t,5,[r])};return n.value=e,n.attached=yf(),n}function bf(e,t){if(K(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const ni=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,_f=(e,t,n,r,s,o)=>{const i=s==="svg";t==="class"?of(e,r,i):t==="style"?uf(e,n,r):xn(t)?Is(t)||pf(e,t,n,r,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):wf(e,t,r,i))?(Qo(e,t,r),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Xo(e,t,r,i,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ue(r))?Qo(e,Be(t),r,o,t):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),Xo(e,t,r,i))};function wf(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&ni(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return ni(t)&&ue(n)?!1:t in e}const ea=pe({patchProp:_f},Xu);let fn,ri=!1;function xf(){return fn||(fn=_u(ea))}function Sf(){return fn=ri?fn:wu(ea),ri=!0,fn}const Tf=(...e)=>{const t=xf().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=na(r);if(!s)return;const o=t._component;!q(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent="");const i=n(s,!1,ta(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},Ef=(...e)=>{const t=Sf().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=na(r);if(s)return n(s,!0,ta(s))},t};function ta(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function na(e){return ue(e)?document.querySelector(e):e}const Cf=/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,Af=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,kf=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/;function Pf(e,t){if(e==="__proto__"||e==="constructor"&&t&&typeof t=="object"&&"prototype"in t){Rf(e);return}return t}function Rf(e){console.warn(`[destr] Dropping "${e}" key to prevent prototype pollution.`)}function er(e,t={}){if(typeof e!="string")return e;const n=e.trim();if(e[0]==='"'&&e.endsWith('"')&&!e.includes("\\"))return n.slice(1,-1);if(n.length<=9){const r=n.toLowerCase();if(r==="true")return!0;if(r==="false")return!1;if(r==="undefined")return;if(r==="null")return null;if(r==="nan")return Number.NaN;if(r==="infinity")return Number.POSITIVE_INFINITY;if(r==="-infinity")return Number.NEGATIVE_INFINITY}if(!kf.test(e)){if(t.strict)throw new SyntaxError("[destr] Invalid JSON");return e}try{if(Cf.test(e)||Af.test(e)){if(t.strict)throw new Error("[destr] Possible prototype pollution");return JSON.parse(e,Pf)}return JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}const If=/#/g,Mf=/&/g,Of=/\//g,Hf=/=/g,Ys=/\+/g,Lf=/%5e/gi,$f=/%60/gi,Nf=/%7c/gi,Df=/%20/gi;function jf(e){return encodeURI(""+e).replace(Nf,"|")}function fs(e){return jf(typeof e=="string"?e:JSON.stringify(e)).replace(Ys,"%2B").replace(Df,"+").replace(If,"%23").replace(Mf,"%26").replace($f,"`").replace(Lf,"^").replace(Of,"%2F")}function Kr(e){return fs(e).replace(Hf,"%3D")}function tr(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function Ff(e){return tr(e.replace(Ys," "))}function Uf(e){return tr(e.replace(Ys," "))}function Xs(e=""){const t={};e[0]==="?"&&(e=e.slice(1));for(const n of e.split("&")){const r=n.match(/([^=]+)=?(.*)/)||[];if(r.length<2)continue;const s=Ff(r[1]);if(s==="__proto__"||s==="constructor")continue;const o=Uf(r[2]||"");t[s]===void 0?t[s]=o:Array.isArray(t[s])?t[s].push(o):t[s]=[t[s],o]}return t}function Bf(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${Kr(e)}=${fs(n)}`).join("&"):`${Kr(e)}=${fs(t)}`:Kr(e)}function ra(e){return Object.keys(e).filter(t=>e[t]!==void 0).map(t=>Bf(t,e[t])).filter(Boolean).join("&")}const Vf=/^[\s\w\0+.-]{2,}:([/\\]{1,2})/,Wf=/^[\s\w\0+.-]{2,}:([/\\]{2})?/,Kf=/^([/\\]\s*){2,}[^/\\]/,qf=/^[\s\0]*(blob|data|javascript|vbscript):$/i,Gf=/\/$|\/\?|\/#/,Zf=/^\.?\//;function xt(e,t={}){return typeof t=="boolean"&&(t={acceptRelative:t}),t.strict?Vf.test(e):Wf.test(e)||(t.acceptRelative?Kf.test(e):!1)}function Jf(e){return!!e&&qf.test(e)}function ds(e="",t){return t?Gf.test(e):e.endsWith("/")}function wr(e="",t){if(!t)return(ds(e)?e.slice(0,-1):e)||"/";if(!ds(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");s>=0&&(n=e.slice(0,s),r=e.slice(s));const[o,...i]=n.split("?");return((o.endsWith("/")?o.slice(0,-1):o)||"/")+(i.length>0?`?${i.join("?")}`:"")+r}function nr(e="",t){if(!t)return e.endsWith("/")?e:e+"/";if(ds(e,!0))return e||"/";let n=e,r="";const s=e.indexOf("#");if(s>=0&&(n=e.slice(0,s),r=e.slice(s),!n))return r;const[o,...i]=n.split("?");return o+"/"+(i.length>0?`?${i.join("?")}`:"")+r}function zf(e=""){return e.startsWith("/")}function si(e=""){return zf(e)?e:"/"+e}function Yf(e,t){if(oa(t)||xt(e))return e;const n=wr(t);return e.startsWith(n)?e:An(n,e)}function Xf(e,t){if(oa(t))return e;const n=wr(t);if(!e.startsWith(n))return e;const r=e.slice(n.length);return r[0]==="/"?r:"/"+r}function sa(e,t){const n=td(e),r={...Xs(n.search),...t};return n.search=ra(r),aa(n)}function oa(e){return!e||e==="/"}function Qf(e){return e&&e!=="/"}function An(e,...t){let n=e||"";for(const r of t.filter(s=>Qf(s)))if(n){const s=r.replace(Zf,"");n=nr(n)+s}else n=r;return n}function ia(...e){var i,l,a,f;const t=/\/(?!\/)/,n=e.filter(Boolean),r=[];let s=0;for(const c of n)if(!(!c||c==="/")){for(const[u,d]of c.split(t).entries())if(!(!d||d===".")){if(d===".."){if(r.length===1&&xt(r[0]))continue;r.pop(),s--;continue}if(u===1&&((i=r[r.length-1])!=null&&i.endsWith(":/"))){r[r.length-1]+="/"+d;continue}r.push(d),s++}}let o=r.join("/");return s>=0?(l=n[0])!=null&&l.startsWith("/")&&!o.startsWith("/")?o="/"+o:(a=n[0])!=null&&a.startsWith("./")&&!o.startsWith("./")&&(o="./"+o):o="../".repeat(-1*s)+o,(f=n[n.length-1])!=null&&f.endsWith("/")&&!o.endsWith("/")&&(o+="/"),o}function ed(e,t,n={}){return n.trailingSlash||(e=nr(e),t=nr(t)),n.leadingSlash||(e=si(e),t=si(t)),n.encoding||(e=tr(e),t=tr(t)),e===t}const la=Symbol.for("ufo:protocolRelative");function td(e="",t){const n=e.match(/^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i);if(n){const[,u,d=""]=n;return{protocol:u.toLowerCase(),pathname:d,href:u+d,auth:"",host:"",search:"",hash:""}}if(!xt(e,{acceptRelative:!0}))return oi(e);const[,r="",s,o=""]=e.replace(/\\/g,"/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/)||[];let[,i="",l=""]=o.match(/([^#/?]*)(.*)?/)||[];r==="file:"&&(l=l.replace(/\/(?=[A-Za-z]:)/,""));const{pathname:a,search:f,hash:c}=oi(l);return{protocol:r.toLowerCase(),auth:s?s.slice(0,Math.max(0,s.length-1)):"",host:i,pathname:a,search:f,hash:c,[la]:!r}}function oi(e=""){const[t="",n="",r=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function aa(e){const t=e.pathname||"",n=e.search?(e.search.startsWith("?")?"":"?")+e.search:"",r=e.hash||"",s=e.auth?e.auth+"@":"",o=e.host||"";return(e.protocol||e[la]?(e.protocol||"")+"//":"")+s+o+t+n+r}class nd extends Error{constructor(t,n){super(t,n),this.name="FetchError",n!=null&&n.cause&&!this.cause&&(this.cause=n.cause)}}function rd(e){var a,f,c,u,d;const t=((a=e.error)==null?void 0:a.message)||((f=e.error)==null?void 0:f.toString())||"",n=((c=e.request)==null?void 0:c.method)||((u=e.options)==null?void 0:u.method)||"GET",r=((d=e.request)==null?void 0:d.url)||String(e.request)||"/",s=`[${n}] ${JSON.stringify(r)}`,o=e.response?`${e.response.status} ${e.response.statusText}`:"",i=`${s}: ${o}${t?` ${t}`:""}`,l=new nd(i,e.error?{cause:e.error}:void 0);for(const h of["request","options","response"])Object.defineProperty(l,h,{get(){return e[h]}});for(const[h,g]of[["data","_data"],["status","status"],["statusCode","status"],["statusText","statusText"],["statusMessage","statusText"]])Object.defineProperty(l,h,{get(){return e.response&&e.response[g]}});return l}const sd=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function ii(e="GET"){return sd.has(e.toUpperCase())}function od(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.buffer?!1:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const id=new Set(["image/svg","application/xml","application/xhtml","application/html"]),ld=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function ad(e=""){if(!e)return"json";const t=e.split(";").shift()||"";return ld.test(t)?"json":id.has(t)||t.startsWith("text/")?"text":"blob"}function cd(e,t,n,r){const s=ud((t==null?void 0:t.headers)??(e==null?void 0:e.headers),n==null?void 0:n.headers,r);let o;return(n!=null&&n.query||n!=null&&n.params||t!=null&&t.params||t!=null&&t.query)&&(o={...n==null?void 0:n.params,...n==null?void 0:n.query,...t==null?void 0:t.params,...t==null?void 0:t.query}),{...n,...t,query:o,params:o,headers:s}}function ud(e,t,n){if(!t)return new n(e);const r=new n(t);if(e)for(const[s,o]of Symbol.iterator in e||Array.isArray(e)?e:new n(e))r.set(s,o);return r}async function $n(e,t){if(t)if(Array.isArray(t))for(const n of t)await n(e);else await t(e)}const fd=new Set([408,409,425,429,500,502,503,504]),dd=new Set([101,204,205,304]);function ca(e={}){const{fetch:t=globalThis.fetch,Headers:n=globalThis.Headers,AbortController:r=globalThis.AbortController}=e;async function s(l){const a=l.error&&l.error.name==="AbortError"&&!l.options.timeout||!1;if(l.options.retry!==!1&&!a){let c;typeof l.options.retry=="number"?c=l.options.retry:c=ii(l.options.method)?0:1;const u=l.response&&l.response.status||500;if(c>0&&(Array.isArray(l.options.retryStatusCodes)?l.options.retryStatusCodes.includes(u):fd.has(u))){const d=typeof l.options.retryDelay=="function"?l.options.retryDelay(l):l.options.retryDelay||0;return d>0&&await new Promise(h=>setTimeout(h,d)),o(l.request,{...l.options,retry:c-1})}}const f=rd(l);throw Error.captureStackTrace&&Error.captureStackTrace(f,o),f}const o=async function(a,f={}){const c={request:a,options:cd(a,f,e.defaults,n),response:void 0,error:void 0};c.options.method&&(c.options.method=c.options.method.toUpperCase()),c.options.onRequest&&await $n(c,c.options.onRequest),typeof c.request=="string"&&(c.options.baseURL&&(c.request=Yf(c.request,c.options.baseURL)),c.options.query&&(c.request=sa(c.request,c.options.query),delete c.options.query),"query"in c.options&&delete c.options.query,"params"in c.options&&delete c.options.params),c.options.body&&ii(c.options.method)&&(od(c.options.body)?(c.options.body=typeof c.options.body=="string"?c.options.body:JSON.stringify(c.options.body),c.options.headers=new n(c.options.headers||{}),c.options.headers.has("content-type")||c.options.headers.set("content-type","application/json"),c.options.headers.has("accept")||c.options.headers.set("accept","application/json")):("pipeTo"in c.options.body&&typeof c.options.body.pipeTo=="function"||typeof c.options.body.pipe=="function")&&("duplex"in c.options||(c.options.duplex="half")));let u;if(!c.options.signal&&c.options.timeout){const h=new r;u=setTimeout(()=>{const g=new Error("[TimeoutError]: The operation was aborted due to timeout");g.name="TimeoutError",g.code=23,h.abort(g)},c.options.timeout),c.options.signal=h.signal}try{c.response=await t(c.request,c.options)}catch(h){return c.error=h,c.options.onRequestError&&await $n(c,c.options.onRequestError),await s(c)}finally{u&&clearTimeout(u)}if((c.response.body||c.response._bodyInit)&&!dd.has(c.response.status)&&c.options.method!=="HEAD"){const h=(c.options.parseResponse?"json":c.options.responseType)||ad(c.response.headers.get("content-type")||"");switch(h){case"json":{const g=await c.response.text(),v=c.options.parseResponse||er;c.response._data=v(g);break}case"stream":{c.response._data=c.response.body||c.response._bodyInit;break}default:c.response._data=await c.response[h]()}}return c.options.onResponse&&await $n(c,c.options.onResponse),!c.options.ignoreResponseError&&c.response.status>=400&&c.response.status<600?(c.options.onResponseError&&await $n(c,c.options.onResponseError),await s(c)):c.response},i=async function(a,f){return(await o(a,f))._data};return i.raw=o,i.native=(...l)=>t(...l),i.create=(l={},a={})=>ca({...e,...a,defaults:{...e.defaults,...a.defaults,...l}}),i}const rr=function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")}(),hd=rr.fetch?(...e)=>rr.fetch(...e):()=>Promise.reject(new Error("[ofetch] global.fetch is not supported!")),pd=rr.Headers,gd=rr.AbortController,md=ca({fetch:hd,Headers:pd,AbortController:gd}),yd=md,vd=()=>{var e;return((e=window==null?void 0:window.__NUXT__)==null?void 0:e.config)||{}},sr=vd().app,bd=()=>sr.baseURL,_d=()=>sr.buildAssetsDir,Qs=(...e)=>ia(xr(),_d(),...e),xr=(...e)=>{const t=sr.cdnURL||sr.baseURL;return e.length?ia(t,...e):t};globalThis.__buildAssetsURL=Qs,globalThis.__publicAssetsURL=xr;globalThis.$fetch||(globalThis.$fetch=yd.create({baseURL:bd()}));function hs(e,t={},n){for(const r in e){const s=e[r],o=n?`${n}:${r}`:r;typeof s=="object"&&s!==null?hs(s,t,o):typeof s=="function"&&(t[o]=s)}return t}const wd={run:e=>e()},xd=()=>wd,ua=typeof console.createTask<"u"?console.createTask:xd;function Sd(e,t){const n=t.shift(),r=ua(n);return e.reduce((s,o)=>s.then(()=>r.run(()=>o(...t))),Promise.resolve())}function Td(e,t){const n=t.shift(),r=ua(n);return Promise.all(e.map(s=>r.run(()=>s(...t))))}function qr(e,t){for(const n of[...e])n(t)}class Ed{constructor(){this._hooks={},this._before=void 0,this._after=void 0,this._deprecatedMessages=void 0,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const s=t;let o;for(;this._deprecatedHooks[t];)o=this._deprecatedHooks[t],t=o.to;if(o&&!r.allowDeprecated){let i=o.message;i||(i=`${s} hook has been deprecated`+(o.to?`, please use ${o.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}if(!n.name)try{Object.defineProperty(n,"name",{get:()=>"_"+t.replace(/\W+/g,"_")+"_hook_cb",configurable:!0})}catch{}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=void 0)}}hookOnce(t,n){let r,s=(...o)=>(typeof r=="function"&&r(),r=void 0,s=void 0,n(...o));return r=this.hook(t,s),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];delete this._hooks[t];for(const s of r)this.hook(t,s)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=hs(t),r=Object.keys(n).map(s=>this.hook(s,n[s]));return()=>{for(const s of r.splice(0,r.length))s()}}removeHooks(t){const n=hs(t);for(const r in n)this.removeHook(r,n[r])}removeAllHooks(){for(const t in this._hooks)delete this._hooks[t]}callHook(t,...n){return n.unshift(t),this.callHookWith(Sd,t,...n)}callHookParallel(t,...n){return n.unshift(t),this.callHookWith(Td,t,...n)}callHookWith(t,n,...r){const s=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&qr(this._before,s);const o=t(n in this._hooks?[...this._hooks[n]]:[],r);return o instanceof Promise?o.finally(()=>{this._after&&s&&qr(this._after,s)}):(this._after&&s&&qr(this._after,s),o)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{if(this._before!==void 0){const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{if(this._after!==void 0){const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}}function fa(){return new Ed}function Cd(e={}){let t,n=!1;const r=i=>{if(t&&t!==i)throw new Error("Context conflict")};let s;if(e.asyncContext){const i=e.AsyncLocalStorage||globalThis.AsyncLocalStorage;i?s=new i:console.warn("[unctx] `AsyncLocalStorage` is not provided.")}const o=()=>{if(s){const i=s.getStore();if(i!==void 0)return i}return t};return{use:()=>{const i=o();if(i===void 0)throw new Error("Context is not available");return i},tryUse:()=>o(),set:(i,l)=>{l||r(i),t=i,n=!0},unset:()=>{t=void 0,n=!1},call:(i,l)=>{r(i),t=i;try{return s?s.run(i,l):l()}finally{n||(t=void 0)}},async callAsync(i,l){t=i;const a=()=>{t=i},f=()=>t===i?a:void 0;ps.add(f);try{const c=s?s.run(i,l):l();return n||(t=void 0),await c}finally{ps.delete(f)}}}}function Ad(e={}){const t={};return{get(n,r={}){return t[n]||(t[n]=Cd({...e,...r})),t[n]}}}const or=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},li="__unctx__",kd=or[li]||(or[li]=Ad()),Pd=(e,t={})=>kd.get(e,t),ai="__unctx_async_handlers__",ps=or[ai]||(or[ai]=new Set);function da(e){const t=[];for(const s of ps){const o=s();o&&t.push(o)}const n=()=>{for(const s of t)s()};let r=e();return r&&typeof r=="object"&&"catch"in r&&(r=r.catch(s=>{throw n(),s})),[r,n]}const Rd={componentName:"NuxtLink",prefetch:!0,prefetchOn:{visibility:!0}},Id=null,Md="#__nuxt",ha="nuxt-app",ci=36e5,Od="vite:preloadError";function pa(e=ha){return Pd(e,{asyncContext:!1})}const Hd="__nuxt_plugin";function Ld(e){var s;let t=0;const n={_id:e.id||ha||"nuxt-app",_scope:fc(),provide:void 0,globalName:"nuxt",versions:{get nuxt(){return"3.15.4"},get vue(){return n.vueApp.version}},payload:Ut({...((s=e.ssrContext)==null?void 0:s.payload)||{},data:Ut({}),state:yt({}),once:new Set,_errors:Ut({})}),static:{data:{}},runWithContext(o){return n._scope.active&&!Bi()?n._scope.run(()=>ui(n,o)):ui(n,o)},isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let o=!1;return()=>{if(!o&&(o=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:Ut({}),_payloadRevivers:{},...e};{const o=window.__NUXT__;if(o)for(const i in o)switch(i){case"data":case"state":case"_errors":Object.assign(n.payload[i],o[i]);break;default:n.payload[i]=o[i]}}n.hooks=fa(),n.hook=n.hooks.hook,n.callHook=n.hooks.callHook,n.provide=(o,i)=>{const l="$"+o;Nn(n,l,i),Nn(n.vueApp.config.globalProperties,l,i)},Nn(n.vueApp,"$nuxt",n),Nn(n.vueApp.config.globalProperties,"$nuxt",n);{window.addEventListener(Od,i=>{n.callHook("app:chunkError",{error:i.payload}),(n.isHydrating||i.payload.message.includes("Unable to preload CSS"))&&i.preventDefault()}),window.useNuxtApp=window.useNuxtApp||he;const o=n.hook("app:error",(...i)=>{console.error("[nuxt] error caught during app initialization",...i)});n.hook("app:mounted",o)}const r=n.payload.config;return n.provide("config",r),n}function $d(e,t){t.hooks&&e.hooks.addHooks(t.hooks)}async function Nd(e,t){if(typeof t=="function"){const{provide:n}=await e.runWithContext(()=>t(e))||{};if(n&&typeof n=="object")for(const r in n)e.provide(r,n[r])}}async function Dd(e,t){const n=[],r=[],s=[],o=[];let i=0;async function l(a){var c;const f=((c=a.dependsOn)==null?void 0:c.filter(u=>t.some(d=>d._name===u)&&!n.includes(u)))??[];if(f.length>0)r.push([new Set(f),a]);else{const u=Nd(e,a).then(async()=>{a._name&&(n.push(a._name),await Promise.all(r.map(async([d,h])=>{d.has(a._name)&&(d.delete(a._name),d.size===0&&(i++,await l(h)))})))});a.parallel?s.push(u.catch(d=>o.push(d))):await u}}for(const a of t)$d(e,a);for(const a of t)await l(a);if(await Promise.all(s),i)for(let a=0;a{}),e,{[Hd]:!0,_name:t})}function ui(e,t,n){const r=()=>t();return pa(e._id).set(e),e.vueApp.runWithContext(r)}function jd(e){var n;let t;return Cl()&&(t=(n=Js())==null?void 0:n.appContext.app.$nuxt),t=t||pa(e).tryUse(),t||null}function he(e){const t=jd(e);if(!t)throw new Error("[nuxt] instance unavailable");return t}function Yt(e){return he().$config}function Nn(e,t,n){Object.defineProperty(e,t,{get:()=>n})}function Fd(e,t){return{ctx:{table:e},matchAll:n=>ma(n,e)}}function ga(e){const t={};for(const n in e)t[n]=n==="dynamic"?new Map(Object.entries(e[n]).map(([r,s])=>[r,ga(s)])):new Map(Object.entries(e[n]));return t}function Ud(e){return Fd(ga(e))}function ma(e,t,n){e.endsWith("/")&&(e=e.slice(0,-1)||"/");const r=[];for(const[o,i]of fi(t.wildcard))(e===o||e.startsWith(o+"/"))&&r.push(i);for(const[o,i]of fi(t.dynamic))if(e.startsWith(o+"/")){const l="/"+e.slice(o.length).split("/").splice(2).join("/");r.push(...ma(l,i))}const s=t.static.get(e);return s&&r.push(s),r.filter(Boolean)}function fi(e){return[...e.entries()].sort((t,n)=>t[0].length-n[0].length)}function Gr(e){if(e===null||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);return t!==null&&t!==Object.prototype&&Object.getPrototypeOf(t)!==null||Symbol.iterator in e?!1:Symbol.toStringTag in e?Object.prototype.toString.call(e)==="[object Module]":!0}function gs(e,t,n=".",r){if(!Gr(t))return gs(e,{},n,r);const s=Object.assign({},t);for(const o in e){if(o==="__proto__"||o==="constructor")continue;const i=e[o];i!=null&&(r&&r(s,o,i,n)||(Array.isArray(i)&&Array.isArray(s[o])?s[o]=[...i,...s[o]]:Gr(i)&&Gr(s[o])?s[o]=gs(i,s[o],(n?`${n}.`:"")+o.toString(),r):s[o]=i))}return s}function Bd(e){return(...t)=>t.reduce((n,r)=>gs(n,r,"",e),{})}const Vd=Bd();function Wd(e,t){try{return t in e}catch{return!1}}class ms extends Error{constructor(n,r={}){super(n,r);ct(this,"statusCode",500);ct(this,"fatal",!1);ct(this,"unhandled",!1);ct(this,"statusMessage");ct(this,"data");ct(this,"cause");r.cause&&!this.cause&&(this.cause=r.cause)}toJSON(){const n={message:this.message,statusCode:ys(this.statusCode,500)};return this.statusMessage&&(n.statusMessage=ya(this.statusMessage)),this.data!==void 0&&(n.data=this.data),n}}ct(ms,"__h3_error__",!0);function Kd(e){if(typeof e=="string")return new ms(e);if(qd(e))return e;const t=new ms(e.message??e.statusMessage??"",{cause:e.cause||e});if(Wd(e,"stack"))try{Object.defineProperty(t,"stack",{get(){return e.stack}})}catch{try{t.stack=e.stack}catch{}}if(e.data&&(t.data=e.data),e.statusCode?t.statusCode=ys(e.statusCode,t.statusCode):e.status&&(t.statusCode=ys(e.status,t.statusCode)),e.statusMessage?t.statusMessage=e.statusMessage:e.statusText&&(t.statusMessage=e.statusText),t.statusMessage){const n=t.statusMessage;ya(t.statusMessage)!==n&&console.warn("[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default.")}return e.fatal!==void 0&&(t.fatal=e.fatal),e.unhandled!==void 0&&(t.unhandled=e.unhandled),t}function qd(e){var t;return((t=e==null?void 0:e.constructor)==null?void 0:t.__h3_error__)===!0}const Gd=/[^\u0009\u0020-\u007E]/g;function ya(e=""){return e.replace(Gd,"")}function ys(e,t=200){return!e||(typeof e=="string"&&(e=Number.parseInt(e,10)),e<100||e>999)?t:e}const va=Symbol("route"),et=()=>{var e;return(e=he())==null?void 0:e.$router},ba=()=>Cl()?it(va,he()._route):he()._route;const Zd=()=>{try{if(he()._processingMiddleware)return!0}catch{return!1}return!1},_a=(e,t)=>{e||(e="/");const n=typeof e=="string"?e:"path"in e?vs(e):et().resolve(e).href;if(t!=null&&t.open){const{target:a="_blank",windowFeatures:f={}}=t.open,c=Object.entries(f).filter(([u,d])=>d!==void 0).map(([u,d])=>`${u.toLowerCase()}=${d}`).join(", ");return open(n,a,c),Promise.resolve()}const r=xt(n,{acceptRelative:!0}),s=(t==null?void 0:t.external)||r;if(s){if(!(t!=null&&t.external))throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`.");const{protocol:a}=new URL(n,window.location.href);if(a&&Jf(a))throw new Error(`Cannot navigate to a URL with '${a}' protocol.`)}const o=Zd();if(!s&&o)return t!=null&&t.replace?typeof e=="string"?{path:e,replace:!0}:{...e,replace:!0}:e;const i=et(),l=he();return s?(l._scope.stop(),t!=null&&t.replace?location.replace(n):location.href=n,o?l.isHydrating?new Promise(()=>{}):!1:Promise.resolve()):t!=null&&t.replace?i.replace(e):i.push(e)};function vs(e){return sa(e.path||"",e.query||{})+(e.hash||"")}const wa="__nuxt_error",eo=()=>$c(he().payload,"error"),Jd=e=>{const t=to(e);try{const n=he(),r=eo();n.hooks.callHook("app:error",t),r.value=r.value||t}catch{throw t}return t},zd=async(e={})=>{const t=he(),n=eo();t.callHook("app:error:cleared",e),e.redirect&&await et().replace(e.redirect),n.value=Id},Yd=e=>!!e&&typeof e=="object"&&wa in e,to=e=>{const t=Kd(e);return Object.defineProperty(t,wa,{value:!0,configurable:!1,writable:!1}),t};function di(e){const t=Qd(e),n=new ArrayBuffer(t.length),r=new DataView(n);for(let s=0;s>16),t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255),n=r=0);return r===12?(n>>=4,t+=String.fromCharCode(n)):r===18&&(n>>=2,t+=String.fromCharCode((n&65280)>>8),t+=String.fromCharCode(n&255)),t}const eh=-1,th=-2,nh=-3,rh=-4,sh=-5,oh=-6;function ih(e,t){return lh(JSON.parse(e),t)}function lh(e,t){if(typeof e=="number")return s(e,!0);if(!Array.isArray(e)||e.length===0)throw new Error("Invalid input");const n=e,r=Array(n.length);function s(o,i=!1){if(o===eh)return;if(o===nh)return NaN;if(o===rh)return 1/0;if(o===sh)return-1/0;if(o===oh)return-0;if(i)throw new Error("Invalid input");if(o in r)return r[o];const l=n[o];if(!l||typeof l!="object")r[o]=l;else if(Array.isArray(l))if(typeof l[0]=="string"){const a=l[0],f=t==null?void 0:t[a];if(f)return r[o]=f(s(l[1]));switch(a){case"Date":r[o]=new Date(l[1]);break;case"Set":const c=new Set;r[o]=c;for(let h=1;ho.key),s=t.resolveValueData||(o=>o.value);for(const[o,i]of Object.entries(e))n.push(...(Array.isArray(i)?i:[i]).map(l=>{const a={key:o,value:l},f=s(a);return typeof f=="object"?xa(f,t):Array.isArray(f)?f:{[typeof t.key=="function"?t.key(a):t.key]:r(a),[typeof t.value=="function"?t.value(a):t.value]:f}}).flat());return n}function Sa(e,t){return Object.entries(e).map(([n,r])=>{if(typeof r=="object"&&(r=Sa(r,t)),t.resolve){const s=t.resolve({key:n,value:r});if(typeof s<"u")return s}return typeof r=="number"&&(r=r.toString()),typeof r=="string"&&t.wrapValue&&(r=r.replace(new RegExp(t.wrapValue,"g"),`\\${t.wrapValue}`),r=`${t.wrapValue}${r}${t.wrapValue}`),`${n}${t.keyValueSeparator||""}${r}`}).join(t.entrySeparator||"")}const ah=new Set(["title","titleTemplate","script","style","noscript"]),Wn=new Set(["base","meta","link","style","script","noscript"]),ch=new Set(["title","titleTemplate","templateParams","base","htmlAttrs","bodyAttrs","meta","link","style","script","noscript"]),uh=new Set(["base","title","titleTemplate","bodyAttrs","htmlAttrs","templateParams"]),Ta=new Set(["tagPosition","tagPriority","tagDuplicateStrategy","children","innerHTML","textContent","processTemplateParams"]),fh=typeof window<"u";function ir(e){let t=9;for(let n=0;n>>9)+65536).toString(16).substring(1,8).toLowerCase()}function bs(e){if(e._h)return e._h;if(e._d)return ir(e._d);let t=`${e.tag}:${e.textContent||e.innerHTML||""}:`;for(const n in e.props)t+=`${n}:${String(e.props[n])},`;return ir(t)}const Ee=e=>({keyValue:e,metaKey:"property"}),Zr=e=>({keyValue:e}),no={appleItunesApp:{unpack:{entrySeparator:", ",resolve({key:e,value:t}){return`${ot(e)}=${t}`}}},articleExpirationTime:Ee("article:expiration_time"),articleModifiedTime:Ee("article:modified_time"),articlePublishedTime:Ee("article:published_time"),bookReleaseDate:Ee("book:release_date"),charset:{metaKey:"charset"},contentSecurityPolicy:{unpack:{entrySeparator:"; ",resolve({key:e,value:t}){return`${ot(e)} ${t}`}},metaKey:"http-equiv"},contentType:{metaKey:"http-equiv"},defaultStyle:{metaKey:"http-equiv"},fbAppId:Ee("fb:app_id"),msapplicationConfig:Zr("msapplication-Config"),msapplicationTileColor:Zr("msapplication-TileColor"),msapplicationTileImage:Zr("msapplication-TileImage"),ogAudioSecureUrl:Ee("og:audio:secure_url"),ogAudioUrl:Ee("og:audio"),ogImageSecureUrl:Ee("og:image:secure_url"),ogImageUrl:Ee("og:image"),ogSiteName:Ee("og:site_name"),ogVideoSecureUrl:Ee("og:video:secure_url"),ogVideoUrl:Ee("og:video"),profileFirstName:Ee("profile:first_name"),profileLastName:Ee("profile:last_name"),profileUsername:Ee("profile:username"),refresh:{metaKey:"http-equiv",unpack:{entrySeparator:";",resolve({key:e,value:t}){if(e==="seconds")return`${t}`}}},robots:{unpack:{entrySeparator:", ",resolve({key:e,value:t}){return typeof t=="boolean"?`${ot(e)}`:`${ot(e)}:${t}`}}},xUaCompatible:{metaKey:"http-equiv"}},Ea=new Set(["og","book","article","profile"]);function Ca(e){var r;const t=ot(e),n=t.indexOf(":");return Ea.has(t.substring(0,n))?"property":((r=no[e])==null?void 0:r.metaKey)||"name"}function dh(e){var t;return((t=no[e])==null?void 0:t.keyValue)||ot(e)}function ot(e){const t=e.replace(/([A-Z])/g,"-$1").toLowerCase(),n=t.indexOf("-"),r=t.substring(0,n);return r==="twitter"||Ea.has(r)?e.replace(/([A-Z])/g,":$1").toLowerCase():t}function _s(e){if(Array.isArray(e))return e.map(n=>_s(n));if(typeof e!="object"||Array.isArray(e))return e;const t={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[ot(n)]=_s(e[n]));return t}function hh(e,t){const n=no[t];return t==="refresh"?`${e.seconds};url=${e.url}`:Sa(_s(e),{keyValueSeparator:"=",entrySeparator:", ",resolve({value:r,key:s}){if(r===null)return"";if(typeof r=="boolean")return`${s}`},...n==null?void 0:n.unpack})}const Aa=new Set(["og:image","og:video","og:audio","twitter:image"]);function ka(e){const t={};for(const n in e){if(!Object.prototype.hasOwnProperty.call(e,n))continue;const r=e[n];String(r)!=="false"&&n&&(t[n]=r)}return t}function hi(e,t){const n=ka(t),r=ot(e),s=Ca(r);if(Aa.has(r)){const o={};for(const i in n)Object.prototype.hasOwnProperty.call(n,i)&&(o[`${e}${i==="url"?"":`${i[0].toUpperCase()}${i.slice(1)}`}`]=n[i]);return ro(o).sort((i,l)=>{var a,f;return(((a=i[s])==null?void 0:a.length)||0)-(((f=l[s])==null?void 0:f.length)||0)})}return[{[s]:r,...n}]}function ro(e){const t=[],n={};for(const s in e){if(!Object.prototype.hasOwnProperty.call(e,s))continue;const o=e[s];if(!Array.isArray(o)){if(typeof o=="object"&&o){if(Aa.has(ot(s))){t.push(...hi(s,o));continue}n[s]=ka(o)}else n[s]=o;continue}for(const i of o)t.push(...typeof i=="string"?ro({[s]:i}):hi(s,i))}const r=xa(n,{key({key:s}){return Ca(s)},value({key:s}){return s==="charset"?"charset":"content"},resolveKeyData({key:s}){return dh(s)},resolveValueData({value:s,key:o}){return s===null?"_null":typeof s=="object"?hh(s,o):typeof s=="number"?s.toString():s}});return[...t,...r].map(s=>(s.content==="_null"&&(s.content=null),s))}function ph(e,t){return e instanceof Promise?e.then(t):t(e)}function ws(e,t,n,r){const s=r||Ra(typeof t=="object"&&typeof t!="function"&&!(t instanceof Promise)?{...t}:{[e==="script"||e==="noscript"||e==="style"?"innerHTML":"textContent"]:t},e==="templateParams"||e==="titleTemplate");if(s instanceof Promise)return s.then(i=>ws(e,t,n,i));const o={tag:e,props:s};for(const i of Ta){const l=o.props[i]!==void 0?o.props[i]:n[i];l!==void 0&&((!(i==="innerHTML"||i==="textContent"||i==="children")||ah.has(o.tag))&&(o[i==="children"?"innerHTML":i]=l),delete o.props[i])}return o.props.body&&(o.tagPosition="bodyClose",delete o.props.body),o.tag==="script"&&typeof o.innerHTML=="object"&&(o.innerHTML=JSON.stringify(o.innerHTML),o.props.type=o.props.type||"application/json"),Array.isArray(o.props.content)?o.props.content.map(i=>({...o,props:{...o.props,content:i}})):o}function gh(e,t){var r;const n=e==="class"?" ":";";return t&&typeof t=="object"&&!Array.isArray(t)&&(t=Object.entries(t).filter(([,s])=>s).map(([s,o])=>e==="style"?`${s}:${o}`:s)),(r=String(Array.isArray(t)?t.join(n):t))==null?void 0:r.split(n).filter(s=>!!s.trim()).join(n)}function Pa(e,t,n,r){for(let s=r;s(e[o]=i,Pa(e,t,n,s)));if(!t&&!Ta.has(o)){const i=String(e[o]),l=o.startsWith("data-");i==="true"||i===""?e[o]=l?"true":!0:e[o]||(l&&i==="false"?e[o]="false":delete e[o])}}}function Ra(e,t=!1){const n=Pa(e,t,Object.keys(e),0);return n instanceof Promise?n.then(()=>e):e}const mh=10;function Ia(e,t,n){for(let r=n;r(t[r]=o,Ia(e,t,r)));Array.isArray(s)?e.push(...s):e.push(s)}}function yh(e){const t=[],n=e.resolvedInput;for(const s in n){if(!Object.prototype.hasOwnProperty.call(n,s))continue;const o=n[s];if(!(o===void 0||!ch.has(s))){if(Array.isArray(o)){for(const i of o)t.push(ws(s,i,e));continue}t.push(ws(s,o,e))}}if(t.length===0)return[];const r=[];return ph(Ia(r,t,0),()=>r.map((s,o)=>(s._e=e._i,e.mode&&(s._m=e.mode),s._p=(e._i<{if(l===pt||!o.includes(l))return l;const a=_h(t,l.slice(1),r);return a!==void 0?a:l}).trim(),i&&(e.endsWith(pt)&&(e=e.slice(0,-pt.length)),e.startsWith(pt)&&(e=e.slice(pt.length)),e=e.replace(wh,n).trim()),e}function yi(e,t){return e==null?t||null:typeof e=="function"?e(t):e}async function Oa(e,t={}){const n=t.document||e.resolvedOptions.document;if(!n||!e.dirty)return;const r={shouldRender:!0,tags:[]};if(await e.hooks.callHook("dom:beforeRender",r),!!r.shouldRender)return e._domUpdatePromise||(e._domUpdatePromise=new Promise(async s=>{var u;const o=(await e.resolveTags()).map(d=>({tag:d,id:Wn.has(d.tag)?bs(d):d.tag,shouldRender:!0}));let i=e._dom;if(!i){i={elMap:{htmlAttrs:n.documentElement,bodyAttrs:n.body}};const d=new Set;for(const h of["body","head"]){const g=(u=n[h])==null?void 0:u.children;for(const v of g){const S=v.tagName.toLowerCase();if(!Wn.has(S))continue;const E={tag:S,props:await Ra(v.getAttributeNames().reduce((w,k)=>({...w,[k]:v.getAttribute(k)}),{})),innerHTML:v.innerHTML},$=Ma(E);let y=$,b=1;for(;y&&d.has(y);)y=`${$}:${b++}`;y&&(E._d=y,d.add(y)),i.elMap[v.getAttribute("data-hid")||bs(E)]=v}}}i.pendingSideEffects={...i.sideEffects},i.sideEffects={};function l(d,h,g){const v=`${d}:${h}`;i.sideEffects[v]=g,delete i.pendingSideEffects[v]}function a({id:d,$el:h,tag:g}){const v=g.tag.endsWith("Attrs");if(i.elMap[d]=h,v||(g.textContent&&g.textContent!==h.textContent&&(h.textContent=g.textContent),g.innerHTML&&g.innerHTML!==h.innerHTML&&(h.innerHTML=g.innerHTML),l(d,"el",()=>{var S;(S=i.elMap[d])==null||S.remove(),delete i.elMap[d]})),g._eventHandlers)for(const S in g._eventHandlers)Object.prototype.hasOwnProperty.call(g._eventHandlers,S)&&h.getAttribute(`data-${S}`)!==""&&((g.tag==="bodyAttrs"?n.defaultView:h).addEventListener(S.substring(2),g._eventHandlers[S].bind(h)),h.setAttribute(`data-${S}`,""));for(const S in g.props){if(!Object.prototype.hasOwnProperty.call(g.props,S))continue;const E=g.props[S],$=`attr:${S}`;if(S==="class"){if(!E)continue;for(const y of E.split(" "))v&&l(d,`${$}:${y}`,()=>h.classList.remove(y)),!h.classList.contains(y)&&h.classList.add(y)}else if(S==="style"){if(!E)continue;for(const y of E.split(";")){const b=y.indexOf(":"),w=y.substring(0,b).trim(),k=y.substring(b+1).trim();l(d,`${$}:${w}`,()=>{h.style.removeProperty(w)}),h.style.setProperty(w,k)}}else h.getAttribute(S)!==E&&h.setAttribute(S,E===!0?"":String(E)),v&&l(d,$,()=>h.removeAttribute(S))}}const f=[],c={bodyClose:void 0,bodyOpen:void 0,head:void 0};for(const d of o){const{tag:h,shouldRender:g,id:v}=d;if(g){if(h.tag==="title"){n.title=h.textContent;continue}d.$el=d.$el||i.elMap[v],d.$el?a(d):Wn.has(h.tag)&&f.push(d)}}for(const d of f){const h=d.tag.tagPosition||"head";d.$el=n.createElement(d.tag.tag),a(d),c[h]=c[h]||n.createDocumentFragment(),c[h].appendChild(d.$el)}for(const d of o)await e.hooks.callHook("dom:renderTag",d,n,l);c.head&&n.head.appendChild(c.head),c.bodyOpen&&n.body.insertBefore(c.bodyOpen,n.body.firstChild),c.bodyClose&&n.body.appendChild(c.bodyClose);for(const d in i.pendingSideEffects)i.pendingSideEffects[d]();e._dom=i,await e.hooks.callHook("dom:rendered",{renders:o}),s()}).finally(()=>{e._domUpdatePromise=void 0,e.dirty=!1})),e._domUpdatePromise}function xh(e,t={}){const n=t.delayFn||(r=>setTimeout(r,10));return e._domDebouncedUpdatePromise=e._domDebouncedUpdatePromise||new Promise(r=>n(()=>Oa(e,t).then(()=>{delete e._domDebouncedUpdatePromise,r()})))}function Sh(e){return t=>{var r,s;const n=((s=(r=t.resolvedOptions.document)==null?void 0:r.head.querySelector('script[id="unhead:payload"]'))==null?void 0:s.innerHTML)||!1;return n&&t.push(JSON.parse(n)),{mode:"client",hooks:{"entries:updated":o=>{xh(o,e)}}}}}const Th=new Set(["templateParams","htmlAttrs","bodyAttrs"]),Eh={hooks:{"tag:normalise":({tag:e})=>{e.props.hid&&(e.key=e.props.hid,delete e.props.hid),e.props.vmid&&(e.key=e.props.vmid,delete e.props.vmid),e.props.key&&(e.key=e.props.key,delete e.props.key);const t=Ma(e);t&&!t.startsWith("meta:og:")&&!t.startsWith("meta:twitter:")&&delete e.key;const n=t||(e.key?`${e.tag}:${e.key}`:!1);n&&(e._d=n)},"tags:resolve":e=>{const t=Object.create(null);for(const r of e.tags){const s=(r.key?`${r.tag}:${r.key}`:r._d)||bs(r),o=t[s];if(o){let l=r==null?void 0:r.tagDuplicateStrategy;if(!l&&Th.has(r.tag)&&(l="merge"),l==="merge"){const a=o.props;a.style&&r.props.style&&(a.style[a.style.length-1]!==";"&&(a.style+=";"),r.props.style=`${a.style} ${r.props.style}`),a.class&&r.props.class?r.props.class=`${a.class} ${r.props.class}`:a.class&&(r.props.class=a.class),t[s].props={...a,...r.props};continue}else if(r._e===o._e){o._duped=o._duped||[],r._d=`${o._d}:${o._duped.length+1}`,o._duped.push(r);continue}else if(lr(r)>lr(o))continue}if(!(r.innerHTML||r.textContent||Object.keys(r.props).length!==0)&&Wn.has(r.tag)){delete t[s];continue}t[s]=r}const n=[];for(const r in t){const s=t[r],o=s._duped;n.push(s),o&&(delete s._duped,n.push(...o))}e.tags=n,e.tags=e.tags.filter(r=>!(r.tag==="meta"&&(r.props.name||r.props.property)&&!r.props.content))}}},Ch=new Set(["script","link","bodyAttrs"]),Ah=e=>({hooks:{"tags:resolve":t=>{for(const n of t.tags){if(!Ch.has(n.tag))continue;const r=n.props;for(const s in r){if(s[0]!=="o"||s[1]!=="n"||!Object.prototype.hasOwnProperty.call(r,s))continue;const o=r[s];typeof o=="function"&&(e.ssr&&pi.has(s)?r[s]=`this.dataset.${s}fired = true`:delete r[s],n._eventHandlers=n._eventHandlers||{},n._eventHandlers[s]=o)}e.ssr&&n._eventHandlers&&(n.props.src||n.props.href)&&(n.key=n.key||ir(n.props.src||n.props.href))}},"dom:renderTag":({$el:t,tag:n})=>{var s,o;const r=t==null?void 0:t.dataset;if(r)for(const i in r){if(!i.endsWith("fired"))continue;const l=i.slice(0,-5);pi.has(l)&&((o=(s=n._eventHandlers)==null?void 0:s[l])==null||o.call(t,new Event(l.substring(2))))}}}}),kh=new Set(["link","style","script","noscript"]),Ph={hooks:{"tag:normalise":({tag:e})=>{e.key&&kh.has(e.tag)&&(e.props["data-hid"]=e._h=ir(e.key))}}},Rh={mode:"server",hooks:{"tags:beforeResolve":e=>{const t={};let n=!1;for(const r of e.tags)r._m!=="server"||r.tag!=="titleTemplate"&&r.tag!=="templateParams"&&r.tag!=="title"||(t[r.tag]=r.tag==="title"||r.tag==="titleTemplate"?r.textContent:r.props,n=!0);n&&e.tags.push({tag:"script",innerHTML:JSON.stringify(t),props:{id:"unhead:payload",type:"application/json"}})}}},Ih={hooks:{"tags:resolve":e=>{var t;for(const n of e.tags)if(typeof n.tagPriority=="string")for(const{prefix:r,offset:s}of vh){if(!n.tagPriority.startsWith(r))continue;const o=n.tagPriority.substring(r.length),i=(t=e.tags.find(l=>l._d===o))==null?void 0:t._p;if(i!==void 0){n._p=i+s;break}}e.tags.sort((n,r)=>{const s=lr(n),o=lr(r);return so?1:n._p-r._p})}}},Mh={meta:"content",link:"href",htmlAttrs:"lang"},Oh=["innerHTML","textContent"],Hh=e=>({hooks:{"tags:resolve":t=>{var i;const{tags:n}=t;let r;for(let l=0;ll.tag==="title"))==null?void 0:i.textContent)||"",s,o);for(const l of n){if(l.processTemplateParams===!1)continue;const a=Mh[l.tag];if(a&&typeof l.props[a]=="string")l.props[a]=Dn(l.props[a],s,o);else if(l.processTemplateParams||l.tag==="titleTemplate"||l.tag==="title")for(const f of Oh)typeof l[f]=="string"&&(l[f]=Dn(l[f],s,o,l.tag==="script"&&l.props.type.endsWith("json")))}e._templateParams=s,e._separator=o},"tags:afterResolve":({tags:t})=>{let n;for(let r=0;r{const{tags:t}=e;let n,r;for(let s=0;s{for(const t of e.tags)typeof t.innerHTML=="string"&&(t.innerHTML&&(t.props.type==="application/ld+json"||t.props.type==="application/json")?t.innerHTML=t.innerHTML.replace(/{l.dirty=!0,t.callHook("entries:updated",l)};let s=0,o=[];const i=[],l={plugins:i,dirty:!1,resolvedOptions:e,hooks:t,headEntries(){return o},use(a){const f=typeof a=="function"?a(l):a;(!f.key||!i.some(c=>c.key===f.key))&&(i.push(f),vi(f.mode,n)&&t.addHooks(f.hooks||{}))},push(a,f){f==null||delete f.head;const c={_i:s++,input:a,...f};return vi(c.mode,n)&&(o.push(c),r()),{dispose(){o=o.filter(u=>u._i!==c._i),r()},patch(u){for(const d of o)d._i===c._i&&(d.input=c.input=u);r()}}},async resolveTags(){const a={tags:[],entries:[...o]};await t.callHook("entries:resolve",a);for(const f of a.entries){const c=f.resolvedInput||f.input;if(f.resolvedInput=await(f.transform?f.transform(c):c),f.resolvedInput)for(const u of await yh(f)){const d={tag:u,entry:f,resolvedOptions:l.resolvedOptions};await t.callHook("tag:normalise",d),a.tags.push(d.tag)}}return await t.callHook("tags:beforeResolve",a),await t.callHook("tags:resolve",a),await t.callHook("tags:afterResolve",a),a.tags},ssr:n};return[Eh,Rh,Ah,Ph,Ih,Hh,Lh,$h,...(e==null?void 0:e.plugins)||[]].forEach(a=>l.use(a)),l.hooks.callHook("init",l),l}function jh(){return Ha}const Fh=Yl[0]==="3";function Uh(e){return typeof e=="function"?e():ee(e)}function ar(e){if(e instanceof Promise||e instanceof Date||e instanceof RegExp)return e;const t=Uh(e);if(!e||!t)return t;if(Array.isArray(t))return t.map(n=>ar(n));if(typeof t=="object"){const n={};for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){if(r==="titleTemplate"||r[0]==="o"&&r[1]==="n"){n[r]=ee(t[r]);continue}n[r]=ar(t[r])}return n}return t}const Bh={hooks:{"entries:resolve":e=>{for(const t of e.entries)t.resolvedInput=ar(t.input)}}},La="usehead";function Vh(e){return{install(n){Fh&&(n.config.globalProperties.$unhead=e,n.config.globalProperties.$head=e,n.provide(La,e))}}.install}function Wh(e={}){e.domDelayFn=e.domDelayFn||(n=>Qe(()=>setTimeout(()=>n(),0)));const t=Nh(e);return t.use(Bh),t.install=Vh(t),t}const xs=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Ss="__unhead_injection_handler__";function Kh(e){xs[Ss]=e}function qh(){if(Ss in xs)return xs[Ss]();const e=it(La);return e||jh()}function Gh(e,t={}){const n=t.head||qh();if(n)return n.ssr?n.push(e,t):Zh(n,e,t)}function Zh(e,t,n={}){const r=ce(!1),s=ce({});Qt(()=>{s.value=r.value?{}:ar(t)});const o=e.push(s.value,n);return Un(s,l=>{o.patch(l)}),Js()&&(yr(()=>{o.dispose()}),yl(()=>{r.value=!0}),ml(()=>{r.value=!1})),o}function Jh(e,t){const{title:n,titleTemplate:r,...s}=e;return Gh({title:n,titleTemplate:r,_flatMeta:s},{...t,transform(o){const i=ro({...o._flatMeta});return delete o._flatMeta,{...o,meta:i}}})}const zh="modulepreload",Yh=function(e,t){return new URL(e,t).href},bi={},_i=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),a=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));s=Promise.allSettled(n.map(f=>{if(f=Yh(f,r),f in bi)return;bi[f]=!0;const c=f.endsWith(".css"),u=c?'[rel="stylesheet"]':"";if(!!r)for(let g=i.length-1;g>=0;g--){const v=i[g];if(v.href===f&&(!c||v.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${u}`))return;const h=document.createElement("link");if(h.rel=c?"stylesheet":zh,c||(h.as="script"),h.crossOrigin="",h.href=f,a&&h.setAttribute("nonce",a),document.head.appendChild(h),c)return new Promise((g,v)=>{h.addEventListener("load",g),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${f}`)))})}))}function o(i){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=i,window.dispatchEvent(l),!l.defaultPrevented)throw i}return s.then(i=>{for(const l of i||[])l.status==="rejected"&&o(l.reason);return t().catch(o)})};let Kn,qn;function Xh(){return Kn=$fetch(Qs(`builds/meta/${Yt().app.buildId}.json`),{responseType:"json"}),Kn.then(e=>{qn=Ud(e.matcher)}).catch(e=>{console.error("[nuxt] Error fetching app manifest.",e)}),Kn}function Sr(){return Kn||Xh()}async function so(e){const t=typeof e=="string"?e:e.path;if(await Sr(),!qn)return console.error("[nuxt] Error creating app manifest matcher.",qn),{};try{return Vd({},...qn.matchAll(t).reverse())}catch(n){return console.error("[nuxt] Error matching route rules.",n),{}}}async function wi(e,t={}){const n=await ep(e,t),r=he(),s=r._payloadCache=r._payloadCache||{};return n in s?s[n]||null:(s[n]=Na(e).then(o=>o?$a(n).then(i=>i||(delete s[n],null)):(s[n]=null,null)),s[n])}const Qh="_payload.json";async function ep(e,t={}){const n=new URL(e,"http://localhost");if(n.host!=="localhost"||xt(n.pathname,{acceptRelative:!0}))throw new Error("Payload URL must not include hostname: "+e);const r=Yt(),s=t.hash||(t.fresh?Date.now():r.app.buildId),o=r.app.cdnURL,i=o&&await Na(e)?o:r.app.baseURL;return An(i,n.pathname,Qh+(s?`?${s}`:""))}async function $a(e){const t=fetch(e).then(n=>n.text().then(Da));try{return await t}catch(n){console.warn("[nuxt] Cannot load payload ",e,n)}return null}async function Na(e=ba().path){const t=he();return e=wr(e),(await Sr()).prerendered.includes(e)?!0:t.runWithContext(async()=>{const r=await so({path:e});return!!r.prerender&&!r.redirect})}let kt=null;async function tp(){var r;if(kt)return kt;const e=document.getElementById("__NUXT_DATA__");if(!e)return{};const t=await Da(e.textContent||""),n=e.dataset.src?await $a(e.dataset.src):void 0;return kt={...t,...n,...window.__NUXT__},(r=kt.config)!=null&&r.public&&(kt.config.public=yt(kt.config.public)),kt}async function Da(e){return await ih(e,he()._payloadRevivers)}function np(e,t){he()._payloadRevivers[e]=t}const rp=[["NuxtError",e=>to(e)],["EmptyShallowRef",e=>_o(e==="_"?void 0:e==="0n"?BigInt(0):er(e))],["EmptyRef",e=>ce(e==="_"?void 0:e==="0n"?BigInt(0):er(e))],["ShallowRef",e=>_o(e)],["ShallowReactive",e=>Ut(e)],["Ref",e=>ce(e)],["Reactive",e=>yt(e)]],sp=St({name:"nuxt:revive-payload:client",order:-30,async setup(e){let t,n;for(const[r,s]of rp)np(r,s);Object.assign(e.payload,([t,n]=da(()=>e.runWithContext(tp)),t=await t,n(),t)),window.__NUXT__=e.payload}}),op=[],ip=St({name:"nuxt:head",enforce:"pre",setup(e){const t=Wh({plugins:op});Kh(()=>he().vueApp._context.provides.usehead),e.vueApp.use(t);{let n=!0;const r=async()=>{n=!1,await Oa(t)};t.hooks.hook("dom:beforeRender",s=>{s.shouldRender=!n}),e.hooks.hook("page:start",()=>{n=!0}),e.hooks.hook("page:finish",()=>{e.isHydrating||r()}),e.hooks.hook("app:error",r),e.hooks.hook("app:suspense:resolve",r)}}}),lp=async e=>{let t,n;const r=([t,n]=da(()=>so({path:e.path})),t=await t,n(),t);if(r.redirect)return xt(r.redirect,{acceptRelative:!0})?(window.location.href=r.redirect,!1):r.redirect},ap=[lp];function Jr(e){typeof e=="object"&&(e=aa({pathname:e.path||"",search:ra(e.query||{}),hash:e.hash||""}));const t=new URL(e.toString(),window.location.href);return{path:t.pathname,fullPath:e,query:Xs(t.search),hash:t.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:e}}const cp=St({name:"nuxt:router",enforce:"pre",setup(e){const t=Xf(window.location.pathname,Yt().app.baseURL)+window.location.search+window.location.hash,n=[],r={"navigate:before":[],"resolve:before":[],"navigate:after":[],error:[]},s=(u,d)=>(r[u].push(d),()=>r[u].splice(r[u].indexOf(d),1)),o=Yt().app.baseURL,i=yt(Jr(t));async function l(u,d){try{const h=Jr(u);for(const g of r["navigate:before"]){const v=await g(h,i);if(v===!1||v instanceof Error)return;if(typeof v=="string"&&v.length)return l(v,!0)}for(const g of r["resolve:before"])await g(h,i);Object.assign(i,h),window.history[d?"replaceState":"pushState"]({},"",An(o,h.fullPath)),e.isHydrating||await e.runWithContext(zd);for(const g of r["navigate:after"])await g(h,i)}catch(h){for(const g of r.error)await g(h)}}const f={currentRoute:me(()=>i),isReady:()=>Promise.resolve(),options:{},install:()=>Promise.resolve(),push:u=>l(u,!1),replace:u=>l(u,!0),back:()=>window.history.go(-1),go:u=>window.history.go(u),forward:()=>window.history.go(1),beforeResolve:u=>s("resolve:before",u),beforeEach:u=>s("navigate:before",u),afterEach:u=>s("navigate:after",u),onError:u=>s("error",u),resolve:Jr,addRoute:(u,d)=>{n.push(d)},getRoutes:()=>n,hasRoute:u=>n.some(d=>d.name===u),removeRoute:u=>{const d=n.findIndex(h=>h.name===u);d!==-1&&n.splice(d,1)}};e.vueApp.component("RouterLink",qe({functional:!0,props:{to:{type:String,required:!0},custom:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:String},setup:(u,{slots:d})=>{const h=()=>l(u.to,u.replace);return()=>{var v;const g=f.resolve(u.to);return u.custom?(v=d.default)==null?void 0:v.call(d,{href:u.to,navigate:h,route:g}):bn("a",{href:u.to,onClick:S=>(S.preventDefault(),h())},d)}}})),window.addEventListener("popstate",u=>{const d=u.target.location;f.replace(d.href.replace(d.origin,""))}),e._route=i,e._middleware=e._middleware||{global:[],named:{}};const c=e.payload.state._layout;return e.hooks.hookOnce("app:created",async()=>{f.beforeEach(async(u,d)=>{u.meta=yt(u.meta||{}),e.isHydrating&&c&&!vt(u.meta.layout)&&(u.meta.layout=c),e._processingMiddleware=!0;{const h=new Set([...ap,...e._middleware.global]);{const g=await e.runWithContext(()=>so({path:u.path}));if(g.appMiddleware)for(const v in g.appMiddleware){const S=e._middleware.named[v];if(!S)return;g.appMiddleware[v]?h.add(S):h.delete(S)}}for(const g of h){const v=await e.runWithContext(()=>g(u,d));if(v!==!0&&(v||v===!1))return v}}}),f.afterEach(()=>{delete e._processingMiddleware}),await f.replace(t),ed(i.fullPath,t)||await e.runWithContext(()=>_a(i.fullPath))}),{provide:{route:i,router:f}}}}),Ts=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),up=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)}),Tr=e=>{const t=he();t.isHydrating?t.hooks.hookOnce("app:suspense:resolve",()=>{Ts(()=>e())}):Ts(()=>e())},fp=St({name:"nuxt:payload",setup(e){et().beforeResolve(async(t,n)=>{if(t.path===n.path)return;const r=await wi(t.path);r&&Object.assign(e.static.data,r.data)}),Tr(()=>{var t;e.hooks.hook("link:prefetch",async n=>{const{hostname:r}=new URL(n,window.location.href);r===window.location.hostname&&await wi(n)}),((t=navigator.connection)==null?void 0:t.effectiveType)!=="slow-2g"&&setTimeout(Sr,1e3)})}}),dp=St(()=>{const e=et();Tr(()=>{e.beforeResolve(async()=>{await new Promise(t=>{setTimeout(t,100),requestAnimationFrame(()=>{setTimeout(t,0)})})})})}),hp=St(e=>{let t;async function n(){const r=await Sr();t&&clearTimeout(t),t=setTimeout(n,ci);try{const s=await $fetch(Qs("builds/latest.json")+`?${Date.now()}`);s.id!==r.id&&e.hooks.callHook("app:manifest:update",s)}catch{}}Tr(()=>{t=setTimeout(n,ci)})});function pp(e={}){const t=e.path||window.location.pathname;let n={};try{n=er(sessionStorage.getItem("nuxt:reload")||"{}")}catch{}if(e.force||(n==null?void 0:n.path)!==t||(n==null?void 0:n.expires){r.clear()}),e.hook("app:chunkError",({error:o})=>{r.add(o)});function s(o){const l="href"in o&&o.href[0]==="#"?n.app.baseURL+o.href:An(n.app.baseURL,o.fullPath);pp({path:l,persistState:!0})}e.hook("app:manifest:update",()=>{t.beforeResolve(s)}),t.onError((o,i)=>{r.has(o)&&s(i)})}}),mp=St({name:"nuxt:global-components"}),yp=[sp,ip,cp,fp,dp,hp,gp,mp];async function ja(e,t=et()){const{path:n,matched:r}=t.resolve(e);if(!r.length||(t._routePreloaded||(t._routePreloaded=new Set),t._routePreloaded.has(n)))return;const s=t._preloadPromises=t._preloadPromises||[];if(s.length>4)return Promise.all(s).then(()=>ja(e,t));t._routePreloaded.add(n);const o=r.map(i=>{var l;return(l=i.components)==null?void 0:l.default}).filter(i=>typeof i=="function");for(const i of o){const l=Promise.resolve(i()).catch(()=>{}).finally(()=>s.splice(s.indexOf(l)));s.push(l)}await Promise.all(s)}const vp=(...e)=>e.find(t=>t!==void 0);function bp(e){const t=e.componentName||"NuxtLink";function n(o){return typeof o=="string"&&o.startsWith("#")}function r(o,i){if(!o||e.trailingSlash!=="append"&&e.trailingSlash!=="remove")return o;if(typeof o=="string")return xi(o,e.trailingSlash);const l="path"in o&&o.path!==void 0?o.path:i(o).path;return{...o,name:void 0,path:xi(l,e.trailingSlash)}}function s(o){const i=et(),l=Yt(),a=me(()=>!!o.target&&o.target!=="_self"),f=me(()=>{const S=o.to||o.href||"";return typeof S=="string"&&xt(S,{acceptRelative:!0})}),c=Co("RouterLink"),u=c&&typeof c!="string"?c.useLink:void 0,d=me(()=>{if(o.external)return!0;const S=o.to||o.href||"";return typeof S=="object"?!1:S===""||f.value}),h=me(()=>{const S=o.to||o.href||"";return d.value?S:r(S,i.resolve)}),g=d.value||u==null?void 0:u({...o,to:h}),v=me(()=>{var S;if(!h.value||f.value||n(h.value))return h.value;if(d.value){const E=typeof h.value=="object"&&"path"in h.value?vs(h.value):h.value,$=typeof E=="object"?i.resolve(E).href:E;return r($,i.resolve)}return typeof h.value=="object"?((S=i.resolve(h.value))==null?void 0:S.href)??null:r(An(l.app.baseURL,h.value),i.resolve)});return{to:h,hasTarget:a,isAbsoluteUrl:f,isExternal:d,href:v,isActive:(g==null?void 0:g.isActive)??me(()=>h.value===i.currentRoute.value.path),isExactActive:(g==null?void 0:g.isExactActive)??me(()=>h.value===i.currentRoute.value.path),route:(g==null?void 0:g.route)??me(()=>i.resolve(h.value)),async navigate(){await _a(v.value,{replace:o.replace,external:d.value||a.value})}}}return qe({name:t,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},prefetchOn:{type:[String,Object],default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},useLink:s,setup(o,{slots:i}){const l=et(),{to:a,href:f,navigate:c,isExternal:u,hasTarget:d,isAbsoluteUrl:h}=s(o),g=ce(!1),v=ce(null),S=y=>{var b;v.value=o.custom?(b=y==null?void 0:y.$el)==null?void 0:b.nextElementSibling:y==null?void 0:y.$el};function E(y){var b,w;return!g.value&&(typeof o.prefetchOn=="string"?o.prefetchOn===y:((b=o.prefetchOn)==null?void 0:b[y])??((w=e.prefetchOn)==null?void 0:w[y]))&&(o.prefetch??e.prefetch)!==!1&&o.noPrefetch!==!0&&o.target!=="_blank"&&!xp()}async function $(y=he()){if(g.value)return;g.value=!0;const b=typeof a.value=="string"?a.value:u.value?vs(a.value):l.resolve(a.value).fullPath,w=u.value?new URL(b,window.location.href).href:b;await Promise.all([y.hooks.callHook("link:prefetch",w).catch(()=>{}),!u.value&&!d.value&&ja(a.value,l).catch(()=>{})])}if(E("visibility")){const y=he();let b,w=null;En(()=>{const k=_p();Tr(()=>{b=Ts(()=>{var j;(j=v==null?void 0:v.value)!=null&&j.tagName&&(w=k.observe(v.value,async()=>{w==null||w(),w=null,await $(y)}))})})}),yr(()=>{b&&up(b),w==null||w(),w=null})}return()=>{var w;if(!u.value&&!d.value&&!n(a.value)){const k={ref:S,to:a.value,activeClass:o.activeClass||e.activeClass,exactActiveClass:o.exactActiveClass||e.exactActiveClass,replace:o.replace,ariaCurrentValue:o.ariaCurrentValue,custom:o.custom};return o.custom||(E("interaction")&&(k.onPointerenter=$.bind(null,void 0),k.onFocus=$.bind(null,void 0)),g.value&&(k.class=o.prefetchedClass||e.prefetchedClass),k.rel=o.rel||void 0),bn(Co("RouterLink"),k,i.default)}const y=o.target||null,b=vp(o.noRel?"":o.rel,e.externalRelAttribute,h.value||d.value?"noopener noreferrer":"")||null;return o.custom?i.default?i.default({href:f.value,navigate:c,prefetch:$,get route(){if(!f.value)return;const k=new URL(f.value,window.location.href);return{path:k.pathname,fullPath:k.pathname,get query(){return Xs(k.search)},hash:k.hash,params:{},name:void 0,matched:[],redirectedFrom:void 0,meta:{},href:f.value}},rel:b,target:y,isExternal:u.value||d.value,isActive:!1,isExactActive:!1}):null:bn("a",{ref:v,href:f.value||null,rel:b,target:y},(w=i.default)==null?void 0:w.call(i))}}})}const Fa=bp(Rd);function xi(e,t){const n=t==="append"?nr:wr;return xt(e)&&!e.startsWith("http")?e:n(e,!0)}function _p(){const e=he();if(e._observer)return e._observer;let t=null;const n=new Map,r=(o,i)=>(t||(t=new IntersectionObserver(l=>{for(const a of l){const f=n.get(a.target);(a.isIntersecting||a.intersectionRatio>0)&&f&&f()}})),n.set(o,i),t.observe(o),()=>{n.delete(o),t==null||t.unobserve(o),n.size===0&&(t==null||t.disconnect(),t=null)});return e._observer={observe:r}}const wp=/2g/;function xp(){const e=navigator.connection;return!!(e&&(e.saveData||wp.test(e.effectiveType)))}const oo=xr("/logo.svg"),Sp=xr("/github.svg");let Tp=Symbol("headlessui.useid"),Ep=0;function io(){return it(Tp,()=>`${++Ep}`)()}function fe(e){var t;if(e==null||e.value==null)return null;let n=(t=e.value.$el)!=null?t:e.value;return n instanceof Node?n:null}function Er(e,t,...n){if(e in t){let s=t[e];return typeof s=="function"?s(...n):s}let r=new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map(s=>`"${s}"`).join(", ")}.`);throw Error.captureStackTrace&&Error.captureStackTrace(r,Er),r}var Cp=Object.defineProperty,Ap=(e,t,n)=>t in e?Cp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Si=(e,t,n)=>(Ap(e,typeof t!="symbol"?t+"":t,n),n);let kp=class{constructor(){Si(this,"current",this.detect()),Si(this,"currentId",0)}set(t){this.current!==t&&(this.currentId=0,this.current=t)}reset(){this.set(this.detect())}nextId(){return++this.currentId}get isServer(){return this.current==="server"}get isClient(){return this.current==="client"}detect(){return typeof window>"u"||typeof document>"u"?"server":"client"}},lo=new kp;function ao(e){if(lo.isServer)return null;if(e instanceof Node)return e.ownerDocument;if(e!=null&&e.hasOwnProperty("value")){let t=fe(e);if(t)return t.ownerDocument}return document}let Es=["[contentEditable=true]","[tabindex]","a[href]","area[href]","button:not([disabled])","iframe","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].map(e=>`${e}:not([tabindex='-1'])`).join(",");var Cs=(e=>(e[e.First=1]="First",e[e.Previous=2]="Previous",e[e.Next=4]="Next",e[e.Last=8]="Last",e[e.WrapAround=16]="WrapAround",e[e.NoScroll=32]="NoScroll",e))(Cs||{}),Pp=(e=>(e[e.Error=0]="Error",e[e.Overflow=1]="Overflow",e[e.Success=2]="Success",e[e.Underflow=3]="Underflow",e))(Pp||{}),Rp=(e=>(e[e.Previous=-1]="Previous",e[e.Next=1]="Next",e))(Rp||{});function Ua(e=document.body){return e==null?[]:Array.from(e.querySelectorAll(Es)).sort((t,n)=>Math.sign((t.tabIndex||Number.MAX_SAFE_INTEGER)-(n.tabIndex||Number.MAX_SAFE_INTEGER)))}var co=(e=>(e[e.Strict=0]="Strict",e[e.Loose=1]="Loose",e))(co||{});function uo(e,t=0){var n;return e===((n=ao(e))==null?void 0:n.body)?!1:Er(t,{0(){return e.matches(Es)},1(){let r=e;for(;r!==null;){if(r.matches(Es))return!0;r=r.parentElement}return!1}})}function Ba(e){let t=ao(e);Qe(()=>{t&&!uo(t.activeElement,0)&&Mp(e)})}var Ip=(e=>(e[e.Keyboard=0]="Keyboard",e[e.Mouse=1]="Mouse",e))(Ip||{});typeof window<"u"&&typeof document<"u"&&(document.addEventListener("keydown",e=>{e.metaKey||e.altKey||e.ctrlKey||(document.documentElement.dataset.headlessuiFocusVisible="")},!0),document.addEventListener("click",e=>{e.detail===1?delete document.documentElement.dataset.headlessuiFocusVisible:e.detail===0&&(document.documentElement.dataset.headlessuiFocusVisible="")},!0));function Mp(e){e==null||e.focus({preventScroll:!0})}let Op=["textarea","input"].join(",");function Hp(e){var t,n;return(n=(t=e==null?void 0:e.matches)==null?void 0:t.call(e,Op))!=null?n:!1}function Va(e,t=n=>n){return e.slice().sort((n,r)=>{let s=t(n),o=t(r);if(s===null||o===null)return 0;let i=s.compareDocumentPosition(o);return i&Node.DOCUMENT_POSITION_FOLLOWING?-1:i&Node.DOCUMENT_POSITION_PRECEDING?1:0})}function Lp(e,t){return $p(Ua(),t,{relativeTo:e})}function $p(e,t,{sorted:n=!0,relativeTo:r=null,skipElements:s=[]}={}){var o;let i=(o=Array.isArray(e)?e.length>0?e[0].ownerDocument:document:e==null?void 0:e.ownerDocument)!=null?o:document,l=Array.isArray(e)?n?Va(e):e:Ua(e);s.length>0&&l.length>1&&(l=l.filter(g=>!s.includes(g))),r=r??i.activeElement;let a=(()=>{if(t&5)return 1;if(t&10)return-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),f=(()=>{if(t&1)return 0;if(t&2)return Math.max(0,l.indexOf(r))-1;if(t&4)return Math.max(0,l.indexOf(r))+1;if(t&8)return l.length-1;throw new Error("Missing Focus.First, Focus.Previous, Focus.Next or Focus.Last")})(),c=t&32?{preventScroll:!0}:{},u=0,d=l.length,h;do{if(u>=d||u+d<=0)return 0;let g=f+u;if(t&16)g=(g+d)%d;else{if(g<0)return 3;if(g>=d)return 1}h=l[g],h==null||h.focus(c),u+=a}while(h!==i.activeElement);return t&6&&Hp(h)&&h.select(),2}function Np(){return/iPhone/gi.test(window.navigator.platform)||/Mac/gi.test(window.navigator.platform)&&window.navigator.maxTouchPoints>0}function Dp(){return/Android/gi.test(window.navigator.userAgent)}function jp(){return Np()||Dp()}function jn(e,t,n){lo.isServer||Qt(r=>{document.addEventListener(e,t,n),r(()=>document.removeEventListener(e,t,n))})}function Fp(e,t,n){lo.isServer||Qt(r=>{window.addEventListener(e,t,n),r(()=>window.removeEventListener(e,t,n))})}function Up(e,t,n=me(()=>!0)){function r(o,i){if(!n.value||o.defaultPrevented)return;let l=i(o);if(l===null||!l.getRootNode().contains(l))return;let a=function f(c){return typeof c=="function"?f(c()):Array.isArray(c)||c instanceof Set?c:[c]}(e);for(let f of a){if(f===null)continue;let c=f instanceof HTMLElement?f:fe(f);if(c!=null&&c.contains(l)||o.composed&&o.composedPath().includes(c))return}return!uo(l,co.Loose)&&l.tabIndex!==-1&&o.preventDefault(),t(o,l)}let s=ce(null);jn("pointerdown",o=>{var i,l;n.value&&(s.value=((l=(i=o.composedPath)==null?void 0:i.call(o))==null?void 0:l[0])||o.target)},!0),jn("mousedown",o=>{var i,l;n.value&&(s.value=((l=(i=o.composedPath)==null?void 0:i.call(o))==null?void 0:l[0])||o.target)},!0),jn("click",o=>{jp()||s.value&&(r(o,()=>s.value),s.value=null)},!0),jn("touchend",o=>r(o,()=>o.target instanceof HTMLElement?o.target:null),!0),Fp("blur",o=>r(o,()=>window.document.activeElement instanceof HTMLIFrameElement?window.document.activeElement:null),!0)}function Ti(e,t){if(e)return e;let n=t??"button";if(typeof n=="string"&&n.toLowerCase()==="button")return"button"}function Bp(e,t){let n=ce(Ti(e.value.type,e.value.as));return En(()=>{n.value=Ti(e.value.type,e.value.as)}),Qt(()=>{var r;n.value||fe(t)&&fe(t)instanceof HTMLButtonElement&&!((r=fe(t))!=null&&r.hasAttribute("type"))&&(n.value="button")}),n}function Ei(e){return[e.screenX,e.screenY]}function Vp(){let e=ce([-1,-1]);return{wasMoved(t){let n=Ei(t);return e.value[0]===n[0]&&e.value[1]===n[1]?!1:(e.value=n,!0)},update(t){e.value=Ei(t)}}}function Wp({container:e,accept:t,walk:n,enabled:r}){Qt(()=>{let s=e.value;if(!s||r!==void 0&&!r.value)return;let o=ao(e);if(!o)return;let i=Object.assign(a=>t(a),{acceptNode:t}),l=o.createTreeWalker(s,NodeFilter.SHOW_ELEMENT,i,!1);for(;l.nextNode();)n(l.currentNode)})}var As=(e=>(e[e.None=0]="None",e[e.RenderStrategy=1]="RenderStrategy",e[e.Static=2]="Static",e))(As||{}),Kp=(e=>(e[e.Unmount=0]="Unmount",e[e.Hidden=1]="Hidden",e))(Kp||{});function Cr({visible:e=!0,features:t=0,ourProps:n,theirProps:r,...s}){var o;let i=Ka(r,n),l=Object.assign(s,{props:i});if(e||t&2&&i.static)return zr(l);if(t&1){let a=(o=i.unmount)==null||o?0:1;return Er(a,{0(){return null},1(){return zr({...s,props:{...i,hidden:!0,style:{display:"none"}}})}})}return zr(l)}function zr({props:e,attrs:t,slots:n,slot:r,name:s}){var o,i;let{as:l,...a}=qp(e,["unmount","static"]),f=(o=n.default)==null?void 0:o.call(n,r),c={};if(r){let u=!1,d=[];for(let[h,g]of Object.entries(r))typeof g=="boolean"&&(u=!0),g===!0&&d.push(h);u&&(c["data-headlessui-state"]=d.join(" "))}if(l==="template"){if(f=Wa(f??[]),Object.keys(a).length>0||Object.keys(t).length>0){let[u,...d]=f??[];if(!Gp(u)||d.length>0)throw new Error(['Passing props on "template"!',"",`The current component <${s} /> is rendering a "template".`,"However we need to passthrough the following props:",Object.keys(a).concat(Object.keys(t)).map(v=>v.trim()).filter((v,S,E)=>E.indexOf(v)===S).sort((v,S)=>v.localeCompare(S)).map(v=>` - ${v}`).join(` +`),"","You can apply a few solutions:",['Add an `as="..."` prop, to ensure that we render an actual element instead of a "template".',"Render a single element as the child so that we can forward the props onto that element."].map(v=>` - ${v}`).join(` +`)].join(` +`));let h=Ka((i=u.props)!=null?i:{},a,c),g=lt(u,h,!0);for(let v in h)v.startsWith("on")&&(g.props||(g.props={}),g.props[v]=h[v]);return g}return Array.isArray(f)&&f.length===1?f[0]:f}return bn(l,Object.assign({},a,c),{default:()=>f})}function Wa(e){return e.flatMap(t=>t.type===ve?Wa(t.children):[t])}function Ka(...e){if(e.length===0)return{};if(e.length===1)return e[0];let t={},n={};for(let r of e)for(let s in r)s.startsWith("on")&&typeof r[s]=="function"?(n[s]!=null||(n[s]=[]),n[s].push(r[s])):t[s]=r[s];if(t.disabled||t["aria-disabled"])return Object.assign(t,Object.fromEntries(Object.keys(n).map(r=>[r,void 0])));for(let r in n)Object.assign(t,{[r](s,...o){let i=n[r];for(let l of i){if(s instanceof Event&&s.defaultPrevented)return;l(s,...o)}}});return t}function qp(e,t=[]){let n=Object.assign({},e);for(let r of t)r in n&&delete n[r];return n}function Gp(e){return e==null?!1:typeof e.type=="string"||typeof e.type=="object"||typeof e.type=="function"}let qa=Symbol("Context");var wn=(e=>(e[e.Open=1]="Open",e[e.Closed=2]="Closed",e[e.Closing=4]="Closing",e[e.Opening=8]="Opening",e))(wn||{});function Zp(){return it(qa,null)}function Jp(e){vr(qa,e)}var we=(e=>(e.Space=" ",e.Enter="Enter",e.Escape="Escape",e.Backspace="Backspace",e.Delete="Delete",e.ArrowLeft="ArrowLeft",e.ArrowUp="ArrowUp",e.ArrowRight="ArrowRight",e.ArrowDown="ArrowDown",e.Home="Home",e.End="End",e.PageUp="PageUp",e.PageDown="PageDown",e.Tab="Tab",e))(we||{});function zp(e){throw new Error("Unexpected object: "+e)}var De=(e=>(e[e.First=0]="First",e[e.Previous=1]="Previous",e[e.Next=2]="Next",e[e.Last=3]="Last",e[e.Specific=4]="Specific",e[e.Nothing=5]="Nothing",e))(De||{});function Yp(e,t){let n=t.resolveItems();if(n.length<=0)return null;let r=t.resolveActiveIndex(),s=r??-1;switch(e.focus){case 0:{for(let o=0;o=0;--o)if(!t.resolveDisabled(n[o],o,n))return o;return r}case 2:{for(let o=s+1;o=0;--o)if(!t.resolveDisabled(n[o],o,n))return o;return r}case 4:{for(let o=0;o{let o=document.getElementById(s);if(o){let i=o.getAttribute("aria-label");return typeof i=="string"?i.trim():Ai(o).trim()}return null}).filter(Boolean);if(r.length>0)return r.join(", ")}return Ai(e).trim()}function Qp(e){let t=ce(""),n=ce("");return()=>{let r=fe(e);if(!r)return"";let s=r.innerText;if(t.value===s)return n.value;let o=Xp(r).trim().toLowerCase();return t.value=s,n.value=o,o}}var eg=(e=>(e[e.Open=0]="Open",e[e.Closed=1]="Closed",e))(eg||{}),tg=(e=>(e[e.Pointer=0]="Pointer",e[e.Other=1]="Other",e))(tg||{});function ng(e){requestAnimationFrame(()=>requestAnimationFrame(e))}let Ga=Symbol("MenuContext");function Ar(e){let t=it(Ga,null);if(t===null){let n=new Error(`<${e} /> is missing a parent component.`);throw Error.captureStackTrace&&Error.captureStackTrace(n,Ar),n}return t}let ks=qe({name:"Menu",props:{as:{type:[Object,String],default:"template"}},setup(e,{slots:t,attrs:n}){let r=ce(1),s=ce(null),o=ce(null),i=ce([]),l=ce(""),a=ce(null),f=ce(1);function c(d=h=>h){let h=a.value!==null?i.value[a.value]:null,g=Va(d(i.value.slice()),S=>fe(S.dataRef.domRef)),v=h?g.indexOf(h):null;return v===-1&&(v=null),{items:g,activeItemIndex:v}}let u={menuState:r,buttonRef:s,itemsRef:o,items:i,searchQuery:l,activeItemIndex:a,activationTrigger:f,closeMenu:()=>{r.value=1,a.value=null},openMenu:()=>r.value=0,goToItem(d,h,g){let v=c(),S=Yp(d===De.Specific?{focus:De.Specific,id:h}:{focus:d},{resolveItems:()=>v.items,resolveActiveIndex:()=>v.activeItemIndex,resolveId:E=>E.id,resolveDisabled:E=>E.dataRef.disabled});l.value="",a.value=S,f.value=g??1,i.value=v.items},search(d){let h=l.value!==""?0:1;l.value+=d.toLowerCase();let g=(a.value!==null?i.value.slice(a.value+h).concat(i.value.slice(0,a.value+h)):i.value).find(S=>S.dataRef.textValue.startsWith(l.value)&&!S.dataRef.disabled),v=g?i.value.indexOf(g):-1;v===-1||v===a.value||(a.value=v,f.value=1)},clearSearch(){l.value=""},registerItem(d,h){let g=c(v=>[...v,{id:d,dataRef:h}]);i.value=g.items,a.value=g.activeItemIndex,f.value=1},unregisterItem(d){let h=c(g=>{let v=g.findIndex(S=>S.id===d);return v!==-1&&g.splice(v,1),g});i.value=h.items,a.value=h.activeItemIndex,f.value=1}};return Up([s,o],(d,h)=>{var g;u.closeMenu(),uo(h,co.Loose)||(d.preventDefault(),(g=fe(s))==null||g.focus())},me(()=>r.value===0)),vr(Ga,u),Jp(me(()=>Er(r.value,{0:wn.Open,1:wn.Closed}))),()=>{let d={open:r.value===0,close:u.closeMenu};return Cr({ourProps:{},theirProps:e,slot:d,slots:t,attrs:n,name:"Menu"})}}}),Ps=qe({name:"MenuButton",props:{disabled:{type:Boolean,default:!1},as:{type:[Object,String],default:"button"},id:{type:String,default:null}},setup(e,{attrs:t,slots:n,expose:r}){var s;let o=(s=e.id)!=null?s:`headlessui-menu-button-${io()}`,i=Ar("MenuButton");r({el:i.buttonRef,$el:i.buttonRef});function l(u){switch(u.key){case we.Space:case we.Enter:case we.ArrowDown:u.preventDefault(),u.stopPropagation(),i.openMenu(),Qe(()=>{var d;(d=fe(i.itemsRef))==null||d.focus({preventScroll:!0}),i.goToItem(De.First)});break;case we.ArrowUp:u.preventDefault(),u.stopPropagation(),i.openMenu(),Qe(()=>{var d;(d=fe(i.itemsRef))==null||d.focus({preventScroll:!0}),i.goToItem(De.Last)});break}}function a(u){switch(u.key){case we.Space:u.preventDefault();break}}function f(u){e.disabled||(i.menuState.value===0?(i.closeMenu(),Qe(()=>{var d;return(d=fe(i.buttonRef))==null?void 0:d.focus({preventScroll:!0})})):(u.preventDefault(),i.openMenu(),ng(()=>{var d;return(d=fe(i.itemsRef))==null?void 0:d.focus({preventScroll:!0})})))}let c=Bp(me(()=>({as:e.as,type:t.type})),i.buttonRef);return()=>{var u;let d={open:i.menuState.value===0},{...h}=e,g={ref:i.buttonRef,id:o,type:c.value,"aria-haspopup":"menu","aria-controls":(u=fe(i.itemsRef))==null?void 0:u.id,"aria-expanded":i.menuState.value===0,onKeydown:l,onKeyup:a,onClick:f};return Cr({ourProps:g,theirProps:h,slot:d,attrs:t,slots:n,name:"MenuButton"})}}}),ki=qe({name:"MenuItems",props:{as:{type:[Object,String],default:"div"},static:{type:Boolean,default:!1},unmount:{type:Boolean,default:!0},id:{type:String,default:null}},setup(e,{attrs:t,slots:n,expose:r}){var s;let o=(s=e.id)!=null?s:`headlessui-menu-items-${io()}`,i=Ar("MenuItems"),l=ce(null);r({el:i.itemsRef,$el:i.itemsRef}),Wp({container:me(()=>fe(i.itemsRef)),enabled:me(()=>i.menuState.value===0),accept(d){return d.getAttribute("role")==="menuitem"?NodeFilter.FILTER_REJECT:d.hasAttribute("role")?NodeFilter.FILTER_SKIP:NodeFilter.FILTER_ACCEPT},walk(d){d.setAttribute("role","none")}});function a(d){var h;switch(l.value&&clearTimeout(l.value),d.key){case we.Space:if(i.searchQuery.value!=="")return d.preventDefault(),d.stopPropagation(),i.search(d.key);case we.Enter:if(d.preventDefault(),d.stopPropagation(),i.activeItemIndex.value!==null){let g=i.items.value[i.activeItemIndex.value];(h=fe(g.dataRef.domRef))==null||h.click()}i.closeMenu(),Ba(fe(i.buttonRef));break;case we.ArrowDown:return d.preventDefault(),d.stopPropagation(),i.goToItem(De.Next);case we.ArrowUp:return d.preventDefault(),d.stopPropagation(),i.goToItem(De.Previous);case we.Home:case we.PageUp:return d.preventDefault(),d.stopPropagation(),i.goToItem(De.First);case we.End:case we.PageDown:return d.preventDefault(),d.stopPropagation(),i.goToItem(De.Last);case we.Escape:d.preventDefault(),d.stopPropagation(),i.closeMenu(),Qe(()=>{var g;return(g=fe(i.buttonRef))==null?void 0:g.focus({preventScroll:!0})});break;case we.Tab:d.preventDefault(),d.stopPropagation(),i.closeMenu(),Qe(()=>Lp(fe(i.buttonRef),d.shiftKey?Cs.Previous:Cs.Next));break;default:d.key.length===1&&(i.search(d.key),l.value=setTimeout(()=>i.clearSearch(),350));break}}function f(d){switch(d.key){case we.Space:d.preventDefault();break}}let c=Zp(),u=me(()=>c!==null?(c.value&wn.Open)===wn.Open:i.menuState.value===0);return()=>{var d,h;let g={open:i.menuState.value===0},{...v}=e,S={"aria-activedescendant":i.activeItemIndex.value===null||(d=i.items.value[i.activeItemIndex.value])==null?void 0:d.id,"aria-labelledby":(h=fe(i.buttonRef))==null?void 0:h.id,id:o,onKeydown:a,onKeyup:f,role:"menu",tabIndex:0,ref:i.itemsRef};return Cr({ourProps:S,theirProps:v,slot:g,attrs:t,slots:n,features:As.RenderStrategy|As.Static,visible:u.value,name:"MenuItems"})}}}),Pi=qe({name:"MenuItem",inheritAttrs:!1,props:{as:{type:[Object,String],default:"template"},disabled:{type:Boolean,default:!1},id:{type:String,default:null}},setup(e,{slots:t,attrs:n,expose:r}){var s;let o=(s=e.id)!=null?s:`headlessui-menu-item-${io()}`,i=Ar("MenuItem"),l=ce(null);r({el:l,$el:l});let a=me(()=>i.activeItemIndex.value!==null?i.items.value[i.activeItemIndex.value].id===o:!1),f=Qp(l),c=me(()=>({disabled:e.disabled,get textValue(){return f()},domRef:l}));En(()=>i.registerItem(o,c)),Vs(()=>i.unregisterItem(o)),Qt(()=>{i.menuState.value===0&&a.value&&i.activationTrigger.value!==0&&Qe(()=>{var E,$;return($=(E=fe(l))==null?void 0:E.scrollIntoView)==null?void 0:$.call(E,{block:"nearest"})})});function u(E){if(e.disabled)return E.preventDefault();i.closeMenu(),Ba(fe(i.buttonRef))}function d(){if(e.disabled)return i.goToItem(De.Nothing);i.goToItem(De.Specific,o)}let h=Vp();function g(E){h.update(E)}function v(E){h.wasMoved(E)&&(e.disabled||a.value||i.goToItem(De.Specific,o,0))}function S(E){h.wasMoved(E)&&(e.disabled||a.value&&i.goToItem(De.Nothing))}return()=>{let{disabled:E}=e,$={active:a.value,disabled:E,close:i.closeMenu},{...y}=e;return Cr({ourProps:{id:o,ref:l,role:"menuitem",tabIndex:E===!0?void 0:-1,"aria-disabled":E===!0?!0:void 0,disabled:void 0,onClick:u,onFocus:d,onPointerenter:g,onMouseenter:g,onPointermove:v,onMousemove:v,onPointerleave:S,onMouseleave:S},theirProps:{...n,...y},slot:$,attrs:n,slots:t,name:"MenuItem"})}}});function rg(e,t){return re(),de("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{"fill-rule":"evenodd",d:"M2 4.75A.75.75 0 0 1 2.75 4h14.5a.75.75 0 0 1 0 1.5H2.75A.75.75 0 0 1 2 4.75ZM2 10a.75.75 0 0 1 .75-.75h14.5a.75.75 0 0 1 0 1.5H2.75A.75.75 0 0 1 2 10Zm0 5.25a.75.75 0 0 1 .75-.75h14.5a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1-.75-.75Z","clip-rule":"evenodd"})])}function sg(e,t){return re(),de("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{d:"M10.75 16.82A7.462 7.462 0 0 1 15 15.5c.71 0 1.396.098 2.046.282A.75.75 0 0 0 18 15.06v-11a.75.75 0 0 0-.546-.721A9.006 9.006 0 0 0 15 3a8.963 8.963 0 0 0-4.25 1.065V16.82ZM9.25 4.065A8.963 8.963 0 0 0 5 3c-.85 0-1.673.118-2.454.339A.75.75 0 0 0 2 4.06v11a.75.75 0 0 0 .954.721A7.506 7.506 0 0 1 5 15.5c1.579 0 3.042.487 4.25 1.32V4.065Z"})])}function og(e,t){return re(),de("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{"fill-rule":"evenodd",d:"M16.403 12.652a3 3 0 0 0 0-5.304 3 3 0 0 0-3.75-3.751 3 3 0 0 0-5.305 0 3 3 0 0 0-3.751 3.75 3 3 0 0 0 0 5.305 3 3 0 0 0 3.75 3.751 3 3 0 0 0 5.305 0 3 3 0 0 0 3.751-3.75Zm-2.546-4.46a.75.75 0 0 0-1.214-.883l-3.483 4.79-1.88-1.88a.75.75 0 1 0-1.06 1.061l2.5 2.5a.75.75 0 0 0 1.137-.089l4-5.5Z","clip-rule":"evenodd"})])}function ig(e,t){return re(),de("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{"fill-rule":"evenodd",d:"M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z","clip-rule":"evenodd"})])}function lg(e,t){return re(),de("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{d:"M14 6H6v8h8V6Z"}),N("path",{"fill-rule":"evenodd",d:"M9.25 3V1.75a.75.75 0 0 1 1.5 0V3h1.5V1.75a.75.75 0 0 1 1.5 0V3h.5A2.75 2.75 0 0 1 17 5.75v.5h1.25a.75.75 0 0 1 0 1.5H17v1.5h1.25a.75.75 0 0 1 0 1.5H17v1.5h1.25a.75.75 0 0 1 0 1.5H17v.5A2.75 2.75 0 0 1 14.25 17h-.5v1.25a.75.75 0 0 1-1.5 0V17h-1.5v1.25a.75.75 0 0 1-1.5 0V17h-1.5v1.25a.75.75 0 0 1-1.5 0V17h-.5A2.75 2.75 0 0 1 3 14.25v-.5H1.75a.75.75 0 0 1 0-1.5H3v-1.5H1.75a.75.75 0 0 1 0-1.5H3v-1.5H1.75a.75.75 0 0 1 0-1.5H3v-.5A2.75 2.75 0 0 1 5.75 3h.5V1.75a.75.75 0 0 1 1.5 0V3h1.5ZM4.5 5.75c0-.69.56-1.25 1.25-1.25h8.5c.69 0 1.25.56 1.25 1.25v8.5c0 .69-.56 1.25-1.25 1.25h-8.5c-.69 0-1.25-.56-1.25-1.25v-8.5Z","clip-rule":"evenodd"})])}function ag(e,t){return re(),de("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{d:"M12 4.467c0-.405.262-.75.559-1.027.276-.257.441-.584.441-.94 0-.828-.895-1.5-2-1.5s-2 .672-2 1.5c0 .362.171.694.456.953.29.265.544.6.544.994a.968.968 0 0 1-1.024.974 39.655 39.655 0 0 1-3.014-.306.75.75 0 0 0-.847.847c.14.993.242 1.999.306 3.014A.968.968 0 0 1 4.447 10c-.393 0-.729-.253-.994-.544C3.194 9.17 2.862 9 2.5 9 1.672 9 1 9.895 1 11s.672 2 1.5 2c.356 0 .683-.165.94-.441.276-.297.622-.559 1.027-.559a.997.997 0 0 1 1.004 1.03 39.747 39.747 0 0 1-.319 3.734.75.75 0 0 0 .64.842c1.05.146 2.111.252 3.184.318A.97.97 0 0 0 10 16.948c0-.394-.254-.73-.545-.995C9.171 15.693 9 15.362 9 15c0-.828.895-1.5 2-1.5s2 .672 2 1.5c0 .356-.165.683-.441.94-.297.276-.559.622-.559 1.027a.998.998 0 0 0 1.03 1.005c1.337-.05 2.659-.162 3.961-.337a.75.75 0 0 0 .644-.644c.175-1.302.288-2.624.337-3.961A.998.998 0 0 0 16.967 12c-.405 0-.75.262-1.027.559-.257.276-.584.441-.94.441-.828 0-1.5-.895-1.5-2s.672-2 1.5-2c.362 0 .694.17.953.455.265.291.601.545.995.545a.97.97 0 0 0 .976-1.024 41.159 41.159 0 0 0-.318-3.184.75.75 0 0 0-.842-.64c-1.228.164-2.473.271-3.734.319A.997.997 0 0 1 12 4.467Z"})])}function cg(e,t){return re(),de("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{d:"M4.464 3.162A2 2 0 0 1 6.28 2h7.44a2 2 0 0 1 1.816 1.162l1.154 2.5c.067.145.115.291.145.438A3.508 3.508 0 0 0 16 6H4c-.288 0-.568.035-.835.1.03-.147.078-.293.145-.438l1.154-2.5Z"}),N("path",{"fill-rule":"evenodd",d:"M2 9.5a2 2 0 0 1 2-2h12a2 2 0 1 1 0 4H4a2 2 0 0 1-2-2Zm13.24 0a.75.75 0 0 1 .75-.75H16a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75h-.01a.75.75 0 0 1-.75-.75V9.5Zm-2.25-.75a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75H13a.75.75 0 0 0 .75-.75V9.5a.75.75 0 0 0-.75-.75h-.01ZM2 15a2 2 0 0 1 2-2h12a2 2 0 1 1 0 4H4a2 2 0 0 1-2-2Zm13.24 0a.75.75 0 0 1 .75-.75H16a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75h-.01a.75.75 0 0 1-.75-.75V15Zm-2.25-.75a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75H13a.75.75 0 0 0 .75-.75V15a.75.75 0 0 0-.75-.75h-.01Z","clip-rule":"evenodd"})])}function ug(e,t){return re(),de("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon"},[N("path",{"fill-rule":"evenodd",d:"M14.5 10a4.5 4.5 0 0 0 4.284-5.882c-.105-.324-.51-.391-.752-.15L15.34 6.66a.454.454 0 0 1-.493.11 3.01 3.01 0 0 1-1.618-1.616.455.455 0 0 1 .11-.494l2.694-2.692c.24-.241.174-.647-.15-.752a4.5 4.5 0 0 0-5.873 4.575c.055.873-.128 1.808-.8 2.368l-7.23 6.024a2.724 2.724 0 1 0 3.837 3.837l6.024-7.23c.56-.672 1.495-.855 2.368-.8.096.007.193.01.291.01ZM5 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z","clip-rule":"evenodd"}),N("path",{d:"M14.5 11.5c.173 0 .345-.007.514-.022l3.754 3.754a2.5 2.5 0 0 1-3.536 3.536l-4.41-4.41 2.172-2.607c.052-.063.147-.138.342-.196.202-.06.469-.087.777-.067.128.008.257.012.387.012ZM6 4.586l2.33 2.33a.452.452 0 0 1-.08.09L6.8 8.214 4.586 6H3.309a.5.5 0 0 1-.447-.276l-1.7-3.402a.5.5 0 0 1 .093-.577l.49-.49a.5.5 0 0 1 .577-.094l3.402 1.7A.5.5 0 0 1 6 3.31v1.277Z"})])}const fg={class:"relative z-50 mx-auto flex max-w-7xl justify-between px-4 py-4 sm:px-6 lg:px-8"},dg={class:"relative z-10 flex items-center gap-16"},hg={class:"hidden items-center lg:flex lg:gap-10"},pg={class:"flex items-center gap-6"},gg={class:"lg:hidden"},mg={class:"flex items-center"},yg={class:"lg:hidden"},vg={class:"flex items-center"},bg=qe({__name:"Header",setup(e){const t="/sechub",n=[{title:"Getting Started",href:"https://mercedes-benz.github.io/sechub/latest/sechub-getting-started.html"},{title:"Client",href:"https://mercedes-benz.github.io/sechub/latest/sechub-client.html"},{title:"Rest API",href:"https://mercedes-benz.github.io/sechub/latest/sechub-restapi.html"},{title:"Product Delegation Server (PDS)",href:"https://mercedes-benz.github.io/sechub/latest/sechub-product-delegation-server.html"},{title:"Operations",href:"https://mercedes-benz.github.io/sechub/latest/sechub-operations.html"},{title:"Developer - Quickstart Guide",href:"https://mercedes-benz.github.io/sechub/latest/sechub-developer-quickstart-guide.html"},{title:"Developer - Architecture",href:"https://mercedes-benz.github.io/sechub/latest/sechub-architecture.html"},{title:"Developer - Technical",href:"https://mercedes-benz.github.io/sechub/latest/sechub-techdoc.html"}],r=[{title:"Documentation",href:"https://mercedes-benz.github.io/sechub/index-old.html"},{title:"Downloads",href:"#download"},{title:"Collaboration",href:"https://github.com/mercedes-benz/sechub/blob/develop/CONTRIBUTING.md"}];return(s,o)=>{const i=Fa;return re(),de("header",null,[N("nav",null,[N("div",fg,[N("div",dg,[G(i,{"aria-label":"Home",to:`${ee(t)}/`},{default:ge(()=>o[0]||(o[0]=[N("img",{src:oo,class:"h-12 w-10 object-contain",alt:"SecHub Logo"},null,-1)])),_:1},8,["to"]),N("div",hg,[(re(),de(ve,null,Fn(r,l=>G(i,{key:l.title,to:l.href,class:"menu-item",target:l.href.startsWith("https")?"_blank":void 0},{default:ge(()=>[Ne(It(l.title),1)]),_:2},1032,["to","target"])),64))])]),N("div",pg,[N("div",gg,[G(ee(ks),{as:"div",class:"relative"},{default:ge(()=>[N("div",mg,[G(ee(Ps),{class:"menu-item flex"},{default:ge(()=>[o[1]||(o[1]=Ne(" Docs ")),G(ee(ig),{class:"ml-1 h-5 w-5","aria-hidden":"true"})]),_:1})]),G(Uo,{"enter-active-class":"transition duration-100 ease-out","enter-from-class":"transform scale-95 opacity-0","enter-to-class":"transform scale-100 opacity-100","leave-active-class":"transition duration-75 ease-in","leave-from-class":"transform scale-100 opacity-100","leave-to-class":"transform scale-95 opacity-0"},{default:ge(()=>[G(ee(ki),{class:"absolute right-0 mt-2 w-56 origin-top-right divide-y divide-gray-100 rounded-md bg-white shadow-lg ring-1 ring-black/5 focus:outline-none"},{default:ge(()=>[(re(),de(ve,null,Fn(n,l=>G(ee(Pi),{key:l.title},{default:ge(()=>[G(i,{to:l.href,target:"_blank",class:"group flex w-full items-center rounded-md px-2 py-2 text-sm text-gray-700 transition-colors duration-300 hover:bg-fern-500 hover:text-white"},{default:ge(()=>[Ne(It(l.title),1)]),_:2},1032,["to"])]),_:2},1024)),64))]),_:1})]),_:1})]),_:1})]),N("div",yg,[G(ee(ks),{as:"div",class:"relative"},{default:ge(()=>[N("div",vg,[G(ee(Ps),null,{default:ge(()=>[o[2]||(o[2]=N("span",{class:"sr-only"},"Open main menu",-1)),G(ee(rg),{class:"size-6"})]),_:1})]),G(Uo,{"enter-active-class":"transition duration-100 ease-out","enter-from-class":"transform scale-95 opacity-0","enter-to-class":"transform scale-100 opacity-100","leave-active-class":"transition duration-75 ease-in","leave-from-class":"transform scale-100 opacity-100","leave-to-class":"transform scale-95 opacity-0"},{default:ge(()=>[G(ee(ki),{class:"absolute right-0 mt-2 w-56 origin-top-right divide-y divide-gray-100 rounded-md bg-white shadow-lg ring-1 ring-black/5 focus:outline-none"},{default:ge(()=>[(re(),de(ve,null,Fn(r,l=>G(ee(Pi),{key:l.title},{default:ge(()=>[G(i,{to:l.href,class:"group flex w-full items-center rounded-md px-2 py-2 text-sm text-gray-700 transition-colors duration-300 hover:bg-fern-500 hover:text-white",target:l.href.startsWith("https")?"_blank":void 0},{default:ge(()=>[Ne(It(l.title),1)]),_:2},1032,["to","target"])]),_:2},1024)),64))]),_:1})]),_:1})]),_:1})]),o[3]||(o[3]=N("a",{href:"https://github.com/mercedes-benz/sechub",target:"_blank"},[N("img",{src:Sp,class:"size-6 object-contain",alt:"GitHub Logo"})],-1))])])])])}}}),fo=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},_g={},wg={class:"absolute left-1/2 top-4 h-[1026px] w-[1026px] -translate-x-1/3 stroke-gray-300/70 [mask-image:linear-gradient(to_bottom,white_20%,transparent_75%)] sm:top-16 sm:-translate-x-1/2 lg:-top-16 lg:ml-12 xl:-top-14 xl:ml-0"};function xg(e,t){return re(),de("div",wg,t[0]||(t[0]=[Gs('',2)]))}const Sg=fo(_g,[["render",xg]]),Tg={class:"overflow-hidden pt-16 lg:pb-32 xl:pb-36"},Eg={class:"container"},Cg={class:"lg:grid lg:grid-cols-12 lg:gap-x-8 lg:gap-y-0"},Ag={class:"relative mt-10 sm:mt-20 lg:col-span-5 lg:row-span-2 lg:mt-0 xl:col-span-6"},kg=qe({__name:"Hero",setup(e){return(t,n)=>{const r=Sg;return re(),de("section",Tg,[N("div",Eg,[N("div",Cg,[n[1]||(n[1]=N("div",{class:"relative z-10 mx-auto max-w-2xl lg:col-span-7 lg:max-w-none lg:pt-6 xl:col-span-6"},[N("h1",{class:"text-4xl font-medium tracking-tight text-gray-900"},"SecHub - One API to secure them all"),N("p",{class:"mt-6 text-lg text-gray-600"}," The free and open-source security platform SecHub, provides a central API to test software with different security tools. "),N("p",{class:"mt-6 text-lg text-gray-600"}," SecHub supports many free and open-source as well as proprietary security tools covering SAST (Static Application Security Testing), DAST (Dynamic Application Security Testing), Secret scanners, Infrastructure scanners, License scanners and more… ")],-1)),N("div",Ag,[G(r),n[0]||(n[0]=N("div",{class:"pb-10 [mask-image:linear-gradient(to_bottom,white_60%,transparent)] sm:mx-0 lg:absolute lg:-inset-x-10 lg:-bottom-20 lg:-top-10 lg:h-auto lg:px-0 lg:pt-10 xl:-bottom-32"},[N("div",{class:"relative mx-auto max-w-64 lg:max-w-80"},[N("img",{src:oo,alt:"SecHub Logo"})])],-1))])])])])}}}),Pg={"aria-label":"Features of SecHub",class:"bg-fern-600 py-32"},Rg={class:"container"},Ig={role:"list",class:"mx-auto mt-16 grid max-w-2xl grid-cols-1 gap-6 text-sm sm:mt-20 sm:grid-cols-2 md:gap-y-10 lg:max-w-none lg:grid-cols-3"},Mg={class:"mt-6 font-semibold text-white"},Og={class:"mt-2 text-white"},Hg=qe({__name:"Features",setup(e){const t=[{title:"API Orchestration",description:"SecHub orchestrates tools via an unified API, simplifying integration for projects without the need for different vendor plugins.",icon:cg},{title:"Easy to use Client",description:"The SecHub client is written in Go and easy to use on your system of choice.",icon:ag},{title:"License Flexibility",description:"SecHub is MIT licensed. This ensures freedom in use, modification and distribution, fostering collaboration and adoption across all kind of projects.",icon:og},{title:"Comprehensive Documentation",description:"Extensive documentation covers Getting Started, Architecture, Client, RestAPI, Operations and more. Available on our documentation.",icon:sg},{title:"Integration with Build Systems and IDEs",description:"Seamless integration with every build system and multiple developer IDEs adds security to your code without additional complexity.",icon:ug},{title:"Product Delegation Server (PDS)",description:"Explore SecHub's PDS, a vital component providing you the choice of many existing securtiy tools for use with SecHub. It also allows an easy integration of new securtiy tools.",icon:lg}];return(n,r)=>(re(),de("section",Pg,[N("div",Rg,[r[0]||(r[0]=N("div",{class:"mx-auto max-w-2xl sm:text-center"},[N("h2",{class:"text-3xl font-medium tracking-tight text-white"},"Your Security Guardian."),N("p",{class:"mt-2 text-lg text-white"},[Ne(" SecHub orchestrates different security tools by one API layer. "),N("br"),Ne(" Users interact with the SecHub Server, eliminating the need for projects to integrate vendor plugins for each security tool. ")])],-1)),N("ul",Ig,[(re(),de(ve,null,Fn(t,s=>N("li",{key:s.title,class:"rounded-2xl border border-fern-300 p-8 transition-colors duration-300 hover:bg-fern-500"},[(re(),Rt(xl(s.icon),{class:"size-10 text-white"})),N("h3",Mg,It(s.title),1),N("p",Og,It(s.description),1)])),64))])])]))}}),Lg={},$g={class:"absolute left-20 top-1/2 -translate-y-1/2 sm:left-1/2 sm:-translate-x-1/2"};function Ng(e,t){return re(),de("div",$g,t[0]||(t[0]=[Gs('',1)]))}const Dg=fo(Lg,[["render",Ng]]),jg={"aria-label":"Download Sechub",id:"download",class:"relative bg-gray-100 py-32"},Fg={class:"container"},Ug={class:"mx-auto max-w-md sm:text-center"},Bg={__name:"Download",setup(e){return(t,n)=>{const r=Dg;return re(),de("section",jg,[G(r),N("div",Fg,[N("div",Ug,[n[1]||(n[1]=N("h2",{class:"text-3xl font-medium tracking-tight text-gray-900 sm:text-4xl"},"Start Using Today!",-1)),n[2]||(n[2]=N("p",{class:"mt-4 text-lg text-gray-700"},[Ne(" Download SecHub for seamless security integration."),N("br"),Ne("Orchestrates security tools through an unified API."),N("br"),Ne("MIT License. ")],-1)),G(ee(ks),{as:"div",class:"relative mt-8 inline-block text-left"},{default:ge(()=>[N("div",null,[G(ee(Ps),{class:"button"},{default:ge(()=>n[0]||(n[0]=[N("a",{href:"https://mercedes-benz.github.io/sechub/index-old.html"}," Downloads ",-1)])),_:1})])]),_:1})])])])}}},Vg={},Wg={class:"border-t border-gray-200"},Kg={class:"container"},qg={class:"flex flex-col items-start justify-between gap-y-12 pb-6 pt-16 lg:flex-row lg:items-center lg:py-16"},Gg={class:"mt-6 text-sm text-gray-500"};function Zg(e,t){const n=Fa;return re(),de("footer",Wg,[N("div",Kg,[N("div",qg,[N("div",null,[t[2]||(t[2]=Gs('
SecHub Logo

SecHub

Your security guardian.

',1)),N("p",Gg,[Ne("© "+It(new Date().getFullYear())+" Mercedes-Benz Tech Innovation GmbH - ",1),t[0]||(t[0]=N("a",{href:"https://www.mercedes-benz-techinnovation.com/en/imprint/"},"Impressum",-1)),t[1]||(t[1]=Ne("."))])]),G(n,{class:"group relative -mx-4 flex items-center self-stretch p-4 transition-colors hover:bg-gray-100 sm:self-auto sm:rounded-2xl lg:mx-0 lg:self-auto lg:p-6",to:"https://github.com/mercedes-benz/sechub/blob/develop/CONTRIBUTING.md",target:"_blank"},{default:ge(()=>t[3]||(t[3]=[N("div",{class:"lg:w-64"},[N("p",{class:"text-base font-semibold text-gray-900"},"You want to innovate SecHub?"),N("p",{class:"mt-1 text-sm text-gray-700"}," We attach great importance to open and transparent communication for all parts of the community. ")],-1)])),_:1})])])])}const Jg=fo(Vg,[["render",Zg]]),zg=qe({__name:"app",setup(e){return Jh({title:"SecHub | Your security guardian.",description:"SecHub is a free and open-source security platform that provides a central API to test software with different security tools.",ogImage:"/og.jpg"}),(t,n)=>{const r=bg,s=kg,o=Hg,i=Bg,l=Jg;return re(),de(ve,null,[G(r),N("main",null,[G(s),G(o),G(i)]),G(l)],64)}}}),Yg={__name:"nuxt-error-page",props:{error:Object},setup(e){const n=e.error;n.stack&&n.stack.split(` +`).splice(1).map(u=>({text:u.replace("webpack:/","").replace(".vue",".js").trim(),internal:u.includes("node_modules")&&!u.includes(".cache")||u.includes("internal")||u.includes("new Promise")})).map(u=>`${u.text}`).join(` +`);const r=Number(n.statusCode||500),s=r===404,o=n.statusMessage??(s?"Page Not Found":"Internal Server Error"),i=n.message||n.toString(),l=void 0,c=s?Eo(()=>_i(()=>import("./BBZg053E.js"),__vite__mapDeps([0,1]),import.meta.url)):Eo(()=>_i(()=>import("./BMVkI6Ro.js"),__vite__mapDeps([2,3]),import.meta.url));return(u,d)=>(re(),Rt(ee(c),ac(Zl({statusCode:ee(r),statusMessage:ee(o),description:ee(i),stack:ee(l)})),null,16))}},Xg={key:0},Ri={__name:"nuxt-root",setup(e){const t=()=>null,n=he(),r=n.deferHydration();if(n.isHydrating){const a=n.hooks.hookOnce("app:error",r);et().beforeEach(a)}const s=!1;vr(va,ba()),n.hooks.callHookWith(a=>a.map(f=>f()),"vue:setup");const o=eo(),i=!1;bl((a,f,c)=>{if(n.hooks.callHook("vue:error",a,f,c).catch(u=>console.error("[nuxt] Error in `vue:error` hook",u)),Yd(a)&&(a.fatal||a.unhandled))return n.runWithContext(()=>Jd(a)),!1});const l=!1;return(a,f)=>(re(),Rt(Ou,{onResolve:ee(r)},{default:ge(()=>[ee(i)?(re(),de("div",Xg)):ee(o)?(re(),Rt(ee(Yg),{key:1,error:ee(o)},null,8,["error"])):ee(l)?(re(),Rt(ee(t),{key:2,context:ee(l)},null,8,["context"])):ee(s)?(re(),Rt(xl(ee(s)),{key:3})):(re(),Rt(ee(zg),{key:4}))]),_:1},8,["onResolve"]))}};let Ii;{let e;Ii=async function(){var i,l;if(e)return e;const r=!!(((i=window.__NUXT__)==null?void 0:i.serverRendered)??((l=document.getElementById("__NUXT_DATA__"))==null?void 0:l.dataset.ssr)==="true")?Ef(Ri):Tf(Ri),s=Ld({vueApp:r});async function o(a){await s.callHook("app:error",a),s.payload.error=s.payload.error||to(a)}r.config.errorHandler=o,s.hook("app:suspense:resolve",()=>{r.config.errorHandler===o&&(r.config.errorHandler=void 0)});try{await Dd(s,yp)}catch(a){o(a)}try{await s.hooks.callHook("app:created",r),await s.hooks.callHook("app:beforeMount",r),r.mount(Md),await s.hooks.callHook("app:mounted",r),await Qe()}catch(a){o(a)}return r},e=Ii().catch(t=>{throw console.error("Error while mounting app:",t),t})}export{fo as _,N as a,G as b,de as c,Ne as d,Fa as e,re as o,It as t,Gh as u,ge as w}; diff --git a/docs/_nuxt/builds/latest.json b/docs/_nuxt/builds/latest.json index 176f8168d..c7c369540 100644 --- a/docs/_nuxt/builds/latest.json +++ b/docs/_nuxt/builds/latest.json @@ -1 +1 @@ -{"id":"d8b811fa-4cdc-467b-81bf-673a0b8dc665","timestamp":1737556405199} \ No newline at end of file +{"id":"98cf1292-4f7d-457b-95d9-c3106eb94c7e","timestamp":1739546459152} \ No newline at end of file diff --git a/docs/_nuxt/builds/meta/98cf1292-4f7d-457b-95d9-c3106eb94c7e.json b/docs/_nuxt/builds/meta/98cf1292-4f7d-457b-95d9-c3106eb94c7e.json new file mode 100644 index 000000000..c6899ee54 --- /dev/null +++ b/docs/_nuxt/builds/meta/98cf1292-4f7d-457b-95d9-c3106eb94c7e.json @@ -0,0 +1 @@ +{"id":"98cf1292-4f7d-457b-95d9-c3106eb94c7e","timestamp":1739546459152,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":["/"]} \ No newline at end of file diff --git a/docs/_nuxt/builds/meta/d8b811fa-4cdc-467b-81bf-673a0b8dc665.json b/docs/_nuxt/builds/meta/d8b811fa-4cdc-467b-81bf-673a0b8dc665.json deleted file mode 100644 index ed824d27b..000000000 --- a/docs/_nuxt/builds/meta/d8b811fa-4cdc-467b-81bf-673a0b8dc665.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"d8b811fa-4cdc-467b-81bf-673a0b8dc665","timestamp":1737556405199,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":["/"]} \ No newline at end of file diff --git a/docs/_nuxt/error-404.1I9kcRJA.css b/docs/_nuxt/error-404.1I9kcRJA.css new file mode 100644 index 000000000..dc41e06d5 --- /dev/null +++ b/docs/_nuxt/error-404.1I9kcRJA.css @@ -0,0 +1 @@ +.spotlight[data-v-c2c324f7]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-c2c324f7]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-c2c324f7]{background-color:#ffffff4d}.gradient-border[data-v-c2c324f7]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-c2c324f7]{background-color:#1414144d}.gradient-border[data-v-c2c324f7]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-c2c324f7]:before{background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-c2c324f7]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-c2c324f7]{position:fixed}.left-0[data-v-c2c324f7]{left:0}.right-0[data-v-c2c324f7]{right:0}.z-10[data-v-c2c324f7]{z-index:10}.z-20[data-v-c2c324f7]{z-index:20}.grid[data-v-c2c324f7]{display:grid}.mb-16[data-v-c2c324f7]{margin-bottom:4rem}.mb-8[data-v-c2c324f7]{margin-bottom:2rem}.max-w-520px[data-v-c2c324f7]{max-width:520px}.min-h-screen[data-v-c2c324f7]{min-height:100vh}.w-full[data-v-c2c324f7]{width:100%}.flex[data-v-c2c324f7]{display:flex}.cursor-pointer[data-v-c2c324f7]{cursor:pointer}.place-content-center[data-v-c2c324f7]{place-content:center}.items-center[data-v-c2c324f7]{align-items:center}.justify-center[data-v-c2c324f7]{justify-content:center}.overflow-hidden[data-v-c2c324f7]{overflow:hidden}.bg-white[data-v-c2c324f7]{--un-bg-opacity:1;background-color:#fff;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-c2c324f7]{padding-left:1rem;padding-right:1rem}.px-8[data-v-c2c324f7]{padding-left:2rem;padding-right:2rem}.py-2[data-v-c2c324f7]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-c2c324f7]{text-align:center}.text-8xl[data-v-c2c324f7]{font-size:6rem;line-height:1}.text-xl[data-v-c2c324f7]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-c2c324f7]{--un-text-opacity:1;color:#000;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-c2c324f7]{font-weight:300}.font-medium[data-v-c2c324f7]{font-weight:500}.leading-tight[data-v-c2c324f7]{line-height:1.25}.font-sans[data-v-c2c324f7]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-c2c324f7]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-c2c324f7]{--un-bg-opacity:1;background-color:#000;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-c2c324f7]{--un-text-opacity:1;color:#fff;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-c2c324f7]{padding-left:0;padding-right:0}.sm\:px-6[data-v-c2c324f7]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-c2c324f7]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-c2c324f7]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-c2c324f7]{font-size:1.25rem;line-height:1.75rem}} diff --git a/docs/_nuxt/error-404.DYxFu4PM.css b/docs/_nuxt/error-404.DYxFu4PM.css deleted file mode 100644 index a84f24192..000000000 --- a/docs/_nuxt/error-404.DYxFu4PM.css +++ /dev/null @@ -1 +0,0 @@ -.spotlight[data-v-922baad2]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-922baad2]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-922baad2]{background-color:#ffffff4d}.gradient-border[data-v-922baad2]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-922baad2]{background-color:#1414144d}.gradient-border[data-v-922baad2]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82,#36e4da 75%,#0047e1)}}.gradient-border[data-v-922baad2]:before{background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-922baad2]:hover:before{background-position:-50% 0;opacity:1}.fixed[data-v-922baad2]{position:fixed}.left-0[data-v-922baad2]{left:0}.right-0[data-v-922baad2]{right:0}.z-10[data-v-922baad2]{z-index:10}.z-20[data-v-922baad2]{z-index:20}.grid[data-v-922baad2]{display:grid}.mb-16[data-v-922baad2]{margin-bottom:4rem}.mb-8[data-v-922baad2]{margin-bottom:2rem}.max-w-520px[data-v-922baad2]{max-width:520px}.min-h-screen[data-v-922baad2]{min-height:100vh}.w-full[data-v-922baad2]{width:100%}.flex[data-v-922baad2]{display:flex}.cursor-pointer[data-v-922baad2]{cursor:pointer}.place-content-center[data-v-922baad2]{place-content:center}.items-center[data-v-922baad2]{align-items:center}.justify-center[data-v-922baad2]{justify-content:center}.overflow-hidden[data-v-922baad2]{overflow:hidden}.bg-white[data-v-922baad2]{--un-bg-opacity:1;background-color:#fff;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-4[data-v-922baad2]{padding-left:1rem;padding-right:1rem}.px-8[data-v-922baad2]{padding-left:2rem;padding-right:2rem}.py-2[data-v-922baad2]{padding-bottom:.5rem;padding-top:.5rem}.text-center[data-v-922baad2]{text-align:center}.text-8xl[data-v-922baad2]{font-size:6rem;line-height:1}.text-xl[data-v-922baad2]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-922baad2]{--un-text-opacity:1;color:#000;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-922baad2]{font-weight:300}.font-medium[data-v-922baad2]{font-weight:500}.leading-tight[data-v-922baad2]{line-height:1.25}.font-sans[data-v-922baad2]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-922baad2]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-922baad2]{--un-bg-opacity:1;background-color:#000;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-922baad2]{--un-text-opacity:1;color:#fff;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-922baad2]{padding-left:0;padding-right:0}.sm\:px-6[data-v-922baad2]{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-3[data-v-922baad2]{padding-bottom:.75rem;padding-top:.75rem}.sm\:text-4xl[data-v-922baad2]{font-size:2.25rem;line-height:2.5rem}.sm\:text-xl[data-v-922baad2]{font-size:1.25rem;line-height:1.75rem}} diff --git a/docs/_nuxt/error-500.D2gsH5Ap.css b/docs/_nuxt/error-500.D2gsH5Ap.css new file mode 100644 index 000000000..602bc308a --- /dev/null +++ b/docs/_nuxt/error-500.D2gsH5Ap.css @@ -0,0 +1 @@ +.spotlight[data-v-3726f659]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-3726f659]{position:fixed}.-bottom-1\/2[data-v-3726f659]{bottom:-50%}.left-0[data-v-3726f659]{left:0}.right-0[data-v-3726f659]{right:0}.grid[data-v-3726f659]{display:grid}.mb-16[data-v-3726f659]{margin-bottom:4rem}.mb-8[data-v-3726f659]{margin-bottom:2rem}.h-1\/2[data-v-3726f659]{height:50%}.max-w-520px[data-v-3726f659]{max-width:520px}.min-h-screen[data-v-3726f659]{min-height:100vh}.place-content-center[data-v-3726f659]{place-content:center}.overflow-hidden[data-v-3726f659]{overflow:hidden}.bg-white[data-v-3726f659]{--un-bg-opacity:1;background-color:#fff;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-3726f659]{padding-left:2rem;padding-right:2rem}.text-center[data-v-3726f659]{text-align:center}.text-8xl[data-v-3726f659]{font-size:6rem;line-height:1}.text-xl[data-v-3726f659]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-3726f659]{--un-text-opacity:1;color:#000;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-3726f659]{font-weight:300}.font-medium[data-v-3726f659]{font-weight:500}.leading-tight[data-v-3726f659]{line-height:1.25}.font-sans[data-v-3726f659]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-3726f659]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-3726f659]{--un-bg-opacity:1;background-color:#000;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-3726f659]{--un-text-opacity:1;color:#fff;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-3726f659]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-3726f659]{font-size:2.25rem;line-height:2.5rem}} diff --git a/docs/_nuxt/error-500.PGmg907S.css b/docs/_nuxt/error-500.PGmg907S.css deleted file mode 100644 index 6e42251fa..000000000 --- a/docs/_nuxt/error-500.PGmg907S.css +++ /dev/null @@ -1 +0,0 @@ -.spotlight[data-v-1e3620c9]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.fixed[data-v-1e3620c9]{position:fixed}.-bottom-1\/2[data-v-1e3620c9]{bottom:-50%}.left-0[data-v-1e3620c9]{left:0}.right-0[data-v-1e3620c9]{right:0}.grid[data-v-1e3620c9]{display:grid}.mb-16[data-v-1e3620c9]{margin-bottom:4rem}.mb-8[data-v-1e3620c9]{margin-bottom:2rem}.h-1\/2[data-v-1e3620c9]{height:50%}.max-w-520px[data-v-1e3620c9]{max-width:520px}.min-h-screen[data-v-1e3620c9]{min-height:100vh}.place-content-center[data-v-1e3620c9]{place-content:center}.overflow-hidden[data-v-1e3620c9]{overflow:hidden}.bg-white[data-v-1e3620c9]{--un-bg-opacity:1;background-color:#fff;background-color:rgb(255 255 255/var(--un-bg-opacity))}.px-8[data-v-1e3620c9]{padding-left:2rem;padding-right:2rem}.text-center[data-v-1e3620c9]{text-align:center}.text-8xl[data-v-1e3620c9]{font-size:6rem;line-height:1}.text-xl[data-v-1e3620c9]{font-size:1.25rem;line-height:1.75rem}.text-black[data-v-1e3620c9]{--un-text-opacity:1;color:#000;color:rgb(0 0 0/var(--un-text-opacity))}.font-light[data-v-1e3620c9]{font-weight:300}.font-medium[data-v-1e3620c9]{font-weight:500}.leading-tight[data-v-1e3620c9]{line-height:1.25}.font-sans[data-v-1e3620c9]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.antialiased[data-v-1e3620c9]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-1e3620c9]{--un-bg-opacity:1;background-color:#000;background-color:rgb(0 0 0/var(--un-bg-opacity))}.dark\:text-white[data-v-1e3620c9]{--un-text-opacity:1;color:#fff;color:rgb(255 255 255/var(--un-text-opacity))}}@media (min-width:640px){.sm\:px-0[data-v-1e3620c9]{padding-left:0;padding-right:0}.sm\:text-4xl[data-v-1e3620c9]{font-size:2.25rem;line-height:2.5rem}} diff --git a/docs/_payload.json b/docs/_payload.json index 09ea6b33e..ee4473440 100644 --- a/docs/_payload.json +++ b/docs/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":3},["ShallowReactive",2],{},1737556411415] \ No newline at end of file +[{"data":1,"prerenderedAt":3},["ShallowReactive",2],{},1739546464771] \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 304db8e80..f92f7628f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,14 +1,16 @@ SecHub | Your security guardian. - - - - - - - + + + + + + + + -

SecHub - One API to secure them all

The free and open-source security platform SecHub, provides a central API to test software with different security tools.

SecHub supports many free and open-source as well as proprietary security tools covering SAST (Static Application Security Testing), DAST (Dynamic Application Security Testing), Secret scanners, Infrastructure scanners, License scanners and more…

SecHub Logo

Your Security Guardian.

SecHub orchestrates different security tools by one API layer.
Users interact with the SecHub Server, eliminating the need for projects to integrate vendor plugins for each security tool.

  • API Orchestration

    SecHub orchestrates tools via an unified API, simplifying integration for projects without the need for different vendor plugins.

  • Easy to use Client

    The SecHub client is written in Go and easy to use on your system of choice.

  • License Flexibility

    SecHub is MIT licensed. This ensures freedom in use, modification and distribution, fostering collaboration and adoption across all kind of projects.

  • Comprehensive Documentation

    Extensive documentation covers Getting Started, Architecture, Client, RestAPI, Operations and more. Available on our documentation.

  • Integration with Build Systems and IDEs

    Seamless integration with every build system and multiple developer IDEs adds security to your code without additional complexity.

  • Product Delegation Server (PDS)

    Explore SecHub's PDS, a vital component providing you the choice of many existing securtiy tools for use with SecHub. It also allows an easy integration of new securtiy tools.

Start Using Today!

Download SecHub for seamless security integration.
Orchestrates security tools through an unified API.
MIT License.

- \ No newline at end of file + +

SecHub - One API to secure them all

The free and open-source security platform SecHub, provides a central API to test software with different security tools.

SecHub supports many free and open-source as well as proprietary security tools covering SAST (Static Application Security Testing), DAST (Dynamic Application Security Testing), Secret scanners, Infrastructure scanners, License scanners and more…

SecHub Logo

Your Security Guardian.

SecHub orchestrates different security tools by one API layer.
Users interact with the SecHub Server, eliminating the need for projects to integrate vendor plugins for each security tool.

  • API Orchestration

    SecHub orchestrates tools via an unified API, simplifying integration for projects without the need for different vendor plugins.

  • Easy to use Client

    The SecHub client is written in Go and easy to use on your system of choice.

  • License Flexibility

    SecHub is MIT licensed. This ensures freedom in use, modification and distribution, fostering collaboration and adoption across all kind of projects.

  • Comprehensive Documentation

    Extensive documentation covers Getting Started, Architecture, Client, RestAPI, Operations and more. Available on our documentation.

  • Integration with Build Systems and IDEs

    Seamless integration with every build system and multiple developer IDEs adds security to your code without additional complexity.

  • Product Delegation Server (PDS)

    Explore SecHub's PDS, a vital component providing you the choice of many existing securtiy tools for use with SecHub. It also allows an easy integration of new securtiy tools.

Start Using Today!

Download SecHub for seamless security integration.
Orchestrates security tools through an unified API.
MIT License.

+ \ No newline at end of file diff --git a/docs/latest/images/diagram_pds_events_storage.svg b/docs/latest/images/diagram_pds_events_storage.svg index bee1f65e5..1d1b023bf 100644 --- a/docs/latest/images/diagram_pds_events_storage.svg +++ b/docs/latest/images/diagram_pds_events_storage.svg @@ -1 +1 @@ -$workspace/$jobUUID/eventsPDS-Job-QueuelauncherScriptEvent FilePDSWorkspaceServicevoid sendEvent(UUID jobUUID, ExecutionEventType eventType,ExecutionEventData eventData)ExecutionEventData fetchEventDataOrNull(UUID jobUUID, ExecutionEventType eventType) {ExecutionEventDataPDSExecutionCallableFactoryPDSExecutionCallablePDSBatchTriggerServicevoid triggerExecutionOfNextJob()PDSJobCancelTriggerServicevoid triggerHandleCancelRequests()PDSCancelServicevoid handleJobCancelRequests()PDSExecutionServiceInside the event folder we havefiles with name pattern"${eventTypeName}.json". Someevents have only one file.Remark: Currently not implemented,but if an event type shall supports multiplefiles in future the name pattern shall be:"${eventTypeName}[${nr}].json"cancel job by job UUIDcreatescreates/useswrites/reads event filesinto workspace foldercontains files whichhave JSOn contentcan readcreates processprepares workspace, sends eventscallsuses \ No newline at end of file +$workspace/$jobUUID/eventsPDS-Job-QueuelauncherScriptEvent FilePDSWorkspaceServicevoid sendEvent(UUID jobUUID, ExecutionEventType eventType,ExecutionEventData eventData)ExecutionEventData fetchEventDataOrNull(UUID jobUUID, ExecutionEventType eventType) {ExecutionEventDataPDSExecutionCallableFactoryPDSExecutionCallablePDSBatchTriggerServicevoid triggerExecutionOfNextJob()PDSJobCancelTriggerServicevoid triggerHandleCancelRequests()PDSCancelServicevoid handleJobCancelRequests()PDSExecutionServiceInside the event folder we havefiles with name pattern"${eventTypeName}.json". Someevents have only one file.Remark: Currently not implemented,but if an event type shall supports multiplefiles in future the name pattern shall be:"${eventTypeName}[${nr}].json"cancel job by job UUIDcreatescreates/useswrites/reads event filesinto workspace foldercontains files whichhave JSOn contentcan readcreates processprepares workspace, sends eventscallsuses \ No newline at end of file diff --git a/docs/latest/images/diagram_sechub_job_cancellation.svg b/docs/latest/images/diagram_sechub_job_cancellation.svg index 569cac826..e3b6c1fd6 100644 --- a/docs/latest/images/diagram_sechub_job_cancellation.svg +++ b/docs/latest/images/diagram_sechub_job_cancellation.svg @@ -1 +1 @@ -Event Nr.Message IDWhat happens at this event ?A1START_SCANScan - runningB1REQUEST_SCHEDULER_JOB_STATUSScan - periodic inspection if scheduler job marked as cancel requestedC1REQUEST_JOB_CANCELLATIONCancel request startedD1CANCELLATION_RUNNINGCancel scan running/ ongoingE1PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONEProduct execucutor cancel operations have finished (post processing donecom.mercedesbenz.sechub.domain.schedulecom.mercedesbenz.sechub.sharedkernelcom.mercedesbenz.sechub.domain.scancom.mercedesbenz.sechub.domain.administrationcom.mercedesbenz.sechub.domain.notification«Entity»ScheduleSecHubJobExecutionStateINITIALIZINGREADY_TO_STARTSTARTEDCANCEL_REQUESTEDCANCELEDENDEDExecutionResultNONEOKFAILEDSynchronSecHubJobExecutorSchedulerJobStatusRequestHandlerScheduleJobLauncherServiceSchedulerJobBatchTriggerServiceScheduleMessagehandlerhandleCancelJobRequested()SchedulerCancelJobServiceThe steps- D*are only triggered when the SecHub job hasthe execution result NONE.The execution state isnotinspected.DomainMessageServiceEventBus«Entity»ProductResultUUID uuidUUID secHubJobUUIDUUID productExecutorConfigUUIDString resultString messagesString metaDataLocalDateTime startedLocalDateTime endedSecHubExecutionContextmarkCancelRequested()ScanProgressMonitorProductExecutorList<ProductResult> execute(SecHubExecutionContext context, ProductExecutorContext executorContext)ScanServicestartScan()ScanJobExecutorScanJobExecutionRunnableScanJobCancellationRunnableAdapterAdapterExecutionResult start(C config, AdapterMetaDataCallback callback)boolean cancel(C config, AdapterMetaDataCallback callback)ProductExecutionStoreServiceexecuteProductsAndStoreResults(SecHubExecutionContext context)AbstractProductExecutionServiceAbstractProductExecutorCanceableProductExecutorboolean cancel(ProductExecutorData data)ScanJobRunnableDataProductExecutorDataSecHubExecutionHistorySecHubExecutionHistoryElementThe scan job executor is central point ofthe scan steep in scan domain.It does the start of the scan itself anddoes also periodically the inspect the schedulerjob status via event busExecutorThreadCancellationThreadJobAdministrationRestControllerJobAdministrationMessageHandlerJobCancelServiceNotificationMessageHandlerProcuctIs used to have eventcommunications between domainssends async REQUEST_JOB_CANCELLATION (C1)sends async CANCELLATION_RUNNING (D1)sends async CANCELLATION_RUNNING (D1)stores resultusescalls cancel servicebecause of C2marks as CANCEL_REQUESTED (C3)callssends async CANCELLATION_RUNNING (D1)sends async REQUEST_JOB_CANCELLATION (C1)receives "PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE" (E1) ASYNCHRONsends synch REQUEST_SCHEDULER_JOB_STATUS (B1)set SecHub job finally as CANCELEDcreatesusesstores resultsusescallsusesconfigures and usesusescreates + uses (A3)runsinterrupts ExecutorThreadwhen being canceled.This immediately interrupts all product calls hard.runscreatescancelsstartscreates if necessarystarts when necessarycreates contextcreatesmarks as cancel requestedso available in product executorscallsuses information aboutproduct executors and datasends "START_SCAN" (A1) SYNCHRONsends synchron REQUEST_SCHEDULER_JOB_STATUS (B1)and receives job statusrecevies "START_SCAN" (A2) SYNCHRON (returns result)communicationsends "PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE" (E1) ASYNCHRON \ No newline at end of file +Event Nr.Message IDWhat happens at this event ?A1START_SCANScan - runningB1REQUEST_SCHEDULER_JOB_STATUSScan - periodic inspection if scheduler job marked as cancel requestedC1REQUEST_JOB_CANCELLATIONCancel request startedD1CANCELLATION_RUNNINGCancel scan running/ ongoingE1PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONEProduct execucutor cancel operations have finished (post processing donecom.mercedesbenz.sechub.domain.schedulecom.mercedesbenz.sechub.sharedkernelcom.mercedesbenz.sechub.domain.scancom.mercedesbenz.sechub.domain.administrationcom.mercedesbenz.sechub.domain.notification«Entity»ScheduleSecHubJobExecutionStateINITIALIZINGREADY_TO_STARTSTARTEDCANCEL_REQUESTEDCANCELEDENDEDExecutionResultNONEOKFAILEDSynchronSecHubJobExecutorSchedulerJobStatusRequestHandlerScheduleJobLauncherServiceSchedulerJobBatchTriggerServiceScheduleMessagehandlerhandleCancelJobRequested()SchedulerCancelJobServiceThe steps- D*are only triggered when the SecHub job hasthe execution result NONE.The execution state isnotinspected.DomainMessageServiceEventBus«Entity»ProductResultUUID uuidUUID secHubJobUUIDUUID productExecutorConfigUUIDString resultString messagesString metaDataLocalDateTime startedLocalDateTime endedSecHubExecutionContextmarkCancelRequested()ScanProgressMonitorProductExecutorList<ProductResult> execute(SecHubExecutionContext context, ProductExecutorContext executorContext)ScanServicestartScan()ScanJobExecutorScanJobExecutionRunnableScanJobCancellationRunnableAdapterAdapterExecutionResult start(C config, AdapterMetaDataCallback callback)boolean cancel(C config, AdapterMetaDataCallback callback)ProductExecutionStoreServiceexecuteProductsAndStoreResults(SecHubExecutionContext context)AbstractProductExecutionServiceAbstractProductExecutorCanceableProductExecutorboolean cancel(ProductExecutorData data)ScanJobRunnableDataProductExecutorDataSecHubExecutionHistorySecHubExecutionHistoryElementThe scan job executor is central point ofthe scan steep in scan domain.It does the start of the scan itself anddoes also periodically the inspect the schedulerjob status via event busExecutorThreadCancellationThreadJobAdministrationRestControllerJobAdministrationMessageHandlerJobCancelServiceNotificationMessageHandlerProcuctIs used to have eventcommunications between domainssends async REQUEST_JOB_CANCELLATION (C1)sends async CANCELLATION_RUNNING (D1)sends async CANCELLATION_RUNNING (D1)stores resultusescalls cancel servicebecause of C2marks as CANCEL_REQUESTED (C3)callssends async CANCELLATION_RUNNING (D1)sends async REQUEST_JOB_CANCELLATION (C1)receives "PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE" (E1) ASYNCHRONsends synch REQUEST_SCHEDULER_JOB_STATUS (B1)set SecHub job finally as CANCELEDcreatesusesstores resultsusescallsusesconfigures and usesusescreates + uses (A3)runsinterrupts ExecutorThreadwhen being canceled.This immediately interrupts all product calls hard.runscreatescancelsstartscreates if necessarystarts when necessarycreates contextcreatesmarks as cancel requestedso available in product executorscallsuses information aboutproduct executors and datasends "START_SCAN" (A1) SYNCHRONsends synchron REQUEST_SCHEDULER_JOB_STATUS (B1)and receives job statusrecevies "START_SCAN" (A2) SYNCHRON (returns result)communicationsends "PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE" (E1) ASYNCHRON \ No newline at end of file diff --git a/docs/latest/images/diagram_sechub_job_restart_handling.svg b/docs/latest/images/diagram_sechub_job_restart_handling.svg index e58c92464..c5f708572 100644 --- a/docs/latest/images/diagram_sechub_job_restart_handling.svg +++ b/docs/latest/images/diagram_sechub_job_restart_handling.svg @@ -1 +1 @@ -com.mercedesbenz.sechub.adaptercom.mercedesbenz.sechub.domain.scancom.mercedesbenz.sechub.domain.schedulecom.mercedesbenz.sechub.domain.administrationAdapterMetaDataCallbackAdapterMetaData getMetaDataOrNull()persist(AdapterMetaData data)AdapterMetaDatasetValue(String key, String value)String getValue(String key)AdapterAdapterExecutionResult start(C config, AdapterMetaDataCallback callback)PDSAdapterV1ScanServicestartScan()ScanJobExecutorProductResultUUID getSecHubJobUUID()UUID getProductExecutorConfigUUID()AbstractProductExecutionServicerunOnExecutorWithOneConfiguration()ProductExecutorexecute(SecHubExecutionContext context, P param)ProductExecutorCallbackProductResult getProductResult()ProductExecutorContextFactoryProductExecutorCallbackImplScanJobExecutionRunnableScheduleMessageHandlerhandleJobRestartRequested()SchedulerRestartJobServicerestartJob(UUID jobUUID, String ownerEmailAddress)markJobAsNewExecutedNow(ScheduleSecHubJob secHubJob)ScheduleJobLauncherServiceexecuteJob(ScheduleSecHubJob secHubJob)JobRestartRequestServicerestartJob(UUID sechubJobUUID)If meta data is available, the PDS adapter tries to fetchformer PDS job UUID from meta data of product result.If the PDS job uuid is null, a new PDS job is created, otherwise theexisting PDS job will be reused and the the current state handled.DomainMessageServicecreatescalls to create callback instance1manyprovidesloads former product result for same executor and sechub job uuidstores and readsusesuses to communicatecalls multiple implementations(1) REQEUST RESTART JOB (soft)(2) REQEUST RESTART JOB (soft)(3) START_SCAN (synchron)(4) START_SCAN (synchron) \ No newline at end of file +com.mercedesbenz.sechub.adaptercom.mercedesbenz.sechub.domain.scancom.mercedesbenz.sechub.domain.schedulecom.mercedesbenz.sechub.domain.administrationAdapterMetaDataCallbackAdapterMetaData getMetaDataOrNull()persist(AdapterMetaData data)AdapterMetaDatasetValue(String key, String value)String getValue(String key)AdapterAdapterExecutionResult start(C config, AdapterMetaDataCallback callback)PDSAdapterV1ScanServicestartScan()ScanJobExecutorProductResultUUID getSecHubJobUUID()UUID getProductExecutorConfigUUID()AbstractProductExecutionServicerunOnExecutorWithOneConfiguration()ProductExecutorexecute(SecHubExecutionContext context, P param)ProductExecutorCallbackProductResult getProductResult()ProductExecutorContextFactoryProductExecutorCallbackImplScanJobExecutionRunnableScheduleMessageHandlerhandleJobRestartRequested()SchedulerRestartJobServicerestartJob(UUID jobUUID, String ownerEmailAddress)markJobAsNewExecutedNow(ScheduleSecHubJob secHubJob)ScheduleJobLauncherServiceexecuteJob(ScheduleSecHubJob secHubJob)JobRestartRequestServicerestartJob(UUID sechubJobUUID)If meta data is available, the PDS adapter tries to fetchformer PDS job UUID from meta data of product result.If the PDS job uuid is null, a new PDS job is created, otherwise theexisting PDS job will be reused and the the current state handled.DomainMessageServicecreatescalls to create callback instance1manyprovidesloads former product result for same executor and sechub job uuidstores and readsusesuses to communicatecalls multiple implementations(1) REQEUST RESTART JOB (soft)(2) REQEUST RESTART JOB (soft)(3) START_SCAN (synchron)(4) START_SCAN (synchron) \ No newline at end of file diff --git a/docs/latest/images/diagram_target_architecture.svg b/docs/latest/images/diagram_target_architecture.svg index a6fde94f6..addff8a3f 100644 --- a/docs/latest/images/diagram_target_architecture.svg +++ b/docs/latest/images/diagram_target_architecture.svg @@ -1 +1 @@ -ProductExecutorList<ProductResult> execute()ScanType getScanType()int getVersion()boolean isMultipleConfigurationAllowed()SerecoReportProductExecutorProductExecutorDataNetworkLocationProviderList<URI> getURIs();List<InetAddress> getInetAdresses();NetworkTargetProductServerDataProviderString getIdentifierWhenInternetTarget();String getIdentifierWhenIntranetTarget();String getBaseURLWhenInternetTarget();String getBaseURLWhenIntranetTarget();String getUsernameWhenInternetTarget();String getUsernameWhenIntranetTarget();String getPasswordWhenInternetTarget();String getPasswordWhenIntranetTarget();boolean hasUntrustedCertificateWhenIntranetTarget();boolean hasUntrustedCertificateWhenInternetTarget();NetworkTargetInfoNetworkTargetType getNetworkTargetType()Set<URI> getNetworkTargetURIs()Set<InetAddress> getNetworkTargetIPs()AbstractProductExecutorabstract void customize(ProductExecutorData data);abstract List<ProductResult> executeByAdapter(ProductExecutorData data)NetworkTargetResolverNetworkTarget resolveTarget(URI uri);NetworkTarget resolveTarget(InetAddress inetAdress);The base class for mostly all product executors (except for Sereco).The child classes must implmemnt the `customize` method andconfigure the product executor data object accordingly.It will handle automatically target specific partsfor scan types where it is necessary (WebScan, InfraScan).All other scan types (e.g. CodeScan) do notneed to setup specific product executor data(like NetworkLocationProvider).NetworkTargetgetURI()getInetAdress()NetworkTargetType getType()Represents a network targetto use for a dedicated network typeNetworkTargetTypeNetworkTargetRegistryNetworkTargetInfoFactoryNetworkTargetInfo createInfo()Represents (final) information about whichURIs /IPs are for a dedicated networktarget type (e.g. INTERNET).NetworkTargetProductServerDataSuppportString getIdentifier(NetworkTargetType target)boolean isAbletoScan(NetworkTargetType target)String getBaseURL(NetworkTargetType type)String getUserId(NetworkTargetType type)String getPassword(NetworkTargetType target)Data normally comes fromsechub configurationData normally comes from aninstall setupcreates + customizesusesuses data supportcreate+use (if necessary)create+use (if necessary)internally created + usedusesusescontains1nprovides \ No newline at end of file +ProductExecutorList<ProductResult> execute()ScanType getScanType()int getVersion()boolean isMultipleConfigurationAllowed()SerecoReportProductExecutorProductExecutorDataNetworkLocationProviderList<URI> getURIs();List<InetAddress> getInetAdresses();NetworkTargetProductServerDataProviderString getIdentifierWhenInternetTarget();String getIdentifierWhenIntranetTarget();String getBaseURLWhenInternetTarget();String getBaseURLWhenIntranetTarget();String getUsernameWhenInternetTarget();String getUsernameWhenIntranetTarget();String getPasswordWhenInternetTarget();String getPasswordWhenIntranetTarget();boolean hasUntrustedCertificateWhenIntranetTarget();boolean hasUntrustedCertificateWhenInternetTarget();NetworkTargetInfoNetworkTargetType getNetworkTargetType()Set<URI> getNetworkTargetURIs()Set<InetAddress> getNetworkTargetIPs()AbstractProductExecutorabstract void customize(ProductExecutorData data);abstract List<ProductResult> executeByAdapter(ProductExecutorData data)NetworkTargetResolverNetworkTarget resolveTarget(URI uri);NetworkTarget resolveTarget(InetAddress inetAdress);The base class for mostly all product executors (except for Sereco).The child classes must implmemnt the `customize` method andconfigure the product executor data object accordingly.It will handle automatically target specific partsfor scan types where it is necessary (WebScan, InfraScan).All other scan types (e.g. CodeScan) do notneed to setup specific product executor data(like NetworkLocationProvider).NetworkTargetgetURI()getInetAdress()NetworkTargetType getType()Represents a network targetto use for a dedicated network typeNetworkTargetTypeNetworkTargetRegistryNetworkTargetInfoFactoryNetworkTargetInfo createInfo()Represents (final) information about whichURIs /IPs are for a dedicated networktarget type (e.g. INTERNET).NetworkTargetProductServerDataSuppportString getIdentifier(NetworkTargetType target)boolean isAbletoScan(NetworkTargetType target)String getBaseURL(NetworkTargetType type)String getUserId(NetworkTargetType type)String getPassword(NetworkTargetType target)Data normally comes fromsechub configurationData normally comes from aninstall setupcreates + customizesusesuses data supportcreate+use (if necessary)create+use (if necessary)internally created + usedusesusescontains1nprovides \ No newline at end of file diff --git a/docs/latest/images/event_overview_uc_admin_assigns_user_to_project.svg b/docs/latest/images/event_overview_uc_admin_assigns_user_to_project.svg index 164555010..bc0cdfe6d 100644 --- a/docs/latest/images/event_overview_uc_admin_assigns_user_to_project.svg +++ b/docs/latest/images/event_overview_uc_admin_assigns_user_to_project.svg @@ -1 +1 @@ -UC_ADMIN_ASSIGNS_USER_TO_PROJECTadministrationauthorizationscanschedule0executedUSER_ADDED_TO_PROJECTUSER_ADDED_TO_PROJECT1REQUEST_USER_ROLE_RECALCULATION2USER_ROLES_CHANGED \ No newline at end of file +UC_ADMIN_ASSIGNS_USER_TO_PROJECTadministrationauthorizationscanschedule0executedUSER_ADDED_TO_PROJECTUSER_ADDED_TO_PROJECT1REQUEST_USER_ROLE_RECALCULATION2USER_ROLES_CHANGED \ No newline at end of file diff --git a/docs/latest/images/event_overview_uc_admin_unassigns_user_from_project.svg b/docs/latest/images/event_overview_uc_admin_unassigns_user_from_project.svg index ae98eb91b..282852d6a 100644 --- a/docs/latest/images/event_overview_uc_admin_unassigns_user_from_project.svg +++ b/docs/latest/images/event_overview_uc_admin_unassigns_user_from_project.svg @@ -1 +1 @@ -UC_ADMIN_UNASSIGNS_USER_FROM_PROJECTadministrationauthorizationscanschedule0executedUSER_REMOVED_FROM_PROJECTUSER_REMOVED_FROM_PROJECT1REQUEST_USER_ROLE_RECALCULATION2USER_ROLES_CHANGED \ No newline at end of file +UC_ADMIN_UNASSIGNS_USER_FROM_PROJECTadministrationauthorizationscanschedule0executedUSER_REMOVED_FROM_PROJECTUSER_REMOVED_FROM_PROJECT1REQUEST_USER_ROLE_RECALCULATION2USER_ROLES_CHANGED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_analyze_scan_results_available.svg b/docs/latest/images/gen_domain_messaging_analyze_scan_results_available.svg index dda30fb34..69c0f2f81 100644 --- a/docs/latest/images/gen_domain_messaging_analyze_scan_results_available.svg +++ b/docs/latest/images/gen_domain_messaging_analyze_scan_results_available.svg @@ -1 +1 @@ -Communication detailsofmessage ANALYZE_SCAN_RESULTS_AVAILABLEscanstatisticEventBusAnalyticsProductExecutionServiceImplStatisticMessageHandler1ANALYZE_SCAN_RESULTS_AVAILABLE2ANALYZE_SCAN_RESULTS_AVAILABLE \ No newline at end of file +Communication detailsofmessage ANALYZE_SCAN_RESULTS_AVAILABLEscanstatisticEventBusAnalyticsProductExecutionServiceImplStatisticMessageHandler1ANALYZE_SCAN_RESULTS_AVAILABLE2ANALYZE_SCAN_RESULTS_AVAILABLE \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_auto_cleanup_configuration_changed.svg b/docs/latest/images/gen_domain_messaging_auto_cleanup_configuration_changed.svg index 070326212..ebf043b6c 100644 --- a/docs/latest/images/gen_domain_messaging_auto_cleanup_configuration_changed.svg +++ b/docs/latest/images/gen_domain_messaging_auto_cleanup_configuration_changed.svg @@ -1 +1 @@ -Communication detailsofmessage AUTO_CLEANUP_CONFIGURATION_CHANGEDschedulescanadministrationEventBusScheduleMessageHandlerScanMessageHandlerAdministrationConfigServiceJobAdministrationMessageHandler1AUTO_CLEANUP_CONFIGURATION_CHANGED2AUTO_CLEANUP_CONFIGURATION_CHANGED3AUTO_CLEANUP_CONFIGURATION_CHANGED4AUTO_CLEANUP_CONFIGURATION_CHANGED \ No newline at end of file +Communication detailsofmessage AUTO_CLEANUP_CONFIGURATION_CHANGEDschedulescanadministrationEventBusScheduleMessageHandlerScanMessageHandlerJobAdministrationMessageHandlerAdministrationConfigService1AUTO_CLEANUP_CONFIGURATION_CHANGED2AUTO_CLEANUP_CONFIGURATION_CHANGED3AUTO_CLEANUP_CONFIGURATION_CHANGED4AUTO_CLEANUP_CONFIGURATION_CHANGED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_binary_upload_done.svg b/docs/latest/images/gen_domain_messaging_binary_upload_done.svg index e78e62ff6..eba3001b2 100644 --- a/docs/latest/images/gen_domain_messaging_binary_upload_done.svg +++ b/docs/latest/images/gen_domain_messaging_binary_upload_done.svg @@ -1 +1 @@ -Communication detailsofmessage BINARY_UPLOAD_DONEschedulestatisticEventBusSchedulerBinariesUploadServiceStatisticMessageHandler1BINARY_UPLOAD_DONE2BINARY_UPLOAD_DONE \ No newline at end of file +Communication detailsofmessage BINARY_UPLOAD_DONEschedulestatisticEventBusSchedulerBinariesUploadServiceStatisticMessageHandler1BINARY_UPLOAD_DONE2BINARY_UPLOAD_DONE \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_get_encryption_status_schedule_domain.svg b/docs/latest/images/gen_domain_messaging_get_encryption_status_schedule_domain.svg index 7e66b74ef..8bf473641 100644 --- a/docs/latest/images/gen_domain_messaging_get_encryption_status_schedule_domain.svg +++ b/docs/latest/images/gen_domain_messaging_get_encryption_status_schedule_domain.svg @@ -1 +1 @@ -Communication detailsofmessage GET_ENCRYPTION_STATUS_SCHEDULE_DOMAINscheduleadministrationEventBusScheduleEncryptionStatusServiceAdministrationEncryptionStatusService1GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN2GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN3RESULT_ENCRYPTION_STATUS_SCHEDULE_DOMAIN4 \ No newline at end of file +Communication detailsofmessage GET_ENCRYPTION_STATUS_SCHEDULE_DOMAINscheduleadministrationEventBusScheduleEncryptionStatusServiceAdministrationEncryptionStatusService1GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN2GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN3RESULT_ENCRYPTION_STATUS_SCHEDULE_DOMAIN4 \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_cancellation_running.svg b/docs/latest/images/gen_domain_messaging_job_cancellation_running.svg index b10e7b393..1f00d40d1 100644 --- a/docs/latest/images/gen_domain_messaging_job_cancellation_running.svg +++ b/docs/latest/images/gen_domain_messaging_job_cancellation_running.svg @@ -1 +1 @@ -Communication detailsofmessage JOB_CANCELLATION_RUNNINGscheduleadministrationnotificationEventBusSchedulerCancelJobServiceJobAdministrationMessageHandlerNotificationMessageHandler1JOB_CANCELLATION_RUNNING2JOB_CANCELLATION_RUNNING3JOB_CANCELLATION_RUNNING \ No newline at end of file +Communication detailsofmessage JOB_CANCELLATION_RUNNINGschedulenotificationadministrationEventBusSchedulerCancelJobServiceNotificationMessageHandlerJobAdministrationMessageHandler1JOB_CANCELLATION_RUNNING2JOB_CANCELLATION_RUNNING3JOB_CANCELLATION_RUNNING \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_created.svg b/docs/latest/images/gen_domain_messaging_job_created.svg index 66f8b00e8..05bb4cc63 100644 --- a/docs/latest/images/gen_domain_messaging_job_created.svg +++ b/docs/latest/images/gen_domain_messaging_job_created.svg @@ -1 +1 @@ -Communication detailsofmessage JOB_CREATEDschedulestatisticEventBusSchedulerCreateJobServiceStatisticMessageHandler1JOB_CREATED2JOB_CREATED \ No newline at end of file +Communication detailsofmessage JOB_CREATEDschedulestatisticEventBusSchedulerCreateJobServiceStatisticMessageHandler1JOB_CREATED2JOB_CREATED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_done.svg b/docs/latest/images/gen_domain_messaging_job_done.svg index 27bba06a8..975b6de3e 100644 --- a/docs/latest/images/gen_domain_messaging_job_done.svg +++ b/docs/latest/images/gen_domain_messaging_job_done.svg @@ -1 +1 @@ -Communication detailsofmessage JOB_DONEscheduleadministrationstatisticEventBusSynchronSecHubJobExecutorJobAdministrationMessageHandlerStatisticMessageHandler1JOB_DONE2JOB_DONE3JOB_DONE \ No newline at end of file +Communication detailsofmessage JOB_DONEschedulestatisticadministrationEventBusSynchronSecHubJobExecutorStatisticMessageHandlerJobAdministrationMessageHandler1JOB_DONE2JOB_DONE3JOB_DONE \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_execution_starting.svg b/docs/latest/images/gen_domain_messaging_job_execution_starting.svg index ece98e84a..9a5709c76 100644 --- a/docs/latest/images/gen_domain_messaging_job_execution_starting.svg +++ b/docs/latest/images/gen_domain_messaging_job_execution_starting.svg @@ -1 +1 @@ -Communication detailsofmessage JOB_EXECUTION_STARTINGschedulestatisticEventBusSynchronSecHubJobExecutorStatisticMessageHandler1JOB_EXECUTION_STARTING2JOB_EXECUTION_STARTING \ No newline at end of file +Communication detailsofmessage JOB_EXECUTION_STARTINGschedulestatisticEventBusSynchronSecHubJobExecutorStatisticMessageHandler1JOB_EXECUTION_STARTING2JOB_EXECUTION_STARTING \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_failed.svg b/docs/latest/images/gen_domain_messaging_job_failed.svg index 1b6c6e074..13c3ef226 100644 --- a/docs/latest/images/gen_domain_messaging_job_failed.svg +++ b/docs/latest/images/gen_domain_messaging_job_failed.svg @@ -1 +1 @@ -Communication detailsofmessage JOB_FAILEDscheduleadministrationstatisticEventBusSynchronSecHubJobExecutorJobAdministrationMessageHandlerStatisticMessageHandler1JOB_FAILED2JOB_FAILED3JOB_FAILED \ No newline at end of file +Communication detailsofmessage JOB_FAILEDschedulestatisticadministrationEventBusSynchronSecHubJobExecutorStatisticMessageHandlerJobAdministrationMessageHandler1JOB_FAILED2JOB_FAILED3JOB_FAILED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_started.svg b/docs/latest/images/gen_domain_messaging_job_started.svg index 15c065784..ab312fce3 100644 --- a/docs/latest/images/gen_domain_messaging_job_started.svg +++ b/docs/latest/images/gen_domain_messaging_job_started.svg @@ -1 +1 @@ -Communication detailsofmessage JOB_STARTEDscheduleadministrationEventBusScheduleJobLauncherServiceJobAdministrationMessageHandler1JOB_STARTED2JOB_STARTED \ No newline at end of file +Communication detailsofmessage JOB_STARTEDscheduleadministrationEventBusScheduleJobLauncherServiceJobAdministrationMessageHandler1JOB_STARTED2JOB_STARTED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_job_suspended.svg b/docs/latest/images/gen_domain_messaging_job_suspended.svg index e9c10843f..f883c7411 100644 --- a/docs/latest/images/gen_domain_messaging_job_suspended.svg +++ b/docs/latest/images/gen_domain_messaging_job_suspended.svg @@ -1 +1 @@ -Communication detailsofmessage JOB_SUSPENDEDscheduleadministrationEventBusSynchronSecHubJobExecutorJobAdministrationMessageHandler1JOB_SUSPENDED2JOB_SUSPENDED \ No newline at end of file +Communication detailsofmessage JOB_SUSPENDEDscheduleadministrationEventBusSynchronSecHubJobExecutorJobAdministrationMessageHandler1JOB_SUSPENDED2JOB_SUSPENDED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_mapping_configuration_changed.svg b/docs/latest/images/gen_domain_messaging_mapping_configuration_changed.svg index 576bffb67..2388d169d 100644 --- a/docs/latest/images/gen_domain_messaging_mapping_configuration_changed.svg +++ b/docs/latest/images/gen_domain_messaging_mapping_configuration_changed.svg @@ -1 +1 @@ -Communication detailsofmessage MAPPING_CONFIGURATION_CHANGEDscanadministrationEventBusScanMessageHandlerUpdateMappingService1MAPPING_CONFIGURATION_CHANGED2MAPPING_CONFIGURATION_CHANGED \ No newline at end of file +Communication detailsofmessage MAPPING_CONFIGURATION_CHANGEDscanadministrationEventBusScanMessageHandlerUpdateMappingService1MAPPING_CONFIGURATION_CHANGED2MAPPING_CONFIGURATION_CHANGED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_overview.svg b/docs/latest/images/gen_domain_messaging_overview.svg index fe71d168f..f0761c8a3 100644 --- a/docs/latest/images/gen_domain_messaging_overview.svg +++ b/docs/latest/images/gen_domain_messaging_overview.svg @@ -1 +1 @@ -Overviewof domainmessagingschedulescanadministrationauthorizationnotificationstatisticEventBusschedulescanadministrationauthorizationnotificationstatistic1START_SCAN2START_SCANalt[failure]3UNSUPPORTED_OPERATION[success]4SCAN_DONE[failure]5SCAN_FAILED[suspended]6SCAN_SUSPENDED71USER_CREATED2USER_CREATED3USER_CREATED1USER_API_TOKEN_CHANGED2USER_API_TOKEN_CHANGED3USER_API_TOKEN_CHANGED4USER_API_TOKEN_CHANGED1USER_NEW_API_TOKEN_REQUESTED2USER_NEW_API_TOKEN_REQUESTED3USER_NEW_API_TOKEN_REQUESTED1USER_ADDED_TO_PROJECT2USER_ADDED_TO_PROJECT3USER_ADDED_TO_PROJECT1USER_REMOVED_FROM_PROJECT2USER_REMOVED_FROM_PROJECT3USER_REMOVED_FROM_PROJECT1USER_ROLES_CHANGED2USER_ROLES_CHANGED1USER_DELETED2USER_DELETED3USER_DELETED4USER_DELETED5USER_DELETED1PROJECT_CREATED2PROJECT_CREATED1PROJECT_DELETED2PROJECT_DELETED3PROJECT_DELETED4PROJECT_DELETED1PROJECT_WHITELIST_UPDATED2PROJECT_WHITELIST_UPDATED1JOB_CREATED2JOB_CREATED1JOB_STARTED2JOB_STARTED1JOB_EXECUTION_STARTING2JOB_EXECUTION_STARTING1JOB_DONE2JOB_DONE3JOB_DONE1USER_SIGNUP_REQUESTED2USER_SIGNUP_REQUESTED1JOB_FAILED2JOB_FAILED3JOB_FAILED1JOB_SUSPENDED2JOB_SUSPENDED1REQUEST_USER_ROLE_RECALCULATION2REQUEST_USER_ROLE_RECALCULATION3REQUEST_USER_ROLE_RECALCULATION4REQUEST_USER_ROLE_RECALCULATION5REQUEST_USER_ROLE_RECALCULATION6REQUEST_USER_ROLE_RECALCULATION7REQUEST_USER_ROLE_RECALCULATION8REQUEST_USER_ROLE_RECALCULATION9REQUEST_USER_ROLE_RECALCULATION1USER_BECOMES_SUPERADMIN2USER_BECOMES_SUPERADMIN1USER_NO_LONGER_SUPERADMIN2USER_NO_LONGER_SUPERADMIN1REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING2REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING1SCHEDULER_JOB_PROCESSING_ENABLED2SCHEDULER_JOB_PROCESSING_ENABLED3SCHEDULER_JOB_PROCESSING_ENABLED1SCHEDULER_JOB_PROCESSING_DISABLED2SCHEDULER_JOB_PROCESSING_DISABLED3SCHEDULER_JOB_PROCESSING_DISABLED1REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING2REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING1REQUEST_SCHEDULER_STATUS_UPDATE2REQUEST_SCHEDULER_STATUS_UPDATE1SCHEDULER_STATUS_UPDATE2SCHEDULER_STATUS_UPDATE1REQUEST_JOB_CANCELLATION2REQUEST_JOB_CANCELLATION1JOB_CANCELLATION_RUNNING2JOB_CANCELLATION_RUNNING3JOB_CANCELLATION_RUNNING1MAPPING_CONFIGURATION_CHANGED2MAPPING_CONFIGURATION_CHANGED1REQUEST_JOB_RESTART2REQUEST_JOB_RESTART3REQUEST_JOB_RESTART1REQUEST_JOB_RESTART_HARD2REQUEST_JOB_RESTART_HARD1JOB_RESTART_TRIGGERED2JOB_RESTART_TRIGGERED1JOB_RESTART_CANCELED2JOB_RESTART_CANCELED1JOB_RESULTS_PURGED2JOB_RESULTS_PURGED1REQUEST_PURGE_JOB_RESULTS2REQUEST_PURGE_JOB_RESULTSalt[success]3JOB_RESULT_PURGE_DONE[failed]4JOB_RESULT_PURGE_FAILED51REQUEST_SCHEDULER_JOB_STATUS2REQUEST_SCHEDULER_JOB_STATUS3SCHEDULER_JOB_STATUS41SCHEDULER_STARTED2SCHEDULER_STARTED1PROJECT_OWNER_CHANGED2PROJECT_OWNER_CHANGED1PROJECT_ACCESS_LEVEL_CHANGED2PROJECT_ACCESS_LEVEL_CHANGED3PROJECT_ACCESS_LEVEL_CHANGED1USER_EMAIL_ADDRESS_CHANGED2USER_EMAIL_ADDRESS_CHANGED1AUTO_CLEANUP_CONFIGURATION_CHANGED2AUTO_CLEANUP_CONFIGURATION_CHANGED3AUTO_CLEANUP_CONFIGURATION_CHANGED4AUTO_CLEANUP_CONFIGURATION_CHANGED1PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE2PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE1ANALYZE_SCAN_RESULTS_AVAILABLE2ANALYZE_SCAN_RESULTS_AVAILABLE1SOURCE_UPLOAD_DONE2SOURCE_UPLOAD_DONE1BINARY_UPLOAD_DONE2BINARY_UPLOAD_DONE1START_ENCRYPTION_ROTATION2START_ENCRYPTION_ROTATION1SCHEDULE_ENCRYPTION_POOL_INITIALIZED2SCHEDULE_ENCRYPTION_POOL_INITIALIZED1GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN2GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN3RESULT_ENCRYPTION_STATUS_SCHEDULE_DOMAIN41REQUEST_ASSIGN_TEMPLATE_TO_PROJECT2REQUEST_ASSIGN_TEMPLATE_TO_PROJECTalt[success]3RESULT_ASSIGN_TEMPLATE_TO_PROJECT[failed]4RESULT_ASSIGN_TEMPLATE_TO_PROJECT51REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECT2REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECTalt[success]3RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT[failed]4RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT5 \ No newline at end of file +Overviewof domainmessagingschedulescanstatisticauthorizationnotificationadministrationEventBusschedulescanstatisticauthorizationnotificationadministration1START_SCAN2START_SCANalt[failure]3UNSUPPORTED_OPERATION[success]4SCAN_DONE[failure]5SCAN_FAILED[suspended]6SCAN_SUSPENDED71USER_CREATED2USER_CREATED3USER_CREATED1USER_API_TOKEN_CHANGED2USER_API_TOKEN_CHANGED3USER_API_TOKEN_CHANGED4USER_API_TOKEN_CHANGED1USER_NEW_API_TOKEN_REQUESTED2USER_NEW_API_TOKEN_REQUESTED3USER_NEW_API_TOKEN_REQUESTED1USER_ADDED_TO_PROJECT2USER_ADDED_TO_PROJECT3USER_ADDED_TO_PROJECT1USER_REMOVED_FROM_PROJECT2USER_REMOVED_FROM_PROJECT3USER_REMOVED_FROM_PROJECT1USER_ROLES_CHANGED2USER_ROLES_CHANGED1USER_DELETED2USER_DELETED3USER_DELETED4USER_DELETED5USER_DELETED1PROJECT_CREATED2PROJECT_CREATED1PROJECT_DELETED2PROJECT_DELETED3PROJECT_DELETED4PROJECT_DELETED1PROJECT_WHITELIST_UPDATED2PROJECT_WHITELIST_UPDATED1JOB_CREATED2JOB_CREATED1JOB_STARTED2JOB_STARTED1JOB_EXECUTION_STARTING2JOB_EXECUTION_STARTING1JOB_DONE2JOB_DONE3JOB_DONE1USER_SIGNUP_REQUESTED2USER_SIGNUP_REQUESTED1JOB_FAILED2JOB_FAILED3JOB_FAILED1JOB_SUSPENDED2JOB_SUSPENDED1REQUEST_USER_ROLE_RECALCULATION2REQUEST_USER_ROLE_RECALCULATION3REQUEST_USER_ROLE_RECALCULATION4REQUEST_USER_ROLE_RECALCULATION5REQUEST_USER_ROLE_RECALCULATION6REQUEST_USER_ROLE_RECALCULATION7REQUEST_USER_ROLE_RECALCULATION8REQUEST_USER_ROLE_RECALCULATION9REQUEST_USER_ROLE_RECALCULATION1USER_BECOMES_SUPERADMIN2USER_BECOMES_SUPERADMIN1USER_NO_LONGER_SUPERADMIN2USER_NO_LONGER_SUPERADMIN1REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING2REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING1SCHEDULER_JOB_PROCESSING_ENABLED2SCHEDULER_JOB_PROCESSING_ENABLED3SCHEDULER_JOB_PROCESSING_ENABLED1SCHEDULER_JOB_PROCESSING_DISABLED2SCHEDULER_JOB_PROCESSING_DISABLED3SCHEDULER_JOB_PROCESSING_DISABLED1REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING2REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING1REQUEST_SCHEDULER_STATUS_UPDATE2REQUEST_SCHEDULER_STATUS_UPDATE1SCHEDULER_STATUS_UPDATE2SCHEDULER_STATUS_UPDATE1REQUEST_JOB_CANCELLATION2REQUEST_JOB_CANCELLATION1JOB_CANCELLATION_RUNNING2JOB_CANCELLATION_RUNNING3JOB_CANCELLATION_RUNNING1MAPPING_CONFIGURATION_CHANGED2MAPPING_CONFIGURATION_CHANGED1REQUEST_JOB_RESTART2REQUEST_JOB_RESTART3REQUEST_JOB_RESTART1REQUEST_JOB_RESTART_HARD2REQUEST_JOB_RESTART_HARD1JOB_RESTART_TRIGGERED2JOB_RESTART_TRIGGERED1JOB_RESTART_CANCELED2JOB_RESTART_CANCELED1JOB_RESULTS_PURGED2JOB_RESULTS_PURGED1REQUEST_PURGE_JOB_RESULTS2REQUEST_PURGE_JOB_RESULTSalt[success]3JOB_RESULT_PURGE_DONE[failed]4JOB_RESULT_PURGE_FAILED51REQUEST_SCHEDULER_JOB_STATUS2REQUEST_SCHEDULER_JOB_STATUS3SCHEDULER_JOB_STATUS41SCHEDULER_STARTED2SCHEDULER_STARTED1PROJECT_OWNER_CHANGED2PROJECT_OWNER_CHANGED1PROJECT_ACCESS_LEVEL_CHANGED2PROJECT_ACCESS_LEVEL_CHANGED3PROJECT_ACCESS_LEVEL_CHANGED1USER_EMAIL_ADDRESS_CHANGED2USER_EMAIL_ADDRESS_CHANGED1AUTO_CLEANUP_CONFIGURATION_CHANGED2AUTO_CLEANUP_CONFIGURATION_CHANGED3AUTO_CLEANUP_CONFIGURATION_CHANGED4AUTO_CLEANUP_CONFIGURATION_CHANGED1PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE2PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE1ANALYZE_SCAN_RESULTS_AVAILABLE2ANALYZE_SCAN_RESULTS_AVAILABLE1SOURCE_UPLOAD_DONE2SOURCE_UPLOAD_DONE1BINARY_UPLOAD_DONE2BINARY_UPLOAD_DONE1START_ENCRYPTION_ROTATION2START_ENCRYPTION_ROTATION1SCHEDULE_ENCRYPTION_POOL_INITIALIZED2SCHEDULE_ENCRYPTION_POOL_INITIALIZED1GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN2GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN3RESULT_ENCRYPTION_STATUS_SCHEDULE_DOMAIN41REQUEST_ASSIGN_TEMPLATE_TO_PROJECT2REQUEST_ASSIGN_TEMPLATE_TO_PROJECTalt[success]3RESULT_ASSIGN_TEMPLATE_TO_PROJECT[failed]4RESULT_ASSIGN_TEMPLATE_TO_PROJECT51REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECT2REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECTalt[success]3RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT[failed]4RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT51TEMPLATE_DELETED2TEMPLATE_DELETED1REQUEST_FULL_CONFIGURATION_VALIDATION2REQUEST_FULL_CONFIGURATION_VALIDATION3RESULT_FULL_CONFIGURATION_VALIDATION4 \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_project_access_level_changed.svg b/docs/latest/images/gen_domain_messaging_project_access_level_changed.svg index 94f552ec8..497c0f186 100644 --- a/docs/latest/images/gen_domain_messaging_project_access_level_changed.svg +++ b/docs/latest/images/gen_domain_messaging_project_access_level_changed.svg @@ -1 +1 @@ -Communication detailsofmessage PROJECT_ACCESS_LEVEL_CHANGEDschedulescanadministrationEventBusScheduleMessageHandlerScanMessageHandlerProjectChangeAccessLevelService1PROJECT_ACCESS_LEVEL_CHANGED2PROJECT_ACCESS_LEVEL_CHANGED3PROJECT_ACCESS_LEVEL_CHANGED \ No newline at end of file +Communication detailsofmessage PROJECT_ACCESS_LEVEL_CHANGEDschedulescanadministrationEventBusScheduleMessageHandlerScanMessageHandlerProjectChangeAccessLevelService1PROJECT_ACCESS_LEVEL_CHANGED2PROJECT_ACCESS_LEVEL_CHANGED3PROJECT_ACCESS_LEVEL_CHANGED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_project_created.svg b/docs/latest/images/gen_domain_messaging_project_created.svg index a778f0a37..283ba377c 100644 --- a/docs/latest/images/gen_domain_messaging_project_created.svg +++ b/docs/latest/images/gen_domain_messaging_project_created.svg @@ -1 +1 @@ -Communication detailsofmessage PROJECT_CREATEDscheduleadministrationEventBusScheduleMessageHandlerProjectCreationService1PROJECT_CREATED2PROJECT_CREATED \ No newline at end of file +Communication detailsofmessage PROJECT_CREATEDscheduleadministrationEventBusScheduleMessageHandlerProjectCreationService1PROJECT_CREATED2PROJECT_CREATED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_project_deleted.svg b/docs/latest/images/gen_domain_messaging_project_deleted.svg index 77b14cfc7..c3912764d 100644 --- a/docs/latest/images/gen_domain_messaging_project_deleted.svg +++ b/docs/latest/images/gen_domain_messaging_project_deleted.svg @@ -1 +1 @@ -Communication detailsofmessage PROJECT_DELETEDschedulescanadministrationnotificationEventBusScheduleMessageHandlerScanMessageHandlerProjectDeleteServiceNotificationMessageHandler1PROJECT_DELETED2PROJECT_DELETED3PROJECT_DELETED4PROJECT_DELETED \ No newline at end of file +Communication detailsofmessage PROJECT_DELETEDschedulescannotificationadministrationEventBusScheduleMessageHandlerScanMessageHandlerNotificationMessageHandlerProjectDeleteService1PROJECT_DELETED2PROJECT_DELETED3PROJECT_DELETED4PROJECT_DELETED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_project_owner_changed.svg b/docs/latest/images/gen_domain_messaging_project_owner_changed.svg index e8da64729..ace9eeb8e 100644 --- a/docs/latest/images/gen_domain_messaging_project_owner_changed.svg +++ b/docs/latest/images/gen_domain_messaging_project_owner_changed.svg @@ -1 +1 @@ -Communication detailsofmessage PROJECT_OWNER_CHANGEDadministrationnotificationEventBusProjectChangeOwnerServiceNotificationMessageHandler1PROJECT_OWNER_CHANGED2PROJECT_OWNER_CHANGED \ No newline at end of file +Communication detailsofmessage PROJECT_OWNER_CHANGEDnotificationadministrationEventBusNotificationMessageHandlerProjectChangeOwnerService1PROJECT_OWNER_CHANGED2PROJECT_OWNER_CHANGED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_project_whitelist_updated.svg b/docs/latest/images/gen_domain_messaging_project_whitelist_updated.svg index d6d09531b..9099c1408 100644 --- a/docs/latest/images/gen_domain_messaging_project_whitelist_updated.svg +++ b/docs/latest/images/gen_domain_messaging_project_whitelist_updated.svg @@ -1 +1 @@ -Communication detailsofmessage PROJECT_WHITELIST_UPDATEDscheduleadministrationEventBusScheduleMessageHandlerProjectUpdateWhitelistService1PROJECT_WHITELIST_UPDATED2PROJECT_WHITELIST_UPDATED \ No newline at end of file +Communication detailsofmessage PROJECT_WHITELIST_UPDATEDscheduleadministrationEventBusScheduleMessageHandlerProjectUpdateWhitelistService1PROJECT_WHITELIST_UPDATED2PROJECT_WHITELIST_UPDATED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_assign_template_to_project.svg b/docs/latest/images/gen_domain_messaging_request_assign_template_to_project.svg index 738e8b6e6..62a6c2d45 100644 --- a/docs/latest/images/gen_domain_messaging_request_assign_template_to_project.svg +++ b/docs/latest/images/gen_domain_messaging_request_assign_template_to_project.svg @@ -1 +1 @@ -Communication detailsofmessage REQUEST_ASSIGN_TEMPLATE_TO_PROJECTscanadministrationEventBusScanMessageHandlerProjectTemplateService1REQUEST_ASSIGN_TEMPLATE_TO_PROJECT2REQUEST_ASSIGN_TEMPLATE_TO_PROJECTalt[success]3RESULT_ASSIGN_TEMPLATE_TO_PROJECT[failed]4RESULT_ASSIGN_TEMPLATE_TO_PROJECT5 \ No newline at end of file +Communication detailsofmessage REQUEST_ASSIGN_TEMPLATE_TO_PROJECTscanadministrationEventBusScanMessageHandlerProjectTemplateService1REQUEST_ASSIGN_TEMPLATE_TO_PROJECT2REQUEST_ASSIGN_TEMPLATE_TO_PROJECTalt[success]3RESULT_ASSIGN_TEMPLATE_TO_PROJECT[failed]4RESULT_ASSIGN_TEMPLATE_TO_PROJECT5 \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_full_configuration_validation.svg b/docs/latest/images/gen_domain_messaging_request_full_configuration_validation.svg new file mode 100644 index 000000000..e71e5d400 --- /dev/null +++ b/docs/latest/images/gen_domain_messaging_request_full_configuration_validation.svg @@ -0,0 +1 @@ +Communication detailsofmessage REQUEST_FULL_CONFIGURATION_VALIDATIONschedulescanEventBusScheduleSecHubConfigurationRuntimeValidationScanMessageHandler1REQUEST_FULL_CONFIGURATION_VALIDATION2REQUEST_FULL_CONFIGURATION_VALIDATION3RESULT_FULL_CONFIGURATION_VALIDATION4 \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_job_cancellation.svg b/docs/latest/images/gen_domain_messaging_request_job_cancellation.svg index dc5409f55..ddbc8262e 100644 --- a/docs/latest/images/gen_domain_messaging_request_job_cancellation.svg +++ b/docs/latest/images/gen_domain_messaging_request_job_cancellation.svg @@ -1 +1 @@ -Communication detailsofmessage REQUEST_JOB_CANCELLATIONscheduleadministrationEventBusScheduleMessageHandlerJobCancelService1REQUEST_JOB_CANCELLATION2REQUEST_JOB_CANCELLATION \ No newline at end of file +Communication detailsofmessage REQUEST_JOB_CANCELLATIONscheduleadministrationEventBusScheduleMessageHandlerJobCancelService1REQUEST_JOB_CANCELLATION2REQUEST_JOB_CANCELLATION \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_job_restart.svg b/docs/latest/images/gen_domain_messaging_request_job_restart.svg index c45390710..0456f5b30 100644 --- a/docs/latest/images/gen_domain_messaging_request_job_restart.svg +++ b/docs/latest/images/gen_domain_messaging_request_job_restart.svg @@ -1 +1 @@ -Communication detailsofmessage REQUEST_JOB_RESTARTscheduleadministrationEventBusScheduleResumeJobServiceScheduleMessageHandlerJobRestartRequestService1REQUEST_JOB_RESTART2REQUEST_JOB_RESTART3REQUEST_JOB_RESTART \ No newline at end of file +Communication detailsofmessage REQUEST_JOB_RESTARTscheduleadministrationEventBusScheduleMessageHandlerScheduleResumeJobServiceJobRestartRequestService1REQUEST_JOB_RESTART2REQUEST_JOB_RESTART3REQUEST_JOB_RESTART \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_job_restart_hard.svg b/docs/latest/images/gen_domain_messaging_request_job_restart_hard.svg index f01267e46..1818a2344 100644 --- a/docs/latest/images/gen_domain_messaging_request_job_restart_hard.svg +++ b/docs/latest/images/gen_domain_messaging_request_job_restart_hard.svg @@ -1 +1 @@ -Communication detailsofmessage REQUEST_JOB_RESTART_HARDscheduleadministrationEventBusScheduleMessageHandlerJobRestartRequestService1REQUEST_JOB_RESTART_HARD2REQUEST_JOB_RESTART_HARD \ No newline at end of file +Communication detailsofmessage REQUEST_JOB_RESTART_HARDscheduleadministrationEventBusScheduleMessageHandlerJobRestartRequestService1REQUEST_JOB_RESTART_HARD2REQUEST_JOB_RESTART_HARD \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_scheduler_disable_job_processing.svg b/docs/latest/images/gen_domain_messaging_request_scheduler_disable_job_processing.svg index 9aae7362b..1725f6bce 100644 --- a/docs/latest/images/gen_domain_messaging_request_scheduler_disable_job_processing.svg +++ b/docs/latest/images/gen_domain_messaging_request_scheduler_disable_job_processing.svg @@ -1 +1 @@ -Communication detailsofmessage REQUEST_SCHEDULER_DISABLE_JOB_PROCESSINGscheduleadministrationEventBusScheduleMessageHandlerSwitchSchedulerJobProcessingService1REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING2REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING \ No newline at end of file +Communication detailsofmessage REQUEST_SCHEDULER_DISABLE_JOB_PROCESSINGscheduleadministrationEventBusScheduleMessageHandlerSwitchSchedulerJobProcessingService1REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING2REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_scheduler_enable_job_processing.svg b/docs/latest/images/gen_domain_messaging_request_scheduler_enable_job_processing.svg index e6c281de8..dc447cf5a 100644 --- a/docs/latest/images/gen_domain_messaging_request_scheduler_enable_job_processing.svg +++ b/docs/latest/images/gen_domain_messaging_request_scheduler_enable_job_processing.svg @@ -1 +1 @@ -Communication detailsofmessage REQUEST_SCHEDULER_ENABLE_JOB_PROCESSINGscheduleadministrationEventBusScheduleMessageHandlerSwitchSchedulerJobProcessingService1REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING2REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING \ No newline at end of file +Communication detailsofmessage REQUEST_SCHEDULER_ENABLE_JOB_PROCESSINGscheduleadministrationEventBusScheduleMessageHandlerSwitchSchedulerJobProcessingService1REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING2REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_scheduler_status_update.svg b/docs/latest/images/gen_domain_messaging_request_scheduler_status_update.svg index bcaca00a8..38a99ffe0 100644 --- a/docs/latest/images/gen_domain_messaging_request_scheduler_status_update.svg +++ b/docs/latest/images/gen_domain_messaging_request_scheduler_status_update.svg @@ -1 +1 @@ -Communication detailsofmessage REQUEST_SCHEDULER_STATUS_UPDATEscheduleadministrationEventBusScheduleMessageHandlerTriggerSchedulerStatusRefreshService1REQUEST_SCHEDULER_STATUS_UPDATE2REQUEST_SCHEDULER_STATUS_UPDATE \ No newline at end of file +Communication detailsofmessage REQUEST_SCHEDULER_STATUS_UPDATEscheduleadministrationEventBusScheduleMessageHandlerTriggerSchedulerStatusRefreshService1REQUEST_SCHEDULER_STATUS_UPDATE2REQUEST_SCHEDULER_STATUS_UPDATE \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_unassign_template_from_project.svg b/docs/latest/images/gen_domain_messaging_request_unassign_template_from_project.svg index cfaba4b92..9e5ed5c5d 100644 --- a/docs/latest/images/gen_domain_messaging_request_unassign_template_from_project.svg +++ b/docs/latest/images/gen_domain_messaging_request_unassign_template_from_project.svg @@ -1 +1 @@ -Communication detailsofmessage REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECTscanadministrationEventBusScanMessageHandlerProjectTemplateService1REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECT2REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECTalt[success]3RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT[failed]4RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT5 \ No newline at end of file +Communication detailsofmessage REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECTscanadministrationEventBusScanMessageHandlerProjectTemplateService1REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECT2REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECTalt[success]3RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT[failed]4RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT5 \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_request_user_role_recalculation.svg b/docs/latest/images/gen_domain_messaging_request_user_role_recalculation.svg index ca5cbaca1..d7693af3e 100644 --- a/docs/latest/images/gen_domain_messaging_request_user_role_recalculation.svg +++ b/docs/latest/images/gen_domain_messaging_request_user_role_recalculation.svg @@ -1 +1 @@ -Communication detailsofmessage REQUEST_USER_ROLE_RECALCULATIONadministrationauthorizationEventBusUserGrantSuperAdminRightsServiceUserRevokeSuperAdminRightsServiceProjectAssignUserServiceProjectUnassignUserServiceProjectCreationServiceProjectChangeOwnerServiceProjectDeleteServiceUserRoleAdministrationMessageHandlerAuthUserCreationService1REQUEST_USER_ROLE_RECALCULATION2REQUEST_USER_ROLE_RECALCULATION3REQUEST_USER_ROLE_RECALCULATION4REQUEST_USER_ROLE_RECALCULATION5REQUEST_USER_ROLE_RECALCULATION6REQUEST_USER_ROLE_RECALCULATION7REQUEST_USER_ROLE_RECALCULATION8REQUEST_USER_ROLE_RECALCULATION9REQUEST_USER_ROLE_RECALCULATION \ No newline at end of file +Communication detailsofmessage REQUEST_USER_ROLE_RECALCULATIONauthorizationadministrationEventBusAuthUserCreationServiceUserRoleAdministrationMessageHandlerUserGrantSuperAdminRightsServiceUserRevokeSuperAdminRightsServiceProjectDeleteServiceProjectUnassignUserServiceProjectChangeOwnerServiceProjectCreationServiceProjectAssignUserService1REQUEST_USER_ROLE_RECALCULATION2REQUEST_USER_ROLE_RECALCULATION3REQUEST_USER_ROLE_RECALCULATION4REQUEST_USER_ROLE_RECALCULATION5REQUEST_USER_ROLE_RECALCULATION6REQUEST_USER_ROLE_RECALCULATION7REQUEST_USER_ROLE_RECALCULATION8REQUEST_USER_ROLE_RECALCULATION9REQUEST_USER_ROLE_RECALCULATION \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_result_full_configuration_validation.svg b/docs/latest/images/gen_domain_messaging_result_full_configuration_validation.svg new file mode 100644 index 000000000..4d0c07360 --- /dev/null +++ b/docs/latest/images/gen_domain_messaging_result_full_configuration_validation.svg @@ -0,0 +1 @@ +Communication detailsofmessage RESULT_FULL_CONFIGURATION_VALIDATIONscanEventBusScanMessageHandler \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_schedule_encryption_pool_initialized.svg b/docs/latest/images/gen_domain_messaging_schedule_encryption_pool_initialized.svg index 6e177d038..a80377bcf 100644 --- a/docs/latest/images/gen_domain_messaging_schedule_encryption_pool_initialized.svg +++ b/docs/latest/images/gen_domain_messaging_schedule_encryption_pool_initialized.svg @@ -1 +1 @@ -Communication detailsofmessage SCHEDULE_ENCRYPTION_POOL_INITIALIZEDscheduleEventBusScheduleEncryptionServiceScheduleMessageHandler1SCHEDULE_ENCRYPTION_POOL_INITIALIZED2SCHEDULE_ENCRYPTION_POOL_INITIALIZED \ No newline at end of file +Communication detailsofmessage SCHEDULE_ENCRYPTION_POOL_INITIALIZEDscheduleEventBusScheduleMessageHandlerScheduleEncryptionService1SCHEDULE_ENCRYPTION_POOL_INITIALIZED2SCHEDULE_ENCRYPTION_POOL_INITIALIZED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_scheduler_job_processing_disabled.svg b/docs/latest/images/gen_domain_messaging_scheduler_job_processing_disabled.svg index d03e9729c..d01c53976 100644 --- a/docs/latest/images/gen_domain_messaging_scheduler_job_processing_disabled.svg +++ b/docs/latest/images/gen_domain_messaging_scheduler_job_processing_disabled.svg @@ -1 +1 @@ -Communication detailsofmessage SCHEDULER_JOB_PROCESSING_DISABLEDscheduleadministrationnotificationEventBusSchedulerConfigServiceSchedulerAdministrationMessageHandlerNotificationMessageHandler1SCHEDULER_JOB_PROCESSING_DISABLED2SCHEDULER_JOB_PROCESSING_DISABLED3SCHEDULER_JOB_PROCESSING_DISABLED \ No newline at end of file +Communication detailsofmessage SCHEDULER_JOB_PROCESSING_DISABLEDschedulenotificationadministrationEventBusSchedulerConfigServiceNotificationMessageHandlerSchedulerAdministrationMessageHandler1SCHEDULER_JOB_PROCESSING_DISABLED2SCHEDULER_JOB_PROCESSING_DISABLED3SCHEDULER_JOB_PROCESSING_DISABLED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_scheduler_job_processing_enabled.svg b/docs/latest/images/gen_domain_messaging_scheduler_job_processing_enabled.svg index fec8da3b5..1a89e6b42 100644 --- a/docs/latest/images/gen_domain_messaging_scheduler_job_processing_enabled.svg +++ b/docs/latest/images/gen_domain_messaging_scheduler_job_processing_enabled.svg @@ -1 +1 @@ -Communication detailsofmessage SCHEDULER_JOB_PROCESSING_ENABLEDscheduleadministrationnotificationEventBusSchedulerConfigServiceSchedulerAdministrationMessageHandlerNotificationMessageHandler1SCHEDULER_JOB_PROCESSING_ENABLED2SCHEDULER_JOB_PROCESSING_ENABLED3SCHEDULER_JOB_PROCESSING_ENABLED \ No newline at end of file +Communication detailsofmessage SCHEDULER_JOB_PROCESSING_ENABLEDschedulenotificationadministrationEventBusSchedulerConfigServiceNotificationMessageHandlerSchedulerAdministrationMessageHandler1SCHEDULER_JOB_PROCESSING_ENABLED2SCHEDULER_JOB_PROCESSING_ENABLED3SCHEDULER_JOB_PROCESSING_ENABLED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_scheduler_status_update.svg b/docs/latest/images/gen_domain_messaging_scheduler_status_update.svg index ae4a4230d..8cf1e156b 100644 --- a/docs/latest/images/gen_domain_messaging_scheduler_status_update.svg +++ b/docs/latest/images/gen_domain_messaging_scheduler_status_update.svg @@ -1 +1 @@ -Communication detailsofmessage SCHEDULER_STATUS_UPDATEscheduleadministrationEventBusSchedulerStatusServiceSchedulerAdministrationMessageHandler1SCHEDULER_STATUS_UPDATE2SCHEDULER_STATUS_UPDATE \ No newline at end of file +Communication detailsofmessage SCHEDULER_STATUS_UPDATEscheduleadministrationEventBusSchedulerStatusServiceSchedulerAdministrationMessageHandler1SCHEDULER_STATUS_UPDATE2SCHEDULER_STATUS_UPDATE \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_source_upload_done.svg b/docs/latest/images/gen_domain_messaging_source_upload_done.svg index a332ecee3..d916fc6a3 100644 --- a/docs/latest/images/gen_domain_messaging_source_upload_done.svg +++ b/docs/latest/images/gen_domain_messaging_source_upload_done.svg @@ -1 +1 @@ -Communication detailsofmessage SOURCE_UPLOAD_DONEschedulestatisticEventBusSchedulerSourcecodeUploadServiceStatisticMessageHandler1SOURCE_UPLOAD_DONE2SOURCE_UPLOAD_DONE \ No newline at end of file +Communication detailsofmessage SOURCE_UPLOAD_DONEschedulestatisticEventBusSchedulerSourcecodeUploadServiceStatisticMessageHandler1SOURCE_UPLOAD_DONE2SOURCE_UPLOAD_DONE \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_start_encryption_rotation.svg b/docs/latest/images/gen_domain_messaging_start_encryption_rotation.svg index 16a14bc2f..8a93ff167 100644 --- a/docs/latest/images/gen_domain_messaging_start_encryption_rotation.svg +++ b/docs/latest/images/gen_domain_messaging_start_encryption_rotation.svg @@ -1 +1 @@ -Communication detailsofmessage START_ENCRYPTION_ROTATIONscheduleadministrationEventBusScheduleMessageHandlerAdministrationEncryptionRotationService1START_ENCRYPTION_ROTATION2START_ENCRYPTION_ROTATION \ No newline at end of file +Communication detailsofmessage START_ENCRYPTION_ROTATIONscheduleadministrationEventBusScheduleMessageHandlerAdministrationEncryptionRotationService1START_ENCRYPTION_ROTATION2START_ENCRYPTION_ROTATION \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_template_deleted.svg b/docs/latest/images/gen_domain_messaging_template_deleted.svg new file mode 100644 index 000000000..07678b400 --- /dev/null +++ b/docs/latest/images/gen_domain_messaging_template_deleted.svg @@ -0,0 +1 @@ +Communication detailsofmessage TEMPLATE_DELETEDscanadministrationEventBusTemplateServiceSchedulerAdministrationMessageHandler1TEMPLATE_DELETED2TEMPLATE_DELETED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_added_to_project.svg b/docs/latest/images/gen_domain_messaging_user_added_to_project.svg index 067d241cc..e61dd2320 100644 --- a/docs/latest/images/gen_domain_messaging_user_added_to_project.svg +++ b/docs/latest/images/gen_domain_messaging_user_added_to_project.svg @@ -1 +1 @@ -Communication detailsofmessage USER_ADDED_TO_PROJECTschedulescanadministrationEventBusScheduleMessageHandlerScanMessageHandlerProjectAssignUserService1USER_ADDED_TO_PROJECT2USER_ADDED_TO_PROJECT3USER_ADDED_TO_PROJECT \ No newline at end of file +Communication detailsofmessage USER_ADDED_TO_PROJECTschedulescanadministrationEventBusScheduleMessageHandlerScanMessageHandlerProjectAssignUserService1USER_ADDED_TO_PROJECT2USER_ADDED_TO_PROJECT3USER_ADDED_TO_PROJECT \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_api_token_changed.svg b/docs/latest/images/gen_domain_messaging_user_api_token_changed.svg index 0015d420f..2e0a79e19 100644 --- a/docs/latest/images/gen_domain_messaging_user_api_token_changed.svg +++ b/docs/latest/images/gen_domain_messaging_user_api_token_changed.svg @@ -1 +1 @@ -Communication detailsofmessage USER_API_TOKEN_CHANGEDadministrationauthorizationnotificationEventBusInternalInitialDataServiceAnonymousUserGetAPITokenByOneTimeTokenServiceAuthMessageHandlerNotificationMessageHandler1USER_API_TOKEN_CHANGED2USER_API_TOKEN_CHANGED3USER_API_TOKEN_CHANGED4USER_API_TOKEN_CHANGED \ No newline at end of file +Communication detailsofmessage USER_API_TOKEN_CHANGEDauthorizationnotificationadministrationEventBusAuthMessageHandlerNotificationMessageHandlerAnonymousUserGetAPITokenByOneTimeTokenServiceInternalInitialDataService1USER_API_TOKEN_CHANGED2USER_API_TOKEN_CHANGED3USER_API_TOKEN_CHANGED4USER_API_TOKEN_CHANGED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_becomes_superadmin.svg b/docs/latest/images/gen_domain_messaging_user_becomes_superadmin.svg index 1b3eccc14..1c8d200fb 100644 --- a/docs/latest/images/gen_domain_messaging_user_becomes_superadmin.svg +++ b/docs/latest/images/gen_domain_messaging_user_becomes_superadmin.svg @@ -1 +1 @@ -Communication detailsofmessage USER_BECOMES_SUPERADMINadministrationnotificationEventBusUserGrantSuperAdminRightsServiceNotificationMessageHandler1USER_BECOMES_SUPERADMIN2USER_BECOMES_SUPERADMIN \ No newline at end of file +Communication detailsofmessage USER_BECOMES_SUPERADMINnotificationadministrationEventBusNotificationMessageHandlerUserGrantSuperAdminRightsService1USER_BECOMES_SUPERADMIN2USER_BECOMES_SUPERADMIN \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_created.svg b/docs/latest/images/gen_domain_messaging_user_created.svg index 0b2e68d1a..37d00c930 100644 --- a/docs/latest/images/gen_domain_messaging_user_created.svg +++ b/docs/latest/images/gen_domain_messaging_user_created.svg @@ -1 +1 @@ -Communication detailsofmessage USER_CREATEDadministrationauthorizationEventBusInternalInitialDataServiceUserCreationServiceAuthMessageHandler1USER_CREATED2USER_CREATED3USER_CREATED \ No newline at end of file +Communication detailsofmessage USER_CREATEDauthorizationadministrationEventBusAuthMessageHandlerUserCreationServiceInternalInitialDataService1USER_CREATED2USER_CREATED3USER_CREATED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_deleted.svg b/docs/latest/images/gen_domain_messaging_user_deleted.svg index 53d405ce7..b6caf2f83 100644 --- a/docs/latest/images/gen_domain_messaging_user_deleted.svg +++ b/docs/latest/images/gen_domain_messaging_user_deleted.svg @@ -1 +1 @@ -Communication detailsofmessage USER_DELETEDschedulescanadministrationauthorizationnotificationEventBusScheduleMessageHandlerScanMessageHandlerUserDeleteServiceAuthMessageHandlerNotificationMessageHandler1USER_DELETED2USER_DELETED3USER_DELETED4USER_DELETED5USER_DELETED \ No newline at end of file +Communication detailsofmessage USER_DELETEDschedulescanauthorizationnotificationadministrationEventBusScheduleMessageHandlerScanMessageHandlerAuthMessageHandlerNotificationMessageHandlerUserDeleteService1USER_DELETED2USER_DELETED3USER_DELETED4USER_DELETED5USER_DELETED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_email_address_changed.svg b/docs/latest/images/gen_domain_messaging_user_email_address_changed.svg index 17130ad7c..54476623c 100644 --- a/docs/latest/images/gen_domain_messaging_user_email_address_changed.svg +++ b/docs/latest/images/gen_domain_messaging_user_email_address_changed.svg @@ -1 +1 @@ -Communication detailsofmessage USER_EMAIL_ADDRESS_CHANGEDadministrationnotificationEventBusUserEmailAddressUpdateServiceNotificationMessageHandler1USER_EMAIL_ADDRESS_CHANGED2USER_EMAIL_ADDRESS_CHANGED \ No newline at end of file +Communication detailsofmessage USER_EMAIL_ADDRESS_CHANGEDnotificationadministrationEventBusNotificationMessageHandlerUserEmailAddressUpdateService1USER_EMAIL_ADDRESS_CHANGED2USER_EMAIL_ADDRESS_CHANGED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_new_api_token_requested.svg b/docs/latest/images/gen_domain_messaging_user_new_api_token_requested.svg index bbffc3776..66697e75e 100644 --- a/docs/latest/images/gen_domain_messaging_user_new_api_token_requested.svg +++ b/docs/latest/images/gen_domain_messaging_user_new_api_token_requested.svg @@ -1 +1 @@ -Communication detailsofmessage USER_NEW_API_TOKEN_REQUESTEDadministrationnotificationEventBusUserCreationServiceAnonymousUserRequestsNewApiTokenServiceNotificationMessageHandler1USER_NEW_API_TOKEN_REQUESTED2USER_NEW_API_TOKEN_REQUESTED3USER_NEW_API_TOKEN_REQUESTED \ No newline at end of file +Communication detailsofmessage USER_NEW_API_TOKEN_REQUESTEDnotificationadministrationEventBusNotificationMessageHandlerUserCreationServiceAnonymousUserRequestsNewApiTokenService1USER_NEW_API_TOKEN_REQUESTED2USER_NEW_API_TOKEN_REQUESTED3USER_NEW_API_TOKEN_REQUESTED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_no_longer_superadmin.svg b/docs/latest/images/gen_domain_messaging_user_no_longer_superadmin.svg index fa925102d..1cac4a7e5 100644 --- a/docs/latest/images/gen_domain_messaging_user_no_longer_superadmin.svg +++ b/docs/latest/images/gen_domain_messaging_user_no_longer_superadmin.svg @@ -1 +1 @@ -Communication detailsofmessage USER_NO_LONGER_SUPERADMINadministrationnotificationEventBusUserRevokeSuperAdminRightsServiceNotificationMessageHandler1USER_NO_LONGER_SUPERADMIN2USER_NO_LONGER_SUPERADMIN \ No newline at end of file +Communication detailsofmessage USER_NO_LONGER_SUPERADMINnotificationadministrationEventBusNotificationMessageHandlerUserRevokeSuperAdminRightsService1USER_NO_LONGER_SUPERADMIN2USER_NO_LONGER_SUPERADMIN \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_removed_from_project.svg b/docs/latest/images/gen_domain_messaging_user_removed_from_project.svg index 8af99eeeb..7727f9554 100644 --- a/docs/latest/images/gen_domain_messaging_user_removed_from_project.svg +++ b/docs/latest/images/gen_domain_messaging_user_removed_from_project.svg @@ -1 +1 @@ -Communication detailsofmessage USER_REMOVED_FROM_PROJECTschedulescanadministrationEventBusScheduleMessageHandlerScanMessageHandlerProjectUnassignUserService1USER_REMOVED_FROM_PROJECT2USER_REMOVED_FROM_PROJECT3USER_REMOVED_FROM_PROJECT \ No newline at end of file +Communication detailsofmessage USER_REMOVED_FROM_PROJECTschedulescanadministrationEventBusScheduleMessageHandlerScanMessageHandlerProjectUnassignUserService1USER_REMOVED_FROM_PROJECT2USER_REMOVED_FROM_PROJECT3USER_REMOVED_FROM_PROJECT \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_roles_changed.svg b/docs/latest/images/gen_domain_messaging_user_roles_changed.svg index cc5f9fb99..77bb2499e 100644 --- a/docs/latest/images/gen_domain_messaging_user_roles_changed.svg +++ b/docs/latest/images/gen_domain_messaging_user_roles_changed.svg @@ -1 +1 @@ -Communication detailsofmessage USER_ROLES_CHANGEDadministrationauthorizationEventBusUserRoleCalculationServiceAuthMessageHandler1USER_ROLES_CHANGED2USER_ROLES_CHANGED \ No newline at end of file +Communication detailsofmessage USER_ROLES_CHANGEDauthorizationadministrationEventBusAuthMessageHandlerUserRoleCalculationService1USER_ROLES_CHANGED2USER_ROLES_CHANGED \ No newline at end of file diff --git a/docs/latest/images/gen_domain_messaging_user_signup_requested.svg b/docs/latest/images/gen_domain_messaging_user_signup_requested.svg index 8e23b0308..8a81f5190 100644 --- a/docs/latest/images/gen_domain_messaging_user_signup_requested.svg +++ b/docs/latest/images/gen_domain_messaging_user_signup_requested.svg @@ -1 +1 @@ -Communication detailsofmessage USER_SIGNUP_REQUESTEDadministrationnotificationEventBusAnonymousSignupCreateServiceNotificationMessageHandler1USER_SIGNUP_REQUESTED2USER_SIGNUP_REQUESTED \ No newline at end of file +Communication detailsofmessage USER_SIGNUP_REQUESTEDnotificationadministrationEventBusNotificationMessageHandlerAnonymousSignupCreateService1USER_SIGNUP_REQUESTED2USER_SIGNUP_REQUESTED \ No newline at end of file diff --git a/docs/latest/images/gen_springprofiles-dev.svg b/docs/latest/images/gen_springprofiles-dev.svg index 0ec266f0b..fcdb79cf8 100644 --- a/docs/latest/images/gen_springprofiles-dev.svg +++ b/docs/latest/images/gen_springprofiles-dev.svg @@ -1 +1 @@ -<dev>devh2defaultreal_productsmocked_productsmocked_notificationsadmin_accessinitial_admin_predefinedpostgreslocalserver \ No newline at end of file +<dev>devpostgresmocked_productslocalserverh2admin_accessdefaultmocked_notificationsreal_productsinitial_admin_predefined \ No newline at end of file diff --git a/docs/latest/images/gen_springprofiles-integrationtest.svg b/docs/latest/images/gen_springprofiles-integrationtest.svg index d39101e0a..da6cdd4c7 100644 --- a/docs/latest/images/gen_springprofiles-integrationtest.svg +++ b/docs/latest/images/gen_springprofiles-integrationtest.svg @@ -1 +1 @@ -<integrationtest>integrationtesth2defaultreal_productsmocked_productsmocked_notificationsadmin_accessinitial_admin_staticpostgreslocalserver \ No newline at end of file +<integrationtest>integrationtestpostgresmocked_productsinitial_admin_staticlocalserverh2admin_accessdefaultmocked_notificationsreal_products \ No newline at end of file diff --git a/docs/latest/images/gen_springprofiles-prod.svg b/docs/latest/images/gen_springprofiles-prod.svg index 8ae980786..5a30bad2e 100644 --- a/docs/latest/images/gen_springprofiles-prod.svg +++ b/docs/latest/images/gen_springprofiles-prod.svg @@ -1 +1 @@ -<prod>proddefaultreal_productsserverinitial_admin_createdpostgres \ No newline at end of file +<prod>prodpostgresinitial_admin_createdserverdefaultreal_products \ No newline at end of file diff --git a/docs/latest/images/gen_springprofiles.svg b/docs/latest/images/gen_springprofiles.svg index 773851f72..fc3a69869 100644 --- a/docs/latest/images/gen_springprofiles.svg +++ b/docs/latest/images/gen_springprofiles.svg @@ -1 +1 @@ -h2defaultreal_productsmocked_productsmocked_notificationsadmin_accessintegrationtestserverinitial_admin_createdinitial_admin_staticprodinitial_admin_predefineddebugdevpostgreslocalservertest \ No newline at end of file +postgresmocked_productsinitial_admin_createdprodserverinitial_admin_staticlocalserverdevh2integrationtestadmin_accessdebugdefaultmocked_notificationslocalreal_productsinitial_admin_predefinedtest \ No newline at end of file diff --git a/docs/latest/sechub-architecture.html b/docs/latest/sechub-architecture.html index 4192e2a9e..d2201edbb 100644 --- a/docs/latest/sechub-architecture.html +++ b/docs/latest/sechub-architecture.html @@ -531,7 +531,7 @@ +
+

7.5.97. UC_096-Admin executes templates healthcheck or updates a template

+
+

An administrator creates or updates a template

+
+
+

Steps

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NrTitleRole(s)NextDescription

1

REST API call to create or update template

SUPERADMIN

2

+
@@ -9178,7 +9231,7 @@

7.6.9. Admin downloads all
-
$ curl 'https://sechub.example.com/api/admin/scan/download/5433eb9c-496c-4dbb-81cb-a31b2ebffc8d' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/admin/scan/download/2ae31598-80f9-4a94-bc4c-7fca67cb5688' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -10343,7 +10396,7 @@

7.6.20. Admin shows scan logs for pro
-
[{"sechubJobUUID":"30fb86d6-6ff4-4e21-86ba-2ebb07c6bad8","executedBy":"spartakus","started":"2025-01-21T14:30:30.35686563","ended":"2025-01-22T14:30:30.356882732","status":"OK"}]
+
[{"sechubJobUUID":"59663cb6-f8e8-434e-acb4-b36ed906593b","executedBy":"spartakus","started":"2025-02-13T15:18:14.256960928","ended":"2025-02-14T15:18:14.256985263","status":"OK"}]
@@ -10856,81 +10909,7 @@

7.6.24. get assigned project data

- - -
-

Definition

-
- - ---- - - - - - - - - - - - - - - - - - - - - -
Table 43. General request information
Value

Path

/api/anonymous/apitoken/{oneTimeToken}

Method

GET

Status code

200 OK

-
-

Path parameters

-
- - ---- - - - - - - - - - - - - -
Table 44. https://localhost:8081/api/anonymous/apitoken/{oneTimeToken}
ParameterDescription

oneTimeToken

A one time token the user has got by a previous mail from sechub server

-
-

Example

-
-
-

Curl request

-
-
-
-
$ curl 'https://sechub.example.com/api/anonymous/apitoken/oneTimeToken1' -i -X GET \
-    -H 'Content-Type: application/json;charset=UTF-8'
-
-
-
-

Response body
-(empty)

-
-
-
-

7.6.26. User fetches his user details

+

7.6.25. User fetches his user details

@@ -10938,7 +10917,7 @@

7.6.26. User fetches his user details

Definition

- +@@ -10981,17 +10960,17 @@

7.6.26. User fetches his user details

-

7.6.27. User creates a new sechub job

+

7.6.26. User creates a new sechub job

-
7.6.27.1. Code Scan variant
+
7.6.26.1. Code Scan variant

Definition

Table 45. General request informationTable 43. General request information
- +@@ -11021,7 +11000,7 @@
7.6.27.1. Code Scan variant

Path parameters

Table 46. General request informationTable 44. General request information
- +@@ -11140,17 +11119,17 @@
7.6.27.1. Code Scan variant
-
{"jobId":"0c69eb38-f06d-4b03-91f3-19edf447b7a8"}
+
{"jobId":"f2d26de6-937b-489e-b852-b2a75366feae"}
-
7.6.27.2. Code Scan using data section variant
+
7.6.26.2. Code Scan using data section variant

Definition

Table 47. https://localhost:8081/api/project/{projectId}/jobTable 45. https://localhost:8081/api/project/{projectId}/job
- +@@ -11180,7 +11159,7 @@
7.6.27.2. Code Sc

Path parameters

Table 48. General request informationTable 46. General request information
- +@@ -11319,17 +11298,17 @@
7.6.27.2. Code Sc
-
{"jobId":"18a5e6b0-bf35-465f-bc7d-0a64fd061301"}
+
{"jobId":"991860e6-c439-440f-a6d1-dfcdee48b495"}
-
7.6.27.3. Secret scan variant
+
7.6.26.3. Secret scan variant

Definition

Table 49. https://localhost:8081/api/project/{projectId}/jobTable 47. https://localhost:8081/api/project/{projectId}/job
- +@@ -11359,7 +11338,7 @@
7.6.27.3. Secret scan variant

Path parameters

Table 50. General request informationTable 48. General request information
- +@@ -11478,17 +11457,17 @@
7.6.27.3. Secret scan variant
-
{"jobId":"737b4156-e0cd-4e32-a30a-648ed81c62d8"}
+
{"jobId":"2150e003-abf5-4cca-bccd-d545fc0cbaf6"}
-
7.6.27.4. License scan variant
+
7.6.26.4. License scan variant

Definition

Table 51. https://localhost:8081/api/project/{projectId}/jobTable 49. https://localhost:8081/api/project/{projectId}/job
- +@@ -11518,7 +11497,7 @@
7.6.27.4. License scan variantPath parameters

Table 52. General request informationTable 50. General request information
- +@@ -11637,17 +11616,17 @@
7.6.27.4. License scan variant
-
{"jobId":"9b9ea17d-2a50-4ce6-8db8-881f155c12c6"}
+
{"jobId":"a969be5c-458b-432f-8c04-678bee6d7f7e"}
-
7.6.27.5. Infrastructure scan variant
+
7.6.26.5. Infrastructure scan variant

Definition

Table 53. https://localhost:8081/api/project/{projectId}/jobTable 51. https://localhost:8081/api/project/{projectId}/job
- +@@ -11677,7 +11656,7 @@
7.6.27.5. Infrastructure s

Path parameters

Table 54. General request informationTable 52. General request information
- +@@ -11791,17 +11770,17 @@
7.6.27.5. Infrastructure s
-
{"jobId":"b8a2c6d0-8c8e-4f96-a88e-ee2f655e40a1"}
+
{"jobId":"0d6120f9-c72a-4bc4-b664-f2b2bfdbdf6e"}
-
7.6.27.6. Web scan anonymous variant
+
7.6.26.6. Web scan anonymous variant

Definition

Table 55. https://localhost:8081/api/project/{projectId}/jobTable 53. https://localhost:8081/api/project/{projectId}/job
- +@@ -11831,7 +11810,7 @@
7.6.27.6. Web scan anonymou

Path parameters

Table 56. General request informationTable 54. General request information
- +@@ -11960,17 +11939,17 @@
7.6.27.6. Web scan anonymou
-
{"jobId":"b09b2fe6-110a-42b4-b17f-67b8405d6f59"}
+
{"jobId":"6c038077-4e14-4be4-a02f-c2607f873b9e"}
-
7.6.27.7. Web scan with api definition variant
+
7.6.26.7. Web scan with api definition variant

Definition

Table 57. https://localhost:8081/api/project/{projectId}/jobTable 55. https://localhost:8081/api/project/{projectId}/job
- +@@ -12000,7 +11979,7 @@
7.6.27.7. Web sca

Path parameters

Table 58. General request informationTable 56. General request information
- +@@ -12124,17 +12103,17 @@
7.6.27.7. Web sca
-
{"jobId":"734c19f5-9867-4b54-86d1-a10b3de2ecf2"}
+
{"jobId":"09dfdb53-18b5-4cf0-9d70-61c20fd5b1e3"}
-
7.6.27.8. Web scan with client certificate definition variant
+
7.6.26.8. Web scan with client certificate definition variant

Definition

Table 59. https://localhost:8081/api/project/{projectId}/jobTable 57. https://localhost:8081/api/project/{projectId}/job
- +@@ -12164,7 +12143,7 @@
7.

Path parameters

Table 60. General request informationTable 58. General request information
- +@@ -12283,17 +12262,17 @@
7.
-
{"jobId":"d3f453bf-63f3-449a-98ca-640558b8cfad"}
+
{"jobId":"828aa507-caf0-44f6-8475-46160fd17f2b"}
-
7.6.27.9. Web Scan login basic variant
+
7.6.26.9. Web Scan login basic variant

Definition

Table 61. https://localhost:8081/api/project/{projectId}/jobTable 59. https://localhost:8081/api/project/{projectId}/job
- +@@ -12323,7 +12302,7 @@
7.6.27.9. Web Scan login

Path parameters

Table 62. General request informationTable 60. General request information
- +@@ -12457,17 +12436,17 @@
7.6.27.9. Web Scan login
-
{"jobId":"7ec0d96f-94e6-4e1e-9ede-9cee10b6b744"}
+
{"jobId":"a3899ab3-7b30-40ab-a06e-60a2ed7dd09e"}
-
7.6.27.10. Web Scan login form scripted variant
+
7.6.26.10. Web Scan login form scripted variant

Definition

Table 63. https://localhost:8081/api/project/{projectId}/jobTable 61. https://localhost:8081/api/project/{projectId}/job
- +@@ -12497,7 +12476,7 @@
7.6.27.10. Web Sc

Path parameters

Table 64. General request informationTable 62. General request information
- +@@ -12681,17 +12660,17 @@
7.6.27.10. Web Sc
-
{"jobId":"efa17693-a94a-403b-a7b3-271ee3da3555"}
+
{"jobId":"7d12521b-17c7-48d6-8c1d-cc2eb5f64d19"}
-
7.6.27.11. Web Scan headers variant
+
7.6.26.11. Web Scan headers variant

Definition

Table 65. https://localhost:8081/api/project/{projectId}/jobTable 63. https://localhost:8081/api/project/{projectId}/job
- +@@ -12721,7 +12700,7 @@
7.6.27.11. Web Scan headers v

Path parameters

Table 66. General request informationTable 64. General request information
- +@@ -12845,13 +12824,13 @@
7.6.27.11. Web Scan headers v
-
{"jobId":"9ffdce97-e0e2-40b8-88f5-afd034ec1f2c"}
+
{"jobId":"d13138db-8a07-4ab8-9568-3191522cf222"}
-

7.6.28. User uploads source code

+

7.6.27. User uploads source code

REST API for usecase UC_006-User uploads source code

@@ -12859,7 +12838,7 @@

7.6.28. User uploads source code

Definition

Table 67. https://localhost:8081/api/project/{projectId}/jobTable 65. https://localhost:8081/api/project/{projectId}/job
- +@@ -12889,7 +12868,7 @@

7.6.28. User uploads source code

Path parameters

Table 68. General request informationTable 66. General request information
- +@@ -12955,7 +12934,7 @@

7.6.28. User uploads source code

-
$ curl 'https://sechub.example.com/api/project/project1/job/ec38ec6d-ed8f-415e-b3f9-ab8502abd837/sourcecode?checkSum=checkSumValue' -i -X POST \
+
$ curl 'https://sechub.example.com/api/project/project1/job/19e08e08-0de9-4351-aa26-d51971c9f8f7/sourcecode?checkSum=checkSumValue' -i -X POST \
     -H 'Content-Type: multipart/form-data;charset=UTF-8' \
     -F 'file=PK  
       �<M                       test1.txtPK  ?
@@ -12969,7 +12948,7 @@ 

7.6.28. User uploads source code

-

7.6.29. User approves sechub job

+

7.6.28. User approves sechub job

REST API for usecase UC_007-User approves sechub job

@@ -12977,7 +12956,7 @@

7.6.29. User approves sechub job

Definition

Table 69. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/sourcecodeTable 67. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/sourcecode
- +@@ -13007,7 +12986,7 @@

7.6.29. User approves sechub job

Path parameters

Table 70. General request informationTable 68. General request information
- +@@ -13052,7 +13031,7 @@

7.6.29. User approves sechub job

-
$ curl 'https://sechub.example.com/api/project/project1/job/0844f054-060d-43a9-8354-faad01a48bb9/approve' -i -X PUT \
+
$ curl 'https://sechub.example.com/api/project/project1/job/81ec402b-bed4-44b2-81b5-a7ee97844471/approve' -i -X PUT \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -13062,7 +13041,7 @@

7.6.29. User approves sechub job

-

7.6.30. User checks sechub job state

+

7.6.29. User checks sechub job state

@@ -13070,7 +13049,7 @@

7.6.30. User checks sechub job state

Definition

Table 71. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/approveTable 69. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/approve
- +@@ -13100,7 +13079,7 @@

7.6.30. User checks sechub job state

Path parameters

Table 72. General request informationTable 70. General request information
- +@@ -13204,7 +13183,7 @@

7.6.30. User checks sechub job state

-
$ curl 'https://sechub.example.com/api/project/project1/job/712f73ae-9607-417e-af5a-09a8bb2c305b' -i -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/job/4b62b1e8-bbff-431e-98a7-47291203142c' -i -X GET \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -13213,22 +13192,22 @@

7.6.30. User checks sechub job state

-
{"jobUUID":"712f73ae-9607-417e-af5a-09a8bb2c305b","owner":"CREATOR1","created":"","started":"2025-01-22T14:15:28.733099051","ended":"2025-01-22T14:30:28.733126512","state":"ENDED","result":"OK","trafficLight":"GREEN"}
+
{"jobUUID":"4b62b1e8-bbff-431e-98a7-47291203142c","owner":"CREATOR1","created":"","started":"2025-02-14T15:03:12.698374978","ended":"2025-02-14T15:18:12.698403","state":"ENDED","result":"OK","trafficLight":"GREEN"}
-

7.6.31. User downloads sechub job report

+

7.6.30. User downloads sechub job report

-
7.6.31.1. JSON variant
+
7.6.30.1. JSON variant

Definition

Table 73. https://localhost:8081/api/project/{projectId}/job/{jobUUID}Table 71. https://localhost:8081/api/project/{projectId}/job/{jobUUID}
- +@@ -13258,7 +13237,7 @@
7.6.31.1. JSON variant

Path parameters

Table 74. General request informationTable 72. General request information
- +@@ -13288,19 +13267,19 @@
7.6.31.1. JSON variant
-
$ curl 'https://sechub.example.com/api/project/project1/report/e358277d-02ca-4c06-919c-cb2d2e1840f8' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/report/6506d073-add3-4174-9244-319007d9123b' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -H 'Accept: application/json'
-
7.6.31.2. HTML variant
+
7.6.30.2. HTML variant

Definition

Table 75. https://localhost:8081/api/project/{projectId}/report/{jobUUID}Table 73. https://localhost:8081/api/project/{projectId}/report/{jobUUID}
- +@@ -13330,7 +13309,7 @@
7.6.31.2. HTML variant

Path parameters

Table 76. General request informationTable 74. General request information
- +@@ -13360,7 +13339,7 @@
7.6.31.2. HTML variant
-
$ curl 'https://sechub.example.com/api/project/project1/report/7ebcb0c0-5e5b-4d1d-aaf7-584343ef35e1' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/report/c416b85d-7c98-439c-95f2-086e849de37e' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -H 'Accept: application/xhtml+xml'
@@ -13368,7 +13347,7 @@
7.6.31.2. HTML variant
-

7.6.32. User marks false positives

+

7.6.31. User marks false positives

@@ -13376,7 +13355,7 @@

7.6.32. User marks false positives

Definition

Table 77. https://localhost:8081/api/project/{projectId}/report/{jobUUID}Table 75. https://localhost:8081/api/project/{projectId}/report/{jobUUID}
- +@@ -13406,7 +13385,7 @@

7.6.32. User marks false positives

Path parameters

Table 78. General request informationTable 76. General request information
- +@@ -13542,7 +13521,7 @@

7.6.32. User marks false positives

-

7.6.33. User unmarks existing false positive definitons

+

7.6.32. User unmarks existing false positive definitons

@@ -13550,7 +13529,7 @@

7.6.33. User unmarks ex

Definition

Table 79. https://localhost:8081/api/project/{projectId}/false-positivesTable 77. https://localhost:8081/api/project/{projectId}/false-positives
- +@@ -13580,7 +13559,7 @@

7.6.33. User unmarks ex

Path parameters

Table 80. General request informationTable 78. General request information
- +@@ -13638,7 +13617,7 @@

7.6.33. User unmarks ex
-

7.6.34. User fetches false positive configuration of project

+

7.6.33. User fetches false positive configuration of project

@@ -13646,7 +13625,7 @@

7.6.34. User fetch

Definition

Table 81. https://localhost:8081/api/project/{projectId}/false-positive/{jobUUID}/{findingId}Table 79. https://localhost:8081/api/project/{projectId}/false-positive/{jobUUID}/{findingId}
- +@@ -13676,7 +13655,7 @@

7.6.34. User fetch

Path parameters

Table 82. General request informationTable 80. General request information
- +@@ -13899,7 +13878,7 @@

7.6.34. User fetch
-

7.6.35. User uploads binaries

+

7.6.34. User uploads binaries

REST API for usecase UC_069-User uploads binaries

@@ -13907,7 +13886,7 @@

7.6.35. User uploads binaries

Definition

Table 83. https://localhost:8081/api/project/{projectId}/false-positivesTable 81. https://localhost:8081/api/project/{projectId}/false-positives
- +@@ -13937,7 +13916,7 @@

7.6.35. User uploads binaries

Path parameters

Table 84. General request informationTable 82. General request information
- +@@ -13988,7 +13967,7 @@

7.6.35. User uploads binaries

-
$ curl 'https://sechub.example.com/api/project/project1/job/17e49206-f9cc-4e03-93d6-6b49c0c1c163/binaries' -i -X POST \
+
$ curl 'https://sechub.example.com/api/project/project1/job/d5c6f643-7cdf-4df1-bf73-a9e92c940c64/binaries' -i -X POST \
     -H 'Content-Type: multipart/form-data;charset=UTF-8' \
     -H 'x-file-size: 10240' \
     -F 'file=test1.txt                                                                                           0000664 0001750 0001750 00000000000 13353454574 012170  0                                                                                                    ustar   albert                          albert                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ' \
@@ -14001,7 +13980,7 @@ 

7.6.35. User uploads binaries

-

7.6.36. User downloads job report in SPDX format

+

7.6.35. User downloads job report in SPDX format

@@ -14009,7 +13988,7 @@

7.6.36. User downloads job rep

Definition

Table 85. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/binariesTable 83. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/binaries
- +@@ -14039,7 +14018,7 @@

7.6.36. User downloads job rep

Path parameters

Table 86. General request informationTable 84. General request information
- +@@ -14069,14 +14048,14 @@

7.6.36. User downloads job rep
-
$ curl 'https://sechub.example.com/api/project/project1/report/spdx/051bce52-c6de-4629-b8d0-b3266b6c70e9' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/report/spdx/0ac3edf3-373b-4c82-986f-3ba87a3f8a14' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -H 'Accept: application/json'
-

7.6.37. User unmarks existing false positive project data definitons

+

7.6.36. User unmarks existing false positive project data definitons

@@ -14084,7 +14063,7 @@

7.6.37. Us

Definition

Table 87. https://localhost:8081/api/project/{projectId}/report/spdx/{jobUUID}Table 85. https://localhost:8081/api/project/{projectId}/report/spdx/{jobUUID}
- +@@ -14114,7 +14093,7 @@

7.6.37. Us

Path parameters

Table 88. General request informationTable 86. General request information
- +@@ -14168,7 +14147,7 @@

7.6.37. Us
-

7.6.38. User self registration

+

7.6.37. User self registration

REST API for usecase UC_001-User self registration

@@ -14176,7 +14155,7 @@

7.6.38. User self registration

Definition

Table 89. https://localhost:8081/api/project/{projectId}/false-positive/project-data/{id}Table 87. https://localhost:8081/api/project/{projectId}/false-positive/project-data/{id}
- +@@ -14255,7 +14234,7 @@

7.6.38. User self registration

-

7.6.39. Admin lists open user signups

+

7.6.38. Admin lists open user signups

@@ -14263,7 +14242,7 @@

7.6.39. Admin lists open user signups

Definition

Table 90. General request informationTable 88. General request information
- +@@ -14359,7 +14338,7 @@

7.6.39. Admin lists open user signups

-

7.6.40. Admin applies self registration

+

7.6.39. Admin applies self registration

@@ -14367,7 +14346,7 @@

7.6.40. Admin applies self registration

Definition

Table 91. General request informationTable 89. General request information
- +@@ -14397,7 +14376,7 @@

7.6.40. Admin applies self registration

Path parameters

Table 92. General request informationTable 90. General request information
- +@@ -14447,6 +14426,80 @@

7.6.40. Admin applies self registration
+ + +
+

Definition

+
+

Table 93. https://localhost:8081/api/admin/signup/accept/{userId}Table 91. https://localhost:8081/api/admin/signup/accept/{userId}
+ ++++ + + + + + + + + + + + + + + + + + + + + +
Table 92. General request information
Value

Path

/api/anonymous/apitoken/{oneTimeToken}

Method

GET

Status code

200 OK

+
+

Path parameters

+
+ + ++++ + + + + + + + + + + + + +
Table 93. https://localhost:8081/api/anonymous/apitoken/{oneTimeToken}
ParameterDescription

oneTimeToken

A one time token the user has got by a previous mail from sechub server

+
+

Example

+
+
+

Curl request

+
+
+
+
$ curl 'https://sechub.example.com/api/anonymous/apitoken/oneTimeToken1' -i -X GET \
+    -H 'Content-Type: application/json;charset=UTF-8'
+
+
+
+

Response body
+(empty)

+
+ +

7.6.41. Admin deletes user signup

REST API for usecase UC_019-Admin deletes user signup

@@ -14719,7 +14772,7 @@

7.6.43. Admin lists all running jobs

-
[{"jobUUID":"cd9f97f0-2bf5-4370-85a8-b499dc94ce2f","projectId":"project-name","owner":"owner-userid","status":"RUNNING","since":"2025-01-22T14:30:35.21046551"}]
+
[{"jobUUID":"ff2d3321-1604-42ed-9d94-7201d7175f06","projectId":"project-name","owner":"owner-userid","status":"RUNNING","since":"2025-02-14T15:18:18.90559113"}]
@@ -14803,7 +14856,7 @@

7.6.44. Admin cancels a job

-
$ curl 'https://sechub.example.com/api/admin/jobs/cancel/6a645735-00ad-48d0-96b6-f3b83053b9cc' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/admin/jobs/cancel/360965bc-b8e2-4674-b6aa-9dee6be950a5' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -14892,7 +14945,7 @@

7.6.45. Admin restarts a job

-
$ curl 'https://sechub.example.com/api/admin/jobs/restart/05e1441f-4e84-462a-b3d1-a66d5758675f' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/admin/jobs/restart/9d94b454-2a02-4dab-b8bf-e4e29f50db19' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -14981,7 +15034,7 @@

7.6.46. Admin restarts a job (hard)

-
$ curl 'https://sechub.example.com/api/admin/jobs/restart-hard/64c8ae9e-7f2b-4785-8e4e-a8f8032a9495' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/admin/jobs/restart-hard/54f0d06c-39e0-4820-8fd2-2f0723b3b2c7' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -15070,7 +15123,7 @@

7.6.47. User cancels a job

-
$ curl 'https://sechub.example.com/api/management/jobs/8931047f-229f-4aa2-ace7-7113ad1c32e1/cancel' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/management/jobs/eebf97c8-4e9c-4c95-a839-1fa6509dcc2d/cancel' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -15603,7 +15656,7 @@

7.6.52. Admin creates an execut
-
bd2babb2-56de-44e6-8b2c-7c82f78148e5
+
ed3cd7f9-317b-4eb7-9f43-9d8fe0dac5c7
@@ -15687,7 +15740,7 @@

7.6.53. Admin deletes executor con
-
$ curl 'https://sechub.example.com/api/admin/config/executor/2d431a77-0757-4c87-907e-6c068ba3117c' -i -u 'user:secret' -X DELETE \
+
$ curl 'https://sechub.example.com/api/admin/config/executor/814c2b74-9add-4530-8bcf-7a0a86b6fe4e' -i -u 'user:secret' -X DELETE \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -15802,7 +15855,7 @@

7.6.54. Admin fetches executo
-
{"executorConfigurations":[{"uuid":"af4b10d1-3b4a-4c4b-a2d3-fa36959ede19","name":"example configuration","enabled":true}],"type":"executorConfigurationList"}
+
{"executorConfigurations":[{"uuid":"0818c0cd-7a3a-4069-bfcb-7c69df0066db","name":"example configuration","enabled":true}],"type":"executorConfigurationList"}
@@ -15955,7 +16008,7 @@

7.6.55. Admin fetches executor con
-
$ curl 'https://sechub.example.com/api/admin/config/executor/612735cb-e561-433c-9b01-b31512f12008' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/admin/config/executor/5b93aa34-f4c3-4a10-aa7a-81d9dcfd119b' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -15964,7 +16017,7 @@

7.6.55. Admin fetches executor con
-
{"uuid":"612735cb-e561-433c-9b01-b31512f12008","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value"}]},"executorVersion":1,"enabled":false}
+
{"uuid":"5b93aa34-f4c3-4a10-aa7a-81d9dcfd119b","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value"}]},"executorVersion":1,"enabled":false}
@@ -16112,7 +16165,7 @@

7.6.56. Admin updates execut
-
$ curl 'https://sechub.example.com/api/admin/config/executor/05be7dfd-0586-4b18-af93-acdeb9a6ccec' -i -u 'user:secret' -X PUT \
+
$ curl 'https://sechub.example.com/api/admin/config/executor/96d647a2-08ee-4178-acef-49b672c6b99a' -i -u 'user:secret' -X PUT \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -d '{"name":"New name","productIdentifier":"PDS_CODESCAN","executorVersion":1,"enabled":false,"setup":{"baseURL":"https://productNew.example.com","credentials":{"user":"env:EXAMPLE_NEW_USENAME","password":"env:EXAMPLE_NEW_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]}}'
@@ -16456,7 +16509,7 @@

7.6.59. Admin updates execution profile
$ curl 'https://sechub.example.com/api/admin/config/execution/profile/existing-profile-1' -i -u 'user:secret' -X PUT \
     -H 'Content-Type: application/json;charset=UTF-8' \
-    -d '{"description":"changed description","configurations":[{"uuid":"990093ee-59c8-4e4f-9a0f-4f87d1948ad3","executorVersion":0,"enabled":false,"setup":{"credentials":{},"jobParameters":[]}}],"enabled":true}'
+ -d '{"description":"changed description","configurations":[{"uuid":"eae91c96-040e-47a2-a72b-162019e55c73","executorVersion":0,"enabled":false,"setup":{"credentials":{},"jobParameters":[]}}],"enabled":true}'

@@ -16612,7 +16665,7 @@

7.6.60. Admin fetches execution profile

-
{"description":"a description","enabled":true,"configurations":[{"uuid":"e972869d-29f5-47f3-81ad-2c677a82716d","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]},"executorVersion":1,"enabled":false}],"projectIds":["project-1","project-2"]}
+
{"description":"a description","enabled":true,"configurations":[{"uuid":"c7610b80-ce4a-4308-ad62-b94157386099","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]},"executorVersion":1,"enabled":false}],"projectIds":["project-1","project-2"]}
@@ -17128,7 +17181,7 @@

7.6.66. Admin creates or updates a

type

String

-

The template type. Must be be defined when a new template is created. An update will ignore changes of this property because the type is immutable! Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@7db2a40a

+

The template type. Must be be defined when a new template is created. An update will ignore changes of this property because the type is immutable! Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@66b6980f

assetId

@@ -17348,7 +17401,7 @@

7.6.68. Admin fetches template

type

String

-

The template type. Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@4dc4dea6

+

The template type. Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@67e23aae

id

@@ -18983,7 +19036,142 @@

7.6.85. User lists jobs for project

-
{"page":0,"totalPages":1,"content":[{"jobUUID":"58882c0f-31f4-4191-b6ae-a659d387a6e8","executedBy":"User1","created":"2025-01-22T14:13:28.908096865","started":"2025-01-22T14:15:28.908126731","ended":"2025-01-22T14:30:28.908138823","executionState":"ENDED","trafficLight":"GREEN","executionResult":"OK","metaData":{"labels":{"stage":"test"}}}]}
+
{"page":0,"totalPages":1,"content":[{"jobUUID":"60ef92d7-b3c9-43b7-815c-a51585dade60","executedBy":"User1","created":"2025-02-14T15:01:12.869461101","started":"2025-02-14T15:03:12.869489996","ended":"2025-02-14T15:18:12.869501467","executionState":"ENDED","trafficLight":"GREEN","executionResult":"OK","metaData":{"labels":{"stage":"test"}}}]}
+
+
+ +
+

7.6.86. Admin executes templates healthcheck or updates a template

+ +
+

Definition

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 166. General request information
Value

Path

/api/admin/templates/healthcheck

Method

GET

Status code

200 OK

+
+

Response fields

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

status

String

Represents overall healthcheck status. Can be one of : [OK, WARNING, ERROR]

entries

Array

A list of healthcheck status entries. Each entry represents a problem or an information.

entries[].type

String

Type of this entry. Can be one of : [INFO, WARNING, ERROR]

entries[].description

String

A description about the the entry

entries[].templateId

String

The template id for the template where the problem/information is related to

entries[].projects

Array

A list of projects which have the template assigned

entries[].executorConfigUUID

String

The uuid of the product executor config where the problem/info is related to (in combination with template)

entries[].profiles

Array

A list of the invovled profiles, means using executor config and being assigned to projects

entries[].hints

Array

A list of hints which gives additinal information. E.g. A disabled executor configuration which leads to problems will lead to a WARNING, but not to an ERROR. In this case a hint 'At least one executor config is not enabled' would be added.

entries[].solution

String

A solution how to fix/resolve the problem

entries[].assetId

String

The asset identifier which is used to locate the file

entries[].fileName

String

The name of the file inside the asset

+
+

Example

+
+
+

Curl request

+
+
+
+
$ curl 'https://sechub.example.com/api/admin/templates/healthcheck' -i -u 'user:secret' -X GET \
+    -H 'Content-Type: application/json;charset=UTF-8'
+
+
+
+

Response body

+
+
+
+
{"status":"WARNING","entries":[{"type":"ERROR","description":"The file 'asset-1/pds-product1-id.zip' does not exist!","templateId":"template-1","projects":["project-1"],"executorConfigUUID":"349ea899-e780-4553-bd50-06c12fe96c9e","profiles":["profile-1"],"hints":["At least one combination of executor and profile is enabled.","At least one profile is enabled.","At least one executor config is enabled."],"solution":"Upload a file 'pds-product1-id.zip' to asset folder 'asset-1'","assetId":"asset-1","fileName":"pds-product1-id.zip"},{"type":"WARNING","description":"The file 'asset-1/pds-product2-id.zip' does not exist!","templateId":"template-1","projects":["project-2"],"executorConfigUUID":"2b25b007-f3d2-4591-ba42-409e19d9a5e8","profiles":["profile-2"],"hints":["At least one profile is enabled.","At least one executor config is not enabled."],"solution":"Upload a file 'pds-product2-id.zip' to asset folder 'asset-1'","assetId":"asset-1","fileName":"pds-product2-id.zip"}]}
@@ -19022,7 +19210,7 @@
7.7.2.1. Overview
7.7.2.1.1. Diagram
-Sequence diagram of messaging overview +Sequence diagram of messaging overview
@@ -19103,6 +19291,9 @@

3.1. PDS

3.1.1. General

-

The PDS adapters can communicate with the PDS instances which delegates to the underlying -security products.

+

The PDS adapter communicates with the PDS instances which delegate to the underlying security products.

-

Via PDS every security product, even simple CLI tools, can be easily integrated -into SecHub.

+

Via PDS every security product, even simple CLI tools, can be easily integrated into SecHub.

-
-

Please look into Product delegation server documentation for more information about the PDS in common.

+
+ + + + + +
+ + +For more information about the PDS look into Product delegation server documentation. +
-

3.1.2. PDS solutions

+

3.1.2. Enabling PDS encryption

-

There are already ready to use PDS implementations available - we call them "PDS solutions".

+

In order to enable encryption for a PDS follow these steps:

+
+
+
    +
  1. +

    Create an encryption key
    +Create a random 16- (AES_GCM_SIV_128) or 32-character string (AES_GCM_SIV_256) <string> and echo -n '<string>' | base64
    + Example: echo -n 'Example Example Example Example ' | base64

    +
  2. +
  3. +

    Set these environment variables for your PDS solution
    +(For Kubernetes you can do this via the PDS solution’s Helm chart; look for "encryption" in the values.yaml)

    +
    +
      +
    1. +

      PDS_ENCRYPTION_ALGORITHM - possible values: "NONE", "AES_GCM_SIV_128" or "AES_GCM_SIV_256"
      +Example: export PDS_ENCRYPTION_ALGORITHM="AES_GCM_SIV_256"

      +
    2. +
    3. +

      PDS_ENCRYPTION_SECRET_KEY - Take value from step 1
      +Example: export PDS_ENCRYPTION_SECRET_KEY='RXhhbXBsZSBFeGFtcGxlIEV4YW1wbGUgRXhhbXBsZSA='

      +
    4. +
    +
    +
  4. +
  5. +

    Start the PDS solution / deploy in Kubernetes

    +
  6. +
  7. +

    Verify: Check the logs.

    +
  8. +
+
+
+ + + + + +
+ + +If you deploy with a new encryption key while jobs are running, these jobs cannot be processed any more.
+ So you should stop the SecHub server’s scheduler so the PDS solution is idle before enabling/changing PDS encryption. +
+
+
+ + + + + +
+ + +To disable encryption set the algorithm to "NONE". +
+
+
+
+
+

3.2. PDS solutions

+
+

There are ready-to-use PDS implementations available - we call them "PDS solutions".

-

Every PDS solution does work out of the box and provide the possibility to start in following three flavors:

+

Every PDS solution should work out of the box and provides the possibility to start in following three flavors:

  • -

    docker (single instance)

    +

    Helm charts (Kubernetes)

  • -

    docker compose (cluster)

    +

    Docker (single instance)

  • -

    helm charts (k8s cluster)

    +

    Docker compose (cluster)

The next sub chapters list the current implementations:

-
-
3.1.2.1. GoSec
+
+ + + + + +
+ + +The list is growing permanently. Please check https://github.com/mercedes-benz/sechub/tree/develop/sechub-pds-solutions/ for all provided PDS solutions. +
+
+
+

3.2.1. GoSec

-
-
3.1.2.2. Multi
+
+

3.2.2. Multi

This solution does integrate multiple SAST tools:

@@ -3325,33 +3423,32 @@
3.1.2.2. Multi

It can be found at https://github.com/mercedes-benz/sechub/tree/develop/sechub-pds-solutions/multi

-
-
3.1.2.3. OWASP ZAP
+
+

3.2.3. OWASP ZAP (DAST)

This solution does integrate the https://www.zaproxy.org/ (web application scanner) - please look at https://github.com/mercedes-benz/sechub/blob/develop/sechub-pds-solutions/owaspzap/

-
-
3.1.2.4. PMD
+
+

3.2.4. PMD

-

https://pmd.github.io/ stand normally for quality checks, but it does also provide some security check mechanism. The integration can be found at +

https://pmd.github.io/ stands normally for quality checks, but it does also provide some security check mechanism. The integration can be found at https://github.com/mercedes-benz/sechub/tree/develop/sechub-pds-solutions/pmd

- -
-

3.2. Checkmarx

+

3.3. DEPRECATED: Checkmarx

-

3.2.1. What does the adapter do?

+

3.3.1. What does the adapter do?

  1. @@ -3392,7 +3489,7 @@

    3.2.1. What does the adapter do?

-
3.2.1.1. What must be done on Checkmarx UI
+
3.3.1.1. What must be done on Checkmarx UI
  1. @@ -3405,15 +3502,15 @@
    3.2.1.1. What must be done on Checkma
-
3.2.1.2. What can be configured for SecHub ?
+
3.3.1.2. What can be configured for SecHub ?
-
3.2.1.2.1. Environment
+
3.3.1.2.1. Environment

Please look at checkmarx config section.

-
3.2.1.2.2. Runtime
+
3.3.1.2.2. Runtime
@@ -3458,7 +3555,7 @@
3.2.1.2.2. Runtime
-

3.2.2. Summary

+

3.3.2. Summary

  1. @@ -3489,9 +3586,9 @@

    3.2.2. Summary

-

3.3. Netsparker

+

3.4. DEPRECATED: Netsparker

-

3.3.1. What does the adapter do?

+

3.4.1. What does the adapter do?

  1. @@ -3567,9 +3664,9 @@

    3.3.1. What does the adapter do?

-

3.3.2. What must be done on Netsparker UI

+

3.4.2. What must be done on Netsparker UI

-
3.3.2.1. Users
+
3.4.2.1. Users
  • @@ -3587,7 +3684,7 @@
    3.3.2.1. Users
-

3.3.3. Summary

+

3.4.3. Summary

  1. @@ -3615,9 +3712,9 @@

    3.3.3. Summary

-

3.4. Nessus

+

3.5. Nessus

-

3.4.1. What does the adapter do?

+

3.5.1. What does the adapter do?

  1. @@ -3657,7 +3754,7 @@

    3.4.1. What does the adapter do?

-

3.4.2. What must be done on Nessus UI

+

3.5.2. What must be done on Nessus UI

  • @@ -3667,7 +3764,7 @@

    3.4.2. What must be done on Nessus UI

-

3.4.3. Summary

+

3.5.3. Summary

  1. @@ -3766,7 +3863,7 @@

diff --git a/docs/latest/sechub-product-delegation-server.html b/docs/latest/sechub-product-delegation-server.html index 92cf3bffd..745daa8a8 100644 --- a/docs/latest/sechub-product-delegation-server.html +++ b/docs/latest/sechub-product-delegation-server.html @@ -531,7 +531,7 @@
-

Documentation version: PDS 2.1.0 modified (commit eada480) - Build date: 2025-01-22 14:30 (UTCZ)

+

Documentation version: PDS 2.1.0 modified (commit b96d539) - Build date: 2025-02-14 15:17 (UTCZ)

About PDS (Product Delegation Server)

@@ -5348,7 +5348,7 @@

4.8.8. Get monitoring status

diff --git a/docs/latest/sechub-restapi.html b/docs/latest/sechub-restapi.html index 9148ae656..eb92cf854 100644 --- a/docs/latest/sechub-restapi.html +++ b/docs/latest/sechub-restapi.html @@ -531,7 +531,7 @@ @@ -4059,7 +4067,7 @@

2.2.9. Admin downloads all

-
$ curl 'https://sechub.example.com/api/admin/scan/download/5433eb9c-496c-4dbb-81cb-a31b2ebffc8d' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/admin/scan/download/2ae31598-80f9-4a94-bc4c-7fca67cb5688' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -5224,7 +5232,7 @@

2.2.20. Admin shows scan logs for pro

-
[{"sechubJobUUID":"30fb86d6-6ff4-4e21-86ba-2ebb07c6bad8","executedBy":"spartakus","started":"2025-01-21T14:30:30.35686563","ended":"2025-01-22T14:30:30.356882732","status":"OK"}]
+
[{"sechubJobUUID":"59663cb6-f8e8-434e-acb4-b36ed906593b","executedBy":"spartakus","started":"2025-02-13T15:18:14.256960928","ended":"2025-02-14T15:18:14.256985263","status":"OK"}]
@@ -5737,81 +5745,7 @@

2.2.24. get assigned project data

- - -
-

Definition

-
- - ---- - - - - - - - - - - - - - - - - - - - - -
Table 43. General request information
Value

Path

/api/anonymous/apitoken/{oneTimeToken}

Method

GET

Status code

200 OK

-
-

Path parameters

-
- - ---- - - - - - - - - - - - - -
Table 44. https://localhost:8081/api/anonymous/apitoken/{oneTimeToken}
ParameterDescription

oneTimeToken

A one time token the user has got by a previous mail from sechub server

-
-

Example

-
-
-

Curl request

-
-
-
-
$ curl 'https://sechub.example.com/api/anonymous/apitoken/oneTimeToken1' -i -X GET \
-    -H 'Content-Type: application/json;charset=UTF-8'
-
-
-
-

Response body
-(empty)

-
-
-
-

2.2.26. User fetches his user details

+

2.2.25. User fetches his user details

@@ -5819,7 +5753,7 @@

2.2.26. User fetches his user details

Definition

- +@@ -5862,17 +5796,17 @@

2.2.26. User fetches his user details

-

2.2.27. User creates a new sechub job

+

2.2.26. User creates a new sechub job

-
2.2.27.1. Code Scan variant
+
2.2.26.1. Code Scan variant

Definition

Table 45. General request informationTable 43. General request information
- +@@ -5902,7 +5836,7 @@
2.2.27.1. Code Scan variant

Path parameters

Table 46. General request informationTable 44. General request information
- +@@ -6021,17 +5955,17 @@
2.2.27.1. Code Scan variant
-
{"jobId":"0c69eb38-f06d-4b03-91f3-19edf447b7a8"}
+
{"jobId":"f2d26de6-937b-489e-b852-b2a75366feae"}
-
2.2.27.2. Code Scan using data section variant
+
2.2.26.2. Code Scan using data section variant

Definition

Table 47. https://localhost:8081/api/project/{projectId}/jobTable 45. https://localhost:8081/api/project/{projectId}/job
- +@@ -6061,7 +5995,7 @@
2.2.27.2. Code Sc

Path parameters

Table 48. General request informationTable 46. General request information
- +@@ -6200,17 +6134,17 @@
2.2.27.2. Code Sc
-
{"jobId":"18a5e6b0-bf35-465f-bc7d-0a64fd061301"}
+
{"jobId":"991860e6-c439-440f-a6d1-dfcdee48b495"}
-
2.2.27.3. Secret scan variant
+
2.2.26.3. Secret scan variant

Definition

Table 49. https://localhost:8081/api/project/{projectId}/jobTable 47. https://localhost:8081/api/project/{projectId}/job
- +@@ -6240,7 +6174,7 @@
2.2.27.3. Secret scan variant

Path parameters

Table 50. General request informationTable 48. General request information
- +@@ -6359,17 +6293,17 @@
2.2.27.3. Secret scan variant
-
{"jobId":"737b4156-e0cd-4e32-a30a-648ed81c62d8"}
+
{"jobId":"2150e003-abf5-4cca-bccd-d545fc0cbaf6"}
-
2.2.27.4. License scan variant
+
2.2.26.4. License scan variant

Definition

Table 51. https://localhost:8081/api/project/{projectId}/jobTable 49. https://localhost:8081/api/project/{projectId}/job
- +@@ -6399,7 +6333,7 @@
2.2.27.4. License scan variantPath parameters

Table 52. General request informationTable 50. General request information
- +@@ -6518,17 +6452,17 @@
2.2.27.4. License scan variant
-
{"jobId":"9b9ea17d-2a50-4ce6-8db8-881f155c12c6"}
+
{"jobId":"a969be5c-458b-432f-8c04-678bee6d7f7e"}
-
2.2.27.5. Infrastructure scan variant
+
2.2.26.5. Infrastructure scan variant

Definition

Table 53. https://localhost:8081/api/project/{projectId}/jobTable 51. https://localhost:8081/api/project/{projectId}/job
- +@@ -6558,7 +6492,7 @@
2.2.27.5. Infrastructure s

Path parameters

Table 54. General request informationTable 52. General request information
- +@@ -6672,17 +6606,17 @@
2.2.27.5. Infrastructure s
-
{"jobId":"b8a2c6d0-8c8e-4f96-a88e-ee2f655e40a1"}
+
{"jobId":"0d6120f9-c72a-4bc4-b664-f2b2bfdbdf6e"}
-
2.2.27.6. Web scan anonymous variant
+
2.2.26.6. Web scan anonymous variant

Definition

Table 55. https://localhost:8081/api/project/{projectId}/jobTable 53. https://localhost:8081/api/project/{projectId}/job
- +@@ -6712,7 +6646,7 @@
2.2.27.6. Web scan anonymou

Path parameters

Table 56. General request informationTable 54. General request information
- +@@ -6841,17 +6775,17 @@
2.2.27.6. Web scan anonymou
-
{"jobId":"b09b2fe6-110a-42b4-b17f-67b8405d6f59"}
+
{"jobId":"6c038077-4e14-4be4-a02f-c2607f873b9e"}
-
2.2.27.7. Web scan with api definition variant
+
2.2.26.7. Web scan with api definition variant

Definition

Table 57. https://localhost:8081/api/project/{projectId}/jobTable 55. https://localhost:8081/api/project/{projectId}/job
- +@@ -6881,7 +6815,7 @@
2.2.27.7. Web sca

Path parameters

Table 58. General request informationTable 56. General request information
- +@@ -7005,17 +6939,17 @@
2.2.27.7. Web sca
-
{"jobId":"734c19f5-9867-4b54-86d1-a10b3de2ecf2"}
+
{"jobId":"09dfdb53-18b5-4cf0-9d70-61c20fd5b1e3"}
-
2.2.27.8. Web scan with client certificate definition variant
+
2.2.26.8. Web scan with client certificate definition variant

Definition

Table 59. https://localhost:8081/api/project/{projectId}/jobTable 57. https://localhost:8081/api/project/{projectId}/job
- +@@ -7045,7 +6979,7 @@
2.

Path parameters

Table 60. General request informationTable 58. General request information
- +@@ -7164,17 +7098,17 @@
2.
-
{"jobId":"d3f453bf-63f3-449a-98ca-640558b8cfad"}
+
{"jobId":"828aa507-caf0-44f6-8475-46160fd17f2b"}
-
2.2.27.9. Web Scan login basic variant
+
2.2.26.9. Web Scan login basic variant

Definition

Table 61. https://localhost:8081/api/project/{projectId}/jobTable 59. https://localhost:8081/api/project/{projectId}/job
- +@@ -7204,7 +7138,7 @@
2.2.27.9. Web Scan login

Path parameters

Table 62. General request informationTable 60. General request information
- +@@ -7338,17 +7272,17 @@
2.2.27.9. Web Scan login
-
{"jobId":"7ec0d96f-94e6-4e1e-9ede-9cee10b6b744"}
+
{"jobId":"a3899ab3-7b30-40ab-a06e-60a2ed7dd09e"}
-
2.2.27.10. Web Scan login form scripted variant
+
2.2.26.10. Web Scan login form scripted variant

Definition

Table 63. https://localhost:8081/api/project/{projectId}/jobTable 61. https://localhost:8081/api/project/{projectId}/job
- +@@ -7378,7 +7312,7 @@
2.2.27.10. Web Sc

Path parameters

Table 64. General request informationTable 62. General request information
- +@@ -7562,17 +7496,17 @@
2.2.27.10. Web Sc
-
{"jobId":"efa17693-a94a-403b-a7b3-271ee3da3555"}
+
{"jobId":"7d12521b-17c7-48d6-8c1d-cc2eb5f64d19"}
-
2.2.27.11. Web Scan headers variant
+
2.2.26.11. Web Scan headers variant

Definition

Table 65. https://localhost:8081/api/project/{projectId}/jobTable 63. https://localhost:8081/api/project/{projectId}/job
- +@@ -7602,7 +7536,7 @@
2.2.27.11. Web Scan headers v

Path parameters

Table 66. General request informationTable 64. General request information
- +@@ -7726,13 +7660,13 @@
2.2.27.11. Web Scan headers v
-
{"jobId":"9ffdce97-e0e2-40b8-88f5-afd034ec1f2c"}
+
{"jobId":"d13138db-8a07-4ab8-9568-3191522cf222"}
-

2.2.28. User uploads source code

+

2.2.27. User uploads source code

REST API for usecase UC_006-User uploads source code

@@ -7740,7 +7674,7 @@

2.2.28. User uploads source code

Definition

Table 67. https://localhost:8081/api/project/{projectId}/jobTable 65. https://localhost:8081/api/project/{projectId}/job
- +@@ -7770,7 +7704,7 @@

2.2.28. User uploads source code

Path parameters

Table 68. General request informationTable 66. General request information
- +@@ -7836,7 +7770,7 @@

2.2.28. User uploads source code

-
$ curl 'https://sechub.example.com/api/project/project1/job/ec38ec6d-ed8f-415e-b3f9-ab8502abd837/sourcecode?checkSum=checkSumValue' -i -X POST \
+
$ curl 'https://sechub.example.com/api/project/project1/job/19e08e08-0de9-4351-aa26-d51971c9f8f7/sourcecode?checkSum=checkSumValue' -i -X POST \
     -H 'Content-Type: multipart/form-data;charset=UTF-8' \
     -F 'file=PK  
       �<M                       test1.txtPK  ?
@@ -7850,7 +7784,7 @@ 

2.2.28. User uploads source code

-

2.2.29. User approves sechub job

+

2.2.28. User approves sechub job

REST API for usecase UC_007-User approves sechub job

@@ -7858,7 +7792,7 @@

2.2.29. User approves sechub job

Definition

Table 69. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/sourcecodeTable 67. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/sourcecode
- +@@ -7888,7 +7822,7 @@

2.2.29. User approves sechub job

Path parameters

Table 70. General request informationTable 68. General request information
- +@@ -7933,7 +7867,7 @@

2.2.29. User approves sechub job

-
$ curl 'https://sechub.example.com/api/project/project1/job/0844f054-060d-43a9-8354-faad01a48bb9/approve' -i -X PUT \
+
$ curl 'https://sechub.example.com/api/project/project1/job/81ec402b-bed4-44b2-81b5-a7ee97844471/approve' -i -X PUT \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -7943,7 +7877,7 @@

2.2.29. User approves sechub job

-

2.2.30. User checks sechub job state

+

2.2.29. User checks sechub job state

@@ -7951,7 +7885,7 @@

2.2.30. User checks sechub job state

Definition

Table 71. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/approveTable 69. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/approve
- +@@ -7981,7 +7915,7 @@

2.2.30. User checks sechub job state

Path parameters

Table 72. General request informationTable 70. General request information
- +@@ -8085,7 +8019,7 @@

2.2.30. User checks sechub job state

-
$ curl 'https://sechub.example.com/api/project/project1/job/712f73ae-9607-417e-af5a-09a8bb2c305b' -i -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/job/4b62b1e8-bbff-431e-98a7-47291203142c' -i -X GET \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -8094,22 +8028,22 @@

2.2.30. User checks sechub job state

-
{"jobUUID":"712f73ae-9607-417e-af5a-09a8bb2c305b","owner":"CREATOR1","created":"","started":"2025-01-22T14:15:28.733099051","ended":"2025-01-22T14:30:28.733126512","state":"ENDED","result":"OK","trafficLight":"GREEN"}
+
{"jobUUID":"4b62b1e8-bbff-431e-98a7-47291203142c","owner":"CREATOR1","created":"","started":"2025-02-14T15:03:12.698374978","ended":"2025-02-14T15:18:12.698403","state":"ENDED","result":"OK","trafficLight":"GREEN"}
-

2.2.31. User downloads sechub job report

+

2.2.30. User downloads sechub job report

-
2.2.31.1. JSON variant
+
2.2.30.1. JSON variant

Definition

Table 73. https://localhost:8081/api/project/{projectId}/job/{jobUUID}Table 71. https://localhost:8081/api/project/{projectId}/job/{jobUUID}
- +@@ -8139,7 +8073,7 @@
2.2.31.1. JSON variant

Path parameters

Table 74. General request informationTable 72. General request information
- +@@ -8169,19 +8103,19 @@
2.2.31.1. JSON variant
-
$ curl 'https://sechub.example.com/api/project/project1/report/e358277d-02ca-4c06-919c-cb2d2e1840f8' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/report/6506d073-add3-4174-9244-319007d9123b' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -H 'Accept: application/json'
-
2.2.31.2. HTML variant
+
2.2.30.2. HTML variant

Definition

Table 75. https://localhost:8081/api/project/{projectId}/report/{jobUUID}Table 73. https://localhost:8081/api/project/{projectId}/report/{jobUUID}
- +@@ -8211,7 +8145,7 @@
2.2.31.2. HTML variant

Path parameters

Table 76. General request informationTable 74. General request information
- +@@ -8241,7 +8175,7 @@
2.2.31.2. HTML variant
-
$ curl 'https://sechub.example.com/api/project/project1/report/7ebcb0c0-5e5b-4d1d-aaf7-584343ef35e1' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/report/c416b85d-7c98-439c-95f2-086e849de37e' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -H 'Accept: application/xhtml+xml'
@@ -8249,7 +8183,7 @@
2.2.31.2. HTML variant
-

2.2.32. User marks false positives

+

2.2.31. User marks false positives

@@ -8257,7 +8191,7 @@

2.2.32. User marks false positives

Definition

Table 77. https://localhost:8081/api/project/{projectId}/report/{jobUUID}Table 75. https://localhost:8081/api/project/{projectId}/report/{jobUUID}
- +@@ -8287,7 +8221,7 @@

2.2.32. User marks false positives

Path parameters

Table 78. General request informationTable 76. General request information
- +@@ -8423,7 +8357,7 @@

2.2.32. User marks false positives

-

2.2.33. User unmarks existing false positive definitons

+

2.2.32. User unmarks existing false positive definitons

@@ -8431,7 +8365,7 @@

2.2.33. User unmarks ex

Definition

Table 79. https://localhost:8081/api/project/{projectId}/false-positivesTable 77. https://localhost:8081/api/project/{projectId}/false-positives
- +@@ -8461,7 +8395,7 @@

2.2.33. User unmarks ex

Path parameters

Table 80. General request informationTable 78. General request information
- +@@ -8519,7 +8453,7 @@

2.2.33. User unmarks ex
-

2.2.34. User fetches false positive configuration of project

+

2.2.33. User fetches false positive configuration of project

@@ -8527,7 +8461,7 @@

2.2.34. User fetch

Definition

Table 81. https://localhost:8081/api/project/{projectId}/false-positive/{jobUUID}/{findingId}Table 79. https://localhost:8081/api/project/{projectId}/false-positive/{jobUUID}/{findingId}
- +@@ -8557,7 +8491,7 @@

2.2.34. User fetch

Path parameters

Table 82. General request informationTable 80. General request information
- +@@ -8780,7 +8714,7 @@

2.2.34. User fetch
-

2.2.35. User uploads binaries

+

2.2.34. User uploads binaries

REST API for usecase UC_069-User uploads binaries

@@ -8788,7 +8722,7 @@

2.2.35. User uploads binaries

Definition

Table 83. https://localhost:8081/api/project/{projectId}/false-positivesTable 81. https://localhost:8081/api/project/{projectId}/false-positives
- +@@ -8818,7 +8752,7 @@

2.2.35. User uploads binaries

Path parameters

Table 84. General request informationTable 82. General request information
- +@@ -8869,7 +8803,7 @@

2.2.35. User uploads binaries

-
$ curl 'https://sechub.example.com/api/project/project1/job/17e49206-f9cc-4e03-93d6-6b49c0c1c163/binaries' -i -X POST \
+
$ curl 'https://sechub.example.com/api/project/project1/job/d5c6f643-7cdf-4df1-bf73-a9e92c940c64/binaries' -i -X POST \
     -H 'Content-Type: multipart/form-data;charset=UTF-8' \
     -H 'x-file-size: 10240' \
     -F 'file=test1.txt                                                                                           0000664 0001750 0001750 00000000000 13353454574 012170  0                                                                                                    ustar   albert                          albert                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ' \
@@ -8882,7 +8816,7 @@ 

2.2.35. User uploads binaries

-

2.2.36. User downloads job report in SPDX format

+

2.2.35. User downloads job report in SPDX format

@@ -8890,7 +8824,7 @@

2.2.36. User downloads job rep

Definition

Table 85. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/binariesTable 83. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/binaries
- +@@ -8920,7 +8854,7 @@

2.2.36. User downloads job rep

Path parameters

Table 86. General request informationTable 84. General request information
- +@@ -8950,14 +8884,14 @@

2.2.36. User downloads job rep
-
$ curl 'https://sechub.example.com/api/project/project1/report/spdx/051bce52-c6de-4629-b8d0-b3266b6c70e9' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/report/spdx/0ac3edf3-373b-4c82-986f-3ba87a3f8a14' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -H 'Accept: application/json'
-

2.2.37. User unmarks existing false positive project data definitons

+

2.2.36. User unmarks existing false positive project data definitons

@@ -8965,7 +8899,7 @@

2.2.37. Us

Definition

Table 87. https://localhost:8081/api/project/{projectId}/report/spdx/{jobUUID}Table 85. https://localhost:8081/api/project/{projectId}/report/spdx/{jobUUID}
- +@@ -8995,7 +8929,7 @@

2.2.37. Us

Path parameters

Table 88. General request informationTable 86. General request information
- +@@ -9049,7 +8983,7 @@

2.2.37. Us
-

2.2.38. User self registration

+

2.2.37. User self registration

REST API for usecase UC_001-User self registration

@@ -9057,7 +8991,7 @@

2.2.38. User self registration

Definition

Table 89. https://localhost:8081/api/project/{projectId}/false-positive/project-data/{id}Table 87. https://localhost:8081/api/project/{projectId}/false-positive/project-data/{id}
- +@@ -9136,7 +9070,7 @@

2.2.38. User self registration

-

2.2.39. Admin lists open user signups

+

2.2.38. Admin lists open user signups

@@ -9144,7 +9078,7 @@

2.2.39. Admin lists open user signups

Definition

Table 90. General request informationTable 88. General request information
- +@@ -9240,7 +9174,7 @@

2.2.39. Admin lists open user signups

-

2.2.40. Admin applies self registration

+

2.2.39. Admin applies self registration

@@ -9248,7 +9182,7 @@

2.2.40. Admin applies self registration

Definition

Table 91. General request informationTable 89. General request information
- +@@ -9278,7 +9212,7 @@

2.2.40. Admin applies self registration

Path parameters

Table 92. General request informationTable 90. General request information
- +@@ -9328,6 +9262,80 @@

2.2.40. Admin applies self registration
+ + +
+

Definition

+
+

Table 93. https://localhost:8081/api/admin/signup/accept/{userId}Table 91. https://localhost:8081/api/admin/signup/accept/{userId}
+ ++++ + + + + + + + + + + + + + + + + + + + + +
Table 92. General request information
Value

Path

/api/anonymous/apitoken/{oneTimeToken}

Method

GET

Status code

200 OK

+
+

Path parameters

+
+ + ++++ + + + + + + + + + + + + +
Table 93. https://localhost:8081/api/anonymous/apitoken/{oneTimeToken}
ParameterDescription

oneTimeToken

A one time token the user has got by a previous mail from sechub server

+
+

Example

+
+
+

Curl request

+
+
+
+
$ curl 'https://sechub.example.com/api/anonymous/apitoken/oneTimeToken1' -i -X GET \
+    -H 'Content-Type: application/json;charset=UTF-8'
+
+
+
+

Response body
+(empty)

+
+
+

2.2.41. Admin deletes user signup

REST API for usecase UC_019-Admin deletes user signup

@@ -9600,7 +9608,7 @@

2.2.43. Admin lists all running jobs

-
[{"jobUUID":"cd9f97f0-2bf5-4370-85a8-b499dc94ce2f","projectId":"project-name","owner":"owner-userid","status":"RUNNING","since":"2025-01-22T14:30:35.21046551"}]
+
[{"jobUUID":"ff2d3321-1604-42ed-9d94-7201d7175f06","projectId":"project-name","owner":"owner-userid","status":"RUNNING","since":"2025-02-14T15:18:18.90559113"}]
@@ -9684,7 +9692,7 @@

2.2.44. Admin cancels a job

-
$ curl 'https://sechub.example.com/api/admin/jobs/cancel/6a645735-00ad-48d0-96b6-f3b83053b9cc' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/admin/jobs/cancel/360965bc-b8e2-4674-b6aa-9dee6be950a5' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -9773,7 +9781,7 @@

2.2.45. Admin restarts a job

-
$ curl 'https://sechub.example.com/api/admin/jobs/restart/05e1441f-4e84-462a-b3d1-a66d5758675f' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/admin/jobs/restart/9d94b454-2a02-4dab-b8bf-e4e29f50db19' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -9862,7 +9870,7 @@

2.2.46. Admin restarts a job (hard)

-
$ curl 'https://sechub.example.com/api/admin/jobs/restart-hard/64c8ae9e-7f2b-4785-8e4e-a8f8032a9495' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/admin/jobs/restart-hard/54f0d06c-39e0-4820-8fd2-2f0723b3b2c7' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -9951,7 +9959,7 @@

2.2.47. User cancels a job

-
$ curl 'https://sechub.example.com/api/management/jobs/8931047f-229f-4aa2-ace7-7113ad1c32e1/cancel' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/management/jobs/eebf97c8-4e9c-4c95-a839-1fa6509dcc2d/cancel' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -10484,7 +10492,7 @@

2.2.52. Admin creates an execut
-
bd2babb2-56de-44e6-8b2c-7c82f78148e5
+
ed3cd7f9-317b-4eb7-9f43-9d8fe0dac5c7
@@ -10568,7 +10576,7 @@

2.2.53. Admin deletes executor con
-
$ curl 'https://sechub.example.com/api/admin/config/executor/2d431a77-0757-4c87-907e-6c068ba3117c' -i -u 'user:secret' -X DELETE \
+
$ curl 'https://sechub.example.com/api/admin/config/executor/814c2b74-9add-4530-8bcf-7a0a86b6fe4e' -i -u 'user:secret' -X DELETE \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -10683,7 +10691,7 @@

2.2.54. Admin fetches executo
-
{"executorConfigurations":[{"uuid":"af4b10d1-3b4a-4c4b-a2d3-fa36959ede19","name":"example configuration","enabled":true}],"type":"executorConfigurationList"}
+
{"executorConfigurations":[{"uuid":"0818c0cd-7a3a-4069-bfcb-7c69df0066db","name":"example configuration","enabled":true}],"type":"executorConfigurationList"}
@@ -10836,7 +10844,7 @@

2.2.55. Admin fetches executor con
-
$ curl 'https://sechub.example.com/api/admin/config/executor/612735cb-e561-433c-9b01-b31512f12008' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/admin/config/executor/5b93aa34-f4c3-4a10-aa7a-81d9dcfd119b' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -10845,7 +10853,7 @@

2.2.55. Admin fetches executor con
-
{"uuid":"612735cb-e561-433c-9b01-b31512f12008","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value"}]},"executorVersion":1,"enabled":false}
+
{"uuid":"5b93aa34-f4c3-4a10-aa7a-81d9dcfd119b","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value"}]},"executorVersion":1,"enabled":false}
@@ -10993,7 +11001,7 @@

2.2.56. Admin updates execut
-
$ curl 'https://sechub.example.com/api/admin/config/executor/05be7dfd-0586-4b18-af93-acdeb9a6ccec' -i -u 'user:secret' -X PUT \
+
$ curl 'https://sechub.example.com/api/admin/config/executor/96d647a2-08ee-4178-acef-49b672c6b99a' -i -u 'user:secret' -X PUT \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -d '{"name":"New name","productIdentifier":"PDS_CODESCAN","executorVersion":1,"enabled":false,"setup":{"baseURL":"https://productNew.example.com","credentials":{"user":"env:EXAMPLE_NEW_USENAME","password":"env:EXAMPLE_NEW_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]}}'
@@ -11337,7 +11345,7 @@

2.2.59. Admin updates execution profile
$ curl 'https://sechub.example.com/api/admin/config/execution/profile/existing-profile-1' -i -u 'user:secret' -X PUT \
     -H 'Content-Type: application/json;charset=UTF-8' \
-    -d '{"description":"changed description","configurations":[{"uuid":"990093ee-59c8-4e4f-9a0f-4f87d1948ad3","executorVersion":0,"enabled":false,"setup":{"credentials":{},"jobParameters":[]}}],"enabled":true}'
+ -d '{"description":"changed description","configurations":[{"uuid":"eae91c96-040e-47a2-a72b-162019e55c73","executorVersion":0,"enabled":false,"setup":{"credentials":{},"jobParameters":[]}}],"enabled":true}'

@@ -11493,7 +11501,7 @@

2.2.60. Admin fetches execution profile

-
{"description":"a description","enabled":true,"configurations":[{"uuid":"e972869d-29f5-47f3-81ad-2c677a82716d","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]},"executorVersion":1,"enabled":false}],"projectIds":["project-1","project-2"]}
+
{"description":"a description","enabled":true,"configurations":[{"uuid":"c7610b80-ce4a-4308-ad62-b94157386099","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]},"executorVersion":1,"enabled":false}],"projectIds":["project-1","project-2"]}
@@ -12009,7 +12017,7 @@

2.2.66. Admin creates or updates a

type

String

-

The template type. Must be be defined when a new template is created. An update will ignore changes of this property because the type is immutable! Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@7db2a40a

+

The template type. Must be be defined when a new template is created. An update will ignore changes of this property because the type is immutable! Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@66b6980f

assetId

@@ -12229,7 +12237,7 @@

2.2.68. Admin fetches template

type

String

-

The template type. Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@4dc4dea6

+

The template type. Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@67e23aae

id

@@ -13864,7 +13872,142 @@

2.2.85. User lists jobs for project

-
{"page":0,"totalPages":1,"content":[{"jobUUID":"58882c0f-31f4-4191-b6ae-a659d387a6e8","executedBy":"User1","created":"2025-01-22T14:13:28.908096865","started":"2025-01-22T14:15:28.908126731","ended":"2025-01-22T14:30:28.908138823","executionState":"ENDED","trafficLight":"GREEN","executionResult":"OK","metaData":{"labels":{"stage":"test"}}}]}
+
{"page":0,"totalPages":1,"content":[{"jobUUID":"60ef92d7-b3c9-43b7-815c-a51585dade60","executedBy":"User1","created":"2025-02-14T15:01:12.869461101","started":"2025-02-14T15:03:12.869489996","ended":"2025-02-14T15:18:12.869501467","executionState":"ENDED","trafficLight":"GREEN","executionResult":"OK","metaData":{"labels":{"stage":"test"}}}]}
+
+
+ +
+

2.2.86. Admin executes templates healthcheck or updates a template

+ +
+

Definition

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 166. General request information
Value

Path

/api/admin/templates/healthcheck

Method

GET

Status code

200 OK

+
+

Response fields

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

status

String

Represents overall healthcheck status. Can be one of : [OK, WARNING, ERROR]

entries

Array

A list of healthcheck status entries. Each entry represents a problem or an information.

entries[].type

String

Type of this entry. Can be one of : [INFO, WARNING, ERROR]

entries[].description

String

A description about the the entry

entries[].templateId

String

The template id for the template where the problem/information is related to

entries[].projects

Array

A list of projects which have the template assigned

entries[].executorConfigUUID

String

The uuid of the product executor config where the problem/info is related to (in combination with template)

entries[].profiles

Array

A list of the invovled profiles, means using executor config and being assigned to projects

entries[].hints

Array

A list of hints which gives additinal information. E.g. A disabled executor configuration which leads to problems will lead to a WARNING, but not to an ERROR. In this case a hint 'At least one executor config is not enabled' would be added.

entries[].solution

String

A solution how to fix/resolve the problem

entries[].assetId

String

The asset identifier which is used to locate the file

entries[].fileName

String

The name of the file inside the asset

+
+

Example

+
+
+

Curl request

+
+
+
+
$ curl 'https://sechub.example.com/api/admin/templates/healthcheck' -i -u 'user:secret' -X GET \
+    -H 'Content-Type: application/json;charset=UTF-8'
+
+
+
+

Response body

+
+
+
+
{"status":"WARNING","entries":[{"type":"ERROR","description":"The file 'asset-1/pds-product1-id.zip' does not exist!","templateId":"template-1","projects":["project-1"],"executorConfigUUID":"349ea899-e780-4553-bd50-06c12fe96c9e","profiles":["profile-1"],"hints":["At least one combination of executor and profile is enabled.","At least one profile is enabled.","At least one executor config is enabled."],"solution":"Upload a file 'pds-product1-id.zip' to asset folder 'asset-1'","assetId":"asset-1","fileName":"pds-product1-id.zip"},{"type":"WARNING","description":"The file 'asset-1/pds-product2-id.zip' does not exist!","templateId":"template-1","projects":["project-2"],"executorConfigUUID":"2b25b007-f3d2-4591-ba42-409e19d9a5e8","profiles":["profile-2"],"hints":["At least one profile is enabled.","At least one executor config is not enabled."],"solution":"Upload a file 'pds-product2-id.zip' to asset folder 'asset-1'","assetId":"asset-1","fileName":"pds-product2-id.zip"}]}
@@ -14231,9 +14374,6 @@
4.1.1.4. User self service
@@ -15194,14 +15340,14 @@

4.1.12. UC_011-User starts scan by client

2

-

upload sourcecode

+

upload binaries

SUPERADMIN, USER

2

2

-

upload binaries

+

upload sourcecode

SUPERADMIN, USER

3

@@ -15551,17 +15697,17 @@

4.1.17. UC_016-Admin unassigns user from project

2

-

Unassign user

-

SUPERADMIN

+

Update authorization parts

+

2

-

The service will remove the user to the project. If users has no longer access to projects ROLE_USER will be removed

+

2

-

Update authorization parts

- +

Unassign user

+

SUPERADMIN

4

- +

The service will remove the user to the project. If users has no longer access to projects ROLE_USER will be removed

4

@@ -16374,14 +16520,14 @@

4.1.31. UC_030-Admin disables job processing in

Service call

SUPERADMIN

2

-

Sends request to scheduler to send updates about current status.

+

Sends request to scheduler domain to disable scheduler job processing

2

Service call

SUPERADMIN

3

-

Sends request to scheduler domain to disable scheduler job processing

+

Sends request to scheduler to send updates about current status.

3

@@ -19114,17 +19260,17 @@

4.1.77. UC_076-Admin fetches encryption status

1

-

Service call

- +

Rest call

+

SUPERADMIN

1

-

Services collects encryption status from domains via event bus

+

Admin fetches encryption status from domains via REST

1

-

Rest call

-

SUPERADMIN

+

Service call

-

Admin fetches encryption status from domains via REST

+ +

Services collects encryption status from domains via event bus

@@ -20050,18 +20196,54 @@

4.1.96. UC_095-User fetches his user details

+ +
+

4.1.97. UC_096-Admin executes templates healthcheck or updates a template

+
+

An administrator creates or updates a template

+
+
+

Steps

+
+ +++++++ + + + + + + + + + + + + + + + + + + +
NrTitleRole(s)NextDescription

1

REST API call to create or update template

SUPERADMIN

2

-
4.1.96.1. Overview
+
4.1.97.1. Overview
-
4.1.96.1.1. Diagram
+
4.1.97.1.1. Diagram
-Sequence diagram of messaging overview +Sequence diagram of messaging overview
- +
-
4.1.96.2. Message ANALYZE_SCAN_RESULTS_AVAILABLE
+
4.1.97.2. Message ANALYZE_SCAN_RESULTS_AVAILABLE
Sequence diagram of messaging ANALYZE_SCAN_RESULTS_AVAILABLE @@ -20260,7 +20451,7 @@
4.1.96.2. Message
-
4.1.96.3. Message AUTO_CLEANUP_CONFIGURATION_CHANGED
+
4.1.97.3. Message AUTO_CLEANUP_CONFIGURATION_CHANGED
Sequence diagram of messaging AUTO_CLEANUP_CONFIGURATION_CHANGED @@ -20289,7 +20480,7 @@
4.1.96.3. Mess
-
4.1.96.4. Message BINARY_UPLOAD_DONE
+
4.1.97.4. Message BINARY_UPLOAD_DONE
Sequence diagram of messaging BINARY_UPLOAD_DONE @@ -20297,7 +20488,7 @@
4.1.96.4. Message BINARY_UPLOA
-
4.1.96.5. Message GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN
+
4.1.97.5. Message GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN
Sequence diagram of messaging GET_ENCRYPTION_STATUS_SCHEDULE_DOMAIN @@ -20305,7 +20496,7 @@
4.1.96.5. M
-
4.1.96.6. Message JOB_CANCELLATION_RUNNING
+
4.1.97.6. Message JOB_CANCELLATION_RUNNING
Sequence diagram of messaging JOB_CANCELLATION_RUNNING @@ -20313,7 +20504,7 @@
4.1.96.6. Message JOB_CA
-
4.1.96.7. Message JOB_CREATED
+
4.1.97.7. Message JOB_CREATED
Sequence diagram of messaging JOB_CREATED @@ -20321,7 +20512,7 @@
4.1.96.7. Message JOB_CREATED
-
4.1.96.8. Message JOB_DONE
+
4.1.97.8. Message JOB_DONE
Sequence diagram of messaging JOB_DONE @@ -20353,7 +20544,7 @@
4.1.96.8. Message JOB_DONE
-
4.1.96.9. Message JOB_EXECUTION_STARTING
+
4.1.97.9. Message JOB_EXECUTION_STARTING
Sequence diagram of messaging JOB_EXECUTION_STARTING @@ -20385,7 +20576,7 @@
4.1.96.9. Message JOB_EXEC
-
4.1.96.10. Message JOB_FAILED
+
4.1.97.10. Message JOB_FAILED
Sequence diagram of messaging JOB_FAILED @@ -20393,7 +20584,7 @@
4.1.96.10. Message JOB_FAILED
-
4.1.96.11. Message JOB_RESTART_CANCELED
+
4.1.97.11. Message JOB_RESTART_CANCELED
Sequence diagram of messaging JOB_RESTART_CANCELED @@ -20425,7 +20616,7 @@
4.1.96.11. Message JOB_RESTA
-
4.1.96.12. Message JOB_RESTART_TRIGGERED
+
4.1.97.12. Message JOB_RESTART_TRIGGERED
Sequence diagram of messaging JOB_RESTART_TRIGGERED @@ -20457,7 +20648,7 @@
4.1.96.12. Message JOB_REST
-
4.1.96.13. Message JOB_RESULTS_PURGED
+
4.1.97.13. Message JOB_RESULTS_PURGED
Sequence diagram of messaging JOB_RESULTS_PURGED @@ -20486,7 +20677,7 @@
4.1.96.13. Message JOB_RESULTS
-
4.1.96.14. Message JOB_RESULT_PURGE_DONE
+
4.1.97.14. Message JOB_RESULT_PURGE_DONE
Sequence diagram of messaging JOB_RESULT_PURGE_DONE @@ -20494,7 +20685,7 @@
4.1.96.14. Message JOB_RESU
-
4.1.96.15. Message JOB_RESULT_PURGE_FAILED
+
4.1.97.15. Message JOB_RESULT_PURGE_FAILED
Sequence diagram of messaging JOB_RESULT_PURGE_FAILED @@ -20502,7 +20693,7 @@
4.1.96.15. Message JOB_RE
-
4.1.96.16. Message JOB_STARTED
+
4.1.97.16. Message JOB_STARTED
Sequence diagram of messaging JOB_STARTED @@ -20534,7 +20725,7 @@
4.1.96.16. Message JOB_STARTED
-
4.1.96.17. Message JOB_SUSPENDED
+
4.1.97.17. Message JOB_SUSPENDED
Sequence diagram of messaging JOB_SUSPENDED @@ -20542,7 +20733,7 @@
4.1.96.17. Message JOB_SUSPENDED
-
4.1.96.18. Message MAPPING_CONFIGURATION_CHANGED
+
4.1.97.18. Message MAPPING_CONFIGURATION_CHANGED
Sequence diagram of messaging MAPPING_CONFIGURATION_CHANGED @@ -20550,7 +20741,7 @@
4.1.96.18. Message
-
4.1.96.19. Message PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE
+
4.1.97.19. Message PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE
Sequence diagram of messaging PRODUCT_EXECUTOR_CANCEL_OPERATIONS_DONE @@ -20558,7 +20749,7 @@
4.1.96.19
-
4.1.96.20. Message PROJECT_ACCESS_LEVEL_CHANGED
+
4.1.97.20. Message PROJECT_ACCESS_LEVEL_CHANGED
Sequence diagram of messaging PROJECT_ACCESS_LEVEL_CHANGED @@ -20566,7 +20757,7 @@
4.1.96.20. Message P
-
4.1.96.21. Message PROJECT_CREATED
+
4.1.97.21. Message PROJECT_CREATED
Sequence diagram of messaging PROJECT_CREATED @@ -20574,7 +20765,7 @@
4.1.96.21. Message PROJECT_CREATE
-
4.1.96.22. Message PROJECT_DELETED
+
4.1.97.22. Message PROJECT_DELETED
Sequence diagram of messaging PROJECT_DELETED @@ -20582,7 +20773,7 @@
4.1.96.22. Message PROJECT_DELETE
-
4.1.96.23. Message PROJECT_OWNER_CHANGED
+
4.1.97.23. Message PROJECT_OWNER_CHANGED
Sequence diagram of messaging PROJECT_OWNER_CHANGED @@ -20590,7 +20781,7 @@
4.1.96.23. Message PROJECT_
-
4.1.96.24. Message PROJECT_WHITELIST_UPDATED
+
4.1.97.24. Message PROJECT_WHITELIST_UPDATED
Sequence diagram of messaging PROJECT_WHITELIST_UPDATED @@ -20598,7 +20789,7 @@
4.1.96.24. Message PROJ
-
4.1.96.25. Message REQUEST_ASSIGN_TEMPLATE_TO_PROJECT
+
4.1.97.25. Message REQUEST_ASSIGN_TEMPLATE_TO_PROJECT
Sequence diagram of messaging REQUEST_ASSIGN_TEMPLATE_TO_PROJECT @@ -20606,7 +20797,15 @@
4.1.96.25. Mes
-
4.1.96.26. Message REQUEST_JOB_CANCELLATION
+
4.1.97.26. Message REQUEST_FULL_CONFIGURATION_VALIDATION
+
+
+Sequence diagram of messaging REQUEST_FULL_CONFIGURATION_VALIDATION +
+
+
+
+
4.1.97.27. Message REQUEST_JOB_CANCELLATION
Sequence diagram of messaging REQUEST_JOB_CANCELLATION @@ -20614,10 +20813,10 @@
4.1.96.26. Message REQUE
-
4.1.96.27. Message REQUEST_JOB_RESTART
+
4.1.97.28. Message REQUEST_JOB_RESTART
-Sequence diagram of messaging REQUEST_JOB_RESTART +Sequence diagram of messaging REQUEST_JOB_RESTART
@@ -20643,7 +20842,7 @@
4.1.96.27. Message REQUEST_JO
-
4.1.96.28. Message REQUEST_JOB_RESTART_HARD
+
4.1.97.29. Message REQUEST_JOB_RESTART_HARD
Sequence diagram of messaging REQUEST_JOB_RESTART_HARD @@ -20672,7 +20871,7 @@
4.1.96.28. Message REQUE
-
4.1.96.29. Message REQUEST_PURGE_JOB_RESULTS
+
4.1.97.30. Message REQUEST_PURGE_JOB_RESULTS
Sequence diagram of messaging REQUEST_PURGE_JOB_RESULTS @@ -20701,7 +20900,7 @@
4.1.96.29. Message REQU
-
4.1.96.30. Message REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING
+
4.1.97.31. Message REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING
Sequence diagram of messaging REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING @@ -20730,7 +20929,7 @@
4.1.96.3
-
4.1.96.31. Message REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING
+
4.1.97.32. Message REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING
Sequence diagram of messaging REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING @@ -20759,7 +20958,7 @@
4.1.96.31
-
4.1.96.32. Message REQUEST_SCHEDULER_JOB_STATUS
+
4.1.97.33. Message REQUEST_SCHEDULER_JOB_STATUS
Sequence diagram of messaging REQUEST_SCHEDULER_JOB_STATUS @@ -20791,7 +20990,7 @@
4.1.96.32. Message R
-
4.1.96.33. Message REQUEST_SCHEDULER_STATUS_UPDATE
+
4.1.97.34. Message REQUEST_SCHEDULER_STATUS_UPDATE
Sequence diagram of messaging REQUEST_SCHEDULER_STATUS_UPDATE @@ -20799,7 +20998,7 @@
4.1.96.33. Messag
-
4.1.96.34. Message REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECT
+
4.1.97.35. Message REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECT
Sequence diagram of messaging REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECT @@ -20807,10 +21006,10 @@
4.1.96.34.
-
4.1.96.35. Message REQUEST_USER_ROLE_RECALCULATION
+
4.1.97.36. Message REQUEST_USER_ROLE_RECALCULATION
-Sequence diagram of messaging REQUEST_USER_ROLE_RECALCULATION +Sequence diagram of messaging REQUEST_USER_ROLE_RECALCULATION
@@ -20842,7 +21041,7 @@
4.1.96.35. Messag
-
4.1.96.36. Message RESULT_ASSIGN_TEMPLATE_TO_PROJECT
+
4.1.97.37. Message RESULT_ASSIGN_TEMPLATE_TO_PROJECT
Sequence diagram of messaging RESULT_ASSIGN_TEMPLATE_TO_PROJECT @@ -20850,7 +21049,7 @@
4.1.96.36. Mess
-
4.1.96.37. Message RESULT_ENCRYPTION_STATUS_SCHEDULE_DOMAIN
+
4.1.97.38. Message RESULT_ENCRYPTION_STATUS_SCHEDULE_DOMAIN
Sequence diagram of messaging RESULT_ENCRYPTION_STATUS_SCHEDULE_DOMAIN @@ -20858,7 +21057,15 @@
4.1.96.3
-
4.1.96.38. Message RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT
+
4.1.97.39. Message RESULT_FULL_CONFIGURATION_VALIDATION
+
+
+Sequence diagram of messaging RESULT_FULL_CONFIGURATION_VALIDATION +
+
+
+
+
4.1.97.40. Message RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT
Sequence diagram of messaging RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT @@ -20866,7 +21073,7 @@
4.1.96.38.
-
4.1.96.39. Message SCAN_DONE
+
4.1.97.41. Message SCAN_DONE
Sequence diagram of messaging SCAN_DONE @@ -20874,7 +21081,7 @@
4.1.96.39. Message SCAN_DONE
-
4.1.96.40. Message SCAN_FAILED
+
4.1.97.42. Message SCAN_FAILED
Sequence diagram of messaging SCAN_FAILED @@ -20882,7 +21089,7 @@
4.1.96.40. Message SCAN_FAILED
-
4.1.96.41. Message SCAN_SUSPENDED
+
4.1.97.43. Message SCAN_SUSPENDED
Sequence diagram of messaging SCAN_SUSPENDED @@ -20890,7 +21097,7 @@
4.1.96.41. Message SCAN_SUSPENDED<
-
4.1.96.42. Message SCHEDULER_JOB_PROCESSING_DISABLED
+
4.1.97.44. Message SCHEDULER_JOB_PROCESSING_DISABLED
Sequence diagram of messaging SCHEDULER_JOB_PROCESSING_DISABLED @@ -20919,7 +21126,7 @@
4.1.96.42. Mess
-
4.1.96.43. Message SCHEDULER_JOB_PROCESSING_ENABLED
+
4.1.97.45. Message SCHEDULER_JOB_PROCESSING_ENABLED
Sequence diagram of messaging SCHEDULER_JOB_PROCESSING_ENABLED @@ -20948,7 +21155,7 @@
4.1.96.43. Messa
-
4.1.96.44. Message SCHEDULER_JOB_STATUS
+
4.1.97.46. Message SCHEDULER_JOB_STATUS
Sequence diagram of messaging SCHEDULER_JOB_STATUS @@ -20956,7 +21163,7 @@
4.1.96.44. Message SCHEDULER
-
4.1.96.45. Message SCHEDULER_STARTED
+
4.1.97.47. Message SCHEDULER_STARTED
Sequence diagram of messaging SCHEDULER_STARTED @@ -20964,7 +21171,7 @@
4.1.96.45. Message SCHEDULER_ST
-
4.1.96.46. Message SCHEDULER_STATUS_UPDATE
+
4.1.97.48. Message SCHEDULER_STATUS_UPDATE
Sequence diagram of messaging SCHEDULER_STATUS_UPDATE @@ -20972,7 +21179,7 @@
4.1.96.46. Message SCHEDU
-
4.1.96.47. Message SCHEDULE_ENCRYPTION_POOL_INITIALIZED
+
4.1.97.49. Message SCHEDULE_ENCRYPTION_POOL_INITIALIZED
Sequence diagram of messaging SCHEDULE_ENCRYPTION_POOL_INITIALIZED @@ -20980,7 +21187,7 @@
4.1.96.47. M
-
4.1.96.48. Message SOURCE_UPLOAD_DONE
+
4.1.97.50. Message SOURCE_UPLOAD_DONE
Sequence diagram of messaging SOURCE_UPLOAD_DONE @@ -20988,7 +21195,7 @@
4.1.96.48. Message SOURCE_UPLO
-
4.1.96.49. Message START_ENCRYPTION_ROTATION
+
4.1.97.51. Message START_ENCRYPTION_ROTATION
Sequence diagram of messaging START_ENCRYPTION_ROTATION @@ -20996,7 +21203,7 @@
4.1.96.49. Message STAR
-
4.1.96.50. Message START_SCAN
+
4.1.97.52. Message START_SCAN
Sequence diagram of messaging START_SCAN @@ -21028,7 +21235,15 @@
4.1.96.50. Message START_SCAN
-
4.1.96.51. Message UNSUPPORTED_OPERATION
+
4.1.97.53. Message TEMPLATE_DELETED
+
+
+Sequence diagram of messaging TEMPLATE_DELETED +
+
+
+
+
4.1.97.54. Message UNSUPPORTED_OPERATION
Sequence diagram of messaging UNSUPPORTED_OPERATION @@ -21036,7 +21251,7 @@
4.1.96.51. Message UNSUPPOR
-
4.1.96.52. Message USER_ADDED_TO_PROJECT
+
4.1.97.55. Message USER_ADDED_TO_PROJECT
Sequence diagram of messaging USER_ADDED_TO_PROJECT @@ -21065,15 +21280,15 @@
4.1.96.52. Message USER_ADD
-
4.1.96.53. Message USER_API_TOKEN_CHANGED
+
4.1.97.56. Message USER_API_TOKEN_CHANGED
-Sequence diagram of messaging USER_API_TOKEN_CHANGED +Sequence diagram of messaging USER_API_TOKEN_CHANGED
-
4.1.96.54. Message USER_BECOMES_SUPERADMIN
+
4.1.97.57. Message USER_BECOMES_SUPERADMIN
Sequence diagram of messaging USER_BECOMES_SUPERADMIN @@ -21081,10 +21296,10 @@
4.1.96.54. Message USER_B
-
4.1.96.55. Message USER_CREATED
+
4.1.97.58. Message USER_CREATED
-Sequence diagram of messaging USER_CREATED +Sequence diagram of messaging USER_CREATED
@@ -21110,7 +21325,7 @@
4.1.96.55. Message USER_CREATED
-
4.1.96.56. Message USER_DELETED
+
4.1.97.59. Message USER_DELETED
Sequence diagram of messaging USER_DELETED @@ -21118,7 +21333,7 @@
4.1.96.56. Message USER_DELETED
-
4.1.96.57. Message USER_EMAIL_ADDRESS_CHANGED
+
4.1.97.60. Message USER_EMAIL_ADDRESS_CHANGED
Sequence diagram of messaging USER_EMAIL_ADDRESS_CHANGED @@ -21126,10 +21341,10 @@
4.1.96.57. Message USE
-
4.1.96.58. Message USER_NEW_API_TOKEN_REQUESTED
+
4.1.97.61. Message USER_NEW_API_TOKEN_REQUESTED
-Sequence diagram of messaging USER_NEW_API_TOKEN_REQUESTED +Sequence diagram of messaging USER_NEW_API_TOKEN_REQUESTED
@@ -21155,15 +21370,15 @@
4.1.96.58. Message U
-
4.1.96.59. Message USER_NO_LONGER_SUPERADMIN
+
4.1.97.62. Message USER_NO_LONGER_SUPERADMIN
-Sequence diagram of messaging USER_NO_LONGER_SUPERADMIN +Sequence diagram of messaging USER_NO_LONGER_SUPERADMIN
-
4.1.96.60. Message USER_REMOVED_FROM_PROJECT
+
4.1.97.63. Message USER_REMOVED_FROM_PROJECT
Sequence diagram of messaging USER_REMOVED_FROM_PROJECT @@ -21192,7 +21407,7 @@
4.1.96.60. Message USER
-
4.1.96.61. Message USER_ROLES_CHANGED
+
4.1.97.64. Message USER_ROLES_CHANGED
Sequence diagram of messaging USER_ROLES_CHANGED @@ -21227,7 +21442,7 @@
4.1.96.61. Message USER_ROLES_
-
4.1.96.62. Message USER_SIGNUP_REQUESTED
+
4.1.97.65. Message USER_SIGNUP_REQUESTED
Sequence diagram of messaging USER_SIGNUP_REQUESTED @@ -21262,7 +21477,7 @@
4.1.96.62. Message USER_SIG
diff --git a/docs/latest/sechub-techdoc.html b/docs/latest/sechub-techdoc.html index 043e0e65c..24249db4f 100644 --- a/docs/latest/sechub-techdoc.html +++ b/docs/latest/sechub-techdoc.html @@ -531,7 +531,7 @@
@@ -2301,7 +2323,7 @@
3.1.1.1. Server
3.1.1.1.1. Overview
-Diagram +Diagram
Figure 1. Spring profiles and their explicit/implicit included parts
@@ -2338,7 +2360,7 @@
3.1.1.1.2. PROD
3.1.1.1.3. DEV
-Diagram +Diagram
Figure 3. Spring profile dev and its explicit/implicit included parts
@@ -2351,7 +2373,7 @@
3.1.1.1.3. DEV
3.1.1.1.4. Integration-Test
-Diagram +Diagram
Figure 4. Spring profile integrationtest and its explicit/implicit included parts
@@ -3551,7 +3573,169 @@

3.1.5. Configuration properties for mocked adapters

-

3.2. Local development

+

3.2. Spring Boot Security

+
+

SecHub uses Spring Boot Security to secure the application. Spring Security can be split into two modes:

+
+
+
    +
  • +

    Resource Server

    +
  • +
  • +

    Login

    +
  • +
+
+
+

3.2.1. Resource Server

+
+

In Resource Server mode you tell Spring to authenticate incoming requests using existing credentials and tokens. SecHub +allows for Basic Authentication or OAuth2.

+
+
+

In SecHub we call anything that has to do with basic authentication the Classic mode. The classic mode is the default +authentication mode for SecHub. In classic mode the server validates the credentials itself using the database.

+
+
+ + + + + +
+ + +SecHub requires you to activate at least Classic mode or OAuth2. If you don’t have any requirements for OAuth2 +you can simply use the classic mode. +
+
+
+

OAuth2 can be split further into two modes: JWT and Opaque Token. +With JWT mode enabled the server checks the token itself using signature validation.

+
+
+

Below is an example configuration with Classic mode and OAuth2 in JWT mode:

+
+
+
+
sechub:
+  security:
+    server:
+      modes:
+        - oauth2
+        - classic
+      oauth2:
+        mode: jwt
+        jwt:
+          jwk-set-uri: <jwk-set-uri-of-your-idp>
+
+
+
+

In Opaque Token mode the server forwards the token to an introspection endpoint for every request.

+
+
+ + + + + +
+ + +Opaque Token mode increases the load on the IDP server hence caching is very important. Adjust the caching settings to your +IDPs needs. If you don’t have high security requirements you can simply use JWT mode. +
+
+
+

Below is an example configuration with Classic mode and OAuth2 in Opaque Token mode:

+
+
+
+
sechub:
+  security:
+    server:
+      modes:
+        - oauth2
+        - classic
+      oauth2:
+        mode: opaque-token
+        opaque-token:
+          introspection-uri: <introspection-uri-of-your-idp>
+          client-id: <client-id>
+          client-secret: <client-secret>
+
+
+
+
+

3.2.2. Login

+
+

SecHub can also be configured to act as a login provider. With login enabled SecHub will serve a login mask under the +configured path. After successful authentication the user will be redirected to the configured redirect uri. The redirect +will also include the authentication details in the Cookies. With this any browser based client will be automatically +authenticated in subsequent requests unless the cookies are cleared or the authentication expires.

+
+
+

Like with the Resource Server mode you can choose between Classic and OAuth2.

+
+
+ + + + + +
+ + +The authentication credentials are securely encrypted in the cookies. For that AES 256 Encryption is used. You +have to configure a secret key for the encryption. +
+
+
+

Below is a full configuration example with Login enabled in Classic and OAuth2 mode:

+
+
+
+
sechub:
+  security:
+    server:
+      modes:
+        - oauth2
+        - classic
+      oauth2:
+        mode: jwt
+        jwt:
+          jwk-set-uri: <jwk-set-uri-of-your-idp>
+    login:
+      enabled: true
+      # This is the path where the login mask will be served on the SecHub server
+      # You can choose any other path as long as it does not conflict with existing paths
+      login-page: /login
+      # Here you can configure the target application where the user will be redirected after successful login
+      redirect-uri: <your-target-application>
+      modes:
+        - oauth2
+        - classic
+      oauth2:
+        client-id: <client-id>
+        client-secret: <client-secret>
+        provider: <provider> # e.g. keycloak
+        # This is the callback uri where the IDP will redirect the user after successful login
+        # For most IDPs this URI has to be configured inside the IDP client
+        redirect-uri: https://<sechub-server-host>/login/oauth2/code/<provider>
+        issuer-uri: <issuer-uri>
+        authorization-uri: <authorization-uri>
+        token-uri: <token-uri>
+        user-info-uri: <user-info-uri>
+        jwk-set-uri: <jwk-set-uri>
+    encryption:
+      secret-key: <aes-256-compatible-secret-key>
+
+
+
+
+
+

3.3. Local development

This section describes the start on local machine (development/presentation).

@@ -3563,7 +3747,7 @@

3.2. Local developmentSee product infrastructure sections for details.

-

3.2.1. Java launch configuration setup

+

3.3.1. Java launch configuration setup

Because it takes too much time - even when security products are configured with test profiles (for testing persistence, transaction rollback etc.) a @@ -3584,7 +3768,7 @@

3.2.1. Java launch configuration setup<

Please refer to Mock options for details.

-
3.2.1.1. Launch in demo mode
+
3.3.1.1. Launch in demo mode

Here an example for calling in demomode:

@@ -3602,7 +3786,7 @@
3.2.1.1. Launch in demo mode
-
3.2.1.2. Launch in DEV mode
+
3.3.1.2. Launch in DEV mode

To start spring boot application SecHubServerApplication create a new launch configuration with following arguments:

@@ -3687,7 +3871,7 @@
3.2.1.2. Launch in DEV mode
-
3.2.1.3. Launch in INTEGRATION TEST mode
+
3.3.1.3. Launch in INTEGRATION TEST mode

To start spring boot application SecHubServerApplication create a new launch configuration with following arguments:

@@ -3745,7 +3929,7 @@
3.2.1.3. Launch in INTEGRATION TEST mod
-
3.2.1.4. Launch in PROD mode
+
3.3.1.4. Launch in PROD mode
@@ -3884,9 +4068,9 @@
3.2.1.4. Launch in PROD mode
-

3.3. Security product integrations

+

3.4. Security product integrations

-

3.3.1. PDS solutions

+

3.4.1. PDS solutions

SecHub provides multiple security products via the PDS (product delegation server) containerized and also K8s ready (helm charts). These solutions are always cluster ready and work "out of the box".

@@ -3896,7 +4080,7 @@

3.3.1. PDS solutions

-

3.3.2. Sereco

+

3.4.2. Sereco

Sereco is not a product to buy but a own developed sechub report collector.

@@ -3924,7 +4108,7 @@

3.3.2. Sereco

-
3.3.2.1. Install
+
3.4.2.1. Install

The software comes currently up with SecHub server installation. So nothing more is to do.

@@ -3932,7 +4116,7 @@
3.3.2.1. Install

Scaling etc. is done with SecHub scaling.

-
3.3.2.1.1. Future
+
3.4.2.1.1. Future

Currently Sereco is an embedded component of SecHub. Maybe there comes a time where Sereco will become a seperate server component which will be deployed standalone. If so there are some changes to do (e.g. creating a rest API) etc. But as long as there is no need for a separate installation @@ -3942,7 +4126,7 @@

3.3.2.1.1. Future
-

3.3.3. Prepare (Remote Data Preparation)

+

3.4.3. Prepare (Remote Data Preparation)

Prepare is not a scan product, but a developed wrapper application to prepare remote sources for scans. It is used to download remote sources and upload them to the shared storage make them available to the scan products. @@ -3962,7 +4146,7 @@

3.3.3. Prepare (

-

3.3.4. Checkmarx

+

3.4.4. Checkmarx

@@ -3984,7 +4168,7 @@

3.3.4. Checkma
-

3.3.5. Netsparker

+

3.4.5. Netsparker

@@ -4008,7 +4192,7 @@

3.3.5. Netspa
-

3.3.6. Nessus

+

3.4.6. Nessus

@@ -4030,7 +4214,7 @@

3.3.6. Nessus

-

3.4. Docker-Compose

+

3.5. Docker-Compose

Change into the product’s folder and issue:

@@ -4053,7 +4237,7 @@

3.4. Docker-Compose

-

3.5. Kubernetes

+

3.6. Kubernetes

We provide container images and Helm charts: https://github.com/mercedes-benz/sechub/packages

@@ -4491,7 +4675,72 @@

6.2.1. Spring Boot Security

-

6.2.2. Certificates

+

6.2.2. Security Configuration

+
+

SecHub Server supports two different modes when it comes to security.

+
+
+
    +
  • +

    1) Classic Mode: This is the standard SecHub authentication mode. In this mode Basic Auth is available for authentication. +Whenever we speak of Basic Auth, we refer to this mode.

    +
  • +
  • +

    2) OAuth2 Mode: Like the name suggests, this mode enables OAuth2 for authentication.

    +
  • +
+
+
+

Both modes can be enabled at the same time, but at least one of them must be enabled.

+
+
+

When running SecHub Server, Classic Mode is enabled. This means that you can use Basic Auth to authenticate yourself +against the API. Your credentials are provided when starting up the server. You don’t have to configure anything else +when running this mode only.

+
+
+

If you want to test OAuth2 integration with IDPs (Identity Providers) like Keycloak, you can do so like this:

+
+
+
+
sechub:
+  security:
+    server:
+      modes:
+        - oauth2
+      oauth2:
+        mode: jwt
+        jwt:
+          jwk-set-uri: <jwk-set-uri-of-your-idp>
+
+
+
+

Note that above configuration assumes that your IDP is configured to work with JWT tokens. This is the standard use case +for most applications, but SecHub also supports a different type of token, namely Opaque Tokens. If you want to use Opaque +Tokens, you have to configure the mode to opaque-token instead of jwt:

+
+
+
+
sechub:
+  security:
+    server:
+      modes:
+        - oauth2
+      oauth2:
+        mode: opaque-token
+        opaque-token:
+          introspection-uri: <introspection-uri-of-your-idp>
+          client-id: <client-id>
+          client-secret: <client-secret>
+
+
+
+

We recommend Keycloak as an IDP for testing purposes. It is easy to set up and provides a lot of features for free. +But you are free to use any other IDP you like.

+
+
+
+

6.2.3. Certificates

For development gradle task ensureLocalhostCertificate in sechub-server will automatically generate a localhost server certificate. For details look into task and called bash script.

@@ -5173,12 +5422,79 @@
7.8.4.5. DB integration tests
7.8.4.6. Integration tests

In project sechub-integrationtest full integration tests are settled. -The project needs a running server in profile integrationtest. -For more details about those tests read the README.md file inside -projects root folder.

+The project needs a running server in profile integrationtest.

-
7.8.4.6.1. Integration tests using RestAPI
+
7.8.4.6.1. Example for an integration test
+
+
+
import static com.mercedesbenz.sechub.integrationtest.api.TestAPI.*;
+
+import org.junit.jupiter.api.Test;
+import com.mercedesbenz.sechub.integrationtest.api.IntegrationTestExtension;
+import com.mercedesbenz.sechub.integrationtest.api.WithTestScenario;
+
+
+@ExtendWith(IntegrationTestExtension.class)(1)
+@WithTestScenario(Scenario6.class)(2)
+public class ExampleIntTest {
+
+        @Test
+        void example_doing_some_test_stuff(){
+           // now use the TestAPI methods to test your wanted stuff
+        }
+}
+
+
+
+
+ + + + + + + + +
1Annotation used to mark this test as a SecHub Integration Test
2Annotation used to select the scenario to use inside the integration test. +(Scenarios are predefined and use an automated setup with test data which +will be always cleaned up and provided automatically)
+
+
+ + + + + +
+ + +
+

For more details about those tests inspect existing tests. You can also read the README.md file inside +projects root folder.

+
+
+
+
+ + + + + +
+ + +
+

There are old existing integration tests which are not using the Junit5 extension IntegrationTestExtension +but the old Junit4 rule IntegrationTestSetup. Those old junit4 tests shall be replaced step by step (in future with +the new Junit5 way).

+
+
+

New integration tests shall always use the new Junit5 annotations. +New assert methods created for TestAPI shall use Junit5 only as well.

+
+
+

These tests will be called ${name}Scenario${n}IntTest.java

@@ -5186,8 +5502,7 @@
7.8.4.6.1. Integration tests using Rest
7.8.4.6.2. Integration tests using SecHubClient
-

Some integration tests do need a build SecHub client and execute the client. -These tests will be called ${name}Scenario${n}SecHubClientIntTest.java

+

Some integration tests do need a build SecHub client and execute the client.

@@ -5509,7 +5824,7 @@
8.2.4.1. Domain messaging over
-Sequence diagram of messaging +Sequence diagram of messaging
@@ -8378,9 +8693,6 @@
10.19.1.4. User self service
@@ -9453,17 +9771,17 @@

10.19.12. UC_011-User starts scan by client

- + - + - + - + @@ -9861,18 +10179,18 @@

10.19.17. UC_016-Admin unassigns user from proje

- - + + - + - - + + - + @@ -10835,16 +11153,16 @@

10.19.31. UC_030-Admin disables job processing i

- + - + @@ -14062,19 +14380,19 @@

10.19.77. UC_076-Admin fetches encryption status

- - + + - + - - + - + +

2

upload sourcecode

upload binaries

SUPERADMIN, USER

2

This step is defined at method uploadSourceCode in class `com.mercedesbenz.sechub.domain.schedule.SchedulerRestController`

This step is defined at method uploadBinaries in class `com.mercedesbenz.sechub.domain.schedule.SchedulerRestController`

2

upload binaries

upload sourcecode

SUPERADMIN, USER

3

This step is defined at method uploadBinaries in class `com.mercedesbenz.sechub.domain.schedule.SchedulerRestController`

This step is defined at method uploadSourceCode in class `com.mercedesbenz.sechub.domain.schedule.SchedulerRestController`

3

2

Unassign user

SUPERADMIN

Update authorization parts

2

The service will remove the user to the project. If users has no longer access to projects ROLE_USER will be removed

-

This step is defined at method unassignUserFromProject in class `com.mercedesbenz.sechub.domain.administration.project.ProjectUnassignUserService`

This step is defined at method revokeUserAccessFromProject in class `com.mercedesbenz.sechub.domain.scan.access.ScanRevokeUserAccessFromProjectService`

2

Update authorization parts

Unassign user

SUPERADMIN

4

This step is defined at method revokeUserAccessFromProject in class `com.mercedesbenz.sechub.domain.scan.access.ScanRevokeUserAccessFromProjectService`

The service will remove the user to the project. If users has no longer access to projects ROLE_USER will be removed

+

This step is defined at method unassignUserFromProject in class `com.mercedesbenz.sechub.domain.administration.project.ProjectUnassignUserService`

4

Service call

SUPERADMIN

2

Sends request to scheduler to send updates about current status.

-

This step is defined at method triggerSchedulerStatusRefresh in class `com.mercedesbenz.sechub.domain.administration.scheduler.TriggerSchedulerStatusRefreshService`

Sends request to scheduler domain to disable scheduler job processing

+

This step is defined at method disableJobProcessing in class `com.mercedesbenz.sechub.domain.administration.scheduler.SwitchSchedulerJobProcessingService`

2

Service call

SUPERADMIN

3

Sends request to scheduler domain to disable scheduler job processing

-

This step is defined at method disableJobProcessing in class `com.mercedesbenz.sechub.domain.administration.scheduler.SwitchSchedulerJobProcessingService`

Sends request to scheduler to send updates about current status.

+

This step is defined at method triggerSchedulerStatusRefresh in class `com.mercedesbenz.sechub.domain.administration.scheduler.TriggerSchedulerStatusRefreshService`

3

1

Service call

Rest call

SUPERADMIN

1

Services collects encryption status from domains via event bus

-

This step is defined at method fetchStatus in class `com.mercedesbenz.sechub.domain.administration.encryption.AdministrationEncryptionStatusService`

Admin fetches encryption status from domains via REST

+

This step is defined at method fetchEncryptionStatus in class `com.mercedesbenz.sechub.domain.administration.encryption.EncryptionAdministrationRestController`

1

Rest call

SUPERADMIN

Service call

Admin fetches encryption status from domains via REST

-

This step is defined at method fetchEncryptionStatus in class `com.mercedesbenz.sechub.domain.administration.encryption.EncryptionAdministrationRestController`

Services collects encryption status from domains via event bus

+

This step is defined at method fetchStatus in class `com.mercedesbenz.sechub.domain.administration.encryption.AdministrationEncryptionStatusService`

@@ -15188,38 +15506,83 @@

10.19.96. UC_095-User fetches his user detailsREST API documentation for usecase UC_095-User fetches his user details

-
-
-

10.20. Domain driven design

-

10.20.1. Domain Message Bus

+

10.19.97. UC_096-Admin executes templates healthcheck or updates a template

-

The domain message bus represents an abstraction layer for communication between different domains. -It shall be the ONLY way to communicate between the different domains. -Purpose: In future maybe the domains will be separate spring boot applications and be also -autark deployable!

+

An administrator creates or updates a template

-

Currently SecHub contains of ONE deployable spring boot application. -But to prevent the "Big ball of mud" this abstraction must be always used when -one domain calls another one.

-
+

Technical information

-
-

10.20.2. Domain communication and actions

-
-
-Domainsextern.clientssechub.domain.schedulesechub.domain.scansechub.adapterextern.security.productsStartSecHubScanSchedulerRestControllerProductExecutor(s)SecHubJobBatchTriggerServicefetchesnextSecHubJobCRONbasedstartsnewbatchjobSecHubJobUUIDBatchJobBuildercreatesBatchJob (Spring)dependingonJobconfigurationBatchJobSecHubJobReportBuilderServiceexecutesupdatestatesProductSecHubJobStatusServiceCheckSecHubScanStateSecHubJobUUIDGetSecHubScanReportSecHubJobUUIDexecutesScanServiceProductExecutionStoreServiceProductAdaptercallsProductResultReportusesSecHubResultServicecallssavesreadsreportproductresultsomecouldreadreadsSchedulerServicecreates +schedulesaSecHubJobReportRestControllerReportProviderServicereadsTrafficLightCalculatoruses +
+

You will find relevant code parts by searching for references of @com.mercedesbenz.sechub.sharedkernel.usecases.admin.config.UseCaseAdminExecutesTemplatesHealthcheck

-
Figure 23. Domain communication and actions
+
+

Steps

-
-
10.20.2.1. Overview
+ +++++++ + + + + + + + + + + + + + + + + + + +
NrTitleRole(s)NextDescription

1

REST API call to create or update template

SUPERADMIN

2

This step is defined at method executeTemplatesHealthcheck in class `com.mercedesbenz.sechub.domain.scan.template.TemplateRestController`

+ +
+
+
+

10.20. Domain driven design

+
+

10.20.1. Domain Message Bus

+
+

The domain message bus represents an abstraction layer for communication between different domains. +It shall be the ONLY way to communicate between the different domains. +Purpose: In future maybe the domains will be separate spring boot applications and be also +autark deployable!

+
+
+

Currently SecHub contains of ONE deployable spring boot application. +But to prevent the "Big ball of mud" this abstraction must be always used when +one domain calls another one.

+
+
+
+

10.20.2. Domain communication and actions

+
+
+Domainsextern.clientssechub.domain.schedulesechub.domain.scansechub.adapterextern.security.productsStartSecHubScanSchedulerRestControllerProductExecutor(s)SecHubJobBatchTriggerServicefetchesnextSecHubJobCRONbasedstartsnewbatchjobSecHubJobUUIDBatchJobBuildercreatesBatchJob (Spring)dependingonJobconfigurationBatchJobSecHubJobReportBuilderServiceexecutesupdatestatesProductSecHubJobStatusServiceCheckSecHubScanStateSecHubJobUUIDGetSecHubScanReportSecHubJobUUIDexecutesScanServiceProductExecutionStoreServiceProductAdaptercallsProductResultReportusesSecHubResultServicecallssavesreadsreportproductresultsomecouldreadreadsSchedulerServicecreates +schedulesaSecHubJobReportRestControllerReportProviderServicereadsTrafficLightCalculatoruses +
+
Figure 23. Domain communication and actions
+
+
+
10.20.2.1. Overview
10.20.2.1.1. Diagram
-Sequence diagram of messaging overview +Sequence diagram of messaging overview
@@ -15300,6 +15663,9 @@
-
10.20.2.26. Message REQUEST_JOB_CANCELLATION
+
10.20.2.26. Message REQUEST_FULL_CONFIGURATION_VALIDATION
+
+
+Sequence diagram of messaging REQUEST_FULL_CONFIGURATION_VALIDATION +
+
+
+
+
10.20.2.27. Message REQUEST_JOB_CANCELLATION
Sequence diagram of messaging REQUEST_JOB_CANCELLATION @@ -15777,10 +16157,10 @@
10.20.2.26. Message REQU
-
10.20.2.27. Message REQUEST_JOB_RESTART
+
10.20.2.28. Message REQUEST_JOB_RESTART
-Sequence diagram of messaging REQUEST_JOB_RESTART +Sequence diagram of messaging REQUEST_JOB_RESTART
@@ -15806,7 +16186,7 @@
10.20.2.27. Message REQUEST_J
-
10.20.2.28. Message REQUEST_JOB_RESTART_HARD
+
10.20.2.29. Message REQUEST_JOB_RESTART_HARD
Sequence diagram of messaging REQUEST_JOB_RESTART_HARD @@ -15835,7 +16215,7 @@
10.20.2.28. Message REQU
-
10.20.2.29. Message REQUEST_PURGE_JOB_RESULTS
+
10.20.2.30. Message REQUEST_PURGE_JOB_RESULTS
Sequence diagram of messaging REQUEST_PURGE_JOB_RESULTS @@ -15864,7 +16244,7 @@
10.20.2.29. Message REQ
-
10.20.2.30. Message REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING
+
10.20.2.31. Message REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING
Sequence diagram of messaging REQUEST_SCHEDULER_DISABLE_JOB_PROCESSING @@ -15893,7 +16273,7 @@
10.20.2.
-
10.20.2.31. Message REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING
+
10.20.2.32. Message REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING
Sequence diagram of messaging REQUEST_SCHEDULER_ENABLE_JOB_PROCESSING @@ -15922,7 +16302,7 @@
10.20.2.3
-
10.20.2.32. Message REQUEST_SCHEDULER_JOB_STATUS
+
10.20.2.33. Message REQUEST_SCHEDULER_JOB_STATUS
Sequence diagram of messaging REQUEST_SCHEDULER_JOB_STATUS @@ -15954,7 +16334,7 @@
10.20.2.32. Message
-
10.20.2.33. Message REQUEST_SCHEDULER_STATUS_UPDATE
+
10.20.2.34. Message REQUEST_SCHEDULER_STATUS_UPDATE
Sequence diagram of messaging REQUEST_SCHEDULER_STATUS_UPDATE @@ -15962,7 +16342,7 @@
10.20.2.33. Messa
-
10.20.2.34. Message REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECT
+
10.20.2.35. Message REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECT
Sequence diagram of messaging REQUEST_UNASSIGN_TEMPLATE_FROM_PROJECT @@ -15970,10 +16350,10 @@
10.20.2.34
-
10.20.2.35. Message REQUEST_USER_ROLE_RECALCULATION
+
10.20.2.36. Message REQUEST_USER_ROLE_RECALCULATION
-Sequence diagram of messaging REQUEST_USER_ROLE_RECALCULATION +Sequence diagram of messaging REQUEST_USER_ROLE_RECALCULATION
@@ -16005,7 +16385,7 @@
10.20.2.35. Messa
-
10.20.2.36. Message RESULT_ASSIGN_TEMPLATE_TO_PROJECT
+
10.20.2.37. Message RESULT_ASSIGN_TEMPLATE_TO_PROJECT
Sequence diagram of messaging RESULT_ASSIGN_TEMPLATE_TO_PROJECT @@ -16013,7 +16393,7 @@
10.20.2.36. Mes
-
10.20.2.37. Message RESULT_ENCRYPTION_STATUS_SCHEDULE_DOMAIN
+
10.20.2.38. Message RESULT_ENCRYPTION_STATUS_SCHEDULE_DOMAIN
Sequence diagram of messaging RESULT_ENCRYPTION_STATUS_SCHEDULE_DOMAIN @@ -16021,7 +16401,15 @@
10.20.2.
-
10.20.2.38. Message RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT
+
10.20.2.39. Message RESULT_FULL_CONFIGURATION_VALIDATION
+
+
+Sequence diagram of messaging RESULT_FULL_CONFIGURATION_VALIDATION +
+
+
+
+
10.20.2.40. Message RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT
Sequence diagram of messaging RESULT_UNASSIGN_TEMPLATE_FROM_PROJECT @@ -16029,7 +16417,7 @@
10.20.2.38.
-
10.20.2.39. Message SCAN_DONE
+
10.20.2.41. Message SCAN_DONE
Sequence diagram of messaging SCAN_DONE @@ -16037,7 +16425,7 @@
10.20.2.39. Message SCAN_DONE
-
10.20.2.40. Message SCAN_FAILED
+
10.20.2.42. Message SCAN_FAILED
Sequence diagram of messaging SCAN_FAILED @@ -16045,7 +16433,7 @@
10.20.2.40. Message SCAN_FAILED
-
10.20.2.41. Message SCAN_SUSPENDED
+
10.20.2.43. Message SCAN_SUSPENDED
Sequence diagram of messaging SCAN_SUSPENDED @@ -16053,7 +16441,7 @@
10.20.2.41. Message SCAN_SUSPENDED
-
10.20.2.42. Message SCHEDULER_JOB_PROCESSING_DISABLED
+
10.20.2.44. Message SCHEDULER_JOB_PROCESSING_DISABLED
Sequence diagram of messaging SCHEDULER_JOB_PROCESSING_DISABLED @@ -16082,7 +16470,7 @@
10.20.2.42. Mes
-
10.20.2.43. Message SCHEDULER_JOB_PROCESSING_ENABLED
+
10.20.2.45. Message SCHEDULER_JOB_PROCESSING_ENABLED
Sequence diagram of messaging SCHEDULER_JOB_PROCESSING_ENABLED @@ -16111,7 +16499,7 @@
10.20.2.43. Mess
-
10.20.2.44. Message SCHEDULER_JOB_STATUS
+
10.20.2.46. Message SCHEDULER_JOB_STATUS
Sequence diagram of messaging SCHEDULER_JOB_STATUS @@ -16119,7 +16507,7 @@
10.20.2.44. Message SCHEDULE
-
10.20.2.45. Message SCHEDULER_STARTED
+
10.20.2.47. Message SCHEDULER_STARTED
Sequence diagram of messaging SCHEDULER_STARTED @@ -16127,7 +16515,7 @@
10.20.2.45. Message SCHEDULER_S
-
10.20.2.46. Message SCHEDULER_STATUS_UPDATE
+
10.20.2.48. Message SCHEDULER_STATUS_UPDATE
Sequence diagram of messaging SCHEDULER_STATUS_UPDATE @@ -16135,7 +16523,7 @@
10.20.2.46. Message SCHED
-
10.20.2.47. Message SCHEDULE_ENCRYPTION_POOL_INITIALIZED
+
10.20.2.49. Message SCHEDULE_ENCRYPTION_POOL_INITIALIZED
Sequence diagram of messaging SCHEDULE_ENCRYPTION_POOL_INITIALIZED @@ -16143,7 +16531,7 @@
10.20.2.47.
-
10.20.2.48. Message SOURCE_UPLOAD_DONE
+
10.20.2.50. Message SOURCE_UPLOAD_DONE
Sequence diagram of messaging SOURCE_UPLOAD_DONE @@ -16151,7 +16539,7 @@
10.20.2.48. Message SOURCE_UPL
-
10.20.2.49. Message START_ENCRYPTION_ROTATION
+
10.20.2.51. Message START_ENCRYPTION_ROTATION
Sequence diagram of messaging START_ENCRYPTION_ROTATION @@ -16159,7 +16547,7 @@
10.20.2.49. Message STA
-
10.20.2.50. Message START_SCAN
+
10.20.2.52. Message START_SCAN
Sequence diagram of messaging START_SCAN @@ -16191,7 +16579,15 @@
10.20.2.50. Message START_SCAN
-
10.20.2.51. Message UNSUPPORTED_OPERATION
+
10.20.2.53. Message TEMPLATE_DELETED
+
+
+Sequence diagram of messaging TEMPLATE_DELETED +
+
+
+
+
10.20.2.54. Message UNSUPPORTED_OPERATION
Sequence diagram of messaging UNSUPPORTED_OPERATION @@ -16199,7 +16595,7 @@
10.20.2.51. Message UNSUPPO
-
10.20.2.52. Message USER_ADDED_TO_PROJECT
+
10.20.2.55. Message USER_ADDED_TO_PROJECT
Sequence diagram of messaging USER_ADDED_TO_PROJECT @@ -16228,15 +16624,15 @@
10.20.2.52. Message USER_AD
-
10.20.2.53. Message USER_API_TOKEN_CHANGED
+
10.20.2.56. Message USER_API_TOKEN_CHANGED
-Sequence diagram of messaging USER_API_TOKEN_CHANGED +Sequence diagram of messaging USER_API_TOKEN_CHANGED
-
10.20.2.54. Message USER_BECOMES_SUPERADMIN
+
10.20.2.57. Message USER_BECOMES_SUPERADMIN
Sequence diagram of messaging USER_BECOMES_SUPERADMIN @@ -16244,10 +16640,10 @@
10.20.2.54. Message USER_
-
10.20.2.55. Message USER_CREATED
+
10.20.2.58. Message USER_CREATED
-Sequence diagram of messaging USER_CREATED +Sequence diagram of messaging USER_CREATED
@@ -16273,7 +16669,7 @@
10.20.2.55. Message USER_CREATED
-
10.20.2.56. Message USER_DELETED
+
10.20.2.59. Message USER_DELETED
Sequence diagram of messaging USER_DELETED @@ -16281,7 +16677,7 @@
10.20.2.56. Message USER_DELETED
-
10.20.2.57. Message USER_EMAIL_ADDRESS_CHANGED
+
10.20.2.60. Message USER_EMAIL_ADDRESS_CHANGED
Sequence diagram of messaging USER_EMAIL_ADDRESS_CHANGED @@ -16289,10 +16685,10 @@
10.20.2.57. Message US
-
10.20.2.58. Message USER_NEW_API_TOKEN_REQUESTED
+
10.20.2.61. Message USER_NEW_API_TOKEN_REQUESTED
-Sequence diagram of messaging USER_NEW_API_TOKEN_REQUESTED +Sequence diagram of messaging USER_NEW_API_TOKEN_REQUESTED
@@ -16318,15 +16714,15 @@
10.20.2.58. Message
-
10.20.2.59. Message USER_NO_LONGER_SUPERADMIN
+
10.20.2.62. Message USER_NO_LONGER_SUPERADMIN
-Sequence diagram of messaging USER_NO_LONGER_SUPERADMIN +Sequence diagram of messaging USER_NO_LONGER_SUPERADMIN
-
10.20.2.60. Message USER_REMOVED_FROM_PROJECT
+
10.20.2.63. Message USER_REMOVED_FROM_PROJECT
Sequence diagram of messaging USER_REMOVED_FROM_PROJECT @@ -16355,7 +16751,7 @@
10.20.2.60. Message USE
-
10.20.2.61. Message USER_ROLES_CHANGED
+
10.20.2.64. Message USER_ROLES_CHANGED
Sequence diagram of messaging USER_ROLES_CHANGED @@ -16390,7 +16786,7 @@
10.20.2.61. Message USER_ROLES
-
10.20.2.62. Message USER_SIGNUP_REQUESTED
+
10.20.2.65. Message USER_SIGNUP_REQUESTED
-
$ curl 'https://sechub.example.com/api/admin/scan/download/5433eb9c-496c-4dbb-81cb-a31b2ebffc8d' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/admin/scan/download/2ae31598-80f9-4a94-bc4c-7fca67cb5688' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -19945,7 +20344,7 @@

12.1.20. Admin shows scan logs for pr

-
[{"sechubJobUUID":"30fb86d6-6ff4-4e21-86ba-2ebb07c6bad8","executedBy":"spartakus","started":"2025-01-21T14:30:30.35686563","ended":"2025-01-22T14:30:30.356882732","status":"OK"}]
+
[{"sechubJobUUID":"59663cb6-f8e8-434e-acb4-b36ed906593b","executedBy":"spartakus","started":"2025-02-13T15:18:14.256960928","ended":"2025-02-14T15:18:14.256985263","status":"OK"}]
@@ -20458,81 +20857,7 @@

12.1.24. get assigned project data

- - -
-

Definition

-
- - ---- - - - - - - - - - - - - - - - - - - - - -
Table 72. General request information
Value

Path

/api/anonymous/apitoken/{oneTimeToken}

Method

GET

Status code

200 OK

-
-

Path parameters

-
- - ---- - - - - - - - - - - - - -
Table 73. https://localhost:8081/api/anonymous/apitoken/{oneTimeToken}
ParameterDescription

oneTimeToken

A one time token the user has got by a previous mail from sechub server

-
-

Example

-
-
-

Curl request

-
-
-
-
$ curl 'https://sechub.example.com/api/anonymous/apitoken/oneTimeToken1' -i -X GET \
-    -H 'Content-Type: application/json;charset=UTF-8'
-
-
-
-

Response body
-(empty)

-
-
-
-

12.1.26. User fetches his user details

+

12.1.25. User fetches his user details

@@ -20540,7 +20865,7 @@

12.1.26. User fetches his user detailsDefinition

- +@@ -20583,17 +20908,17 @@

12.1.26. User fetches his user details
-

12.1.27. User creates a new sechub job

+

12.1.26. User creates a new sechub job

-
12.1.27.1. Code Scan variant
+
12.1.26.1. Code Scan variant

Definition

Table 74. General request informationTable 72. General request information
- +@@ -20623,7 +20948,7 @@
12.1.27.1. Code Scan variant

Path parameters

Table 75. General request informationTable 73. General request information
- +@@ -20742,17 +21067,17 @@
12.1.27.1. Code Scan variant
-
{"jobId":"0c69eb38-f06d-4b03-91f3-19edf447b7a8"}
+
{"jobId":"f2d26de6-937b-489e-b852-b2a75366feae"}
-
12.1.27.2. Code Scan using data section variant
+
12.1.26.2. Code Scan using data section variant

Definition

Table 76. https://localhost:8081/api/project/{projectId}/jobTable 74. https://localhost:8081/api/project/{projectId}/job
- +@@ -20782,7 +21107,7 @@
12.1.27.2. Code S

Path parameters

Table 77. General request informationTable 75. General request information
- +@@ -20921,17 +21246,17 @@
12.1.27.2. Code S
-
{"jobId":"18a5e6b0-bf35-465f-bc7d-0a64fd061301"}
+
{"jobId":"991860e6-c439-440f-a6d1-dfcdee48b495"}
-
12.1.27.3. Secret scan variant
+
12.1.26.3. Secret scan variant

Definition

Table 78. https://localhost:8081/api/project/{projectId}/jobTable 76. https://localhost:8081/api/project/{projectId}/job
- +@@ -20961,7 +21286,7 @@
12.1.27.3. Secret scan variant
Path parameters

Table 79. General request informationTable 77. General request information
- +@@ -21080,17 +21405,17 @@
12.1.27.3. Secret scan variant
-
{"jobId":"737b4156-e0cd-4e32-a30a-648ed81c62d8"}
+
{"jobId":"2150e003-abf5-4cca-bccd-d545fc0cbaf6"}
-
12.1.27.4. License scan variant
+
12.1.26.4. License scan variant

Definition

Table 80. https://localhost:8081/api/project/{projectId}/jobTable 78. https://localhost:8081/api/project/{projectId}/job
- +@@ -21120,7 +21445,7 @@
12.1.27.4. License scan variantPath parameters

Table 81. General request informationTable 79. General request information
- +@@ -21239,17 +21564,17 @@
12.1.27.4. License scan variant
-
{"jobId":"9b9ea17d-2a50-4ce6-8db8-881f155c12c6"}
+
{"jobId":"a969be5c-458b-432f-8c04-678bee6d7f7e"}
-
12.1.27.5. Infrastructure scan variant
+
12.1.26.5. Infrastructure scan variant

Definition

Table 82. https://localhost:8081/api/project/{projectId}/jobTable 80. https://localhost:8081/api/project/{projectId}/job
- +@@ -21279,7 +21604,7 @@
12.1.27.5. Infrastructure

Path parameters

Table 83. General request informationTable 81. General request information
- +@@ -21393,17 +21718,17 @@
12.1.27.5. Infrastructure
-
{"jobId":"b8a2c6d0-8c8e-4f96-a88e-ee2f655e40a1"}
+
{"jobId":"0d6120f9-c72a-4bc4-b664-f2b2bfdbdf6e"}
-
12.1.27.6. Web scan anonymous variant
+
12.1.26.6. Web scan anonymous variant

Definition

Table 84. https://localhost:8081/api/project/{projectId}/jobTable 82. https://localhost:8081/api/project/{projectId}/job
- +@@ -21433,7 +21758,7 @@
12.1.27.6. Web scan anonymo

Path parameters

Table 85. General request informationTable 83. General request information
- +@@ -21562,17 +21887,17 @@
12.1.27.6. Web scan anonymo
-
{"jobId":"b09b2fe6-110a-42b4-b17f-67b8405d6f59"}
+
{"jobId":"6c038077-4e14-4be4-a02f-c2607f873b9e"}
-
12.1.27.7. Web scan with api definition variant
+
12.1.26.7. Web scan with api definition variant

Definition

Table 86. https://localhost:8081/api/project/{projectId}/jobTable 84. https://localhost:8081/api/project/{projectId}/job
- +@@ -21602,7 +21927,7 @@
12.1.27.7. Web sc

Path parameters

Table 87. General request informationTable 85. General request information
- +@@ -21726,17 +22051,17 @@
12.1.27.7. Web sc
-
{"jobId":"734c19f5-9867-4b54-86d1-a10b3de2ecf2"}
+
{"jobId":"09dfdb53-18b5-4cf0-9d70-61c20fd5b1e3"}
-
12.1.27.8. Web scan with client certificate definition variant
+
12.1.26.8. Web scan with client certificate definition variant

Definition

Table 88. https://localhost:8081/api/project/{projectId}/jobTable 86. https://localhost:8081/api/project/{projectId}/job
- +@@ -21766,7 +22091,7 @@
12

Path parameters

Table 89. General request informationTable 87. General request information
- +@@ -21885,17 +22210,17 @@
12
-
{"jobId":"d3f453bf-63f3-449a-98ca-640558b8cfad"}
+
{"jobId":"828aa507-caf0-44f6-8475-46160fd17f2b"}
-
12.1.27.9. Web Scan login basic variant
+
12.1.26.9. Web Scan login basic variant

Definition

Table 90. https://localhost:8081/api/project/{projectId}/jobTable 88. https://localhost:8081/api/project/{projectId}/job
- +@@ -21925,7 +22250,7 @@
12.1.27.9. Web Scan login

Path parameters

Table 91. General request informationTable 89. General request information
- +@@ -22059,17 +22384,17 @@
12.1.27.9. Web Scan login
-
{"jobId":"7ec0d96f-94e6-4e1e-9ede-9cee10b6b744"}
+
{"jobId":"a3899ab3-7b30-40ab-a06e-60a2ed7dd09e"}
-
12.1.27.10. Web Scan login form scripted variant
+
12.1.26.10. Web Scan login form scripted variant

Definition

Table 92. https://localhost:8081/api/project/{projectId}/jobTable 90. https://localhost:8081/api/project/{projectId}/job
- +@@ -22099,7 +22424,7 @@
12.1.27.10. Web S

Path parameters

Table 93. General request informationTable 91. General request information
- +@@ -22283,17 +22608,17 @@
12.1.27.10. Web S
-
{"jobId":"efa17693-a94a-403b-a7b3-271ee3da3555"}
+
{"jobId":"7d12521b-17c7-48d6-8c1d-cc2eb5f64d19"}
-
12.1.27.11. Web Scan headers variant
+
12.1.26.11. Web Scan headers variant

Definition

Table 94. https://localhost:8081/api/project/{projectId}/jobTable 92. https://localhost:8081/api/project/{projectId}/job
- +@@ -22323,7 +22648,7 @@
12.1.27.11. Web Scan headers

Path parameters

Table 95. General request informationTable 93. General request information
- +@@ -22447,13 +22772,13 @@
12.1.27.11. Web Scan headers
-
{"jobId":"9ffdce97-e0e2-40b8-88f5-afd034ec1f2c"}
+
{"jobId":"d13138db-8a07-4ab8-9568-3191522cf222"}
-

12.1.28. User uploads source code

+

12.1.27. User uploads source code

REST API for usecase UC_006-User uploads source code

@@ -22461,7 +22786,7 @@

12.1.28. User uploads source code

Definition

Table 96. https://localhost:8081/api/project/{projectId}/jobTable 94. https://localhost:8081/api/project/{projectId}/job
- +@@ -22491,7 +22816,7 @@

12.1.28. User uploads source code

Path parameters

Table 97. General request informationTable 95. General request information
- +@@ -22557,7 +22882,7 @@

12.1.28. User uploads source code

-
$ curl 'https://sechub.example.com/api/project/project1/job/ec38ec6d-ed8f-415e-b3f9-ab8502abd837/sourcecode?checkSum=checkSumValue' -i -X POST \
+
$ curl 'https://sechub.example.com/api/project/project1/job/19e08e08-0de9-4351-aa26-d51971c9f8f7/sourcecode?checkSum=checkSumValue' -i -X POST \
     -H 'Content-Type: multipart/form-data;charset=UTF-8' \
     -F 'file=PK  
       �<M                       test1.txtPK  ?
@@ -22571,7 +22896,7 @@ 

12.1.28. User uploads source code

-

12.1.29. User approves sechub job

+

12.1.28. User approves sechub job

REST API for usecase UC_007-User approves sechub job

@@ -22579,7 +22904,7 @@

12.1.29. User approves sechub job

Definition

Table 98. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/sourcecodeTable 96. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/sourcecode
- +@@ -22609,7 +22934,7 @@

12.1.29. User approves sechub job

Path parameters

Table 99. General request informationTable 97. General request information
- +@@ -22654,7 +22979,7 @@

12.1.29. User approves sechub job

-
$ curl 'https://sechub.example.com/api/project/project1/job/0844f054-060d-43a9-8354-faad01a48bb9/approve' -i -X PUT \
+
$ curl 'https://sechub.example.com/api/project/project1/job/81ec402b-bed4-44b2-81b5-a7ee97844471/approve' -i -X PUT \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -22664,7 +22989,7 @@

12.1.29. User approves sechub job

-

12.1.30. User checks sechub job state

+

12.1.29. User checks sechub job state

@@ -22672,7 +22997,7 @@

12.1.30. User checks sechub job state

Definition

Table 100. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/approveTable 98. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/approve
- +@@ -22702,7 +23027,7 @@

12.1.30. User checks sechub job state

Path parameters

Table 101. General request informationTable 99. General request information
- +@@ -22806,7 +23131,7 @@

12.1.30. User checks sechub job state

-
$ curl 'https://sechub.example.com/api/project/project1/job/712f73ae-9607-417e-af5a-09a8bb2c305b' -i -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/job/4b62b1e8-bbff-431e-98a7-47291203142c' -i -X GET \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -22815,22 +23140,22 @@

12.1.30. User checks sechub job state

-
{"jobUUID":"712f73ae-9607-417e-af5a-09a8bb2c305b","owner":"CREATOR1","created":"","started":"2025-01-22T14:15:28.733099051","ended":"2025-01-22T14:30:28.733126512","state":"ENDED","result":"OK","trafficLight":"GREEN"}
+
{"jobUUID":"4b62b1e8-bbff-431e-98a7-47291203142c","owner":"CREATOR1","created":"","started":"2025-02-14T15:03:12.698374978","ended":"2025-02-14T15:18:12.698403","state":"ENDED","result":"OK","trafficLight":"GREEN"}
-

12.1.31. User downloads sechub job report

+

12.1.30. User downloads sechub job report

-
12.1.31.1. JSON variant
+
12.1.30.1. JSON variant

Definition

Table 102. https://localhost:8081/api/project/{projectId}/job/{jobUUID}Table 100. https://localhost:8081/api/project/{projectId}/job/{jobUUID}
- +@@ -22860,7 +23185,7 @@
12.1.31.1. JSON variant

Path parameters

Table 103. General request informationTable 101. General request information
- +@@ -22890,19 +23215,19 @@
12.1.31.1. JSON variant
-
$ curl 'https://sechub.example.com/api/project/project1/report/e358277d-02ca-4c06-919c-cb2d2e1840f8' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/report/6506d073-add3-4174-9244-319007d9123b' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -H 'Accept: application/json'
-
12.1.31.2. HTML variant
+
12.1.30.2. HTML variant

Definition

Table 104. https://localhost:8081/api/project/{projectId}/report/{jobUUID}Table 102. https://localhost:8081/api/project/{projectId}/report/{jobUUID}
- +@@ -22932,7 +23257,7 @@
12.1.31.2. HTML variant

Path parameters

Table 105. General request informationTable 103. General request information
- +@@ -22962,7 +23287,7 @@
12.1.31.2. HTML variant
-
$ curl 'https://sechub.example.com/api/project/project1/report/7ebcb0c0-5e5b-4d1d-aaf7-584343ef35e1' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/report/c416b85d-7c98-439c-95f2-086e849de37e' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -H 'Accept: application/xhtml+xml'
@@ -22970,7 +23295,7 @@
12.1.31.2. HTML variant
-

12.1.32. User marks false positives

+

12.1.31. User marks false positives

@@ -22978,7 +23303,7 @@

12.1.32. User marks false positives

Definition

Table 106. https://localhost:8081/api/project/{projectId}/report/{jobUUID}Table 104. https://localhost:8081/api/project/{projectId}/report/{jobUUID}
- +@@ -23008,7 +23333,7 @@

12.1.32. User marks false positives

Path parameters

Table 107. General request informationTable 105. General request information
- +@@ -23144,7 +23469,7 @@

12.1.32. User marks false positives

-

12.1.33. User unmarks existing false positive definitons

+

12.1.32. User unmarks existing false positive definitons

@@ -23152,7 +23477,7 @@

12.1.33. User unmarks e

Definition

Table 108. https://localhost:8081/api/project/{projectId}/false-positivesTable 106. https://localhost:8081/api/project/{projectId}/false-positives
- +@@ -23182,7 +23507,7 @@

12.1.33. User unmarks e

Path parameters

Table 109. General request informationTable 107. General request information
- +@@ -23240,7 +23565,7 @@

12.1.33. User unmarks e
-

12.1.34. User fetches false positive configuration of project

+

12.1.33. User fetches false positive configuration of project

@@ -23248,7 +23573,7 @@

12.1.34. User fetc

Definition

Table 110. https://localhost:8081/api/project/{projectId}/false-positive/{jobUUID}/{findingId}Table 108. https://localhost:8081/api/project/{projectId}/false-positive/{jobUUID}/{findingId}
- +@@ -23278,7 +23603,7 @@

12.1.34. User fetc

Path parameters

Table 111. General request informationTable 109. General request information
- +@@ -23501,7 +23826,7 @@

12.1.34. User fetc
-

12.1.35. User uploads binaries

+

12.1.34. User uploads binaries

REST API for usecase UC_069-User uploads binaries

@@ -23509,7 +23834,7 @@

12.1.35. User uploads binaries

Definition

Table 112. https://localhost:8081/api/project/{projectId}/false-positivesTable 110. https://localhost:8081/api/project/{projectId}/false-positives
- +@@ -23539,7 +23864,7 @@

12.1.35. User uploads binaries

Path parameters

Table 113. General request informationTable 111. General request information
- +@@ -23590,7 +23915,7 @@

12.1.35. User uploads binaries

-
$ curl 'https://sechub.example.com/api/project/project1/job/17e49206-f9cc-4e03-93d6-6b49c0c1c163/binaries' -i -X POST \
+
$ curl 'https://sechub.example.com/api/project/project1/job/d5c6f643-7cdf-4df1-bf73-a9e92c940c64/binaries' -i -X POST \
     -H 'Content-Type: multipart/form-data;charset=UTF-8' \
     -H 'x-file-size: 10240' \
     -F 'file=test1.txt                                                                                           0000664 0001750 0001750 00000000000 13353454574 012170  0                                                                                                    ustar   albert                          albert                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ' \
@@ -23603,7 +23928,7 @@ 

12.1.35. User uploads binaries

-

12.1.36. User downloads job report in SPDX format

+

12.1.35. User downloads job report in SPDX format

@@ -23611,7 +23936,7 @@

12.1.36. User downloads job re

Definition

Table 114. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/binariesTable 112. https://localhost:8081/api/project/{projectId}/job/{jobUUID}/binaries
- +@@ -23641,7 +23966,7 @@

12.1.36. User downloads job re

Path parameters

Table 115. General request informationTable 113. General request information
- +@@ -23671,14 +23996,14 @@

12.1.36. User downloads job re
-
$ curl 'https://sechub.example.com/api/project/project1/report/spdx/051bce52-c6de-4629-b8d0-b3266b6c70e9' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/project/project1/report/spdx/0ac3edf3-373b-4c82-986f-3ba87a3f8a14' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -H 'Accept: application/json'
-

12.1.37. User unmarks existing false positive project data definitons

+

12.1.36. User unmarks existing false positive project data definitons

@@ -23686,7 +24011,7 @@

12.1.37. U

Definition

Table 116. https://localhost:8081/api/project/{projectId}/report/spdx/{jobUUID}Table 114. https://localhost:8081/api/project/{projectId}/report/spdx/{jobUUID}
- +@@ -23716,7 +24041,7 @@

12.1.37. U

Path parameters

Table 117. General request informationTable 115. General request information
- +@@ -23770,7 +24095,7 @@

12.1.37. U
-

12.1.38. User self registration

+

12.1.37. User self registration

REST API for usecase UC_001-User self registration

@@ -23778,7 +24103,7 @@

12.1.38. User self registration

Definition

Table 118. https://localhost:8081/api/project/{projectId}/false-positive/project-data/{id}Table 116. https://localhost:8081/api/project/{projectId}/false-positive/project-data/{id}
- +@@ -23857,7 +24182,7 @@

12.1.38. User self registration

-

12.1.39. Admin lists open user signups

+

12.1.38. Admin lists open user signups

@@ -23865,7 +24190,7 @@

12.1.39. Admin lists open user signupsDefinition

Table 119. General request informationTable 117. General request information
- +@@ -23961,7 +24286,7 @@

12.1.39. Admin lists open user signups
-

12.1.40. Admin applies self registration

+

12.1.39. Admin applies self registration

@@ -23969,7 +24294,7 @@

12.1.40. Admin applies self registratio

Definition

Table 120. General request informationTable 118. General request information
- +@@ -23999,7 +24324,7 @@

12.1.40. Admin applies self registratio

Path parameters

Table 121. General request informationTable 119. General request information
- +@@ -24049,6 +24374,80 @@

12.1.40. Admin applies self registratio
+ + +
+

Definition

+
+

Table 122. https://localhost:8081/api/admin/signup/accept/{userId}Table 120. https://localhost:8081/api/admin/signup/accept/{userId}
+ ++++ + + + + + + + + + + + + + + + + + + + + +
Table 121. General request information
Value

Path

/api/anonymous/apitoken/{oneTimeToken}

Method

GET

Status code

200 OK

+
+

Path parameters

+
+ + ++++ + + + + + + + + + + + + +
Table 122. https://localhost:8081/api/anonymous/apitoken/{oneTimeToken}
ParameterDescription

oneTimeToken

A one time token the user has got by a previous mail from sechub server

+
+

Example

+
+
+

Curl request

+
+
+
+
$ curl 'https://sechub.example.com/api/anonymous/apitoken/oneTimeToken1' -i -X GET \
+    -H 'Content-Type: application/json;charset=UTF-8'
+
+
+
+

Response body
+(empty)

+
+
+

12.1.41. Admin deletes user signup

REST API for usecase UC_019-Admin deletes user signup

@@ -24321,7 +24720,7 @@

12.1.43. Admin lists all running jobs

-
[{"jobUUID":"cd9f97f0-2bf5-4370-85a8-b499dc94ce2f","projectId":"project-name","owner":"owner-userid","status":"RUNNING","since":"2025-01-22T14:30:35.21046551"}]
+
[{"jobUUID":"ff2d3321-1604-42ed-9d94-7201d7175f06","projectId":"project-name","owner":"owner-userid","status":"RUNNING","since":"2025-02-14T15:18:18.90559113"}]
@@ -24405,7 +24804,7 @@

12.1.44. Admin cancels a job

-
$ curl 'https://sechub.example.com/api/admin/jobs/cancel/6a645735-00ad-48d0-96b6-f3b83053b9cc' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/admin/jobs/cancel/360965bc-b8e2-4674-b6aa-9dee6be950a5' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -24494,7 +24893,7 @@

12.1.45. Admin restarts a job

-
$ curl 'https://sechub.example.com/api/admin/jobs/restart/05e1441f-4e84-462a-b3d1-a66d5758675f' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/admin/jobs/restart/9d94b454-2a02-4dab-b8bf-e4e29f50db19' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -24583,7 +24982,7 @@

12.1.46. Admin restarts a job (hard)

-
$ curl 'https://sechub.example.com/api/admin/jobs/restart-hard/64c8ae9e-7f2b-4785-8e4e-a8f8032a9495' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/admin/jobs/restart-hard/54f0d06c-39e0-4820-8fd2-2f0723b3b2c7' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -24672,7 +25071,7 @@

12.1.47. User cancels a job

-
$ curl 'https://sechub.example.com/api/management/jobs/8931047f-229f-4aa2-ace7-7113ad1c32e1/cancel' -i -u 'user:secret' -X POST \
+
$ curl 'https://sechub.example.com/api/management/jobs/eebf97c8-4e9c-4c95-a839-1fa6509dcc2d/cancel' -i -u 'user:secret' -X POST \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -25205,7 +25604,7 @@

12.1.52. Admin creates an execu

-
bd2babb2-56de-44e6-8b2c-7c82f78148e5
+
ed3cd7f9-317b-4eb7-9f43-9d8fe0dac5c7
@@ -25289,7 +25688,7 @@

12.1.53. Admin deletes executor co

-
$ curl 'https://sechub.example.com/api/admin/config/executor/2d431a77-0757-4c87-907e-6c068ba3117c' -i -u 'user:secret' -X DELETE \
+
$ curl 'https://sechub.example.com/api/admin/config/executor/814c2b74-9add-4530-8bcf-7a0a86b6fe4e' -i -u 'user:secret' -X DELETE \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -25404,7 +25803,7 @@

12.1.54. Admin fetches execut

-
{"executorConfigurations":[{"uuid":"af4b10d1-3b4a-4c4b-a2d3-fa36959ede19","name":"example configuration","enabled":true}],"type":"executorConfigurationList"}
+
{"executorConfigurations":[{"uuid":"0818c0cd-7a3a-4069-bfcb-7c69df0066db","name":"example configuration","enabled":true}],"type":"executorConfigurationList"}
@@ -25557,7 +25956,7 @@

12.1.55. Admin fetches executor co

-
$ curl 'https://sechub.example.com/api/admin/config/executor/612735cb-e561-433c-9b01-b31512f12008' -i -u 'user:secret' -X GET \
+
$ curl 'https://sechub.example.com/api/admin/config/executor/5b93aa34-f4c3-4a10-aa7a-81d9dcfd119b' -i -u 'user:secret' -X GET \
     -H 'Content-Type: application/json;charset=UTF-8'
@@ -25566,7 +25965,7 @@

12.1.55. Admin fetches executor co

-
{"uuid":"612735cb-e561-433c-9b01-b31512f12008","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value"}]},"executorVersion":1,"enabled":false}
+
{"uuid":"5b93aa34-f4c3-4a10-aa7a-81d9dcfd119b","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value"}]},"executorVersion":1,"enabled":false}
@@ -25714,7 +26113,7 @@

12.1.56. Admin updates execu

-
$ curl 'https://sechub.example.com/api/admin/config/executor/05be7dfd-0586-4b18-af93-acdeb9a6ccec' -i -u 'user:secret' -X PUT \
+
$ curl 'https://sechub.example.com/api/admin/config/executor/96d647a2-08ee-4178-acef-49b672c6b99a' -i -u 'user:secret' -X PUT \
     -H 'Content-Type: application/json;charset=UTF-8' \
     -d '{"name":"New name","productIdentifier":"PDS_CODESCAN","executorVersion":1,"enabled":false,"setup":{"baseURL":"https://productNew.example.com","credentials":{"user":"env:EXAMPLE_NEW_USENAME","password":"env:EXAMPLE_NEW_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]}}'
@@ -26058,7 +26457,7 @@

12.1.59. Admin updates execution profil
$ curl 'https://sechub.example.com/api/admin/config/execution/profile/existing-profile-1' -i -u 'user:secret' -X PUT \
     -H 'Content-Type: application/json;charset=UTF-8' \
-    -d '{"description":"changed description","configurations":[{"uuid":"990093ee-59c8-4e4f-9a0f-4f87d1948ad3","executorVersion":0,"enabled":false,"setup":{"credentials":{},"jobParameters":[]}}],"enabled":true}'
+ -d '{"description":"changed description","configurations":[{"uuid":"eae91c96-040e-47a2-a72b-162019e55c73","executorVersion":0,"enabled":false,"setup":{"credentials":{},"jobParameters":[]}}],"enabled":true}'

@@ -26214,7 +26613,7 @@

12.1.60. Admin fetches execution profil

-
{"description":"a description","enabled":true,"configurations":[{"uuid":"e972869d-29f5-47f3-81ad-2c677a82716d","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]},"executorVersion":1,"enabled":false}],"projectIds":["project-1","project-2"]}
+
{"description":"a description","enabled":true,"configurations":[{"uuid":"c7610b80-ce4a-4308-ad62-b94157386099","name":"New name","productIdentifier":"PDS_CODESCAN","setup":{"baseURL":"https://product.example.com","credentials":{"user":"env:EXAMPLE_USENAME","password":"env:EXAMPLE_PASSWORD"},"jobParameters":[{"key":"example.key1","value":"A value but changed. Remark: the other parameter (example.key2) has been removed by this call"}]},"executorVersion":1,"enabled":false}],"projectIds":["project-1","project-2"]}
@@ -26730,7 +27129,7 @@

12.1.66. Admin creates or updates a

type

String

-

The template type. Must be be defined when a new template is created. An update will ignore changes of this property because the type is immutable! Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@7db2a40a

+

The template type. Must be be defined when a new template is created. An update will ignore changes of this property because the type is immutable! Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@66b6980f

assetId

@@ -26950,7 +27349,7 @@

12.1.68. Admin fetches template

type

String

-

The template type. Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@4dc4dea6

+

The template type. Currently supported types are: [Lcom.mercedesbenz.sechub.commons.model.template.TemplateType;@67e23aae

id

@@ -28585,7 +28984,142 @@

12.1.85. User lists jobs for project

-
{"page":0,"totalPages":1,"content":[{"jobUUID":"58882c0f-31f4-4191-b6ae-a659d387a6e8","executedBy":"User1","created":"2025-01-22T14:13:28.908096865","started":"2025-01-22T14:15:28.908126731","ended":"2025-01-22T14:30:28.908138823","executionState":"ENDED","trafficLight":"GREEN","executionResult":"OK","metaData":{"labels":{"stage":"test"}}}]}
+
{"page":0,"totalPages":1,"content":[{"jobUUID":"60ef92d7-b3c9-43b7-815c-a51585dade60","executedBy":"User1","created":"2025-02-14T15:01:12.869461101","started":"2025-02-14T15:03:12.869489996","ended":"2025-02-14T15:18:12.869501467","executionState":"ENDED","trafficLight":"GREEN","executionResult":"OK","metaData":{"labels":{"stage":"test"}}}]}
+
+
+
+
+

12.1.86. Admin executes templates healthcheck or updates a template

+ +
+

Definition

+
+ + ++++ + + + + + + + + + + + + + + + + + + + + +
Table 195. General request information
Value

Path

/api/admin/templates/healthcheck

Method

GET

Status code

200 OK

+
+

Response fields

+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PathTypeDescription

status

String

Represents overall healthcheck status. Can be one of : [OK, WARNING, ERROR]

entries

Array

A list of healthcheck status entries. Each entry represents a problem or an information.

entries[].type

String

Type of this entry. Can be one of : [INFO, WARNING, ERROR]

entries[].description

String

A description about the the entry

entries[].templateId

String

The template id for the template where the problem/information is related to

entries[].projects

Array

A list of projects which have the template assigned

entries[].executorConfigUUID

String

The uuid of the product executor config where the problem/info is related to (in combination with template)

entries[].profiles

Array

A list of the invovled profiles, means using executor config and being assigned to projects

entries[].hints

Array

A list of hints which gives additinal information. E.g. A disabled executor configuration which leads to problems will lead to a WARNING, but not to an ERROR. In this case a hint 'At least one executor config is not enabled' would be added.

entries[].solution

String

A solution how to fix/resolve the problem

entries[].assetId

String

The asset identifier which is used to locate the file

entries[].fileName

String

The name of the file inside the asset

+
+

Example

+
+
+

Curl request

+
+
+
+
$ curl 'https://sechub.example.com/api/admin/templates/healthcheck' -i -u 'user:secret' -X GET \
+    -H 'Content-Type: application/json;charset=UTF-8'
+
+
+
+

Response body

+
+
+
+
{"status":"WARNING","entries":[{"type":"ERROR","description":"The file 'asset-1/pds-product1-id.zip' does not exist!","templateId":"template-1","projects":["project-1"],"executorConfigUUID":"349ea899-e780-4553-bd50-06c12fe96c9e","profiles":["profile-1"],"hints":["At least one combination of executor and profile is enabled.","At least one profile is enabled.","At least one executor config is enabled."],"solution":"Upload a file 'pds-product1-id.zip' to asset folder 'asset-1'","assetId":"asset-1","fileName":"pds-product1-id.zip"},{"type":"WARNING","description":"The file 'asset-1/pds-product2-id.zip' does not exist!","templateId":"template-1","projects":["project-2"],"executorConfigUUID":"2b25b007-f3d2-4591-ba42-409e19d9a5e8","profiles":["profile-2"],"hints":["At least one profile is enabled.","At least one executor config is not enabled."],"solution":"Upload a file 'pds-product2-id.zip' to asset folder 'asset-1'","assetId":"asset-1","fileName":"pds-product2-id.zip"}]}
@@ -30430,7 +30964,7 @@
16.5.2.2.3. Profiles
diff --git a/docs/latest/sechub-tutorials.html b/docs/latest/sechub-tutorials.html index 676745312..d71b3cec7 100644 --- a/docs/latest/sechub-tutorials.html +++ b/docs/latest/sechub-tutorials.html @@ -531,7 +531,7 @@