commit 195fbcd308e5cc28fb3c10ad62f0f0894f17d923 Author: loveuer Date: Sun Mar 31 20:09:20 2024 +0800 wip: alpha version diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6fdd301 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.idea +.vscode +.DS_Store +.data +*.sqlite \ No newline at end of file diff --git a/deployment/database.dev.yml b/deployment/database.dev.yml new file mode 100644 index 0000000..acab2ee --- /dev/null +++ b/deployment/database.dev.yml @@ -0,0 +1,54 @@ +version: "3.9" + +services: + redis: + image: "repository.umisen.com:5000/external/redis:latest" + container_name: redis + volumes: + - .data/redis:/data + ports: + - "6379:6379" + + pgsql: + image: "repository.umisen.com:5000/external/postgres:latest" + container_name: pgsql + restart: always + environment: + POSTGRES_USER: ult + POSTGRES_PASSWORD: ult@sonar + POSTGRES_DB: ult + PGDATA: /var/lib/postgresql/data + volumes: + - .data/pgsql:/var/lib/postgresql + ports: + - "5432:5432" + + es: + image: "repository.umisen.com:5000/external/es:latest" + container_name: elk_es + restart: always + environment: + - bootstrap.memory_lock=true + - "ES_JAVA_OPTS=-Xms1g -Xmx1g" + - discovery.type=single-node + ulimits: + nproc: 65535 + memlock: + soft: -1 + hard: -1 + volumes: + - ./data/es/data:/data + - ./data/es/logs:/logs + - ./data/es/plugins:/plugins + ports: + - 9200:9200 + + kibana: + image: "repository.umisen.com:5000/external/kibana:latest" + container_name: elk_kibana + restart: always + environment: + ELASTICSEARCH_HOSTS: http://elk_es:9200 + I18N_LOCALE: zh-CN + ports: + - 5601:5601 \ No newline at end of file diff --git a/etc/config.json b/etc/config.json new file mode 100644 index 0000000..3fef1af --- /dev/null +++ b/etc/config.json @@ -0,0 +1,28 @@ +{ + "name": "ult", + "address": "0.0.0.0:80", + "_database": { + "type": "postgresql", + "_type": "mysql", + "host": "127.0.0.1", + "port": 5432, + "db": "ult", + "username": "ult", + "password": "ult@sonar" + }, + "database": { + "type": "sqlite", + "path": "db.sqlite", + "_path": ":memory:" + }, + "_cache": { + "type": "redis", + "host": "127.0.0.1", + "port": 6379, + "username": "", + "password": "" + }, + "cache": { + "type": "memory" + } +} \ No newline at end of file diff --git a/front/.editorconfig b/front/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/front/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/front/.gitignore b/front/.gitignore new file mode 100644 index 0000000..0711527 --- /dev/null +++ b/front/.gitignore @@ -0,0 +1,42 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/front/README.md b/front/README.md new file mode 100644 index 0000000..e660992 --- /dev/null +++ b/front/README.md @@ -0,0 +1,27 @@ +# Front + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.0.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/front/angular.json b/front/angular.json new file mode 100644 index 0000000..806cf0a --- /dev/null +++ b/front/angular.json @@ -0,0 +1,113 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "cli": { + "packageManager": "pnpm", + "analytics": false + }, + "newProjectRoot": "projects", + "projects": { + "front": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:application", + "options": { + "outputPath": "dist/front", + "index": "src/index.html", + "browser": "src/main.ts", + "polyfills": [ + "zone.js" + ], + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets", + "src/manifest.webmanifest" + ], + "styles": [ + "@angular/material/prebuilt-themes/indigo-pink.css", + "src/styles.scss" + ], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all", + "serviceWorker": "ngsw-config.json" + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "proxyConfig": "src/proxy.conf.json" + }, + "configurations": { + "production": { + "buildTarget": "front:build:production" + }, + "development": { + "buildTarget": "front:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "front:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": [ + "zone.js", + "zone.js/testing" + ], + "tsConfig": "tsconfig.spec.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets", + "src/manifest.webmanifest" + ], + "styles": [ + "@angular/material/prebuilt-themes/indigo-pink.css", + "src/styles.scss" + ], + "scripts": [] + } + } + } + } + } +} diff --git a/front/ngsw-config.json b/front/ngsw-config.json new file mode 100644 index 0000000..4d80eea --- /dev/null +++ b/front/ngsw-config.json @@ -0,0 +1,30 @@ +{ + "$schema": "./node_modules/@angular/service-worker/config/schema.json", + "index": "/index.html", + "assetGroups": [ + { + "name": "app", + "installMode": "prefetch", + "resources": { + "files": [ + "/favicon.ico", + "/index.html", + "/manifest.webmanifest", + "/*.css", + "/*.js" + ] + } + }, + { + "name": "assets", + "installMode": "lazy", + "updateMode": "prefetch", + "resources": { + "files": [ + "/assets/**", + "/media/*.(svg|cur|jpg|jpeg|png|apng|webp|avif|gif|otf|ttf|woff|woff2)" + ] + } + } + ] +} diff --git a/front/package.json b/front/package.json new file mode 100644 index 0000000..cc2ade2 --- /dev/null +++ b/front/package.json @@ -0,0 +1,44 @@ +{ + "name": "front", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test" + }, + "private": true, + "dependencies": { + "@angular/animations": "^17.0.0", + "@angular/cdk": "17.1.1", + "@angular/common": "^17.0.0", + "@angular/compiler": "^17.0.0", + "@angular/core": "^17.0.0", + "@angular/forms": "^17.0.0", + "@angular/material": "17.1.1", + "@angular/platform-browser": "^17.0.0", + "@angular/platform-browser-dynamic": "^17.0.0", + "@angular/router": "^17.0.0", + "@angular/service-worker": "^17.0.0", + "base-64": "^1.0.0", + "js-base64": "^3.7.6", + "rxjs": "~7.8.0", + "tslib": "^2.3.0", + "zone.js": "~0.14.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^17.0.3", + "@angular/cli": "^17.0.3", + "@angular/compiler-cli": "^17.0.0", + "@types/jasmine": "~5.1.0", + "html5-qrcode": "^2.3.8", + "jasmine-core": "~5.1.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "typescript": "~5.2.2" + } +} \ No newline at end of file diff --git a/front/pnpm-lock.yaml b/front/pnpm-lock.yaml new file mode 100644 index 0000000..3cc9d25 --- /dev/null +++ b/front/pnpm-lock.yaml @@ -0,0 +1,8268 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@angular/animations': + specifier: ^17.0.0 + version: 17.0.0(@angular/core@17.0.0) + '@angular/cdk': + specifier: 17.1.1 + version: 17.1.1(@angular/common@17.0.0)(@angular/core@17.0.0)(rxjs@7.8.0) + '@angular/common': + specifier: ^17.0.0 + version: 17.0.0(@angular/core@17.0.0)(rxjs@7.8.0) + '@angular/compiler': + specifier: ^17.0.0 + version: 17.0.0(@angular/core@17.0.0) + '@angular/core': + specifier: ^17.0.0 + version: 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + '@angular/forms': + specifier: ^17.0.0 + version: 17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.0) + '@angular/material': + specifier: 17.1.1 + version: 17.1.1(@angular/animations@17.0.0)(@angular/cdk@17.1.1)(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/forms@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.0) + '@angular/platform-browser': + specifier: ^17.0.0 + version: 17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0) + '@angular/platform-browser-dynamic': + specifier: ^17.0.0 + version: 17.0.0(@angular/common@17.0.0)(@angular/compiler@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0) + '@angular/router': + specifier: ^17.0.0 + version: 17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.0) + '@angular/service-worker': + specifier: ^17.0.0 + version: 17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0) + base-64: + specifier: ^1.0.0 + version: 1.0.0 + js-base64: + specifier: ^3.7.6 + version: 3.7.6 + rxjs: + specifier: ~7.8.0 + version: 7.8.0 + tslib: + specifier: ^2.3.0 + version: 2.3.0 + zone.js: + specifier: ~0.14.2 + version: 0.14.2 + +devDependencies: + '@angular-devkit/build-angular': + specifier: ^17.0.3 + version: 17.0.3(@angular/compiler-cli@17.0.0)(@angular/service-worker@17.0.0)(karma@6.4.0)(typescript@5.2.2) + '@angular/cli': + specifier: ^17.0.3 + version: 17.0.3 + '@angular/compiler-cli': + specifier: ^17.0.0 + version: 17.0.0(@angular/compiler@17.0.0)(typescript@5.2.2) + '@types/jasmine': + specifier: ~5.1.0 + version: 5.1.0 + html5-qrcode: + specifier: ^2.3.8 + version: 2.3.8 + jasmine-core: + specifier: ~5.1.0 + version: 5.1.0 + karma: + specifier: ~6.4.0 + version: 6.4.0 + karma-chrome-launcher: + specifier: ~3.2.0 + version: 3.2.0 + karma-coverage: + specifier: ~2.2.0 + version: 2.2.0 + karma-jasmine: + specifier: ~5.1.0 + version: 5.1.0(karma@6.4.0) + karma-jasmine-html-reporter: + specifier: ~2.1.0 + version: 2.1.0(jasmine-core@5.1.0)(karma-jasmine@5.1.0)(karma@6.4.0) + typescript: + specifier: ~5.2.2 + version: 5.2.2 + +packages: + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + dev: true + + /@angular-devkit/architect@0.1700.3(chokidar@3.5.3): + resolution: {integrity: sha512-HUjx7vD16paWXHKHYc2LsSn/kaYbFr2YNnlzuSr9C0kauKS1e7sRpRvtGwQzXfohzgyKi81AAU5uA2KLRGq83w==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 17.0.3(chokidar@3.5.3) + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@angular-devkit/build-angular@17.0.3(@angular/compiler-cli@17.0.0)(@angular/service-worker@17.0.0)(karma@6.4.0)(typescript@5.2.2): + resolution: {integrity: sha512-1lx0mERC1eTHX4vf8q7kUHZNHS0jwZxbwYHAISOplwHjkzRociX0W6rx04yMXn2NCSNhK+w3xbWyAIgyYbP9nA==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^17.0.0 + '@angular/localize': ^17.0.0 + '@angular/platform-server': ^17.0.0 + '@angular/service-worker': ^17.0.0 + jest: ^29.5.0 + jest-environment-jsdom: ^29.5.0 + karma: ^6.3.0 + ng-packagr: ^17.0.0 + protractor: ^7.0.0 + tailwindcss: ^2.0.0 || ^3.0.0 + typescript: '>=5.2 <5.3' + peerDependenciesMeta: + '@angular/localize': + optional: true + '@angular/platform-server': + optional: true + '@angular/service-worker': + optional: true + jest: + optional: true + jest-environment-jsdom: + optional: true + karma: + optional: true + ng-packagr: + optional: true + protractor: + optional: true + tailwindcss: + optional: true + dependencies: + '@ampproject/remapping': 2.2.1 + '@angular-devkit/architect': 0.1700.3(chokidar@3.5.3) + '@angular-devkit/build-webpack': 0.1700.3(chokidar@3.5.3)(webpack-dev-server@4.15.1)(webpack@5.89.0) + '@angular-devkit/core': 17.0.3(chokidar@3.5.3) + '@angular/compiler-cli': 17.0.0(@angular/compiler@17.0.0)(typescript@5.2.2) + '@angular/service-worker': 17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0) + '@babel/core': 7.23.2 + '@babel/generator': 7.23.0 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-transform-async-generator-functions': 7.23.2(@babel/core@7.23.2) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-runtime': 7.23.2(@babel/core@7.23.2) + '@babel/preset-env': 7.23.2(@babel/core@7.23.2) + '@babel/runtime': 7.23.2 + '@discoveryjs/json-ext': 0.5.7 + '@ngtools/webpack': 17.0.3(@angular/compiler-cli@17.0.0)(typescript@5.2.2)(webpack@5.89.0) + '@vitejs/plugin-basic-ssl': 1.0.1(vite@4.5.0) + ansi-colors: 4.1.3 + autoprefixer: 10.4.16(postcss@8.4.31) + babel-loader: 9.1.3(@babel/core@7.23.2)(webpack@5.89.0) + babel-plugin-istanbul: 6.1.1 + browser-sync: 2.29.3 + browserslist: 4.22.2 + chokidar: 3.5.3 + copy-webpack-plugin: 11.0.0(webpack@5.89.0) + critters: 0.0.20 + css-loader: 6.8.1(webpack@5.89.0) + esbuild-wasm: 0.19.5 + fast-glob: 3.3.1 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + https-proxy-agent: 7.0.2 + inquirer: 9.2.11 + jsonc-parser: 3.2.0 + karma: 6.4.0 + karma-source-map-support: 1.4.0 + less: 4.2.0 + less-loader: 11.1.0(less@4.2.0)(webpack@5.89.0) + license-webpack-plugin: 4.0.2(webpack@5.89.0) + loader-utils: 3.2.1 + magic-string: 0.30.5 + mini-css-extract-plugin: 2.7.6(webpack@5.89.0) + mrmime: 1.0.1 + open: 8.4.2 + ora: 5.4.1 + parse5-html-rewriting-stream: 7.0.0 + picomatch: 3.0.1 + piscina: 4.1.0 + postcss: 8.4.31 + postcss-loader: 7.3.3(postcss@8.4.31)(typescript@5.2.2)(webpack@5.89.0) + resolve-url-loader: 5.0.0 + rxjs: 7.8.1 + sass: 1.69.5 + sass-loader: 13.3.2(sass@1.69.5)(webpack@5.89.0) + semver: 7.5.4 + source-map-loader: 4.0.1(webpack@5.89.0) + source-map-support: 0.5.21 + terser: 5.24.0 + text-table: 0.2.0 + tree-kill: 1.2.2 + tslib: 2.6.2 + typescript: 5.2.2 + undici: 5.27.2 + vite: 4.5.0(less@4.2.0)(sass@1.69.5)(terser@5.24.0) + webpack: 5.89.0(esbuild@0.19.5) + webpack-dev-middleware: 6.1.1(webpack@5.89.0) + webpack-dev-server: 4.15.1(webpack@5.89.0) + webpack-merge: 5.10.0 + webpack-subresource-integrity: 5.1.0(webpack@5.89.0) + optionalDependencies: + esbuild: 0.19.5 + transitivePeerDependencies: + - '@swc/core' + - '@types/express' + - '@types/node' + - bufferutil + - debug + - fibers + - html-webpack-plugin + - lightningcss + - node-sass + - sass-embedded + - stylus + - sugarss + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + dev: true + + /@angular-devkit/build-webpack@0.1700.3(chokidar@3.5.3)(webpack-dev-server@4.15.1)(webpack@5.89.0): + resolution: {integrity: sha512-r8nVakAnwV5Yy2AjWDpdcGUjHRQBcPljZDhX5tX2H7M3bxD6zG5owXDy8XmG64A7U1jd6D7dQv7zoW/tZwpYvw==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + webpack: ^5.30.0 + webpack-dev-server: ^4.0.0 + dependencies: + '@angular-devkit/architect': 0.1700.3(chokidar@3.5.3) + rxjs: 7.8.1 + webpack: 5.89.0(esbuild@0.19.5) + webpack-dev-server: 4.15.1(webpack@5.89.0) + transitivePeerDependencies: + - chokidar + dev: true + + /@angular-devkit/core@17.0.3(chokidar@3.5.3): + resolution: {integrity: sha512-SOngD3rKnwZWhhUV68AYlH8M3LRGvF69jnDrYKwtRy1ESqSH7tt+1vexGC290gKvqH7bNMgYv8f5BS1AASRfzw==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + chokidar: 3.5.3 + jsonc-parser: 3.2.0 + picomatch: 3.0.1 + rxjs: 7.8.1 + source-map: 0.7.4 + dev: true + + /@angular-devkit/schematics@17.0.3: + resolution: {integrity: sha512-gNocyYuNJRd24+JSM5kpO7g9Vg4THcoH5It8nJmS3muelLHDzegvDzXB7iPBjVR8Lxts6sbifYdIkKencUc4vg==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 17.0.3(chokidar@3.5.3) + jsonc-parser: 3.2.0 + magic-string: 0.30.5 + ora: 5.4.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@angular/animations@17.0.0(@angular/core@17.0.0): + resolution: {integrity: sha512-DNr4IlRxtcNsaUxmF2/aPU9K6jXCdODXbbk2hTnZhAhpA9lLof3MN8/9MmNjc2nxeL6/oovyXP3SCY8Y8ZJACw==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/core': 17.0.0 + dependencies: + '@angular/core': 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + tslib: 2.3.0 + dev: false + + /@angular/cdk@17.1.1(@angular/common@17.0.0)(@angular/core@17.0.0)(rxjs@7.8.0): + resolution: {integrity: sha512-Q5qC6VUyT7N/hj8eETdh0bkmBmsXm0JZikhXdBvcDUl8yPbhMPKQCkx4UJzBrZJg/+78XyI9FI/q8w/yQAJZJA==} + peerDependencies: + '@angular/common': ^17.0.0 || ^18.0.0 + '@angular/core': ^17.0.0 || ^18.0.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.0) + '@angular/core': 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + rxjs: 7.8.0 + tslib: 2.6.2 + optionalDependencies: + parse5: 7.1.2 + dev: false + + /@angular/cli@17.0.3: + resolution: {integrity: sha512-pRGXms87aEqmB4yPdcPI/VM7JegjDcBIeLadms0wrBkoyQiv+jL5LesxODhid6ujXZOj1xqMCYbCnX7HY+mLcQ==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + hasBin: true + dependencies: + '@angular-devkit/architect': 0.1700.3(chokidar@3.5.3) + '@angular-devkit/core': 17.0.3(chokidar@3.5.3) + '@angular-devkit/schematics': 17.0.3 + '@schematics/angular': 17.0.3 + '@yarnpkg/lockfile': 1.1.0 + ansi-colors: 4.1.3 + ini: 4.1.1 + inquirer: 9.2.11 + jsonc-parser: 3.2.0 + npm-package-arg: 11.0.1 + npm-pick-manifest: 9.0.0 + open: 8.4.2 + ora: 5.4.1 + pacote: 17.0.4 + resolve: 1.22.8 + semver: 7.5.4 + symbol-observable: 4.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - chokidar + - supports-color + dev: true + + /@angular/common@17.0.0(@angular/core@17.0.0)(rxjs@7.8.0): + resolution: {integrity: sha512-iepci1Hd9mVEB1Va1X23+KsWRADn4O8UIGy+sji+XQFt7aJfVjAYsSmQJrXsii8K46SvEo04M6HlMSA3BxKx0g==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/core': 17.0.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/core': 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + rxjs: 7.8.0 + tslib: 2.3.0 + + /@angular/compiler-cli@17.0.0(@angular/compiler@17.0.0)(typescript@5.2.2): + resolution: {integrity: sha512-ncobjPpCLXFkNz/icidrUCxMrJ9iHZQ/k/H7JeXD58ZgnXzomx0L48sGcYSZsmS0Lb5E7YvxrN6SZjqEf3h1Og==} + engines: {node: ^18.13.0 || >=20.9.0} + hasBin: true + peerDependencies: + '@angular/compiler': 17.0.0 + typescript: '>=5.2 <5.3' + dependencies: + '@angular/compiler': 17.0.0(@angular/core@17.0.0) + '@babel/core': 7.23.2 + '@jridgewell/sourcemap-codec': 1.4.15 + chokidar: 3.5.3 + convert-source-map: 1.9.0 + reflect-metadata: 0.1.14 + semver: 7.5.4 + tslib: 2.3.0 + typescript: 5.2.2 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@angular/compiler@17.0.0(@angular/core@17.0.0): + resolution: {integrity: sha512-TLECbTkRQJvAzyBhp/WKjKrPEp3YtN50bZ2qdkuWZii3nj5hqk5gGIT3T8mAIDHEX91EIN/JsvlUhFjSeb5bKw==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/core': 17.0.0 + peerDependenciesMeta: + '@angular/core': + optional: true + dependencies: + '@angular/core': 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + tslib: 2.3.0 + + /@angular/core@17.0.0(rxjs@7.8.0)(zone.js@0.14.2): + resolution: {integrity: sha512-09vv1tLv3bG+l0QwACoBcWRSh8nWe7It/JWhCeQQuqil07O9GufY2ASao4XX7ecBTlruoNy8k1gWKv9hKXZRzg==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.14.0 + dependencies: + rxjs: 7.8.0 + tslib: 2.3.0 + zone.js: 0.14.2 + + /@angular/forms@17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.0): + resolution: {integrity: sha512-M/LHKBC/BhNqSa3WaXzOacZM1zJmIJGkV5aYDhHCg+2R9oUyl5RXWgSwfG5KWJ0sY+j2BZaJlPg0mcF0nY79DA==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/common': 17.0.0 + '@angular/core': 17.0.0 + '@angular/platform-browser': 17.0.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.0) + '@angular/core': 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + '@angular/platform-browser': 17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0) + rxjs: 7.8.0 + tslib: 2.3.0 + dev: false + + /@angular/material@17.1.1(@angular/animations@17.0.0)(@angular/cdk@17.1.1)(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/forms@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.0): + resolution: {integrity: sha512-Ngh/4MY3MAPd4Fe2kb9W8j8Ix+hA9MVPvppYTlSsYzvlhV8YhOEaH2nuv9hJLrOiurlRWt7VlW13YkufK4VBgg==} + peerDependencies: + '@angular/animations': ^17.0.0 || ^18.0.0 + '@angular/cdk': 17.1.1 + '@angular/common': ^17.0.0 || ^18.0.0 + '@angular/core': ^17.0.0 || ^18.0.0 + '@angular/forms': ^17.0.0 || ^18.0.0 + '@angular/platform-browser': ^17.0.0 || ^18.0.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/animations': 17.0.0(@angular/core@17.0.0) + '@angular/cdk': 17.1.1(@angular/common@17.0.0)(@angular/core@17.0.0)(rxjs@7.8.0) + '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.0) + '@angular/core': 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + '@angular/forms': 17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.0) + '@angular/platform-browser': 17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0) + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/auto-init': 15.0.0-canary.7f224ddd4.0 + '@material/banner': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/card': 15.0.0-canary.7f224ddd4.0 + '@material/checkbox': 15.0.0-canary.7f224ddd4.0 + '@material/chips': 15.0.0-canary.7f224ddd4.0 + '@material/circular-progress': 15.0.0-canary.7f224ddd4.0 + '@material/data-table': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dialog': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/drawer': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/fab': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/form-field': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/image-list': 15.0.0-canary.7f224ddd4.0 + '@material/layout-grid': 15.0.0-canary.7f224ddd4.0 + '@material/line-ripple': 15.0.0-canary.7f224ddd4.0 + '@material/linear-progress': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu': 15.0.0-canary.7f224ddd4.0 + '@material/menu-surface': 15.0.0-canary.7f224ddd4.0 + '@material/notched-outline': 15.0.0-canary.7f224ddd4.0 + '@material/radio': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/segmented-button': 15.0.0-canary.7f224ddd4.0 + '@material/select': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/slider': 15.0.0-canary.7f224ddd4.0 + '@material/snackbar': 15.0.0-canary.7f224ddd4.0 + '@material/switch': 15.0.0-canary.7f224ddd4.0 + '@material/tab': 15.0.0-canary.7f224ddd4.0 + '@material/tab-bar': 15.0.0-canary.7f224ddd4.0 + '@material/tab-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/tab-scroller': 15.0.0-canary.7f224ddd4.0 + '@material/textfield': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tooltip': 15.0.0-canary.7f224ddd4.0 + '@material/top-app-bar': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + rxjs: 7.8.0 + tslib: 2.6.2 + dev: false + + /@angular/platform-browser-dynamic@17.0.0(@angular/common@17.0.0)(@angular/compiler@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0): + resolution: {integrity: sha512-kBVdQWCeKDlXwG3k6WNaTK1HP+0iTCHgomskHTzd59IrLanaUVvWG590qw3NPMFwiUJSwQ5+2WjL9LFP4rkAbQ==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/common': 17.0.0 + '@angular/compiler': 17.0.0 + '@angular/core': 17.0.0 + '@angular/platform-browser': 17.0.0 + dependencies: + '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.0) + '@angular/compiler': 17.0.0(@angular/core@17.0.0) + '@angular/core': 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + '@angular/platform-browser': 17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0) + tslib: 2.3.0 + dev: false + + /@angular/platform-browser@17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0): + resolution: {integrity: sha512-GIlgyMRWdJJeYexwtejbZ6cepdQ6UUOKEXVrIEIjLf23ROv5MpBdYu3ujt0eGngS4UiIEF2JkltTQRLnMPIQGg==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/animations': 17.0.0 + '@angular/common': 17.0.0 + '@angular/core': 17.0.0 + peerDependenciesMeta: + '@angular/animations': + optional: true + dependencies: + '@angular/animations': 17.0.0(@angular/core@17.0.0) + '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.0) + '@angular/core': 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + tslib: 2.3.0 + dev: false + + /@angular/router@17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0)(@angular/platform-browser@17.0.0)(rxjs@7.8.0): + resolution: {integrity: sha512-ZkcGQv3NWbSXEKSomAO94jPTPhTyT67dSg7bg6VXkty/7xkdimpE0CHAdB5KXmnrci/0BgKfyaPwU5bSiQlgNQ==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/common': 17.0.0 + '@angular/core': 17.0.0 + '@angular/platform-browser': 17.0.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.0) + '@angular/core': 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + '@angular/platform-browser': 17.0.0(@angular/animations@17.0.0)(@angular/common@17.0.0)(@angular/core@17.0.0) + rxjs: 7.8.0 + tslib: 2.3.0 + dev: false + + /@angular/service-worker@17.0.0(@angular/common@17.0.0)(@angular/core@17.0.0): + resolution: {integrity: sha512-jKNhnIu8bDMERJ2+aqqTiTrR3xE6lxaYn1PrrQ2FgL6d/ypZgFJxiEj6g/i5Yn4i2DeXPFL0J89tQDu8U7Yybg==} + engines: {node: ^18.13.0 || >=20.9.0} + hasBin: true + peerDependencies: + '@angular/common': 17.0.0 + '@angular/core': 17.0.0 + dependencies: + '@angular/common': 17.0.0(@angular/core@17.0.0)(rxjs@7.8.0) + '@angular/core': 17.0.0(rxjs@7.8.0)(zone.js@0.14.2) + tslib: 2.6.2 + + /@assemblyscript/loader@0.10.1: + resolution: {integrity: sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==} + dev: true + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.2: + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.0 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.2) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core@7.23.9: + resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.23.0: + resolution: {integrity: sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + jsesc: 2.5.2 + dev: true + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.23.9(@babel/core@7.23.2): + resolution: {integrity: sha512-B2L9neXTIyPQoXDm+NtovPvG6VOLWnaXu3BIeVDWwdKFgG30oNa6CqVGiJPDWQwIAK49t9gnQI9c6K6RzabiKw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.2): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true + + /@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.2): + resolution: {integrity: sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.2): + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.2): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + dev: true + + /@babel/helpers@7.23.9: + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.2): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.2): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.2): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.2): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.2): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.2): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.2): + resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.23.9 + dev: true + + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.2): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.2): + resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.2): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.2): + resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.9(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + dev: true + + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-runtime@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.2): + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.2) + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/preset-env@7.23.2(@babel/core@7.23.2): + resolution: {integrity: sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.2 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.2) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.2) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.2) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-async-generator-functions': 7.23.2(@babel/core@7.23.2) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.2) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.2) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.2) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.2) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.2) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.2) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.2) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.2) + '@babel/types': 7.23.9 + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.2) + babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.23.2) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.2) + core-js-compat: 3.35.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.2): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.23.9 + esutils: 2.0.3 + dev: true + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: true + + /@babel/template@7.23.9: + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + dev: true + + /@babel/traverse@7.23.9: + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + dev: true + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.5: + resolution: {integrity: sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.5: + resolution: {integrity: sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.5: + resolution: {integrity: sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.5: + resolution: {integrity: sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.5: + resolution: {integrity: sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.5: + resolution: {integrity: sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.5: + resolution: {integrity: sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.5: + resolution: {integrity: sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.5: + resolution: {integrity: sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.5: + resolution: {integrity: sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.5: + resolution: {integrity: sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.5: + resolution: {integrity: sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.5: + resolution: {integrity: sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.5: + resolution: {integrity: sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.5: + resolution: {integrity: sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.5: + resolution: {integrity: sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.5: + resolution: {integrity: sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.5: + resolution: {integrity: sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.5: + resolution: {integrity: sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.5: + resolution: {integrity: sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.5: + resolution: {integrity: sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.5: + resolution: {integrity: sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.22 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@leichtgewicht/ip-codec@2.0.4: + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + dev: true + + /@ljharb/through@2.3.12: + resolution: {integrity: sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + dev: true + + /@material/animation@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/auto-init@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/banner@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/base@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/button@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==} + dependencies: + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/card@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==} + dependencies: + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/checkbox@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/chips@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/checkbox': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + safevalues: 0.3.4 + tslib: 2.6.2 + dev: false + + /@material/circular-progress@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/progress-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/data-table@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/checkbox': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/linear-progress': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/select': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/density@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/dialog@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/dom@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==} + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/drawer@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/elevation@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/fab@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/feature-targeting@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/floating-label@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/focus-ring@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==} + dependencies: + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + dev: false + + /@material/form-field@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/icon-button@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/image-list@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==} + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/layout-grid@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/line-ripple@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/linear-progress@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/progress-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/list@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/menu-surface@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/menu@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu-surface': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/notched-outline@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/progress-indicator@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/radio@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/ripple@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/rtl@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==} + dependencies: + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/segmented-button@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/select@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/line-ripple': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu': 15.0.0-canary.7f224ddd4.0 + '@material/menu-surface': 15.0.0-canary.7f224ddd4.0 + '@material/notched-outline': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/shape@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==} + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/slider@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/snackbar@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/switch@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + safevalues: 0.3.4 + tslib: 2.6.2 + dev: false + + /@material/tab-bar@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/tab': 15.0.0-canary.7f224ddd4.0 + '@material/tab-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/tab-scroller': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/tab-indicator@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/tab-scroller@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/tab': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/tab@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/tab-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/textfield@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/line-ripple': 15.0.0-canary.7f224ddd4.0 + '@material/notched-outline': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/theme@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==} + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/tokens@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==} + dependencies: + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + dev: false + + /@material/tooltip@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + safevalues: 0.3.4 + tslib: 2.6.2 + dev: false + + /@material/top-app-bar@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/touch-target@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/typography@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==} + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@ngtools/webpack@17.0.3(@angular/compiler-cli@17.0.0)(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-H39WQ/tM6kOErfiyU6QkPasMtuOZHbm6INkirSR3ol4e93o6gLJ0ptwg3IQlyGtZK2QexWagPC6jzsdGIaN3iw==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^17.0.0 + typescript: '>=5.2 <5.3' + webpack: ^5.54.0 + dependencies: + '@angular/compiler-cli': 17.0.0(@angular/compiler@17.0.0)(typescript@5.2.2) + typescript: 5.2.2 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.16.0 + dev: true + + /@npmcli/agent@2.2.0: + resolution: {integrity: sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + agent-base: 7.1.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + lru-cache: 10.2.0 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@npmcli/fs@3.1.0: + resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.5.4 + dev: true + + /@npmcli/git@5.0.4: + resolution: {integrity: sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/promise-spawn': 7.0.1 + lru-cache: 10.2.0 + npm-pick-manifest: 9.0.0 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.5.4 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/installed-package-contents@2.0.2: + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /@npmcli/node-gyp@3.0.0: + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@npmcli/package-json@5.0.0: + resolution: {integrity: sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/git': 5.0.4 + glob: 10.3.10 + hosted-git-info: 7.0.1 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + proc-log: 3.0.0 + semver: 7.5.4 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/promise-spawn@7.0.1: + resolution: {integrity: sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + which: 4.0.0 + dev: true + + /@npmcli/run-script@7.0.4: + resolution: {integrity: sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/package-json': 5.0.0 + '@npmcli/promise-spawn': 7.0.1 + node-gyp: 10.0.1 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@schematics/angular@17.0.3: + resolution: {integrity: sha512-pFHAqHMNm2WLoquJD4osSA/OAgH+wsFayPuqQnKjDEzeVW/YfJSbUksJ2iFt+uSfrhc/VxPf6pmGBMzi+9d0ng==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 17.0.3(chokidar@3.5.3) + '@angular-devkit/schematics': 17.0.3 + jsonc-parser: 3.2.0 + transitivePeerDependencies: + - chokidar + dev: true + + /@sigstore/bundle@2.1.1: + resolution: {integrity: sha512-v3/iS+1nufZdKQ5iAlQKcCsoh0jffQyABvYIxKsZQFWc4ubuGjwZklFHpDgV6O6T7vvV78SW5NHI91HFKEcxKg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + dev: true + + /@sigstore/core@0.2.0: + resolution: {integrity: sha512-THobAPPZR9pDH2CAvDLpkrYedt7BlZnsyxDe+Isq4ZmGfPy5juOFZq487vCU2EgKD7aHSiTfE/i7sN7aEdzQnA==} + engines: {node: ^16.14.0 || >=18.0.0} + dev: true + + /@sigstore/protobuf-specs@0.2.1: + resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@sigstore/sign@2.2.1: + resolution: {integrity: sha512-U5sKQEj+faE1MsnLou1f4DQQHeFZay+V9s9768lw48J4pKykPj34rWyI1lsMOGJ3Mae47Ye6q3HAJvgXO21rkQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.1.1 + '@sigstore/core': 0.2.0 + '@sigstore/protobuf-specs': 0.2.1 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/tuf@2.3.0: + resolution: {integrity: sha512-S98jo9cpJwO1mtQ+2zY7bOdcYyfVYCUaofCG6wWRzk3pxKHVAkSfshkfecto2+LKsx7Ovtqbgb2LS8zTRhxJ9Q==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + tuf-js: 2.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/verify@0.1.0: + resolution: {integrity: sha512-2UzMNYAa/uaz11NhvgRnIQf4gpLTJ59bhb8ESXaoSS5sxedfS+eLak8bsdMc+qpNQfITUTFoSKFx5h8umlRRiA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.1.1 + '@sigstore/core': 0.2.0 + '@sigstore/protobuf-specs': 0.2.1 + dev: true + + /@socket.io/component-emitter@3.1.0: + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + dev: true + + /@tufjs/canonical-json@2.0.0: + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} + dev: true + + /@tufjs/models@2.0.0: + resolution: {integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 9.0.3 + dev: true + + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + dependencies: + '@types/connect': 3.4.38 + '@types/node': 20.11.6 + dev: true + + /@types/bonjour@3.5.13: + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + dependencies: + '@types/node': 20.11.6 + dev: true + + /@types/connect-history-api-fallback@1.5.4: + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + dependencies: + '@types/express-serve-static-core': 4.17.42 + '@types/node': 20.11.6 + dev: true + + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 20.11.6 + dev: true + + /@types/cookie@0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + dev: true + + /@types/cors@2.8.17: + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + dependencies: + '@types/node': 20.11.6 + dev: true + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.2 + '@types/estree': 1.0.5 + dev: true + + /@types/eslint@8.56.2: + resolution: {integrity: sha512-uQDwm1wFHmbBbCZCqAlq6Do9LYwByNZHWzXppSnay9SuwJ+VRbjkbLABer54kcPnMSlG6Fdiy2yaFXm/z9Z5gw==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/express-serve-static-core@4.17.42: + resolution: {integrity: sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==} + dependencies: + '@types/node': 20.11.6 + '@types/qs': 6.9.11 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: true + + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.42 + '@types/qs': 6.9.11 + '@types/serve-static': 1.15.5 + dev: true + + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true + + /@types/http-proxy@1.17.14: + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + dependencies: + '@types/node': 20.11.6 + dev: true + + /@types/jasmine@5.1.0: + resolution: {integrity: sha512-XOV0KsqXNX2gUSqk05RWeolIMgaAQ7+l/ozOBoQ8NGwLg+E7J9vgagODtNgfim4jCzEUP0oJ3gnXeC+Zv+Xi1A==} + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true + + /@types/mime@3.0.4: + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + dev: true + + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + dependencies: + '@types/node': 20.11.6 + dev: true + + /@types/node@20.11.6: + resolution: {integrity: sha512-+EOokTnksGVgip2PbYbr3xnR7kZigh4LbybAfBAw5BpnQ+FqBYUsvCEjYd70IXKlbohQ64mzEYmMtlWUY8q//Q==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/qs@6.9.11: + resolution: {integrity: sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==} + dev: true + + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true + + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: true + + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 20.11.6 + dev: true + + /@types/serve-index@1.9.4: + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + dependencies: + '@types/express': 4.17.21 + dev: true + + /@types/serve-static@1.15.5: + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + dependencies: + '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 + '@types/node': 20.11.6 + dev: true + + /@types/sockjs@0.3.36: + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + dependencies: + '@types/node': 20.11.6 + dev: true + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.11.6 + dev: true + + /@vitejs/plugin-basic-ssl@1.0.1(vite@4.5.0): + resolution: {integrity: sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==} + engines: {node: '>=14.6.0'} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 + dependencies: + vite: 4.5.0(less@4.2.0)(sass@1.69.5)(terser@5.24.0) + dev: true + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: true + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: true + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: true + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: true + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /@yarnpkg/lockfile@1.1.0: + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + dev: true + + /abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + dev: true + + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.3.0 + dev: true + + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.12.0 + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv-keywords@5.1.0(ajv@8.12.0): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.12.0 + fast-deep-equal: 3.1.3 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true + + /async-each-series@0.1.1: + resolution: {integrity: sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==} + engines: {node: '>=0.8.0'} + dev: true + + /async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + dependencies: + lodash: 4.17.21 + dev: true + + /autoprefixer@10.4.16(postcss@8.4.31): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.22.2 + caniuse-lite: 1.0.30001580 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /axios@0.21.4(debug@4.3.2): + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + dependencies: + follow-redirects: 1.15.5(debug@4.3.2) + transitivePeerDependencies: + - debug + dev: true + + /babel-loader@9.1.3(@babel/core@7.23.2)(webpack@5.89.0): + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + dependencies: + '@babel/core': 7.23.2 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.2): + resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.2) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.2): + resolution: {integrity: sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.4.4(@babel/core@7.23.2) + core-js-compat: 3.35.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.2): + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.2 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.2) + transitivePeerDependencies: + - supports-color + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base-64@1.0.0: + resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==} + dev: false + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + dev: true + + /batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: true + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + dev: true + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browser-sync-client@2.29.3: + resolution: {integrity: sha512-4tK5JKCl7v/3aLbmCBMzpufiYLsB1+UI+7tUXCCp5qF0AllHy/jAqYu6k7hUF3hYtlClKpxExWaR+rH+ny07wQ==} + engines: {node: '>=8.0.0'} + dependencies: + etag: 1.8.1 + fresh: 0.5.2 + mitt: 1.2.0 + dev: true + + /browser-sync-ui@2.29.3: + resolution: {integrity: sha512-kBYOIQjU/D/3kYtUIJtj82e797Egk1FB2broqItkr3i4eF1qiHbFCG6srksu9gWhfmuM/TNG76jMfzAdxEPakg==} + dependencies: + async-each-series: 0.1.1 + chalk: 4.1.2 + connect-history-api-fallback: 1.6.0 + immutable: 3.8.2 + server-destroy: 1.0.1 + socket.io-client: 4.7.4 + stream-throttle: 0.1.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /browser-sync@2.29.3: + resolution: {integrity: sha512-NiM38O6XU84+MN+gzspVmXV2fTOoe+jBqIBx3IBdhZrdeURr6ZgznJr/p+hQ+KzkKEiGH/GcC4SQFSL0jV49bg==} + engines: {node: '>= 8.0.0'} + hasBin: true + dependencies: + browser-sync-client: 2.29.3 + browser-sync-ui: 2.29.3 + bs-recipes: 1.3.4 + chalk: 4.1.2 + chokidar: 3.5.3 + connect: 3.6.6 + connect-history-api-fallback: 1.6.0 + dev-ip: 1.0.1 + easy-extender: 2.3.4 + eazy-logger: 4.0.1 + etag: 1.8.1 + fresh: 0.5.2 + fs-extra: 3.0.1 + http-proxy: 1.18.1 + immutable: 3.8.2 + localtunnel: 2.0.2 + micromatch: 4.0.5 + opn: 5.3.0 + portscanner: 2.2.0 + raw-body: 2.5.2 + resp-modifier: 6.0.2 + rx: 4.1.0 + send: 0.16.2 + serve-index: 1.9.1 + serve-static: 1.13.2 + server-destroy: 1.0.1 + socket.io: 4.7.4 + ua-parser-js: 1.0.37 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001580 + electron-to-chromium: 1.4.646 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + + /bs-recipes@1.3.4: + resolution: {integrity: sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==} + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + dev: true + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: true + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /cacache@18.0.2: + resolution: {integrity: sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.10 + lru-cache: 10.2.0 + minipass: 7.0.4 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.5 + tar: 6.2.0 + unique-filename: 3.0.0 + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.2.0 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /caniuse-lite@1.0.30001580: + resolution: {integrity: sha512-mtj5ur2FFPZcCEpXFy8ADXbDACuNFXg6mxVDqp7tqooX6l3zwm+d8EPoeOSIFRDvHs8qu7/SLFOGniULkcH2iA==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: true + + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: true + + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: true + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /connect-history-api-fallback@1.6.0: + resolution: {integrity: sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==} + engines: {node: '>=0.8'} + dev: true + + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: true + + /connect@3.6.6: + resolution: {integrity: sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.0 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true + + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: true + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: true + + /copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + dev: true + + /copy-webpack-plugin@11.0.0(webpack@5.89.0): + resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.1.0 + dependencies: + fast-glob: 3.3.1 + glob-parent: 6.0.2 + globby: 13.2.2 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /core-js-compat@3.35.1: + resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==} + dependencies: + browserslist: 4.22.2 + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cosmiconfig@8.3.6(typescript@5.2.2): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.2.2 + dev: true + + /critters@0.0.20: + resolution: {integrity: sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==} + dependencies: + chalk: 4.1.2 + css-select: 5.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + htmlparser2: 8.0.2 + postcss: 8.4.31 + pretty-bytes: 5.6.0 + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /css-loader@6.8.1(webpack@5.89.0): + resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.31) + postcss-modules-local-by-default: 4.0.4(postcss@8.4.31) + postcss-modules-scope: 3.1.1(postcss@8.4.31) + postcss-modules-values: 4.0.0(postcss@8.4.31) + postcss-value-parser: 4.2.0 + semver: 7.5.4 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: true + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /custom-event@1.0.1: + resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==} + dev: true + + /date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@4.3.2: + resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + dependencies: + execa: 5.1.1 + dev: true + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /destroy@1.0.4: + resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} + dev: true + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true + + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: true + + /dev-ip@1.0.1: + resolution: {integrity: sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==} + engines: {node: '>= 0.8.0'} + hasBin: true + dev: true + + /di@0.0.1: + resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + dependencies: + '@leichtgewicht/ip-codec': 2.0.4 + dev: true + + /dom-serialize@2.2.1: + resolution: {integrity: sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==} + dependencies: + custom-event: 1.0.1 + ent: 2.2.0 + extend: 3.0.2 + void-elements: 2.0.1 + dev: true + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: true + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /easy-extender@2.3.4: + resolution: {integrity: sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==} + engines: {node: '>= 4.0.0'} + dependencies: + lodash: 4.17.21 + dev: true + + /eazy-logger@4.0.1: + resolution: {integrity: sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==} + engines: {node: '>= 0.8.0'} + dependencies: + chalk: 4.1.2 + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /electron-to-chromium@1.4.646: + resolution: {integrity: sha512-vThkQ0JuF45qT/20KbRgM56lV7IuGt7SjhawQ719PDHzhP84KAO1WJoaxgCoAffKHK47FmVKP1Fqizx7CwK1SA==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + dev: true + optional: true + + /engine.io-client@6.5.3: + resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + engine.io-parser: 5.2.1 + ws: 8.11.0 + xmlhttprequest-ssl: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /engine.io-parser@5.2.1: + resolution: {integrity: sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==} + engines: {node: '>=10.0.0'} + dev: true + + /engine.io@6.5.4: + resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==} + engines: {node: '>=10.2.0'} + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.17 + '@types/node': 20.11.6 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.4 + engine.io-parser: 5.2.1 + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /ent@2.2.0: + resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: true + + /errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + requiresBuild: true + dependencies: + prr: 1.0.1 + dev: true + optional: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + dev: true + + /esbuild-wasm@0.19.5: + resolution: {integrity: sha512-7zmLLn2QCj93XfMmHtzrDJ1UBuOHB2CZz1ghoCEZiRajxjUvHsF40PnbzFIY/pmesqPRaEtEWii0uzsTbnAgrA==} + engines: {node: '>=12'} + hasBin: true + dev: true + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /esbuild@0.19.5: + resolution: {integrity: sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.19.5 + '@esbuild/android-arm64': 0.19.5 + '@esbuild/android-x64': 0.19.5 + '@esbuild/darwin-arm64': 0.19.5 + '@esbuild/darwin-x64': 0.19.5 + '@esbuild/freebsd-arm64': 0.19.5 + '@esbuild/freebsd-x64': 0.19.5 + '@esbuild/linux-arm': 0.19.5 + '@esbuild/linux-arm64': 0.19.5 + '@esbuild/linux-ia32': 0.19.5 + '@esbuild/linux-loong64': 0.19.5 + '@esbuild/linux-mips64el': 0.19.5 + '@esbuild/linux-ppc64': 0.19.5 + '@esbuild/linux-riscv64': 0.19.5 + '@esbuild/linux-s390x': 0.19.5 + '@esbuild/linux-x64': 0.19.5 + '@esbuild/netbsd-x64': 0.19.5 + '@esbuild/openbsd-x64': 0.19.5 + '@esbuild/sunos-x64': 0.19.5 + '@esbuild/win32-arm64': 0.19.5 + '@esbuild/win32-ia32': 0.19.5 + '@esbuild/win32-x64': 0.19.5 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /eventemitter-asyncresource@1.0.0: + resolution: {integrity: sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==} + dev: true + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + dev: true + + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + dependencies: + reusify: 1.0.4 + dev: true + + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: true + + /figures@5.0.0: + resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} + engines: {node: '>=14'} + dependencies: + escape-string-regexp: 5.0.0 + is-unicode-supported: 1.3.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler@1.1.0: + resolution: {integrity: sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.3.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /follow-redirects@1.15.5(debug@4.3.2): + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.2 + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /fs-extra@3.0.1: + resolution: {integrity: sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 3.0.1 + universalify: 0.1.2 + dev: true + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + dev: true + + /fs-monkey@1.0.5: + resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /hdr-histogram-js@2.0.3: + resolution: {integrity: sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==} + dependencies: + '@assemblyscript/loader': 0.10.1 + base64-js: 1.5.1 + pako: 1.0.11 + dev: true + + /hdr-histogram-percentiles-obj@3.0.0: + resolution: {integrity: sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==} + dev: true + + /hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + lru-cache: 10.2.0 + dev: true + + /hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + dev: true + + /html-entities@2.4.0: + resolution: {integrity: sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==} + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /html5-qrcode@2.3.8: + resolution: {integrity: sha512-jsr4vafJhwoLVEDW3n1KvPnCCXWaQfRng0/EEYk1vNcQGcG/htAdhJX0be8YyqMoSz7+hZvOZSTAepsabiuhiQ==} + dev: true + + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + dev: true + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true + + /http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: true + + /http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.4.0 + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: true + + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-middleware@2.0.6(@types/express@4.17.21): + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/express': 4.17.21 + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - debug + dev: true + + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.5(debug@4.3.2) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /icss-utils@5.1.0(postcss@8.4.31): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.31 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore-walk@6.0.4: + resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minimatch: 9.0.3 + dev: true + + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + dev: true + + /image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /immutable@3.8.2: + resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} + engines: {node: '>=0.10.0'} + dev: true + + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /inquirer@9.2.11: + resolution: {integrity: sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==} + engines: {node: '>=14.18.0'} + dependencies: + '@ljharb/through': 2.3.12 + ansi-escapes: 4.3.2 + chalk: 5.3.0 + cli-cursor: 3.1.0 + cli-width: 4.1.0 + external-editor: 3.1.0 + figures: 5.0.0 + lodash: 4.17.21 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: true + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true + + /ipaddr.js@2.1.0: + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + engines: {node: '>= 10'} + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + dev: true + + /is-number-like@1.0.8: + resolution: {integrity: sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==} + dependencies: + lodash.isfinite: 3.3.2 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + dev: true + + /is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jasmine-core@4.6.0: + resolution: {integrity: sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==} + dev: true + + /jasmine-core@5.1.0: + resolution: {integrity: sha512-bFMMwpKuTZXCuGd51yClFobw5SOtad1kmdWnYO8dNwYV8i01Xj0C2+nyQpSKl1EKxiPfyd1ZgBl/rsusL3aS6w==} + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.11.6 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: true + + /js-base64@3.7.6: + resolution: {integrity: sha512-NPrWuHFxFUknr1KqJRDgUQPexQF0uIJWjeT+2KjEePhitQxQEx5EJBG1lVn5/hc8aLycTpXrDOgPQ6Zq+EDiTA==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /jsonfile@3.0.1: + resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + + /karma-chrome-launcher@3.2.0: + resolution: {integrity: sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==} + dependencies: + which: 1.3.1 + dev: true + + /karma-coverage@2.2.0: + resolution: {integrity: sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==} + engines: {node: '>=10.0.0'} + dependencies: + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /karma-jasmine-html-reporter@2.1.0(jasmine-core@5.1.0)(karma-jasmine@5.1.0)(karma@6.4.0): + resolution: {integrity: sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==} + peerDependencies: + jasmine-core: ^4.0.0 || ^5.0.0 + karma: ^6.0.0 + karma-jasmine: ^5.0.0 + dependencies: + jasmine-core: 5.1.0 + karma: 6.4.0 + karma-jasmine: 5.1.0(karma@6.4.0) + dev: true + + /karma-jasmine@5.1.0(karma@6.4.0): + resolution: {integrity: sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==} + engines: {node: '>=12'} + peerDependencies: + karma: ^6.0.0 + dependencies: + jasmine-core: 4.6.0 + karma: 6.4.0 + dev: true + + /karma-source-map-support@1.4.0: + resolution: {integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==} + dependencies: + source-map-support: 0.5.21 + dev: true + + /karma@6.4.0: + resolution: {integrity: sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==} + engines: {node: '>= 10'} + hasBin: true + dependencies: + '@colors/colors': 1.5.0 + body-parser: 1.20.2 + braces: 3.0.2 + chokidar: 3.5.3 + connect: 3.7.0 + di: 0.0.1 + dom-serialize: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + http-proxy: 1.18.1 + isbinaryfile: 4.0.10 + lodash: 4.17.21 + log4js: 6.9.1 + mime: 2.6.0 + minimatch: 3.1.2 + mkdirp: 0.5.6 + qjobs: 1.2.0 + range-parser: 1.2.1 + rimraf: 3.0.2 + socket.io: 4.7.4 + source-map: 0.6.1 + tmp: 0.2.1 + ua-parser-js: 0.7.37 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + dev: true + + /launch-editor@2.6.1: + resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} + dependencies: + picocolors: 1.0.0 + shell-quote: 1.8.1 + dev: true + + /less-loader@11.1.0(less@4.2.0)(webpack@5.89.0): + resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} + engines: {node: '>= 14.15.0'} + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + dependencies: + klona: 2.0.6 + less: 4.2.0 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.3.0 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + dev: true + + /license-webpack-plugin@4.0.2(webpack@5.89.0): + resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} + peerDependencies: + webpack: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-sources: + optional: true + dependencies: + webpack: 5.89.0(esbuild@0.19.5) + webpack-sources: 3.2.3 + dev: true + + /limiter@1.1.5: + resolution: {integrity: sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: true + + /loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: true + + /localtunnel@2.0.2: + resolution: {integrity: sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==} + engines: {node: '>=8.3.0'} + hasBin: true + dependencies: + axios: 0.21.4(debug@4.3.2) + debug: 4.3.2 + openurl: 1.1.1 + yargs: 17.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + + /lodash.isfinite@3.3.2: + resolution: {integrity: sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.4 + flatted: 3.2.9 + rfdc: 1.3.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + dev: true + + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + pify: 4.0.1 + semver: 5.7.2 + dev: true + optional: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: true + + /make-fetch-happen@13.0.0: + resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/agent': 2.2.0 + cacache: 18.0.2 + http-cache-semantics: 4.1.1 + is-lambda: 1.0.1 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + ssri: 10.0.5 + transitivePeerDependencies: + - supports-color + dev: true + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true + + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.5 + dev: true + + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime@1.4.1: + resolution: {integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==} + hasBin: true + dev: true + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mini-css-extract-plugin@2.7.6(webpack@5.89.0): + resolution: {integrity: sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.2.0 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + minipass: 7.0.4 + dev: true + + /minipass-fetch@3.0.4: + resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-json-stream@1.0.1: + resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 + dev: true + + /minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: true + + /mitt@1.2.0: + resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + dev: true + + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + sax: 1.3.0 + dev: true + optional: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /nice-napi@1.0.2: + resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==} + os: ['!win32'] + requiresBuild: true + dependencies: + node-addon-api: 3.2.1 + node-gyp-build: 4.8.0 + dev: true + optional: true + + /node-addon-api@3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + dev: true + optional: true + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: true + + /node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true + dev: true + optional: true + + /node-gyp@10.0.1: + resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 10.3.10 + graceful-fs: 4.2.11 + make-fetch-happen: 13.0.0 + nopt: 7.2.0 + proc-log: 3.0.0 + semver: 7.5.4 + tar: 6.2.0 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: true + + /normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.1 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-bundled@3.0.0: + resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + npm-normalize-package-bin: 3.0.1 + dev: true + + /npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.5.4 + dev: true + + /npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /npm-package-arg@11.0.1: + resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + proc-log: 3.0.0 + semver: 7.5.4 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-packlist@8.0.2: + resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + ignore-walk: 6.0.4 + dev: true + + /npm-pick-manifest@9.0.0: + resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.1 + semver: 7.5.4 + dev: true + + /npm-registry-fetch@16.1.0: + resolution: {integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + make-fetch-happen: 13.0.0 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 11.0.1 + proc-log: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /openurl@1.1.1: + resolution: {integrity: sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==} + dev: true + + /opn@5.3.0: + resolution: {integrity: sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==} + engines: {node: '>=4'} + dependencies: + is-wsl: 1.1.0 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /pacote@17.0.4: + resolution: {integrity: sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + '@npmcli/git': 5.0.4 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/promise-spawn': 7.0.1 + '@npmcli/run-script': 7.0.4 + cacache: 18.0.2 + fs-minipass: 3.0.3 + minipass: 7.0.4 + npm-package-arg: 11.0.1 + npm-packlist: 8.0.2 + npm-pick-manifest: 9.0.0 + npm-registry-fetch: 16.1.0 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 7.0.0 + read-package-json-fast: 3.0.2 + sigstore: 2.2.0 + ssri: 10.0.5 + tar: 6.2.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + dev: true + + /parse5-html-rewriting-stream@7.0.0: + resolution: {integrity: sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==} + dependencies: + entities: 4.5.0 + parse5: 7.1.2 + parse5-sax-parser: 7.0.0 + dev: true + + /parse5-sax-parser@7.0.0: + resolution: {integrity: sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==} + dependencies: + parse5: 7.1.2 + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + dev: true + + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /picomatch@3.0.1: + resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} + engines: {node: '>=10'} + dev: true + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + optional: true + + /piscina@4.1.0: + resolution: {integrity: sha512-sjbLMi3sokkie+qmtZpkfMCUJTpbxJm/wvaPzU28vmYSsTSW8xk9JcFUsbqGJdtPpIQ9tuj+iDcTtgZjwnOSig==} + dependencies: + eventemitter-asyncresource: 1.0.0 + hdr-histogram-js: 2.0.3 + hdr-histogram-percentiles-obj: 3.0.0 + optionalDependencies: + nice-napi: 1.0.2 + dev: true + + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + dependencies: + find-up: 6.3.0 + dev: true + + /portscanner@2.2.0: + resolution: {integrity: sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==} + engines: {node: '>=0.4', npm: '>=1.0.0'} + dependencies: + async: 2.6.4 + is-number-like: 1.0.8 + dev: true + + /postcss-loader@7.3.3(postcss@8.4.31)(typescript@5.2.2)(webpack@5.89.0): + resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + dependencies: + cosmiconfig: 8.3.6(typescript@5.2.2) + jiti: 1.21.0 + postcss: 8.4.31 + semver: 7.5.4 + webpack: 5.89.0(esbuild@0.19.5) + transitivePeerDependencies: + - typescript + dev: true + + /postcss-modules-extract-imports@3.0.0(postcss@8.4.31): + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.31 + dev: true + + /postcss-modules-local-by-default@4.0.4(postcss@8.4.31): + resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-selector-parser: 6.0.15 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-scope@3.1.1(postcss@8.4.31): + resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.0.15 + dev: true + + /postcss-modules-values@4.0.0(postcss@8.4.31): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.31) + postcss: 8.4.31 + dev: true + + /postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + dev: true + + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: true + + /prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + dev: true + optional: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /qjobs@1.2.0: + resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} + engines: {node: '>=0.9'} + dev: true + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + json-parse-even-better-errors: 3.0.1 + npm-normalize-package-bin: 3.0.1 + dev: true + + /read-package-json@7.0.0: + resolution: {integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + glob: 10.3.10 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /reflect-metadata@0.1.14: + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} + dev: true + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: true + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.23.2 + dev: true + + /regex-parser@2.3.0: + resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-url-loader@5.0.0: + resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} + engines: {node: '>=12'} + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 8.4.31 + source-map: 0.6.1 + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /resp-modifier@6.0.2: + resolution: {integrity: sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /rx@4.1.0: + resolution: {integrity: sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==} + dev: true + + /rxjs@7.8.0: + resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} + dependencies: + tslib: 2.3.0 + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.3.0 + dev: true + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /safevalues@0.3.4: + resolution: {integrity: sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==} + dev: false + + /sass-loader@13.3.2(sass@1.69.5)(webpack@5.89.0): + resolution: {integrity: sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==} + engines: {node: '>= 14.15.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + dependencies: + neo-async: 2.6.2 + sass: 1.69.5 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /sass@1.69.5: + resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + dev: true + + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: true + optional: true + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) + dev: true + + /select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: true + + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + optional: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send@0.16.2: + resolution: {integrity: sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.6.3 + mime: 1.4.1 + ms: 2.0.0 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.4.0 + transitivePeerDependencies: + - supports-color + dev: true + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static@1.13.2: + resolution: {integrity: sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.16.2 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: true + + /server-destroy@1.0.1: + resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} + dev: true + + /set-function-length@1.2.0: + resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /sigstore@2.2.0: + resolution: {integrity: sha512-fcU9clHwEss2/M/11FFM8Jwc4PjBgbhXoNskoK5guoK0qGQBSeUbQZRJ+B2fDFIvhyf0gqCaPrel9mszbhAxug==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.1.1 + '@sigstore/core': 0.2.0 + '@sigstore/protobuf-specs': 0.2.1 + '@sigstore/sign': 2.2.1 + '@sigstore/tuf': 2.3.0 + '@sigstore/verify': 0.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: true + + /socket.io-adapter@2.5.2: + resolution: {integrity: sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==} + dependencies: + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /socket.io-client@4.7.4: + resolution: {integrity: sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + engine.io-client: 6.5.3 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /socket.io@4.7.4: + resolution: {integrity: sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==} + engines: {node: '>=10.2.0'} + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.4 + engine.io: 6.5.4 + socket.io-adapter: 2.5.2 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + dev: true + + /socks-proxy-agent@8.0.2: + resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map-loader@4.0.1(webpack@5.89.0): + resolution: {integrity: sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.72.1 + dependencies: + abab: 2.0.6 + iconv-lite: 0.6.3 + source-map-js: 1.0.2 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-exceptions@2.4.0: + resolution: {integrity: sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.4.0 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + dev: true + + /spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.4 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + dev: true + + /statuses@1.3.1: + resolution: {integrity: sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==} + engines: {node: '>= 0.6'} + dev: true + + /statuses@1.4.0: + resolution: {integrity: sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==} + engines: {node: '>= 0.6'} + dev: true + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /stream-throttle@0.1.3: + resolution: {integrity: sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==} + engines: {node: '>= 0.10.0'} + hasBin: true + dependencies: + commander: 2.20.3 + limiter: 1.1.5 + dev: true + + /streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.4 + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /symbol-observable@4.0.0: + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + + /terser-webpack-plugin@5.3.10(esbuild@0.19.5)(webpack@5.89.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + esbuild: 0.19.5 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /terser@5.24.0: + resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /terser@5.27.0: + resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: true + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmp@0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + dependencies: + rimraf: 3.0.2 + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /tuf-js@2.2.0: + resolution: {integrity: sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@tufjs/models': 2.0.0 + debug: 4.3.4 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: true + + /typed-assert@1.0.9: + resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} + dev: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /ua-parser-js@0.7.37: + resolution: {integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==} + dev: true + + /ua-parser-js@1.0.37: + resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /undici@5.27.2: + resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: true + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + + /unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + unique-slug: 4.0.0 + dev: true + + /unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + dev: true + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /vite@4.5.0(less@4.2.0)(sass@1.69.5)(terser@5.24.0): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.20 + less: 4.2.0 + postcss: 8.4.31 + rollup: 3.29.4 + sass: 1.69.5 + terser: 5.24.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /void-elements@2.0.1: + resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} + engines: {node: '>=0.10.0'} + dev: true + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: true + + /wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /webpack-dev-middleware@5.3.3(webpack@5.89.0): + resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /webpack-dev-middleware@6.1.1(webpack@5.89.0): + resolution: {integrity: sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /webpack-dev-server@4.15.1(webpack@5.89.0): + resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.5 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.10 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.5.3 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.18.2 + graceful-fs: 4.2.11 + html-entities: 2.4.0 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + ipaddr.js: 2.1.0 + launch-editor: 2.6.1 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.89.0(esbuild@0.19.5) + webpack-dev-middleware: 5.3.3(webpack@5.89.0) + ws: 8.16.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-subresource-integrity@5.1.0(webpack@5.89.0): + resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} + engines: {node: '>= 12'} + peerDependencies: + html-webpack-plugin: '>= 5.0.0-beta.1 < 6' + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + dependencies: + typed-assert: 1.0.9 + webpack: 5.89.0(esbuild@0.19.5) + dev: true + + /webpack@5.89.0(esbuild@0.19.5): + resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.22.2 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.0 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(esbuild@0.19.5)(webpack@5.89.0) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: true + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: true + + /wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws@8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: true + + /yargs@17.1.1: + resolution: {integrity: sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==} + engines: {node: '>=12'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /zone.js@0.14.2: + resolution: {integrity: sha512-X4U7J1isDhoOmHmFWiLhloWc2lzMkdnumtfQ1LXzf/IOZp5NQYuMUTaviVzG/q1ugMBIXzin2AqeVJUoSEkNyQ==} + dependencies: + tslib: 2.3.0 diff --git a/front/src/app/app.component.html b/front/src/app/app.component.html new file mode 100644 index 0000000..6fac53b --- /dev/null +++ b/front/src/app/app.component.html @@ -0,0 +1,29 @@ +
+ + NF Flow + + @if (user_srv.user().username != "") { + + + + + + + + } + +
+
+ @if (url != 'login') { +
+
    +
  • 任务管理
  • +
  • 用户管理
  • +
  • 操作日志
  • +
+
+ } + +
diff --git a/front/src/app/app.component.scss b/front/src/app/app.component.scss new file mode 100644 index 0000000..5dc244c --- /dev/null +++ b/front/src/app/app.component.scss @@ -0,0 +1,78 @@ + +:host { + display: flex; + height: 100%; + max-height: 100%; + width: 100%; + flex-direction: column; + + div.title { + width: 100%; + max-width: 100%; + height: 64px; + + span.home-button { + cursor: pointer; + } + + button.title-menu { + margin-left: auto; + } + } + + div.content { + width: 100%; + height: calc(100% - 64px); + max-height: calc(100% - 64px); + display: flex; + flex-direction: row; + + .side-container { + display: flex; + width: 235px; + max-width: 235px; + min-width: 235px; + flex-direction: column; + border-right: 1px solid #ddd; + max-height: 100%; + overflow-y: auto; + + + ul { + width: 100%; + margin: 0; + padding: 0; + + li { + list-style: none; + display: flex; + align-items: center; + text-indent: 1rem; + width: 100%; + height: 48px; + font-size: 16px; + + &:hover { + background: rgba(239,239,239); + cursor: pointer; + } + + &.active { + background: rgb(221,221,237); + color: rgb(60,63,169); + } + } + } + } + } +} + +@media screen and (max-width: 40rem) { + :host { + div.content { + .side-container { + display: none; + } + } + } +} diff --git a/front/src/app/app.component.spec.ts b/front/src/app/app.component.spec.ts new file mode 100644 index 0000000..3f7dfb1 --- /dev/null +++ b/front/src/app/app.component.spec.ts @@ -0,0 +1,29 @@ +import { TestBed } from '@angular/core/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [AppComponent], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have the 'front' title`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('front'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement as HTMLElement; + expect(compiled.querySelector('h1')?.textContent).toContain('Hello, front'); + }); +}); diff --git a/front/src/app/app.component.ts b/front/src/app/app.component.ts new file mode 100644 index 0000000..d966b3f --- /dev/null +++ b/front/src/app/app.component.ts @@ -0,0 +1,38 @@ +import { Component } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import {ActivatedRoute, NavigationEnd, Router, RouterOutlet} from '@angular/router'; +import {MatSidenav, MatSidenavContainer, MatSidenavContent} from "@angular/material/sidenav"; +import {MatIcon} from "@angular/material/icon"; +import {MatToolbar} from "@angular/material/toolbar"; +import {MatButton, MatIconButton} from "@angular/material/button"; +import {UserService} from "./service/user.service"; +import {MatMenu, MatMenuItem, MatMenuTrigger} from "@angular/material/menu"; + +@Component({ + selector: 'app-root', + standalone: true, + imports: [CommonModule, RouterOutlet, MatSidenavContent, MatSidenav, MatSidenavContainer, MatIcon, MatToolbar, MatIconButton, MatButton, MatMenuTrigger, MatMenu, MatMenuItem], + templateUrl: './app.component.html', + styleUrl: './app.component.scss', +}) +export class AppComponent { + title = 'front'; + url = ''; + + constructor( + public router: Router, + public user_srv: UserService, + ) { + this.router.events.subscribe(val => { + if (val instanceof NavigationEnd) { + let _url = val.url + if (_url.startsWith("/")) { + _url = _url.slice(1) + } + _url = _url.split("/")[0] + console.log('[D] router val=', _url) + this.url = _url + } + }) + } +} diff --git a/front/src/app/app.config.ts b/front/src/app/app.config.ts new file mode 100644 index 0000000..c194661 --- /dev/null +++ b/front/src/app/app.config.ts @@ -0,0 +1,22 @@ +import {ApplicationConfig, isDevMode} from '@angular/core'; +import {provideRouter} from '@angular/router'; + +import {routes} from './app.routes'; +import {HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi} from "@angular/common/http"; +import {alerterInterceptor} from "./interceptor/alerter.interceptor"; +import {provideAnimations} from '@angular/platform-browser/animations'; +import { provideServiceWorker } from '@angular/service-worker'; + +export const appConfig: ApplicationConfig = { + providers: [ + provideRouter(routes), + provideHttpClient(withInterceptorsFromDi()), { + provide: HTTP_INTERCEPTORS, useClass: alerterInterceptor, multi: true + }, + provideAnimations(), + provideServiceWorker('ngsw-worker.js', { + enabled: !isDevMode(), + registrationStrategy: 'registerWhenStable:30000' + }) +] +}; diff --git a/front/src/app/app.routes.ts b/front/src/app/app.routes.ts new file mode 100644 index 0000000..43d2ba9 --- /dev/null +++ b/front/src/app/app.routes.ts @@ -0,0 +1,14 @@ +import {Routes} from '@angular/router'; +import {HomeComponent} from "./page/home/home.component"; +import {LoginComponent} from "./page/login/login.component"; +import {LogComponent} from "./page/log/log.component"; +import {UserComponent} from "./page/user/user.component"; +import {TaskComponent} from "./page/task/task.component"; + +export const routes: Routes = [ + {path: "", component: HomeComponent}, + {path: "login", component: LoginComponent}, + {path: "task", component: TaskComponent}, + {path: "log", component: LogComponent}, + {path: "user", component: UserComponent}, +]; diff --git a/front/src/app/component/confirm/confirm.component.html b/front/src/app/component/confirm/confirm.component.html new file mode 100644 index 0000000..b4fea41 --- /dev/null +++ b/front/src/app/component/confirm/confirm.component.html @@ -0,0 +1,5 @@ +

{{data.title}}

+ + + + diff --git a/front/src/app/component/confirm/confirm.component.scss b/front/src/app/component/confirm/confirm.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/front/src/app/component/confirm/confirm.component.spec.ts b/front/src/app/component/confirm/confirm.component.spec.ts new file mode 100644 index 0000000..9d59a2d --- /dev/null +++ b/front/src/app/component/confirm/confirm.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ConfirmComponent } from './confirm.component'; + +describe('ConfirmComponent', () => { + let component: ConfirmComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ConfirmComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ConfirmComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/component/confirm/confirm.component.ts b/front/src/app/component/confirm/confirm.component.ts new file mode 100644 index 0000000..0eb6efe --- /dev/null +++ b/front/src/app/component/confirm/confirm.component.ts @@ -0,0 +1,20 @@ +import {Component, Inject, signal} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import {ConfirmData} from "../../interface/confirm_data"; +import {MAT_DIALOG_DATA, MatDialogActions, MatDialogClose, MatDialogTitle} from "@angular/material/dialog"; +import {MatButton} from "@angular/material/button"; + +@Component({ + selector: 'app-confirm', + standalone: true, + imports: [CommonModule, MatDialogTitle, MatDialogActions, MatButton, MatDialogClose], + templateUrl: './confirm.component.html', + styleUrl: './confirm.component.scss' +}) +export class ConfirmComponent { + constructor(@Inject(MAT_DIALOG_DATA) public data: ConfirmData) {} + + confirm() { + this.data.confirmed = true + } +} diff --git a/front/src/app/component/create-user-dialog/create-user-dialog.component.html b/front/src/app/component/create-user-dialog/create-user-dialog.component.html new file mode 100644 index 0000000..357c198 --- /dev/null +++ b/front/src/app/component/create-user-dialog/create-user-dialog.component.html @@ -0,0 +1,40 @@ +

新建用户

+ + + username + + + + + password + + + + + confirm password + + + + + privilege + + @for (privilege of user_srv.user().privileges; track privilege) { + {{privilege.label}} + } + + + + + status + + 正常 + 冻结 + + + + + + + + diff --git a/front/src/app/component/create-user-dialog/create-user-dialog.component.scss b/front/src/app/component/create-user-dialog/create-user-dialog.component.scss new file mode 100644 index 0000000..141fada --- /dev/null +++ b/front/src/app/component/create-user-dialog/create-user-dialog.component.scss @@ -0,0 +1,14 @@ +:host { + mat-dialog-content.create-user-content{ + display: flex; + flex-direction: column; + width: 450px; + } +} +@media screen and (max-width: 40rem) { + :host { + mat-dialog-content.create-user-content{ + width: 100%; + } + } +} diff --git a/front/src/app/component/create-user-dialog/create-user-dialog.component.spec.ts b/front/src/app/component/create-user-dialog/create-user-dialog.component.spec.ts new file mode 100644 index 0000000..a743be8 --- /dev/null +++ b/front/src/app/component/create-user-dialog/create-user-dialog.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CreateUserDialogComponent } from './create-user-dialog.component'; + +describe('CreateUserDialogComponent', () => { + let component: CreateUserDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [CreateUserDialogComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(CreateUserDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/component/create-user-dialog/create-user-dialog.component.ts b/front/src/app/component/create-user-dialog/create-user-dialog.component.ts new file mode 100644 index 0000000..e5330be --- /dev/null +++ b/front/src/app/component/create-user-dialog/create-user-dialog.component.ts @@ -0,0 +1,102 @@ +import {Component} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {MatFormField, MatHint, MatLabel} from "@angular/material/form-field"; +import {MatOption, MatSelect} from "@angular/material/select"; +import {MatInput} from "@angular/material/input"; +import {MatButton} from "@angular/material/button"; +import {FormsModule} from "@angular/forms"; +import {NewUser} from "../../interface/user"; +import {MsgService} from "../../service/msg.service"; +import { + MatDialogActions, + MatDialogClose, + MatDialogContent, + MatDialogRef, + MatDialogTitle +} from "@angular/material/dialog"; +import {UserService} from "../../service/user.service"; + +interface user_form { + username: string, + nickname: string, + password: string, + confirm_password: string, + status: 0 | 1, + privileges: number[], +} + +@Component({ + selector: 'app-create-user-dialog', + standalone: true, + imports: [ + CommonModule, + MatFormField, + MatSelect, + MatOption, + MatInput, + MatLabel, + MatHint, + MatButton, + FormsModule, + MatDialogTitle, + MatDialogContent, + MatDialogActions, + MatDialogClose, + ], + templateUrl: './create-user-dialog.component.html', + styleUrl: './create-user-dialog.component.scss' +}) +export class CreateUserDialogComponent { + new_user = { + username: "", + nickname: "", + password: "", + confirm_password: "", + status: 0, + privileges: [], + } as user_form + + constructor( + public msg_srv: MsgService, + public user_srv: UserService, + public dialogRef: MatDialogRef, + ) { + } + + create() { + if (this.new_user.username.length < 3) { + this.msg_srv.warning("用户名长度不能小于3") + return + } + if (this.new_user.password.length < 8) { + this.msg_srv.warning("密码至少8位") + return + } + if (!this.new_user.password.match(/[a-z]+/)) { + this.msg_srv.warning("密码必须包含小写字母") + return + } + if (!this.new_user.password.match(/[A-Z]+/)) { + this.msg_srv.warning("密码必须包含大写字母") + return + } + if (this.new_user.password != this.new_user.confirm_password) { + this.msg_srv.warning("输入的两次密码不同") + return + } + console.log('[D] before create new user, new_user=', this.new_user) + + this.user_srv.manage_user_create({ + username: this.new_user.username, + password: this.new_user.password, + status: this.new_user.status, + privileges: this.new_user.privileges, + role: 100, + } as NewUser).subscribe(val => { + if (val.status === 200) { + this.msg_srv.success("创建用户成功") + this.dialogRef.close() + } + }) + } +} diff --git a/front/src/app/component/update-user-dialog/update-user-dialog.component.html b/front/src/app/component/update-user-dialog/update-user-dialog.component.html new file mode 100644 index 0000000..fe3971f --- /dev/null +++ b/front/src/app/component/update-user-dialog/update-user-dialog.component.html @@ -0,0 +1,35 @@ +

修改用户

+ + + password + + + + + confirm password + + + + + privilege + + @for (privilege of user_srv.user().privileges; track privilege) { + {{privilege.label}} + } + + + + + status + + 正常 + 冻结 + + + + + + + + diff --git a/front/src/app/component/update-user-dialog/update-user-dialog.component.scss b/front/src/app/component/update-user-dialog/update-user-dialog.component.scss new file mode 100644 index 0000000..eedaebb --- /dev/null +++ b/front/src/app/component/update-user-dialog/update-user-dialog.component.scss @@ -0,0 +1,14 @@ +:host { + mat-dialog-content.update-user-content{ + display: flex; + flex-direction: column; + width: 450px; + } +} +@media screen and (max-width: 40rem) { + :host { + mat-dialog-content.update-user-content{ + width: 100%; + } + } +} diff --git a/front/src/app/component/update-user-dialog/update-user-dialog.component.spec.ts b/front/src/app/component/update-user-dialog/update-user-dialog.component.spec.ts new file mode 100644 index 0000000..666b95d --- /dev/null +++ b/front/src/app/component/update-user-dialog/update-user-dialog.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UpdateUserDialogComponent } from './update-user-dialog.component'; + +describe('UpdateUserDialogComponent', () => { + let component: UpdateUserDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [UpdateUserDialogComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(UpdateUserDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/component/update-user-dialog/update-user-dialog.component.ts b/front/src/app/component/update-user-dialog/update-user-dialog.component.ts new file mode 100644 index 0000000..170d4d1 --- /dev/null +++ b/front/src/app/component/update-user-dialog/update-user-dialog.component.ts @@ -0,0 +1,94 @@ +import {Component, Inject} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {MatButton} from "@angular/material/button"; +import { + MAT_DIALOG_DATA, + MatDialogActions, + MatDialogClose, + MatDialogContent, MatDialogRef, + MatDialogTitle +} from "@angular/material/dialog"; +import {MatFormField, MatLabel} from "@angular/material/form-field"; +import {MatInput} from "@angular/material/input"; +import {MatOption} from "@angular/material/autocomplete"; +import {MatSelect} from "@angular/material/select"; +import {FormControl, FormsModule, ReactiveFormsModule} from "@angular/forms"; +import {User} from "../../interface/user"; +import {Enum} from "../../interface/enum"; +import {MsgService} from "../../service/msg.service"; +import {ArrayEquals} from "../../../tool"; +import {stripBom} from "@angular-devkit/build-angular/src/utils/strip-bom"; +import {UserService} from "../../service/user.service"; + +interface updateUser extends User { + password: string + confirm_password: string +} + +type Updates = { [key: string]: any } + +@Component({ + selector: 'app-update-user-dialog', + standalone: true, + imports: [CommonModule, MatButton, MatDialogActions, MatDialogClose, MatDialogContent, MatDialogTitle, MatFormField, MatInput, MatLabel, MatOption, MatSelect, ReactiveFormsModule, FormsModule], + templateUrl: './update-user-dialog.component.html', + styleUrl: './update-user-dialog.component.scss' +}) +export class UpdateUserDialogComponent { + + user: updateUser = {} as updateUser + + privileges = new FormControl([] as number[]) + status = new FormControl() + password = new FormControl('') + confirm_password = new FormControl('') + + constructor( + @Inject(MAT_DIALOG_DATA) public data: User, + private msg_srv: MsgService, + public user_srv: UserService, + public dialogRef: MatDialogRef, + ) { + this.user = {...data, password: '', confirm_password: ''} + this.privileges.setValue(this.user.privileges.map(v => v.value)) + this.status.setValue(this.user.status.value) + } + + update() { + let updated = false + let updates: Updates = {"id": this.user.id} + if (this.password.value || this.confirm_password.value) { + updated = true + updates["password"] = this.password.value + if (this.password.value != this.confirm_password.value) { + this.msg_srv.warning('两次密码不相同') + return + } + } + + if (this.status.value != this.user.status.value) { + updated = true + updates["status"] = this.status.value + } + + if (!ArrayEquals(this.privileges.value!, this.user.privileges.map(p => p.value))) { + updates["privileges"] = this.privileges.value + updated = true + } + + if (!updated) { + this.msg_srv.warning('没有变更') + return + } + + this.user_srv.manage_user_update(updates).subscribe(rs => { + if (rs.status === 200 || rs.status === 401) { + this.dialogRef.close() + } + }) + } + + initedPrivileges(privileges: Enum[]) { + return privileges.map(p => p.value) + } +} diff --git a/front/src/app/interceptor/alerter.interceptor.ts b/front/src/app/interceptor/alerter.interceptor.ts new file mode 100644 index 0000000..5af0c41 --- /dev/null +++ b/front/src/app/interceptor/alerter.interceptor.ts @@ -0,0 +1,54 @@ +import { + HttpEvent, + HttpHandler, + HttpInterceptor, + HttpRequest, + HttpResponse +} from '@angular/common/http'; +import {map, Observable} from "rxjs"; +import {Response} from "../interface/response"; +import {MsgService} from "../service/msg.service"; +import {Router} from "@angular/router"; +import {Injectable} from "@angular/core"; +import {UserService} from "../service/user.service"; + +// import {MsgService} from "../service/msg.service"; + + +@Injectable({ + providedIn: 'root' +}) +export class alerterInterceptor implements HttpInterceptor { + constructor( + private msg_srv: MsgService, + private router: Router, + ) { + } + + intercept(req: HttpRequest, next: HttpHandler): Observable> { + // const nr = req.clone().headers.set("Authorization", localStorage.getItem("ult-token")) + req = req.clone({headers: req.headers.append("Authorization", localStorage.getItem("ult-token") ?? "")}) + return next.handle(req).pipe( + map((event) => { + if (event instanceof HttpResponse) { + try { + const rs = (event.body) as Response + console.log(`[D] ${req.method} - ${req.url} =>`, rs) + if (rs.status > 200) { + this.msg_srv.error(rs.msg) + // alert(rs.msg) + } + + if (rs.status === 401) { + this.router.navigate(['login']) + } + } catch (e) { + console.warn('[E] http err=',e) + this.msg_srv.error('无法连接服务器') + } + } + return event + }) + ); + } +} diff --git a/front/src/app/interface/confirm_data.ts b/front/src/app/interface/confirm_data.ts new file mode 100644 index 0000000..86d06e7 --- /dev/null +++ b/front/src/app/interface/confirm_data.ts @@ -0,0 +1,4 @@ +export interface ConfirmData { + title: string; + confirmed: boolean; +} diff --git a/front/src/app/interface/enum.ts b/front/src/app/interface/enum.ts new file mode 100644 index 0000000..3e94dcc --- /dev/null +++ b/front/src/app/interface/enum.ts @@ -0,0 +1,5 @@ +export interface Enum { + value: T, + code: string, + label: string, +} diff --git a/front/src/app/interface/log.ts b/front/src/app/interface/log.ts new file mode 100644 index 0000000..9995332 --- /dev/null +++ b/front/src/app/interface/log.ts @@ -0,0 +1,13 @@ +import {Enum} from "./enum"; + +export interface Log { + id: number, + created_at: number, + updated_at: number, + deleted_at: number, + user_id: number, + username: string, + type: Enum, + content: { [key: string]: any }, + html: string, +} diff --git a/front/src/app/interface/response.ts b/front/src/app/interface/response.ts new file mode 100644 index 0000000..941a770 --- /dev/null +++ b/front/src/app/interface/response.ts @@ -0,0 +1,5 @@ +export interface Response { + status: number; + msg: string; + data: T; +} diff --git a/front/src/app/interface/task.ts b/front/src/app/interface/task.ts new file mode 100644 index 0000000..faa3b4d --- /dev/null +++ b/front/src/app/interface/task.ts @@ -0,0 +1,12 @@ +import {Enum} from "./enum"; + +export interface Task { + id: number, + created_at: number, + updated_at: number, + deleted_at: number, + + task_name: string, + task_run_type: '', + task_status: Enum, +} diff --git a/front/src/app/interface/user.ts b/front/src/app/interface/user.ts new file mode 100644 index 0000000..741c08c --- /dev/null +++ b/front/src/app/interface/user.ts @@ -0,0 +1,30 @@ +import {Enum} from "./enum"; + +export interface User { + id: number, + created_at: number, + updated_at: number, + deleted_at: number, + username: string, + status: Enum<0 | 1>, + nickname: string, + comment: string, + role: Enum<100 | 254 | 256>, + privileges: Enum[], + created_by_id: number, + created_by_name: string, + active_at: number, + deadline: number, + login_at: number, +} + +export interface NewUser { + username: string, + nickname: string, + status: 0 | 1, + password: string, + privileges: number[], + deadline: number, + role: 100, + comment: string, +} diff --git a/front/src/app/page/home/home.component.html b/front/src/app/page/home/home.component.html new file mode 100644 index 0000000..57e6edb --- /dev/null +++ b/front/src/app/page/home/home.component.html @@ -0,0 +1 @@ +

Welcome

diff --git a/front/src/app/page/home/home.component.scss b/front/src/app/page/home/home.component.scss new file mode 100644 index 0000000..8cc991a --- /dev/null +++ b/front/src/app/page/home/home.component.scss @@ -0,0 +1,76 @@ + +:host { + width: 100%; + height: 100%; + max-height: 100%; + min-height: 100%; + display: flex; + justify-content: center; + align-items: center; + background-color: white; + margin: 0; + + @keyframes fillup { + from { + background-position-x: 200%; + } + to { + background-position-x: 0; + } + } + + @keyframes fadein { + from { + opacity: 0; + } + to { + opacity: 1; + } + } + + h1 { + width: 100%; + margin: 0; + padding: 0; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + color: var(--my-primary-color); + font-size: 12rem; + font-family: Arial, Helvetica, sans-serif; + font-weight: 800; + letter-spacing: -0.5rem; + position: relative; + background-image: linear-gradient(to right, var(--my-primary-color), var(--my-primary-color), transparent); + background-size: 200% 100%; + background-repeat: no-repeat; + -webkit-background-clip: text; + background-position-x: 200%; + animation: 3s fillup ease-in-out 2s forwards; + + &::after { + content: "Welcome"; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + -webkit-text-stroke-color: white; + -webkit-text-fill-color: transparent; + opacity: 0; + animation: 2s fadein ease-in-out forwards; + } + } +} + +@media screen and (max-width: 40rem) { + :host { + h1 { + font-size: 8rem; + } + } +} diff --git a/front/src/app/page/home/home.component.spec.ts b/front/src/app/page/home/home.component.spec.ts new file mode 100644 index 0000000..60c47c4 --- /dev/null +++ b/front/src/app/page/home/home.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [HomeComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/page/home/home.component.ts b/front/src/app/page/home/home.component.ts new file mode 100644 index 0000000..93ffe5d --- /dev/null +++ b/front/src/app/page/home/home.component.ts @@ -0,0 +1,17 @@ +import {Component} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {UserService} from "../../service/user.service"; + +@Component({ + selector: 'app-home', + standalone: true, + imports: [CommonModule], + templateUrl: './home.component.html', + styleUrl: './home.component.scss' +}) +export class HomeComponent { + constructor( + public user_srv: UserService + ) { + } +} diff --git a/front/src/app/page/log/log.component.html b/front/src/app/page/log/log.component.html new file mode 100644 index 0000000..38903b5 --- /dev/null +++ b/front/src/app/page/log/log.component.html @@ -0,0 +1,28 @@ +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
用户 {{ element.username }}时间 {{ element.created_at | date: "yyyy-MM-dd HH:mm:SS" }}日志类型 {{ element.type.label }}操作
+
+
diff --git a/front/src/app/page/log/log.component.scss b/front/src/app/page/log/log.component.scss new file mode 100644 index 0000000..16a6ef5 --- /dev/null +++ b/front/src/app/page/log/log.component.scss @@ -0,0 +1,11 @@ +:host { + width: 100%; + overflow-x: auto; + + ::ng-deep td>div.nf-op-log>span.nf-op-log-keyword { + color: var(--my-primary-color); + text-decoration: underline; + font-weight: bold; + margin: 0 1rem; + } +} diff --git a/front/src/app/page/log/log.component.spec.ts b/front/src/app/page/log/log.component.spec.ts new file mode 100644 index 0000000..b6e4786 --- /dev/null +++ b/front/src/app/page/log/log.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LogComponent } from './log.component'; + +describe('LogComponent', () => { + let component: LogComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [LogComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(LogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/page/log/log.component.ts b/front/src/app/page/log/log.component.ts new file mode 100644 index 0000000..9c6c9bf --- /dev/null +++ b/front/src/app/page/log/log.component.ts @@ -0,0 +1,40 @@ +import {Component, OnInit} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {LogService} from "../../service/log.service"; +import {decode} from "js-base64" +import { + MatCell, + MatCellDef, + MatColumnDef, + MatHeaderCell, + MatHeaderCellDef, + MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, + MatTable +} from "@angular/material/table"; +import {MatIcon} from "@angular/material/icon"; +import {MatIconButton} from "@angular/material/button"; + +@Component({ + selector: 'app-log', + standalone: true, + imports: [CommonModule, MatTable, MatColumnDef, MatHeaderCell, MatCell, MatCellDef, MatHeaderCellDef, MatIcon, MatIconButton, MatHeaderRow, MatHeaderRowDef, MatRowDef, MatRow], + templateUrl: './log.component.html', + styleUrl: './log.component.scss' +}) +export class LogComponent implements OnInit { + displayedColumns = ["username", "created_at", "type", "html"] + + constructor( + public log_srv: LogService, + ) { + } + + ngOnInit() { + this.log_srv.get_logs() + } + + decodeLog(org: string): string { + return decode(org) + //.from(org, "base64").toString() + } +} diff --git a/front/src/app/page/login/login.component.html b/front/src/app/page/login/login.component.html new file mode 100644 index 0000000..dca184b --- /dev/null +++ b/front/src/app/page/login/login.component.html @@ -0,0 +1,15 @@ +

+ + username + + +

+

+ + password + + +

+

+ +

diff --git a/front/src/app/page/login/login.component.scss b/front/src/app/page/login/login.component.scss new file mode 100644 index 0000000..e0db5af --- /dev/null +++ b/front/src/app/page/login/login.component.scss @@ -0,0 +1,24 @@ +:host { + height: 100%; + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + p { + min-width: 20rem; + max-width: 30rem; + width: 100%; + + mat-form-field { + width: 100%; + input { + width: 100%; + } + } + button { + width: 100%; + } + } +} diff --git a/front/src/app/page/login/login.component.spec.ts b/front/src/app/page/login/login.component.spec.ts new file mode 100644 index 0000000..1e19e5d --- /dev/null +++ b/front/src/app/page/login/login.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [LoginComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/page/login/login.component.ts b/front/src/app/page/login/login.component.ts new file mode 100644 index 0000000..4368255 --- /dev/null +++ b/front/src/app/page/login/login.component.ts @@ -0,0 +1,40 @@ +import {Component, signal} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {FormsModule} from "@angular/forms"; +import {UserService} from "../../service/user.service"; +import {MatButton} from "@angular/material/button"; +import {MatFormField, MatInput, MatInputModule} from "@angular/material/input"; +import {MatIcon, MatIconModule} from "@angular/material/icon"; +import {MatFormFieldModule} from "@angular/material/form-field"; + +@Component({ + selector: 'app-login', + standalone: true, + imports: [ + CommonModule, + FormsModule, + MatButton, + MatInput, + MatFormField, + MatFormFieldModule, + MatInputModule, + MatIconModule, + MatIcon, + ], + templateUrl: './login.component.html', + styleUrl: './login.component.scss' +}) +export class LoginComponent { + + username: string = '' + password: string = '' + + constructor( + public user_srv: UserService + ) { + } + + login() { + this.user_srv.auth_login(this.username, this.password) + } +} diff --git a/front/src/app/page/task/task.component.html b/front/src/app/page/task/task.component.html new file mode 100644 index 0000000..2554cbf --- /dev/null +++ b/front/src/app/page/task/task.component.html @@ -0,0 +1,60 @@ +
+
+ 任务管理 +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
id {{ element.id }}task_name {{ element.task_name }}task_status {{ element.task_status.label }}operation + @switch (element.task_status.value) { + @case (0) { + + } + @case (1) { + + } + } + + +
+
+
+ + +
diff --git a/front/src/app/page/task/task.component.scss b/front/src/app/page/task/task.component.scss new file mode 100644 index 0000000..1ef35e3 --- /dev/null +++ b/front/src/app/page/task/task.component.scss @@ -0,0 +1,37 @@ +:host { + width: 100%; + max-width: 100%; + display: flex; + flex-direction: column; + + > div { + width: 100%; + } + + div.toolbar { + display: flex; + width: 100%; + max-width: 100%; + align-items: center; + flex-direction: row; + margin-top: 1rem; + + > div { + margin-left: 1rem; + } + + button { + margin-left: auto; + margin-right: 1rem; + } + } + + div.table { + flex: 1 0 0; + margin-top: 1rem; + } + + div.pager { + margin-top: auto; + } +} diff --git a/front/src/app/page/task/task.component.spec.ts b/front/src/app/page/task/task.component.spec.ts new file mode 100644 index 0000000..27dca01 --- /dev/null +++ b/front/src/app/page/task/task.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TaskComponent } from './task.component'; + +describe('TaskComponent', () => { + let component: TaskComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [TaskComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(TaskComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/page/task/task.component.ts b/front/src/app/page/task/task.component.ts new file mode 100644 index 0000000..91406ba --- /dev/null +++ b/front/src/app/page/task/task.component.ts @@ -0,0 +1,47 @@ +import {Component} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {MatButton, MatIconButton} from "@angular/material/button"; +import { + MatCell, + MatCellDef, + MatColumnDef, + MatHeaderCell, MatHeaderCellDef, + MatHeaderRow, + MatHeaderRowDef, + MatRow, MatRowDef, MatTable +} from "@angular/material/table"; +import {MatIcon} from "@angular/material/icon"; +import {MatPaginator, PageEvent} from "@angular/material/paginator"; +import {TaskService} from "../../service/task.service"; +import {Task} from '../../interface/task' +import {MatTooltip} from "@angular/material/tooltip"; + +@Component({ + selector: 'app-task', + standalone: true, + imports: [CommonModule, MatButton, MatCell, MatCellDef, MatColumnDef, MatHeaderCell, MatHeaderRow, MatHeaderRowDef, MatIcon, MatIconButton, MatPaginator, MatRow, MatRowDef, MatTable, MatHeaderCellDef, MatTooltip], + templateUrl: './task.component.html', + styleUrl: './task.component.scss' +}) +export class TaskComponent { + displayedColumns = ["id", "task_name", "task_status", "operation"]; + + constructor( + public task_srv: TaskService, + ) { + } + + update_task(element:Task) { + + } + + delete_task(element:Task) { + + } + + handlePager(event: PageEvent) { + console.log('[D] handle pager change event=', event) + // this.user_srv.user_list.set({...this.user_srv.user_list(), size: event.pageSize, page: event.pageIndex}) + // this.user_srv.manage_user_list() + } +} diff --git a/front/src/app/page/user/user.component.html b/front/src/app/page/user/user.component.html new file mode 100644 index 0000000..8680210 --- /dev/null +++ b/front/src/app/page/user/user.component.html @@ -0,0 +1,52 @@ +
+
+ 用户管理 +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
username {{ element.username }}status {{ element.status.label }}role {{ element.role.label }}privileges {{ _parsePrivileges(element.privileges) }}operation + + +
+
+
+ + +
diff --git a/front/src/app/page/user/user.component.scss b/front/src/app/page/user/user.component.scss new file mode 100644 index 0000000..1ef35e3 --- /dev/null +++ b/front/src/app/page/user/user.component.scss @@ -0,0 +1,37 @@ +:host { + width: 100%; + max-width: 100%; + display: flex; + flex-direction: column; + + > div { + width: 100%; + } + + div.toolbar { + display: flex; + width: 100%; + max-width: 100%; + align-items: center; + flex-direction: row; + margin-top: 1rem; + + > div { + margin-left: 1rem; + } + + button { + margin-left: auto; + margin-right: 1rem; + } + } + + div.table { + flex: 1 0 0; + margin-top: 1rem; + } + + div.pager { + margin-top: auto; + } +} diff --git a/front/src/app/page/user/user.component.spec.ts b/front/src/app/page/user/user.component.spec.ts new file mode 100644 index 0000000..04025f1 --- /dev/null +++ b/front/src/app/page/user/user.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UserComponent } from './user.component'; + +describe('UserComponent', () => { + let component: UserComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [UserComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(UserComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/front/src/app/page/user/user.component.ts b/front/src/app/page/user/user.component.ts new file mode 100644 index 0000000..c7469fa --- /dev/null +++ b/front/src/app/page/user/user.component.ts @@ -0,0 +1,92 @@ +import {Component, OnInit} from '@angular/core'; +import {CommonModule} from '@angular/common'; +import {UserService} from "../../service/user.service"; +import {MatButton, MatIconButton} from "@angular/material/button"; +import {MatDialog} from "@angular/material/dialog"; +import {CreateUserDialogComponent} from "../../component/create-user-dialog/create-user-dialog.component"; +import { + MatCell, + MatCellDef, + MatColumnDef, + MatHeaderCell, + MatHeaderCellDef, + MatHeaderRow, MatHeaderRowDef, MatRow, MatRowDef, + MatTable +} from "@angular/material/table"; +import {MatIcon} from "@angular/material/icon"; +import {Enum} from "../../interface/enum"; +import {User} from "../../interface/user"; +import {ConfirmComponent} from "../../component/confirm/confirm.component"; +import {UpdateUserDialogComponent} from "../../component/update-user-dialog/update-user-dialog.component"; +import {MatPaginator, PageEvent} from "@angular/material/paginator"; + +@Component({ + selector: 'app-user', + standalone: true, + imports: [ + CommonModule, + MatButton, + MatTable, + MatColumnDef, + MatHeaderCell, + MatCell, + MatCellDef, + MatHeaderCellDef, + MatHeaderRow, + MatRow, + MatRowDef, + MatHeaderRowDef, + MatIconButton, + MatIcon, + MatPaginator, + ], + templateUrl: './user.component.html', + styleUrl: './user.component.scss' +}) +export class UserComponent implements OnInit { + readonly displayedColumns: string[] = ["username", "status", "role", "privileges", "operation",]; + + constructor( + public user_srv: UserService, + public dialog: MatDialog, + ) { + } + + ngOnInit() { + this.user_srv.manage_user_list() + } + + open_dialog() { + this.dialog.open(CreateUserDialogComponent, {data: {}}) + } + + _parsePrivileges(privileges: any): string { + try { + let ps = privileges as Enum[] + return ps.map(v => v.label).join("; ") + } catch (e) { + console.log("[D] parse privileges err=", e) + return "" + } + } + + delete_user(target: User) { + let data = {title: `确认删除用户 ${target.username} 吗?`, confirmed: false } + this.dialog.open(ConfirmComponent, {data: data}).afterClosed().subscribe(() => { + if (data.confirmed) { + this.user_srv.manage_user_delete(target) + } + }) + } + + update_user(target: User) { + this.dialog.open(UpdateUserDialogComponent, {data: target}) + } + + handlePager(event: PageEvent) { + console.log('[D] handle pager change event=', event) + this.user_srv.user_list.set({...this.user_srv.user_list(), size: event.pageSize, page: event.pageIndex}) + this.user_srv.manage_user_list() + } +} + diff --git a/front/src/app/service/log.service.spec.ts b/front/src/app/service/log.service.spec.ts new file mode 100644 index 0000000..4a99f77 --- /dev/null +++ b/front/src/app/service/log.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { LogService } from './log.service'; + +describe('LogService', () => { + let service: LogService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(LogService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/front/src/app/service/log.service.ts b/front/src/app/service/log.service.ts new file mode 100644 index 0000000..15648cb --- /dev/null +++ b/front/src/app/service/log.service.ts @@ -0,0 +1,35 @@ +import {Injectable, signal} from '@angular/core'; +import {Log} from "../interface/log"; +import {HttpClient} from "@angular/common/http"; +import {tap} from "rxjs"; + +@Injectable({ + providedIn: 'root' +}) +export class LogService { + + readonly log_list_url = "/api/log/content/list" + + readonly logs = signal({ + list: [] as Log[], + total: 0, + page: 0, + size: 0, + }) + + constructor( + private http: HttpClient, + ) { + } + + get_logs() { + return this.http.get<{status:number, msg:string, data: {list:Log[], total: number}}>(this.log_list_url).pipe( + + ).subscribe(rs => { + if (rs.status === 200) { + this.logs.set({...this.logs(), total: rs.data.total, list: rs.data.list}) + } else { + this.logs.set({...this.logs(), list: []}) + } + })} +} diff --git a/front/src/app/service/msg.service.ts b/front/src/app/service/msg.service.ts new file mode 100644 index 0000000..d3fa626 --- /dev/null +++ b/front/src/app/service/msg.service.ts @@ -0,0 +1,214 @@ +import { Injectable, Inject } from '@angular/core'; +import { Component } from '@angular/core'; +import { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar'; +import { + MatSnackBar, + MatSnackBarHorizontalPosition, + MatSnackBarVerticalPosition, +} from '@angular/material/snack-bar'; +import {MatIconModule} from "@angular/material/icon"; + +interface SnackMessage { + type: "success" | "error" | "warning" | "info" + duration: number + data: string +} + +@Injectable({ + providedIn: 'root' +}) +export class MsgService { + horizontalPosition: MatSnackBarHorizontalPosition = 'center'; + verticalPosition: MatSnackBarVerticalPosition = 'top'; + + constructor( + private _snackBar: MatSnackBar + ) { } + + + success(data: string) { + this.open({ type: "success", duration: 1500, data: data }) + } + + info(data: string) { + this.open({ type: "info", duration: 2000, data: data }) + } + + warning(data: string) { + this.open({ type: "warning", duration: 3000, data: data }) + } + + error(data: string) { + this.open({ type: "error", duration: 3500, data: data }) + } + + open(msg: SnackMessage) { + switch (msg.type) { + case "success": + this._snackBar.openFromComponent(SnackMessageSuccess, { + data: msg.data, + duration: msg.duration, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + panelClass: ['success-snackbar'], + }) + break; + case "info": + this._snackBar.openFromComponent(SnackMessageInfo, { + data: msg.data, + duration: msg.duration, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + panelClass: ['info-snackbar'], + }) + break + case "warning": + this._snackBar.openFromComponent(SnackMessageWarning, { + data: msg.data, + duration: msg.duration, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + panelClass: ['warning-snackbar'], + }) + break + case "error": + this._snackBar.openFromComponent(SnackMessageError, { + data: msg.data, + duration: msg.duration, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + panelClass: ['error-snackbar'], + }) + break + default: + this._snackBar.openFromComponent(SnackMessageInfo, { + data: msg.data, + duration: msg.duration, + horizontalPosition: this.horizontalPosition, + verticalPosition: this.verticalPosition, + panelClass: ['info-snackbar'], + }) + break; + } + } +} + + +@Component({ + selector: 'snack-message-success', + template: ` +
+
+ cancel +
+
+ {{ data }} +
+
+ `, + standalone: true, + imports: [ + MatIconModule + ], + styles: [` + .snack-message-success { + } + `] +}) +export class SnackMessageSuccess { + constructor( + @Inject(MAT_SNACK_BAR_DATA) public data: string, + @Inject(MAT_SNACK_BAR_DATA) public duration: number, + @Inject(MAT_SNACK_BAR_DATA) public horizontalPosition: MatSnackBarHorizontalPosition, + @Inject(MAT_SNACK_BAR_DATA) public verticalPosition: MatSnackBarVerticalPosition, + ) { } +} + + +@Component({ + selector: 'snack-message-info', + template: ` +
+
+ cancel +
+
+ {{ data }} +
+
+ `, + standalone: true, + imports: [ + MatIconModule + ], + styles: [` + .snack-message-info { + } + `] +}) +export class SnackMessageInfo { + constructor( + @Inject(MAT_SNACK_BAR_DATA) public data: string, + @Inject(MAT_SNACK_BAR_DATA) public duration: number, + @Inject(MAT_SNACK_BAR_DATA) public horizontalPosition: MatSnackBarHorizontalPosition, + @Inject(MAT_SNACK_BAR_DATA) public verticalPosition: MatSnackBarVerticalPosition, + ) { } +} + +@Component({ + selector: 'snack-message-warning', + template: ` +
+
+ cancel +
+
+ {{ data }} +
+
+ `, + standalone: true, + imports: [ + MatIconModule + ], + styles: [` + .snack-message-warning { + } + `] +}) +export class SnackMessageWarning { + constructor( + @Inject(MAT_SNACK_BAR_DATA) public data: string, + @Inject(MAT_SNACK_BAR_DATA) public duration: number, + @Inject(MAT_SNACK_BAR_DATA) public horizontalPosition: MatSnackBarHorizontalPosition, + @Inject(MAT_SNACK_BAR_DATA) public verticalPosition: MatSnackBarVerticalPosition, + ) { } +} + +@Component({ + selector: 'snack-message-error', + template: ` +
+
+ cancel +
+
+ {{ data }} +
+
+ `, + standalone: true, + imports: [ + MatIconModule + ], + styles: [` + `] +}) +export class SnackMessageError { + constructor( + @Inject(MAT_SNACK_BAR_DATA) public data: string, + @Inject(MAT_SNACK_BAR_DATA) public duration: number, + @Inject(MAT_SNACK_BAR_DATA) public horizontalPosition: MatSnackBarHorizontalPosition, + @Inject(MAT_SNACK_BAR_DATA) public verticalPosition: MatSnackBarVerticalPosition, + ) { } +} diff --git a/front/src/app/service/task.service.spec.ts b/front/src/app/service/task.service.spec.ts new file mode 100644 index 0000000..0bbd214 --- /dev/null +++ b/front/src/app/service/task.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { TaskService } from './task.service'; + +describe('TaskService', () => { + let service: TaskService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(TaskService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/front/src/app/service/task.service.ts b/front/src/app/service/task.service.ts new file mode 100644 index 0000000..11cea32 --- /dev/null +++ b/front/src/app/service/task.service.ts @@ -0,0 +1,40 @@ +import {Injectable, signal, WritableSignal} from '@angular/core'; +import {HttpClient, HttpParams} from "@angular/common/http"; +import {tap} from "rxjs"; +import {Task} from "../interface/task" +import {Response} from "../interface/response" + +@Injectable({ + providedIn: 'root' +}) +export class TaskService { + + readonly url_task_list = '/api/task/list' + task_list: WritableSignal<{ total: number, list: Task[], page: number, size: number }> = signal({ + page: 0, + size: 20, + total: 0, + list: [] as Task[], + }) + + constructor( + private http: HttpClient, + ) { + this.get_task_list().subscribe() + } + + get_task_list(page: number = 0, size: number = 20) { + const params = new HttpParams() + params.set("page", page) + params.set("size", size) + return this.http.get>(this.url_task_list, {params: params}).pipe( + tap({ + next: (res => { + if (res.status === 200) { + this.task_list.set({...this.task_list(), list: res.data.list, total: res.data.total}) + } + }) + }), + ) + } +} diff --git a/front/src/app/service/user.service.spec.ts b/front/src/app/service/user.service.spec.ts new file mode 100644 index 0000000..3f804c9 --- /dev/null +++ b/front/src/app/service/user.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { UserService } from './user.service'; + +describe('UserService', () => { + let service: UserService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UserService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/front/src/app/service/user.service.ts b/front/src/app/service/user.service.ts new file mode 100644 index 0000000..54c9562 --- /dev/null +++ b/front/src/app/service/user.service.ts @@ -0,0 +1,119 @@ +import {Injectable, signal, WritableSignal} from '@angular/core'; +import {HttpClient} from "@angular/common/http"; +import {Router} from "@angular/router"; +import {User, NewUser} from "../interface/user"; +import {Response} from "../interface/response"; +import {tap} from "rxjs"; +import {MsgService} from "./msg.service"; + +@Injectable({ + providedIn: 'root' +}) +export class UserService { + + readonly auth_login_url = '/api/user/auth/login' + readonly auth_logout_url = '/api/user/auth/logout' + readonly manage_user_create_url = '/api/user/manage/user/create' + readonly manage_user_update_url= '/api/user/manage/user/update' + readonly manage_user_delete_url = '/api/user/manage/user/delete' + readonly manage_user_list_url = '/api/user/manage/user/list' + readonly init_user: User = {id: 0, username: ""} as User + + readonly user = signal(this.init_user) + readonly user_list: WritableSignal<{ total: number, page: number, size: number, list: User[] }> = signal({ + total: 0, + page: 0, + size: 20, + list: [] as User[], + }) + + constructor( + private msg_srv: MsgService, + private http: HttpClient, + private router: Router, + ) { + this.auth_verify() + } + + auth_login(username: string, password: string) { + this.http.post>(this.auth_login_url, { + username: username, + password: password + }).subscribe(val => { + if (val.status === 200) { + localStorage.setItem("ult-token", val.data.token) + this.user.set(val.data.user) + this.router.navigate(['']) + } + }) + } + + auth_verify() { + this.http.get>(this.auth_login_url).subscribe(rs => { + if (rs.status === 200) { + this.user.set(rs.data.user) + console.log("[D] auth verify user=", this.user()) + } + }) + } + + auth_logout() { + this.http.post>(this.auth_logout_url, {}).subscribe(rs => { + this.router.navigate(['login']).finally(() => { + localStorage.removeItem("ult-token") + this.user.set(this.init_user) + }) + }) + } + + manage_user_create(new_user: NewUser) { + return this.http.post>(this.manage_user_create_url, {...new_user}).pipe( + tap({ + next: (rs) => { + if (rs.status === 200) { + this.manage_user_list() + } + } + }) + ) + } + + manage_user_delete(target: User) { + return this.http.post>(this.manage_user_delete_url, {id: target.id}).pipe( + tap({ + next: (rs) => { + if (rs.status === 200) { + this.msg_srv.success('删除用户成功') + this.manage_user_list() + } else { + this.msg_srv.error(rs.msg) + } + } + }) + ).subscribe() + } + + manage_user_update(body: Object) { + return this.http.post>(this.manage_user_update_url, body).pipe( + tap({next: (rs) => { + if (rs.status === 200) { + this.msg_srv.success("更新用户成功") + this.manage_user_list() + } else { + this.msg_srv.error(rs.msg) + } + }}) + ) + } + + manage_user_list() { + this.http.get>(this.manage_user_list_url, {params: {}}).subscribe(rs => { + if (rs.status === 200) { + this.user_list.set({...this.user_list(), total: rs.data.total, list: rs.data.list}) + // this.user_list = {...this.user_list, total: rs.data.total, list: rs.data.list} + } else { + this.user_list.set({...this.user_list(), list: []}) + } + }) + } +} diff --git a/front/src/assets/.gitkeep b/front/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/front/src/assets/icons/icon-128x128.png b/front/src/assets/icons/icon-128x128.png new file mode 100644 index 0000000..5a9a2cc Binary files /dev/null and b/front/src/assets/icons/icon-128x128.png differ diff --git a/front/src/assets/icons/icon-144x144.png b/front/src/assets/icons/icon-144x144.png new file mode 100644 index 0000000..11702cd Binary files /dev/null and b/front/src/assets/icons/icon-144x144.png differ diff --git a/front/src/assets/icons/icon-152x152.png b/front/src/assets/icons/icon-152x152.png new file mode 100644 index 0000000..ff4e06b Binary files /dev/null and b/front/src/assets/icons/icon-152x152.png differ diff --git a/front/src/assets/icons/icon-192x192.png b/front/src/assets/icons/icon-192x192.png new file mode 100644 index 0000000..afd36a4 Binary files /dev/null and b/front/src/assets/icons/icon-192x192.png differ diff --git a/front/src/assets/icons/icon-384x384.png b/front/src/assets/icons/icon-384x384.png new file mode 100644 index 0000000..613ac79 Binary files /dev/null and b/front/src/assets/icons/icon-384x384.png differ diff --git a/front/src/assets/icons/icon-512x512.png b/front/src/assets/icons/icon-512x512.png new file mode 100644 index 0000000..7574990 Binary files /dev/null and b/front/src/assets/icons/icon-512x512.png differ diff --git a/front/src/assets/icons/icon-72x72.png b/front/src/assets/icons/icon-72x72.png new file mode 100644 index 0000000..033724e Binary files /dev/null and b/front/src/assets/icons/icon-72x72.png differ diff --git a/front/src/assets/icons/icon-96x96.png b/front/src/assets/icons/icon-96x96.png new file mode 100644 index 0000000..3090dc2 Binary files /dev/null and b/front/src/assets/icons/icon-96x96.png differ diff --git a/front/src/favicon.ico b/front/src/favicon.ico new file mode 100644 index 0000000..57614f9 Binary files /dev/null and b/front/src/favicon.ico differ diff --git a/front/src/index.html b/front/src/index.html new file mode 100644 index 0000000..51432a4 --- /dev/null +++ b/front/src/index.html @@ -0,0 +1,18 @@ + + + + + Front + + + + + + + + + + + + + diff --git a/front/src/main.ts b/front/src/main.ts new file mode 100644 index 0000000..35b00f3 --- /dev/null +++ b/front/src/main.ts @@ -0,0 +1,6 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { appConfig } from './app/app.config'; +import { AppComponent } from './app/app.component'; + +bootstrapApplication(AppComponent, appConfig) + .catch((err) => console.error(err)); diff --git a/front/src/manifest.webmanifest b/front/src/manifest.webmanifest new file mode 100644 index 0000000..d07c0e9 --- /dev/null +++ b/front/src/manifest.webmanifest @@ -0,0 +1,59 @@ +{ + "name": "front", + "short_name": "front", + "theme_color": "#1976d2", + "background_color": "#fafafa", + "display": "standalone", + "scope": "./", + "start_url": "./", + "icons": [ + { + "src": "assets/icons/icon-72x72.png", + "sizes": "72x72", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-96x96.png", + "sizes": "96x96", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-384x384.png", + "sizes": "384x384", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable any" + } + ] +} diff --git a/front/src/proxy.conf.json b/front/src/proxy.conf.json new file mode 100644 index 0000000..13a3d54 --- /dev/null +++ b/front/src/proxy.conf.json @@ -0,0 +1,6 @@ +{ + "/api": { + "target": "http://127.0.0.1", + "secure": false + } +} diff --git a/front/src/styles.scss b/front/src/styles.scss new file mode 100644 index 0000000..75fb388 --- /dev/null +++ b/front/src/styles.scss @@ -0,0 +1,70 @@ +/* You can add global styles to this file, and also import other style files */ +:root { + --primary-color: rgb(63, 81, 181); + --my-primary-color: rgb(67, 80, 175); + --my-success-text-color: rgb(94, 140, 117); + --my-success-backgroud-color: rgb(203, 228, 216); + --my-warning-text-color: rgb(132, 113, 56); + --my-warning-backgroud-color: rgb(254, 243, 200); + --my-error-text-color: rgb(136, 52, 61); + --my-error-backgroud-color: rgb(246, 209, 213); + --my-info-text-color: rgb(60, 64, 69); + --my-info-backgroud-color: rgb(222, 223, 225); + + font-size: 8px; +} + +html, body { + margin: 0; + padding: 0; + height: 100vh; + max-height: 100vh; +} + +html, body { + height: 100%; +} + +body { + margin: 0; + font-family: Roboto, "Helvetica Neue", sans-serif; +} + +.mat-mdc-snack-bar-container { + + &.info-snackbar { + --mdc-snackbar-container-color: var(--my-info-backgroud-color); + --mdc-snackbar-supporting-text-color: var(--my-info-text-color); + } + + &.success-snackbar { + --mdc-snackbar-container-color: var(--my-success-backgroud-color); + --mdc-snackbar-supporting-text-color: var(--my-success-text-color); + } + + &.warning-snackbar { + --mdc-snackbar-container-color: var(--my-warning-backgroud-color); + --mdc-snackbar-supporting-text-color: var(--my-warning-text-color); + } + + &.error-snackbar { + --mdc-snackbar-container-color: var(--my-error-backgroud-color); + --mdc-snackbar-supporting-text-color: var(--my-error-text-color); + } +} + +.snack-message { + display: flex; + align-items: center; + height: 100%; + + div { + height: 100%; + display: flex; + align-items: center; + + &.snack-message-content { + margin-left: 1rem; + } + } +} diff --git a/front/src/tool.ts b/front/src/tool.ts new file mode 100644 index 0000000..6bfae5a --- /dev/null +++ b/front/src/tool.ts @@ -0,0 +1,6 @@ +export function ArrayEquals(a: any[], b: any[]): boolean { + return Array.isArray(a) && + Array.isArray(b) && + a.length === b.length && + a.every((val, index) => val === b[index]); +} diff --git a/front/tsconfig.app.json b/front/tsconfig.app.json new file mode 100644 index 0000000..374cc9d --- /dev/null +++ b/front/tsconfig.app.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/front/tsconfig.json b/front/tsconfig.json new file mode 100644 index 0000000..678336b --- /dev/null +++ b/front/tsconfig.json @@ -0,0 +1,32 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "esModuleInterop": true, + "sourceMap": true, + "declaration": false, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "useDefineForClassFields": false, + "lib": [ + "ES2022", + "dom" + ] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/front/tsconfig.spec.json b/front/tsconfig.spec.json new file mode 100644 index 0000000..be7e9da --- /dev/null +++ b/front/tsconfig.spec.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..de4b2d6 --- /dev/null +++ b/go.mod @@ -0,0 +1,50 @@ +module github.com/loveuer/nfflow + +go 1.20 + +require ( + gitea.com/taozitaozi/gredis v0.0.0-20240131032054-b02845ce1e9d + github.com/elastic/go-elasticsearch/v7 v7.17.10 + github.com/glebarez/sqlite v1.10.0 + github.com/go-redis/redis/v8 v8.11.5 + github.com/golang-jwt/jwt/v5 v5.2.0 + github.com/jackc/pgtype v1.12.0 + github.com/loveuer/nf v0.1.3 + github.com/samber/lo v1.39.0 + github.com/sirupsen/logrus v1.9.3 + github.com/spf13/cast v1.6.0 + github.com/tdewolff/minify/v2 v2.20.16 + golang.org/x/crypto v0.9.0 + gorm.io/driver/mysql v1.4.5 + gorm.io/driver/postgres v1.4.4 + gorm.io/gorm v1.25.5 +) + +require ( + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/glebarez/go-sqlite v1.21.2 // indirect + github.com/go-sql-driver/mysql v1.7.0 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/jackc/chunkreader/v2 v2.0.1 // indirect + github.com/jackc/pgconn v1.13.0 // indirect + github.com/jackc/pgio v1.0.0 // indirect + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgproto3/v2 v2.3.1 // indirect + github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect + github.com/jackc/pgx/v4 v4.17.2 // indirect + github.com/jinzhu/inflection v1.0.0 // indirect + github.com/jinzhu/now v1.1.5 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/tdewolff/parse/v2 v2.7.11 // indirect + golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect + golang.org/x/sys v0.16.0 // indirect + golang.org/x/text v0.9.0 // indirect + modernc.org/libc v1.22.5 // indirect + modernc.org/mathutil v1.5.0 // indirect + modernc.org/memory v1.5.0 // indirect + modernc.org/sqlite v1.23.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..cc2a8d6 --- /dev/null +++ b/go.sum @@ -0,0 +1,268 @@ +gitea.com/taozitaozi/gredis v0.0.0-20240131032054-b02845ce1e9d h1:TpEOdRGqwzxx+DaN18nFE+g4EQYjneZOO1jcHtSon/g= +gitea.com/taozitaozi/gredis v0.0.0-20240131032054-b02845ce1e9d/go.mod h1:QtcL846XUtSnhmW6TZAujUQ9V5jalY7frxzZOs00kFI= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= +github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/elastic/go-elasticsearch/v7 v7.17.10 h1:TCQ8i4PmIJuBunvBS6bwT2ybzVFxxUhhltAs3Gyu1yo= +github.com/elastic/go-elasticsearch/v7 v7.17.10/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/glebarez/go-sqlite v1.21.2 h1:3a6LFC4sKahUunAmynQKLZceZCOzUthkRkEAl9gAXWo= +github.com/glebarez/go-sqlite v1.21.2/go.mod h1:sfxdZyhQjTM2Wry3gVYWaW072Ri1WMdWJi0k6+3382k= +github.com/glebarez/sqlite v1.10.0 h1:u4gt8y7OND/cCei/NMHmfbLxF6xP2wgKcT/BJf2pYkc= +github.com/glebarez/sqlite v1.10.0/go.mod h1:IJ+lfSOmiekhQsFTJRx/lHtGYmCdtAiTaf5wI9u5uHA= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= +github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/golang-jwt/jwt/v5 v5.2.0 h1:d/ix8ftRUorsN+5eMIlF4T6J8CAt9rch3My2winC1Jw= +github.com/golang-jwt/jwt/v5 v5.2.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/pprof v0.0.0-20221118152302-e6195bd50e26 h1:Xim43kblpZXfIBQsbuBVKCudVG457BR2GZFIz3uw3hQ= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.13.0 h1:3L1XMNV2Zvca/8BYhzcRFS70Lr0WlDg16Di6SFGAbys= +github.com/jackc/pgconn v1.13.0/go.mod h1:AnowpAqO4CMIIJNZl2VJp+KrkAZciAkhEl0W0JIobpI= +github.com/jackc/pgio v1.0.0 h1:g12B9UwVnzGhueNavwioyEEpAmqMe1E/BN9ES+8ovkE= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5Wi/+Zz7xoE5ALHsRQlOctkOiHc= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.1 h1:nwj7qwf0S+Q7ISFfBndqeLwSwxs+4DPsbRFjECT1Y4Y= +github.com/jackc/pgproto3/v2 v2.3.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= +github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.12.0 h1:Dlq8Qvcch7kiehm8wPGIW0W3KsCCHJnRacKW0UM8n5w= +github.com/jackc/pgtype v1.12.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.17.2 h1:0Ut0rpeKwvIVbMQ1KbMBU4h6wxehBI535LK6Flheh8E= +github.com/jackc/pgx/v4 v4.17.2/go.mod h1:lcxIZN44yMIrWI78a5CpucdD14hX0SBDbNRvjDBItsw= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= +github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= +github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= +github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.2 h1:AqzbZs4ZoCBp+GtejcpCpcxM3zlSMx29dXbUSeVtJb8= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/loveuer/nf v0.1.3 h1:tZP+FtwhiU+VTfPwfaEQUmiw1z6U9XwfDzJV46h5vZw= +github.com/loveuer/nf v0.1.3/go.mod h1:uKsKYym27ravyTXSBSnxU86V7osxx9cM6DJ+dVBfJ1Q= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= +github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= +github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/tdewolff/minify/v2 v2.20.16 h1:/C8dtRkxLTIyUlKlBz46gDiktCrE8a6+c1gTrnPFz+U= +github.com/tdewolff/minify/v2 v2.20.16/go.mod h1:/FvxV9KaTrFu35J9I2FhRvWSBxcHj8sDSdwBFh5voxM= +github.com/tdewolff/parse/v2 v2.7.11 h1:v+W45LnzmjndVlfqPCT5gGjAAZKd1GJGOPJveTIkBY8= +github.com/tdewolff/parse/v2 v2.7.11/go.mod h1:3FbJWZp3XT9OWVN3Hmfp0p/a08v4h8J9W1aghka0soA= +github.com/tdewolff/test v1.0.11-0.20231101010635-f1265d231d52/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= +github.com/tdewolff/test v1.0.11-0.20240106005702-7de5f7df4739 h1:IkjBCtQOOjIn03u/dMQK9g+Iw9ewps4mCl1nB8Sscbo= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= +golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gorm.io/driver/mysql v1.4.5 h1:u1lytId4+o9dDaNcPCFzNv7h6wvmc92UjNk3z8enSBU= +gorm.io/driver/mysql v1.4.5/go.mod h1:SxzItlnT1cb6e1e4ZRpgJN2VYtcqJgqnHxWr4wsP8oc= +gorm.io/driver/postgres v1.4.4 h1:zt1fxJ+C+ajparn0SteEnkoPg0BQ6wOWXEQ99bteAmw= +gorm.io/driver/postgres v1.4.4/go.mod h1:whNfh5WhhHs96honoLjBAMwJGYEuA3m1hvgUbNXhPCw= +gorm.io/gorm v1.23.7/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= +gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls= +gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE= +modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY= +modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM= +modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= diff --git a/internal/api/api.go b/internal/api/api.go new file mode 100644 index 0000000..01eb3eb --- /dev/null +++ b/internal/api/api.go @@ -0,0 +1,60 @@ +package api + +import ( + "context" + "github.com/loveuer/nf" + "github.com/loveuer/nfflow/internal/handler" + "github.com/loveuer/nfflow/internal/middleware/auth" + "github.com/loveuer/nfflow/internal/middleware/front" + "github.com/loveuer/nfflow/internal/middleware/oplog" + "github.com/loveuer/nfflow/internal/middleware/privilege" + "github.com/loveuer/nfflow/internal/model" + "time" +) + +func initApp(ctx context.Context) *nf.App { + engine := nf.New(nf.Config{}) + + app := engine.Group("/api") + app.Get("/available", func(c *nf.Ctx) error { + return c.JSON(nf.Map{"status": 200, "ok": true, "time": time.Now()}) + }) + + { + api := app.Group("/user") + api.Post("/auth/login", oplog.NewOpLog(ctx), handler.AuthLogin) + api.Get("/auth/login", auth.NewAuth(), handler.AuthVerify) + api.Post("/auth/logout", auth.NewAuth(), oplog.NewOpLog(ctx), handler.AuthLogout) + + mng := api.Group("/manage") + mng.Use(auth.NewAuth(), privilege.Verify( + privilege.RelationAnd, + model.PrivilegeUserManage, + )) + + mng.Get("/user/list", handler.ManageUserList) + mng.Post("/user/create", oplog.NewOpLog(ctx), handler.ManageUserCreate) + mng.Post("/user/update", oplog.NewOpLog(ctx), handler.ManageUserUpdate) + mng.Post("/user/delete", oplog.NewOpLog(ctx), handler.ManageUserDelete) + } + + { + api := app.Group("/log") + api.Use(auth.NewAuth(), privilege.Verify(privilege.RelationAnd, model.PrivilegeOpLog)) + api.Get("/category/list", handler.LogCategories()) + api.Get("/content/list", handler.LogList) + } + + { + api := app.Group("/task") + + api.Get("/list", handler.TaskList) + api.Post("/create", handler.TaskCreate) + api.Post("/input/create", handler.TaskInputCreate) + api.Post("/input/update", handler.TaskInputUpdate) + } + + engine.Use(front.NewFront(&front.DefaultFront, "dist/front/browser")) + + return engine +} diff --git a/internal/api/start.go b/internal/api/start.go new file mode 100644 index 0000000..1edc9d6 --- /dev/null +++ b/internal/api/start.go @@ -0,0 +1,40 @@ +package api + +import ( + "context" + "github.com/loveuer/nfflow/internal/opt" + "github.com/loveuer/nfflow/internal/util" + "github.com/sirupsen/logrus" + "net" +) + +func MustStart(ctx context.Context) { + + app := initApp(ctx) + ready := make(chan bool) + + ln, err := net.Listen("tcp", opt.Cfg.Address) + if err != nil { + logrus.Panicf("api.MustStart: net listen tcp address=%v err=%v", opt.Cfg.Address, err) + } + + go func() { + ready <- true + + if err = app.RunListener(ln); err != nil { + logrus.Panicf("api.MustStart: app run err=%v", err) + } + }() + + <-ready + + go func() { + ready <- true + <-ctx.Done() + if err = app.Shutdown(util.Timeout(1)); err != nil { + logrus.Errorf("api.MustStart: app shutdown err=%v", err) + } + }() + + <-ready +} diff --git a/internal/cmd/execute.go b/internal/cmd/execute.go new file mode 100644 index 0000000..48db716 --- /dev/null +++ b/internal/cmd/execute.go @@ -0,0 +1,24 @@ +package cmd + +import ( + "context" + "github.com/loveuer/nfflow/internal/api" + "github.com/loveuer/nfflow/internal/controller" + "github.com/loveuer/nfflow/internal/database" + "github.com/loveuer/nfflow/internal/model" + "github.com/loveuer/nfflow/internal/opt" +) + +func Execute(ctx context.Context) error { + opt.MustInitConfig() + + database.MustInitClient() + model.MustInit(database.DB) + controller.Init(database.DB, database.Cache) + + api.MustStart(ctx) + + <-ctx.Done() + + return nil +} diff --git a/internal/cmd/init.go b/internal/cmd/init.go new file mode 100644 index 0000000..490686d --- /dev/null +++ b/internal/cmd/init.go @@ -0,0 +1,11 @@ +package cmd + +import ( + "flag" + "github.com/loveuer/nfflow/internal/opt" +) + +func init() { + flag.StringVar(&opt.ConfigFile, "c", "etc/config.json", "config json file path") + flag.IntVar(&opt.Debug, "debug", 0, "") +} diff --git a/internal/controller/impl.go b/internal/controller/impl.go new file mode 100644 index 0000000..a5ccffa --- /dev/null +++ b/internal/controller/impl.go @@ -0,0 +1,19 @@ +package controller + +import "github.com/loveuer/nfflow/internal/database" + +type uc struct { + db database.Store + c database.Caches +} + +var ( + _ userController = uc{} + + // UserController todo: 可以实现自己的 controller + UserController userController +) + +func Init(db database.Store, cache database.Caches) { + UserController = uc{db: db, c: cache} +} diff --git a/internal/controller/input/es7/client.go b/internal/controller/input/es7/client.go new file mode 100644 index 0000000..4b12f6d --- /dev/null +++ b/internal/controller/input/es7/client.go @@ -0,0 +1,108 @@ +package es7 + +import ( + "context" + "crypto/tls" + "fmt" + elastic "github.com/elastic/go-elasticsearch/v7" + "github.com/elastic/go-elasticsearch/v7/esapi" + "github.com/sirupsen/logrus" + "net/http" +) + +type Client struct { + Endpoints []string `json:"endpoints"` + Username string `json:"username"` + Password string `json:"password"` + CA string `json:"ca"` + + cli *elastic.Client +} + +func (c *Client) InitClient(ctx context.Context) error { + var ( + errCh = make(chan error) + cliCh = make(chan *elastic.Client) + hiddenCa = func(cs string) string { + if len(cs) > 0 { + return "******" + } + + return "nil" + } + ) + + logrus.Debugf("es7.NewClient: endpoints=%v (username=%s password=%s ca=%s)", c.Endpoints, c.Username, c.Password, hiddenCa(c.CA)) + + ncFunc := func(endpoints []string, username, password, ca string) { + var ( + err error + cli *elastic.Client + infoResp *esapi.Response + ) + + if cli, err = elastic.NewClient( + elastic.Config{ + Addresses: endpoints, + Username: username, + Password: password, + CACert: []byte(c.CA), + RetryOnStatus: []int{429}, + MaxRetries: 3, + RetryBackoff: nil, + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, + }, + ); err != nil { + logrus.Debugf("es7.NewClient: elastic new client with endponts=%v err=%v", endpoints, err) + errCh <- err + return + } + + if infoResp, err = cli.Info(); err != nil { + logrus.Debugf("es7.NewClient: ping err=%v", err) + errCh <- err + return + } + + if infoResp.StatusCode != 200 { + err = fmt.Errorf("info es status=%d", infoResp.StatusCode) + logrus.Debugf("es7.NewClient: status err=%v", err) + errCh <- err + return + } + + cliCh <- cli + } + + go ncFunc(c.Endpoints, c.Username, c.Password, c.CA) + + select { + case <-ctx.Done(): + return fmt.Errorf("dial es=%s err=%v", c.Endpoints, context.DeadlineExceeded) + case c.cli = <-cliCh: + return nil + case e := <-errCh: + return e + } +} + +func (c *Client) Ping(ctx context.Context) error { + rr, err := c.cli.Info( + c.cli.Info.WithContext(ctx), + ) + if err != nil { + return err + } + + if rr.StatusCode != 200 { + return fmt.Errorf("ping status=%d msg=%s", rr.StatusCode, rr.String()) + } + + return nil +} + +func (c *Client) Save(ctx context.Context) error { + return nil +} diff --git a/internal/controller/interface.go b/internal/controller/interface.go new file mode 100644 index 0000000..2584565 --- /dev/null +++ b/internal/controller/interface.go @@ -0,0 +1,12 @@ +package controller + +import "github.com/loveuer/nfflow/internal/model" + +type userController interface { + GetUser(id uint64) (*model.User, error) + GetUserByToken(token string) (*model.User, error) + CacheUser(user *model.User) error + CacheToken(token string, user *model.User) error + RmUserCache(id uint64) error + DeleteUser(id uint64) error +} diff --git a/internal/controller/user.go b/internal/controller/user.go new file mode 100644 index 0000000..30053d0 --- /dev/null +++ b/internal/controller/user.go @@ -0,0 +1,139 @@ +package controller + +import ( + "encoding/json" + "errors" + "fmt" + "github.com/loveuer/nf/nft/resp" + "github.com/loveuer/nfflow/internal/database" + "github.com/loveuer/nfflow/internal/model" + "github.com/loveuer/nfflow/internal/opt" + "github.com/loveuer/nfflow/internal/util" + "github.com/sirupsen/logrus" + "github.com/spf13/cast" + "gorm.io/gorm" + "strings" + "time" +) + +func (u uc) GetUser(id uint64) (*model.User, error) { + var ( + err error + target = new(model.User) + key = fmt.Sprintf("%s:user:id:%d", opt.CachePrefix, id) + bs []byte + ) + + if opt.EnableUserCache { + if bs, err = u.c.Get(util.Timeout(3), key); err != nil { + logrus.Warnf("controller.GetUser: get user by cache key=%s err=%v", key, err) + goto ByDB + } + + if err = json.Unmarshal(bs, target); err != nil { + logrus.Warnf("controller.GetUser: json unmarshal key=%s by=%s err=%v", key, string(bs), err) + goto ByDB + } + + return target, nil + } + +ByDB: + if err = u.db.Session(util.Timeout(3)). + Model(&model.User{}). + Where("id = ?", id). + Take(target). + Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + // tips: 公开项目需要考虑击穿处理 + return target, resp.NewError(400, "目标不存在", err, nil) + } + + return target, resp.NewError(500, "", err, nil) + } + + if opt.EnableUserCache { + if err = u.CacheUser(target); err != nil { + logrus.Warnf("controller.GetUser: cache user key=%s err=%v", key, err) + } + } + + return target, nil +} + +func (u uc) GetUserByToken(token string) (*model.User, error) { + strs := strings.Split(token, ".") + if len(strs) != 3 { + return nil, fmt.Errorf("controller.GetUserByToken: jwt token invalid, token=%s", token) + } + + key := fmt.Sprintf("%s:user:token:%s", opt.CachePrefix, strs[2]) + bs, err := u.c.Get(util.Timeout(3), key) + if err != nil { + return nil, err + } + + logrus.Tracef("controller.GetUserByToken: key=%s cache bytes=%s", key, string(bs)) + + userId := cast.ToUint64(string(bs)) + if userId == 0 { + return nil, fmt.Errorf("controller.GetUserByToken: bs=%s cast to uint64 err", string(bs)) + } + + var op *model.User + + if op, err = u.GetUser(userId); err != nil { + return nil, err + } + + return op, nil +} + +func (u uc) CacheUser(target *model.User) error { + key := fmt.Sprintf("%s:user:id:%d", opt.CachePrefix, target.Id) + return u.c.Set(util.Timeout(3), key, target) +} + +func (u uc) CacheToken(token string, user *model.User) error { + strs := strings.Split(token, ".") + if len(strs) != 3 { + return fmt.Errorf("controller.CacheToken: jwt token invalid") + } + + key := fmt.Sprintf("%s:user:token:%s", opt.CachePrefix, strs[2]) + return u.c.SetEx(util.Timeout(3), key, user.Id, opt.TokenTimeout) +} +func (u uc) RmUserCache(id uint64) error { + key := fmt.Sprintf("%s:user:id:%d", opt.CachePrefix, id) + return u.c.Del(util.Timeout(3), key) +} + +func (u uc) DeleteUser(id uint64) error { + var ( + err error + now = time.Now() + username = "CONCAT(username, '@del')" + ) + + if opt.Cfg.Database.Type == "sqlite" { + username = "username || '@del'" + } + + if err = database.DB.Session(util.Timeout(5)). + Model(&model.User{}). + Where("id = ?", id). + Updates(map[string]any{ + "deleted_at": now.UnixMilli(), + "username": gorm.Expr(username), + }).Error; err != nil { + return resp.NewError(500, "", err, nil) + } + + if opt.EnableUserCache { + if err = u.RmUserCache(id); err != nil { + logrus.Warnf("controller.DeleteUser: rm user=%d cache err=%v", id, err) + } + } + + return nil +} diff --git a/internal/database/cache.go b/internal/database/cache.go new file mode 100644 index 0000000..f4cee95 --- /dev/null +++ b/internal/database/cache.go @@ -0,0 +1,26 @@ +package database + +import "encoding/json" + +type encoded_value interface { + MarshalBinary() ([]byte, error) +} + +type decoded_value interface { + UnmarshalBinary(bs []byte) error +} + +func handleValue(value any) ([]byte, error) { + var ( + bs []byte + err error + ) + + if imp, ok := value.(encoded_value); ok { + bs, err = imp.MarshalBinary() + } else { + bs, err = json.Marshal(value) + } + + return bs, err +} diff --git a/internal/database/cache_memory.go b/internal/database/cache_memory.go new file mode 100644 index 0000000..2d6423f --- /dev/null +++ b/internal/database/cache_memory.go @@ -0,0 +1,63 @@ +package database + +import ( + "context" + "fmt" + "gitea.com/taozitaozi/gredis" + "time" +) + +var _ Caches = (*_mem)(nil) + +type _mem struct { + client *gredis.Gredis +} + +func (m *_mem) Get(ctx context.Context, key string) ([]byte, error) { + v, err := m.client.Get(key) + if err != nil { + return nil, err + } + + bs, ok := v.([]byte) + if !ok { + return nil, fmt.Errorf("invalid value type=%T", v) + } + + return bs, nil +} + +func (m *_mem) GetEx(ctx context.Context, key string, duration time.Duration) ([]byte, error) { + v, err := m.client.GetEx(key, duration) + if err != nil { + return nil, err + } + + bs, ok := v.([]byte) + if !ok { + return nil, fmt.Errorf("invalid value type=%T", v) + } + + return bs, nil +} + +func (m *_mem) Set(ctx context.Context, key string, value any) error { + bs, err := handleValue(value) + if err != nil { + return err + } + return m.client.Set(key, bs) +} + +func (m *_mem) SetEx(ctx context.Context, key string, value any, duration time.Duration) error { + bs, err := handleValue(value) + if err != nil { + return err + } + return m.client.SetEx(key, bs, duration) +} + +func (m *_mem) Del(ctx context.Context, keys ...string) error { + m.client.Delete(keys...) + return nil +} diff --git a/internal/database/cache_redis.go b/internal/database/cache_redis.go new file mode 100644 index 0000000..cad74b1 --- /dev/null +++ b/internal/database/cache_redis.go @@ -0,0 +1,54 @@ +package database + +import ( + "context" + "github.com/go-redis/redis/v8" + "time" +) + +type _redis struct { + client *redis.Client +} + +func (r *_redis) Get(ctx context.Context, key string) ([]byte, error) { + result, err := r.client.Get(ctx, key).Result() + if err != nil { + return nil, err + } + + return []byte(result), nil +} + +func (r *_redis) GetEx(ctx context.Context, key string, duration time.Duration) ([]byte, error) { + result, err := r.client.GetEx(ctx, key, duration).Result() + if err != nil { + return nil, err + } + + return []byte(result), nil +} + +func (r *_redis) Set(ctx context.Context, key string, value any) error { + bs, err := handleValue(value) + if err != nil { + return err + } + + _, err = r.client.Set(ctx, key, bs, redis.KeepTTL).Result() + return err +} + +func (r *_redis) SetEx(ctx context.Context, key string, value any, duration time.Duration) error { + bs, err := handleValue(value) + if err != nil { + return err + } + + _, err = r.client.SetEX(ctx, key, bs, duration).Result() + + return err +} + +func (r *_redis) Del(ctx context.Context, keys ...string) error { + return r.client.Del(ctx, keys...).Err() +} diff --git a/internal/database/client.go b/internal/database/client.go new file mode 100644 index 0000000..03ef903 --- /dev/null +++ b/internal/database/client.go @@ -0,0 +1,6 @@ +package database + +var ( + DB Store + Cache Caches +) diff --git a/internal/database/init.go b/internal/database/init.go new file mode 100644 index 0000000..11df332 --- /dev/null +++ b/internal/database/init.go @@ -0,0 +1,89 @@ +package database + +import ( + "fmt" + "gitea.com/taozitaozi/gredis" + "github.com/glebarez/sqlite" + "github.com/go-redis/redis/v8" + "github.com/loveuer/nfflow/internal/opt" + "github.com/loveuer/nfflow/internal/util" + "gorm.io/driver/mysql" + "gorm.io/driver/postgres" + "gorm.io/gorm" +) + +func MustInitClient() { + var ( + err error + ) + + // todo: 可以实现自己的 "Store" sql_db, like sqlite, postgresql + if DB, err = initSql(); err != nil { + panic(fmt.Errorf("database.MustInitClient: init sql err=%v", err)) + } + + // todo: 可以实现自己的 "Caches" 缓存, like redis + if Cache, err = initCacher(); err != nil { + panic(fmt.Errorf("database.MustInitCache: init cache err=%v", err)) + } +} + +func initSql() (Store, error) { + var ( + err error + client *gorm.DB + ) + + switch opt.Cfg.Database.Type { + case "postgresql": + dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=Asia/Shanghai", + opt.Cfg.Database.Host, opt.Cfg.Database.Username, opt.Cfg.Database.Password, opt.Cfg.Database.DB, opt.Cfg.Database.Port) + if client, err = gorm.Open(postgres.Open(dsn)); err != nil { + return nil, err + } + case "mysql": + dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", + opt.Cfg.Database.Username, opt.Cfg.Database.Password, opt.Cfg.Database.Host, opt.Cfg.Database.Port, opt.Cfg.Database.DB) + if client, err = gorm.Open(mysql.Open(dsn)); err != nil { + return nil, err + } + case "sqlite": + if client, err = gorm.Open(sqlite.Open(opt.Cfg.Database.Path)); err != nil { + return nil, err + } + default: + return nil, fmt.Errorf("unsupportted databsae type=%s", opt.Cfg.Database.Type) + } + + return &_db{client: client}, nil +} + +func initCacher() (Caches, error) { + var ( + err error + ) + + switch opt.Cfg.Cache.Type { + case "redis": + var rc *redis.Client + rc = redis.NewClient(&redis.Options{ + Addr: fmt.Sprintf("%s:%d", opt.Cfg.Cache.Host, opt.Cfg.Cache.Port), + Username: opt.Cfg.Cache.Username, + Password: opt.Cfg.Cache.Password, + }) + + if err = rc.Ping(util.Timeout(5)).Err(); err != nil { + return nil, fmt.Errorf("redis ping err=%v", err) + } + + return &_redis{client: rc}, nil + case "memory": + var mc *gredis.Gredis + mc = gredis.NewGredis(-1) + + return &_mem{client: mc}, nil + default: + return nil, fmt.Errorf("unsupportted cache type=%s", opt.Cfg.Cache.Type) + } + +} diff --git a/internal/database/interface.go b/internal/database/interface.go new file mode 100644 index 0000000..38f95a9 --- /dev/null +++ b/internal/database/interface.go @@ -0,0 +1,21 @@ +package database + +import ( + "context" + "gorm.io/gorm" + "time" +) + +type Caches interface { + Get(ctx context.Context, key string) ([]byte, error) + GetEx(ctx context.Context, key string, duration time.Duration) ([]byte, error) + // Set value 会被序列化, 优先使用 MarshalBinary 方法, 没有则执行 json.Marshal + Set(ctx context.Context, key string, value any) error + // SetEx value 会被序列化, 优先使用 MarshalBinary 方法, 没有则执行 json.Marshal + SetEx(ctx context.Context, key string, value any, duration time.Duration) error + Del(ctx context.Context, keys ...string) error +} + +type Store interface { + Session(ctx context.Context) *gorm.DB +} diff --git a/internal/database/sql.go b/internal/database/sql.go new file mode 100644 index 0000000..b66a6c9 --- /dev/null +++ b/internal/database/sql.go @@ -0,0 +1,20 @@ +package database + +import ( + "context" + "github.com/loveuer/nfflow/internal/opt" + "gorm.io/gorm" +) + +type _db struct { + client *gorm.DB +} + +func (d *_db) Session(ctx context.Context) *gorm.DB { + s := d.client.Session(&gorm.Session{}) + if opt.Debug > 0 || opt.DBDebug { + s = s.Debug() + } + + return s +} diff --git a/internal/handler/log.go b/internal/handler/log.go new file mode 100644 index 0000000..61ce245 --- /dev/null +++ b/internal/handler/log.go @@ -0,0 +1,102 @@ +package handler + +import ( + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/resp" + "github.com/loveuer/nfflow/internal/database" + "github.com/loveuer/nfflow/internal/model" + "github.com/loveuer/nfflow/internal/opt" + "github.com/loveuer/nfflow/internal/sqlType" + "github.com/loveuer/nfflow/internal/util" + "github.com/sirupsen/logrus" +) + +func LogCategories() nf.HandlerFunc { + return func(c *nf.Ctx) error { + return resp.Resp200(c, model.OpLogType(0).All()) + } +} + +func LogList(c *nf.Ctx) error { + type Req struct { + Page int `query:"page"` + Size int `query:"size"` + UserIds []uint64 `query:"user_ids"` + Types sqlType.NumSlice[model.OpLogType] `query:"types"` + } + + var ( + ok bool + op *model.User + err error + req = new(Req) + list = make([]*model.OpLog, 0) + total int + ) + + if op, ok = c.Locals("user").(*model.User); !ok { + return resp.Resp401(c, nil) + } + + if err = c.QueryParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Size <= 0 { + req.Size = opt.DefaultSize + } + + if req.Size > opt.MaxSize { + return resp.Resp400(c, req, "参数过大") + } + + txCount := op.Role.Where(database.DB.Session(util.Timeout(3)). + Model(&model.OpLog{}). + Select("COUNT(`op_logs`.`id`)"). + Joins("LEFT JOIN users ON `users`.`id` = `op_logs`.`user_id`")) + txGet := op.Role.Where(database.DB.Session(util.Timeout(10)). + Model(&model.OpLog{}). + Joins("LEFT JOIN users ON `users`.`id` = `op_logs`.`user_id`")) + + if len(req.UserIds) != 0 { + txCount = txCount.Where("op_logs.user_id IN ?", req.UserIds) + txGet = txGet.Where("op_logs.user_id IN ?", req.UserIds) + } + + if len(req.Types) != 0 { + txCount = txCount.Where("op_logs.type IN ?", req.Types) + txGet = txGet.Where("op_logs.type IN ?", req.Types) + } + + if err = txCount. + Find(&total). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + if err = txGet. + Offset(req.Page * req.Size). + Limit(req.Size). + Order("`op_logs`.`created_at` DESC"). + Find(&list). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + for _, log := range list { + m := make(map[string]any) + if err = log.Content.Bind(&m); err != nil { + logrus.Warnf("handler.LogList: log=%d content=%v bind map[string]any err=%v", log.Id, log.Content, err) + continue + } + + if log.HTML, err = log.Type.Render(m); err != nil { + logrus.Warnf("handler.LogList: log=%d template=%s render map=%+v err=%v", log.Id, log.Type.Template(), m, err) + continue + } + + logrus.Tracef("handler.LogList: log=%d render map=%+v string=%s", log.Id, m, log.HTML) + } + + return resp.Resp200(c, nf.Map{"list": list, "total": total}) +} diff --git a/internal/handler/task.go b/internal/handler/task.go new file mode 100644 index 0000000..01fdafb --- /dev/null +++ b/internal/handler/task.go @@ -0,0 +1,125 @@ +package handler + +import ( + "fmt" + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/resp" + "github.com/loveuer/nfflow/internal/database" + "github.com/loveuer/nfflow/internal/model" + "github.com/loveuer/nfflow/internal/opt" + "github.com/loveuer/nfflow/internal/sqlType" + "github.com/loveuer/nfflow/internal/util" + "time" +) + +func TaskList(c *nf.Ctx) error { + type Req struct { + Keyword string `query:"keyword,omitempty"` + Page int `query:"page,omitempty"` + Size int `query:"size,omitempty"` + Targets sqlType.NumSlice[uint64] `query:"targets,omitempty"` + } + + var ( + err error + req = new(Req) + total int + list = make([]*model.Task, 0) + ) + + if err = c.QueryParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Size <= 0 { + req.Size = 20 + } + + txGet := database.DB.Session(util.Timeout(10)). + Model(&model.Task{}) + txCount := database.DB.Session(util.Timeout(5)). + Model(&model.Task{}). + Select("COUNT(id)") + + if req.Keyword != "" { + key := fmt.Sprintf("%%%s%%", req.Keyword) + txGet = txGet.Where("task_name", key) + txCount = txCount.Where("task_name", key) + } + + if err = txCount.Find(&total).Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + if err = txGet. + Order("updated_at DESC"). + Offset(req.Page * req.Size). + Limit(req.Size). + Find(&list). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + return resp.Resp200(c, nf.Map{"list": list, "total": total}) +} + +func TaskCreate(c *nf.Ctx) error { + type Req struct { + TaskName string `json:"task_name"` + TaskType string `json:"task_type"` + Timeout int `json:"timeout"` + Cron string `json:"cron"` + RunAt int64 `json:"run_at"` + } + + var ( + err error + req = new(Req) + now = time.Now() + ) + + if err = c.BodyParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.TaskName != "" { + return resp.Resp400(c, req) + } + + task := &model.Task{TaskName: req.TaskName} + + if req.Timeout < opt.TaskMinTimeout || req.Timeout > opt.TaskMaxTimeout { + return resp.Resp400(c, req, fmt.Sprintf("timeout 时长过短(%d - %d)", opt.TaskMinTimeout, opt.TaskMaxTimeout)) + } + + task.TimeoutSecond = req.Timeout + + switch req.TaskType { + case "once": + case "timing": + rt := time.UnixMilli(req.RunAt) + if rt.Sub(now).Seconds() > opt.TaskFetchInterval { + return resp.Resp400(c, req, "任务执行时间距离当前时间太短") + } + task.TaskRunType = fmt.Sprintf("T-%d", req.RunAt) + case "cron": + task.TaskRunType = fmt.Sprintf("C-%s", req.TaskType) + default: + return resp.Resp400(c, req, "任务执行类型: once/timing/cron") + } + + if err = database.DB.Session(util.Timeout(5)). + Create(task). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + return resp.Resp200(c, task) +} + +func TaskInputCreate(c *nf.Ctx) error { + panic("impl") +} +func TaskInputUpdate(c *nf.Ctx) error { + panic("impl") +} diff --git a/internal/handler/user.go b/internal/handler/user.go new file mode 100644 index 0000000..ac905d4 --- /dev/null +++ b/internal/handler/user.go @@ -0,0 +1,485 @@ +package handler + +import ( + "errors" + "fmt" + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/resp" + "github.com/loveuer/nfflow/internal/controller" + "github.com/loveuer/nfflow/internal/database" + "github.com/loveuer/nfflow/internal/middleware/oplog" + "github.com/loveuer/nfflow/internal/model" + "github.com/loveuer/nfflow/internal/opt" + "github.com/loveuer/nfflow/internal/sqlType" + "github.com/loveuer/nfflow/internal/util" + "github.com/samber/lo" + "gorm.io/gorm" + "gorm.io/gorm/clause" + "time" +) + +func AuthLogin(c *nf.Ctx) error { + type Req struct { + Username string `json:"username"` + Password string `json:"password"` + } + + var ( + err error + req = new(Req) + target = new(model.User) + token string + now = time.Now() + ) + + if err = c.BodyParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if err = database.DB.Session(util.Timeout(3)). + Model(&model.User{}). + Where("username = ?", req.Username). + Where("deleted_at = 0"). + Take(target). + Error; err != nil { + if errors.Is(err, gorm.ErrRecordNotFound) { + return resp.Resp400(c, err.Error(), "用户名或密码错误") + } + + return resp.Resp500(c, err.Error()) + } + + if !util.ComparePassword(req.Password, target.Password) { + return resp.Resp400(c, nil, "用户名或密码错误") + } + + if err = target.IsValid(true); err != nil { + return resp.Resp401(c, nil, err.Error()) + } + + if err = controller.UserController.CacheUser(target); err != nil { + return resp.RespError(c, err) + } + + if token, err = target.JwtEncode(); err != nil { + return resp.Resp500(c, err.Error()) + } + + if err = controller.UserController.CacheToken(token, target); err != nil { + return resp.RespError(c, err) + } + + if !opt.MultiLogin { + var ( + last = fmt.Sprintf("%s:user:last_token:%d", opt.CachePrefix, target.Id) + bs []byte + ) + + if bs, err = database.Cache.Get(util.Timeout(3), last); err == nil { + key := fmt.Sprintf("%s:user:token:%s", opt.CachePrefix, string(bs)) + _ = database.Cache.Del(util.Timeout(3), key) + } + + if err = database.Cache.Set(util.Timeout(3), last, token); err != nil { + return resp.Resp500(c, err.Error()) + } + } + + c.Set("Set-Cookie", fmt.Sprintf("%s=%s; Path=/", opt.CookieName, token)) + c.Locals("user", target) + c.Locals(opt.OpLogLocalKey, &oplog.OpLog{Type: model.OpLogTypeLogin, Content: map[string]any{ + "time": now.UnixMilli(), + "ip": c.IP(), + }}) + + return resp.Resp200(c, nf.Map{"token": token, "user": target}) +} + +func AuthVerify(c *nf.Ctx) error { + op, ok := c.Locals("user").(*model.User) + if !ok { + return resp.Resp401(c, nil) + } + + token, ok := c.Locals("token").(string) + if !ok { + return resp.Resp401(c, nil) + } + + return resp.Resp200(c, nf.Map{"token": token, "user": op}) +} + +func AuthLogout(c *nf.Ctx) error { + op, ok := c.Locals("user").(*model.User) + if !ok { + return resp.Resp401(c, nil) + } + + _ = controller.UserController.RmUserCache(op.Id) + + c.Locals(opt.OpLogLocalKey, &oplog.OpLog{ + Type: model.OpLogTypeLogout, + Content: map[string]any{ + "time": time.Now().UnixMilli(), + "ip": c.IP(), + }, + }) + + return resp.Resp200(c, nil) +} + +func ManageUserList(c *nf.Ctx) error { + type Req struct { + Page int `query:"page"` + Size int `query:"size"` + Keyword string `query:"keyword"` + } + + var ( + err error + ok bool + op *model.User + req = new(Req) + list = make([]*model.User, 0) + total = 0 + ) + + if op, ok = c.Locals("user").(*model.User); !ok { + return resp.Resp401(c, nil) + } + + if err = c.QueryParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Size == 0 { + req.Size = opt.DefaultSize + } + + if req.Size > opt.MaxSize { + return resp.Resp400(c, nf.Map{"msg": "size over max", "max": opt.MaxSize}) + } + + if err = op.Role.Where(database.DB.Session(util.Timeout(10)). + Model(&model.User{}). + Where("deleted_at = 0")). + Order("updated_at DESC"). + Offset(req.Page * req.Size). + Limit(req.Size). + Find(&list). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + if err = op.Role.Where(database.DB.Session(util.Timeout(5)). + Model(&model.User{}). + Select("COUNT(id)"). + Where("deleted_at = 0")). + Find(&total). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + return resp.Resp200(c, nf.Map{"list": list, "total": total}) +} + +func ManageUserCreate(c *nf.Ctx) error { + type Req struct { + Username string `json:"username"` + Nickname string `json:"nickname"` + Password string `json:"password"` + Status model.Status `json:"status"` + Role model.Role `json:"role"` + Privileges sqlType.NumSlice[model.Privilege] `json:"privileges"` + Comment string `json:"comment"` + ActiveAt int64 `json:"active_at"` + Deadline int64 `json:"deadline"` + } + + var ( + err error + ok bool + op *model.User + req = new(Req) + now = time.Now() + ) + + if op, ok = c.Locals("user").(*model.User); !ok { + return resp.Resp401(c, nil) + } + + if err = c.BodyParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Username == "" || req.Password == "" { + return resp.Resp400(c, req) + } + + if err = util.CheckPassword(req.Password); err != nil { + return resp.Resp400(c, req, err.Error()) + } + + if req.Nickname == "" { + req.Nickname = req.Username + } + + if req.Status.Code() == "unknown" { + return resp.Resp400(c, req, "用户状态不正常") + } + + if req.Role == 0 { + req.Role = model.RoleUser + } + + if req.ActiveAt == 0 { + req.ActiveAt = now.UnixMilli() + } + + if req.Deadline == 0 { + req.Deadline = now.AddDate(99, 0, 0).UnixMilli() + } + + newUser := &model.User{ + CreatedAt: now.UnixMilli(), + UpdatedAt: now.UnixMilli(), + Username: req.Username, + Password: util.NewPassword(req.Password), + Status: req.Status, + Nickname: req.Nickname, + Comment: req.Comment, + Role: req.Role, + Privileges: req.Privileges, + CreatedById: op.Id, + CreatedByName: op.CreatedByName, + ActiveAt: op.ActiveAt, + Deadline: op.Deadline, + } + + if err = newUser.IsValid(false); err != nil { + return resp.Resp400(c, newUser, err.Error()) + } + + if !newUser.Role.CanOP(op) { + return resp.Resp403(c, newUser, "角色不符合") + } + + if err = database.DB.Session(util.Timeout(5)). + Create(newUser). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + c.Locals(opt.OpLogLocalKey, &oplog.OpLog{Type: model.OpLogTypeCreateUser, Content: map[string]any{ + "target_id": newUser.Id, + "target_username": newUser.Username, + "target_nickname": newUser.Nickname, + "target_status": newUser.Status.Label(), + "target_role": newUser.Role.Label(), + "target_privileges": lo.Map(newUser.Privileges, func(item model.Privilege, index int) string { + return item.Label() + }), + "target_active_at": op.ActiveAt, + "target_deadline": op.Deadline, + }}) + + return resp.Resp200(c, newUser) +} + +func ManageUserUpdate(c *nf.Ctx) error { + type Req struct { + Id uint64 `json:"id"` + Nickname string `json:"nickname"` + Password string `json:"password"` + Status model.Status `json:"status"` + Comment string `json:"comment"` + Role model.Role `json:"role"` + Privileges sqlType.NumSlice[model.Privilege] `json:"privileges"` + ActiveAt int64 `json:"active_at"` + Deadline int64 `json:"deadline"` + } + + type Change struct { + Old any `json:"old"` + New any `json:"new"` + } + + var ( + ok bool + op *model.User + target *model.User + err error + req = new(Req) + rm = make(map[string]any) + updates = make(map[string]any) + changes = make(map[string]Change) + ) + + if op, ok = c.Locals("user").(*model.User); !ok { + return resp.Resp401(c, nil) + } + + if err = c.BodyParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if err = c.BodyParser(&rm); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Id == 0 { + return resp.Resp400(c, "未指定目标用户") + } + + if req.Id == op.Id { + return resp.Resp400(c, "无法修改自己") + } + + if target, err = controller.UserController.GetUser(req.Id); err != nil { + return resp.RespError(c, err) + } + + if op.Role < target.Role || ((op.Role == target.Role) && opt.RoleMustLess) { + return resp.Resp403(c, req) + } + + if _, ok = rm["nickname"]; ok { + if req.Nickname == "" { + return resp.Resp400(c, req) + } + + updates["nickname"] = req.Nickname + changes["昵称"] = Change{Old: target.Nickname, New: req.Nickname} + } + + if _, ok = rm["password"]; ok { + if err = util.CheckPassword(req.Password); err != nil { + return resp.Resp400(c, err.Error()) + } + + updates["password"] = util.NewPassword(req.Password) + changes["密码"] = Change{Old: "******", New: "******"} + } + + if _, ok = rm["status"]; ok { + if req.Status.Code() == "unknown" { + return resp.Resp400(c, req, "用户状态不符合") + } + + updates["status"] = req.Status + changes["状态"] = Change{Old: target.Status.Label(), New: req.Status.Label()} + } + + if _, ok = rm["comment"]; ok { + updates["comment"] = req.Comment + changes["备注"] = Change{Old: target.Comment, New: req.Comment} + } + + if _, ok = rm["role"]; ok { + if op.Role < req.Role || ((op.Role == req.Role) && opt.RoleMustLess) { + return resp.Resp400(c, req, "用户角色不符合") + } + + updates["role"] = req.Role + changes["角色"] = Change{Old: target.Role.Label(), New: req.Role.Label()} + } + + if _, ok = rm["privileges"]; ok { + for _, val := range req.Privileges { + if lo.IndexOf(op.Privileges, val) < 0 { + return resp.Resp400(c, req, fmt.Sprintf("权限: %s 不符合", val.Label())) + } + } + + changes["权限"] = Change{ + Old: lo.Map(target.Privileges, func(item model.Privilege, index int) string { + return item.Label() + }), + New: lo.Map(req.Privileges, func(item model.Privilege, index int) string { + return item.Label() + }), + } + updates["privileges"] = req.Privileges + } + + if _, ok = rm["active_at"]; ok { + updates["active_at"] = time.UnixMilli(req.ActiveAt).UnixMilli() + changes["激活时间"] = Change{Old: target.ActiveAt, New: req.ActiveAt} + } + + if _, ok = rm["deadline"]; ok { + updates["deadline"] = time.UnixMilli(req.Deadline).UnixMilli() + changes["到期时间"] = Change{Old: target.Deadline, New: req.Deadline} + } + + updated := new(model.User) + if err = database.DB.Session(util.Timeout(5)). + Model(updated). + Clauses(clause.Returning{}). + Where("id = ?", req.Id). + Updates(updates). + Error; err != nil { + return resp.Resp500(c, err.Error()) + } + + if err = controller.UserController.RmUserCache(req.Id); err != nil { + return resp.RespError(c, err) + } + + c.Locals(opt.OpLogLocalKey, &oplog.OpLog{Type: model.OpLogTypeUpdateUser, Content: map[string]any{ + "target_id": target.Id, + "target_username": target.Username, + "changes": changes, + }}) + + return resp.Resp200(c, updated) +} + +func ManageUserDelete(c *nf.Ctx) error { + type Req struct { + Id uint64 `json:"id"` + } + + var ( + ok bool + op *model.User + target *model.User + err error + req = new(Req) + ) + + if err = c.BodyParser(req); err != nil { + return resp.Resp400(c, err.Error()) + } + + if req.Id == 0 { + return resp.Resp400(c, req) + } + + if op, ok = c.Locals("user").(*model.User); !ok { + return resp.Resp401(c, nil) + } + + if req.Id == op.Id { + return resp.Resp400(c, nil, "无法删除自己") + } + + if target, err = controller.UserController.GetUser(req.Id); err != nil { + return resp.RespError(c, err) + } + + if op.Role < target.Role || (op.Role == target.Role && opt.RoleMustLess) { + return resp.Resp403(c, nil) + } + + if err = controller.UserController.DeleteUser(target.Id); err != nil { + return resp.RespError(c, err) + } + + c.Locals(opt.OpLogLocalKey, &oplog.OpLog{Type: model.OpLogTypeDeleteUser, Content: map[string]any{ + "target_id": target.Id, + "target_username": target.Username, + }}) + + return resp.Resp200(c, nil, "删除成功") +} diff --git a/internal/middleware/auth/auth.go b/internal/middleware/auth/auth.go new file mode 100644 index 0000000..bfcb752 --- /dev/null +++ b/internal/middleware/auth/auth.go @@ -0,0 +1,55 @@ +package auth + +import ( + "errors" + "gitea.com/taozitaozi/gredis" + "github.com/go-redis/redis/v8" + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/resp" + "github.com/loveuer/nfflow/internal/controller" + "github.com/loveuer/nfflow/internal/opt" + "github.com/sirupsen/logrus" + "strings" +) + +var ( + tokenFunc = func(c *nf.Ctx) string { + token := c.Get("Authorization") + if token == "" { + token = c.Cookies(opt.CookieName) + } + + return token + } +) + +func NewAuth() nf.HandlerFunc { + return func(c *nf.Ctx) error { + token := tokenFunc(c) + + if token = strings.TrimPrefix(token, "Bearer "); token == "" { + return resp.Resp401(c, token) + } + + logrus.Tracef("middleware.NewAuth: token=%s", token) + + target, err := controller.UserController.GetUserByToken(token) + if err != nil { + logrus.Errorf("middleware.NewAuth: get user by token=%s err=%v", token, err) + if errors.Is(err, redis.Nil) || errors.Is(err, gredis.ErrKeyNotFound) { + return resp.Resp401(c, err) + } + + return resp.RespError(c, err) + } + + if err = target.IsValid(true); err != nil { + return resp.Resp401(c, err.Error(), err.Error()) + } + + c.Locals("user", target) + c.Locals("token", token) + + return c.Next() + } +} diff --git a/internal/middleware/front/dist/front/3rdpartylicenses.txt b/internal/middleware/front/dist/front/3rdpartylicenses.txt new file mode 100644 index 0000000..83f417b --- /dev/null +++ b/internal/middleware/front/dist/front/3rdpartylicenses.txt @@ -0,0 +1,370 @@ + +-------------------------------------------------------------------------------- +Package: @angular/core +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: rxjs +License: "Apache-2.0" + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +-------------------------------------------------------------------------------- +Package: tslib +License: "0BSD" + +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: @angular/common +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/platform-browser +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/router +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/cdk +License: "MIT" + +The MIT License + +Copyright (c) 2024 Google LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @angular/material +License: "MIT" + +The MIT License + +Copyright (c) 2024 Google LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @angular/animations +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/forms +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: js-base64 +License: "BSD-3-Clause" + +Copyright (c) 2014, Dan Kogai +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of {{{project}}} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-------------------------------------------------------------------------------- +Package: @angular/service-worker +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: zone.js +License: "MIT" + +The MIT License + +Copyright (c) 2010-2023 Google LLC. https://angular.io/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-128x128.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-128x128.png new file mode 100644 index 0000000..5a9a2cc Binary files /dev/null and b/internal/middleware/front/dist/front/browser/assets/icons/icon-128x128.png differ diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-144x144.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-144x144.png new file mode 100644 index 0000000..11702cd Binary files /dev/null and b/internal/middleware/front/dist/front/browser/assets/icons/icon-144x144.png differ diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-152x152.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-152x152.png new file mode 100644 index 0000000..ff4e06b Binary files /dev/null and b/internal/middleware/front/dist/front/browser/assets/icons/icon-152x152.png differ diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-192x192.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-192x192.png new file mode 100644 index 0000000..afd36a4 Binary files /dev/null and b/internal/middleware/front/dist/front/browser/assets/icons/icon-192x192.png differ diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-384x384.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-384x384.png new file mode 100644 index 0000000..613ac79 Binary files /dev/null and b/internal/middleware/front/dist/front/browser/assets/icons/icon-384x384.png differ diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-512x512.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-512x512.png new file mode 100644 index 0000000..7574990 Binary files /dev/null and b/internal/middleware/front/dist/front/browser/assets/icons/icon-512x512.png differ diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-72x72.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-72x72.png new file mode 100644 index 0000000..033724e Binary files /dev/null and b/internal/middleware/front/dist/front/browser/assets/icons/icon-72x72.png differ diff --git a/internal/middleware/front/dist/front/browser/assets/icons/icon-96x96.png b/internal/middleware/front/dist/front/browser/assets/icons/icon-96x96.png new file mode 100644 index 0000000..3090dc2 Binary files /dev/null and b/internal/middleware/front/dist/front/browser/assets/icons/icon-96x96.png differ diff --git a/internal/middleware/front/dist/front/browser/favicon.ico b/internal/middleware/front/dist/front/browser/favicon.ico new file mode 100644 index 0000000..57614f9 Binary files /dev/null and b/internal/middleware/front/dist/front/browser/favicon.ico differ diff --git a/internal/middleware/front/dist/front/browser/index.html b/internal/middleware/front/dist/front/browser/index.html new file mode 100644 index 0000000..031c5ef --- /dev/null +++ b/internal/middleware/front/dist/front/browser/index.html @@ -0,0 +1,19 @@ + + + + + Front + + + + + + + + + + + + + diff --git a/internal/middleware/front/dist/front/browser/main-K7KCRENT.js b/internal/middleware/front/dist/front/browser/main-K7KCRENT.js new file mode 100644 index 0000000..9e67455 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/main-K7KCRENT.js @@ -0,0 +1,15 @@ +var gE=Object.defineProperty,_E=Object.defineProperties;var bE=Object.getOwnPropertyDescriptors;var N_=Object.getOwnPropertySymbols;var vE=Object.prototype.hasOwnProperty,yE=Object.prototype.propertyIsEnumerable;var L_=(n,e,i)=>e in n?gE(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i,w=(n,e)=>{for(var i in e||={})vE.call(e,i)&&L_(n,i,e[i]);if(N_)for(var i of N_(e))yE.call(e,i)&&L_(n,i,e[i]);return n},ae=(n,e)=>_E(n,bE(e));function wE(n,e){return Object.is(n,e)}var ft=null,Cl=!1,Dl=1,Ss=Symbol("SIGNAL");function mt(n){let e=ft;return ft=n,e}var hf={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function xE(n){if(Cl)throw new Error("");if(ft===null)return;ft.consumerOnSignalRead(n);let e=ft.nextProducerIndex++;if(Xr(ft),en.nextProducerIndex;)n.producerNode.pop(),n.producerLastReadVersion.pop(),n.producerIndexOfThis.pop()}}function mf(n){Xr(n);for(let e=0;e0}function Xr(n){n.producerNode??=[],n.producerIndexOfThis??=[],n.producerLastReadVersion??=[]}function $_(n){n.liveConsumerNode??=[],n.liveConsumerIndexOfThis??=[]}function IE(){throw new Error}var W_=IE;function G_(){W_()}function q_(n){W_=n}var SE=null;function Y_(n){let e=Object.create(ME);e.value=n;let i=()=>(xE(e),e.value);return i[Ss]=e,i}function pf(n,e){V_()||G_();let i=n.value;Object.is(i,e)||n.equal(i,e)||(n.value=e,TE(n))}function Z_(n,e){V_()||G_(),pf(n,e(n.value))}var ME=(()=>ae(w({},hf),{equal:wE,value:void 0}))();function TE(n){n.version++,CE(),j_(n),SE?.()}function H(n){return typeof n=="function"}function Jr(n){let i=n(t=>{Error.call(t),t.stack=new Error().stack});return i.prototype=Object.create(Error.prototype),i.prototype.constructor=i,i}var Il=Jr(n=>function(i){n(this),this.message=i?`${i.length} errors occurred during unsubscription: +${i.map((t,r)=>`${r+1}) ${t.toString()}`).join(` + `)}`:"",this.name="UnsubscriptionError",this.errors=i});function ir(n,e){if(n){let i=n.indexOf(e);0<=i&&n.splice(i,1)}}var ve=class n{constructor(e){this.initialTeardown=e,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let e;if(!this.closed){this.closed=!0;let{_parentage:i}=this;if(i)if(this._parentage=null,Array.isArray(i))for(let o of i)o.remove(this);else i.remove(this);let{initialTeardown:t}=this;if(H(t))try{t()}catch(o){e=o instanceof Il?o.errors:[o]}let{_finalizers:r}=this;if(r){this._finalizers=null;for(let o of r)try{Q_(o)}catch(s){e=e??[],s instanceof Il?e=[...e,...s.errors]:e.push(s)}}if(e)throw new Il(e)}}add(e){var i;if(e&&e!==this)if(this.closed)Q_(e);else{if(e instanceof n){if(e.closed||e._hasParent(this))return;e._addParent(this)}(this._finalizers=(i=this._finalizers)!==null&&i!==void 0?i:[]).push(e)}}_hasParent(e){let{_parentage:i}=this;return i===e||Array.isArray(i)&&i.includes(e)}_addParent(e){let{_parentage:i}=this;this._parentage=Array.isArray(i)?(i.push(e),i):i?[i,e]:e}_removeParent(e){let{_parentage:i}=this;i===e?this._parentage=null:Array.isArray(i)&&ir(i,e)}remove(e){let{_finalizers:i}=this;i&&ir(i,e),e instanceof n&&e._removeParent(this)}};ve.EMPTY=(()=>{let n=new ve;return n.closed=!0,n})();var gf=ve.EMPTY;function Sl(n){return n instanceof ve||n&&"closed"in n&&H(n.remove)&&H(n.add)&&H(n.unsubscribe)}function Q_(n){H(n)?n():n.unsubscribe()}var _n={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var eo={setTimeout(n,e,...i){let{delegate:t}=eo;return t?.setTimeout?t.setTimeout(n,e,...i):setTimeout(n,e,...i)},clearTimeout(n){let{delegate:e}=eo;return(e?.clearTimeout||clearTimeout)(n)},delegate:void 0};function Ml(n){eo.setTimeout(()=>{let{onUnhandledError:e}=_n;if(e)e(n);else throw n})}function oi(){}var K_=(()=>_f("C",void 0,void 0))();function X_(n){return _f("E",void 0,n)}function J_(n){return _f("N",n,void 0)}function _f(n,e,i){return{kind:n,value:e,error:i}}var rr=null;function to(n){if(_n.useDeprecatedSynchronousErrorHandling){let e=!rr;if(e&&(rr={errorThrown:!1,error:null}),n(),e){let{errorThrown:i,error:t}=rr;if(rr=null,i)throw t}}else n()}function eb(n){_n.useDeprecatedSynchronousErrorHandling&&rr&&(rr.errorThrown=!0,rr.error=n)}var or=class extends ve{constructor(e){super(),this.isStopped=!1,e?(this.destination=e,Sl(e)&&e.add(this)):this.destination=RE}static create(e,i,t){return new si(e,i,t)}next(e){this.isStopped?vf(J_(e),this):this._next(e)}error(e){this.isStopped?vf(X_(e),this):(this.isStopped=!0,this._error(e))}complete(){this.isStopped?vf(K_,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(e){this.destination.next(e)}_error(e){try{this.destination.error(e)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},AE=Function.prototype.bind;function bf(n,e){return AE.call(n,e)}var yf=class{constructor(e){this.partialObserver=e}next(e){let{partialObserver:i}=this;if(i.next)try{i.next(e)}catch(t){Tl(t)}}error(e){let{partialObserver:i}=this;if(i.error)try{i.error(e)}catch(t){Tl(t)}else Tl(e)}complete(){let{partialObserver:e}=this;if(e.complete)try{e.complete()}catch(i){Tl(i)}}},si=class extends or{constructor(e,i,t){super();let r;if(H(e)||!e)r={next:e??void 0,error:i??void 0,complete:t??void 0};else{let o;this&&_n.useDeprecatedNextContext?(o=Object.create(e),o.unsubscribe=()=>this.unsubscribe(),r={next:e.next&&bf(e.next,o),error:e.error&&bf(e.error,o),complete:e.complete&&bf(e.complete,o)}):r=e}this.destination=new yf(r)}};function Tl(n){_n.useDeprecatedSynchronousErrorHandling?eb(n):Ml(n)}function OE(n){throw n}function vf(n,e){let{onStoppedNotification:i}=_n;i&&eo.setTimeout(()=>i(n,e))}var RE={closed:!0,next:oi,error:OE,complete:oi};var no=(()=>typeof Symbol=="function"&&Symbol.observable||"@@observable")();function Et(n){return n}function wf(...n){return xf(n)}function xf(n){return n.length===0?Et:n.length===1?n[0]:function(i){return n.reduce((t,r)=>r(t),i)}}var W=(()=>{class n{constructor(i){i&&(this._subscribe=i)}lift(i){let t=new n;return t.source=this,t.operator=i,t}subscribe(i,t,r){let o=FE(i)?i:new si(i,t,r);return to(()=>{let{operator:s,source:a}=this;o.add(s?s.call(o,a):a?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(i){try{return this._subscribe(i)}catch(t){i.error(t)}}forEach(i,t){return t=tb(t),new t((r,o)=>{let s=new si({next:a=>{try{i(a)}catch(l){o(l),s.unsubscribe()}},error:o,complete:r});this.subscribe(s)})}_subscribe(i){var t;return(t=this.source)===null||t===void 0?void 0:t.subscribe(i)}[no](){return this}pipe(...i){return xf(i)(this)}toPromise(i){return i=tb(i),new i((t,r)=>{let o;this.subscribe(s=>o=s,s=>r(s),()=>t(o))})}}return n.create=e=>new n(e),n})();function tb(n){var e;return(e=n??_n.Promise)!==null&&e!==void 0?e:Promise}function kE(n){return n&&H(n.next)&&H(n.error)&&H(n.complete)}function FE(n){return n&&n instanceof or||kE(n)&&Sl(n)}function Cf(n){return H(n?.lift)}function Z(n){return e=>{if(Cf(e))return e.lift(function(i){try{return n(i,this)}catch(t){this.error(t)}});throw new TypeError("Unable to lift unknown Observable type")}}function K(n,e,i,t,r){return new Df(n,e,i,t,r)}var Df=class extends or{constructor(e,i,t,r,o,s){super(e),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=i?function(a){try{i(a)}catch(l){e.error(l)}}:super._next,this._error=r?function(a){try{r(a)}catch(l){e.error(l)}finally{this.unsubscribe()}}:super._error,this._complete=t?function(){try{t()}catch(a){e.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:i}=this;super.unsubscribe(),!i&&((e=this.onFinalize)===null||e===void 0||e.call(this))}}};function io(){return Z((n,e)=>{let i=null;n._refCount++;let t=K(e,void 0,void 0,void 0,()=>{if(!n||n._refCount<=0||0<--n._refCount){i=null;return}let r=n._connection,o=i;i=null,r&&(!o||r===o)&&r.unsubscribe(),e.unsubscribe()});n.subscribe(t),t.closed||(i=n.connect())})}var kn=class extends W{constructor(e,i){super(),this.source=e,this.subjectFactory=i,this._subject=null,this._refCount=0,this._connection=null,Cf(e)&&(this.lift=e.lift)}_subscribe(e){return this.getSubject().subscribe(e)}getSubject(){let e=this._subject;return(!e||e.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;let{_connection:e}=this;this._subject=this._connection=null,e?.unsubscribe()}connect(){let e=this._connection;if(!e){e=this._connection=new ve;let i=this.getSubject();e.add(this.source.subscribe(K(i,void 0,()=>{this._teardown(),i.complete()},t=>{this._teardown(),i.error(t)},()=>this._teardown()))),e.closed&&(this._connection=null,e=ve.EMPTY)}return e}refCount(){return io()(this)}};var nb=Jr(n=>function(){n(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var T=(()=>{class n extends W{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(i){let t=new Al(this,this);return t.operator=i,t}_throwIfClosed(){if(this.closed)throw new nb}next(i){to(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let t of this.currentObservers)t.next(i)}})}error(i){to(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=i;let{observers:t}=this;for(;t.length;)t.shift().error(i)}})}complete(){to(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:i}=this;for(;i.length;)i.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var i;return((i=this.observers)===null||i===void 0?void 0:i.length)>0}_trySubscribe(i){return this._throwIfClosed(),super._trySubscribe(i)}_subscribe(i){return this._throwIfClosed(),this._checkFinalizedStatuses(i),this._innerSubscribe(i)}_innerSubscribe(i){let{hasError:t,isStopped:r,observers:o}=this;return t||r?gf:(this.currentObservers=null,o.push(i),new ve(()=>{this.currentObservers=null,ir(o,i)}))}_checkFinalizedStatuses(i){let{hasError:t,thrownError:r,isStopped:o}=this;t?i.error(r):o&&i.complete()}asObservable(){let i=new W;return i.source=this,i}}return n.create=(e,i)=>new Al(e,i),n})(),Al=class extends T{constructor(e,i){super(),this.destination=e,this.source=i}next(e){var i,t;(t=(i=this.destination)===null||i===void 0?void 0:i.next)===null||t===void 0||t.call(i,e)}error(e){var i,t;(t=(i=this.destination)===null||i===void 0?void 0:i.error)===null||t===void 0||t.call(i,e)}complete(){var e,i;(i=(e=this.destination)===null||e===void 0?void 0:e.complete)===null||i===void 0||i.call(e)}_subscribe(e){var i,t;return(t=(i=this.source)===null||i===void 0?void 0:i.subscribe(e))!==null&&t!==void 0?t:gf}};var tt=class extends T{constructor(e){super(),this._value=e}get value(){return this.getValue()}_subscribe(e){let i=super._subscribe(e);return!i.closed&&e.next(this._value),i}getValue(){let{hasError:e,thrownError:i,_value:t}=this;if(e)throw i;return this._throwIfClosed(),t}next(e){super.next(this._value=e)}};var Ms={now(){return(Ms.delegate||Date).now()},delegate:void 0};var Ol=class extends T{constructor(e=1/0,i=1/0,t=Ms){super(),this._bufferSize=e,this._windowTime=i,this._timestampProvider=t,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=i===1/0,this._bufferSize=Math.max(1,e),this._windowTime=Math.max(1,i)}next(e){let{isStopped:i,_buffer:t,_infiniteTimeWindow:r,_timestampProvider:o,_windowTime:s}=this;i||(t.push(e),!r&&t.push(o.now()+s)),this._trimBuffer(),super.next(e)}_subscribe(e){this._throwIfClosed(),this._trimBuffer();let i=this._innerSubscribe(e),{_infiniteTimeWindow:t,_buffer:r}=this,o=r.slice();for(let s=0;sib(e)&&n()),e},clearImmediate(n){ib(n)}};var{setImmediate:NE,clearImmediate:LE}=rb,As={setImmediate(...n){let{delegate:e}=As;return(e?.setImmediate||NE)(...n)},clearImmediate(n){let{delegate:e}=As;return(e?.clearImmediate||LE)(n)},delegate:void 0};var kl=class extends ro{constructor(e,i){super(e,i),this.scheduler=e,this.work=i}requestAsyncId(e,i,t=0){return t!==null&&t>0?super.requestAsyncId(e,i,t):(e.actions.push(this),e._scheduled||(e._scheduled=As.setImmediate(e.flush.bind(e,void 0))))}recycleAsyncId(e,i,t=0){var r;if(t!=null?t>0:this.delay>0)return super.recycleAsyncId(e,i,t);let{actions:o}=e;i!=null&&((r=o[o.length-1])===null||r===void 0?void 0:r.id)!==i&&(As.clearImmediate(i),e._scheduled=void 0)}};var oo=class n{constructor(e,i=n.now){this.schedulerActionCtor=e,this.now=i}schedule(e,i=0,t){return new this.schedulerActionCtor(this,e).schedule(t,i)}};oo.now=Ms.now;var so=class extends oo{constructor(e,i=oo.now){super(e,i),this.actions=[],this._active=!1}flush(e){let{actions:i}=this;if(this._active){i.push(e);return}let t;this._active=!0;do if(t=e.execute(e.state,e.delay))break;while(e=i.shift());if(this._active=!1,t){for(;e=i.shift();)e.unsubscribe();throw t}}};var Fl=class extends so{flush(e){this._active=!0;let i=this._scheduled;this._scheduled=void 0;let{actions:t}=this,r;e=e||t.shift();do if(r=e.execute(e.state,e.delay))break;while((e=t[0])&&e.id===i&&t.shift());if(this._active=!1,r){for(;(e=t[0])&&e.id===i&&t.shift();)e.unsubscribe();throw r}}};var Os=new Fl(kl);var sr=new so(ro),ob=sr;var yt=new W(n=>n.complete());function Pl(n){return n&&H(n.schedule)}function Sf(n){return n[n.length-1]}function Nl(n){return H(Sf(n))?n.pop():void 0}function Fn(n){return Pl(Sf(n))?n.pop():void 0}function sb(n,e){return typeof Sf(n)=="number"?n.pop():e}function lb(n,e,i,t){function r(o){return o instanceof i?o:new i(function(s){s(o)})}return new(i||(i=Promise))(function(o,s){function a(d){try{c(t.next(d))}catch(u){s(u)}}function l(d){try{c(t.throw(d))}catch(u){s(u)}}function c(d){d.done?o(d.value):r(d.value).then(a,l)}c((t=t.apply(n,e||[])).next())})}function ab(n){var e=typeof Symbol=="function"&&Symbol.iterator,i=e&&n[e],t=0;if(i)return i.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&t>=n.length&&(n=void 0),{value:n&&n[t++],done:!n}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function ar(n){return this instanceof ar?(this.v=n,this):new ar(n)}function cb(n,e,i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=i.apply(n,e||[]),r,o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(h){t[h]&&(r[h]=function(m){return new Promise(function(g,v){o.push([h,m,g,v])>1||a(h,m)})})}function a(h,m){try{l(t[h](m))}catch(g){u(o[0][3],g)}}function l(h){h.value instanceof ar?Promise.resolve(h.value.v).then(c,d):u(o[0][2],h)}function c(h){a("next",h)}function d(h){a("throw",h)}function u(h,m){h(m),o.shift(),o.length&&a(o[0][0],o[0][1])}}function db(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=n[Symbol.asyncIterator],i;return e?e.call(n):(n=typeof ab=="function"?ab(n):n[Symbol.iterator](),i={},t("next"),t("throw"),t("return"),i[Symbol.asyncIterator]=function(){return this},i);function t(o){i[o]=n[o]&&function(s){return new Promise(function(a,l){s=n[o](s),r(a,l,s.done,s.value)})}}function r(o,s,a,l){Promise.resolve(l).then(function(c){o({value:c,done:a})},s)}}var ao=n=>n&&typeof n.length=="number"&&typeof n!="function";function Ll(n){return H(n?.then)}function jl(n){return H(n[no])}function Vl(n){return Symbol.asyncIterator&&H(n?.[Symbol.asyncIterator])}function Bl(n){return new TypeError(`You provided ${n!==null&&typeof n=="object"?"an invalid object":`'${n}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function jE(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var zl=jE();function Hl(n){return H(n?.[zl])}function Ul(n){return cb(this,arguments,function*(){let i=n.getReader();try{for(;;){let{value:t,done:r}=yield ar(i.read());if(r)return yield ar(void 0);yield yield ar(t)}}finally{i.releaseLock()}})}function $l(n){return H(n?.getReader)}function De(n){if(n instanceof W)return n;if(n!=null){if(jl(n))return VE(n);if(ao(n))return BE(n);if(Ll(n))return zE(n);if(Vl(n))return ub(n);if(Hl(n))return HE(n);if($l(n))return UE(n)}throw Bl(n)}function VE(n){return new W(e=>{let i=n[no]();if(H(i.subscribe))return i.subscribe(e);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function BE(n){return new W(e=>{for(let i=0;i{n.then(i=>{e.closed||(e.next(i),e.complete())},i=>e.error(i)).then(null,Ml)})}function HE(n){return new W(e=>{for(let i of n)if(e.next(i),e.closed)return;e.complete()})}function ub(n){return new W(e=>{$E(n,e).catch(i=>e.error(i))})}function UE(n){return ub(Ul(n))}function $E(n,e){var i,t,r,o;return lb(this,void 0,void 0,function*(){try{for(i=db(n);t=yield i.next(),!t.done;){let s=t.value;if(e.next(s),e.closed)return}}catch(s){r={error:s}}finally{try{t&&!t.done&&(o=i.return)&&(yield o.call(i))}finally{if(r)throw r.error}}e.complete()})}function Ft(n,e,i,t=0,r=!1){let o=e.schedule(function(){i(),r?n.add(this.schedule(null,t)):this.unsubscribe()},t);if(n.add(o),!r)return o}function Wl(n,e=0){return Z((i,t)=>{i.subscribe(K(t,r=>Ft(t,n,()=>t.next(r),e),()=>Ft(t,n,()=>t.complete(),e),r=>Ft(t,n,()=>t.error(r),e)))})}function Gl(n,e=0){return Z((i,t)=>{t.add(n.schedule(()=>i.subscribe(t),e))})}function fb(n,e){return De(n).pipe(Gl(e),Wl(e))}function hb(n,e){return De(n).pipe(Gl(e),Wl(e))}function mb(n,e){return new W(i=>{let t=0;return e.schedule(function(){t===n.length?i.complete():(i.next(n[t++]),i.closed||this.schedule())})})}function pb(n,e){return new W(i=>{let t;return Ft(i,e,()=>{t=n[zl](),Ft(i,e,()=>{let r,o;try{({value:r,done:o}=t.next())}catch(s){i.error(s);return}o?i.complete():i.next(r)},0,!0)}),()=>H(t?.return)&&t.return()})}function ql(n,e){if(!n)throw new Error("Iterable cannot be null");return new W(i=>{Ft(i,e,()=>{let t=n[Symbol.asyncIterator]();Ft(i,e,()=>{t.next().then(r=>{r.done?i.complete():i.next(r.value)})},0,!0)})})}function gb(n,e){return ql(Ul(n),e)}function _b(n,e){if(n!=null){if(jl(n))return fb(n,e);if(ao(n))return mb(n,e);if(Ll(n))return hb(n,e);if(Vl(n))return ql(n,e);if(Hl(n))return pb(n,e);if($l(n))return gb(n,e)}throw Bl(n)}function ke(n,e){return e?_b(n,e):De(n)}function R(...n){let e=Fn(n);return ke(n,e)}function Pn(n,e){let i=H(n)?n:()=>n,t=r=>r.error(i());return new W(e?r=>e.schedule(t,0,r):t)}function lr(n){return!!n&&(n instanceof W||H(n.lift)&&H(n.subscribe))}var ai=Jr(n=>function(){n(this),this.name="EmptyError",this.message="no elements in sequence"});function bb(n){return n instanceof Date&&!isNaN(n)}function F(n,e){return Z((i,t)=>{let r=0;i.subscribe(K(t,o=>{t.next(n.call(e,o,r++))}))})}var{isArray:WE}=Array;function GE(n,e){return WE(e)?n(...e):n(e)}function lo(n){return F(e=>GE(n,e))}var{isArray:qE}=Array,{getPrototypeOf:YE,prototype:ZE,keys:QE}=Object;function Yl(n){if(n.length===1){let e=n[0];if(qE(e))return{args:e,keys:null};if(KE(e)){let i=QE(e);return{args:i.map(t=>e[t]),keys:i}}}return{args:n,keys:null}}function KE(n){return n&&typeof n=="object"&&YE(n)===ZE}function Zl(n,e){return n.reduce((i,t,r)=>(i[t]=e[r],i),{})}function co(...n){let e=Fn(n),i=Nl(n),{args:t,keys:r}=Yl(n);if(t.length===0)return ke([],e);let o=new W(XE(t,e,r?s=>Zl(r,s):Et));return i?o.pipe(lo(i)):o}function XE(n,e,i=Et){return t=>{vb(e,()=>{let{length:r}=n,o=new Array(r),s=r,a=r;for(let l=0;l{let c=ke(n[l],e),d=!1;c.subscribe(K(t,u=>{o[l]=u,d||(d=!0,a--),a||t.next(i(o.slice()))},()=>{--s||t.complete()}))},t)},t)}}function vb(n,e,i){n?Ft(i,n,e):e()}function yb(n,e,i,t,r,o,s,a){let l=[],c=0,d=0,u=!1,h=()=>{u&&!l.length&&!c&&e.complete()},m=v=>c{o&&e.next(v),c++;let E=!1;De(i(v,d++)).subscribe(K(e,I=>{r?.(I),o?m(I):e.next(I)},()=>{E=!0},void 0,()=>{if(E)try{for(c--;l.length&&cg(I)):g(I)}h()}catch(I){e.error(I)}}))};return n.subscribe(K(e,m,()=>{u=!0,h()})),()=>{a?.()}}function We(n,e,i=1/0){return H(e)?We((t,r)=>F((o,s)=>e(t,o,r,s))(De(n(t,r))),i):(typeof e=="number"&&(i=e),Z((t,r)=>yb(t,r,n,i)))}function Rs(n=1/0){return We(Et,n)}function wb(){return Rs(1)}function Jt(...n){return wb()(ke(n,Fn(n)))}function Bt(n){return new W(e=>{De(n()).subscribe(e)})}function ks(...n){let e=Nl(n),{args:i,keys:t}=Yl(n),r=new W(o=>{let{length:s}=i;if(!s){o.complete();return}let a=new Array(s),l=s,c=s;for(let d=0;d{u||(u=!0,c--),a[d]=h},()=>l--,void 0,()=>{(!l||!u)&&(c||o.next(t?Zl(t,a):a),o.complete())}))}});return e?r.pipe(lo(e)):r}var JE=["addListener","removeListener"],eI=["addEventListener","removeEventListener"],tI=["on","off"];function li(n,e,i,t){if(H(i)&&(t=i,i=void 0),t)return li(n,e,i).pipe(lo(t));let[r,o]=rI(n)?eI.map(s=>a=>n[s](e,a,i)):nI(n)?JE.map(xb(n,e)):iI(n)?tI.map(xb(n,e)):[];if(!r&&ao(n))return We(s=>li(s,e,i))(De(n));if(!r)throw new TypeError("Invalid event target");return new W(s=>{let a=(...l)=>s.next(1o(a)})}function xb(n,e){return i=>t=>n[i](e,t)}function nI(n){return H(n.addListener)&&H(n.removeListener)}function iI(n){return H(n.on)&&H(n.off)}function rI(n){return H(n.addEventListener)&&H(n.removeEventListener)}function Ql(n=0,e,i=ob){let t=-1;return e!=null&&(Pl(e)?i=e:t=e),new W(r=>{let o=bb(n)?+n-i.now():n;o<0&&(o=0);let s=0;return i.schedule(function(){r.closed||(r.next(s++),0<=t?this.schedule(void 0,t):r.complete())},o)})}function rt(...n){let e=Fn(n),i=sb(n,1/0),t=n;return t.length?t.length===1?De(t[0]):Rs(i)(ke(t,e)):yt}var cr=new W(oi);function le(n,e){return Z((i,t)=>{let r=0;i.subscribe(K(t,o=>n.call(e,o,r++)&&t.next(o)))})}function Cb(n){return Z((e,i)=>{let t=!1,r=null,o=null,s=!1,a=()=>{if(o?.unsubscribe(),o=null,t){t=!1;let c=r;r=null,i.next(c)}s&&i.complete()},l=()=>{o=null,s&&i.complete()};e.subscribe(K(i,c=>{t=!0,r=c,o||De(n(c)).subscribe(o=K(i,a,l))},()=>{s=!0,(!t||!o||o.closed)&&i.complete()}))})}function Kl(n,e=sr){return Cb(()=>Ql(n,e))}function Nn(n){return Z((e,i)=>{let t=null,r=!1,o;t=e.subscribe(K(i,void 0,void 0,s=>{o=De(n(s,Nn(n)(e))),t?(t.unsubscribe(),t=null,o.subscribe(i)):r=!0})),r&&(t.unsubscribe(),t=null,o.subscribe(i))})}function Db(n,e,i,t,r){return(o,s)=>{let a=i,l=e,c=0;o.subscribe(K(s,d=>{let u=c++;l=a?n(l,d,u):(a=!0,d),t&&s.next(l)},r&&(()=>{a&&s.next(l),s.complete()})))}}function Ai(n,e){return H(e)?We(n,e,1):We(n,1)}function Eb(n){return new W(e=>n.subscribe(e))}var oI={connector:()=>new T};function Xl(n,e=oI){let{connector:i}=e;return Z((t,r)=>{let o=i();De(n(Eb(o))).subscribe(r),r.add(t.subscribe(o))})}function Fs(n,e=sr){return Z((i,t)=>{let r=null,o=null,s=null,a=()=>{if(r){r.unsubscribe(),r=null;let c=o;o=null,t.next(c)}};function l(){let c=s+n,d=e.now();if(d{o=c,s=e.now(),r||(r=e.schedule(l,n),t.add(r))},()=>{a(),t.complete()},void 0,()=>{o=r=null}))})}function Oi(n){return Z((e,i)=>{let t=!1;e.subscribe(K(i,r=>{t=!0,i.next(r)},()=>{t||i.next(n),i.complete()}))})}function ie(n){return n<=0?()=>yt:Z((e,i)=>{let t=0;e.subscribe(K(i,r=>{++t<=n&&(i.next(r),n<=t&&i.complete())}))})}function Ib(){return Z((n,e)=>{n.subscribe(K(e,oi))})}function Ps(n){return F(()=>n)}function Mf(n,e){return e?i=>Jt(e.pipe(ie(1),Ib()),i.pipe(Mf(n))):We((i,t)=>De(n(i,t)).pipe(ie(1),Ps(i)))}function uo(n,e=sr){let i=Ql(n,e);return Mf(()=>i)}function Ri(n,e=Et){return n=n??sI,Z((i,t)=>{let r,o=!0;i.subscribe(K(t,s=>{let a=e(s);(o||!n(r,a))&&(o=!1,r=a,t.next(s))}))})}function sI(n,e){return n===e}function Jl(n=aI){return Z((e,i)=>{let t=!1;e.subscribe(K(i,r=>{t=!0,i.next(r)},()=>t?i.complete():i.error(n())))})}function aI(){return new ai}function Ln(n){return Z((e,i)=>{try{e.subscribe(i)}finally{i.add(n)}})}function jn(n,e){let i=arguments.length>=2;return t=>t.pipe(n?le((r,o)=>n(r,o,t)):Et,ie(1),i?Oi(e):Jl(()=>new ai))}function fo(n){return n<=0?()=>yt:Z((e,i)=>{let t=[];e.subscribe(K(i,r=>{t.push(r),n{for(let r of t)i.next(r);i.complete()},void 0,()=>{t=null}))})}function Tf(n,e){let i=arguments.length>=2;return t=>t.pipe(n?le((r,o)=>n(r,o,t)):Et,fo(1),i?Oi(e):Jl(()=>new ai))}function Sb(n,e){let i=H(n)?n:()=>n;return H(e)?Xl(e,{connector:i}):t=>new kn(t,i)}function Af(n){return n?e=>Xl(n)(e):e=>Sb(new T)(e)}function Of(n,e){return Z(Db(n,e,arguments.length>=2,!0))}function ki(n={}){let{connector:e=()=>new T,resetOnError:i=!0,resetOnComplete:t=!0,resetOnRefCountZero:r=!0}=n;return o=>{let s,a,l,c=0,d=!1,u=!1,h=()=>{a?.unsubscribe(),a=void 0},m=()=>{h(),s=l=void 0,d=u=!1},g=()=>{let v=s;m(),v?.unsubscribe()};return Z((v,E)=>{c++,!u&&!d&&h();let I=l=l??e();E.add(()=>{c--,c===0&&!u&&!d&&(a=Rf(g,r))}),I.subscribe(E),!s&&c>0&&(s=new si({next:Q=>I.next(Q),error:Q=>{u=!0,h(),a=Rf(m,i,Q),I.error(Q)},complete:()=>{d=!0,h(),a=Rf(m,t),I.complete()}}),De(v).subscribe(s))})(o)}}function Rf(n,e,...i){if(e===!0){n();return}if(e===!1)return;let t=new si({next:()=>{t.unsubscribe(),n()}});return De(e(...i)).subscribe(t)}function ec(n,e,i){let t,r=!1;return n&&typeof n=="object"?{bufferSize:t=1/0,windowTime:e=1/0,refCount:r=!1,scheduler:i}=n:t=n??1/0,ki({connector:()=>new Ol(t,e,i),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:r})}function Ns(n){return le((e,i)=>n<=i)}function pt(...n){let e=Fn(n);return Z((i,t)=>{(e?Jt(n,i,e):Jt(n,i)).subscribe(t)})}function Fe(n,e){return Z((i,t)=>{let r=null,o=0,s=!1,a=()=>s&&!r&&t.complete();i.subscribe(K(t,l=>{r?.unsubscribe();let c=0,d=o++;De(n(l,d)).subscribe(r=K(t,u=>t.next(e?e(l,u,d,c++):u),()=>{r=null,a()}))},()=>{s=!0,a()}))})}function ne(n){return Z((e,i)=>{De(n).subscribe(K(i,()=>i.complete(),oi)),!i.closed&&e.subscribe(i)})}function kf(n,e=!1){return Z((i,t)=>{let r=0;i.subscribe(K(t,o=>{let s=n(o,r++);(s||e)&&t.next(o),!s&&t.complete()}))})}function Ee(n,e,i){let t=H(n)||e||i?{next:n,error:e,complete:i}:n;return t?Z((r,o)=>{var s;(s=t.subscribe)===null||s===void 0||s.call(t);let a=!0;r.subscribe(K(o,l=>{var c;(c=t.next)===null||c===void 0||c.call(t,l),o.next(l)},()=>{var l;a=!1,(l=t.complete)===null||l===void 0||l.call(t),o.complete()},l=>{var c;a=!1,(c=t.error)===null||c===void 0||c.call(t,l),o.error(l)},()=>{var l,c;a&&((l=t.unsubscribe)===null||l===void 0||l.call(t)),(c=t.finalize)===null||c===void 0||c.call(t)}))}):Et}function Pe(n){for(let e in n)if(n[e]===Pe)return e;throw Error("Could not find renamed property on target object.")}function tc(n,e){for(let i in e)e.hasOwnProperty(i)&&!n.hasOwnProperty(i)&&(n[i]=e[i])}function St(n){if(typeof n=="string")return n;if(Array.isArray(n))return"["+n.map(St).join(", ")+"]";if(n==null)return""+n;if(n.overriddenName)return`${n.overriddenName}`;if(n.name)return`${n.name}`;let e=n.toString();if(e==null)return""+e;let i=e.indexOf(` +`);return i===-1?e:e.substring(0,i)}function Kf(n,e){return n==null||n===""?e===null?"":e:e==null||e===""?n:n+" "+e}var lI=Pe({__forward_ref__:Pe});function Vi(n){return n.__forward_ref__=Vi,n.toString=function(){return St(this())},n}function It(n){return hv(n)?n():n}function hv(n){return typeof n=="function"&&n.hasOwnProperty(lI)&&n.__forward_ref__===Vi}function mv(n){return n&&!!n.\u0275providers}var pv="https://g.co/ng/security#xss",S=class extends Error{constructor(e,i){super(Pc(e,i)),this.code=e}};function Pc(n,e){return`${`NG0${Math.abs(n)}`}${e?": "+e:""}`}var cI=Pe({\u0275cmp:Pe}),dI=Pe({\u0275dir:Pe}),uI=Pe({\u0275pipe:Pe}),fI=Pe({\u0275mod:Pe}),mc=Pe({\u0275fac:Pe}),Ls=Pe({__NG_ELEMENT_ID__:Pe}),Mb=Pe({__NG_ENV_ID__:Pe});function Nc(n){return typeof n=="string"?n:n==null?"":String(n)}function hI(n){return typeof n=="function"?n.name||n.toString():typeof n=="object"&&n!=null&&typeof n.type=="function"?n.type.name||n.type.toString():Nc(n)}function mI(n,e){let i=e?`. Dependency path: ${e.join(" > ")} > ${n}`:"";throw new S(-200,`Circular dependency in DI detected for ${n}${i}`)}function im(n,e){let i=e?` in ${e}`:"";throw new S(-201,!1)}function pI(n,e){n==null&&gI(e,n,null,"!=")}function gI(n,e,i,t){throw new Error(`ASSERTION ERROR: ${n}`+(t==null?"":` [Expected=> ${i} ${t} ${e} <=Actual]`))}function x(n){return{token:n.token,providedIn:n.providedIn||null,factory:n.factory,value:void 0}}function re(n){return{providers:n.providers||[],imports:n.imports||[]}}function Lc(n){return Tb(n,_v)||Tb(n,bv)}function gv(n){return Lc(n)!==null}function Tb(n,e){return n.hasOwnProperty(e)?n[e]:null}function _I(n){let e=n&&(n[_v]||n[bv]);return e||null}function Ab(n){return n&&(n.hasOwnProperty(Ob)||n.hasOwnProperty(bI))?n[Ob]:null}var _v=Pe({\u0275prov:Pe}),Ob=Pe({\u0275inj:Pe}),bv=Pe({ngInjectableDef:Pe}),bI=Pe({ngInjectorDef:Pe}),ye=function(n){return n[n.Default=0]="Default",n[n.Host=1]="Host",n[n.Self=2]="Self",n[n.SkipSelf=4]="SkipSelf",n[n.Optional=8]="Optional",n}(ye||{}),Xf;function vI(){return Xf}function en(n){let e=Xf;return Xf=n,e}function vv(n,e,i){let t=Lc(n);if(t&&t.providedIn=="root")return t.value===void 0?t.value=t.factory():t.value;if(i&ye.Optional)return null;if(e!==void 0)return e;im(St(n),"Injector")}var zt=globalThis;var y=class{constructor(e,i){this._desc=e,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,typeof i=="number"?this.__NG_ELEMENT_ID__=i:i!==void 0&&(this.\u0275prov=x({token:this,providedIn:i.providedIn||"root",factory:i.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};var yI={},Bs=yI,Jf="__NG_DI_FLAG__",pc="ngTempTokenPath",wI="ngTokenPath",xI=/\n/gm,CI="\u0275",Rb="__source",js;function ho(n){let e=js;return js=n,e}function DI(n,e=ye.Default){if(js===void 0)throw new S(-203,!1);return js===null?vv(n,void 0,e):js.get(n,e&ye.Optional?null:void 0,e)}function p(n,e=ye.Default){return(vI()||DI)(It(n),e)}function C(n,e=ye.Default){return p(n,jc(e))}function jc(n){return typeof n>"u"||typeof n=="number"?n:0|(n.optional&&8)|(n.host&&1)|(n.self&&2)|(n.skipSelf&&4)}function eh(n){let e=[];for(let i=0;i ");else if(typeof e=="object"){let o=[];for(let s in e)if(e.hasOwnProperty(s)){let a=e[s];o.push(s+":"+(typeof a=="string"?JSON.stringify(a):St(a)))}r=`{${o.join(", ")}}`}return`${i}${t?"("+t+")":""}[${r}]: ${n.replace(xI,` + `)}`}function Ks(n){return{toString:n}.toString()}var wv=function(n){return n[n.OnPush=0]="OnPush",n[n.Default=1]="Default",n}(wv||{}),Hn=function(n){return n[n.Emulated=0]="Emulated",n[n.None=2]="None",n[n.ShadowDom=3]="ShadowDom",n}(Hn||{}),bo={},Pt=[];function xv(n,e,i){let t=n.length;for(;;){let r=n.indexOf(e,i);if(r===-1)return r;if(r===0||n.charCodeAt(r-1)<=32){let o=e.length;if(r+o===t||n.charCodeAt(r+o)<=32)return r}i=r+1}}function th(n,e,i){let t=0;for(;te){s=o-1;break}}}for(;oo?h="":h=r[u+1].toLowerCase();let m=t&8?h:null;if(m&&xv(m,c,0)!==-1||t&2&&c!==h){if(bn(t))return!1;s=!0}}}}return bn(t)||s}function bn(n){return(n&1)===0}function RI(n,e,i,t){if(e===null)return-1;let r=0;if(t||!i){let o=!1;for(;r-1)for(i++;i0?'="'+a+'"':"")+"]"}else t&8?r+="."+s:t&4&&(r+=" "+s);else r!==""&&!bn(s)&&(e+=Fb(o,r),r=""),t=s,o=o||!bn(t);i++}return r!==""&&(e+=Fb(o,r)),e}function jI(n){return n.map(LI).join(",")}function VI(n){let e=[],i=[],t=1,r=2;for(;t{let e=Rv(n),i=ae(w({},e),{decls:n.decls,vars:n.vars,template:n.template,consts:n.consts||null,ngContentSelectors:n.ngContentSelectors,onPush:n.changeDetection===wv.OnPush,directiveDefs:null,pipeDefs:null,dependencies:e.standalone&&n.dependencies||null,getStandaloneInjector:null,signals:n.signals??!1,data:n.data||{},encapsulation:n.encapsulation||Hn.Emulated,styles:n.styles||Pt,_:null,schemas:n.schemas||null,tView:null,id:""});kv(i);let t=n.dependencies;return i.directiveDefs=Nb(t,!1),i.pipeDefs=Nb(t,!0),i.id=HI(i),i})}function BI(n){return fr(n)||Mv(n)}function zI(n){return n!==null}function oe(n){return Ks(()=>({type:n.type,bootstrap:n.bootstrap||Pt,declarations:n.declarations||Pt,imports:n.imports||Pt,exports:n.exports||Pt,transitiveCompileScopes:null,schemas:n.schemas||null,id:n.id||null}))}function Pb(n,e){if(n==null)return bo;let i={};for(let t in n)if(n.hasOwnProperty(t)){let r=n[t],o=r;Array.isArray(r)&&(o=r[1],r=r[0]),i[r]=t,e&&(e[r]=o)}return i}function O(n){return Ks(()=>{let e=Rv(n);return kv(e),e})}function Sv(n){return{type:n.type,name:n.name,factory:null,pure:n.pure!==!1,standalone:n.standalone===!0,onDestroy:n.type.prototype.ngOnDestroy||null}}function fr(n){return n[cI]||null}function Mv(n){return n[dI]||null}function Tv(n){return n[uI]||null}function Av(n){let e=fr(n)||Mv(n)||Tv(n);return e!==null?e.standalone:!1}function Ov(n,e){let i=n[fI]||null;if(!i&&e===!0)throw new Error(`Type ${St(n)} does not have '\u0275mod' property.`);return i}function Rv(n){let e={};return{type:n.type,providersResolver:null,factory:null,hostBindings:n.hostBindings||null,hostVars:n.hostVars||0,hostAttrs:n.hostAttrs||null,contentQueries:n.contentQueries||null,declaredInputs:e,inputTransforms:null,inputConfig:n.inputs||bo,exportAs:n.exportAs||null,standalone:n.standalone===!0,signals:n.signals===!0,selectors:n.selectors||Pt,viewQuery:n.viewQuery||null,features:n.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Pb(n.inputs,e),outputs:Pb(n.outputs),debugInfo:null}}function kv(n){n.features?.forEach(e=>e(n))}function Nb(n,e){if(!n)return null;let i=e?Tv:BI;return()=>(typeof n=="function"?n():n).map(t=>i(t)).filter(zI)}function HI(n){let e=0,i=[n.selectors,n.ngContentSelectors,n.hostVars,n.hostAttrs,n.consts,n.vars,n.decls,n.encapsulation,n.standalone,n.signals,n.exportAs,JSON.stringify(n.inputs),JSON.stringify(n.outputs),Object.getOwnPropertyNames(n.type.prototype),!!n.contentQueries,!!n.viewQuery].join("|");for(let r of i)e=Math.imul(31,e)+r.charCodeAt(0)<<0;return e+=2147483647+1,"c"+e}var $n=0,J=1,ce=2,ot=3,yn=4,Ut=5,Hs=6,Us=7,gt=8,vo=9,yo=10,Ge=11,$s=12,Lb=13,Eo=14,tn=15,Xs=16,mo=17,zn=18,Vc=19,Fv=20,Vs=21,Ff=22,hr=23,lt=25,rm=1,Pv=2,nh=6,mr=7,gc=8,wo=9;var wt=11;function Fi(n){return Array.isArray(n)&&typeof n[rm]=="object"}function wn(n){return Array.isArray(n)&&n[rm]===!0}function om(n){return(n.flags&4)!==0}function Bc(n){return n.componentOffset>-1}function zc(n){return(n.flags&1)===1}function ci(n){return!!n.template}function UI(n){return(n[ce]&512)!==0}function pr(n,e){let i=n.hasOwnProperty(mc);return i?n[mc]:null}var ih=class{constructor(e,i,t){this.previousValue=e,this.currentValue=i,this.firstChange=t}isFirstChange(){return this.firstChange}};function qe(){return Nv}function Nv(n){return n.type.prototype.ngOnChanges&&(n.setInput=WI),$I}qe.ngInherit=!0;function $I(){let n=jv(this),e=n?.current;if(e){let i=n.previous;if(i===bo)n.previous=e;else for(let t in e)i[t]=e[t];n.current=null,this.ngOnChanges(e)}}function WI(n,e,i,t){let r=this.declaredInputs[i],o=jv(n)||GI(n,{previous:bo,current:null}),s=o.current||(o.current={}),a=o.previous,l=a[r];s[r]=new ih(l&&l.currentValue,e,a===bo),n[t]=e}var Lv="__ngSimpleChanges__";function jv(n){return n[Lv]||null}function GI(n,e){return n[Lv]=e}var jb=null;var Vn=function(n,e,i){jb?.(n,e,i)},Vv="svg",qI="math";function Un(n){for(;Array.isArray(n);)n=n[$n];return n}function YI(n){for(;Array.isArray(n);){if(typeof n[rm]=="object")return n;n=n[$n]}return null}function Bv(n,e){return Un(e[n])}function nn(n,e){return Un(e[n.index])}function sm(n,e){return n.data[e]}function zv(n,e){return n[e]}function Bi(n,e){let i=e[n];return Fi(i)?i:i[$n]}function ZI(n){return(n[ce]&4)===4}function am(n){return(n[ce]&128)===128}function QI(n){return wn(n[ot])}function xo(n,e){return e==null?null:n[e]}function Hv(n){n[mo]=0}function KI(n){n[ce]&1024||(n[ce]|=1024,am(n)&&Hc(n))}function XI(n,e){for(;n>0;)e=e[Eo],n--;return e}function Uv(n){n[ce]&9216&&Hc(n)}function Hc(n){let e=n[ot];for(;e!==null&&!(wn(e)&&e[nh]||Fi(e)&&e[ce]&8192);){if(wn(e))e[nh]=!0;else if(e[ce]|=8192,!am(e))break;e=e[ot]}}function JI(n,e){if((n[ce]&256)===256)throw new S(911,!1);n[Vs]===null&&(n[Vs]=[]),n[Vs].push(e)}var de={lFrame:Xv(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function eS(){return de.lFrame.elementDepthCount}function tS(){de.lFrame.elementDepthCount++}function nS(){de.lFrame.elementDepthCount--}function $v(){return de.bindingsEnabled}function Wv(){return de.skipHydrationRootTNode!==null}function iS(n){return de.skipHydrationRootTNode===n}function rS(){de.skipHydrationRootTNode=null}function me(){return de.lFrame.lView}function Qe(){return de.lFrame.tView}function Ye(n){return de.lFrame.contextLView=n,n[gt]}function Ze(n){return de.lFrame.contextLView=null,n}function xt(){let n=Gv();for(;n!==null&&n.type===64;)n=n.parent;return n}function Gv(){return de.lFrame.currentTNode}function oS(){let n=de.lFrame,e=n.currentTNode;return n.isParent?e:e.parent}function xr(n,e){let i=de.lFrame;i.currentTNode=n,i.isParent=e}function lm(){return de.lFrame.isParent}function cm(){de.lFrame.isParent=!1}function sS(){return de.lFrame.contextLView}function qv(){let n=de.lFrame,e=n.bindingRootIndex;return e===-1&&(e=n.bindingRootIndex=n.tView.bindingStartIndex),e}function aS(n){return de.lFrame.bindingIndex=n}function Cr(){return de.lFrame.bindingIndex++}function Yv(n){let e=de.lFrame,i=e.bindingIndex;return e.bindingIndex=e.bindingIndex+n,i}function lS(){return de.lFrame.inI18n}function cS(n,e){let i=de.lFrame;i.bindingIndex=i.bindingRootIndex=n,rh(e)}function dS(){return de.lFrame.currentDirectiveIndex}function rh(n){de.lFrame.currentDirectiveIndex=n}function dm(n){let e=de.lFrame.currentDirectiveIndex;return e===-1?null:n[e]}function Zv(){return de.lFrame.currentQueryIndex}function um(n){de.lFrame.currentQueryIndex=n}function uS(n){let e=n[J];return e.type===2?e.declTNode:e.type===1?n[Ut]:null}function Qv(n,e,i){if(i&ye.SkipSelf){let r=e,o=n;for(;r=r.parent,r===null&&!(i&ye.Host);)if(r=uS(o),r===null||(o=o[Eo],r.type&10))break;if(r===null)return!1;e=r,n=o}let t=de.lFrame=Kv();return t.currentTNode=e,t.lView=n,!0}function fm(n){let e=Kv(),i=n[J];de.lFrame=e,e.currentTNode=i.firstChild,e.lView=n,e.tView=i,e.contextLView=n,e.bindingIndex=i.bindingStartIndex,e.inI18n=!1}function Kv(){let n=de.lFrame,e=n===null?null:n.child;return e===null?Xv(n):e}function Xv(n){let e={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:n,child:null,inI18n:!1};return n!==null&&(n.child=e),e}function Jv(){let n=de.lFrame;return de.lFrame=n.parent,n.currentTNode=null,n.lView=null,n}var ey=Jv;function hm(){let n=Jv();n.isParent=!0,n.tView=null,n.selectedIndex=-1,n.contextLView=null,n.elementDepthCount=0,n.currentDirectiveIndex=-1,n.currentNamespace=null,n.bindingRootIndex=-1,n.bindingIndex=-1,n.currentQueryIndex=0}function fS(n){return(de.lFrame.contextLView=XI(n,de.lFrame.contextLView))[gt]}function Dr(){return de.lFrame.selectedIndex}function gr(n){de.lFrame.selectedIndex=n}function Uc(){let n=de.lFrame;return sm(n.tView,n.selectedIndex)}function Cn(){de.lFrame.currentNamespace=Vv}function Js(){hS()}function hS(){de.lFrame.currentNamespace=null}function mS(){return de.lFrame.currentNamespace}var ty=!0;function $c(){return ty}function Wc(n){ty=n}function pS(n,e,i){let{ngOnChanges:t,ngOnInit:r,ngDoCheck:o}=e.type.prototype;if(t){let s=Nv(e);(i.preOrderHooks??=[]).push(n,s),(i.preOrderCheckHooks??=[]).push(n,s)}r&&(i.preOrderHooks??=[]).push(0-n,r),o&&((i.preOrderHooks??=[]).push(n,o),(i.preOrderCheckHooks??=[]).push(n,o))}function Gc(n,e){for(let i=e.directiveStart,t=e.directiveEnd;i=t)break}else e[l]<0&&(n[mo]+=65536),(a>14>16&&(n[ce]&3)===e&&(n[ce]+=16384,Vb(a,o)):Vb(a,o)}var _o=-1,_r=class{constructor(e,i,t){this.factory=e,this.resolving=!1,this.canSeeViewProviders=i,this.injectImpl=t}};function _S(n){return n instanceof _r}function bS(n){return(n.flags&8)!==0}function vS(n){return(n.flags&16)!==0}function iy(n){return n!==_o}function _c(n){let e=n&32767;return n&32767}function yS(n){return n>>16}function bc(n,e){let i=yS(n),t=e;for(;i>0;)t=t[Eo],i--;return t}var oh=!0;function vc(n){let e=oh;return oh=n,e}var wS=256,ry=wS-1,oy=5,xS=0,Bn={};function CS(n,e,i){let t;typeof i=="string"?t=i.charCodeAt(0)||0:i.hasOwnProperty(Ls)&&(t=i[Ls]),t==null&&(t=i[Ls]=xS++);let r=t&ry,o=1<>oy)]|=o}function yc(n,e){let i=sy(n,e);if(i!==-1)return i;let t=e[J];t.firstCreatePass&&(n.injectorIndex=e.length,Nf(t.data,n),Nf(e,null),Nf(t.blueprint,null));let r=mm(n,e),o=n.injectorIndex;if(iy(r)){let s=_c(r),a=bc(r,e),l=a[J].data;for(let c=0;c<8;c++)e[o+c]=a[s+c]|l[s+c]}return e[o+8]=r,o}function Nf(n,e){n.push(0,0,0,0,0,0,0,0,e)}function sy(n,e){return n.injectorIndex===-1||n.parent&&n.parent.injectorIndex===n.injectorIndex||e[n.injectorIndex+8]===null?-1:n.injectorIndex}function mm(n,e){if(n.parent&&n.parent.injectorIndex!==-1)return n.parent.injectorIndex;let i=0,t=null,r=e;for(;r!==null;){if(t=uy(r),t===null)return _o;if(i++,r=r[Eo],t.injectorIndex!==-1)return t.injectorIndex|i<<16}return _o}function sh(n,e,i){CS(n,e,i)}function DS(n,e){if(e==="class")return n.classes;if(e==="style")return n.styles;let i=n.attrs;if(i){let t=i.length,r=0;for(;r>20,u=t?a:a+d,h=r?a+d:c;for(let m=u;m=l&&g.type===i)return m}if(r){let m=s[l];if(m&&ci(m)&&m.type===i)return l}return null}function br(n,e,i,t){let r=n[i],o=e.data;if(_S(r)){let s=r;s.resolving&&mI(hI(o[i]));let a=vc(s.canSeeViewProviders);s.resolving=!0;let l,c=s.injectImpl?en(s.injectImpl):null,d=Qv(n,t,ye.Default);try{r=n[i]=s.factory(void 0,o,n,t),e.firstCreatePass&&i>=t.directiveStart&&pS(i,o[i],e)}finally{c!==null&&en(c),vc(a),s.resolving=!1,ey()}}return r}function IS(n){if(typeof n=="string")return n.charCodeAt(0)||0;let e=n.hasOwnProperty(Ls)?n[Ls]:void 0;return typeof e=="number"?e>=0?e&ry:SS:e}function Bb(n,e,i){let t=1<>oy)]&t)}function zb(n,e){return!(n&ye.Self)&&!(n&ye.Host&&e)}var ur=class{constructor(e,i){this._tNode=e,this._lView=i}get(e,i,t){return cy(this._tNode,this._lView,e,jc(t),i)}};function SS(){return new ur(xt(),me())}function _t(n){return Ks(()=>{let e=n.prototype.constructor,i=e[mc]||ah(e),t=Object.prototype,r=Object.getPrototypeOf(n.prototype).constructor;for(;r&&r!==t;){let o=r[mc]||ah(r);if(o&&o!==i)return o;r=Object.getPrototypeOf(r)}return o=>new o})}function ah(n){return hv(n)?()=>{let e=ah(It(n));return e&&e()}:pr(n)}function MS(n,e,i,t,r){let o=n,s=e;for(;o!==null&&s!==null&&s[ce]&2048&&!(s[ce]&512);){let a=dy(o,s,i,t|ye.Self,Bn);if(a!==Bn)return a;let l=o.parent;if(!l){let c=s[Fv];if(c){let d=c.get(i,Bn,t);if(d!==Bn)return d}l=uy(s),s=s[Eo]}o=l}return r}function uy(n){let e=n[J],i=e.type;return i===2?e.declTNode:i===1?n[Ut]:null}function fi(n){return DS(xt(),n)}var nc="__parameters__";function TS(n){return function(...i){if(n){let t=n(...i);for(let r in t)this[r]=t[r]}}}function fy(n,e,i){return Ks(()=>{let t=TS(e);function r(...o){if(this instanceof r)return t.apply(this,o),this;let s=new r(...o);return a.annotation=s,a;function a(l,c,d){let u=l.hasOwnProperty(nc)?l[nc]:Object.defineProperty(l,nc,{value:[]})[nc];for(;u.length<=d;)u.push(null);return(u[d]=u[d]||[]).push(s),l}}return i&&(r.prototype=Object.create(i.prototype)),r.prototype.ngMetadataName=n,r.annotationCls=r,r})}function AS(n){return typeof n=="function"}function OS(n,e,i){if(n.length!==e.length)return!1;for(let t=0;tArray.isArray(i)?pm(i,e):e(i))}function hy(n,e,i){e>=n.length?n.push(i):n.splice(e,0,i)}function wc(n,e){return e>=n.length-1?n.pop():n.splice(e,1)[0]}function my(n,e){let i=[];for(let t=0;te;){let o=r-2;n[r]=n[o],r--}n[e]=i,n[e+1]=t}}function qc(n,e,i){let t=ea(n,e);return t>=0?n[t|1]=i:(t=~t,kS(n,t,e,i)),t}function Lf(n,e){let i=ea(n,e);if(i>=0)return n[i|1]}function ea(n,e){return FS(n,e,1)}function FS(n,e,i){let t=0,r=n.length>>i;for(;r!==t;){let o=t+(r-t>>1),s=n[o<e?r=o:t=o+1}return~(r<{i.push(s)};return pm(e,s=>{let a=s;lh(a,o,[],t)&&(r||=[],r.push(a))}),r!==void 0&&by(r,o),i}function by(n,e){for(let i=0;i{e(o,t)})}}function lh(n,e,i,t){if(n=It(n),!n)return!1;let r=null,o=Ab(n),s=!o&&fr(n);if(!o&&!s){let l=n.ngModule;if(o=Ab(l),o)r=l;else return!1}else{if(s&&!s.standalone)return!1;r=n}let a=t.has(r);if(s){if(a)return!1;if(t.add(r),s.dependencies){let l=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let c of l)lh(c,e,i,t)}}else if(o){if(o.imports!=null&&!a){t.add(r);let c;try{pm(o.imports,d=>{lh(d,e,i,t)&&(c||=[],c.push(d))})}finally{}c!==void 0&&by(c,e)}if(!a){let c=pr(r)||(()=>new r);e({provide:r,useFactory:c,deps:Pt},r),e({provide:gy,useValue:r,multi:!0},r),e({provide:na,useValue:()=>p(r),multi:!0},r)}let l=o.providers;if(l!=null&&!a){let c=n;gm(l,d=>{e(d,c)})}}else return!1;return r!==n&&n.providers!==void 0}function gm(n,e){for(let i of n)mv(i)&&(i=i.\u0275providers),Array.isArray(i)?gm(i,e):e(i)}var NS=Pe({provide:String,useValue:Pe});function vy(n){return n!==null&&typeof n=="object"&&NS in n}function LS(n){return!!(n&&n.useExisting)}function jS(n){return!!(n&&n.useFactory)}function Co(n){return typeof n=="function"}function VS(n){return!!n.useClass}var Yc=new y("Set Injector scope."),uc={},BS={},jf;function _m(){return jf===void 0&&(jf=new xc),jf}var Nt=class{},Cc=class extends Nt{get destroyed(){return this._destroyed}constructor(e,i,t,r){super(),this.parent=i,this.source=t,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,dh(e,s=>this.processProvider(s)),this.records.set(py,po(void 0,this)),r.has("environment")&&this.records.set(Nt,po(void 0,this));let o=this.records.get(Yc);o!=null&&typeof o.value=="string"&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get(gy,Pt,ye.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(let i of this._ngOnDestroyHooks)i.ngOnDestroy();let e=this._onDestroyHooks;this._onDestroyHooks=[];for(let i of e)i()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear()}}onDestroy(e){return this.assertNotDestroyed(),this._onDestroyHooks.push(e),()=>this.removeOnDestroy(e)}runInContext(e){this.assertNotDestroyed();let i=ho(this),t=en(void 0),r;try{return e()}finally{ho(i),en(t)}}get(e,i=Bs,t=ye.Default){if(this.assertNotDestroyed(),e.hasOwnProperty(Mb))return e[Mb](this);t=jc(t);let r,o=ho(this),s=en(void 0);try{if(!(t&ye.SkipSelf)){let l=this.records.get(e);if(l===void 0){let c=WS(e)&&Lc(e);c&&this.injectableDefInScope(c)?l=po(ch(e),uc):l=null,this.records.set(e,l)}if(l!=null)return this.hydrate(e,l)}let a=t&ye.Self?_m():this.parent;return i=t&ye.Optional&&i===Bs?null:i,a.get(e,i)}catch(a){if(a.name==="NullInjectorError"){if((a[pc]=a[pc]||[]).unshift(St(e)),o)throw a;return II(a,e,"R3InjectorError",this.source)}else throw a}finally{en(s),ho(o)}}resolveInjectorInitializers(){let e=ho(this),i=en(void 0),t;try{let r=this.get(na,Pt,ye.Self);for(let o of r)o()}finally{ho(e),en(i)}}toString(){let e=[],i=this.records;for(let t of i.keys())e.push(St(t));return`R3Injector[${e.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new S(205,!1)}processProvider(e){e=It(e);let i=Co(e)?e:It(e&&e.provide),t=HS(e);if(!Co(e)&&e.multi===!0){let r=this.records.get(i);r||(r=po(void 0,uc,!0),r.factory=()=>eh(r.multi),this.records.set(i,r)),i=e,r.multi.push(e)}else{let r=this.records.get(i)}this.records.set(i,t)}hydrate(e,i){return i.value===uc&&(i.value=BS,i.value=i.factory()),typeof i.value=="object"&&i.value&&$S(i.value)&&this._ngOnDestroyHooks.add(i.value),i.value}injectableDefInScope(e){if(!e.providedIn)return!1;let i=It(e.providedIn);return typeof i=="string"?i==="any"||this.scopes.has(i):this.injectorDefTypes.has(i)}removeOnDestroy(e){let i=this._onDestroyHooks.indexOf(e);i!==-1&&this._onDestroyHooks.splice(i,1)}};function ch(n){let e=Lc(n),i=e!==null?e.factory:pr(n);if(i!==null)return i;if(n instanceof y)throw new S(204,!1);if(n instanceof Function)return zS(n);throw new S(204,!1)}function zS(n){let e=n.length;if(e>0){let t=my(e,"?");throw new S(204,!1)}let i=_I(n);return i!==null?()=>i.factory(n):()=>new n}function HS(n){if(vy(n))return po(void 0,n.useValue);{let e=yy(n);return po(e,uc)}}function yy(n,e,i){let t;if(Co(n)){let r=It(n);return pr(r)||ch(r)}else if(vy(n))t=()=>It(n.useValue);else if(jS(n))t=()=>n.useFactory(...eh(n.deps||[]));else if(LS(n))t=()=>p(It(n.useExisting));else{let r=It(n&&(n.useClass||n.provide));if(US(n))t=()=>new r(...eh(n.deps));else return pr(r)||ch(r)}return t}function po(n,e,i=!1){return{factory:n,value:e,multi:i?[]:void 0}}function US(n){return!!n.deps}function $S(n){return n!==null&&typeof n=="object"&&typeof n.ngOnDestroy=="function"}function WS(n){return typeof n=="function"||typeof n=="object"&&n instanceof y}function dh(n,e){for(let i of n)Array.isArray(i)?dh(i,e):i&&mv(i)?dh(i.\u0275providers,e):e(i)}function Hb(n,e=null,i=null,t){let r=wy(n,e,i,t);return r.resolveInjectorInitializers(),r}function wy(n,e=null,i=null,t,r=new Set){let o=[i||Pt,PS(n)];return t=t||(typeof n=="object"?void 0:St(n)),new Cc(o,e||_m(),t||null,r)}var Ne=(()=>{let e=class e{static create(t,r){if(Array.isArray(t))return Hb({name:""},r,t,"");{let o=t.name??"";return Hb({name:o},t.parent,t.providers,o)}}};e.THROW_IF_NOT_FOUND=Bs,e.NULL=new xc,e.\u0275prov=x({token:e,providedIn:"any",factory:()=>p(py)}),e.__NG_ELEMENT_ID__=-1;let n=e;return n})();var uh;function xy(n){uh=n}function Cy(){if(uh!==void 0)return uh;if(typeof document<"u")return document;throw new S(210,!1)}var ia=new y("AppId",{providedIn:"root",factory:()=>GS}),GS="ng",bm=new y("Platform Initializer"),$t=new y("Platform ID",{providedIn:"platform",factory:()=>"unknown"});var ct=new y("AnimationModuleType"),ra=new y("CSP nonce",{providedIn:"root",factory:()=>Cy().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});function Dy(n){return n instanceof Function?n():n}function Ey(n){return(n.flags&128)===128}var di=function(n){return n[n.Important=1]="Important",n[n.DashCase=2]="DashCase",n}(di||{}),qS=/^>|^->||--!>|)/g,ZS="\u200B$1\u200B";function QS(n){return n.replace(qS,e=>e.replace(YS,ZS))}var Iy=new Map,KS=0;function XS(){return KS++}function JS(n){Iy.set(n[Vc],n)}function eM(n){Iy.delete(n[Vc])}var Ub="__ngContext__";function Pi(n,e){Fi(e)?(n[Ub]=e[Vc],JS(e)):n[Ub]=e}var tM;function vm(n,e){return tM(n,e)}function ym(n){let e=n[ot];return wn(e)?e[ot]:e}function Sy(n){return Ty(n[$s])}function My(n){return Ty(n[yn])}function Ty(n){for(;n!==null&&!wn(n);)n=n[yn];return n}function go(n,e,i,t,r){if(t!=null){let o,s=!1;wn(t)?o=t:Fi(t)&&(s=!0,t=t[$n]);let a=Un(t);n===0&&i!==null?r==null?ky(e,i,a):Dc(e,i,a,r||null,!0):n===1&&i!==null?Dc(e,i,a,r||null,!0):n===2?bM(e,a,s):n===3&&e.destroyNode(a),o!=null&&yM(e,n,o,i,r)}}function nM(n,e){return n.createText(e)}function iM(n,e,i){n.setValue(e,i)}function rM(n,e){return n.createComment(QS(e))}function Ay(n,e,i){return n.createElement(e,i)}function oM(n,e){let i=e[Ge];oa(n,e,i,2,null,null),e[$n]=null,e[Ut]=null}function sM(n,e,i,t,r,o){t[$n]=r,t[Ut]=e,oa(n,t,i,1,r,o)}function aM(n,e){oa(n,e,e[Ge],2,null,null)}function lM(n){let e=n[$s];if(!e)return Vf(n[J],n);for(;e;){let i=null;if(Fi(e))i=e[$s];else{let t=e[wt];t&&(i=t)}if(!i){for(;e&&!e[yn]&&e!==n;)Fi(e)&&Vf(e[J],e),e=e[ot];e===null&&(e=n),Fi(e)&&Vf(e[J],e),i=e&&e[yn]}e=i}}function cM(n,e,i,t){let r=wt+t,o=i.length;t>0&&(i[r-1][yn]=e),t0&&(n[i-1][yn]=t[yn]);let o=wc(n,wt+e);oM(t[J],t);let s=o[zn];s!==null&&s.detachView(o[J]),t[ot]=null,t[yn]=null,t[ce]&=-129}return t}function Zc(n,e){if(!(e[ce]&256)){let i=e[Ge];e[hr]&&H_(e[hr]),i.destroyNode&&oa(n,e,i,3,null,null),lM(e)}}function Vf(n,e){if(!(e[ce]&256)){e[ce]&=-129,e[ce]|=256,fM(n,e),uM(n,e),e[J].type===1&&e[Ge].destroy();let i=e[Xs];if(i!==null&&wn(e[ot])){i!==e[ot]&&Oy(i,e);let t=e[zn];t!==null&&t.detachView(n)}eM(e)}}function uM(n,e){let i=n.cleanup,t=e[Us];if(i!==null)for(let o=0;o=0?t[s]():t[-s].unsubscribe(),o+=2}else{let s=t[i[o+1]];i[o].call(s)}t!==null&&(e[Us]=null);let r=e[Vs];if(r!==null){e[Vs]=null;for(let o=0;o-1){let{encapsulation:o}=n.data[t.directiveStart+r];if(o===Hn.None||o===Hn.Emulated)return null}return nn(t,i)}}function Dc(n,e,i,t,r){n.insertBefore(e,i,t,r)}function ky(n,e,i){n.appendChild(e,i)}function $b(n,e,i,t,r){t!==null?Dc(n,e,i,t,r):ky(n,e,i)}function mM(n,e,i,t){n.removeChild(e,i,t)}function wm(n,e){return n.parentNode(e)}function pM(n,e){return n.nextSibling(e)}function Fy(n,e,i){return _M(n,e,i)}function gM(n,e,i){return n.type&40?nn(n,i):null}var _M=gM,Wb;function Qc(n,e,i,t){let r=Ry(n,t,e),o=e[Ge],s=t.parent||e[Ut],a=Fy(s,t,e);if(r!=null)if(Array.isArray(i))for(let l=0;ln,createScript:n=>n,createScriptURL:n=>n})}catch{}return ic}function Kc(n){return CM()?.createHTML(n)||n}var rc;function DM(){if(rc===void 0&&(rc=null,zt.trustedTypes))try{rc=zt.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:n=>n,createScript:n=>n,createScriptURL:n=>n})}catch{}return rc}function Gb(n){return DM()?.createHTML(n)||n}var ui=class{constructor(e){this.changingThisBreaksApplicationSecurity=e}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${pv})`}},hh=class extends ui{getTypeName(){return"HTML"}},mh=class extends ui{getTypeName(){return"Style"}},ph=class extends ui{getTypeName(){return"Script"}},gh=class extends ui{getTypeName(){return"URL"}},_h=class extends ui{getTypeName(){return"ResourceURL"}};function Wn(n){return n instanceof ui?n.changingThisBreaksApplicationSecurity:n}function Er(n,e){let i=EM(n);if(i!=null&&i!==e){if(i==="ResourceURL"&&e==="URL")return!0;throw new Error(`Required a safe ${e}, got a ${i} (see ${pv})`)}return i===e}function EM(n){return n instanceof ui&&n.getTypeName()||null}function Vy(n){return new hh(n)}function By(n){return new mh(n)}function zy(n){return new ph(n)}function Hy(n){return new gh(n)}function Uy(n){return new _h(n)}function IM(n){let e=new vh(n);return SM()?new bh(e):e}var bh=class{constructor(e){this.inertDocumentHelper=e}getInertBodyElement(e){e=""+e;try{let i=new window.DOMParser().parseFromString(Kc(e),"text/html").body;return i===null?this.inertDocumentHelper.getInertBodyElement(e):(i.removeChild(i.firstChild),i)}catch{return null}}},vh=class{constructor(e){this.defaultDoc=e,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(e){let i=this.inertDocument.createElement("template");return i.innerHTML=Kc(e),i}};function SM(){try{return!!new window.DOMParser().parseFromString(Kc(""),"text/html")}catch{return!1}}var MM=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Cm(n){return n=String(n),n.match(MM)?n:"unsafe:"+n}function hi(n){let e={};for(let i of n.split(","))e[i]=!0;return e}function sa(...n){let e={};for(let i of n)for(let t in i)i.hasOwnProperty(t)&&(e[t]=!0);return e}var $y=hi("area,br,col,hr,img,wbr"),Wy=hi("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Gy=hi("rp,rt"),TM=sa(Gy,Wy),AM=sa(Wy,hi("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),OM=sa(Gy,hi("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),qb=sa($y,AM,OM,TM),qy=hi("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),RM=hi("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),kM=hi("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext"),FM=sa(qy,RM,kM),PM=hi("script,style,template"),yh=class{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(e){let i=e.firstChild,t=!0;for(;i;){if(i.nodeType===Node.ELEMENT_NODE?t=this.startElement(i):i.nodeType===Node.TEXT_NODE?this.chars(i.nodeValue):this.sanitizedSomething=!0,t&&i.firstChild){i=i.firstChild;continue}for(;i;){i.nodeType===Node.ELEMENT_NODE&&this.endElement(i);let r=this.checkClobberedElement(i,i.nextSibling);if(r){i=r;break}i=this.checkClobberedElement(i,i.parentNode)}}return this.buf.join("")}startElement(e){let i=e.nodeName.toLowerCase();if(!qb.hasOwnProperty(i))return this.sanitizedSomething=!0,!PM.hasOwnProperty(i);this.buf.push("<"),this.buf.push(i);let t=e.attributes;for(let r=0;r"),!0}endElement(e){let i=e.nodeName.toLowerCase();qb.hasOwnProperty(i)&&!$y.hasOwnProperty(i)&&(this.buf.push(""))}chars(e){this.buf.push(Yb(e))}checkClobberedElement(e,i){if(i&&(e.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error(`Failed to sanitize html because the element is clobbered: ${e.outerHTML}`);return i}},NM=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,LM=/([^\#-~ |!])/g;function Yb(n){return n.replace(/&/g,"&").replace(NM,function(e){let i=e.charCodeAt(0),t=e.charCodeAt(1);return"&#"+((i-55296)*1024+(t-56320)+65536)+";"}).replace(LM,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(//g,">")}var oc;function Dm(n,e){let i=null;try{oc=oc||IM(n);let t=e?String(e):"";i=oc.getInertBodyElement(t);let r=5,o=t;do{if(r===0)throw new Error("Failed to sanitize html because the input is unstable");r--,t=o,o=i.innerHTML,i=oc.getInertBodyElement(t)}while(t!==o);let a=new yh().sanitizeChildren(Zb(i)||i);return Kc(a)}finally{if(i){let t=Zb(i)||i;for(;t.firstChild;)t.removeChild(t.firstChild)}}}function Zb(n){return"content"in n&&jM(n)?n.content:null}function jM(n){return n.nodeType===Node.ELEMENT_NODE&&n.nodeName==="TEMPLATE"}var Mt=function(n){return n[n.NONE=0]="NONE",n[n.HTML=1]="HTML",n[n.STYLE=2]="STYLE",n[n.SCRIPT=3]="SCRIPT",n[n.URL=4]="URL",n[n.RESOURCE_URL=5]="RESOURCE_URL",n}(Mt||{});function Yy(n){let e=VM();return e?Gb(e.sanitize(Mt.HTML,n)||""):Er(n,"HTML")?Gb(Wn(n)):Dm(Cy(),Nc(n))}function VM(){let n=me();return n&&n[yo].sanitizer}var BM="h",zM="b";var HM=(n,e,i)=>null;function Em(n,e,i=!1){return HM(n,e,i)}var wh=class{},Ec=class{};function UM(n){let e=Error(`No component factory found for ${St(n)}.`);return e[$M]=n,e}var $M="ngComponent";var xh=class{resolveComponentFactory(e){throw UM(e)}},mi=(()=>{let e=class e{};e.NULL=new xh;let n=e;return n})();function WM(){return So(xt(),me())}function So(n,e){return new k(nn(n,e))}var k=(()=>{let e=class e{constructor(t){this.nativeElement=t}};e.__NG_ELEMENT_ID__=WM;let n=e;return n})();function GM(n){return n instanceof k?n.nativeElement:n}var vr=class{},Ir=(()=>{let e=class e{constructor(){this.destroyNode=null}};e.__NG_ELEMENT_ID__=()=>qM();let n=e;return n})();function qM(){let n=me(),e=xt(),i=Bi(e.index,n);return(Fi(i)?i:n)[Ge]}var YM=(()=>{let e=class e{};e.\u0275prov=x({token:e,providedIn:"root",factory:()=>null});let n=e;return n})(),Ni=class{constructor(e){this.full=e,this.major=e.split(".")[0],this.minor=e.split(".")[1],this.patch=e.split(".").slice(2).join(".")}},ZM=new Ni("17.0.0"),Bf={};function aa(n,e){let i=Y_(n),t=i[Ss];return e?.equal&&(t.equal=e.equal),i.set=r=>pf(t,r),i.update=r=>Z_(t,r),i.asReadonly=QM.bind(i),i}function QM(){let n=this[Ss];if(n.readonlyFn===void 0){let e=()=>this();e[Ss]=n,n.readonlyFn=e}return n.readonlyFn}function Zy(n){return Im(n)?Array.isArray(n)||!(n instanceof Map)&&Symbol.iterator in n:!1}function KM(n,e){if(Array.isArray(n))for(let i=0;ie,Dh=class{constructor(e){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=e||XM}forEachItem(e){let i;for(i=this._itHead;i!==null;i=i._next)e(i)}forEachOperation(e){let i=this._itHead,t=this._removalsHead,r=0,o=null;for(;i||t;){let s=!t||i&&i.currentIndex{s=this._trackByFn(r,a),i===null||!Object.is(i.trackById,s)?(i=this._mismatch(i,a,s,r),t=!0):(t&&(i=this._verifyReinsertion(i,a,s,r)),Object.is(i.item,a)||this._addIdentityChange(i,a)),i=i._next,r++}),this.length=r;return this._truncate(i),this.collection=e,this.isDirty}get isDirty(){return this._additionsHead!==null||this._movesHead!==null||this._removalsHead!==null||this._identityChangesHead!==null}_reset(){if(this.isDirty){let e;for(e=this._previousItHead=this._itHead;e!==null;e=e._next)e._nextPrevious=e._next;for(e=this._additionsHead;e!==null;e=e._nextAdded)e.previousIndex=e.currentIndex;for(this._additionsHead=this._additionsTail=null,e=this._movesHead;e!==null;e=e._nextMoved)e.previousIndex=e.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(e,i,t,r){let o;return e===null?o=this._itTail:(o=e._prev,this._remove(e)),e=this._unlinkedRecords===null?null:this._unlinkedRecords.get(t,null),e!==null?(Object.is(e.item,i)||this._addIdentityChange(e,i),this._reinsertAfter(e,o,r)):(e=this._linkedRecords===null?null:this._linkedRecords.get(t,r),e!==null?(Object.is(e.item,i)||this._addIdentityChange(e,i),this._moveAfter(e,o,r)):e=this._addAfter(new Eh(i,t),o,r)),e}_verifyReinsertion(e,i,t,r){let o=this._unlinkedRecords===null?null:this._unlinkedRecords.get(t,null);return o!==null?e=this._reinsertAfter(o,e._prev,r):e.currentIndex!=r&&(e.currentIndex=r,this._addToMoves(e,r)),e}_truncate(e){for(;e!==null;){let i=e._next;this._addToRemovals(this._unlink(e)),e=i}this._unlinkedRecords!==null&&this._unlinkedRecords.clear(),this._additionsTail!==null&&(this._additionsTail._nextAdded=null),this._movesTail!==null&&(this._movesTail._nextMoved=null),this._itTail!==null&&(this._itTail._next=null),this._removalsTail!==null&&(this._removalsTail._nextRemoved=null),this._identityChangesTail!==null&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(e,i,t){this._unlinkedRecords!==null&&this._unlinkedRecords.remove(e);let r=e._prevRemoved,o=e._nextRemoved;return r===null?this._removalsHead=o:r._nextRemoved=o,o===null?this._removalsTail=r:o._prevRemoved=r,this._insertAfter(e,i,t),this._addToMoves(e,t),e}_moveAfter(e,i,t){return this._unlink(e),this._insertAfter(e,i,t),this._addToMoves(e,t),e}_addAfter(e,i,t){return this._insertAfter(e,i,t),this._additionsTail===null?this._additionsTail=this._additionsHead=e:this._additionsTail=this._additionsTail._nextAdded=e,e}_insertAfter(e,i,t){let r=i===null?this._itHead:i._next;return e._next=r,e._prev=i,r===null?this._itTail=e:r._prev=e,i===null?this._itHead=e:i._next=e,this._linkedRecords===null&&(this._linkedRecords=new Ic),this._linkedRecords.put(e),e.currentIndex=t,e}_remove(e){return this._addToRemovals(this._unlink(e))}_unlink(e){this._linkedRecords!==null&&this._linkedRecords.remove(e);let i=e._prev,t=e._next;return i===null?this._itHead=t:i._next=t,t===null?this._itTail=i:t._prev=i,e}_addToMoves(e,i){return e.previousIndex===i||(this._movesTail===null?this._movesTail=this._movesHead=e:this._movesTail=this._movesTail._nextMoved=e),e}_addToRemovals(e){return this._unlinkedRecords===null&&(this._unlinkedRecords=new Ic),this._unlinkedRecords.put(e),e.currentIndex=null,e._nextRemoved=null,this._removalsTail===null?(this._removalsTail=this._removalsHead=e,e._prevRemoved=null):(e._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=e),e}_addIdentityChange(e,i){return e.item=i,this._identityChangesTail===null?this._identityChangesTail=this._identityChangesHead=e:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=e,e}},Eh=class{constructor(e,i){this.item=e,this.trackById=i,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}},Ih=class{constructor(){this._head=null,this._tail=null}add(e){this._head===null?(this._head=this._tail=e,e._nextDup=null,e._prevDup=null):(this._tail._nextDup=e,e._prevDup=this._tail,e._nextDup=null,this._tail=e)}get(e,i){let t;for(t=this._head;t!==null;t=t._nextDup)if((i===null||i<=t.currentIndex)&&Object.is(t.trackById,e))return t;return null}remove(e){let i=e._prevDup,t=e._nextDup;return i===null?this._head=t:i._nextDup=t,t===null?this._tail=i:t._prevDup=i,this._head===null}},Ic=class{constructor(){this.map=new Map}put(e){let i=e.trackById,t=this.map.get(i);t||(t=new Ih,this.map.set(i,t)),t.add(e)}get(e,i){let t=e,r=this.map.get(t);return r?r.get(e,i):null}remove(e){let i=e.trackById;return this.map.get(i).remove(e)&&this.map.delete(i),e}get isEmpty(){return this.map.size===0}clear(){this.map.clear()}};function Qb(n,e,i){let t=n.previousIndex;if(t===null)return t;let r=0;return i&&t{if(i&&i.key===r)this._maybeAddToChanges(i,t),this._appendAfter=i,i=i._next;else{let o=this._getOrCreateRecordForKey(r,t);i=this._insertBeforeOrAppend(i,o)}}),i){i._prev&&(i._prev._next=null),this._removalsHead=i;for(let t=i;t!==null;t=t._nextRemoved)t===this._mapHead&&(this._mapHead=null),this._records.delete(t.key),t._nextRemoved=t._next,t.previousValue=t.currentValue,t.currentValue=null,t._prev=null,t._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(e,i){if(e){let t=e._prev;return i._next=e,i._prev=t,e._prev=i,t&&(t._next=i),e===this._mapHead&&(this._mapHead=i),this._appendAfter=e,e}return this._appendAfter?(this._appendAfter._next=i,i._prev=this._appendAfter):this._mapHead=i,this._appendAfter=i,null}_getOrCreateRecordForKey(e,i){if(this._records.has(e)){let r=this._records.get(e);this._maybeAddToChanges(r,i);let o=r._prev,s=r._next;return o&&(o._next=s),s&&(s._prev=o),r._next=null,r._prev=null,r}let t=new Th(e);return this._records.set(e,t),t.currentValue=i,this._addToAdditions(t),t}_reset(){if(this.isDirty){let e;for(this._previousMapHead=this._mapHead,e=this._previousMapHead;e!==null;e=e._next)e._nextPrevious=e._next;for(e=this._changesHead;e!==null;e=e._nextChanged)e.previousValue=e.currentValue;for(e=this._additionsHead;e!=null;e=e._nextAdded)e.previousValue=e.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(e,i){Object.is(i,e.currentValue)||(e.previousValue=e.currentValue,e.currentValue=i,this._addToChanges(e))}_addToAdditions(e){this._additionsHead===null?this._additionsHead=this._additionsTail=e:(this._additionsTail._nextAdded=e,this._additionsTail=e)}_addToChanges(e){this._changesHead===null?this._changesHead=this._changesTail=e:(this._changesTail._nextChanged=e,this._changesTail=e)}_forEach(e,i){e instanceof Map?e.forEach(i):Object.keys(e).forEach(t=>i(e[t],t))}},Th=class{constructor(e){this.key=e,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}};function Kb(){return new Gn([new Ch])}var Gn=(()=>{let e=class e{constructor(t){this.factories=t}static create(t,r){if(r!=null){let o=r.factories.slice();t=t.concat(o)}return new e(t)}static extend(t){return{provide:e,useFactory:r=>e.create(t,r||Kb()),deps:[[e,new ta,new Io]]}}find(t){let r=this.factories.find(o=>o.supports(t));if(r!=null)return r;throw new S(901,!1)}};e.\u0275prov=x({token:e,providedIn:"root",factory:Kb});let n=e;return n})();function Xb(){return new Sm([new Sh])}var Sm=(()=>{let e=class e{constructor(t){this.factories=t}static create(t,r){if(r){let o=r.factories.slice();t=t.concat(o)}return new e(t)}static extend(t){return{provide:e,useFactory:r=>e.create(t,r||Xb()),deps:[[e,new ta,new Io]]}}find(t){let r=this.factories.find(o=>o.supports(t));if(r)return r;throw new S(901,!1)}};e.\u0275prov=x({token:e,providedIn:"root",factory:Xb});let n=e;return n})();function Sc(n,e,i,t,r=!1){for(;i!==null;){let o=e[i.index];o!==null&&t.push(Un(o)),wn(o)&&JM(o,t);let s=i.type;if(s&8)Sc(n,e,i.child,t);else if(s&32){let a=vm(i,e),l;for(;l=a();)t.push(l)}else if(s&16){let a=Py(e,i);if(Array.isArray(a))t.push(...a);else{let l=ym(e[tn]);Sc(l[J],l,a,t,!0)}}i=r?i.projectionNext:i.next}return t}function JM(n,e){for(let i=wt;i{Hc(n.lView)},consumerOnSignalRead(){this.lView[hr]=this}}),rT="ngOriginalError";function zf(n){return n[rT]}var Ht=class{constructor(){this._console=console}handleError(e){let i=this._findOriginalError(e);this._console.error("ERROR",e),i&&this._console.error("ORIGINAL ERROR",i)}_findOriginalError(e){let i=e&&zf(e);for(;i&&zf(i);)i=zf(i);return i||null}};var Ky=!1,oT=new y("",{providedIn:"root",factory:()=>Ky});var qn={};function D(n){Xy(Qe(),me(),Dr()+n,!1)}function Xy(n,e,i,t){if(!t)if((e[ce]&3)===3){let o=n.preOrderCheckHooks;o!==null&&lc(e,o,i)}else{let o=n.preOrderHooks;o!==null&&cc(e,o,0,i)}gr(i)}function f(n,e=ye.Default){let i=me();if(i===null)return p(n,e);let t=xt();return cy(t,i,It(n),e)}function Mm(){let n="invalid";throw new Error(n)}function sT(n,e){let i=n.hostBindingOpCodes;if(i!==null)try{for(let t=0;tlt&&Xy(n,e,lt,!1),Vn(s?2:0,r),i(t,r)}finally{gr(o),Vn(s?3:1,r)}}function Tm(n,e,i){if(om(e)){let t=mt(null);try{let r=e.directiveStart,o=e.directiveEnd;for(let s=r;snull;function fT(n,e,i,t){let r=a0(e);r.push(i),n.firstCreatePass&&l0(n).push(t,r.length-1)}function hT(n,e,i,t,r,o){let s=e?e.injectorIndex:-1,a=0;return Wv()&&(a|=128),{type:i,index:t,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:a,providerIndexes:0,value:r,attrs:o,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:e,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function Jb(n,e,i,t){for(let r in n)if(n.hasOwnProperty(r)){i=i===null?{}:i;let o=n[r];t===null?ev(i,e,r,o):t.hasOwnProperty(r)&&ev(i,e,t[r],o)}return i}function ev(n,e,i,t){n.hasOwnProperty(i)?n[i].push(e,t):n[i]=[e,t]}function mT(n,e,i){let t=e.directiveStart,r=e.directiveEnd,o=n.data,s=e.attrs,a=[],l=null,c=null;for(let d=t;d0;){let i=n[--e];if(typeof i=="number"&&i<0)return i}return 0}function vT(n,e,i,t){let r=i.directiveStart,o=i.directiveEnd;Bc(i)&&IT(e,i,n.data[r+i.componentOffset]),n.firstCreatePass||yc(i,e),Pi(t,e);let s=i.initialInputs;for(let a=r;a-1&&(Ws(e,t),wc(i,t))}this._attachedToViewContainer=!1}Zc(this._lView[J],this._lView)}onDestroy(e){JI(this._lView,e)}markForCheck(){Nm(this._cdRefInjectingView||this._lView)}detach(){this._lView[ce]&=-129}reattach(){Uv(this._lView),this._lView[ce]|=128}detectChanges(){u0(this._lView[J],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new S(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,aM(this._lView[J],this._lView)}attachToAppRef(e){if(this._attachedToViewContainer)throw new S(902,!1);this._appRef=e}},Rh=class extends yr{constructor(e){super(e),this._view=e}detectChanges(){let e=this._view,i=e[J],t=e[gt];u0(i,e,t,!1)}checkNoChanges(){}get context(){return null}},Oe=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=NT;let n=e;return n})();function NT(n){return LT(xt(),me(),(n&16)===16)}function LT(n,e,i){if(Bc(n)&&!i){let t=Bi(n.index,e);return new yr(t,t)}else if(n.type&47){let t=e[tn];return new yr(t,e)}return null}function la(n,e){return performance?.mark?.(n,e)}var kh=class extends T{constructor(e=!1){super(),this.__isAsync=e}emit(e){super.next(e)}subscribe(e,i,t){let r=e,o=i||(()=>null),s=t;if(e&&typeof e=="object"){let l=e;r=l.next?.bind(l),o=l.error?.bind(l),s=l.complete?.bind(l)}this.__isAsync&&(o=Hf(o),r&&(r=Hf(r)),s&&(s=Hf(s)));let a=super.subscribe({next:r,error:o,complete:s});return e instanceof ve&&e.add(a),a}};function Hf(n){return e=>{setTimeout(n,void 0,e)}}var X=kh;function tv(...n){}function jT(){let n=typeof zt.requestAnimationFrame=="function",e=zt[n?"requestAnimationFrame":"setTimeout"],i=zt[n?"cancelAnimationFrame":"clearTimeout"];if(typeof Zone<"u"&&e&&i){let t=e[Zone.__symbol__("OriginalDelegate")];t&&(e=t);let r=i[Zone.__symbol__("OriginalDelegate")];r&&(i=r)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:i}}var A=class n{constructor({enableLongStackTrace:e=!1,shouldCoalesceEventChangeDetection:i=!1,shouldCoalesceRunChangeDetection:t=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new X(!1),this.onMicrotaskEmpty=new X(!1),this.onStable=new X(!1),this.onError=new X(!1),typeof Zone>"u")throw new S(908,!1);Zone.assertZonePatched();let r=this;r._nesting=0,r._outer=r._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),e&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!t&&i,r.shouldCoalesceRunChangeDetection=t,r.lastRequestAnimationFrameId=-1,r.nativeRequestAnimationFrame=jT().nativeRequestAnimationFrame,zT(r)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get("isAngularZone")===!0}static assertInAngularZone(){if(!n.isInAngularZone())throw new S(909,!1)}static assertNotInAngularZone(){if(n.isInAngularZone())throw new S(909,!1)}run(e,i,t){return this._inner.run(e,i,t)}runTask(e,i,t,r){let o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+r,e,VT,tv,tv);try{return o.runTask(s,i,t)}finally{o.cancelTask(s)}}runGuarded(e,i,t){return this._inner.runGuarded(e,i,t)}runOutsideAngular(e){return this._outer.run(e)}},VT={};function Lm(n){if(n._nesting==0&&!n.hasPendingMicrotasks&&!n.isStable)try{n._nesting++,n.onMicrotaskEmpty.emit(null)}finally{if(n._nesting--,!n.hasPendingMicrotasks)try{n.runOutsideAngular(()=>n.onStable.emit(null))}finally{n.isStable=!0}}}function BT(n){n.isCheckStableRunning||n.lastRequestAnimationFrameId!==-1||(n.lastRequestAnimationFrameId=n.nativeRequestAnimationFrame.call(zt,()=>{n.fakeTopEventTask||(n.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{n.lastRequestAnimationFrameId=-1,Fh(n),n.isCheckStableRunning=!0,Lm(n),n.isCheckStableRunning=!1},void 0,()=>{},()=>{})),n.fakeTopEventTask.invoke()}),Fh(n))}function zT(n){let e=()=>{BT(n)};n._inner=n._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(i,t,r,o,s,a)=>{if(HT(a))return i.invokeTask(r,o,s,a);try{return nv(n),i.invokeTask(r,o,s,a)}finally{(n.shouldCoalesceEventChangeDetection&&o.type==="eventTask"||n.shouldCoalesceRunChangeDetection)&&e(),iv(n)}},onInvoke:(i,t,r,o,s,a,l)=>{try{return nv(n),i.invoke(r,o,s,a,l)}finally{n.shouldCoalesceRunChangeDetection&&e(),iv(n)}},onHasTask:(i,t,r,o)=>{i.hasTask(r,o),t===r&&(o.change=="microTask"?(n._hasPendingMicrotasks=o.microTask,Fh(n),Lm(n)):o.change=="macroTask"&&(n.hasPendingMacrotasks=o.macroTask))},onHandleError:(i,t,r,o)=>(i.handleError(r,o),n.runOutsideAngular(()=>n.onError.emit(o)),!1)})}function Fh(n){n._hasPendingMicrotasks||(n.shouldCoalesceEventChangeDetection||n.shouldCoalesceRunChangeDetection)&&n.lastRequestAnimationFrameId!==-1?n.hasPendingMicrotasks=!0:n.hasPendingMicrotasks=!1}function nv(n){n._nesting++,n.isStable&&(n.isStable=!1,n.onUnstable.emit(null))}function iv(n){n._nesting--,Lm(n)}var _0=new y("",{providedIn:"root",factory:b0});function b0(){let n=C(A),e=!0,i=new W(r=>{e=n.isStable&&!n.hasPendingMacrotasks&&!n.hasPendingMicrotasks,n.runOutsideAngular(()=>{r.next(e),r.complete()})}),t=new W(r=>{let o;n.runOutsideAngular(()=>{o=n.onStable.subscribe(()=>{A.assertNotInAngularZone(),queueMicrotask(()=>{!e&&!n.hasPendingMacrotasks&&!n.hasPendingMicrotasks&&(e=!0,r.next(!0))})})});let s=n.onUnstable.subscribe(()=>{A.assertInAngularZone(),e&&(e=!1,n.runOutsideAngular(()=>{r.next(!1)}))});return()=>{o.unsubscribe(),s.unsubscribe()}});return rt(i,t.pipe(ki()))}function HT(n){return!Array.isArray(n)||n.length!==1?!1:n[0].data?.__ignore_ng_zone__===!0}var UT=(()=>{let e=class e{constructor(){this.renderDepth=0,this.handler=null,this.internalCallbacks=[]}begin(){this.handler?.validateBegin(),this.renderDepth++}end(){if(this.renderDepth--,this.renderDepth===0){for(let t of this.internalCallbacks)t();this.internalCallbacks.length=0,this.handler?.execute()}}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}};e.\u0275prov=x({token:e,providedIn:"root",factory:()=>new e});let n=e;return n})();function $T(n,e){let i=Bi(e,n),t=i[J];WT(t,i);let r=i[$n];r!==null&&i[Hs]===null&&(i[Hs]=Em(r,i[vo])),jm(t,i,i[gt])}function WT(n,e){for(let i=e.length;i0&&Ly(n,i,o.join(" "))}}function JT(n,e,i){let t=n.projection=[];for(let r=0;r=0;t--){let r=n[t];r.hostVars=e+=r.hostVars,r.hostAttrs=zs(r.hostAttrs,i=zs(i,r.hostAttrs))}}function sc(n){return n===bo?{}:n===Pt?[]:n}function iA(n,e){let i=n.viewQuery;i?n.viewQuery=(t,r)=>{e(t,r),i(t,r)}:n.viewQuery=e}function rA(n,e){let i=n.contentQueries;i?n.contentQueries=(t,r,o)=>{e(t,r,o),i(t,r,o)}:n.contentQueries=e}function oA(n,e){let i=n.hostBindings;i?n.hostBindings=(t,r)=>{e(t,r),i(t,r)}:n.hostBindings=e}function Ue(n){let e=n.inputConfig,i={};for(let t in e)if(e.hasOwnProperty(t)){let r=e[t];Array.isArray(r)&&r[2]&&(i[t]=r[2])}n.inputTransforms=i}function v0(n,e,i){return n[e]=i}function sA(n,e){return n[e]}function xn(n,e,i){let t=n[e];return Object.is(t,i)?!1:(n[e]=i,!0)}function aA(n,e,i,t){let r=xn(n,e,i);return xn(n,e+1,t)||r}function we(n,e,i,t){let r=me(),o=Cr();if(xn(r,o,e)){let s=Qe(),a=Uc();ST(a,r,n,e,i,t)}return we}function y0(n,e,i,t){return xn(n,Cr(),i)?e+Nc(i)+t:qn}function ac(n,e){return n<<17|e<<2}function wr(n){return n>>17&32767}function lA(n){return(n&2)==2}function cA(n,e){return n&131071|e<<17}function Lh(n){return n|2}function Do(n){return(n&131068)>>2}function Uf(n,e){return n&-131069|e<<2}function dA(n){return(n&1)===1}function jh(n){return n|1}function uA(n,e,i,t,r,o){let s=o?e.classBindings:e.styleBindings,a=wr(s),l=Do(s);n[t]=i;let c=!1,d;if(Array.isArray(i)){let u=i;d=u[1],(d===null||ea(u,d)>0)&&(c=!0)}else d=i;if(r)if(l!==0){let h=wr(n[a+1]);n[t+1]=ac(h,a),h!==0&&(n[h+1]=Uf(n[h+1],t)),n[a+1]=cA(n[a+1],t)}else n[t+1]=ac(a,0),a!==0&&(n[a+1]=Uf(n[a+1],t)),a=t;else n[t+1]=ac(l,0),a===0?a=t:n[l+1]=Uf(n[l+1],t),l=t;c&&(n[t+1]=Lh(n[t+1])),ov(n,d,t,!0,o),ov(n,d,t,!1,o),fA(e,d,n,t,o),s=ac(a,l),o?e.classBindings=s:e.styleBindings=s}function fA(n,e,i,t,r){let o=r?n.residualClasses:n.residualStyles;o!=null&&typeof e=="string"&&ea(o,e)>=0&&(i[t+1]=jh(i[t+1]))}function ov(n,e,i,t,r){let o=n[i+1],s=e===null,a=t?wr(o):Do(o),l=!1;for(;a!==0&&(l===!1||s);){let c=n[a],d=n[a+1];hA(c,e)&&(l=!0,n[a+1]=t?jh(d):Lh(d)),a=t?wr(d):Do(d)}l&&(n[i+1]=t?Lh(o):jh(o))}function hA(n,e){return n===null||e==null||(Array.isArray(n)?n[1]:n)===e?!0:Array.isArray(n)&&typeof e=="string"?ea(n,e)>=0:!1}var vn={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function mA(n){return n.substring(vn.key,vn.keyEnd)}function pA(n){return gA(n),w0(n,x0(n,0,vn.textEnd))}function w0(n,e){let i=vn.textEnd;return i===e?-1:(e=vn.keyEnd=_A(n,vn.key=e,i),x0(n,e,i))}function gA(n){vn.key=0,vn.keyEnd=0,vn.value=0,vn.valueEnd=0,vn.textEnd=n.length}function x0(n,e,i){for(;e32;)e++;return e}function P(n,e,i){let t=me(),r=Cr();if(xn(t,r,e)){let o=Qe(),s=Uc();km(o,s,t,n,e,t[Ge],i,!1)}return P}function Vh(n,e,i,t,r){let o=e.inputs,s=r?"class":"style";Pm(n,i,o[s],s,t)}function Sr(n,e,i){return D0(n,e,i,!1),Sr}function _e(n,e){return D0(n,e,null,!0),_e}function Yn(n){E0(CA,C0,n,!0)}function C0(n,e){for(let i=pA(e);i>=0;i=w0(e,i))qc(n,mA(e),!0)}function D0(n,e,i,t){let r=me(),o=Qe(),s=Yv(2);if(o.firstUpdatePass&&S0(o,n,s,t),e!==qn&&xn(r,s,e)){let a=o.data[Dr()];M0(o,a,r,r[Ge],n,r[s+1]=EA(e,i),t,s)}}function E0(n,e,i,t){let r=Qe(),o=Yv(2);r.firstUpdatePass&&S0(r,null,o,t);let s=me();if(i!==qn&&xn(s,o,i)){let a=r.data[Dr()];if(T0(a,t)&&!I0(r,o)){let l=t?a.classesWithoutHost:a.stylesWithoutHost;l!==null&&(i=Kf(l,i||"")),Vh(r,a,s,i,t)}else DA(r,a,s,s[Ge],s[o+1],s[o+1]=xA(n,e,i),t,o)}}function I0(n,e){return e>=n.expandoStartIndex}function S0(n,e,i,t){let r=n.data;if(r[i+1]===null){let o=r[Dr()],s=I0(n,i);T0(o,t)&&e===null&&!s&&(e=!1),e=bA(r,o,e,t),uA(r,o,e,i,s,t)}}function bA(n,e,i,t){let r=dm(n),o=t?e.residualClasses:e.residualStyles;if(r===null)(t?e.classBindings:e.styleBindings)===0&&(i=$f(null,n,e,i,t),i=qs(i,e.attrs,t),o=null);else{let s=e.directiveStylingLast;if(s===-1||n[s]!==r)if(i=$f(r,n,e,i,t),o===null){let l=vA(n,e,t);l!==void 0&&Array.isArray(l)&&(l=$f(null,n,e,l[1],t),l=qs(l,e.attrs,t),yA(n,e,t,l))}else o=wA(n,e,t)}return o!==void 0&&(t?e.residualClasses=o:e.residualStyles=o),i}function vA(n,e,i){let t=i?e.classBindings:e.styleBindings;if(Do(t)!==0)return n[wr(t)]}function yA(n,e,i,t){let r=i?e.classBindings:e.styleBindings;n[wr(r)]=t}function wA(n,e,i){let t,r=e.directiveEnd;for(let o=1+e.directiveStylingLast;o0;){let l=n[r],c=Array.isArray(l),d=c?l[1]:l,u=d===null,h=i[r+1];h===qn&&(h=u?Pt:void 0);let m=u?Lf(h,t):d===t?h:void 0;if(c&&!Ac(m)&&(m=Lf(l,t)),Ac(m)&&(a=m,s))return a;let g=n[r+1];r=s?wr(g):Do(g)}if(e!==null){let l=o?e.residualClasses:e.residualStyles;l!=null&&(a=Lf(l,t))}return a}function Ac(n){return n!==void 0}function EA(n,e){return n==null||n===""||(typeof e=="string"?n=n+e:typeof n=="object"&&(n=St(Wn(n)))),n}function T0(n,e){return(n.flags&(e?8:16))!==0}function A0(n,e,i){let t=me(),r=y0(t,n,e,i);E0(qc,C0,r,!0)}var Q4=new RegExp(`^(\\d+)*(${zM}|${BM})*(.*)`);var IA=(n,e)=>null;function Ys(n,e){return IA(n,e)}var Bh=class{destroy(e){}updateValue(e,i){}swap(e,i){let t=Math.min(e,i),r=Math.max(e,i),o=this.detach(r);if(r-t>1){let s=this.detach(t);this.attach(t,o),this.attach(r,s)}else this.attach(t,o)}move(e,i){this.attach(i,this.detach(e))}};function Wf(n,e,i,t,r){return n===i&&Object.is(e,t)?1:Object.is(r(n,e),r(i,t))?-1:0}function SA(n,e,i){let t,r,o=0,s=n.length-1;if(Array.isArray(e)){let a=e.length-1;for(;o<=s&&o<=a;){let l=n.at(o),c=e[o],d=Wf(o,l,o,c,i);if(d!==0){d<0&&n.updateValue(o,c),o++;continue}let u=n.at(s),h=e[a],m=Wf(s,u,a,h,i);if(m!==0){m<0&&n.updateValue(s,h),s--,a--;continue}let g=i(o,l),v=i(s,u),E=i(o,c);if(Object.is(E,v)){let I=i(a,h);Object.is(I,g)?(n.swap(o,s),n.updateValue(s,h),a--,s--):n.move(s,o),n.updateValue(o,c),o++;continue}if(t??=new Oc,r??=lv(n,o,s,i),zh(n,t,o,E))n.updateValue(o,c),o++,s++;else if(r.has(E))t.set(g,n.detach(o)),s--;else{let I=n.create(o,e[o]);n.attach(o,I),o++,s++}}for(;o<=a;)av(n,t,i,o,e[o]),o++}else if(e!=null){let a=e[Symbol.iterator](),l=a.next();for(;!l.done&&o<=s;){let c=n.at(o),d=l.value,u=Wf(o,c,o,d,i);if(u!==0)u<0&&n.updateValue(o,d),o++,l=a.next();else{t??=new Oc,r??=lv(n,o,s,i);let h=i(o,d);if(zh(n,t,o,h))n.updateValue(o,d),o++,s++,l=a.next();else if(!r.has(h))n.attach(o,n.create(o,d)),o++,s++,l=a.next();else{let m=i(o,c);t.set(m,n.detach(o)),s--}}}for(;!l.done;)av(n,t,i,n.length,l.value),l=a.next()}for(;o<=s;)n.destroy(n.detach(s--));t?.forEach(a=>n.destroy(a))}function zh(n,e,i,t){return e!==void 0&&e.has(t)?(n.attach(i,e.get(t)),e.delete(t),!0):!1}function av(n,e,i,t,r){if(zh(n,e,t,i(t,r)))n.updateValue(t,r);else{let o=n.create(t,r);n.attach(t,o)}}function lv(n,e,i,t){let r=new Set;for(let o=e;o<=i;o++)r.add(t(o,n.at(o)));return r}var Oc=class{constructor(){this.map=new Map}has(e){let i=this.map.get(e);return i!==void 0&&i.length>0}delete(e){let i=this.map.get(e);return i!==void 0?(i.pop(),!0):!1}get(e){let i=this.map.get(e);return i!==void 0&&i.length>0?i[0]:void 0}set(e,i){if(!this.map.has(e)){this.map.set(e,[i]);return}this.map.get(e)?.push(i)}forEach(e){for(let[i,t]of this.map)for(let r of t)e(r,i)}};function ed(n,e,i,t){let r=e.tView,s=n[ce]&4096?4096:16,a=Xc(n,r,i,s,null,e,null,null,null,t?.injector??null,t?.dehydratedView??null),l=n[e.index];a[Xs]=l;let c=n[zn];return c!==null&&(a[zn]=c.createEmbeddedView(r)),jm(r,a,i),a}function O0(n,e){let i=wt+e;if(i{let e=class e{};e.__NG_ELEMENT_ID__=MA;let n=e;return n})();function MA(){let n=xt();return F0(n,me())}var TA=Ke,k0=class extends TA{constructor(e,i,t){super(),this._lContainer=e,this._hostTNode=i,this._hostLView=t}get element(){return So(this._hostTNode,this._hostLView)}get injector(){return new ur(this._hostTNode,this._hostLView)}get parentInjector(){let e=mm(this._hostTNode,this._hostLView);if(iy(e)){let i=bc(e,this._hostLView),t=_c(e),r=i[J].data[t+8];return new ur(r,i)}else return new ur(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(e){let i=cv(this._lContainer);return i!==null&&i[e]||null}get length(){return this._lContainer.length-wt}createEmbeddedView(e,i,t){let r,o;typeof t=="number"?r=t:t!=null&&(r=t.index,o=t.injector);let s=Ys(this._lContainer,e.ssrId),a=e.createEmbeddedViewImpl(i||{},o,s);return this.insertImpl(a,r,Zs(this._hostTNode,s)),a}createComponent(e,i,t,r,o){let s=e&&!AS(e),a;if(s)a=i;else{let g=i||{};a=g.index,t=g.injector,r=g.projectableNodes,o=g.environmentInjector||g.ngModuleRef}let l=s?e:new Gs(fr(e)),c=t||this.parentInjector;if(!o&&l.ngModule==null){let v=(s?c:this.parentInjector).get(Nt,null);v&&(o=v)}let d=fr(l.componentType??{}),u=Ys(this._lContainer,d?.id??null),h=u?.firstChild??null,m=l.create(c,r,h,o);return this.insertImpl(m.hostView,a,Zs(this._hostTNode,u)),m}insert(e,i){return this.insertImpl(e,i,!0)}insertImpl(e,i,t){let r=e._lView;if(QI(r)){let a=this.indexOf(e);if(a!==-1)this.detach(a);else{let l=r[ot],c=new k0(l,l[Ut],l[ot]);c.detach(c.indexOf(e))}}let o=this._adjustIndex(i),s=this._lContainer;return td(s,r,o,t),e.attachToViewContainerRef(),hy(Gf(s),o,e),e}move(e,i){return this.insert(e,i)}indexOf(e){let i=cv(this._lContainer);return i!==null?i.indexOf(e):-1}remove(e){let i=this._adjustIndex(e,-1),t=Ws(this._lContainer,i);t&&(wc(Gf(this._lContainer),i),Zc(t[J],t))}detach(e){let i=this._adjustIndex(e,-1),t=Ws(this._lContainer,i);return t&&wc(Gf(this._lContainer),i)!=null?new yr(t):null}_adjustIndex(e,i=0){return e??this.length+i}};function cv(n){return n[gc]}function Gf(n){return n[gc]||(n[gc]=[])}function F0(n,e){let i,t=e[n.index];return wn(t)?i=t:(i=o0(t,e,null,n),e[n.index]=i,Jc(e,i)),OA(i,e,n,t),new k0(i,n,e)}function AA(n,e){let i=n[Ge],t=i.createComment(""),r=nn(e,n),o=wm(i,r);return Dc(i,o,t,pM(i,r),!1),t}var OA=FA,RA=(n,e,i)=>!1;function kA(n,e,i){return RA(n,e,i)}function FA(n,e,i,t){if(n[mr])return;let r;i.type&8?r=Un(t):r=AA(e,i),n[mr]=r}function PA(n,e,i,t,r,o,s,a,l){let c=e.consts,d=Mo(e,n,4,s||null,xo(c,a));Fm(e,i,d,xo(c,l)),Gc(e,d);let u=d.tView=Rm(2,d,t,r,o,e.directiveRegistry,e.pipeRegistry,null,e.schemas,c,null);return e.queries!==null&&(e.queries.template(e,d),u.queries=e.queries.embeddedTView(d)),d}function z(n,e,i,t,r,o,s,a){let l=me(),c=Qe(),d=n+lt,u=c.firstCreatePass?PA(d,c,l,e,i,t,r,o,s):c.data[d];xr(u,!1);let h=NA(c,l,u,n);$c()&&Qc(c,l,h,u),Pi(h,l);let m=o0(h,l,h,u);return l[d]=m,Jc(l,m),kA(m,u,l),zc(u)&&Am(c,l,u),s!=null&&Om(l,u,a),z}var NA=LA;function LA(n,e,i,t){return Wc(!0),e[Ge].createComment("")}var P0={detail:{feature:"NgControlFlow"}};function pe(n,e,i){la("mark_use_counter",P0);let t=me(),r=Cr(),o=Wh(t,lt+n),s=0;if(xn(t,r,e)){let a=mt(null);try{if(R0(o,s),e!==-1){let l=Gh(t[J],e),c=Ys(o,l.tView.ssrId),d=ed(t,l,i,{dehydratedView:c});td(o,d,s,Zs(l,c))}}finally{mt(a)}}else{let a=O0(o,s);a!==void 0&&(a[gt]=i)}}var Hh=class{constructor(e,i,t){this.lContainer=e,this.$implicit=i,this.$index=t}get $count(){return this.lContainer.length-wt}};function To(n,e){return e}var Uh=class{constructor(e,i,t){this.hasEmptyBlock=e,this.trackByFn=i,this.liveCollection=t}};function Ao(n,e,i,t,r,o,s,a,l,c,d){la("mark_use_counter",P0);let u=l!==void 0,h=me(),m=a?s.bind(h[tn][gt]):s,g=new Uh(u,m);h[lt+n]=g,z(n+1,e,i,t,r,o),u&&z(n+2,l,c,d)}var $h=class extends Bh{constructor(e,i,t){super(),this.lContainer=e,this.hostLView=i,this.templateTNode=t,this.needsIndexUpdate=!1}get length(){return this.lContainer.length-wt}at(e){return this.getLView(e)[gt].$implicit}attach(e,i){let t=i[Hs];this.needsIndexUpdate||=e!==this.length,td(this.lContainer,i,e,Zs(this.templateTNode,t))}detach(e){return this.needsIndexUpdate||=e!==this.length-1,jA(this.lContainer,e)}create(e,i){let t=Ys(this.lContainer,this.templateTNode.tView.ssrId);return ed(this.hostLView,this.templateTNode,new Hh(this.lContainer,i,e),{dehydratedView:t})}destroy(e){Zc(e[J],e)}updateValue(e,i){this.getLView(e)[gt].$implicit=i}reset(){this.needsIndexUpdate=!1}updateIndexes(){if(this.needsIndexUpdate)for(let e=0;e(Wc(!0),Ay(t,r,mS()));function HA(n,e,i,t,r){let o=e.consts,s=xo(o,t),a=Mo(e,n,8,"ng-container",s);s!==null&&Mc(a,s,!0);let l=xo(o,r);return Fm(e,i,a,l),e.queries!==null&&e.queries.elementStart(e,a),a}function Tt(n,e,i){let t=me(),r=Qe(),o=n+lt,s=r.firstCreatePass?HA(o,r,t,e,i):r.data[o];xr(s,!0);let a=UA(r,t,s,n);return t[o]=a,$c()&&Qc(r,t,a,s),Pi(a,t),zc(s)&&(Am(r,t,s),Tm(r,s,t)),i!=null&&Om(t,s),Tt}function At(){let n=xt(),e=Qe();return lm()?cm():(n=n.parent,xr(n,!1)),e.firstCreatePass&&(Gc(e,n),om(n)&&e.queries.elementEnd(n)),At}function Ot(n,e,i){return Tt(n,e,i),At(),Ot}var UA=(n,e,i,t)=>(Wc(!0),rM(e[Ge],""));function Rt(){return me()}function Zn(n,e,i){let t=me(),r=Cr();if(xn(t,r,e)){let o=Qe(),s=Uc();km(o,s,t,n,e,t[Ge],i,!0)}return Zn}function Vm(n,e,i){let t=me(),r=Cr();if(xn(t,r,e)){let o=Qe(),s=Uc(),a=dm(o.data),l=c0(a,s,t);km(o,s,t,n,e,l,i,!0)}return Vm}var dr=void 0;function $A(n){let e=n,i=Math.floor(Math.abs(n)),t=n.toString().replace(/^[^.]*\.?/,"").length;return i===1&&t===0?1:5}var WA=["en",[["a","p"],["AM","PM"],dr],[["AM","PM"],dr,dr],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],dr,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],dr,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",dr,"{1} 'at' {0}",dr],[".",",",";","%","+","-","E","\xD7","\u2030","\u221E","NaN",":"],["#,##0.###","#,##0%","\xA4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",$A],qf={};function rn(n){let e=GA(n),i=dv(e);if(i)return i;let t=e.split("-")[0];if(i=dv(t),i)return i;if(t==="en")return WA;throw new S(701,!1)}function dv(n){return n in qf||(qf[n]=zt.ng&&zt.ng.common&&zt.ng.common.locales&&zt.ng.common.locales[n]),qf[n]}var nt=function(n){return n[n.LocaleId=0]="LocaleId",n[n.DayPeriodsFormat=1]="DayPeriodsFormat",n[n.DayPeriodsStandalone=2]="DayPeriodsStandalone",n[n.DaysFormat=3]="DaysFormat",n[n.DaysStandalone=4]="DaysStandalone",n[n.MonthsFormat=5]="MonthsFormat",n[n.MonthsStandalone=6]="MonthsStandalone",n[n.Eras=7]="Eras",n[n.FirstDayOfWeek=8]="FirstDayOfWeek",n[n.WeekendRange=9]="WeekendRange",n[n.DateFormat=10]="DateFormat",n[n.TimeFormat=11]="TimeFormat",n[n.DateTimeFormat=12]="DateTimeFormat",n[n.NumberSymbols=13]="NumberSymbols",n[n.NumberFormats=14]="NumberFormats",n[n.CurrencyCode=15]="CurrencyCode",n[n.CurrencySymbol=16]="CurrencySymbol",n[n.CurrencyName=17]="CurrencyName",n[n.Currencies=18]="Currencies",n[n.Directionality=19]="Directionality",n[n.PluralCase=20]="PluralCase",n[n.ExtraData=21]="ExtraData",n}(nt||{});function GA(n){return n.toLowerCase().replace(/_/g,"-")}var Rc="en-US";var qA=Rc;function YA(n){pI(n,"Expected localeId to be defined"),typeof n=="string"&&(qA=n.toLowerCase().replace(/_/g,"-"))}function Mr(n){return!!n&&typeof n.then=="function"}function N0(n){return!!n&&typeof n.subscribe=="function"}function j(n,e,i,t){let r=me(),o=Qe(),s=xt();return L0(o,r,r[Ge],s,n,e,t),j}function Bm(n,e){let i=xt(),t=me(),r=Qe(),o=dm(r.data),s=c0(o,i,t);return L0(r,t,s,i,n,e),Bm}function ZA(n,e,i,t){let r=n.cleanup;if(r!=null)for(let o=0;ol?a[l]:null}typeof s=="string"&&(o+=2)}return null}function L0(n,e,i,t,r,o,s){let a=zc(t),c=n.firstCreatePass&&l0(n),d=e[gt],u=a0(e),h=!0;if(t.type&3||s){let v=nn(t,e),E=s?s(v):v,I=u.length,Q=s?se=>s(Un(se[t.index])):t.index,xe=null;if(!s&&a&&(xe=ZA(n,e,r,t.index)),xe!==null){let se=xe.__ngLastListenerFn__||xe;se.__ngNextListenerFn__=o,xe.__ngLastListenerFn__=o,h=!1}else{o=fv(t,e,d,o,!1);let se=i.listen(E,r,o);u.push(o,se),c&&c.push(r,Q,I,I+1)}}else o=fv(t,e,d,o,!1);let m=t.outputs,g;if(h&&m!==null&&(g=m[r])){let v=g.length;if(v)for(let E=0;E-1?Bi(n.index,e):e;Nm(a);let l=uv(e,i,t,s),c=o.__ngNextListenerFn__;for(;c;)l=uv(e,i,c,s)&&l,c=c.__ngNextListenerFn__;return r&&l===!1&&s.preventDefault(),l}}function U(n=1){return fS(n)}function QA(n,e){let i=null,t=kI(n);for(let r=0;r=n.data.length&&(n.data[i]=null,n.blueprint[i]=null),e[i]=t}function Tr(n){let e=sS();return zv(e,lt+n)}function M(n,e=""){let i=me(),t=Qe(),r=n+lt,o=t.firstCreatePass?Mo(t,r,1,e,null):t.data[r],s=XA(t,i,o,e,n);i[r]=s,$c()&&Qc(t,i,s,o),xr(o,!1)}var XA=(n,e,i,t,r)=>(Wc(!0),nM(e[Ge],t));function Ct(n){return Ae("",n,""),Ct}function Ae(n,e,i){let t=me(),r=y0(t,n,e,i);return r!==qn&&OT(t,Dr(),r),Ae}function JA(n,e,i){let t=Qe();if(t.firstCreatePass){let r=ci(n);qh(i,t.data,t.blueprint,r,!0),qh(e,t.data,t.blueprint,r,!1)}}function qh(n,e,i,t,r){if(n=It(n),Array.isArray(n))for(let o=0;o>20;if(Co(n)||!n.multi){let m=new _r(c,r,f),g=Zf(l,e,r?d:d+h,u);g===-1?(sh(yc(a,s),o,l),Yf(o,n,e.length),e.push(l),a.directiveStart++,a.directiveEnd++,r&&(a.providerIndexes+=1048576),i.push(m),s.push(m)):(i[g]=m,s[g]=m)}else{let m=Zf(l,e,d+h,u),g=Zf(l,e,d,d+h),v=m>=0&&i[m],E=g>=0&&i[g];if(r&&!E||!r&&!v){sh(yc(a,s),o,l);let I=nO(r?tO:eO,i.length,r,t,c);!r&&E&&(i[g].providerFactory=I),Yf(o,n,e.length,0),e.push(l),a.directiveStart++,a.directiveEnd++,r&&(a.providerIndexes+=1048576),i.push(I),s.push(I)}else{let I=j0(i[r?g:m],c,!r&&t);Yf(o,n,m>-1?m:g,I)}!r&&t&&E&&i[g].componentProviders++}}}function Yf(n,e,i,t){let r=Co(e),o=VS(e);if(r||o){let l=(o?It(e.useClass):e).prototype.ngOnDestroy;if(l){let c=n.destroyHooks||(n.destroyHooks=[]);if(!r&&e.multi){let d=c.indexOf(i);d===-1?c.push(i,[t,l]):c[d+1].push(t,l)}else c.push(i,l)}}}function j0(n,e,i){return i&&n.componentProviders++,n.multi.push(e)-1}function Zf(n,e,i,t){for(let r=i;r{i.providersResolver=(t,r)=>JA(t,r?r(n):n,e)}}var Li=class{},Qs=class{};var Zh=class extends Li{constructor(e,i,t){super(),this._parent=i,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new Tc(this);let r=Ov(e);this._bootstrapComponents=Dy(r.bootstrap),this._r3Injector=wy(e,i,[{provide:Li,useValue:this},{provide:mi,useValue:this.componentFactoryResolver},...t],St(e),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(e)}get injector(){return this._r3Injector}destroy(){let e=this._r3Injector;!e.destroyed&&e.destroy(),this.destroyCbs.forEach(i=>i()),this.destroyCbs=null}onDestroy(e){this.destroyCbs.push(e)}},Qh=class extends Qs{constructor(e){super(),this.moduleType=e}create(e){return new Zh(this.moduleType,e,[])}};var kc=class extends Li{constructor(e){super(),this.componentFactoryResolver=new Tc(this),this.instance=null;let i=new Cc([...e.providers,{provide:Li,useValue:this},{provide:mi,useValue:this.componentFactoryResolver}],e.parent||_m(),e.debugName,new Set(["environment"]));this.injector=i,e.runEnvironmentInitializers&&i.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(e){this.injector.onDestroy(e)}};function zm(n,e,i=null){return new kc({providers:n,parent:e,debugName:i,runEnvironmentInitializers:!0}).injector}var iO=(()=>{let e=class e{constructor(t){this._injector=t,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(t){if(!t.standalone)return null;if(!this.cachedInjectors.has(t)){let r=_y(!1,t.type),o=r.length>0?zm([r],this._injector,`Standalone[${t.type.name}]`):null;this.cachedInjectors.set(t,o)}return this.cachedInjectors.get(t)}ngOnDestroy(){try{for(let t of this.cachedInjectors.values())t!==null&&t.destroy()}finally{this.cachedInjectors.clear()}}};e.\u0275prov=x({token:e,providedIn:"environment",factory:()=>new e(p(Nt))});let n=e;return n})(),rO={detail:{feature:"NgStandalone"}};function B(n){la("mark_use_counter",rO),n.getStandaloneInjector=e=>e.get(iO).getOrCreateStandaloneInjector(n)}function V0(n,e,i){let t=qv()+n,r=me();return r[t]===qn?v0(r,t,i?e.call(i):e()):sA(r,t)}function oO(n,e){let i=n[e];return i===qn?void 0:i}function sO(n,e,i,t,r,o,s){let a=e+i;return aA(n,a,r,o)?v0(n,a+2,s?t.call(s,r,o):t(r,o)):oO(n,a+2)}function B0(n,e){let i=Qe(),t,r=n+lt;i.firstCreatePass?(t=aO(e,i.pipeRegistry),i.data[r]=t,t.onDestroy&&(i.destroyHooks??=[]).push(r,t.onDestroy)):t=i.data[r];let o=t.factory||(t.factory=pr(t.type,!0)),s,a=en(f);try{let l=vc(!1),c=o();return vc(l),KA(i,me(),r,c),c}finally{en(a)}}function aO(n,e){if(e)for(let i=e.length-1;i>=0;i--){let t=e[i];if(n===t.name)return t}}function z0(n,e,i,t){let r=n+lt,o=me(),s=zv(o,r);return lO(o,r)?sO(o,qv(),e,s.transform,i,t,s):s.transform(i,t)}function lO(n,e){return n[J].data[e].pure}function cO(){return this._results[Symbol.iterator]()}var ji=class n{get changes(){return this._changes||(this._changes=new X)}constructor(e=!1){this._emitDistinctChangesOnly=e,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;let i=n.prototype;i[Symbol.iterator]||(i[Symbol.iterator]=cO)}get(e){return this._results[e]}map(e){return this._results.map(e)}filter(e){return this._results.filter(e)}find(e){return this._results.find(e)}reduce(e,i){return this._results.reduce(e,i)}forEach(e){this._results.forEach(e)}some(e){return this._results.some(e)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(e,i){this.dirty=!1;let t=RS(e);(this._changesDetected=!OS(this._results,t,i))&&(this._results=t,this.length=t.length,this.last=t[this.length-1],this.first=t[0])}notifyOnChanges(){this._changes&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.emit(this)}setDirty(){this.dirty=!0}destroy(){this.changes.complete(),this.changes.unsubscribe()}},Ve=(()=>{let e=class e{};e.__NG_ELEMENT_ID__=fO;let n=e;return n})(),dO=Ve,uO=class extends dO{constructor(e,i,t){super(),this._declarationLView=e,this._declarationTContainer=i,this.elementRef=t}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(e,i){return this.createEmbeddedViewImpl(e,i)}createEmbeddedViewImpl(e,i,t){let r=ed(this._declarationLView,this._declarationTContainer,e,{injector:i,dehydratedView:t});return new yr(r)}};function fO(){return nd(xt(),me())}function nd(n,e){return n.type&4?new uO(e,n,So(n,e)):null}var Kh=class n{constructor(e){this.queryList=e,this.matches=null}clone(){return new n(this.queryList)}setDirty(){this.queryList.setDirty()}},Xh=class n{constructor(e=[]){this.queries=e}createEmbeddedView(e){let i=e.queries;if(i!==null){let t=e.contentQueries!==null?e.contentQueries[0]:i.length,r=[];for(let o=0;o0)t.push(s[a/2]);else{let c=o[a+1],d=e[-l];for(let u=wt;u{let e=class e{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((t,r)=>{this.resolve=t,this.reject=r}),this.appInits=C(id,{optional:!0})??[]}runInitializers(){if(this.initialized)return;let t=[];for(let o of this.appInits){let s=o();if(Mr(s))t.push(s);else if(N0(s)){let a=new Promise((l,c)=>{s.subscribe({complete:l,error:c})});t.push(a)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(t).then(()=>{r()}).catch(o=>{this.reject(o)}),t.length===0&&r(),this.initialized=!0}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),rd=(()=>{let e=class e{log(t){console.log(t)}warn(t){console.warn(t)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"platform"});let n=e;return n})();function vO(){return typeof $localize<"u"&&$localize.locale||Rc}var ca=new y("LocaleId",{providedIn:"root",factory:()=>C(ca,ye.Optional|ye.SkipSelf)||vO()});var Ro=(()=>{let e=class e{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new tt(!1)}add(){this.hasPendingTasks.next(!0);let t=this.taskId++;return this.pendingTasks.add(t),t}remove(t){this.pendingTasks.delete(t),this.pendingTasks.size===0&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks.next(!1)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),nm=class{constructor(e,i){this.ngModuleFactory=e,this.componentFactories=i}},Hm=(()=>{let e=class e{compileModuleSync(t){return new Qh(t)}compileModuleAsync(t){return Promise.resolve(this.compileModuleSync(t))}compileModuleAndAllComponentsSync(t){let r=this.compileModuleSync(t),o=Ov(t),s=Dy(o.declarations).reduce((a,l)=>{let c=fr(l);return c&&a.push(new Gs(c)),a},[]);return new nm(r,s)}compileModuleAndAllComponentsAsync(t){return Promise.resolve(this.compileModuleAndAllComponentsSync(t))}clearCache(){}clearCacheFor(t){}getModuleId(t){}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var Y0=new y("");var hc=null;var Z0=new y("PlatformDestroyListeners"),od=new y("appBootstrapListener");function yO(){q_(()=>{throw new S(600,!1)})}function wO(n){return n.isBoundToModule}function xO(n=[]){if(hc)return hc;let e=DO(n);return hc=e,yO(),CO(e),e}function CO(n){n.get(bm,null)?.forEach(i=>i())}function Q0(n){try{let{rootComponent:e,appProviders:i,platformProviders:t}=n,r=xO(t),o=[AO(),...i||[]],a=new kc({providers:o,parent:r,debugName:"",runEnvironmentInitializers:!1}).injector,l=a.get(A);return l.run(()=>{a.resolveInjectorInitializers();let c=a.get(Ht,null),d;l.runOutsideAngular(()=>{d=l.onError.subscribe({next:m=>{c.handleError(m)}})});let u=()=>a.destroy(),h=r.get(Z0);return h.add(u),a.onDestroy(()=>{d.unsubscribe(),h.delete(u)}),IO(c,l,()=>{let m=a.get(q0);return m.runInitializers(),m.donePromise.then(()=>{let g=a.get(ca,Rc);YA(g||Rc);let v=a.get(Wt);return e!==void 0&&v.bootstrap(e),v})})})}catch(e){return Promise.reject(e)}}function DO(n=[],e){return Ne.create({name:e,providers:[{provide:Yc,useValue:"platform"},{provide:Z0,useValue:new Set([()=>hc=null])},...n]})}function EO(n){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:n?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:n?.runCoalescing??!1}}function IO(n,e,i){try{let t=i();return Mr(t)?t.catch(r=>{throw e.runOutsideAngular(()=>n.handleError(r)),r}):t}catch(t){throw e.runOutsideAngular(()=>n.handleError(t)),t}}var Wt=(()=>{let e=class e{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=C(K0),this.zoneIsStable=C(_0),this.componentTypes=[],this.components=[],this.isStable=C(Ro).hasPendingTasks.pipe(Fe(t=>t?R(!1):this.zoneIsStable),Ri(),ki()),this._injector=C(Nt)}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(t,r){let o=t instanceof Ec;if(!this._injector.get(q0).done){let g="Cannot bootstrap as there are still asynchronous initializers running."+(!o&&Av(t)?"":" Bootstrap components in the `ngDoBootstrap` method of the root module.");throw new S(405,!1)}let a;o?a=t:a=this._injector.get(mi).resolveComponentFactory(t),this.componentTypes.push(a.componentType);let l=wO(a)?void 0:this._injector.get(Li),c=r||a.selector,d=a.create(Ne.NULL,[],c,l),u=d.location.nativeElement,h=d.injector.get(Y0,null);return h?.registerApplication(u),d.onDestroy(()=>{this.detachView(d.hostView),Qf(this.components,d),h?.unregisterApplication(u)}),this._loadComponent(d),d}tick(){if(this._runningTick)throw new S(101,!1);try{this._runningTick=!0;for(let t of this._views)t.detectChanges()}catch(t){this.internalErrorHandler(t)}finally{this._runningTick=!1}}attachView(t){let r=t;this._views.push(r),r.attachToAppRef(this)}detachView(t){let r=t;Qf(this._views,r),r.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView),this.tick(),this.components.push(t);let r=this._injector.get(od,[]);[...this._bootstrapListeners,...r].forEach(o=>o(t))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(t=>t()),this._views.slice().forEach(t=>t.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(t){return this._destroyListeners.push(t),()=>Qf(this._destroyListeners,t)}destroy(){if(this._destroyed)throw new S(406,!1);let t=this._injector;t.destroy&&!t.destroyed&&t.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function Qf(n,e){let i=n.indexOf(e);i>-1&&n.splice(i,1)}var K0=new y("",{providedIn:"root",factory:()=>C(Ht).handleError.bind(void 0)});function SO(){let n=C(A),e=C(Ht);return i=>n.runOutsideAngular(()=>e.handleError(i))}var MO=(()=>{let e=class e{constructor(){this.zone=C(A),this.applicationRef=C(Wt)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function TO(n){return[{provide:A,useFactory:n},{provide:na,multi:!0,useFactory:()=>{let e=C(MO,{optional:!0});return()=>e.initialize()}},{provide:K0,useFactory:SO},{provide:_0,useFactory:b0}]}function AO(n){let e=TO(()=>new A(EO(n)));return zi([[],e])}function X0(){return!1}function fe(n){return typeof n=="boolean"?n:n!=null&&n!=="false"}function Qn(n,e=NaN){return!isNaN(parseFloat(n))&&!isNaN(Number(n))?Number(n):e}var qm=null;function bi(){return qm}function iw(n){qm||(qm=n)}var hd=class{},N=new y("DocumentToken"),rw=(()=>{let e=class e{historyGo(t){throw new Error("Not implemented")}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:()=>(()=>C(OO))(),providedIn:"platform"});let n=e;return n})();var OO=(()=>{let e=class e extends rw{constructor(){super(),this._doc=C(N),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return bi().getBaseHref(this._doc)}onPopState(t){let r=bi().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",t,!1),()=>r.removeEventListener("popstate",t)}onHashChange(t){let r=bi().getGlobalEventTarget(this._doc,"window");return r.addEventListener("hashchange",t,!1),()=>r.removeEventListener("hashchange",t)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(t){this._location.pathname=t}pushState(t,r,o){this._history.pushState(t,r,o)}replaceState(t,r,o){this._history.replaceState(t,r,o)}forward(){this._history.forward()}back(){this._history.back()}historyGo(t=0){this._history.go(t)}getState(){return this._history.state}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:()=>(()=>new e)(),providedIn:"platform"});let n=e;return n})();function ow(n,e){if(n.length==0)return e;if(e.length==0)return n;let i=0;return n.endsWith("/")&&i++,e.startsWith("/")&&i++,i==2?n+e.substring(1):i==1?n+e:n+"/"+e}function J0(n){let e=n.match(/#|\?|$/),i=e&&e.index||n.length,t=i-(n[i-1]==="/"?1:0);return n.slice(0,t)+n.slice(i)}function Ar(n){return n&&n[0]!=="?"?"?"+n:n}var pd=(()=>{let e=class e{historyGo(t){throw new Error("Not implemented")}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:()=>(()=>C(sw))(),providedIn:"root"});let n=e;return n})(),RO=new y("appBaseHref"),sw=(()=>{let e=class e extends pd{constructor(t,r){super(),this._platformLocation=t,this._removeListenerFns=[],this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??C(N).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(t){this._removeListenerFns.push(this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t))}getBaseHref(){return this._baseHref}prepareExternalUrl(t){return ow(this._baseHref,t)}path(t=!1){let r=this._platformLocation.pathname+Ar(this._platformLocation.search),o=this._platformLocation.hash;return o&&t?`${r}${o}`:r}pushState(t,r,o,s){let a=this.prepareExternalUrl(o+Ar(s));this._platformLocation.pushState(t,r,a)}replaceState(t,r,o,s){let a=this.prepareExternalUrl(o+Ar(s));this._platformLocation.replaceState(t,r,a)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){this._platformLocation.historyGo?.(t)}};e.\u0275fac=function(r){return new(r||e)(p(rw),p(RO,8))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var vi=(()=>{let e=class e{constructor(t){this._subject=new X,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=t;let r=this._locationStrategy.getBaseHref();this._basePath=PO(J0(ew(r))),this._locationStrategy.onPopState(o=>{this._subject.emit({url:this.path(!0),pop:!0,state:o.state,type:o.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(t=!1){return this.normalize(this._locationStrategy.path(t))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(t,r=""){return this.path()==this.normalize(t+Ar(r))}normalize(t){return e.stripTrailingSlash(FO(this._basePath,ew(t)))}prepareExternalUrl(t){return t&&t[0]!=="/"&&(t="/"+t),this._locationStrategy.prepareExternalUrl(t)}go(t,r="",o=null){this._locationStrategy.pushState(o,"",t,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+Ar(r)),o)}replaceState(t,r="",o=null){this._locationStrategy.replaceState(o,"",t,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+Ar(r)),o)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(t=0){this._locationStrategy.historyGo?.(t)}onUrlChange(t){return this._urlChangeListeners.push(t),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(r=>{this._notifyUrlChangeListeners(r.url,r.state)})),()=>{let r=this._urlChangeListeners.indexOf(t);this._urlChangeListeners.splice(r,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(t="",r){this._urlChangeListeners.forEach(o=>o(t,r))}subscribe(t,r,o){return this._subject.subscribe({next:t,error:r,complete:o})}};e.normalizeQueryParams=Ar,e.joinWithSlash=ow,e.stripTrailingSlash=J0,e.\u0275fac=function(r){return new(r||e)(p(pd))},e.\u0275prov=x({token:e,factory:()=>kO(),providedIn:"root"});let n=e;return n})();function kO(){return new vi(p(pd))}function FO(n,e){if(!n||!e.startsWith(n))return e;let i=e.substring(n.length);return i===""||["/",";","?","#"].includes(i[0])?i:e}function ew(n){return n.replace(/\/index.html$/,"")}function PO(n){if(new RegExp("^(https?:)?//").test(n)){let[,i]=n.split(/\/\/[^\/]+/);return i}return n}var kt=function(n){return n[n.Format=0]="Format",n[n.Standalone=1]="Standalone",n}(kt||{}),Le=function(n){return n[n.Narrow=0]="Narrow",n[n.Abbreviated=1]="Abbreviated",n[n.Wide=2]="Wide",n[n.Short=3]="Short",n}(Le||{}),Gt=function(n){return n[n.Short=0]="Short",n[n.Medium=1]="Medium",n[n.Long=2]="Long",n[n.Full=3]="Full",n}(Gt||{}),gi=function(n){return n[n.Decimal=0]="Decimal",n[n.Group=1]="Group",n[n.List=2]="List",n[n.PercentSign=3]="PercentSign",n[n.PlusSign=4]="PlusSign",n[n.MinusSign=5]="MinusSign",n[n.Exponential=6]="Exponential",n[n.SuperscriptingExponent=7]="SuperscriptingExponent",n[n.PerMille=8]="PerMille",n[n.Infinity=9]="Infinity",n[n.NaN=10]="NaN",n[n.TimeSeparator=11]="TimeSeparator",n[n.CurrencyDecimal=12]="CurrencyDecimal",n[n.CurrencyGroup=13]="CurrencyGroup",n}(gi||{});function NO(n){return rn(n)[nt.LocaleId]}function LO(n,e,i){let t=rn(n),r=[t[nt.DayPeriodsFormat],t[nt.DayPeriodsStandalone]],o=on(r,e);return on(o,i)}function jO(n,e,i){let t=rn(n),r=[t[nt.DaysFormat],t[nt.DaysStandalone]],o=on(r,e);return on(o,i)}function VO(n,e,i){let t=rn(n),r=[t[nt.MonthsFormat],t[nt.MonthsStandalone]],o=on(r,e);return on(o,i)}function BO(n,e){let t=rn(n)[nt.Eras];return on(t,e)}function sd(n,e){let i=rn(n);return on(i[nt.DateFormat],e)}function ad(n,e){let i=rn(n);return on(i[nt.TimeFormat],e)}function ld(n,e){let t=rn(n)[nt.DateTimeFormat];return on(t,e)}function gd(n,e){let i=rn(n),t=i[nt.NumberSymbols][e];if(typeof t>"u"){if(e===gi.CurrencyDecimal)return i[nt.NumberSymbols][gi.Decimal];if(e===gi.CurrencyGroup)return i[nt.NumberSymbols][gi.Group]}return t}function aw(n){if(!n[nt.ExtraData])throw new Error(`Missing extra locale data for the locale "${n[nt.LocaleId]}". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.`)}function zO(n){let e=rn(n);return aw(e),(e[nt.ExtraData][2]||[]).map(t=>typeof t=="string"?Um(t):[Um(t[0]),Um(t[1])])}function HO(n,e,i){let t=rn(n);aw(t);let r=[t[nt.ExtraData][0],t[nt.ExtraData][1]],o=on(r,e)||[];return on(o,i)||[]}function on(n,e){for(let i=e;i>-1;i--)if(typeof n[i]<"u")return n[i];throw new Error("Locale data API: locale data undefined")}function Um(n){let[e,i]=n.split(":");return{hours:+e,minutes:+i}}var UO=/^(\d{4,})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,da={},$O=/((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,_i=function(n){return n[n.Short=0]="Short",n[n.ShortGMT=1]="ShortGMT",n[n.Long=2]="Long",n[n.Extended=3]="Extended",n}(_i||{}),Se=function(n){return n[n.FullYear=0]="FullYear",n[n.Month=1]="Month",n[n.Date=2]="Date",n[n.Hours=3]="Hours",n[n.Minutes=4]="Minutes",n[n.Seconds=5]="Seconds",n[n.FractionalSeconds=6]="FractionalSeconds",n[n.Day=7]="Day",n}(Se||{}),Ie=function(n){return n[n.DayPeriods=0]="DayPeriods",n[n.Days=1]="Days",n[n.Months=2]="Months",n[n.Eras=3]="Eras",n}(Ie||{});function WO(n,e,i,t){let r=eR(n);e=pi(i,e)||e;let s=[],a;for(;e;)if(a=$O.exec(e),a){s=s.concat(a.slice(1));let d=s.pop();if(!d)break;e=d}else{s.push(e);break}let l=r.getTimezoneOffset();t&&(l=cw(t,l),r=JO(r,t,!0));let c="";return s.forEach(d=>{let u=KO(d);c+=u?u(r,i,l):d==="''"?"'":d.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),c}function md(n,e,i){let t=new Date(0);return t.setFullYear(n,e,i),t.setHours(0,0,0),t}function pi(n,e){let i=NO(n);if(da[i]=da[i]||{},da[i][e])return da[i][e];let t="";switch(e){case"shortDate":t=sd(n,Gt.Short);break;case"mediumDate":t=sd(n,Gt.Medium);break;case"longDate":t=sd(n,Gt.Long);break;case"fullDate":t=sd(n,Gt.Full);break;case"shortTime":t=ad(n,Gt.Short);break;case"mediumTime":t=ad(n,Gt.Medium);break;case"longTime":t=ad(n,Gt.Long);break;case"fullTime":t=ad(n,Gt.Full);break;case"short":let r=pi(n,"shortTime"),o=pi(n,"shortDate");t=cd(ld(n,Gt.Short),[r,o]);break;case"medium":let s=pi(n,"mediumTime"),a=pi(n,"mediumDate");t=cd(ld(n,Gt.Medium),[s,a]);break;case"long":let l=pi(n,"longTime"),c=pi(n,"longDate");t=cd(ld(n,Gt.Long),[l,c]);break;case"full":let d=pi(n,"fullTime"),u=pi(n,"fullDate");t=cd(ld(n,Gt.Full),[d,u]);break}return t&&(da[i][e]=t),t}function cd(n,e){return e&&(n=n.replace(/\{([^}]+)}/g,function(i,t){return e!=null&&t in e?e[t]:i})),n}function Dn(n,e,i="-",t,r){let o="";(n<0||r&&n<=0)&&(r?n=-n+1:(n=-n,o=i));let s=String(n);for(;s.length0||a>-i)&&(a+=i),n===Se.Hours)a===0&&i===-12&&(a=12);else if(n===Se.FractionalSeconds)return GO(a,e);let l=gd(s,gi.MinusSign);return Dn(a,e,l,t,r)}}function qO(n,e){switch(n){case Se.FullYear:return e.getFullYear();case Se.Month:return e.getMonth();case Se.Date:return e.getDate();case Se.Hours:return e.getHours();case Se.Minutes:return e.getMinutes();case Se.Seconds:return e.getSeconds();case Se.FractionalSeconds:return e.getMilliseconds();case Se.Day:return e.getDay();default:throw new Error(`Unknown DateType value "${n}".`)}}function je(n,e,i=kt.Format,t=!1){return function(r,o){return YO(r,o,n,e,i,t)}}function YO(n,e,i,t,r,o){switch(i){case Ie.Months:return VO(e,r,t)[n.getMonth()];case Ie.Days:return jO(e,r,t)[n.getDay()];case Ie.DayPeriods:let s=n.getHours(),a=n.getMinutes();if(o){let c=zO(e),d=HO(e,r,t),u=c.findIndex(h=>{if(Array.isArray(h)){let[m,g]=h,v=s>=m.hours&&a>=m.minutes,E=s0?Math.floor(r/60):Math.ceil(r/60);switch(n){case _i.Short:return(r>=0?"+":"")+Dn(s,2,o)+Dn(Math.abs(r%60),2,o);case _i.ShortGMT:return"GMT"+(r>=0?"+":"")+Dn(s,1,o);case _i.Long:return"GMT"+(r>=0?"+":"")+Dn(s,2,o)+":"+Dn(Math.abs(r%60),2,o);case _i.Extended:return t===0?"Z":(r>=0?"+":"")+Dn(s,2,o)+":"+Dn(Math.abs(r%60),2,o);default:throw new Error(`Unknown zone width "${n}"`)}}}var ZO=0,fd=4;function QO(n){let e=md(n,ZO,1).getDay();return md(n,0,1+(e<=fd?fd:fd+7)-e)}function lw(n){return md(n.getFullYear(),n.getMonth(),n.getDate()+(fd-n.getDay()))}function $m(n,e=!1){return function(i,t){let r;if(e){let o=new Date(i.getFullYear(),i.getMonth(),1).getDay()-1,s=i.getDate();r=1+Math.floor((s+o)/7)}else{let o=lw(i),s=QO(o.getFullYear()),a=o.getTime()-s.getTime();r=1+Math.round(a/6048e5)}return Dn(r,n,gd(t,gi.MinusSign))}}function ud(n,e=!1){return function(i,t){let o=lw(i).getFullYear();return Dn(o,n,gd(t,gi.MinusSign),e)}}var Wm={};function KO(n){if(Wm[n])return Wm[n];let e;switch(n){case"G":case"GG":case"GGG":e=je(Ie.Eras,Le.Abbreviated);break;case"GGGG":e=je(Ie.Eras,Le.Wide);break;case"GGGGG":e=je(Ie.Eras,Le.Narrow);break;case"y":e=st(Se.FullYear,1,0,!1,!0);break;case"yy":e=st(Se.FullYear,2,0,!0,!0);break;case"yyy":e=st(Se.FullYear,3,0,!1,!0);break;case"yyyy":e=st(Se.FullYear,4,0,!1,!0);break;case"Y":e=ud(1);break;case"YY":e=ud(2,!0);break;case"YYY":e=ud(3);break;case"YYYY":e=ud(4);break;case"M":case"L":e=st(Se.Month,1,1);break;case"MM":case"LL":e=st(Se.Month,2,1);break;case"MMM":e=je(Ie.Months,Le.Abbreviated);break;case"MMMM":e=je(Ie.Months,Le.Wide);break;case"MMMMM":e=je(Ie.Months,Le.Narrow);break;case"LLL":e=je(Ie.Months,Le.Abbreviated,kt.Standalone);break;case"LLLL":e=je(Ie.Months,Le.Wide,kt.Standalone);break;case"LLLLL":e=je(Ie.Months,Le.Narrow,kt.Standalone);break;case"w":e=$m(1);break;case"ww":e=$m(2);break;case"W":e=$m(1,!0);break;case"d":e=st(Se.Date,1);break;case"dd":e=st(Se.Date,2);break;case"c":case"cc":e=st(Se.Day,1);break;case"ccc":e=je(Ie.Days,Le.Abbreviated,kt.Standalone);break;case"cccc":e=je(Ie.Days,Le.Wide,kt.Standalone);break;case"ccccc":e=je(Ie.Days,Le.Narrow,kt.Standalone);break;case"cccccc":e=je(Ie.Days,Le.Short,kt.Standalone);break;case"E":case"EE":case"EEE":e=je(Ie.Days,Le.Abbreviated);break;case"EEEE":e=je(Ie.Days,Le.Wide);break;case"EEEEE":e=je(Ie.Days,Le.Narrow);break;case"EEEEEE":e=je(Ie.Days,Le.Short);break;case"a":case"aa":case"aaa":e=je(Ie.DayPeriods,Le.Abbreviated);break;case"aaaa":e=je(Ie.DayPeriods,Le.Wide);break;case"aaaaa":e=je(Ie.DayPeriods,Le.Narrow);break;case"b":case"bb":case"bbb":e=je(Ie.DayPeriods,Le.Abbreviated,kt.Standalone,!0);break;case"bbbb":e=je(Ie.DayPeriods,Le.Wide,kt.Standalone,!0);break;case"bbbbb":e=je(Ie.DayPeriods,Le.Narrow,kt.Standalone,!0);break;case"B":case"BB":case"BBB":e=je(Ie.DayPeriods,Le.Abbreviated,kt.Format,!0);break;case"BBBB":e=je(Ie.DayPeriods,Le.Wide,kt.Format,!0);break;case"BBBBB":e=je(Ie.DayPeriods,Le.Narrow,kt.Format,!0);break;case"h":e=st(Se.Hours,1,-12);break;case"hh":e=st(Se.Hours,2,-12);break;case"H":e=st(Se.Hours,1);break;case"HH":e=st(Se.Hours,2);break;case"m":e=st(Se.Minutes,1);break;case"mm":e=st(Se.Minutes,2);break;case"s":e=st(Se.Seconds,1);break;case"ss":e=st(Se.Seconds,2);break;case"S":e=st(Se.FractionalSeconds,1);break;case"SS":e=st(Se.FractionalSeconds,2);break;case"SSS":e=st(Se.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=dd(_i.Short);break;case"ZZZZZ":e=dd(_i.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=dd(_i.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=dd(_i.Long);break;default:return null}return Wm[n]=e,e}function cw(n,e){n=n.replace(/:/g,"");let i=Date.parse("Jan 01, 1970 00:00:00 "+n)/6e4;return isNaN(i)?e:i}function XO(n,e){return n=new Date(n.getTime()),n.setMinutes(n.getMinutes()+e),n}function JO(n,e,i){let t=i?-1:1,r=n.getTimezoneOffset(),o=cw(e,r);return XO(n,t*(o-r))}function eR(n){if(tw(n))return n;if(typeof n=="number"&&!isNaN(n))return new Date(n);if(typeof n=="string"){if(n=n.trim(),/^(\d{4}(-\d{1,2}(-\d{1,2})?)?)$/.test(n)){let[r,o=1,s=1]=n.split("-").map(a=>+a);return md(r,o-1,s)}let i=parseFloat(n);if(!isNaN(n-i))return new Date(i);let t;if(t=n.match(UO))return tR(t)}let e=new Date(n);if(!tw(e))throw new Error(`Unable to convert "${n}" into a date`);return e}function tR(n){let e=new Date(0),i=0,t=0,r=n[8]?e.setUTCFullYear:e.setFullYear,o=n[8]?e.setUTCHours:e.setHours;n[9]&&(i=Number(n[9]+n[10]),t=Number(n[9]+n[11])),r.call(e,Number(n[1]),Number(n[2])-1,Number(n[3]));let s=Number(n[4]||0)-i,a=Number(n[5]||0)-t,l=Number(n[6]||0),c=Math.floor(parseFloat("0."+(n[7]||0))*1e3);return o.call(e,s,a,l,c),e}function tw(n){return n instanceof Date&&!isNaN(n.valueOf())}function _d(n,e){e=encodeURIComponent(e);for(let i of n.split(";")){let t=i.indexOf("="),[r,o]=t==-1?[i,""]:[i.slice(0,t),i.slice(t+1)];if(r.trim()===e)return decodeURIComponent(o)}return null}var Gm=/\s+/,nw=[],Fo=(()=>{let e=class e{constructor(t,r,o,s){this._iterableDiffers=t,this._keyValueDiffers=r,this._ngEl=o,this._renderer=s,this.initialClasses=nw,this.stateMap=new Map}set klass(t){this.initialClasses=t!=null?t.trim().split(Gm):nw}set ngClass(t){this.rawClass=typeof t=="string"?t.trim().split(Gm):t}ngDoCheck(){for(let r of this.initialClasses)this._updateState(r,!0);let t=this.rawClass;if(Array.isArray(t)||t instanceof Set)for(let r of t)this._updateState(r,!0);else if(t!=null)for(let r of Object.keys(t))this._updateState(r,!!t[r]);this._applyStateDiff()}_updateState(t,r){let o=this.stateMap.get(t);o!==void 0?(o.enabled!==r&&(o.changed=!0,o.enabled=r),o.touched=!0):this.stateMap.set(t,{enabled:r,changed:!0,touched:!0})}_applyStateDiff(){for(let t of this.stateMap){let r=t[0],o=t[1];o.changed?(this._toggleClass(r,o.enabled),o.changed=!1):o.touched||(o.enabled&&this._toggleClass(r,!1),this.stateMap.delete(r)),o.touched=!1}}_toggleClass(t,r){t=t.trim(),t.length>0&&t.split(Gm).forEach(o=>{r?this._renderer.addClass(this._ngEl.nativeElement,o):this._renderer.removeClass(this._ngEl.nativeElement,o)})}};e.\u0275fac=function(r){return new(r||e)(f(Gn),f(Sm),f(k),f(Ir))},e.\u0275dir=O({type:e,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"},standalone:!0});let n=e;return n})();var dw=(()=>{let e=class e{constructor(t){this._viewContainerRef=t,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(t){if(this._shouldRecreateView(t)){let r=this._viewContainerRef;if(this._viewRef&&r.remove(r.indexOf(this._viewRef)),!this.ngTemplateOutlet){this._viewRef=null;return}let o=this._createContextForwardProxy();this._viewRef=r.createEmbeddedView(this.ngTemplateOutlet,o,{injector:this.ngTemplateOutletInjector??void 0})}}_shouldRecreateView(t){return!!t.ngTemplateOutlet||!!t.ngTemplateOutletInjector}_createContextForwardProxy(){return new Proxy({},{set:(t,r,o)=>this.ngTemplateOutletContext?Reflect.set(this.ngTemplateOutletContext,r,o):!1,get:(t,r,o)=>{if(this.ngTemplateOutletContext)return Reflect.get(this.ngTemplateOutletContext,r,o)}})}};e.\u0275fac=function(r){return new(r||e)(f(Ke))},e.\u0275dir=O({type:e,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[qe]});let n=e;return n})();function nR(n,e){return new S(2100,!1)}var iR="mediumDate",rR=new y("DATE_PIPE_DEFAULT_TIMEZONE"),oR=new y("DATE_PIPE_DEFAULT_OPTIONS"),uw=(()=>{let e=class e{constructor(t,r,o){this.locale=t,this.defaultTimezone=r,this.defaultOptions=o}transform(t,r,o,s){if(t==null||t===""||t!==t)return null;try{let a=r??this.defaultOptions?.dateFormat??iR,l=o??this.defaultOptions?.timezone??this.defaultTimezone??void 0;return WO(t,a,s||this.locale,l)}catch(a){throw nR(e,a.message)}}};e.\u0275fac=function(r){return new(r||e)(f(ca,16),f(rR,24),f(oR,24))},e.\u0275pipe=Sv({name:"date",type:e,pure:!0,standalone:!0});let n=e;return n})();var Je=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({});let n=e;return n})(),Ym="browser",sR="server";function ua(n){return n===Ym}function Zm(n){return n===sR}var ko=class{};var ha=class{},yd=class{},Or=class n{constructor(e){this.normalizedNames=new Map,this.lazyUpdate=null,e?typeof e=="string"?this.lazyInit=()=>{this.headers=new Map,e.split(` +`).forEach(i=>{let t=i.indexOf(":");if(t>0){let r=i.slice(0,t),o=r.toLowerCase(),s=i.slice(t+1).trim();this.maybeSetNormalizedName(r,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:typeof Headers<"u"&&e instanceof Headers?(this.headers=new Map,e.forEach((i,t)=>{this.setHeaderEntries(t,i)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(e).forEach(([i,t])=>{this.setHeaderEntries(i,t)})}:this.headers=new Map}has(e){return this.init(),this.headers.has(e.toLowerCase())}get(e){this.init();let i=this.headers.get(e.toLowerCase());return i&&i.length>0?i[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(e){return this.init(),this.headers.get(e.toLowerCase())||null}append(e,i){return this.clone({name:e,value:i,op:"a"})}set(e,i){return this.clone({name:e,value:i,op:"s"})}delete(e,i){return this.clone({name:e,value:i,op:"d"})}maybeSetNormalizedName(e,i){this.normalizedNames.has(i)||this.normalizedNames.set(i,e)}init(){this.lazyInit&&(this.lazyInit instanceof n?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(e=>this.applyUpdate(e)),this.lazyUpdate=null))}copyFrom(e){e.init(),Array.from(e.headers.keys()).forEach(i=>{this.headers.set(i,e.headers.get(i)),this.normalizedNames.set(i,e.normalizedNames.get(i))})}clone(e){let i=new n;return i.lazyInit=this.lazyInit&&this.lazyInit instanceof n?this.lazyInit:this,i.lazyUpdate=(this.lazyUpdate||[]).concat([e]),i}applyUpdate(e){let i=e.name.toLowerCase();switch(e.op){case"a":case"s":let t=e.value;if(typeof t=="string"&&(t=[t]),t.length===0)return;this.maybeSetNormalizedName(e.name,i);let r=(e.op==="a"?this.headers.get(i):void 0)||[];r.push(...t),this.headers.set(i,r);break;case"d":let o=e.value;if(!o)this.headers.delete(i),this.normalizedNames.delete(i);else{let s=this.headers.get(i);if(!s)return;s=s.filter(a=>o.indexOf(a)===-1),s.length===0?(this.headers.delete(i),this.normalizedNames.delete(i)):this.headers.set(i,s)}break}}setHeaderEntries(e,i){let t=(Array.isArray(i)?i:[i]).map(o=>o.toString()),r=e.toLowerCase();this.headers.set(r,t),this.maybeSetNormalizedName(e,r)}forEach(e){this.init(),Array.from(this.normalizedNames.keys()).forEach(i=>e(this.normalizedNames.get(i),this.headers.get(i)))}};var Km=class{encodeKey(e){return fw(e)}encodeValue(e){return fw(e)}decodeKey(e){return decodeURIComponent(e)}decodeValue(e){return decodeURIComponent(e)}};function cR(n,e){let i=new Map;return n.length>0&&n.replace(/^\?/,"").split("&").forEach(r=>{let o=r.indexOf("="),[s,a]=o==-1?[e.decodeKey(r),""]:[e.decodeKey(r.slice(0,o)),e.decodeValue(r.slice(o+1))],l=i.get(s)||[];l.push(a),i.set(s,l)}),i}var dR=/%(\d[a-f0-9])/gi,uR={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function fw(n){return encodeURIComponent(n).replace(dR,(e,i)=>uR[i]??e)}function vd(n){return`${n}`}var Hi=class n{constructor(e={}){if(this.updates=null,this.cloneFrom=null,this.encoder=e.encoder||new Km,e.fromString){if(e.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=cR(e.fromString,this.encoder)}else e.fromObject?(this.map=new Map,Object.keys(e.fromObject).forEach(i=>{let t=e.fromObject[i],r=Array.isArray(t)?t.map(vd):[vd(t)];this.map.set(i,r)})):this.map=null}has(e){return this.init(),this.map.has(e)}get(e){this.init();let i=this.map.get(e);return i?i[0]:null}getAll(e){return this.init(),this.map.get(e)||null}keys(){return this.init(),Array.from(this.map.keys())}append(e,i){return this.clone({param:e,value:i,op:"a"})}appendAll(e){let i=[];return Object.keys(e).forEach(t=>{let r=e[t];Array.isArray(r)?r.forEach(o=>{i.push({param:t,value:o,op:"a"})}):i.push({param:t,value:r,op:"a"})}),this.clone(i)}set(e,i){return this.clone({param:e,value:i,op:"s"})}delete(e,i){return this.clone({param:e,value:i,op:"d"})}toString(){return this.init(),this.keys().map(e=>{let i=this.encoder.encodeKey(e);return this.map.get(e).map(t=>i+"="+this.encoder.encodeValue(t)).join("&")}).filter(e=>e!=="").join("&")}clone(e){let i=new n({encoder:this.encoder});return i.cloneFrom=this.cloneFrom||this,i.updates=(this.updates||[]).concat(e),i}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(e=>this.map.set(e,this.cloneFrom.map.get(e))),this.updates.forEach(e=>{switch(e.op){case"a":case"s":let i=(e.op==="a"?this.map.get(e.param):void 0)||[];i.push(vd(e.value)),this.map.set(e.param,i);break;case"d":if(e.value!==void 0){let t=this.map.get(e.param)||[],r=t.indexOf(vd(e.value));r!==-1&&t.splice(r,1),t.length>0?this.map.set(e.param,t):this.map.delete(e.param)}else{this.map.delete(e.param);break}}}),this.cloneFrom=this.updates=null)}};var Xm=class{constructor(){this.map=new Map}set(e,i){return this.map.set(e,i),this}get(e){return this.map.has(e)||this.map.set(e,e.defaultValue()),this.map.get(e)}delete(e){return this.map.delete(e),this}has(e){return this.map.has(e)}keys(){return this.map.keys()}};function fR(n){switch(n){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function hw(n){return typeof ArrayBuffer<"u"&&n instanceof ArrayBuffer}function mw(n){return typeof Blob<"u"&&n instanceof Blob}function pw(n){return typeof FormData<"u"&&n instanceof FormData}function hR(n){return typeof URLSearchParams<"u"&&n instanceof URLSearchParams}var fa=class n{constructor(e,i,t,r){this.url=i,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=e.toUpperCase();let o;if(fR(this.method)||r?(this.body=t!==void 0?t:null,o=r):o=t,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params),this.transferCache=o.transferCache),this.headers||(this.headers=new Or),this.context||(this.context=new Xm),!this.params)this.params=new Hi,this.urlWithParams=i;else{let s=this.params.toString();if(s.length===0)this.urlWithParams=i;else{let a=i.indexOf("?"),l=a===-1?"?":au.set(h,e.setHeaders[h]),l)),e.setParams&&(c=Object.keys(e.setParams).reduce((u,h)=>u.set(h,e.setParams[h]),c)),new n(i,t,o,{params:c,headers:l,context:d,reportProgress:a,responseType:r,withCredentials:s})}},Po=function(n){return n[n.Sent=0]="Sent",n[n.UploadProgress=1]="UploadProgress",n[n.ResponseHeader=2]="ResponseHeader",n[n.DownloadProgress=3]="DownloadProgress",n[n.Response=4]="Response",n[n.User=5]="User",n}(Po||{}),ma=class{constructor(e,i=200,t="OK"){this.headers=e.headers||new Or,this.status=e.status!==void 0?e.status:i,this.statusText=e.statusText||t,this.url=e.url||null,this.ok=this.status>=200&&this.status<300}},Jm=class n extends ma{constructor(e={}){super(e),this.type=Po.ResponseHeader}clone(e={}){return new n({headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},No=class n extends ma{constructor(e={}){super(e),this.type=Po.Response,this.body=e.body!==void 0?e.body:null}clone(e={}){return new n({body:e.body!==void 0?e.body:this.body,headers:e.headers||this.headers,status:e.status!==void 0?e.status:this.status,statusText:e.statusText||this.statusText,url:e.url||this.url||void 0})}},wd=class extends ma{constructor(e){super(e,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${e.url||"(unknown url)"}`:this.message=`Http failure response for ${e.url||"(unknown url)"}: ${e.status} ${e.statusText}`,this.error=e.error||null}};function Qm(n,e){return{body:e,headers:n.headers,context:n.context,observe:n.observe,params:n.params,reportProgress:n.reportProgress,responseType:n.responseType,withCredentials:n.withCredentials,transferCache:n.transferCache}}var Rr=(()=>{let e=class e{constructor(t){this.handler=t}request(t,r,o={}){let s;if(t instanceof fa)s=t;else{let c;o.headers instanceof Or?c=o.headers:c=new Or(o.headers);let d;o.params&&(o.params instanceof Hi?d=o.params:d=new Hi({fromObject:o.params})),s=new fa(t,r,o.body!==void 0?o.body:null,{headers:c,context:o.context,params:d,reportProgress:o.reportProgress,responseType:o.responseType||"json",withCredentials:o.withCredentials,transferCache:o.transferCache})}let a=R(s).pipe(Ai(c=>this.handler.handle(c)));if(t instanceof fa||o.observe==="events")return a;let l=a.pipe(le(c=>c instanceof No));switch(o.observe||"body"){case"body":switch(s.responseType){case"arraybuffer":return l.pipe(F(c=>{if(c.body!==null&&!(c.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return c.body}));case"blob":return l.pipe(F(c=>{if(c.body!==null&&!(c.body instanceof Blob))throw new Error("Response is not a Blob.");return c.body}));case"text":return l.pipe(F(c=>{if(c.body!==null&&typeof c.body!="string")throw new Error("Response is not a string.");return c.body}));case"json":default:return l.pipe(F(c=>c.body))}case"response":return l;default:throw new Error(`Unreachable: unhandled observe type ${o.observe}}`)}}delete(t,r={}){return this.request("DELETE",t,r)}get(t,r={}){return this.request("GET",t,r)}head(t,r={}){return this.request("HEAD",t,r)}jsonp(t,r){return this.request("JSONP",t,{params:new Hi().append(r,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(t,r={}){return this.request("OPTIONS",t,r)}patch(t,r,o={}){return this.request("PATCH",t,Qm(o,r))}post(t,r,o={}){return this.request("POST",t,Qm(o,r))}put(t,r,o={}){return this.request("PUT",t,Qm(o,r))}};e.\u0275fac=function(r){return new(r||e)(p(ha))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})();function vw(n,e){return e(n)}function mR(n,e){return(i,t)=>e.intercept(i,{handle:r=>n(r,t)})}function pR(n,e,i){return(t,r)=>i.runInContext(()=>e(t,o=>n(o,r)))}var ep=new y(""),tp=new y(""),gR=new y(""),_R=new y("");function bR(){let n=null;return(e,i)=>{n===null&&(n=(C(ep,{optional:!0})??[]).reduceRight(mR,vw));let t=C(Ro),r=t.add();return n(e,i).pipe(Ln(()=>t.remove(r)))}}var gw=(()=>{let e=class e extends ha{constructor(t,r){super(),this.backend=t,this.injector=r,this.chain=null,this.pendingTasks=C(Ro);let o=C(_R,{optional:!0});this.backend=o??t}handle(t){if(this.chain===null){let o=Array.from(new Set([...this.injector.get(tp),...this.injector.get(gR,[])]));this.chain=o.reduceRight((s,a)=>pR(s,a,this.injector),vw)}let r=this.pendingTasks.add();return this.chain(t,o=>this.backend.handle(o)).pipe(Ln(()=>this.pendingTasks.remove(r)))}};e.\u0275fac=function(r){return new(r||e)(p(yd),p(Nt))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})();var vR=/^\)\]\}',?\n/;function yR(n){return"responseURL"in n&&n.responseURL?n.responseURL:/^X-Request-URL:/m.test(n.getAllResponseHeaders())?n.getResponseHeader("X-Request-URL"):null}var _w=(()=>{let e=class e{constructor(t){this.xhrFactory=t}handle(t){if(t.method==="JSONP")throw new S(-2800,!1);let r=this.xhrFactory;return(r.\u0275loadImpl?ke(r.\u0275loadImpl()):R(null)).pipe(Fe(()=>new W(s=>{let a=r.build();if(a.open(t.method,t.urlWithParams),t.withCredentials&&(a.withCredentials=!0),t.headers.forEach((E,I)=>a.setRequestHeader(E,I.join(","))),t.headers.has("Accept")||a.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){let E=t.detectContentTypeHeader();E!==null&&a.setRequestHeader("Content-Type",E)}if(t.responseType){let E=t.responseType.toLowerCase();a.responseType=E!=="json"?E:"text"}let l=t.serializeBody(),c=null,d=()=>{if(c!==null)return c;let E=a.statusText||"OK",I=new Or(a.getAllResponseHeaders()),Q=yR(a)||t.url;return c=new Jm({headers:I,status:a.status,statusText:E,url:Q}),c},u=()=>{let{headers:E,status:I,statusText:Q,url:xe}=d(),se=null;I!==204&&(se=typeof a.response>"u"?a.responseText:a.response),I===0&&(I=se?200:0);let ht=I>=200&&I<300;if(t.responseType==="json"&&typeof se=="string"){let ze=se;se=se.replace(vR,"");try{se=se!==""?JSON.parse(se):null}catch(He){se=ze,ht&&(ht=!1,se={error:He,text:se})}}ht?(s.next(new No({body:se,headers:E,status:I,statusText:Q,url:xe||void 0})),s.complete()):s.error(new wd({error:se,headers:E,status:I,statusText:Q,url:xe||void 0}))},h=E=>{let{url:I}=d(),Q=new wd({error:E,status:a.status||0,statusText:a.statusText||"Unknown Error",url:I||void 0});s.error(Q)},m=!1,g=E=>{m||(s.next(d()),m=!0);let I={type:Po.DownloadProgress,loaded:E.loaded};E.lengthComputable&&(I.total=E.total),t.responseType==="text"&&a.responseText&&(I.partialText=a.responseText),s.next(I)},v=E=>{let I={type:Po.UploadProgress,loaded:E.loaded};E.lengthComputable&&(I.total=E.total),s.next(I)};return a.addEventListener("load",u),a.addEventListener("error",h),a.addEventListener("timeout",h),a.addEventListener("abort",h),t.reportProgress&&(a.addEventListener("progress",g),l!==null&&a.upload&&a.upload.addEventListener("progress",v)),a.send(l),s.next({type:Po.Sent}),()=>{a.removeEventListener("error",h),a.removeEventListener("abort",h),a.removeEventListener("load",u),a.removeEventListener("timeout",h),t.reportProgress&&(a.removeEventListener("progress",g),l!==null&&a.upload&&a.upload.removeEventListener("progress",v)),a.readyState!==a.DONE&&a.abort()}})))}};e.\u0275fac=function(r){return new(r||e)(p(ko))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})(),yw=new y("XSRF_ENABLED"),wR="XSRF-TOKEN",xR=new y("XSRF_COOKIE_NAME",{providedIn:"root",factory:()=>wR}),CR="X-XSRF-TOKEN",DR=new y("XSRF_HEADER_NAME",{providedIn:"root",factory:()=>CR}),xd=class{},ER=(()=>{let e=class e{constructor(t,r,o){this.doc=t,this.platform=r,this.cookieName=o,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if(this.platform==="server")return null;let t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=_d(t,this.cookieName),this.lastCookieString=t),this.lastToken}};e.\u0275fac=function(r){return new(r||e)(p(N),p($t),p(xR))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})();function IR(n,e){let i=n.url.toLowerCase();if(!C(yw)||n.method==="GET"||n.method==="HEAD"||i.startsWith("http://")||i.startsWith("https://"))return e(n);let t=C(xd).getToken(),r=C(DR);return t!=null&&!n.headers.has(r)&&(n=n.clone({headers:n.headers.set(r,t)})),e(n)}var ww=function(n){return n[n.Interceptors=0]="Interceptors",n[n.LegacyInterceptors=1]="LegacyInterceptors",n[n.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",n[n.NoXsrfProtection=3]="NoXsrfProtection",n[n.JsonpSupport=4]="JsonpSupport",n[n.RequestsMadeViaParent=5]="RequestsMadeViaParent",n[n.Fetch=6]="Fetch",n}(ww||{});function SR(n,e){return{\u0275kind:n,\u0275providers:e}}function xw(...n){let e=[Rr,_w,gw,{provide:ha,useExisting:gw},{provide:yd,useExisting:_w},{provide:tp,useValue:IR,multi:!0},{provide:yw,useValue:!0},{provide:xd,useClass:ER}];for(let i of n)e.push(...i.\u0275providers);return zi(e)}var bw=new y("LEGACY_INTERCEPTOR_FN");function Cw(){return SR(ww.LegacyInterceptors,[{provide:bw,useFactory:bR},{provide:tp,useExisting:bw,multi:!0}])}var op=class extends hd{constructor(){super(...arguments),this.supportsDOMEvents=!0}},sp=class n extends op{static makeCurrent(){iw(new n)}onAndCancel(e,i,t){return e.addEventListener(i,t),()=>{e.removeEventListener(i,t)}}dispatchEvent(e,i){e.dispatchEvent(i)}remove(e){e.parentNode&&e.parentNode.removeChild(e)}createElement(e,i){return i=i||this.getDefaultDocument(),i.createElement(e)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(e){return e.nodeType===Node.ELEMENT_NODE}isShadowRoot(e){return e instanceof DocumentFragment}getGlobalEventTarget(e,i){return i==="window"?window:i==="document"?e:i==="body"?e.body:null}getBaseHref(e){let i=MR();return i==null?null:TR(i)}resetBaseElement(){pa=null}getUserAgent(){return window.navigator.userAgent}getCookie(e){return _d(document.cookie,e)}},pa=null;function MR(){return pa=pa||document.querySelector("base"),pa?pa.getAttribute("href"):null}var Cd;function TR(n){Cd=Cd||document.createElement("a"),Cd.setAttribute("href",n);let e=Cd.pathname;return e.charAt(0)==="/"?e:`/${e}`}var AR=(()=>{let e=class e{build(){return new XMLHttpRequest}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})(),ap=new y("EventManagerPlugins"),Iw=(()=>{let e=class e{constructor(t,r){this._zone=r,this._eventNameToPlugin=new Map,t.forEach(o=>{o.manager=this}),this._plugins=t.slice().reverse()}addEventListener(t,r,o){return this._findPluginFor(r).addEventListener(t,r,o)}getZone(){return this._zone}_findPluginFor(t){let r=this._eventNameToPlugin.get(t);if(r)return r;if(r=this._plugins.find(s=>s.supports(t)),!r)throw new S(5101,!1);return this._eventNameToPlugin.set(t,r),r}};e.\u0275fac=function(r){return new(r||e)(p(ap),p(A))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})(),Dd=class{constructor(e){this._doc=e}},ip="ng-app-id",Sw=(()=>{let e=class e{constructor(t,r,o,s={}){this.doc=t,this.appId=r,this.nonce=o,this.platformId=s,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=Zm(s),this.resetHostNodes()}addStyles(t){for(let r of t)this.changeUsageCount(r,1)===1&&this.onStyleAdded(r)}removeStyles(t){for(let r of t)this.changeUsageCount(r,-1)<=0&&this.onStyleRemoved(r)}ngOnDestroy(){let t=this.styleNodesInDOM;t&&(t.forEach(r=>r.remove()),t.clear());for(let r of this.getAllStyles())this.onStyleRemoved(r);this.resetHostNodes()}addHost(t){this.hostNodes.add(t);for(let r of this.getAllStyles())this.addStyleToHost(t,r)}removeHost(t){this.hostNodes.delete(t)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(t){for(let r of this.hostNodes)this.addStyleToHost(r,t)}onStyleRemoved(t){let r=this.styleRef;r.get(t)?.elements?.forEach(o=>o.remove()),r.delete(t)}collectServerRenderedStyles(){let t=this.doc.head?.querySelectorAll(`style[${ip}="${this.appId}"]`);if(t?.length){let r=new Map;return t.forEach(o=>{o.textContent!=null&&r.set(o.textContent,o)}),r}return null}changeUsageCount(t,r){let o=this.styleRef;if(o.has(t)){let s=o.get(t);return s.usage+=r,s.usage}return o.set(t,{usage:r,elements:[]}),r}getStyleElement(t,r){let o=this.styleNodesInDOM,s=o?.get(r);if(s?.parentNode===t)return o.delete(r),s.removeAttribute(ip),s;{let a=this.doc.createElement("style");return this.nonce&&a.setAttribute("nonce",this.nonce),a.textContent=r,this.platformIsServer&&a.setAttribute(ip,this.appId),t.appendChild(a),a}}addStyleToHost(t,r){let o=this.getStyleElement(t,r),s=this.styleRef,a=s.get(r)?.elements;a?a.push(o):s.set(r,{elements:[o],usage:1})}resetHostNodes(){let t=this.hostNodes;t.clear(),t.add(this.doc.head)}};e.\u0275fac=function(r){return new(r||e)(p(N),p(ia),p(ra,8),p($t))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})(),rp={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},cp=/%COMP%/g,Mw="%COMP%",OR=`_nghost-${Mw}`,RR=`_ngcontent-${Mw}`,kR=!0,FR=new y("RemoveStylesOnCompDestroy",{providedIn:"root",factory:()=>kR});function PR(n){return RR.replace(cp,n)}function NR(n){return OR.replace(cp,n)}function Tw(n,e){return e.map(i=>i.replace(cp,n))}var Ed=(()=>{let e=class e{constructor(t,r,o,s,a,l,c,d=null){this.eventManager=t,this.sharedStylesHost=r,this.appId=o,this.removeStylesOnCompDestroy=s,this.doc=a,this.platformId=l,this.ngZone=c,this.nonce=d,this.rendererByCompId=new Map,this.platformIsServer=Zm(l),this.defaultRenderer=new ga(t,a,c,this.platformIsServer)}createRenderer(t,r){if(!t||!r)return this.defaultRenderer;this.platformIsServer&&r.encapsulation===Hn.ShadowDom&&(r=ae(w({},r),{encapsulation:Hn.Emulated}));let o=this.getOrCreateRenderer(t,r);return o instanceof Id?o.applyToHost(t):o instanceof _a&&o.applyStyles(),o}getOrCreateRenderer(t,r){let o=this.rendererByCompId,s=o.get(r.id);if(!s){let a=this.doc,l=this.ngZone,c=this.eventManager,d=this.sharedStylesHost,u=this.removeStylesOnCompDestroy,h=this.platformIsServer;switch(r.encapsulation){case Hn.Emulated:s=new Id(c,d,r,this.appId,u,a,l,h);break;case Hn.ShadowDom:return new lp(c,d,t,r,a,l,this.nonce,h);default:s=new _a(c,d,r,u,a,l,h);break}o.set(r.id,s)}return s}ngOnDestroy(){this.rendererByCompId.clear()}};e.\u0275fac=function(r){return new(r||e)(p(Iw),p(Sw),p(ia),p(FR),p(N),p($t),p(A),p(ra))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})(),ga=class{constructor(e,i,t,r){this.eventManager=e,this.doc=i,this.ngZone=t,this.platformIsServer=r,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(e,i){return i?this.doc.createElementNS(rp[i]||i,e):this.doc.createElement(e)}createComment(e){return this.doc.createComment(e)}createText(e){return this.doc.createTextNode(e)}appendChild(e,i){(Dw(e)?e.content:e).appendChild(i)}insertBefore(e,i,t){e&&(Dw(e)?e.content:e).insertBefore(i,t)}removeChild(e,i){e&&e.removeChild(i)}selectRootElement(e,i){let t=typeof e=="string"?this.doc.querySelector(e):e;if(!t)throw new S(-5104,!1);return i||(t.textContent=""),t}parentNode(e){return e.parentNode}nextSibling(e){return e.nextSibling}setAttribute(e,i,t,r){if(r){i=r+":"+i;let o=rp[r];o?e.setAttributeNS(o,i,t):e.setAttribute(i,t)}else e.setAttribute(i,t)}removeAttribute(e,i,t){if(t){let r=rp[t];r?e.removeAttributeNS(r,i):e.removeAttribute(`${t}:${i}`)}else e.removeAttribute(i)}addClass(e,i){e.classList.add(i)}removeClass(e,i){e.classList.remove(i)}setStyle(e,i,t,r){r&(di.DashCase|di.Important)?e.style.setProperty(i,t,r&di.Important?"important":""):e.style[i]=t}removeStyle(e,i,t){t&di.DashCase?e.style.removeProperty(i):e.style[i]=""}setProperty(e,i,t){e[i]=t}setValue(e,i){e.nodeValue=i}listen(e,i,t){if(typeof e=="string"&&(e=bi().getGlobalEventTarget(this.doc,e),!e))throw new Error(`Unsupported event target ${e} for event ${i}`);return this.eventManager.addEventListener(e,i,this.decoratePreventDefault(t))}decoratePreventDefault(e){return i=>{if(i==="__ngUnwrap__")return e;(this.platformIsServer?this.ngZone.runGuarded(()=>e(i)):e(i))===!1&&i.preventDefault()}}};function Dw(n){return n.tagName==="TEMPLATE"&&n.content!==void 0}var lp=class extends ga{constructor(e,i,t,r,o,s,a,l){super(e,o,s,l),this.sharedStylesHost=i,this.hostEl=t,this.shadowRoot=t.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);let c=Tw(r.id,r.styles);for(let d of c){let u=document.createElement("style");a&&u.setAttribute("nonce",a),u.textContent=d,this.shadowRoot.appendChild(u)}}nodeOrShadowRoot(e){return e===this.hostEl?this.shadowRoot:e}appendChild(e,i){return super.appendChild(this.nodeOrShadowRoot(e),i)}insertBefore(e,i,t){return super.insertBefore(this.nodeOrShadowRoot(e),i,t)}removeChild(e,i){return super.removeChild(this.nodeOrShadowRoot(e),i)}parentNode(e){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(e)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}},_a=class extends ga{constructor(e,i,t,r,o,s,a,l){super(e,o,s,a),this.sharedStylesHost=i,this.removeStylesOnCompDestroy=r,this.styles=l?Tw(l,t.styles):t.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}},Id=class extends _a{constructor(e,i,t,r,o,s,a,l){let c=r+"-"+t.id;super(e,i,t,o,s,a,l,c),this.contentAttr=PR(c),this.hostAttr=NR(c)}applyToHost(e){this.applyStyles(),this.setAttribute(e,this.hostAttr,"")}createElement(e,i){let t=super.createElement(e,i);return super.setAttribute(t,this.contentAttr,""),t}},LR=(()=>{let e=class e extends Dd{constructor(t){super(t)}supports(t){return!0}addEventListener(t,r,o){return t.addEventListener(r,o,!1),()=>this.removeEventListener(t,r,o)}removeEventListener(t,r,o){return t.removeEventListener(r,o)}};e.\u0275fac=function(r){return new(r||e)(p(N))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})(),Ew=["alt","control","meta","shift"],jR={"\b":"Backspace"," ":"Tab","\x7F":"Delete","\x1B":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},VR={alt:n=>n.altKey,control:n=>n.ctrlKey,meta:n=>n.metaKey,shift:n=>n.shiftKey},BR=(()=>{let e=class e extends Dd{constructor(t){super(t)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,r,o){let s=e.parseEventName(r),a=e.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>bi().onAndCancel(t,s.domEventName,a))}static parseEventName(t){let r=t.toLowerCase().split("."),o=r.shift();if(r.length===0||!(o==="keydown"||o==="keyup"))return null;let s=e._normalizeKey(r.pop()),a="",l=r.indexOf("code");if(l>-1&&(r.splice(l,1),a="code."),Ew.forEach(d=>{let u=r.indexOf(d);u>-1&&(r.splice(u,1),a+=d+".")}),a+=s,r.length!=0||s.length===0)return null;let c={};return c.domEventName=o,c.fullKey=a,c}static matchEventFullKeyCode(t,r){let o=jR[t.key]||t.key,s="";return r.indexOf("code.")>-1&&(o=t.code,s="code."),o==null||!o?!1:(o=o.toLowerCase(),o===" "?o="space":o==="."&&(o="dot"),Ew.forEach(a=>{if(a!==o){let l=VR[a];l(t)&&(s+=a+".")}}),s+=o,s===r)}static eventCallback(t,r,o){return s=>{e.matchEventFullKeyCode(s,t)&&o.runGuarded(()=>r(s))}}static _normalizeKey(t){return t==="esc"?"escape":t}};e.\u0275fac=function(r){return new(r||e)(p(N))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})();function Aw(n,e){return Q0(w({rootComponent:n},zR(e)))}function zR(n){return{appProviders:[...GR,...n?.providers??[]],platformProviders:WR}}function HR(){sp.makeCurrent()}function UR(){return new Ht}function $R(){return xy(document),document}var WR=[{provide:$t,useValue:Ym},{provide:bm,useValue:HR,multi:!0},{provide:N,useFactory:$R,deps:[]}];var GR=[{provide:Yc,useValue:"root"},{provide:Ht,useFactory:UR,deps:[]},{provide:ap,useClass:LR,multi:!0,deps:[N,A,$t]},{provide:ap,useClass:BR,multi:!0,deps:[N]},Ed,Sw,Iw,{provide:vr,useExisting:Ed},{provide:ko,useClass:AR,deps:[]},[]];function qR(){return new dp(p(N))}var dp=(()=>{let e=class e{constructor(t){this._doc=t}getTitle(){return this._doc.title}setTitle(t){this._doc.title=t||""}};e.\u0275fac=function(r){return new(r||e)(p(N))},e.\u0275prov=x({token:e,factory:function(r){let o=null;return r?o=new r:o=qR(),o},providedIn:"root"});let n=e;return n})();var up=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:function(r){let o=null;return r?o=new(r||e):o=p(Ow),o},providedIn:"root"});let n=e;return n})();function YR(n){return new Ow(n.get(N))}var Ow=(()=>{let e=class e extends up{constructor(t){super(),this._doc=t}sanitize(t,r){if(r==null)return null;switch(t){case Mt.NONE:return r;case Mt.HTML:return Er(r,"HTML")?Wn(r):Dm(this._doc,String(r)).toString();case Mt.STYLE:return Er(r,"Style")?Wn(r):r;case Mt.SCRIPT:if(Er(r,"Script"))return Wn(r);throw new S(5200,!1);case Mt.URL:return Er(r,"URL")?Wn(r):Cm(String(r));case Mt.RESOURCE_URL:if(Er(r,"ResourceURL"))return Wn(r);throw new S(5201,!1);default:throw new S(5202,!1)}}bypassSecurityTrustHtml(t){return Vy(t)}bypassSecurityTrustStyle(t){return By(t)}bypassSecurityTrustScript(t){return zy(t)}bypassSecurityTrustUrl(t){return Hy(t)}bypassSecurityTrustResourceUrl(t){return Uy(t)}};e.\u0275fac=function(r){return new(r||e)(p(N))},e.\u0275prov=x({token:e,factory:function(r){let o=null;return r?o=new r:o=YR(p(Ne)),o},providedIn:"root"});let n=e;return n})();var he="primary",Ra=Symbol("RouteTitle"),gp=class{constructor(e){this.params=e||{}}has(e){return Object.prototype.hasOwnProperty.call(this.params,e)}get(e){if(this.has(e)){let i=this.params[e];return Array.isArray(i)?i[0]:i}return null}getAll(e){if(this.has(e)){let i=this.params[e];return Array.isArray(i)?i:[i]}return[]}get keys(){return Object.keys(this.params)}};function zo(n){return new gp(n)}function ZR(n,e,i){let t=i.path.split("/");if(t.length>n.length||i.pathMatch==="full"&&(e.hasChildren()||t.lengtht[o]===r)}else return n===e}function Bw(n){return n.length>0?n[n.length-1]:null}function Wi(n){return lr(n)?n:Mr(n)?ke(Promise.resolve(n)):R(n)}var KR={exact:Hw,subset:Uw},zw={exact:XR,subset:JR,ignored:()=>!0};function kw(n,e,i){return KR[i.paths](n.root,e.root,i.matrixParams)&&zw[i.queryParams](n.queryParams,e.queryParams)&&!(i.fragment==="exact"&&n.fragment!==e.fragment)}function XR(n,e){return Kn(n,e)}function Hw(n,e,i){if(!Fr(n.segments,e.segments)||!Td(n.segments,e.segments,i)||n.numberOfChildren!==e.numberOfChildren)return!1;for(let t in e.children)if(!n.children[t]||!Hw(n.children[t],e.children[t],i))return!1;return!0}function JR(n,e){return Object.keys(e).length<=Object.keys(n).length&&Object.keys(e).every(i=>Vw(n[i],e[i]))}function Uw(n,e,i){return $w(n,e,e.segments,i)}function $w(n,e,i,t){if(n.segments.length>i.length){let r=n.segments.slice(0,i.length);return!(!Fr(r,i)||e.hasChildren()||!Td(r,i,t))}else if(n.segments.length===i.length){if(!Fr(n.segments,i)||!Td(n.segments,i,t))return!1;for(let r in e.children)if(!n.children[r]||!Uw(n.children[r],e.children[r],t))return!1;return!0}else{let r=i.slice(0,n.segments.length),o=i.slice(n.segments.length);return!Fr(n.segments,r)||!Td(n.segments,r,t)||!n.children[he]?!1:$w(n.children[he],e,o,t)}}function Td(n,e,i){return e.every((t,r)=>zw[i](n[r].parameters,t.parameters))}var Ui=class{constructor(e=new Te([],{}),i={},t=null){this.root=e,this.queryParams=i,this.fragment=t}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=zo(this.queryParams)),this._queryParamMap}toString(){return n1.serialize(this)}},Te=class{constructor(e,i){this.segments=e,this.children=i,this.parent=null,Object.values(i).forEach(t=>t.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Ad(this)}},kr=class{constructor(e,i){this.path=e,this.parameters=i}get parameterMap(){return this._parameterMap||(this._parameterMap=zo(this.parameters)),this._parameterMap}toString(){return Gw(this)}};function e1(n,e){return Fr(n,e)&&n.every((i,t)=>Kn(i.parameters,e[t].parameters))}function Fr(n,e){return n.length!==e.length?!1:n.every((i,t)=>i.path===e[t].path)}function t1(n,e){let i=[];return Object.entries(n.children).forEach(([t,r])=>{t===he&&(i=i.concat(e(r,t)))}),Object.entries(n.children).forEach(([t,r])=>{t!==he&&(i=i.concat(e(r,t)))}),i}var Hp=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:()=>(()=>new Rd)(),providedIn:"root"});let n=e;return n})(),Rd=class{parse(e){let i=new vp(e);return new Ui(i.parseRootSegment(),i.parseQueryParams(),i.parseFragment())}serialize(e){let i=`/${ba(e.root,!0)}`,t=o1(e.queryParams),r=typeof e.fragment=="string"?`#${i1(e.fragment)}`:"";return`${i}${t}${r}`}},n1=new Rd;function Ad(n){return n.segments.map(e=>Gw(e)).join("/")}function ba(n,e){if(!n.hasChildren())return Ad(n);if(e){let i=n.children[he]?ba(n.children[he],!1):"",t=[];return Object.entries(n.children).forEach(([r,o])=>{r!==he&&t.push(`${r}:${ba(o,!1)}`)}),t.length>0?`${i}(${t.join("//")})`:i}else{let i=t1(n,(t,r)=>r===he?[ba(n.children[he],!1)]:[`${r}:${ba(t,!1)}`]);return Object.keys(n.children).length===1&&n.children[he]!=null?`${Ad(n)}/${i[0]}`:`${Ad(n)}/(${i.join("//")})`}}function Ww(n){return encodeURIComponent(n).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Sd(n){return Ww(n).replace(/%3B/gi,";")}function i1(n){return encodeURI(n)}function bp(n){return Ww(n).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Od(n){return decodeURIComponent(n)}function Fw(n){return Od(n.replace(/\+/g,"%20"))}function Gw(n){return`${bp(n.path)}${r1(n.parameters)}`}function r1(n){return Object.keys(n).map(e=>`;${bp(e)}=${bp(n[e])}`).join("")}function o1(n){let e=Object.keys(n).map(i=>{let t=n[i];return Array.isArray(t)?t.map(r=>`${Sd(i)}=${Sd(r)}`).join("&"):`${Sd(i)}=${Sd(t)}`}).filter(i=>!!i);return e.length?`?${e.join("&")}`:""}var s1=/^[^\/()?;#]+/;function fp(n){let e=n.match(s1);return e?e[0]:""}var a1=/^[^\/()?;=#]+/;function l1(n){let e=n.match(a1);return e?e[0]:""}var c1=/^[^=?&#]+/;function d1(n){let e=n.match(c1);return e?e[0]:""}var u1=/^[^&#]+/;function f1(n){let e=n.match(u1);return e?e[0]:""}var vp=class{constructor(e){this.url=e,this.remaining=e}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new Te([],{}):new Te([],this.parseChildren())}parseQueryParams(){let e={};if(this.consumeOptional("?"))do this.parseQueryParam(e);while(this.consumeOptional("&"));return e}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let e=[];for(this.peekStartsWith("(")||e.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),e.push(this.parseSegment());let i={};this.peekStartsWith("/(")&&(this.capture("/"),i=this.parseParens(!0));let t={};return this.peekStartsWith("(")&&(t=this.parseParens(!1)),(e.length>0||Object.keys(i).length>0)&&(t[he]=new Te(e,i)),t}parseSegment(){let e=fp(this.remaining);if(e===""&&this.peekStartsWith(";"))throw new S(4009,!1);return this.capture(e),new kr(Od(e),this.parseMatrixParams())}parseMatrixParams(){let e={};for(;this.consumeOptional(";");)this.parseParam(e);return e}parseParam(e){let i=l1(this.remaining);if(!i)return;this.capture(i);let t="";if(this.consumeOptional("=")){let r=fp(this.remaining);r&&(t=r,this.capture(t))}e[Od(i)]=Od(t)}parseQueryParam(e){let i=d1(this.remaining);if(!i)return;this.capture(i);let t="";if(this.consumeOptional("=")){let s=f1(this.remaining);s&&(t=s,this.capture(t))}let r=Fw(i),o=Fw(t);if(e.hasOwnProperty(r)){let s=e[r];Array.isArray(s)||(s=[s],e[r]=s),s.push(o)}else e[r]=o}parseParens(e){let i={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let t=fp(this.remaining),r=this.remaining[t.length];if(r!=="/"&&r!==")"&&r!==";")throw new S(4010,!1);let o;t.indexOf(":")>-1?(o=t.slice(0,t.indexOf(":")),this.capture(o),this.capture(":")):e&&(o=he);let s=this.parseChildren();i[o]=Object.keys(s).length===1?s[he]:new Te([],s),this.consumeOptional("//")}return i}peekStartsWith(e){return this.remaining.startsWith(e)}consumeOptional(e){return this.peekStartsWith(e)?(this.remaining=this.remaining.substring(e.length),!0):!1}capture(e){if(!this.consumeOptional(e))throw new S(4011,!1)}};function qw(n){return n.segments.length>0?new Te([],{[he]:n}):n}function Yw(n){let e={};for(let t of Object.keys(n.children)){let r=n.children[t],o=Yw(r);if(t===he&&o.segments.length===0&&o.hasChildren())for(let[s,a]of Object.entries(o.children))e[s]=a;else(o.segments.length>0||o.hasChildren())&&(e[t]=o)}let i=new Te(n.segments,e);return h1(i)}function h1(n){if(n.numberOfChildren===1&&n.children[he]){let e=n.children[he];return new Te(n.segments.concat(e.segments),e.children)}return n}function Ho(n){return n instanceof Ui}function m1(n,e,i=null,t=null){let r=Zw(n);return Qw(r,e,i,t)}function Zw(n){let e;function i(o){let s={};for(let l of o.children){let c=i(l);s[l.outlet]=c}let a=new Te(o.url,s);return o===n&&(e=a),a}let t=i(n.root),r=qw(t);return e??r}function Qw(n,e,i,t){let r=n;for(;r.parent;)r=r.parent;if(e.length===0)return hp(r,r,r,i,t);let o=p1(e);if(o.toRoot())return hp(r,r,new Te([],{}),i,t);let s=g1(o,r,n),a=s.processChildren?wa(s.segmentGroup,s.index,o.commands):Xw(s.segmentGroup,s.index,o.commands);return hp(r,s.segmentGroup,a,i,t)}function kd(n){return typeof n=="object"&&n!=null&&!n.outlets&&!n.segmentPath}function Da(n){return typeof n=="object"&&n!=null&&n.outlets}function hp(n,e,i,t,r){let o={};t&&Object.entries(t).forEach(([l,c])=>{o[l]=Array.isArray(c)?c.map(d=>`${d}`):`${c}`});let s;n===e?s=i:s=Kw(n,e,i);let a=qw(Yw(s));return new Ui(a,o,r)}function Kw(n,e,i){let t={};return Object.entries(n.children).forEach(([r,o])=>{o===e?t[r]=i:t[r]=Kw(o,e,i)}),new Te(n.segments,t)}var Fd=class{constructor(e,i,t){if(this.isAbsolute=e,this.numberOfDoubleDots=i,this.commands=t,e&&t.length>0&&kd(t[0]))throw new S(4003,!1);let r=t.find(Da);if(r&&r!==Bw(t))throw new S(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function p1(n){if(typeof n[0]=="string"&&n.length===1&&n[0]==="/")return new Fd(!0,0,n);let e=0,i=!1,t=n.reduce((r,o,s)=>{if(typeof o=="object"&&o!=null){if(o.outlets){let a={};return Object.entries(o.outlets).forEach(([l,c])=>{a[l]=typeof c=="string"?c.split("/"):c}),[...r,{outlets:a}]}if(o.segmentPath)return[...r,o.segmentPath]}return typeof o!="string"?[...r,o]:s===0?(o.split("/").forEach((a,l)=>{l==0&&a==="."||(l==0&&a===""?i=!0:a===".."?e++:a!=""&&r.push(a))}),r):[...r,o]},[]);return new Fd(i,e,t)}var Vo=class{constructor(e,i,t){this.segmentGroup=e,this.processChildren=i,this.index=t}};function g1(n,e,i){if(n.isAbsolute)return new Vo(e,!0,0);if(!i)return new Vo(e,!1,NaN);if(i.parent===null)return new Vo(i,!0,0);let t=kd(n.commands[0])?0:1,r=i.segments.length-1+t;return _1(i,r,n.numberOfDoubleDots)}function _1(n,e,i){let t=n,r=e,o=i;for(;o>r;){if(o-=r,t=t.parent,!t)throw new S(4005,!1);r=t.segments.length}return new Vo(t,!1,r-o)}function b1(n){return Da(n[0])?n[0].outlets:{[he]:n}}function Xw(n,e,i){if(n||(n=new Te([],{})),n.segments.length===0&&n.hasChildren())return wa(n,e,i);let t=v1(n,e,i),r=i.slice(t.commandIndex);if(t.match&&t.pathIndexo!==he)&&n.children[he]&&n.numberOfChildren===1&&n.children[he].segments.length===0){let o=wa(n.children[he],e,i);return new Te(n.segments,o.children)}return Object.entries(t).forEach(([o,s])=>{typeof s=="string"&&(s=[s]),s!==null&&(r[o]=Xw(n.children[o],e,s))}),Object.entries(n.children).forEach(([o,s])=>{t[o]===void 0&&(r[o]=s)}),new Te(n.segments,r)}}function v1(n,e,i){let t=0,r=e,o={match:!1,pathIndex:0,commandIndex:0};for(;r=i.length)return o;let s=n.segments[r],a=i[t];if(Da(a))break;let l=`${a}`,c=t0&&l===void 0)break;if(l&&c&&typeof c=="object"&&c.outlets===void 0){if(!Nw(l,c,s))return o;t+=2}else{if(!Nw(l,{},s))return o;t++}r++}return{match:!0,pathIndex:r,commandIndex:t}}function yp(n,e,i){let t=n.segments.slice(0,e),r=0;for(;r{typeof t=="string"&&(t=[t]),t!==null&&(e[i]=yp(new Te([],{}),0,t))}),e}function Pw(n){let e={};return Object.entries(n).forEach(([i,t])=>e[i]=`${t}`),e}function Nw(n,e,i){return n==i.path&&Kn(e,i.parameters)}var xa="imperative",sn=class{constructor(e,i){this.id=e,this.url=i}},Ea=class extends sn{constructor(e,i,t="imperative",r=null){super(e,i),this.type=0,this.navigationTrigger=t,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},yi=class extends sn{constructor(e,i,t){super(e,i),this.urlAfterRedirects=t,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},$i=class extends sn{constructor(e,i,t,r){super(e,i),this.reason=t,this.code=r,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},Pr=class extends sn{constructor(e,i,t,r){super(e,i),this.reason=t,this.code=r,this.type=16}},Ia=class extends sn{constructor(e,i,t,r){super(e,i),this.error=t,this.target=r,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},Pd=class extends sn{constructor(e,i,t,r){super(e,i),this.urlAfterRedirects=t,this.state=r,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},wp=class extends sn{constructor(e,i,t,r){super(e,i),this.urlAfterRedirects=t,this.state=r,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},xp=class extends sn{constructor(e,i,t,r,o){super(e,i),this.urlAfterRedirects=t,this.state=r,this.shouldActivate=o,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},Cp=class extends sn{constructor(e,i,t,r){super(e,i),this.urlAfterRedirects=t,this.state=r,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Dp=class extends sn{constructor(e,i,t,r){super(e,i),this.urlAfterRedirects=t,this.state=r,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Ep=class{constructor(e){this.route=e,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},Ip=class{constructor(e){this.route=e,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},Sp=class{constructor(e){this.snapshot=e,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Mp=class{constructor(e){this.snapshot=e,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Tp=class{constructor(e){this.snapshot=e,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Ap=class{constructor(e){this.snapshot=e,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}};var Sa=class{},Ma=class{constructor(e){this.url=e}};var Op=class{constructor(){this.outlet=null,this.route=null,this.injector=null,this.children=new zd,this.attachRef=null}},zd=(()=>{let e=class e{constructor(){this.contexts=new Map}onChildOutletCreated(t,r){let o=this.getOrCreateContext(t);o.outlet=r,this.contexts.set(t,o)}onChildOutletDestroyed(t){let r=this.getContext(t);r&&(r.outlet=null,r.attachRef=null)}onOutletDeactivated(){let t=this.contexts;return this.contexts=new Map,t}onOutletReAttached(t){this.contexts=t}getOrCreateContext(t){let r=this.getContext(t);return r||(r=new Op,this.contexts.set(t,r)),r}getContext(t){return this.contexts.get(t)||null}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),Nd=class{constructor(e){this._root=e}get root(){return this._root.value}parent(e){let i=this.pathFromRoot(e);return i.length>1?i[i.length-2]:null}children(e){let i=Rp(e,this._root);return i?i.children.map(t=>t.value):[]}firstChild(e){let i=Rp(e,this._root);return i&&i.children.length>0?i.children[0].value:null}siblings(e){let i=kp(e,this._root);return i.length<2?[]:i[i.length-2].children.map(r=>r.value).filter(r=>r!==e)}pathFromRoot(e){return kp(e,this._root).map(i=>i.value)}};function Rp(n,e){if(n===e.value)return e;for(let i of e.children){let t=Rp(n,i);if(t)return t}return null}function kp(n,e){if(n===e.value)return[e];for(let i of e.children){let t=kp(n,i);if(t.length)return t.unshift(e),t}return[]}var qt=class{constructor(e,i){this.value=e,this.children=i}toString(){return`TreeNode(${this.value})`}};function jo(n){let e={};return n&&n.children.forEach(i=>e[i.value.outlet]=i),e}var Ld=class extends Nd{constructor(e,i){super(e),this.snapshot=i,$p(this,e)}toString(){return this.snapshot.toString()}};function Jw(n,e){let i=w1(n,e),t=new tt([new kr("",{})]),r=new tt({}),o=new tt({}),s=new tt({}),a=new tt(""),l=new Uo(t,r,s,a,o,he,e,i.root);return l.snapshot=i.root,new Ld(new qt(l,[]),i)}function w1(n,e){let i={},t={},r={},o="",s=new Ta([],i,r,o,t,he,e,null,{});return new jd("",new qt(s,[]))}var Uo=class{constructor(e,i,t,r,o,s,a,l){this.urlSubject=e,this.paramsSubject=i,this.queryParamsSubject=t,this.fragmentSubject=r,this.dataSubject=o,this.outlet=s,this.component=a,this._futureSnapshot=l,this.title=this.dataSubject?.pipe(F(c=>c[Ra]))??R(void 0),this.url=e,this.params=i,this.queryParams=t,this.fragment=r,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(F(e=>zo(e)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(F(e=>zo(e)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function Up(n,e,i="emptyOnly"){let t,{routeConfig:r}=n;return e!==null&&(i==="always"||r?.path===""||!e.component&&!e.routeConfig?.loadComponent)?t={params:w(w({},e.params),n.params),data:w(w({},e.data),n.data),resolve:w(w(w(w({},n.data),e.data),r?.data),n._resolvedData)}:t={params:n.params,data:n.data,resolve:w(w({},n.data),n._resolvedData??{})},r&&tx(r)&&(t.resolve[Ra]=r.title),t}var Ta=class{get title(){return this.data?.[Ra]}constructor(e,i,t,r,o,s,a,l,c){this.url=e,this.params=i,this.queryParams=t,this.fragment=r,this.data=o,this.outlet=s,this.component=a,this.routeConfig=l,this._resolve=c}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=zo(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=zo(this.queryParams)),this._queryParamMap}toString(){let e=this.url.map(t=>t.toString()).join("/"),i=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${e}', path:'${i}')`}},jd=class extends Nd{constructor(e,i){super(i),this.url=e,$p(this,i)}toString(){return ex(this._root)}};function $p(n,e){e.value._routerState=n,e.children.forEach(i=>$p(n,i))}function ex(n){let e=n.children.length>0?` { ${n.children.map(ex).join(", ")} } `:"";return`${n.value}${e}`}function mp(n){if(n.snapshot){let e=n.snapshot,i=n._futureSnapshot;n.snapshot=i,Kn(e.queryParams,i.queryParams)||n.queryParamsSubject.next(i.queryParams),e.fragment!==i.fragment&&n.fragmentSubject.next(i.fragment),Kn(e.params,i.params)||n.paramsSubject.next(i.params),QR(e.url,i.url)||n.urlSubject.next(i.url),Kn(e.data,i.data)||n.dataSubject.next(i.data)}else n.snapshot=n._futureSnapshot,n.dataSubject.next(n._futureSnapshot.data)}function Fp(n,e){let i=Kn(n.params,e.params)&&e1(n.url,e.url),t=!n.parent!=!e.parent;return i&&!t&&(!n.parent||Fp(n.parent,e.parent))}function tx(n){return typeof n.title=="string"||n.title===null}var Wp=(()=>{let e=class e{constructor(){this.activated=null,this._activatedRoute=null,this.name=he,this.activateEvents=new X,this.deactivateEvents=new X,this.attachEvents=new X,this.detachEvents=new X,this.parentContexts=C(zd),this.location=C(Ke),this.changeDetector=C(Oe),this.environmentInjector=C(Nt),this.inputBinder=C(Gp,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(t){if(t.name){let{firstChange:r,previousValue:o}=t.name;if(r)return;this.isTrackedInParentContexts(o)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(o)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(t){return this.parentContexts.getContext(t)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let t=this.parentContexts.getContext(this.name);t?.route&&(t.attachRef?this.attach(t.attachRef,t.route):this.activateWith(t.route,t.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new S(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new S(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new S(4012,!1);this.location.detach();let t=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(t.instance),t}attach(t,r){this.activated=t,this._activatedRoute=r,this.location.insert(t.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(t.instance)}deactivate(){if(this.activated){let t=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(t)}}activateWith(t,r){if(this.isActivated)throw new S(4013,!1);this._activatedRoute=t;let o=this.location,a=t.snapshot.component,l=this.parentContexts.getOrCreateContext(this.name).children,c=new Pp(t,l,o.injector);this.activated=o.createComponent(a,{index:o.length,injector:c,environmentInjector:r??this.environmentInjector}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=O({type:e,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[qe]});let n=e;return n})(),Pp=class{constructor(e,i,t){this.route=e,this.childContexts=i,this.parent=t}get(e,i){return e===Uo?this.route:e===zd?this.childContexts:this.parent.get(e,i)}},Gp=new y("");function x1(n,e,i){let t=Aa(n,e._root,i?i._root:void 0);return new Ld(t,e)}function Aa(n,e,i){if(i&&n.shouldReuseRoute(e.value,i.value.snapshot)){let t=i.value;t._futureSnapshot=e.value;let r=C1(n,e,i);return new qt(t,r)}else{if(n.shouldAttach(e.value)){let o=n.retrieve(e.value);if(o!==null){let s=o.route;return s.value._futureSnapshot=e.value,s.children=e.children.map(a=>Aa(n,a)),s}}let t=D1(e.value),r=e.children.map(o=>Aa(n,o));return new qt(t,r)}}function C1(n,e,i){return e.children.map(t=>{for(let r of i.children)if(n.shouldReuseRoute(t.value,r.value.snapshot))return Aa(n,t,r);return Aa(n,t)})}function D1(n){return new Uo(new tt(n.url),new tt(n.params),new tt(n.queryParams),new tt(n.fragment),new tt(n.data),n.outlet,n.component,n)}var nx="ngNavigationCancelingError";function ix(n,e){let{redirectTo:i,navigationBehaviorOptions:t}=Ho(e)?{redirectTo:e,navigationBehaviorOptions:void 0}:e,r=rx(!1,0,e);return r.url=i,r.navigationBehaviorOptions=t,r}function rx(n,e,i){let t=new Error("NavigationCancelingError: "+(n||""));return t[nx]=!0,t.cancellationCode=e,i&&(t.url=i),t}function E1(n){return ox(n)&&Ho(n.url)}function ox(n){return n&&n[nx]}var I1=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275cmp=V({type:e,selectors:[["ng-component"]],standalone:!0,features:[B],decls:1,vars:0,template:function(r,o){r&1&&ee(0,"router-outlet")},dependencies:[Wp],encapsulation:2});let n=e;return n})();function S1(n,e){return n.providers&&!n._injector&&(n._injector=zm(n.providers,e,`Route: ${n.path}`)),n._injector??e}function qp(n){let e=n.children&&n.children.map(qp),i=e?ae(w({},n),{children:e}):w({},n);return!i.component&&!i.loadComponent&&(e||i.loadChildren)&&i.outlet&&i.outlet!==he&&(i.component=I1),i}function Xn(n){return n.outlet||he}function M1(n,e){let i=n.filter(t=>Xn(t)===e);return i.push(...n.filter(t=>Xn(t)!==e)),i}function ka(n){if(!n)return null;if(n.routeConfig?._injector)return n.routeConfig._injector;for(let e=n.parent;e;e=e.parent){let i=e.routeConfig;if(i?._loadedInjector)return i._loadedInjector;if(i?._injector)return i._injector}return null}var T1=(n,e,i,t)=>F(r=>(new Np(e,r.targetRouterState,r.currentRouterState,i,t).activate(n),r)),Np=class{constructor(e,i,t,r,o){this.routeReuseStrategy=e,this.futureState=i,this.currState=t,this.forwardEvent=r,this.inputBindingEnabled=o}activate(e){let i=this.futureState._root,t=this.currState?this.currState._root:null;this.deactivateChildRoutes(i,t,e),mp(this.futureState.root),this.activateChildRoutes(i,t,e)}deactivateChildRoutes(e,i,t){let r=jo(i);e.children.forEach(o=>{let s=o.value.outlet;this.deactivateRoutes(o,r[s],t),delete r[s]}),Object.values(r).forEach(o=>{this.deactivateRouteAndItsChildren(o,t)})}deactivateRoutes(e,i,t){let r=e.value,o=i?i.value:null;if(r===o)if(r.component){let s=t.getContext(r.outlet);s&&this.deactivateChildRoutes(e,i,s.children)}else this.deactivateChildRoutes(e,i,t);else o&&this.deactivateRouteAndItsChildren(i,t)}deactivateRouteAndItsChildren(e,i){e.value.component&&this.routeReuseStrategy.shouldDetach(e.value.snapshot)?this.detachAndStoreRouteSubtree(e,i):this.deactivateRouteAndOutlet(e,i)}detachAndStoreRouteSubtree(e,i){let t=i.getContext(e.value.outlet),r=t&&e.value.component?t.children:i,o=jo(e);for(let s of Object.keys(o))this.deactivateRouteAndItsChildren(o[s],r);if(t&&t.outlet){let s=t.outlet.detach(),a=t.children.onOutletDeactivated();this.routeReuseStrategy.store(e.value.snapshot,{componentRef:s,route:e,contexts:a})}}deactivateRouteAndOutlet(e,i){let t=i.getContext(e.value.outlet),r=t&&e.value.component?t.children:i,o=jo(e);for(let s of Object.keys(o))this.deactivateRouteAndItsChildren(o[s],r);t&&(t.outlet&&(t.outlet.deactivate(),t.children.onOutletDeactivated()),t.attachRef=null,t.route=null)}activateChildRoutes(e,i,t){let r=jo(i);e.children.forEach(o=>{this.activateRoutes(o,r[o.value.outlet],t),this.forwardEvent(new Ap(o.value.snapshot))}),e.children.length&&this.forwardEvent(new Mp(e.value.snapshot))}activateRoutes(e,i,t){let r=e.value,o=i?i.value:null;if(mp(r),r===o)if(r.component){let s=t.getOrCreateContext(r.outlet);this.activateChildRoutes(e,i,s.children)}else this.activateChildRoutes(e,i,t);else if(r.component){let s=t.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){let a=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),s.children.onOutletReAttached(a.contexts),s.attachRef=a.componentRef,s.route=a.route.value,s.outlet&&s.outlet.attach(a.componentRef,a.route.value),mp(a.route.value),this.activateChildRoutes(e,null,s.children)}else{let a=ka(r.snapshot);s.attachRef=null,s.route=r,s.injector=a,s.outlet&&s.outlet.activateWith(r,s.injector),this.activateChildRoutes(e,null,s.children)}}else this.activateChildRoutes(e,null,t)}},Vd=class{constructor(e){this.path=e,this.route=this.path[this.path.length-1]}},Bo=class{constructor(e,i){this.component=e,this.route=i}};function A1(n,e,i){let t=n._root,r=e?e._root:null;return va(t,r,i,[t.value])}function O1(n){let e=n.routeConfig?n.routeConfig.canActivateChild:null;return!e||e.length===0?null:{node:n,guards:e}}function Wo(n,e){let i=Symbol(),t=e.get(n,i);return t===i?typeof n=="function"&&!gv(n)?n:e.get(n):t}function va(n,e,i,t,r={canDeactivateChecks:[],canActivateChecks:[]}){let o=jo(e);return n.children.forEach(s=>{R1(s,o[s.value.outlet],i,t.concat([s.value]),r),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,a])=>Ca(a,i.getContext(s),r)),r}function R1(n,e,i,t,r={canDeactivateChecks:[],canActivateChecks:[]}){let o=n.value,s=e?e.value:null,a=i?i.getContext(n.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){let l=k1(s,o,o.routeConfig.runGuardsAndResolvers);l?r.canActivateChecks.push(new Vd(t)):(o.data=s.data,o._resolvedData=s._resolvedData),o.component?va(n,e,a?a.children:null,t,r):va(n,e,i,t,r),l&&a&&a.outlet&&a.outlet.isActivated&&r.canDeactivateChecks.push(new Bo(a.outlet.component,s))}else s&&Ca(e,a,r),r.canActivateChecks.push(new Vd(t)),o.component?va(n,null,a?a.children:null,t,r):va(n,null,i,t,r);return r}function k1(n,e,i){if(typeof i=="function")return i(n,e);switch(i){case"pathParamsChange":return!Fr(n.url,e.url);case"pathParamsOrQueryParamsChange":return!Fr(n.url,e.url)||!Kn(n.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Fp(n,e)||!Kn(n.queryParams,e.queryParams);case"paramsChange":default:return!Fp(n,e)}}function Ca(n,e,i){let t=jo(n),r=n.value;Object.entries(t).forEach(([o,s])=>{r.component?e?Ca(s,e.children.getContext(o),i):Ca(s,null,i):Ca(s,e,i)}),r.component?e&&e.outlet&&e.outlet.isActivated?i.canDeactivateChecks.push(new Bo(e.outlet.component,r)):i.canDeactivateChecks.push(new Bo(null,r)):i.canDeactivateChecks.push(new Bo(null,r))}function Fa(n){return typeof n=="function"}function F1(n){return typeof n=="boolean"}function P1(n){return n&&Fa(n.canLoad)}function N1(n){return n&&Fa(n.canActivate)}function L1(n){return n&&Fa(n.canActivateChild)}function j1(n){return n&&Fa(n.canDeactivate)}function V1(n){return n&&Fa(n.canMatch)}function sx(n){return n instanceof ai||n?.name==="EmptyError"}var Md=Symbol("INITIAL_VALUE");function $o(){return Fe(n=>co(n.map(e=>e.pipe(ie(1),pt(Md)))).pipe(F(e=>{for(let i of e)if(i!==!0){if(i===Md)return Md;if(i===!1||i instanceof Ui)return i}return!0}),le(e=>e!==Md),ie(1)))}function B1(n,e){return We(i=>{let{targetSnapshot:t,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:s}}=i;return s.length===0&&o.length===0?R(ae(w({},i),{guardsResult:!0})):z1(s,t,r,n).pipe(We(a=>a&&F1(a)?H1(t,o,n,e):R(a)),F(a=>ae(w({},i),{guardsResult:a})))})}function z1(n,e,i,t){return ke(n).pipe(We(r=>q1(r.component,r.route,i,e,t)),jn(r=>r!==!0,!0))}function H1(n,e,i,t){return ke(e).pipe(Ai(r=>Jt($1(r.route.parent,t),U1(r.route,t),G1(n,r.path,i),W1(n,r.route,i))),jn(r=>r!==!0,!0))}function U1(n,e){return n!==null&&e&&e(new Tp(n)),R(!0)}function $1(n,e){return n!==null&&e&&e(new Sp(n)),R(!0)}function W1(n,e,i){let t=e.routeConfig?e.routeConfig.canActivate:null;if(!t||t.length===0)return R(!0);let r=t.map(o=>Bt(()=>{let s=ka(e)??i,a=Wo(o,s),l=N1(a)?a.canActivate(e,n):s.runInContext(()=>a(e,n));return Wi(l).pipe(jn())}));return R(r).pipe($o())}function G1(n,e,i){let t=e[e.length-1],o=e.slice(0,e.length-1).reverse().map(s=>O1(s)).filter(s=>s!==null).map(s=>Bt(()=>{let a=s.guards.map(l=>{let c=ka(s.node)??i,d=Wo(l,c),u=L1(d)?d.canActivateChild(t,n):c.runInContext(()=>d(t,n));return Wi(u).pipe(jn())});return R(a).pipe($o())}));return R(o).pipe($o())}function q1(n,e,i,t,r){let o=e&&e.routeConfig?e.routeConfig.canDeactivate:null;if(!o||o.length===0)return R(!0);let s=o.map(a=>{let l=ka(e)??r,c=Wo(a,l),d=j1(c)?c.canDeactivate(n,e,i,t):l.runInContext(()=>c(n,e,i,t));return Wi(d).pipe(jn())});return R(s).pipe($o())}function Y1(n,e,i,t){let r=e.canLoad;if(r===void 0||r.length===0)return R(!0);let o=r.map(s=>{let a=Wo(s,n),l=P1(a)?a.canLoad(e,i):n.runInContext(()=>a(e,i));return Wi(l)});return R(o).pipe($o(),ax(t))}function ax(n){return wf(Ee(e=>{if(Ho(e))throw ix(n,e)}),F(e=>e===!0))}function Z1(n,e,i,t){let r=e.canMatch;if(!r||r.length===0)return R(!0);let o=r.map(s=>{let a=Wo(s,n),l=V1(a)?a.canMatch(e,i):n.runInContext(()=>a(e,i));return Wi(l)});return R(o).pipe($o(),ax(t))}var Oa=class{constructor(e){this.segmentGroup=e||null}},Bd=class extends Error{constructor(e){super(),this.urlTree=e}};function Lo(n){return Pn(new Oa(n))}function Q1(n){return Pn(new S(4e3,!1))}function K1(n){return Pn(rx(!1,3))}var Lp=class{constructor(e,i){this.urlSerializer=e,this.urlTree=i}noMatchError(e){return new S(4002,!1)}lineralizeSegments(e,i){let t=[],r=i.root;for(;;){if(t=t.concat(r.segments),r.numberOfChildren===0)return R(t);if(r.numberOfChildren>1||!r.children[he])return Q1(e.redirectTo);r=r.children[he]}}applyRedirectCommands(e,i,t){let r=this.applyRedirectCreateUrlTree(i,this.urlSerializer.parse(i),e,t);if(i.startsWith("/"))throw new Bd(r);return r}applyRedirectCreateUrlTree(e,i,t,r){let o=this.createSegmentGroup(e,i.root,t,r);return new Ui(o,this.createQueryParams(i.queryParams,this.urlTree.queryParams),i.fragment)}createQueryParams(e,i){let t={};return Object.entries(e).forEach(([r,o])=>{if(typeof o=="string"&&o.startsWith(":")){let a=o.substring(1);t[r]=i[a]}else t[r]=o}),t}createSegmentGroup(e,i,t,r){let o=this.createSegments(e,i.segments,t,r),s={};return Object.entries(i.children).forEach(([a,l])=>{s[a]=this.createSegmentGroup(e,l,t,r)}),new Te(o,s)}createSegments(e,i,t,r){return i.map(o=>o.path.startsWith(":")?this.findPosParam(e,o,r):this.findOrReturn(o,t))}findPosParam(e,i,t){let r=t[i.path.substring(1)];if(!r)throw new S(4001,!1);return r}findOrReturn(e,i){let t=0;for(let r of i){if(r.path===e.path)return i.splice(t),r;t++}return e}},jp={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function X1(n,e,i,t,r){let o=Yp(n,e,i);return o.matched?(t=S1(e,t),Z1(t,e,i,r).pipe(F(s=>s===!0?o:w({},jp)))):R(o)}function Yp(n,e,i){if(e.path==="")return e.pathMatch==="full"&&(n.hasChildren()||i.length>0)?w({},jp):{matched:!0,consumedSegments:[],remainingSegments:i,parameters:{},positionalParamSegments:{}};let r=(e.matcher||ZR)(i,n,e);if(!r)return w({},jp);let o={};Object.entries(r.posParams??{}).forEach(([a,l])=>{o[a]=l.path});let s=r.consumed.length>0?w(w({},o),r.consumed[r.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:r.consumed,remainingSegments:i.slice(r.consumed.length),parameters:s,positionalParamSegments:r.posParams??{}}}function Lw(n,e,i,t){return i.length>0&&tk(n,i,t)?{segmentGroup:new Te(e,ek(t,new Te(i,n.children))),slicedSegments:[]}:i.length===0&&nk(n,i,t)?{segmentGroup:new Te(n.segments,J1(n,e,i,t,n.children)),slicedSegments:i}:{segmentGroup:new Te(n.segments,n.children),slicedSegments:i}}function J1(n,e,i,t,r){let o={};for(let s of t)if(Hd(n,i,s)&&!r[Xn(s)]){let a=new Te([],{});o[Xn(s)]=a}return w(w({},r),o)}function ek(n,e){let i={};i[he]=e;for(let t of n)if(t.path===""&&Xn(t)!==he){let r=new Te([],{});i[Xn(t)]=r}return i}function tk(n,e,i){return i.some(t=>Hd(n,e,t)&&Xn(t)!==he)}function nk(n,e,i){return i.some(t=>Hd(n,e,t))}function Hd(n,e,i){return(n.hasChildren()||e.length>0)&&i.pathMatch==="full"?!1:i.path===""}function ik(n,e,i,t){return Xn(n)!==t&&(t===he||!Hd(e,i,n))?!1:n.path==="**"?!0:Yp(e,n,i).matched}function rk(n,e,i){return e.length===0&&!n.children[i]}var Vp=class{};function ok(n,e,i,t,r,o,s="emptyOnly"){return new Bp(n,e,i,t,r,s,o).recognize()}var sk=31,Bp=class{constructor(e,i,t,r,o,s,a){this.injector=e,this.configLoader=i,this.rootComponentType=t,this.config=r,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.applyRedirects=new Lp(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(e){return new S(4002,!1)}recognize(){let e=Lw(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(e).pipe(F(i=>{let t=new Ta([],Object.freeze({}),Object.freeze(w({},this.urlTree.queryParams)),this.urlTree.fragment,{},he,this.rootComponentType,null,{}),r=new qt(t,i),o=new jd("",r),s=m1(t,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),this.inheritParamsAndData(o._root,null),{state:o,tree:s}}))}match(e){return this.processSegmentGroup(this.injector,this.config,e,he).pipe(Nn(t=>{if(t instanceof Bd)return this.urlTree=t.urlTree,this.match(t.urlTree.root);throw t instanceof Oa?this.noMatchError(t):t}))}inheritParamsAndData(e,i){let t=e.value,r=Up(t,i,this.paramsInheritanceStrategy);t.params=Object.freeze(r.params),t.data=Object.freeze(r.data),e.children.forEach(o=>this.inheritParamsAndData(o,t))}processSegmentGroup(e,i,t,r){return t.segments.length===0&&t.hasChildren()?this.processChildren(e,i,t):this.processSegment(e,i,t,t.segments,r,!0).pipe(F(o=>o instanceof qt?[o]:[]))}processChildren(e,i,t){let r=[];for(let o of Object.keys(t.children))o==="primary"?r.unshift(o):r.push(o);return ke(r).pipe(Ai(o=>{let s=t.children[o],a=M1(i,o);return this.processSegmentGroup(e,a,s,o)}),Of((o,s)=>(o.push(...s),o)),Oi(null),Tf(),We(o=>{if(o===null)return Lo(t);let s=lx(o);return ak(s),R(s)}))}processSegment(e,i,t,r,o,s){return ke(i).pipe(Ai(a=>this.processSegmentAgainstRoute(a._injector??e,i,a,t,r,o,s).pipe(Nn(l=>{if(l instanceof Oa)return R(null);throw l}))),jn(a=>!!a),Nn(a=>{if(sx(a))return rk(t,r,o)?R(new Vp):Lo(t);throw a}))}processSegmentAgainstRoute(e,i,t,r,o,s,a){return ik(t,r,o,s)?t.redirectTo===void 0?this.matchSegmentAgainstRoute(e,r,t,o,s):this.allowRedirects&&a?this.expandSegmentAgainstRouteUsingRedirect(e,r,i,t,o,s):Lo(r):Lo(r)}expandSegmentAgainstRouteUsingRedirect(e,i,t,r,o,s){let{matched:a,consumedSegments:l,positionalParamSegments:c,remainingSegments:d}=r.path==="**"?jw(o):Yp(i,r,o);if(!a)return Lo(i);r.redirectTo.startsWith("/")&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>sk&&(this.allowRedirects=!1));let u=this.applyRedirects.applyRedirectCommands(l,r.redirectTo,c);return this.applyRedirects.lineralizeSegments(r,u).pipe(We(h=>this.processSegment(e,t,i,h.concat(d),s,!1)))}matchSegmentAgainstRoute(e,i,t,r,o){let s;return t.path==="**"?(s=R(jw(r)),i.children={}):s=X1(i,t,r,e,this.urlSerializer),s.pipe(Fe(a=>a.matched?(e=t._injector??e,this.getChildConfig(e,t,r).pipe(Fe(({routes:l})=>{let c=t._loadedInjector??e,{consumedSegments:d,remainingSegments:u,parameters:h}=a,m=new Ta(d,h,Object.freeze(w({},this.urlTree.queryParams)),this.urlTree.fragment,ck(t),Xn(t),t.component??t._loadedComponent??null,t,dk(t)),{segmentGroup:g,slicedSegments:v}=Lw(i,d,u,l);if(v.length===0&&g.hasChildren())return this.processChildren(c,l,g).pipe(F(I=>I===null?null:new qt(m,I)));if(l.length===0&&v.length===0)return R(new qt(m,[]));let E=Xn(t)===o;return this.processSegment(c,l,g,v,E?he:o,!0).pipe(F(I=>new qt(m,I instanceof qt?[I]:[])))}))):Lo(i)))}getChildConfig(e,i,t){return i.children?R({routes:i.children,injector:e}):i.loadChildren?i._loadedRoutes!==void 0?R({routes:i._loadedRoutes,injector:i._loadedInjector}):Y1(e,i,t,this.urlSerializer).pipe(We(r=>r?this.configLoader.loadChildren(e,i).pipe(Ee(o=>{i._loadedRoutes=o.routes,i._loadedInjector=o.injector})):K1(i))):R({routes:[],injector:e})}};function ak(n){n.sort((e,i)=>e.value.outlet===he?-1:i.value.outlet===he?1:e.value.outlet.localeCompare(i.value.outlet))}function lk(n){let e=n.value.routeConfig;return e&&e.path===""}function lx(n){let e=[],i=new Set;for(let t of n){if(!lk(t)){e.push(t);continue}let r=e.find(o=>t.value.routeConfig===o.value.routeConfig);r!==void 0?(r.children.push(...t.children),i.add(r)):e.push(t)}for(let t of i){let r=lx(t.children);e.push(new qt(t.value,r))}return e.filter(t=>!i.has(t))}function ck(n){return n.data||{}}function dk(n){return n.resolve||{}}function jw(n){return{matched:!0,parameters:n.length>0?Bw(n).parameters:{},consumedSegments:n,remainingSegments:[],positionalParamSegments:{}}}function uk(n,e,i,t,r,o){return We(s=>ok(n,e,i,t,s.extractedUrl,r,o).pipe(F(({state:a,tree:l})=>ae(w({},s),{targetSnapshot:a,urlAfterRedirects:l}))))}function fk(n,e){return We(i=>{let{targetSnapshot:t,guards:{canActivateChecks:r}}=i;if(!r.length)return R(i);let o=r.map(c=>c.route),s=new Set(o),a=cx(o[0].parent).slice(1),l=0;return ke(a).pipe(Ai(c=>s.has(c)?hk(c,t,n,e):(c.data=Up(c,c.parent,n).resolve,R(void 0))),Ee(()=>l++),fo(1),We(c=>l===a.length?R(i):yt))})}function cx(n){let e=n.children.map(i=>cx(i)).flat();return[n,...e]}function hk(n,e,i,t){let r=n.routeConfig,o=n._resolve;return r?.title!==void 0&&!tx(r)&&(o[Ra]=r.title),mk(o,n,e,t).pipe(F(s=>(n._resolvedData=s,n.data=Up(n,n.parent,i).resolve,null)))}function mk(n,e,i,t){let r=_p(n);if(r.length===0)return R({});let o={};return ke(r).pipe(We(s=>pk(n[s],e,i,t).pipe(jn(),Ee(a=>{o[s]=a}))),fo(1),Ps(o),Nn(s=>sx(s)?yt:Pn(s)))}function pk(n,e,i,t){let r=ka(e)??t,o=Wo(n,r),s=o.resolve?o.resolve(e,i):r.runInContext(()=>o(e,i));return Wi(s)}function pp(n){return Fe(e=>{let i=n(e);return i?ke(i).pipe(F(()=>e)):R(e)})}var dx=(()=>{let e=class e{buildTitle(t){let r,o=t.root;for(;o!==void 0;)r=this.getResolvedTitleForRoute(o)??r,o=o.children.find(s=>s.outlet===he);return r}getResolvedTitleForRoute(t){return t.data[Ra]}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:()=>(()=>C(gk))(),providedIn:"root"});let n=e;return n})(),gk=(()=>{let e=class e extends dx{constructor(t){super(),this.title=t}updateTitle(t){let r=this.buildTitle(t);r!==void 0&&this.title.setTitle(r)}};e.\u0275fac=function(r){return new(r||e)(p(dp))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),Zp=new y("",{providedIn:"root",factory:()=>({})}),Qp=new y("ROUTES"),_k=(()=>{let e=class e{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=C(Hm)}loadComponent(t){if(this.componentLoaders.get(t))return this.componentLoaders.get(t);if(t._loadedComponent)return R(t._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(t);let r=Wi(t.loadComponent()).pipe(F(ux),Ee(s=>{this.onLoadEndListener&&this.onLoadEndListener(t),t._loadedComponent=s}),Ln(()=>{this.componentLoaders.delete(t)})),o=new kn(r,()=>new T).pipe(io());return this.componentLoaders.set(t,o),o}loadChildren(t,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return R({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let s=bk(r,this.compiler,t,this.onLoadEndListener).pipe(Ln(()=>{this.childrenLoaders.delete(r)})),a=new kn(s,()=>new T).pipe(io());return this.childrenLoaders.set(r,a),a}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function bk(n,e,i,t){return Wi(n.loadChildren()).pipe(F(ux),We(r=>r instanceof Qs||Array.isArray(r)?R(r):ke(e.compileModuleAsync(r))),F(r=>{t&&t(n);let o,s,a=!1;return Array.isArray(r)?(s=r,a=!0):(o=r.create(i).injector,s=o.get(Qp,[],{optional:!0,self:!0}).flat()),{routes:s.map(qp),injector:o}}))}function vk(n){return n&&typeof n=="object"&&"default"in n}function ux(n){return vk(n)?n.default:n}var Kp=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:()=>(()=>C(yk))(),providedIn:"root"});let n=e;return n})(),yk=(()=>{let e=class e{shouldProcessUrl(t){return!0}extract(t){return t}merge(t,r){return t}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),wk=new y("");var xk=(()=>{let e=class e{get hasRequestedNavigation(){return this.navigationId!==0}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new T,this.transitionAbortSubject=new T,this.configLoader=C(_k),this.environmentInjector=C(Nt),this.urlSerializer=C(Hp),this.rootContexts=C(zd),this.location=C(vi),this.inputBindingEnabled=C(Gp,{optional:!0})!==null,this.titleStrategy=C(dx),this.options=C(Zp,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=C(Kp),this.createViewTransition=C(wk,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>R(void 0),this.rootComponentType=null;let t=o=>this.events.next(new Ep(o)),r=o=>this.events.next(new Ip(o));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=t}complete(){this.transitions?.complete()}handleNavigationRequest(t){let r=++this.navigationId;this.transitions?.next(ae(w(w({},this.transitions.value),t),{id:r}))}setupNavigations(t,r,o){return this.transitions=new tt({id:0,currentUrlTree:r,currentRawUrl:r,extractedUrl:this.urlHandlingStrategy.extract(r),urlAfterRedirects:this.urlHandlingStrategy.extract(r),rawUrl:r,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:xa,restoredState:null,currentSnapshot:o.snapshot,targetSnapshot:null,currentRouterState:o,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(le(s=>s.id!==0),F(s=>ae(w({},s),{extractedUrl:this.urlHandlingStrategy.extract(s.rawUrl)})),Fe(s=>{this.currentTransition=s;let a=!1,l=!1;return R(s).pipe(Ee(c=>{this.currentNavigation={id:c.id,initialUrl:c.rawUrl,extractedUrl:c.extractedUrl,trigger:c.source,extras:c.extras,previousNavigation:this.lastSuccessfulNavigation?ae(w({},this.lastSuccessfulNavigation),{previousNavigation:null}):null}}),Fe(c=>{let d=!t.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),u=c.extras.onSameUrlNavigation??t.onSameUrlNavigation;if(!d&&u!=="reload"){let h="";return this.events.next(new Pr(c.id,this.urlSerializer.serialize(c.rawUrl),h,0)),c.resolve(null),yt}if(this.urlHandlingStrategy.shouldProcessUrl(c.rawUrl))return R(c).pipe(Fe(h=>{let m=this.transitions?.getValue();return this.events.next(new Ea(h.id,this.urlSerializer.serialize(h.extractedUrl),h.source,h.restoredState)),m!==this.transitions?.getValue()?yt:Promise.resolve(h)}),uk(this.environmentInjector,this.configLoader,this.rootComponentType,t.config,this.urlSerializer,this.paramsInheritanceStrategy),Ee(h=>{s.targetSnapshot=h.targetSnapshot,s.urlAfterRedirects=h.urlAfterRedirects,this.currentNavigation=ae(w({},this.currentNavigation),{finalUrl:h.urlAfterRedirects});let m=new Pd(h.id,this.urlSerializer.serialize(h.extractedUrl),this.urlSerializer.serialize(h.urlAfterRedirects),h.targetSnapshot);this.events.next(m)}));if(d&&this.urlHandlingStrategy.shouldProcessUrl(c.currentRawUrl)){let{id:h,extractedUrl:m,source:g,restoredState:v,extras:E}=c,I=new Ea(h,this.urlSerializer.serialize(m),g,v);this.events.next(I);let Q=Jw(m,this.rootComponentType).snapshot;return this.currentTransition=s=ae(w({},c),{targetSnapshot:Q,urlAfterRedirects:m,extras:ae(w({},E),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.finalUrl=m,R(s)}else{let h="";return this.events.next(new Pr(c.id,this.urlSerializer.serialize(c.extractedUrl),h,1)),c.resolve(null),yt}}),Ee(c=>{let d=new wp(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(d)}),F(c=>(this.currentTransition=s=ae(w({},c),{guards:A1(c.targetSnapshot,c.currentSnapshot,this.rootContexts)}),s)),B1(this.environmentInjector,c=>this.events.next(c)),Ee(c=>{if(s.guardsResult=c.guardsResult,Ho(c.guardsResult))throw ix(this.urlSerializer,c.guardsResult);let d=new xp(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot,!!c.guardsResult);this.events.next(d)}),le(c=>c.guardsResult?!0:(this.cancelNavigationTransition(c,"",3),!1)),pp(c=>{if(c.guards.canActivateChecks.length)return R(c).pipe(Ee(d=>{let u=new Cp(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot);this.events.next(u)}),Fe(d=>{let u=!1;return R(d).pipe(fk(this.paramsInheritanceStrategy,this.environmentInjector),Ee({next:()=>u=!0,complete:()=>{u||this.cancelNavigationTransition(d,"",2)}}))}),Ee(d=>{let u=new Dp(d.id,this.urlSerializer.serialize(d.extractedUrl),this.urlSerializer.serialize(d.urlAfterRedirects),d.targetSnapshot);this.events.next(u)}))}),pp(c=>{let d=u=>{let h=[];u.routeConfig?.loadComponent&&!u.routeConfig._loadedComponent&&h.push(this.configLoader.loadComponent(u.routeConfig).pipe(Ee(m=>{u.component=m}),F(()=>{})));for(let m of u.children)h.push(...d(m));return h};return co(d(c.targetSnapshot.root)).pipe(Oi(),ie(1))}),pp(()=>this.afterPreactivation()),Fe(()=>{let{currentSnapshot:c,targetSnapshot:d}=s,u=this.createViewTransition?.(this.environmentInjector,c.root,d.root);return u?ke(u).pipe(F(()=>s)):R(s)}),F(c=>{let d=x1(t.routeReuseStrategy,c.targetSnapshot,c.currentRouterState);return this.currentTransition=s=ae(w({},c),{targetRouterState:d}),this.currentNavigation.targetRouterState=d,s}),Ee(()=>{this.events.next(new Sa)}),T1(this.rootContexts,t.routeReuseStrategy,c=>this.events.next(c),this.inputBindingEnabled),ie(1),Ee({next:c=>{a=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new yi(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects))),this.titleStrategy?.updateTitle(c.targetRouterState.snapshot),c.resolve(!0)},complete:()=>{a=!0}}),ne(this.transitionAbortSubject.pipe(Ee(c=>{throw c}))),Ln(()=>{if(!a&&!l){let c="";this.cancelNavigationTransition(s,c,1)}this.currentNavigation?.id===s.id&&(this.currentNavigation=null)}),Nn(c=>{if(l=!0,ox(c))this.events.next(new $i(s.id,this.urlSerializer.serialize(s.extractedUrl),c.message,c.cancellationCode)),E1(c)?this.events.next(new Ma(c.url)):s.resolve(!1);else{this.events.next(new Ia(s.id,this.urlSerializer.serialize(s.extractedUrl),c,s.targetSnapshot??void 0));try{s.resolve(t.errorHandler(c))}catch(d){s.reject(d)}}return yt}))}))}cancelNavigationTransition(t,r,o){let s=new $i(t.id,this.urlSerializer.serialize(t.extractedUrl),r,o);this.events.next(s),t.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function Ck(n){return n!==xa}var Dk=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:()=>(()=>C(Ek))(),providedIn:"root"});let n=e;return n})(),zp=class{shouldDetach(e){return!1}store(e,i){}shouldAttach(e){return!1}retrieve(e){return null}shouldReuseRoute(e,i){return e.routeConfig===i.routeConfig}},Ek=(()=>{let e=class e extends zp{};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),fx=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:()=>(()=>C(Ik))(),providedIn:"root"});let n=e;return n})(),Ik=(()=>{let e=class e extends fx{constructor(){super(...arguments),this.location=C(vi),this.urlSerializer=C(Hp),this.options=C(Zp,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=C(Kp),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new Ui,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=Jw(this.currentUrlTree,null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(t){return this.location.subscribe(r=>{r.type==="popstate"&&t(r.url,r.state)})}handleRouterEvent(t,r){if(t instanceof Ea)this.stateMemento=this.createStateMemento();else if(t instanceof Pr)this.rawUrlTree=r.initialUrl;else if(t instanceof Pd){if(this.urlUpdateStrategy==="eager"&&!r.extras.skipLocationChange){let o=this.urlHandlingStrategy.merge(r.finalUrl,r.initialUrl);this.setBrowserUrl(o,r)}}else t instanceof Sa?(this.currentUrlTree=r.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(r.finalUrl,r.initialUrl),this.routerState=r.targetRouterState,this.urlUpdateStrategy==="deferred"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,r))):t instanceof $i&&(t.code===3||t.code===2)?this.restoreHistory(r):t instanceof Ia?this.restoreHistory(r,!0):t instanceof yi&&(this.lastSuccessfulId=t.id,this.currentPageId=this.browserPageId)}setBrowserUrl(t,r){let o=this.urlSerializer.serialize(t);if(this.location.isCurrentPathEqualTo(o)||r.extras.replaceUrl){let s=this.browserPageId,a=w(w({},r.extras.state),this.generateNgRouterState(r.id,s));this.location.replaceState(o,"",a)}else{let s=w(w({},r.extras.state),this.generateNgRouterState(r.id,this.browserPageId+1));this.location.go(o,"",s)}}restoreHistory(t,r=!1){if(this.canceledNavigationResolution==="computed"){let o=this.browserPageId,s=this.currentPageId-o;s!==0?this.location.historyGo(s):this.currentUrlTree===t.finalUrl&&s===0&&(this.resetState(t),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetState(t),this.resetUrlToCurrentUrlTree())}resetState(t){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(t,r){return this.canceledNavigationResolution==="computed"?{navigationId:t,\u0275routerPageId:r}:{navigationId:t}}};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),ya=function(n){return n[n.COMPLETE=0]="COMPLETE",n[n.FAILED=1]="FAILED",n[n.REDIRECTING=2]="REDIRECTING",n}(ya||{});function Sk(n,e){n.events.pipe(le(i=>i instanceof yi||i instanceof $i||i instanceof Ia||i instanceof Pr),F(i=>i instanceof yi||i instanceof Pr?ya.COMPLETE:(i instanceof $i?i.code===0||i.code===1:!1)?ya.REDIRECTING:ya.FAILED),le(i=>i!==ya.REDIRECTING),ie(1)).subscribe(()=>{e()})}function Mk(n){throw n}var Tk={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},Ak={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},Gi=(()=>{let e=class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.isNgZoneEnabled=!1,this.console=C(rd),this.stateManager=C(fx),this.options=C(Zp,{optional:!0})||{},this.pendingTasks=C(Ro),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=C(xk),this.urlSerializer=C(Hp),this.location=C(vi),this.urlHandlingStrategy=C(Kp),this._events=new T,this.errorHandler=this.options.errorHandler||Mk,this.navigated=!1,this.routeReuseStrategy=C(Dk),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=C(Qp,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!C(Gp,{optional:!0}),this.eventsSubscription=new ve,this.isNgZoneEnabled=C(A)instanceof A&&A.isInAngularZone(),this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:t=>{this.console.warn(t)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){let t=this.navigationTransitions.events.subscribe(r=>{try{let o=this.navigationTransitions.currentTransition,s=this.navigationTransitions.currentNavigation;if(o!==null&&s!==null){if(this.stateManager.handleRouterEvent(r,s),r instanceof $i&&r.code!==0&&r.code!==1)this.navigated=!0;else if(r instanceof yi)this.navigated=!0;else if(r instanceof Ma){let a=this.urlHandlingStrategy.merge(r.url,o.currentRawUrl),l={skipLocationChange:o.extras.skipLocationChange,replaceUrl:this.urlUpdateStrategy==="eager"||Ck(o.source)};this.scheduleNavigation(a,xa,null,l,{resolve:o.resolve,reject:o.reject,promise:o.promise})}}Rk(r)&&this._events.next(r)}catch(o){this.navigationTransitions.transitionAbortSubject.next(o)}});this.eventsSubscription.add(t)}resetRootComponentType(t){this.routerState.root.component=t,this.navigationTransitions.rootComponentType=t}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),xa,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription||(this.nonRouterCurrentEntryChangeSubscription=this.stateManager.registerNonRouterCurrentEntryChangeListener((t,r)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(t,"popstate",r)},0)}))}navigateToSyncWithBrowser(t,r,o){let s={replaceUrl:!0},a=o?.navigationId?o:null;if(o){let c=w({},o);delete c.navigationId,delete c.\u0275routerPageId,Object.keys(c).length!==0&&(s.state=c)}let l=this.parseUrl(t);this.scheduleNavigation(l,r,a,s)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(t){this.config=t.map(qp),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(t,r={}){let{relativeTo:o,queryParams:s,fragment:a,queryParamsHandling:l,preserveFragment:c}=r,d=c?this.currentUrlTree.fragment:a,u=null;switch(l){case"merge":u=w(w({},this.currentUrlTree.queryParams),s);break;case"preserve":u=this.currentUrlTree.queryParams;break;default:u=s||null}u!==null&&(u=this.removeEmptyProps(u));let h;try{let m=o?o.snapshot:this.routerState.snapshot.root;h=Zw(m)}catch{(typeof t[0]!="string"||!t[0].startsWith("/"))&&(t=[]),h=this.currentUrlTree.root}return Qw(h,t,u,d??null)}navigateByUrl(t,r={skipLocationChange:!1}){let o=Ho(t)?t:this.parseUrl(t),s=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(s,xa,null,r)}navigate(t,r={skipLocationChange:!1}){return Ok(t),this.navigateByUrl(this.createUrlTree(t,r),r)}serializeUrl(t){return this.urlSerializer.serialize(t)}parseUrl(t){try{return this.urlSerializer.parse(t)}catch{return this.urlSerializer.parse("/")}}isActive(t,r){let o;if(r===!0?o=w({},Tk):r===!1?o=w({},Ak):o=r,Ho(t))return kw(this.currentUrlTree,t,o);let s=this.parseUrl(t);return kw(this.currentUrlTree,s,o)}removeEmptyProps(t){return Object.keys(t).reduce((r,o)=>{let s=t[o];return s!=null&&(r[o]=s),r},{})}scheduleNavigation(t,r,o,s,a){if(this.disposed)return Promise.resolve(!1);let l,c,d;a?(l=a.resolve,c=a.reject,d=a.promise):d=new Promise((h,m)=>{l=h,c=m});let u=this.pendingTasks.add();return Sk(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(u))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:t,extras:s,resolve:l,reject:c,promise:d,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),d.catch(h=>Promise.reject(h))}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function Ok(n){for(let e=0;ei.\u0275providers)])}function Fk(n){return n.routerState.root}function Pk(){let n=C(Ne);return e=>{let i=n.get(Wt);if(e!==i.components[0])return;let t=n.get(Gi),r=n.get(Nk);n.get(Lk)===1&&t.initialNavigation(),n.get(jk,null,ye.Optional)?.setUpPreloading(),n.get(kk,null,ye.Optional)?.init(),t.resetRootComponentType(i.componentTypes[0]),r.closed||(r.next(),r.complete(),r.unsubscribe())}}var Nk=new y("",{factory:()=>new T}),Lk=new y("",{providedIn:"root",factory:()=>1});var jk=new y("");var eg;try{eg=typeof Intl<"u"&&Intl.v8BreakIterator}catch{eg=!1}var be=(()=>{let e=class e{constructor(t){this._platformId=t,this.isBrowser=this._platformId?ua(this._platformId):typeof document=="object"&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!!(window.chrome||eg)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}};e.\u0275fac=function(r){return new(r||e)(p($t))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var Go,mx=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function tg(){if(Go)return Go;if(typeof document!="object"||!document)return Go=new Set(mx),Go;let n=document.createElement("input");return Go=new Set(mx.filter(e=>(n.setAttribute("type",e),n.type===e))),Go}var Pa;function Vk(){if(Pa==null&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>Pa=!0}))}finally{Pa=Pa||!1}return Pa}function an(n){return Vk()?n:!!n.capture}var Nr;function px(){if(Nr==null){if(typeof document!="object"||!document||typeof Element!="function"||!Element)return Nr=!1,Nr;if("scrollBehavior"in document.documentElement.style)Nr=!0;else{let n=Element.prototype.scrollTo;n?Nr=!/\{\s*\[native code\]\s*\}/.test(n.toString()):Nr=!1}}return Nr}var Jp;function Bk(){if(Jp==null){let n=typeof document<"u"?document.head:null;Jp=!!(n&&(n.createShadowRoot||n.attachShadow))}return Jp}function gx(n){if(Bk()){let e=n.getRootNode?n.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&e instanceof ShadowRoot)return e}return null}function Na(){let n=typeof document<"u"&&document?document.activeElement:null;for(;n&&n.shadowRoot;){let e=n.shadowRoot.activeElement;if(e===n)break;n=e}return n}function En(n){return n.composedPath?n.composedPath()[0]:n.target}function La(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}function bt(n,...e){return e.length?e.some(i=>n[i]):n.altKey||n.shiftKey||n.ctrlKey||n.metaKey}function ln(n){return n!=null&&`${n}`!="false"}function wi(n,e=0){return zk(n)?Number(n):e}function zk(n){return!isNaN(parseFloat(n))&&!isNaN(Number(n))}function qo(n){return Array.isArray(n)?n:[n]}function it(n){return n==null?"":typeof n=="string"?n:`${n}px`}function cn(n){return n instanceof k?n.nativeElement:n}var Hk=(()=>{let e=class e{create(t){return typeof MutationObserver>"u"?null:new MutationObserver(t)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var _x=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({providers:[Hk]});let n=e;return n})();var bx=new Set,Lr,Uk=(()=>{let e=class e{constructor(t,r){this._platform=t,this._nonce=r,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):Wk}matchMedia(t){return(this._platform.WEBKIT||this._platform.BLINK)&&$k(t,this._nonce),this._matchMedia(t)}};e.\u0275fac=function(r){return new(r||e)(p(be),p(ra,8))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function $k(n,e){if(!bx.has(n))try{Lr||(Lr=document.createElement("style"),e&&(Lr.nonce=e),Lr.setAttribute("type","text/css"),document.head.appendChild(Lr)),Lr.sheet&&(Lr.sheet.insertRule(`@media ${n} {body{ }}`,0),bx.add(n))}catch(i){console.error(i)}}function Wk(n){return{matches:n==="all"||n==="",media:n,addListener:()=>{},removeListener:()=>{}}}var Ud=(()=>{let e=class e{constructor(t,r){this._mediaMatcher=t,this._zone=r,this._queries=new Map,this._destroySubject=new T}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(t){return vx(qo(t)).some(o=>this._registerQuery(o).mql.matches)}observe(t){let o=vx(qo(t)).map(a=>this._registerQuery(a).observable),s=co(o);return s=Jt(s.pipe(ie(1)),s.pipe(Ns(1),Fs(0))),s.pipe(F(a=>{let l={matches:!1,breakpoints:{}};return a.forEach(({matches:c,query:d})=>{l.matches=l.matches||c,l.breakpoints[d]=c}),l}))}_registerQuery(t){if(this._queries.has(t))return this._queries.get(t);let r=this._mediaMatcher.matchMedia(t),s={observable:new W(a=>{let l=c=>this._zone.run(()=>a.next(c));return r.addListener(l),()=>{r.removeListener(l)}}).pipe(pt(r),F(({matches:a})=>({query:t,matches:a})),ne(this._destroySubject)),mql:r};return this._queries.set(t,s),s}};e.\u0275fac=function(r){return new(r||e)(p(Uk),p(A))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function vx(n){return n.map(e=>e.split(",")).reduce((e,i)=>e.concat(i)).map(e=>e.trim())}var yx={XSmall:"(max-width: 599.98px)",Small:"(min-width: 600px) and (max-width: 959.98px)",Medium:"(min-width: 960px) and (max-width: 1279.98px)",Large:"(min-width: 1280px) and (max-width: 1919.98px)",XLarge:"(min-width: 1920px)",Handset:"(max-width: 599.98px) and (orientation: portrait), (max-width: 959.98px) and (orientation: landscape)",Tablet:"(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), (min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)",Web:"(min-width: 840px) and (orientation: portrait), (min-width: 1280px) and (orientation: landscape)",HandsetPortrait:"(max-width: 599.98px) and (orientation: portrait)",TabletPortrait:"(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)",WebPortrait:"(min-width: 840px) and (orientation: portrait)",HandsetLandscape:"(max-width: 959.98px) and (orientation: landscape)",TabletLandscape:"(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)",WebLandscape:"(min-width: 1280px) and (orientation: landscape)"};var Ex=" ";function ag(n,e,i){let t=qd(n,e);i=i.trim(),!t.some(r=>r.trim()===i)&&(t.push(i),n.setAttribute(e,t.join(Ex)))}function Kd(n,e,i){let t=qd(n,e);i=i.trim();let r=t.filter(o=>o!==i);r.length?n.setAttribute(e,r.join(Ex)):n.removeAttribute(e)}function qd(n,e){return n.getAttribute(e)?.match(/\S+/g)??[]}var Ix="cdk-describedby-message",$d="cdk-describedby-host",rg=0,Sx=(()=>{let e=class e{constructor(t,r){this._platform=r,this._messageRegistry=new Map,this._messagesContainer=null,this._id=`${rg++}`,this._document=t,this._id=C(ia)+"-"+rg++}describe(t,r,o){if(!this._canBeDescribed(t,r))return;let s=ng(r,o);typeof r!="string"?(wx(r,this._id),this._messageRegistry.set(s,{messageElement:r,referenceCount:0})):this._messageRegistry.has(s)||this._createMessageElement(r,o),this._isElementDescribedByMessage(t,s)||this._addMessageReference(t,s)}removeDescription(t,r,o){if(!r||!this._isElementNode(t))return;let s=ng(r,o);if(this._isElementDescribedByMessage(t,s)&&this._removeMessageReference(t,s),typeof r=="string"){let a=this._messageRegistry.get(s);a&&a.referenceCount===0&&this._deleteMessageElement(s)}this._messagesContainer?.childNodes.length===0&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){let t=this._document.querySelectorAll(`[${$d}="${this._id}"]`);for(let r=0;ro.indexOf(Ix)!=0);t.setAttribute("aria-describedby",r.join(" "))}_addMessageReference(t,r){let o=this._messageRegistry.get(r);ag(t,"aria-describedby",o.messageElement.id),t.setAttribute($d,this._id),o.referenceCount++}_removeMessageReference(t,r){let o=this._messageRegistry.get(r);o.referenceCount--,Kd(t,"aria-describedby",o.messageElement.id),t.removeAttribute($d)}_isElementDescribedByMessage(t,r){let o=qd(t,"aria-describedby"),s=this._messageRegistry.get(r),a=s&&s.messageElement.id;return!!a&&o.indexOf(a)!=-1}_canBeDescribed(t,r){if(!this._isElementNode(t))return!1;if(r&&typeof r=="object")return!0;let o=r==null?"":`${r}`.trim(),s=t.getAttribute("aria-label");return o?!s||s.trim()!==o:!1}_isElementNode(t){return t.nodeType===this._document.ELEMENT_NODE}};e.\u0275fac=function(r){return new(r||e)(p(N),p(be))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function ng(n,e){return typeof n=="string"?`${e||""}/${n}`:n}function wx(n,e){n.id||(n.id=`${Ix}-${e}-${rg++}`)}var Yd=class{constructor(e){this._items=e,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new T,this._typeaheadSubscription=ve.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=i=>i.disabled,this._pressedLetters=[],this.tabOut=new T,this.change=new T,e instanceof ji&&(this._itemChangesSubscription=e.changes.subscribe(i=>{if(this._activeItem){let r=i.toArray().indexOf(this._activeItem);r>-1&&r!==this._activeItemIndex&&(this._activeItemIndex=r)}}))}skipPredicate(e){return this._skipPredicateFn=e,this}withWrap(e=!0){return this._wrap=e,this}withVerticalOrientation(e=!0){return this._vertical=e,this}withHorizontalOrientation(e){return this._horizontal=e,this}withAllowedModifierKeys(e){return this._allowedModifierKeys=e,this}withTypeAhead(e=200){return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe(Ee(i=>this._pressedLetters.push(i)),Fs(e),le(()=>this._pressedLetters.length>0),F(()=>this._pressedLetters.join(""))).subscribe(i=>{let t=this._getItemsArray();for(let r=1;r!e[o]||this._allowedModifierKeys.indexOf(o)>-1);switch(i){case 9:this.tabOut.next();return;case 40:if(this._vertical&&r){this.setNextItemActive();break}else return;case 38:if(this._vertical&&r){this.setPreviousItemActive();break}else return;case 39:if(this._horizontal&&r){this._horizontal==="rtl"?this.setPreviousItemActive():this.setNextItemActive();break}else return;case 37:if(this._horizontal&&r){this._horizontal==="rtl"?this.setNextItemActive():this.setPreviousItemActive();break}else return;case 36:if(this._homeAndEnd&&r){this.setFirstItemActive();break}else return;case 35:if(this._homeAndEnd&&r){this.setLastItemActive();break}else return;case 33:if(this._pageUpAndDown.enabled&&r){let o=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(o>0?o:0,1);break}else return;case 34:if(this._pageUpAndDown.enabled&&r){let o=this._activeItemIndex+this._pageUpAndDown.delta,s=this._getItemsArray().length;this._setActiveItemByIndex(o=65&&i<=90||i>=48&&i<=57)&&this._letterKeyStream.next(String.fromCharCode(i)));return}this._pressedLetters=[],e.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._items.length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(e){let i=this._getItemsArray(),t=typeof e=="number"?e:i.indexOf(e),r=i[t];this._activeItem=r??null,this._activeItemIndex=t}destroy(){this._typeaheadSubscription.unsubscribe(),this._itemChangesSubscription?.unsubscribe(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(e){this._wrap?this._setActiveInWrapMode(e):this._setActiveInDefaultMode(e)}_setActiveInWrapMode(e){let i=this._getItemsArray();for(let t=1;t<=i.length;t++){let r=(this._activeItemIndex+e*t+i.length)%i.length,o=i[r];if(!this._skipPredicateFn(o)){this.setActiveItem(r);return}}}_setActiveInDefaultMode(e){this._setActiveItemByIndex(this._activeItemIndex+e,e)}_setActiveItemByIndex(e,i){let t=this._getItemsArray();if(t[e]){for(;this._skipPredicateFn(t[e]);)if(e+=i,!t[e])return;this.setActiveItem(e)}}_getItemsArray(){return this._items instanceof ji?this._items.toArray():this._items}},Zd=class extends Yd{setActiveItem(e){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(e),this.activeItem&&this.activeItem.setActiveStyles()}},Qd=class extends Yd{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(e){return this._origin=e,this}setActiveItem(e){super.setActiveItem(e),this.activeItem&&this.activeItem.focus(this._origin)}};var ja=(()=>{let e=class e{constructor(t){this._platform=t}isDisabled(t){return t.hasAttribute("disabled")}isVisible(t){return aF(t)&&getComputedStyle(t).visibility==="visible"}isTabbable(t){if(!this._platform.isBrowser)return!1;let r=sF(pF(t));if(r&&(xx(r)===-1||!this.isVisible(r)))return!1;let o=t.nodeName.toLowerCase(),s=xx(t);return t.hasAttribute("contenteditable")?s!==-1:o==="iframe"||o==="object"||this._platform.WEBKIT&&this._platform.IOS&&!hF(t)?!1:o==="audio"?t.hasAttribute("controls")?s!==-1:!1:o==="video"?s===-1?!1:s!==null?!0:this._platform.FIREFOX||t.hasAttribute("controls"):t.tabIndex>=0}isFocusable(t,r){return mF(t)&&!this.isDisabled(t)&&(r?.ignoreVisibility||this.isVisible(t))}};e.\u0275fac=function(r){return new(r||e)(p(be))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function sF(n){try{return n.frameElement}catch{return null}}function aF(n){return!!(n.offsetWidth||n.offsetHeight||typeof n.getClientRects=="function"&&n.getClientRects().length)}function lF(n){let e=n.nodeName.toLowerCase();return e==="input"||e==="select"||e==="button"||e==="textarea"}function cF(n){return uF(n)&&n.type=="hidden"}function dF(n){return fF(n)&&n.hasAttribute("href")}function uF(n){return n.nodeName.toLowerCase()=="input"}function fF(n){return n.nodeName.toLowerCase()=="a"}function Mx(n){if(!n.hasAttribute("tabindex")||n.tabIndex===void 0)return!1;let e=n.getAttribute("tabindex");return!!(e&&!isNaN(parseInt(e,10)))}function xx(n){if(!Mx(n))return null;let e=parseInt(n.getAttribute("tabindex")||"",10);return isNaN(e)?-1:e}function hF(n){let e=n.nodeName.toLowerCase(),i=e==="input"&&n.type;return i==="text"||i==="password"||e==="select"||e==="textarea"}function mF(n){return cF(n)?!1:lF(n)||dF(n)||n.hasAttribute("contenteditable")||Mx(n)}function pF(n){return n.ownerDocument&&n.ownerDocument.defaultView||window}var og=class{get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(e,this._startAnchor),this._toggleAnchorTabIndex(e,this._endAnchor))}constructor(e,i,t,r,o=!1){this._element=e,this._checker=i,this._ngZone=t,this._document=r,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,o||this.attachAnchors()}destroy(){let e=this._startAnchor,i=this._endAnchor;e&&(e.removeEventListener("focus",this.startAnchorListener),e.remove()),i&&(i.removeEventListener("focus",this.endAnchorListener),i.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return this._hasAttached?!0:(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(e){return new Promise(i=>{this._executeOnStable(()=>i(this.focusInitialElement(e)))})}focusFirstTabbableElementWhenReady(e){return new Promise(i=>{this._executeOnStable(()=>i(this.focusFirstTabbableElement(e)))})}focusLastTabbableElementWhenReady(e){return new Promise(i=>{this._executeOnStable(()=>i(this.focusLastTabbableElement(e)))})}_getRegionBoundary(e){let i=this._element.querySelectorAll(`[cdk-focus-region-${e}], [cdkFocusRegion${e}], [cdk-focus-${e}]`);return e=="start"?i.length?i[0]:this._getFirstTabbableElement(this._element):i.length?i[i.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(e){let i=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(i){if(!this._checker.isFocusable(i)){let t=this._getFirstTabbableElement(i);return t?.focus(e),!!t}return i.focus(e),!0}return this.focusFirstTabbableElement(e)}focusFirstTabbableElement(e){let i=this._getRegionBoundary("start");return i&&i.focus(e),!!i}focusLastTabbableElement(e){let i=this._getRegionBoundary("end");return i&&i.focus(e),!!i}hasAttached(){return this._hasAttached}_getFirstTabbableElement(e){if(this._checker.isFocusable(e)&&this._checker.isTabbable(e))return e;let i=e.children;for(let t=0;t=0;t--){let r=i[t].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(i[t]):null;if(r)return r}return null}_createAnchor(){let e=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,e),e.classList.add("cdk-visually-hidden"),e.classList.add("cdk-focus-trap-anchor"),e.setAttribute("aria-hidden","true"),e}_toggleAnchorTabIndex(e,i){e?i.setAttribute("tabindex","0"):i.removeAttribute("tabindex")}toggleAnchors(e){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(e,this._startAnchor),this._toggleAnchorTabIndex(e,this._endAnchor))}_executeOnStable(e){this._ngZone.isStable?e():this._ngZone.onStable.pipe(ie(1)).subscribe(e)}},Xd=(()=>{let e=class e{constructor(t,r,o){this._checker=t,this._ngZone=r,this._document=o}create(t,r=!1){return new og(t,this._checker,this._ngZone,this._document,r)}};e.\u0275fac=function(r){return new(r||e)(p(ja),p(A),p(N))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function Va(n){return n.buttons===0||n.detail===0}function Ba(n){let e=n.touches&&n.touches[0]||n.changedTouches&&n.changedTouches[0];return!!e&&e.identifier===-1&&(e.radiusX==null||e.radiusX===1)&&(e.radiusY==null||e.radiusY===1)}var gF=new y("cdk-input-modality-detector-options"),_F={ignoreKeys:[18,17,224,91,16]},Tx=650,Yo=an({passive:!0,capture:!0}),bF=(()=>{let e=class e{get mostRecentModality(){return this._modality.value}constructor(t,r,o,s){this._platform=t,this._mostRecentTarget=null,this._modality=new tt(null),this._lastTouchMs=0,this._onKeydown=a=>{this._options?.ignoreKeys?.some(l=>l===a.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=En(a))},this._onMousedown=a=>{Date.now()-this._lastTouchMs{if(Ba(a)){this._modality.next("keyboard");return}this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=En(a)},this._options=w(w({},_F),s),this.modalityDetected=this._modality.pipe(Ns(1)),this.modalityChanged=this.modalityDetected.pipe(Ri()),t.isBrowser&&r.runOutsideAngular(()=>{o.addEventListener("keydown",this._onKeydown,Yo),o.addEventListener("mousedown",this._onMousedown,Yo),o.addEventListener("touchstart",this._onTouchstart,Yo)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,Yo),document.removeEventListener("mousedown",this._onMousedown,Yo),document.removeEventListener("touchstart",this._onTouchstart,Yo))}};e.\u0275fac=function(r){return new(r||e)(p(be),p(A),p(N),p(gF,8))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),vF=new y("liveAnnouncerElement",{providedIn:"root",factory:yF});function yF(){return null}var wF=new y("LIVE_ANNOUNCER_DEFAULT_OPTIONS"),xF=0,Jd=(()=>{let e=class e{constructor(t,r,o,s){this._ngZone=r,this._defaultOptions=s,this._document=o,this._liveElement=t||this._createLiveElement()}announce(t,...r){let o=this._defaultOptions,s,a;return r.length===1&&typeof r[0]=="number"?a=r[0]:[s,a]=r,this.clear(),clearTimeout(this._previousTimeout),s||(s=o&&o.politeness?o.politeness:"polite"),a==null&&o&&(a=o.duration),this._liveElement.setAttribute("aria-live",s),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(l=>this._currentResolve=l)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{this._liveElement.textContent=t,typeof a=="number"&&(this._previousTimeout=setTimeout(()=>this.clear(),a)),this._currentResolve(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.remove(),this._liveElement=null,this._currentResolve?.(),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){let t="cdk-live-announcer-element",r=this._document.getElementsByClassName(t),o=this._document.createElement("div");for(let s=0;s .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{let e=class e{constructor(t,r,o,s,a){this._ngZone=t,this._platform=r,this._inputModalityDetector=o,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new T,this._rootNodeFocusAndBlurListener=l=>{let c=En(l);for(let d=c;d;d=d.parentElement)l.type==="focus"?this._onFocus(l,d):this._onBlur(l,d)},this._document=s,this._detectionMode=a?.detectionMode||Gd.IMMEDIATE}monitor(t,r=!1){let o=cn(t);if(!this._platform.isBrowser||o.nodeType!==1)return R();let s=gx(o)||this._getDocument(),a=this._elementInfo.get(o);if(a)return r&&(a.checkChildren=!0),a.subject;let l={checkChildren:r,subject:new T,rootNode:s};return this._elementInfo.set(o,l),this._registerGlobalListeners(l),l.subject}stopMonitoring(t){let r=cn(t),o=this._elementInfo.get(r);o&&(o.subject.complete(),this._setClasses(r),this._elementInfo.delete(r),this._removeGlobalListeners(o))}focusVia(t,r,o){let s=cn(t),a=this._getDocument().activeElement;s===a?this._getClosestElementsInfo(s).forEach(([l,c])=>this._originChanged(l,r,c)):(this._setOrigin(r),typeof s.focus=="function"&&s.focus(o))}ngOnDestroy(){this._elementInfo.forEach((t,r)=>this.stopMonitoring(r))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(t){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(t)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:t&&this._isLastInteractionFromInputLabel(t)?"mouse":"program"}_shouldBeAttributedToTouch(t){return this._detectionMode===Gd.EVENTUAL||!!t?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(t,r){t.classList.toggle("cdk-focused",!!r),t.classList.toggle("cdk-touch-focused",r==="touch"),t.classList.toggle("cdk-keyboard-focused",r==="keyboard"),t.classList.toggle("cdk-mouse-focused",r==="mouse"),t.classList.toggle("cdk-program-focused",r==="program")}_setOrigin(t,r=!1){this._ngZone.runOutsideAngular(()=>{if(this._origin=t,this._originFromTouchInteraction=t==="touch"&&r,this._detectionMode===Gd.IMMEDIATE){clearTimeout(this._originTimeoutId);let o=this._originFromTouchInteraction?Tx:1;this._originTimeoutId=setTimeout(()=>this._origin=null,o)}})}_onFocus(t,r){let o=this._elementInfo.get(r),s=En(t);!o||!o.checkChildren&&r!==s||this._originChanged(r,this._getFocusOrigin(s),o)}_onBlur(t,r){let o=this._elementInfo.get(r);!o||o.checkChildren&&t.relatedTarget instanceof Node&&r.contains(t.relatedTarget)||(this._setClasses(r),this._emitOrigin(o,null))}_emitOrigin(t,r){t.subject.observers.length&&this._ngZone.run(()=>t.subject.next(r))}_registerGlobalListeners(t){if(!this._platform.isBrowser)return;let r=t.rootNode,o=this._rootNodeFocusListenerCount.get(r)||0;o||this._ngZone.runOutsideAngular(()=>{r.addEventListener("focus",this._rootNodeFocusAndBlurListener,Wd),r.addEventListener("blur",this._rootNodeFocusAndBlurListener,Wd)}),this._rootNodeFocusListenerCount.set(r,o+1),++this._monitoredElementCount===1&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(ne(this._stopInputModalityDetector)).subscribe(s=>{this._setOrigin(s,!0)}))}_removeGlobalListeners(t){let r=t.rootNode;if(this._rootNodeFocusListenerCount.has(r)){let o=this._rootNodeFocusListenerCount.get(r);o>1?this._rootNodeFocusListenerCount.set(r,o-1):(r.removeEventListener("focus",this._rootNodeFocusAndBlurListener,Wd),r.removeEventListener("blur",this._rootNodeFocusAndBlurListener,Wd),this._rootNodeFocusListenerCount.delete(r))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(t,r,o){this._setClasses(t,r),this._emitOrigin(o,r),this._lastFocusOrigin=r}_getClosestElementsInfo(t){let r=[];return this._elementInfo.forEach((o,s)=>{(s===t||o.checkChildren&&s.contains(t))&&r.push([s,o])}),r}_isLastInteractionFromInputLabel(t){let{_mostRecentTarget:r,mostRecentModality:o}=this._inputModalityDetector;if(o!=="mouse"||!r||r===t||t.nodeName!=="INPUT"&&t.nodeName!=="TEXTAREA"||t.disabled)return!1;let s=t.labels;if(s){for(let a=0;a{let e=class e{constructor(t,r){this._platform=t,this._document=r,this._breakpointSubscription=C(Ud).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return jr.NONE;let t=this._document.createElement("div");t.style.backgroundColor="rgb(1,2,3)",t.style.position="absolute",this._document.body.appendChild(t);let r=this._document.defaultView||window,o=r&&r.getComputedStyle?r.getComputedStyle(t):null,s=(o&&o.backgroundColor||"").replace(/ /g,"");switch(t.remove(),s){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return jr.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return jr.BLACK_ON_WHITE}return jr.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){let t=this._document.body.classList;t.remove(ig,Cx,Dx),this._hasCheckedHighContrastMode=!0;let r=this.getHighContrastMode();r===jr.BLACK_ON_WHITE?t.add(ig,Cx):r===jr.WHITE_ON_BLACK&&t.add(ig,Dx)}}};e.\u0275fac=function(r){return new(r||e)(p(be),p(N))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var DF=new y("cdk-dir-doc",{providedIn:"root",factory:EF});function EF(){return C(N)}var IF=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;function SF(n){let e=n?.toLowerCase()||"";return e==="auto"&&typeof navigator<"u"&&navigator?.language?IF.test(navigator.language)?"rtl":"ltr":e==="rtl"?"rtl":"ltr"}var Dt=(()=>{let e=class e{constructor(t){if(this.value="ltr",this.change=new X,t){let r=t.body?t.body.dir:null,o=t.documentElement?t.documentElement.dir:null;this.value=SF(r||o||"ltr")}}ngOnDestroy(){this.change.complete()}};e.\u0275fac=function(r){return new(r||e)(p(DF,8))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var lg=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({});let n=e;return n})();var MF=["text"];function TF(n,e){if(n&1&&ee(0,"mat-pseudo-checkbox",6),n&2){let i=U();P("disabled",i.disabled)("state",i.selected?"checked":"unchecked")}}function AF(n,e){if(n&1&&ee(0,"mat-pseudo-checkbox",7),n&2){let i=U();P("disabled",i.disabled)}}function OF(n,e){if(n&1&&(_(0,"span",8),M(1),b()),n&2){let i=U();D(1),Ae("(",i.group.label,")")}}var RF=[[["mat-icon"]],"*"],kF=["mat-icon","*"];function FF(){return!0}var PF=new y("mat-sanity-checks",{providedIn:"root",factory:FF}),un=(()=>{let e=class e{constructor(t,r,o){this._sanityChecks=r,this._document=o,this._hasDoneGlobalChecks=!1,t._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(t){return La()?!1:typeof this._sanityChecks=="boolean"?this._sanityChecks:!!this._sanityChecks[t]}};e.\u0275fac=function(r){return new(r||e)(p(Ax),p(PF,8),p(N))},e.\u0275mod=oe({type:e}),e.\u0275inj=re({imports:[lg,lg]});let n=e;return n})();var es=class{constructor(e,i,t,r,o){this._defaultMatcher=e,this.ngControl=i,this._parentFormGroup=t,this._parentForm=r,this._stateChanges=o,this.errorState=!1}updateErrorState(){let e=this.errorState,i=this._parentFormGroup||this._parentForm,t=this.matcher||this._defaultMatcher,r=this.ngControl?this.ngControl.control:null,o=t?.isErrorState(r,i)??!1;o!==e&&(this.errorState=o,this._stateChanges.next())}};function Vx(n){return class extends n{constructor(...e){super(...e),this._isInitialized=!1,this._pendingSubscribers=[],this.initialized=new W(i=>{this._isInitialized?this._notifySubscriber(i):this._pendingSubscribers.push(i)})}_markInitialized(){this._isInitialized,this._isInitialized=!0,this._pendingSubscribers.forEach(this._notifySubscriber),this._pendingSubscribers=null}_notifySubscriber(e){e.next(),e.complete()}}}var tu=(()=>{let e=class e{isErrorState(t,r){return!!(t&&t.invalid&&(t.touched||r&&r.submitted))}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var dn=function(n){return n[n.FADING_IN=0]="FADING_IN",n[n.VISIBLE=1]="VISIBLE",n[n.FADING_OUT=2]="FADING_OUT",n[n.HIDDEN=3]="HIDDEN",n}(dn||{}),ug=class{constructor(e,i,t,r=!1){this._renderer=e,this.element=i,this.config=t,this._animationForciblyDisabledThroughCss=r,this.state=dn.HIDDEN}fadeOut(){this._renderer.fadeOutRipple(this)}},Ox=an({passive:!0,capture:!0}),fg=class{constructor(){this._events=new Map,this._delegateEventHandler=e=>{let i=En(e);i&&this._events.get(e.type)?.forEach((t,r)=>{(r===i||r.contains(i))&&t.forEach(o=>o.handleEvent(e))})}}addHandler(e,i,t,r){let o=this._events.get(i);if(o){let s=o.get(t);s?s.add(r):o.set(t,new Set([r]))}else this._events.set(i,new Map([[t,new Set([r])]])),e.runOutsideAngular(()=>{document.addEventListener(i,this._delegateEventHandler,Ox)})}removeHandler(e,i,t){let r=this._events.get(e);if(!r)return;let o=r.get(i);o&&(o.delete(t),o.size===0&&r.delete(i),r.size===0&&(this._events.delete(e),document.removeEventListener(e,this._delegateEventHandler,Ox)))}},Rx={enterDuration:225,exitDuration:150},NF=800,kx=an({passive:!0,capture:!0}),Fx=["mousedown","touchstart"],Px=["mouseup","mouseleave","touchend","touchcancel"],za=class za{constructor(e,i,t,r){this._target=e,this._ngZone=i,this._platform=r,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,r.isBrowser&&(this._containerElement=cn(t))}fadeInRipple(e,i,t={}){let r=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),o=w(w({},Rx),t.animation);t.centered&&(e=r.left+r.width/2,i=r.top+r.height/2);let s=t.radius||LF(e,i,r),a=e-r.left,l=i-r.top,c=o.enterDuration,d=document.createElement("div");d.classList.add("mat-ripple-element"),d.style.left=`${a-s}px`,d.style.top=`${l-s}px`,d.style.height=`${s*2}px`,d.style.width=`${s*2}px`,t.color!=null&&(d.style.backgroundColor=t.color),d.style.transitionDuration=`${c}ms`,this._containerElement.appendChild(d);let u=window.getComputedStyle(d),h=u.transitionProperty,m=u.transitionDuration,g=h==="none"||m==="0s"||m==="0s, 0s"||r.width===0&&r.height===0,v=new ug(this,d,t,g);d.style.transform="scale3d(1, 1, 1)",v.state=dn.FADING_IN,t.persistent||(this._mostRecentTransientRipple=v);let E=null;return!g&&(c||o.exitDuration)&&this._ngZone.runOutsideAngular(()=>{let I=()=>this._finishRippleTransition(v),Q=()=>this._destroyRipple(v);d.addEventListener("transitionend",I),d.addEventListener("transitioncancel",Q),E={onTransitionEnd:I,onTransitionCancel:Q}}),this._activeRipples.set(v,E),(g||!c)&&this._finishRippleTransition(v),v}fadeOutRipple(e){if(e.state===dn.FADING_OUT||e.state===dn.HIDDEN)return;let i=e.element,t=w(w({},Rx),e.config.animation);i.style.transitionDuration=`${t.exitDuration}ms`,i.style.opacity="0",e.state=dn.FADING_OUT,(e._animationForciblyDisabledThroughCss||!t.exitDuration)&&this._finishRippleTransition(e)}fadeOutAll(){this._getActiveRipples().forEach(e=>e.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(e=>{e.config.persistent||e.fadeOut()})}setupTriggerEvents(e){let i=cn(e);!this._platform.isBrowser||!i||i===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=i,Fx.forEach(t=>{za._eventManager.addHandler(this._ngZone,t,i,this)}))}handleEvent(e){e.type==="mousedown"?this._onMousedown(e):e.type==="touchstart"?this._onTouchStart(e):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{Px.forEach(i=>{this._triggerElement.addEventListener(i,this,kx)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(e){e.state===dn.FADING_IN?this._startFadeOutTransition(e):e.state===dn.FADING_OUT&&this._destroyRipple(e)}_startFadeOutTransition(e){let i=e===this._mostRecentTransientRipple,{persistent:t}=e.config;e.state=dn.VISIBLE,!t&&(!i||!this._isPointerDown)&&e.fadeOut()}_destroyRipple(e){let i=this._activeRipples.get(e)??null;this._activeRipples.delete(e),this._activeRipples.size||(this._containerRect=null),e===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),e.state=dn.HIDDEN,i!==null&&(e.element.removeEventListener("transitionend",i.onTransitionEnd),e.element.removeEventListener("transitioncancel",i.onTransitionCancel)),e.element.remove()}_onMousedown(e){let i=Va(e),t=this._lastTouchStartEvent&&Date.now(){let i=e.state===dn.VISIBLE||e.config.terminateOnPointerUp&&e.state===dn.FADING_IN;!e.config.persistent&&i&&e.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){let e=this._triggerElement;e&&(Fx.forEach(i=>za._eventManager.removeHandler(i,e,this)),this._pointerUpEventsRegistered&&Px.forEach(i=>e.removeEventListener(i,this,kx)))}};za._eventManager=new fg;var hg=za;function LF(n,e,i){let t=Math.max(Math.abs(n-i.left),Math.abs(n-i.right)),r=Math.max(Math.abs(e-i.top),Math.abs(e-i.bottom));return Math.sqrt(t*t+r*r)}var Bx=new y("mat-ripple-global-options"),nu=(()=>{let e=class e{get disabled(){return this._disabled}set disabled(t){t&&this.fadeOutAllNonPersistent(),this._disabled=t,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(t){this._trigger=t,this._setupTriggerEventsIfEnabled()}constructor(t,r,o,s,a){this._elementRef=t,this._animationMode=a,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=s||{},this._rippleRenderer=new hg(this,r,t,o)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:w(w(w({},this._globalOptions.animation),this._animationMode==="NoopAnimations"?{enterDuration:0,exitDuration:0}:{}),this.animation),terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(t,r=0,o){return typeof t=="number"?this._rippleRenderer.fadeInRipple(t,r,w(w({},this.rippleConfig),o)):this._rippleRenderer.fadeInRipple(0,0,w(w({},this.rippleConfig),t))}};e.\u0275fac=function(r){return new(r||e)(f(k),f(A),f(be),f(Bx,8),f(ct,8))},e.\u0275dir=O({type:e,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(r,o){r&2&&_e("mat-ripple-unbounded",o.unbounded)},inputs:{color:["matRippleColor","color"],unbounded:["matRippleUnbounded","unbounded"],centered:["matRippleCentered","centered"],radius:["matRippleRadius","radius"],animation:["matRippleAnimation","animation"],disabled:["matRippleDisabled","disabled"],trigger:["matRippleTrigger","trigger"]},exportAs:["matRipple"],standalone:!0});let n=e;return n})();var jF=(()=>{let e=class e{constructor(t){this._animationMode=t,this.state="unchecked",this.disabled=!1,this.appearance="full"}};e.\u0275fac=function(r){return new(r||e)(f(ct,8))},e.\u0275cmp=V({type:e,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(r,o){r&2&&_e("mat-pseudo-checkbox-indeterminate",o.state==="indeterminate")("mat-pseudo-checkbox-checked",o.state==="checked")("mat-pseudo-checkbox-disabled",o.disabled)("mat-pseudo-checkbox-minimal",o.appearance==="minimal")("mat-pseudo-checkbox-full",o.appearance==="full")("_mat-animation-noopable",o._animationMode==="NoopAnimations")},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},standalone:!0,features:[B],decls:0,vars:0,template:function(r,o){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-minimal-pseudo-checkbox-selected-checkmark-color)}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color)}.mat-pseudo-checkbox-full{border-color:var(--mat-full-pseudo-checkbox-unselected-icon-color);border-width:2px;border-style:solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{border-color:var(--mat-full-pseudo-checkbox-disabled-unselected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{background-color:var(--mat-full-pseudo-checkbox-selected-icon-color);border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{color:var(--mat-full-pseudo-checkbox-selected-checkmark-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background-color:var(--mat-full-pseudo-checkbox-disabled-selected-icon-color)}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled::after,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled::after{color:var(--mat-full-pseudo-checkbox-disabled-selected-checkmark-color)}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}'],encapsulation:2,changeDetection:0});let n=e;return n})();var pg=new y("MAT_OPTION_PARENT_COMPONENT");var gg=new y("MatOptgroup");var VF=0,mg=class{constructor(e,i=!1){this.source=e,this.isUserInput=i}},Jn=(()=>{let e=class e{get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}get disabled(){return this.group&&this.group.disabled||this._disabled}set disabled(t){this._disabled=t}get disableRipple(){return!!(this._parent&&this._parent.disableRipple)}get hideSingleSelectionIndicator(){return!!(this._parent&&this._parent.hideSingleSelectionIndicator)}constructor(t,r,o,s){this._element=t,this._changeDetectorRef=r,this._parent=o,this.group=s,this._selected=!1,this._active=!1,this._disabled=!1,this._mostRecentViewValue="",this.id=`mat-option-${VF++}`,this.onSelectionChange=new X,this._stateChanges=new T}get active(){return this._active}get viewValue(){return(this._text?.nativeElement.textContent||"").trim()}select(t=!0){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),t&&this._emitSelectionChangeEvent())}deselect(t=!0){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),t&&this._emitSelectionChangeEvent())}focus(t,r){let o=this._getHostElement();typeof o.focus=="function"&&o.focus(r)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(t){(t.keyCode===13||t.keyCode===32)&&!bt(t)&&(this._selectViaInteraction(),t.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=this.multiple?!this._selected:!0,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){let t=this.viewValue;t!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=t)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(t=!1){this.onSelectionChange.emit(new mg(this,t))}};e.\u0275fac=function(r){return new(r||e)(f(k),f(Oe),f(pg,8),f(gg,8))},e.\u0275cmp=V({type:e,selectors:[["mat-option"]],viewQuery:function(r,o){if(r&1&&Be(MF,7),r&2){let s;q(s=Y())&&(o._text=s.first)}},hostAttrs:["role","option",1,"mat-mdc-option","mdc-list-item"],hostVars:11,hostBindings:function(r,o){r&1&&j("click",function(){return o._selectViaInteraction()})("keydown",function(a){return o._handleKeydown(a)}),r&2&&(Zn("id",o.id),we("aria-selected",o.selected)("aria-disabled",o.disabled.toString()),_e("mdc-list-item--selected",o.selected)("mat-mdc-option-multiple",o.multiple)("mat-mdc-option-active",o.active)("mdc-list-item--disabled",o.disabled))},inputs:{value:"value",id:"id",disabled:["disabled","disabled",fe]},outputs:{onSelectionChange:"onSelectionChange"},exportAs:["matOption"],standalone:!0,features:[Ue,B],ngContentSelectors:kF,decls:8,vars:5,consts:[["class","mat-mdc-option-pseudo-checkbox","aria-hidden","true",3,"disabled","state"],[1,"mdc-list-item__primary-text"],["text",""],["class","mat-mdc-option-pseudo-checkbox","state","checked","aria-hidden","true","appearance","minimal",3,"disabled"],["class","cdk-visually-hidden"],["aria-hidden","true","mat-ripple","",1,"mat-mdc-option-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled"],["aria-hidden","true",1,"mat-mdc-option-pseudo-checkbox",3,"disabled","state"],["state","checked","aria-hidden","true","appearance","minimal",1,"mat-mdc-option-pseudo-checkbox",3,"disabled"],[1,"cdk-visually-hidden"]],template:function(r,o){r&1&&(Xe(RF),z(0,TF,1,2,"mat-pseudo-checkbox",0),ge(1),_(2,"span",1,2),ge(4,1),b(),z(5,AF,1,1,"mat-pseudo-checkbox",3)(6,OF,2,1,"span",4),ee(7,"div",5)),r&2&&(pe(0,o.multiple?0:-1),D(5),pe(5,!o.multiple&&o.selected&&!o.hideSingleSelectionIndicator?5:-1),D(1),pe(6,o.group&&o.group._inert?6:-1),D(1),P("matRippleTrigger",o._getHostElement())("matRippleDisabled",o.disabled||o.disableRipple))},dependencies:[jF,nu],styles:['.mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mat-option-label-text-color);font-family:var(--mat-option-label-text-font);line-height:var(--mat-option-label-text-line-height);font-size:var(--mat-option-label-text-size);letter-spacing:var(--mat-option-label-text-tracking);font-weight:var(--mat-option-label-text-weight);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:var(--mat-option-hover-state-layer-color)}.mat-mdc-option:focus.mdc-list-item,.mat-mdc-option.mat-mdc-option-active.mdc-list-item{background-color:var(--mat-option-focus-state-layer-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mat-option-selected-state-label-text-color)}.mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled):not(.mat-mdc-option-multiple){background-color:var(--mat-option-selected-state-layer-color)}.mat-mdc-option.mdc-list-item{align-items:center}.mat-mdc-option.mdc-list-item--disabled{cursor:default;pointer-events:none}.mat-mdc-option.mdc-list-item--disabled .mat-mdc-option-pseudo-checkbox,.mat-mdc-option.mdc-list-item--disabled .mdc-list-item__primary-text,.mat-mdc-option.mdc-list-item--disabled>mat-icon{opacity:.38}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0});let n=e;return n})();function zx(n,e,i){if(i.length){let t=e.toArray(),r=i.toArray(),o=0;for(let s=0;si+t?Math.max(0,n-t+e):i}var Nx={capture:!0},Lx=["focus","click","mouseenter","touchstart"],cg="mat-ripple-loader-uninitialized",dg="mat-ripple-loader-class-name",jx="mat-ripple-loader-centered",eu="mat-ripple-loader-disabled",Ux=(()=>{let e=class e{constructor(){this._document=C(N,{optional:!0}),this._animationMode=C(ct,{optional:!0}),this._globalRippleOptions=C(Bx,{optional:!0}),this._platform=C(be),this._ngZone=C(A),this._hosts=new Map,this._onInteraction=t=>{if(!(t.target instanceof HTMLElement))return;let o=t.target.closest(`[${cg}]`);o&&this._createRipple(o)},this._ngZone.runOutsideAngular(()=>{for(let t of Lx)this._document?.addEventListener(t,this._onInteraction,Nx)})}ngOnDestroy(){let t=this._hosts.keys();for(let r of t)this.destroyRipple(r);for(let r of Lx)this._document?.removeEventListener(r,this._onInteraction,Nx)}configureRipple(t,r){t.setAttribute(cg,""),(r.className||!t.hasAttribute(dg))&&t.setAttribute(dg,r.className||""),r.centered&&t.setAttribute(jx,""),r.disabled&&t.setAttribute(eu,"")}getRipple(t){return this._hosts.get(t)||this._createRipple(t)}setDisabled(t,r){let o=this._hosts.get(t);if(o){o.disabled=r;return}r?t.setAttribute(eu,""):t.removeAttribute(eu)}_createRipple(t){if(!this._document)return;let r=this._hosts.get(t);if(r)return r;t.querySelector(".mat-ripple")?.remove();let o=this._document.createElement("span");o.classList.add("mat-ripple",t.getAttribute(dg)),t.append(o);let s=new nu(new k(o),this._ngZone,this._platform,this._globalRippleOptions?this._globalRippleOptions:void 0,this._animationMode?this._animationMode:void 0);return s._isInitialized=!0,s.trigger=t,s.centered=t.hasAttribute(jx),s.disabled=t.hasAttribute(eu),this.attachRipple(t,s),s}attachRipple(t,r){t.removeAttribute(cg),this._hosts.set(t,r)}destroyRipple(t){let r=this._hosts.get(t);r&&(r.ngOnDestroy(),this._hosts.delete(t))}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var zF=["mat-button",""],HF=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],UF=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"];var $F=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}";var WF=["mat-icon-button",""],GF=["*"];var qF=new y("MAT_BUTTON_CONFIG");var YF=[{attribute:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{attribute:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{attribute:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{attribute:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{attribute:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{attribute:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{attribute:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],Wx=(()=>{let e=class e{get ripple(){return this._rippleLoader?.getRipple(this._elementRef.nativeElement)}set ripple(t){this._rippleLoader?.attachRipple(this._elementRef.nativeElement,t)}get disableRipple(){return this._disableRipple}set disableRipple(t){this._disableRipple=t,this._updateRippleDisabled()}get disabled(){return this._disabled}set disabled(t){this._disabled=t,this._updateRippleDisabled()}constructor(t,r,o,s){this._elementRef=t,this._platform=r,this._ngZone=o,this._animationMode=s,this._focusMonitor=C(In),this._rippleLoader=C(Ux),this._isFab=!1,this._disableRipple=!1,this._disabled=!1;let a=C(qF,{optional:!0}),l=t.nativeElement,c=l.classList;this.disabledInteractive=a?.disabledInteractive??!1,this._rippleLoader?.configureRipple(l,{className:"mat-mdc-button-ripple"});for(let{attribute:d,mdcClasses:u}of YF)l.hasAttribute(d)&&c.add(...u)}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._rippleLoader?.destroyRipple(this._elementRef.nativeElement)}focus(t="program",r){t?this._focusMonitor.focusVia(this._elementRef.nativeElement,t,r):this._elementRef.nativeElement.focus(r)}_getAriaDisabled(){return this.ariaDisabled!=null?this.ariaDisabled:this.disabled&&this.disabledInteractive?!0:null}_getDisabledAttribute(){return this.disabledInteractive||!this.disabled?null:!0}_updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementRef.nativeElement,this.disableRipple||this.disabled)}};e.\u0275fac=function(r){Mm()},e.\u0275dir=O({type:e,inputs:{color:"color",disableRipple:["disableRipple","disableRipple",fe],disabled:["disabled","disabled",fe],ariaDisabled:["aria-disabled","ariaDisabled",fe],disabledInteractive:["disabledInteractive","disabledInteractive",fe]},features:[Ue]});let n=e;return n})();var Lt=(()=>{let e=class e extends Wx{constructor(t,r,o,s){super(t,r,o,s)}};e.\u0275fac=function(r){return new(r||e)(f(k),f(be),f(A),f(ct,8))},e.\u0275cmp=V({type:e,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:14,hostBindings:function(r,o){r&2&&(we("disabled",o._getDisabledAttribute())("aria-disabled",o._getAriaDisabled()),Yn(o.color?"mat-"+o.color:""),_e("mat-mdc-button-disabled",o.disabled)("mat-mdc-button-disabled-interactive",o.disabledInteractive)("_mat-animation-noopable",o._animationMode==="NoopAnimations")("mat-unthemed",!o.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[ue,B],attrs:zF,ngContentSelectors:UF,decls:7,vars:4,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(r,o){r&1&&(Xe(HF),ee(0,"span",0),ge(1),_(2,"span",1),ge(3,1),b(),ge(4,2),ee(5,"span",2)(6,"span",3)),r&2&&_e("mdc-button__ripple",!o._isFab)("mdc-fab__ripple",o._isFab)},styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px);display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{font-family:var(--mdc-text-button-label-text-font);font-size:var(--mdc-text-button-label-text-size);letter-spacing:var(--mdc-text-button-label-text-tracking);font-weight:var(--mdc-text-button-label-text-weight);text-transform:var(--mdc-text-button-label-text-transform);height:var(--mdc-text-button-container-height);border-radius:var(--mdc-text-button-container-shape)}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape)}.mat-mdc-button .mat-ripple-element{background-color:var(--mat-text-button-ripple-color)}.mat-mdc-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-state-layer-color)}.mat-mdc-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-text-button-disabled-state-layer-color)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-hover-state-layer-opacity)}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-focus-state-layer-opacity)}.mat-mdc-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-text-button-pressed-state-layer-opacity)}.mat-mdc-button[disabled],.mat-mdc-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-text-button-disabled-label-text-color)}.mat-mdc-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-unelevated-button{font-family:var(--mdc-filled-button-label-text-font);font-size:var(--mdc-filled-button-label-text-size);letter-spacing:var(--mdc-filled-button-label-text-tracking);font-weight:var(--mdc-filled-button-label-text-weight);text-transform:var(--mdc-filled-button-label-text-transform);height:var(--mdc-filled-button-container-height);border-radius:var(--mdc-filled-button-container-shape)}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color)}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape)}.mat-mdc-unelevated-button .mat-ripple-element{background-color:var(--mat-filled-button-ripple-color)}.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-state-layer-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-filled-button-disabled-state-layer-color)}.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-hover-state-layer-opacity)}.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-focus-state-layer-opacity)}.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-filled-button-pressed-state-layer-opacity)}.mat-mdc-unelevated-button[disabled],.mat-mdc-unelevated-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-filled-button-disabled-label-text-color);background-color:var(--mdc-filled-button-disabled-container-color)}.mat-mdc-unelevated-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-raised-button{font-family:var(--mdc-protected-button-label-text-font);font-size:var(--mdc-protected-button-label-text-size);letter-spacing:var(--mdc-protected-button-label-text-tracking);font-weight:var(--mdc-protected-button-label-text-weight);text-transform:var(--mdc-protected-button-label-text-transform);height:var(--mdc-protected-button-container-height);border-radius:var(--mdc-protected-button-container-shape);box-shadow:var(--mdc-protected-button-container-elevation-shadow)}.mat-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color)}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape)}.mat-mdc-raised-button .mat-ripple-element{background-color:var(--mat-protected-button-ripple-color)}.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-state-layer-color)}.mat-mdc-raised-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-protected-button-disabled-state-layer-color)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-hover-state-layer-opacity)}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-focus-state-layer-opacity)}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-protected-button-pressed-state-layer-opacity)}.mat-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation-shadow)}.mat-mdc-raised-button:focus{box-shadow:var(--mdc-protected-button-focus-container-elevation-shadow)}.mat-mdc-raised-button:active,.mat-mdc-raised-button:focus:active{box-shadow:var(--mdc-protected-button-pressed-container-elevation-shadow)}.mat-mdc-raised-button[disabled],.mat-mdc-raised-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-protected-button-disabled-label-text-color);background-color:var(--mdc-protected-button-disabled-container-color)}.mat-mdc-raised-button[disabled].mat-mdc-button-disabled,.mat-mdc-raised-button.mat-mdc-button-disabled.mat-mdc-button-disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation-shadow)}.mat-mdc-raised-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-outlined-button{font-family:var(--mdc-outlined-button-label-text-font);font-size:var(--mdc-outlined-button-label-text-size);letter-spacing:var(--mdc-outlined-button-label-text-tracking);font-weight:var(--mdc-outlined-button-label-text-weight);text-transform:var(--mdc-outlined-button-label-text-transform);height:var(--mdc-outlined-button-container-height);border-radius:var(--mdc-outlined-button-container-shape);padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color)}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape)}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color)}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width))}.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-outlined-button-ripple-color)}.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-state-layer-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-outlined-button-disabled-state-layer-color)}.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-hover-state-layer-opacity)}.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-focus-state-layer-opacity)}.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-outlined-button-pressed-state-layer-opacity)}.mat-mdc-outlined-button[disabled],.mat-mdc-outlined-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-outlined-button-disabled-label-text-color);border-color:var(--mdc-outlined-button-disabled-outline-color)}.mat-mdc-outlined-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-button-base{text-decoration:none}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px)*-1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px)*-1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0});let n=e;return n})();var iu=(()=>{let e=class e extends Wx{constructor(t,r,o,s){super(t,r,o,s),this._rippleLoader.configureRipple(this._elementRef.nativeElement,{centered:!0})}};e.\u0275fac=function(r){return new(r||e)(f(k),f(be),f(A),f(ct,8))},e.\u0275cmp=V({type:e,selectors:[["button","mat-icon-button",""]],hostVars:14,hostBindings:function(r,o){r&2&&(we("disabled",o._getDisabledAttribute())("aria-disabled",o._getAriaDisabled()),Yn(o.color?"mat-"+o.color:""),_e("mat-mdc-button-disabled",o.disabled)("mat-mdc-button-disabled-interactive",o.disabledInteractive)("_mat-animation-noopable",o._animationMode==="NoopAnimations")("mat-unthemed",!o.color)("mat-mdc-button-base",!0))},exportAs:["matButton"],standalone:!0,features:[ue,B],attrs:WF,ngContentSelectors:GF,decls:4,vars:0,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],[1,"mat-mdc-button-touch-target"]],template:function(r,o){r&1&&(Xe(),ee(0,"span",0),ge(1),ee(2,"span",1)(3,"span",2))},styles:['.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size);width:var(--mdc-icon-button-state-layer-size);color:var(--mdc-icon-button-icon-color)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size);height:var(--mdc-icon-button-icon-size)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button{padding:12px;border-radius:50%;flex-shrink:0;text-align:center;font-size:var(--mdc-icon-button-icon-size);-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mdc-icon-button-disabled-icon-color)}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color)}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color)}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity)}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity)}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity)}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',$F],encapsulation:2,changeDetection:0});let n=e;return n})();var ei="*";function ti(n,e){return{type:7,name:n,definitions:e,options:{}}}function fn(n,e=null){return{type:4,styles:e,timings:n}}function Gx(n,e=null){return{type:2,steps:n,options:e}}function at(n){return{type:6,styles:n,offset:null}}function ni(n,e,i){return{type:0,name:n,styles:e,options:i}}function Zt(n,e,i=null){return{type:1,expr:n,animation:e,options:i}}function qx(n=null){return{type:9,options:n}}function Yx(n,e,i=null){return{type:11,selector:n,animation:e,options:i}}var qi=class{constructor(e=0,i=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=e+i}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(e=>e()),this._onDoneFns=[])}onStart(e){this._originalOnStartFns.push(e),this._onStartFns.push(e)}onDone(e){this._originalOnDoneFns.push(e),this._onDoneFns.push(e)}onDestroy(e){this._onDestroyFns.push(e)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){queueMicrotask(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(e=>e()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(e=>e()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(e){this._position=this.totalTime?e*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(e){let i=e=="start"?this._onStartFns:this._onDoneFns;i.forEach(t=>t()),i.length=0}},Ha=class{constructor(e){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=e;let i=0,t=0,r=0,o=this.players.length;o==0?queueMicrotask(()=>this._onFinish()):this.players.forEach(s=>{s.onDone(()=>{++i==o&&this._onFinish()}),s.onDestroy(()=>{++t==o&&this._onDestroy()}),s.onStart(()=>{++r==o&&this._onStart()})}),this.totalTime=this.players.reduce((s,a)=>Math.max(s,a.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(e=>e()),this._onDoneFns=[])}init(){this.players.forEach(e=>e.init())}onStart(e){this._onStartFns.push(e)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(e=>e()),this._onStartFns=[])}onDone(e){this._onDoneFns.push(e)}onDestroy(e){this._onDestroyFns.push(e)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(e=>e.play())}pause(){this.players.forEach(e=>e.pause())}restart(){this.players.forEach(e=>e.restart())}finish(){this._onFinish(),this.players.forEach(e=>e.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(e=>e.destroy()),this._onDestroyFns.forEach(e=>e()),this._onDestroyFns=[])}reset(){this.players.forEach(e=>e.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(e){let i=e*this.totalTime;this.players.forEach(t=>{let r=t.totalTime?Math.min(1,i/t.totalTime):1;t.setPosition(r)})}getPosition(){let e=this.players.reduce((i,t)=>i===null||t.totalTime>i.totalTime?t:i,null);return e!=null?e.getPosition():0}beforeDestroy(){this.players.forEach(e=>{e.beforeDestroy&&e.beforeDestroy()})}triggerCallback(e){let i=e=="start"?this._onStartFns:this._onDoneFns;i.forEach(t=>t()),i.length=0}},ru="!";var Ua=class{attach(e){return this._attachedHost=e,e.attach(this)}detach(){let e=this._attachedHost;e!=null&&(this._attachedHost=null,e.detach())}get isAttached(){return this._attachedHost!=null}setAttachedHost(e){this._attachedHost=e}},Sn=class extends Ua{constructor(e,i,t,r,o){super(),this.component=e,this.viewContainerRef=i,this.injector=t,this.componentFactoryResolver=r,this.projectableNodes=o}},Mn=class extends Ua{constructor(e,i,t,r){super(),this.templateRef=e,this.viewContainerRef=i,this.context=t,this.injector=r}get origin(){return this.templateRef.elementRef}attach(e,i=this.context){return this.context=i,super.attach(e)}detach(){return this.context=void 0,super.detach()}},_g=class extends Ua{constructor(e){super(),this.element=e instanceof k?e.nativeElement:e}},Yi=class{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(e){if(e instanceof Sn)return this._attachedPortal=e,this.attachComponentPortal(e);if(e instanceof Mn)return this._attachedPortal=e,this.attachTemplatePortal(e);if(this.attachDomPortal&&e instanceof _g)return this._attachedPortal=e,this.attachDomPortal(e)}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(e){this._disposeFn=e}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}};var $a=class extends Yi{constructor(e,i,t,r,o){super(),this.outletElement=e,this._componentFactoryResolver=i,this._appRef=t,this._defaultInjector=r,this.attachDomPortal=s=>{this._document;let a=s.element;a.parentNode;let l=this._document.createComment("dom-portal");a.parentNode.insertBefore(l,a),this.outletElement.appendChild(a),this._attachedPortal=s,super.setDisposeFn(()=>{l.parentNode&&l.parentNode.replaceChild(a,l)})},this._document=o}attachComponentPortal(e){let t=(e.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(e.component),r;return e.viewContainerRef?(r=e.viewContainerRef.createComponent(t,e.viewContainerRef.length,e.injector||e.viewContainerRef.injector,e.projectableNodes||void 0),this.setDisposeFn(()=>r.destroy())):(r=t.create(e.injector||this._defaultInjector||Ne.NULL),this._appRef.attachView(r.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(r.hostView),r.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(r)),this._attachedPortal=e,r}attachTemplatePortal(e){let i=e.viewContainerRef,t=i.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return t.rootNodes.forEach(r=>this.outletElement.appendChild(r)),t.detectChanges(),this.setDisposeFn(()=>{let r=i.indexOf(t);r!==-1&&i.remove(r)}),this._attachedPortal=e,t}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(e){return e.hostView.rootNodes[0]}};var Zi=(()=>{let e=class e extends Yi{constructor(t,r,o){super(),this._componentFactoryResolver=t,this._viewContainerRef=r,this._isInitialized=!1,this.attached=new X,this.attachDomPortal=s=>{this._document;let a=s.element;a.parentNode;let l=this._document.createComment("dom-portal");s.setAttachedHost(this),a.parentNode.insertBefore(l,a),this._getRootNode().appendChild(a),this._attachedPortal=s,super.setDisposeFn(()=>{l.parentNode&&l.parentNode.replaceChild(a,l)})},this._document=o}get portal(){return this._attachedPortal}set portal(t){this.hasAttached()&&!t&&!this._isInitialized||(this.hasAttached()&&super.detach(),t&&super.attach(t),this._attachedPortal=t||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(t){t.setAttachedHost(this);let r=t.viewContainerRef!=null?t.viewContainerRef:this._viewContainerRef,s=(t.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(t.component),a=r.createComponent(s,r.length,t.injector||r.injector,t.projectableNodes||void 0);return r!==this._viewContainerRef&&this._getRootNode().appendChild(a.hostView.rootNodes[0]),super.setDisposeFn(()=>a.destroy()),this._attachedPortal=t,this._attachedRef=a,this.attached.emit(a),a}attachTemplatePortal(t){t.setAttachedHost(this);let r=this._viewContainerRef.createEmbeddedView(t.templateRef,t.context,{injector:t.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=t,this._attachedRef=r,this.attached.emit(r),r}_getRootNode(){let t=this._viewContainerRef.element.nativeElement;return t.nodeType===t.ELEMENT_NODE?t:t.parentNode}};e.\u0275fac=function(r){return new(r||e)(f(mi),f(Ke),f(N))},e.\u0275dir=O({type:e,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:["cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],standalone:!0,features:[ue]});let n=e;return n})();function su(n){return n&&typeof n.connect=="function"&&!(n instanceof kn)}var is=function(n){return n[n.REPLACED=0]="REPLACED",n[n.INSERTED=1]="INSERTED",n[n.MOVED=2]="MOVED",n[n.REMOVED=3]="REMOVED",n}(is||{}),Wa=new y("_ViewRepeater"),rs=class{applyChanges(e,i,t,r,o){e.forEachOperation((s,a,l)=>{let c,d;if(s.previousIndex==null){let u=t(s,a,l);c=i.createEmbeddedView(u.templateRef,u.context,u.index),d=is.INSERTED}else l==null?(i.remove(a),d=is.REMOVED):(c=i.get(a),i.move(c,l),d=is.MOVED);o&&o({context:c?.context,operation:d,record:s})})}detach(){}};var ou=class{get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}constructor(e=!1,i,t=!0,r){this._multiple=e,this._emitChanges=t,this.compareWith=r,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new T,i&&i.length&&(e?i.forEach(o=>this._markSelected(o)):this._markSelected(i[0]),this._selectedToEmit.length=0)}select(...e){this._verifyValueAssignment(e),e.forEach(t=>this._markSelected(t));let i=this._hasQueuedChanges();return this._emitChangeEvent(),i}deselect(...e){this._verifyValueAssignment(e),e.forEach(t=>this._unmarkSelected(t));let i=this._hasQueuedChanges();return this._emitChangeEvent(),i}setSelection(...e){this._verifyValueAssignment(e);let i=this.selected,t=new Set(e);e.forEach(o=>this._markSelected(o)),i.filter(o=>!t.has(this._getConcreteValue(o,t))).forEach(o=>this._unmarkSelected(o));let r=this._hasQueuedChanges();return this._emitChangeEvent(),r}toggle(e){return this.isSelected(e)?this.deselect(e):this.select(e)}clear(e=!0){this._unmarkAll();let i=this._hasQueuedChanges();return e&&this._emitChangeEvent(),i}isSelected(e){return this._selection.has(this._getConcreteValue(e))}isEmpty(){return this._selection.size===0}hasValue(){return!this.isEmpty()}sort(e){this._multiple&&this.selected&&this._selected.sort(e)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(e){e=this._getConcreteValue(e),this.isSelected(e)||(this._multiple||this._unmarkAll(),this.isSelected(e)||this._selection.add(e),this._emitChanges&&this._selectedToEmit.push(e))}_unmarkSelected(e){e=this._getConcreteValue(e),this.isSelected(e)&&(this._selection.delete(e),this._emitChanges&&this._deselectedToEmit.push(e))}_unmarkAll(){this.isEmpty()||this._selection.forEach(e=>this._unmarkSelected(e))}_verifyValueAssignment(e){e.length>1&&this._multiple}_hasQueuedChanges(){return!!(this._deselectedToEmit.length||this._selectedToEmit.length)}_getConcreteValue(e,i){if(this.compareWith){i=i??this._selection;for(let t of i)if(this.compareWith(e,t))return t;return e}else return e}};var ZF=20,Ga=(()=>{let e=class e{constructor(t,r,o){this._ngZone=t,this._platform=r,this._scrolled=new T,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=o}register(t){this.scrollContainers.has(t)||this.scrollContainers.set(t,t.elementScrolled().subscribe(()=>this._scrolled.next(t)))}deregister(t){let r=this.scrollContainers.get(t);r&&(r.unsubscribe(),this.scrollContainers.delete(t))}scrolled(t=ZF){return this._platform.isBrowser?new W(r=>{this._globalSubscription||this._addGlobalListener();let o=t>0?this._scrolled.pipe(Kl(t)).subscribe(r):this._scrolled.subscribe(r);return this._scrolledCount++,()=>{o.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):R()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((t,r)=>this.deregister(r)),this._scrolled.complete()}ancestorScrolled(t,r){let o=this.getAncestorScrollContainers(t);return this.scrolled(r).pipe(le(s=>!s||o.indexOf(s)>-1))}getAncestorScrollContainers(t){let r=[];return this.scrollContainers.forEach((o,s)=>{this._scrollableContainsElement(s,t)&&r.push(s)}),r}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(t,r){let o=cn(r),s=t.getElementRef().nativeElement;do if(o==s)return!0;while(o=o.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>{let t=this._getWindow();return li(t.document,"scroll").subscribe(()=>this._scrolled.next())})}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}};e.\u0275fac=function(r){return new(r||e)(p(A),p(be),p(N,8))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var QF=20,Qi=(()=>{let e=class e{constructor(t,r,o){this._platform=t,this._change=new T,this._changeListener=s=>{this._change.next(s)},this._document=o,r.runOutsideAngular(()=>{if(t.isBrowser){let s=this._getWindow();s.addEventListener("resize",this._changeListener),s.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){let t=this._getWindow();t.removeEventListener("resize",this._changeListener),t.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();let t={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),t}getViewportRect(){let t=this.getViewportScrollPosition(),{width:r,height:o}=this.getViewportSize();return{top:t.top,left:t.left,bottom:t.top+o,right:t.left+r,height:o,width:r}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};let t=this._document,r=this._getWindow(),o=t.documentElement,s=o.getBoundingClientRect(),a=-s.top||t.body.scrollTop||r.scrollY||o.scrollTop||0,l=-s.left||t.body.scrollLeft||r.scrollX||o.scrollLeft||0;return{top:a,left:l}}change(t=QF){return t>0?this._change.pipe(Kl(t)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){let t=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:t.innerWidth,height:t.innerHeight}:{width:0,height:0}}};e.\u0275fac=function(r){return new(r||e)(p(be),p(A),p(N,8))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var Zx=px(),vg=class{constructor(e,i){this._viewportRuler=e,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=i}attach(){}enable(){if(this._canBeEnabled()){let e=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=e.style.left||"",this._previousHTMLStyles.top=e.style.top||"",e.style.left=it(-this._previousScrollPosition.left),e.style.top=it(-this._previousScrollPosition.top),e.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){let e=this._document.documentElement,i=this._document.body,t=e.style,r=i.style,o=t.scrollBehavior||"",s=r.scrollBehavior||"";this._isEnabled=!1,t.left=this._previousHTMLStyles.left,t.top=this._previousHTMLStyles.top,e.classList.remove("cdk-global-scrollblock"),Zx&&(t.scrollBehavior=r.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),Zx&&(t.scrollBehavior=o,r.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;let i=this._document.body,t=this._viewportRuler.getViewportSize();return i.scrollHeight>t.height||i.scrollWidth>t.width}};var yg=class{constructor(e,i,t,r){this._scrollDispatcher=e,this._ngZone=i,this._viewportRuler=t,this._config=r,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(e){this._overlayRef,this._overlayRef=e}enable(){if(this._scrollSubscription)return;let e=this._scrollDispatcher.scrolled(0).pipe(le(i=>!i||!this._overlayRef.overlayElement.contains(i.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=e.subscribe(()=>{let i=this._viewportRuler.getViewportScrollPosition().top;Math.abs(i-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=e.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},au=class{enable(){}disable(){}attach(){}};function wg(n,e){return e.some(i=>{let t=n.bottomi.bottom,o=n.righti.right;return t||r||o||s})}function Qx(n,e){return e.some(i=>{let t=n.topi.bottom,o=n.lefti.right;return t||r||o||s})}var xg=class{constructor(e,i,t,r){this._scrollDispatcher=e,this._viewportRuler=i,this._ngZone=t,this._config=r,this._scrollSubscription=null}attach(e){this._overlayRef,this._overlayRef=e}enable(){if(!this._scrollSubscription){let e=this._config?this._config.scrollThrottle:0;this._scrollSubscription=this._scrollDispatcher.scrolled(e).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){let i=this._overlayRef.overlayElement.getBoundingClientRect(),{width:t,height:r}=this._viewportRuler.getViewportSize();wg(i,[{width:t,height:r,bottom:r,right:t,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}})}}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},KF=(()=>{let e=class e{constructor(t,r,o,s){this._scrollDispatcher=t,this._viewportRuler=r,this._ngZone=o,this.noop=()=>new au,this.close=a=>new yg(this._scrollDispatcher,this._ngZone,this._viewportRuler,a),this.block=()=>new vg(this._viewportRuler,this._document),this.reposition=a=>new xg(this._scrollDispatcher,this._viewportRuler,this._ngZone,a),this._document=s}};e.\u0275fac=function(r){return new(r||e)(p(Ga),p(Qi),p(A),p(N))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),ii=class{constructor(e){if(this.scrollStrategy=new au,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,e){let i=Object.keys(e);for(let t of i)e[t]!==void 0&&(this[t]=e[t])}}};var Cg=class{constructor(e,i){this.connectionPair=e,this.scrollableViewProperties=i}};var tC=(()=>{let e=class e{constructor(t){this._attachedOverlays=[],this._document=t}ngOnDestroy(){this.detach()}add(t){this.remove(t),this._attachedOverlays.push(t)}remove(t){let r=this._attachedOverlays.indexOf(t);r>-1&&this._attachedOverlays.splice(r,1),this._attachedOverlays.length===0&&this.detach()}};e.\u0275fac=function(r){return new(r||e)(p(N))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),XF=(()=>{let e=class e extends tC{constructor(t,r){super(t),this._ngZone=r,this._keydownListener=o=>{let s=this._attachedOverlays;for(let a=s.length-1;a>-1;a--)if(s[a]._keydownEvents.observers.length>0){let l=s[a]._keydownEvents;this._ngZone?this._ngZone.run(()=>l.next(o)):l.next(o);break}}}add(t){super.add(t),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}};e.\u0275fac=function(r){return new(r||e)(p(N),p(A,8))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),JF=(()=>{let e=class e extends tC{constructor(t,r,o){super(t),this._platform=r,this._ngZone=o,this._cursorStyleIsSet=!1,this._pointerDownListener=s=>{this._pointerDownEventTarget=En(s)},this._clickListener=s=>{let a=En(s),l=s.type==="click"&&this._pointerDownEventTarget?this._pointerDownEventTarget:a;this._pointerDownEventTarget=null;let c=this._attachedOverlays.slice();for(let d=c.length-1;d>-1;d--){let u=c[d];if(u._outsidePointerEvents.observers.length<1||!u.hasAttached())continue;if(u.overlayElement.contains(a)||u.overlayElement.contains(l))break;let h=u._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>h.next(s)):h.next(s)}}}add(t){if(super.add(t),!this._isAttached){let r=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(r)):this._addEventListeners(r),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=r.style.cursor,r.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){let t=this._document.body;t.removeEventListener("pointerdown",this._pointerDownListener,!0),t.removeEventListener("click",this._clickListener,!0),t.removeEventListener("auxclick",this._clickListener,!0),t.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(t.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(t){t.addEventListener("pointerdown",this._pointerDownListener,!0),t.addEventListener("click",this._clickListener,!0),t.addEventListener("auxclick",this._clickListener,!0),t.addEventListener("contextmenu",this._clickListener,!0)}};e.\u0275fac=function(r){return new(r||e)(p(N),p(be),p(A,8))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),os=(()=>{let e=class e{constructor(t,r){this._platform=r,this._document=t}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){let t="cdk-overlay-container";if(this._platform.isBrowser||La()){let o=this._document.querySelectorAll(`.${t}[platform="server"], .${t}[platform="test"]`);for(let s=0;sthis._backdropClick.next(u),this._backdropTransitionendHandler=u=>{this._disposeBackdrop(u.target)},this._keydownEvents=new T,this._outsidePointerEvents=new T,r.scrollStrategy&&(this._scrollStrategy=r.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=r.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(e){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);let i=this._portalOutlet.attach(e);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe(ie(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),typeof i?.onDestroy=="function"&&i.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),i}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();let e=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),e}dispose(){let e=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._previousHostParent=this._pane=this._host=null,e&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(e){e!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=e,this.hasAttached()&&(e.attach(this),this.updatePosition()))}updateSize(e){this._config=w(w({},this._config),e),this._updateElementSize()}setDirection(e){this._config=ae(w({},this._config),{direction:e}),this._updateElementDirection()}addPanelClass(e){this._pane&&this._toggleClasses(this._pane,e,!0)}removePanelClass(e){this._pane&&this._toggleClasses(this._pane,e,!1)}getDirection(){let e=this._config.direction;return e?typeof e=="string"?e:e.value:"ltr"}updateScrollStrategy(e){e!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=e,this.hasAttached()&&(e.attach(this),e.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;let e=this._pane.style;e.width=it(this._config.width),e.height=it(this._config.height),e.minWidth=it(this._config.minWidth),e.minHeight=it(this._config.minHeight),e.maxWidth=it(this._config.maxWidth),e.maxHeight=it(this._config.maxHeight)}_togglePointerEvents(e){this._pane.style.pointerEvents=e?"":"none"}_attachBackdrop(){let e="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(e)})}):this._backdropElement.classList.add(e)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){let e=this._backdropElement;if(e){if(this._animationsDisabled){this._disposeBackdrop(e);return}e.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{e.addEventListener("transitionend",this._backdropTransitionendHandler)}),e.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(e)},500))}}_toggleClasses(e,i,t){let r=qo(i||[]).filter(o=>!!o);r.length&&(t?e.classList.add(...r):e.classList.remove(...r))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{let e=this._ngZone.onStable.pipe(ne(rt(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||this._pane.children.length===0)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),e.unsubscribe())})})}_disposeScrollStrategy(){let e=this._scrollStrategy;e&&(e.disable(),e.detach&&e.detach())}_disposeBackdrop(e){e&&(e.removeEventListener("click",this._backdropClickHandler),e.removeEventListener("transitionend",this._backdropTransitionendHandler),e.remove(),this._backdropElement===e&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}},Kx="cdk-overlay-connected-position-bounding-box",eP=/([A-Za-z%]+)$/,Dg=class{get positions(){return this._preferredPositions}constructor(e,i,t,r,o){this._viewportRuler=i,this._document=t,this._platform=r,this._overlayContainer=o,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new T,this._resizeSubscription=ve.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(e)}attach(e){this._overlayRef&&this._overlayRef,this._validatePositions(),e.hostElement.classList.add(Kx),this._overlayRef=e,this._boundingBox=e.hostElement,this._pane=e.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition){this.reapplyLastPosition();return}this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let e=this._originRect,i=this._overlayRect,t=this._viewportRect,r=this._containerRect,o=[],s;for(let a of this._preferredPositions){let l=this._getOriginPoint(e,r,a),c=this._getOverlayPoint(l,i,a),d=this._getOverlayFit(c,i,t,a);if(d.isCompletelyWithinViewport){this._isPushed=!1,this._applyPosition(a,l);return}if(this._canFitWithFlexibleDimensions(d,c,t)){o.push({position:a,origin:l,overlayRect:i,boundingBoxRect:this._calculateBoundingBoxRect(l,a)});continue}(!s||s.overlayFit.visibleAreal&&(l=d,a=c)}this._isPushed=!1,this._applyPosition(a.position,a.origin);return}if(this._canPush){this._isPushed=!0,this._applyPosition(s.position,s.originPoint);return}this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&Br(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(Kx),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;let e=this._lastPosition;if(e){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let i=this._getOriginPoint(this._originRect,this._containerRect,e);this._applyPosition(e,i)}else this.apply()}withScrollableContainers(e){return this._scrollables=e,this}withPositions(e){return this._preferredPositions=e,e.indexOf(this._lastPosition)===-1&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(e){return this._viewportMargin=e,this}withFlexibleDimensions(e=!0){return this._hasFlexibleDimensions=e,this}withGrowAfterOpen(e=!0){return this._growAfterOpen=e,this}withPush(e=!0){return this._canPush=e,this}withLockedPosition(e=!0){return this._positionLocked=e,this}setOrigin(e){return this._origin=e,this}withDefaultOffsetX(e){return this._offsetX=e,this}withDefaultOffsetY(e){return this._offsetY=e,this}withTransformOriginOn(e){return this._transformOriginSelector=e,this}_getOriginPoint(e,i,t){let r;if(t.originX=="center")r=e.left+e.width/2;else{let s=this._isRtl()?e.right:e.left,a=this._isRtl()?e.left:e.right;r=t.originX=="start"?s:a}i.left<0&&(r-=i.left);let o;return t.originY=="center"?o=e.top+e.height/2:o=t.originY=="top"?e.top:e.bottom,i.top<0&&(o-=i.top),{x:r,y:o}}_getOverlayPoint(e,i,t){let r;t.overlayX=="center"?r=-i.width/2:t.overlayX==="start"?r=this._isRtl()?-i.width:0:r=this._isRtl()?0:-i.width;let o;return t.overlayY=="center"?o=-i.height/2:o=t.overlayY=="top"?0:-i.height,{x:e.x+r,y:e.y+o}}_getOverlayFit(e,i,t,r){let o=Jx(i),{x:s,y:a}=e,l=this._getOffset(r,"x"),c=this._getOffset(r,"y");l&&(s+=l),c&&(a+=c);let d=0-s,u=s+o.width-t.width,h=0-a,m=a+o.height-t.height,g=this._subtractOverflows(o.width,d,u),v=this._subtractOverflows(o.height,h,m),E=g*v;return{visibleArea:E,isCompletelyWithinViewport:o.width*o.height===E,fitsInViewportVertically:v===o.height,fitsInViewportHorizontally:g==o.width}}_canFitWithFlexibleDimensions(e,i,t){if(this._hasFlexibleDimensions){let r=t.bottom-i.y,o=t.right-i.x,s=Xx(this._overlayRef.getConfig().minHeight),a=Xx(this._overlayRef.getConfig().minWidth),l=e.fitsInViewportVertically||s!=null&&s<=r,c=e.fitsInViewportHorizontally||a!=null&&a<=o;return l&&c}return!1}_pushOverlayOnScreen(e,i,t){if(this._previousPushAmount&&this._positionLocked)return{x:e.x+this._previousPushAmount.x,y:e.y+this._previousPushAmount.y};let r=Jx(i),o=this._viewportRect,s=Math.max(e.x+r.width-o.width,0),a=Math.max(e.y+r.height-o.height,0),l=Math.max(o.top-t.top-e.y,0),c=Math.max(o.left-t.left-e.x,0),d=0,u=0;return r.width<=o.width?d=c||-s:d=e.xg&&!this._isInitialRender&&!this._growAfterOpen&&(s=e.y-g/2)}let l=i.overlayX==="start"&&!r||i.overlayX==="end"&&r,c=i.overlayX==="end"&&!r||i.overlayX==="start"&&r,d,u,h;if(c)h=t.width-e.x+this._viewportMargin,d=e.x-this._viewportMargin;else if(l)u=e.x,d=t.right-e.x;else{let m=Math.min(t.right-e.x+t.left,e.x),g=this._lastBoundingBoxSize.width;d=m*2,u=e.x-m,d>g&&!this._isInitialRender&&!this._growAfterOpen&&(u=e.x-g/2)}return{top:s,left:u,bottom:a,right:h,width:d,height:o}}_setBoundingBoxStyles(e,i){let t=this._calculateBoundingBoxRect(e,i);!this._isInitialRender&&!this._growAfterOpen&&(t.height=Math.min(t.height,this._lastBoundingBoxSize.height),t.width=Math.min(t.width,this._lastBoundingBoxSize.width));let r={};if(this._hasExactPosition())r.top=r.left="0",r.bottom=r.right=r.maxHeight=r.maxWidth="",r.width=r.height="100%";else{let o=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;r.height=it(t.height),r.top=it(t.top),r.bottom=it(t.bottom),r.width=it(t.width),r.left=it(t.left),r.right=it(t.right),i.overlayX==="center"?r.alignItems="center":r.alignItems=i.overlayX==="end"?"flex-end":"flex-start",i.overlayY==="center"?r.justifyContent="center":r.justifyContent=i.overlayY==="bottom"?"flex-end":"flex-start",o&&(r.maxHeight=it(o)),s&&(r.maxWidth=it(s))}this._lastBoundingBoxSize=t,Br(this._boundingBox.style,r)}_resetBoundingBoxStyles(){Br(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){Br(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(e,i){let t={},r=this._hasExactPosition(),o=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(r){let d=this._viewportRuler.getViewportScrollPosition();Br(t,this._getExactOverlayY(i,e,d)),Br(t,this._getExactOverlayX(i,e,d))}else t.position="static";let a="",l=this._getOffset(i,"x"),c=this._getOffset(i,"y");l&&(a+=`translateX(${l}px) `),c&&(a+=`translateY(${c}px)`),t.transform=a.trim(),s.maxHeight&&(r?t.maxHeight=it(s.maxHeight):o&&(t.maxHeight="")),s.maxWidth&&(r?t.maxWidth=it(s.maxWidth):o&&(t.maxWidth="")),Br(this._pane.style,t)}_getExactOverlayY(e,i,t){let r={top:"",bottom:""},o=this._getOverlayPoint(i,this._overlayRect,e);if(this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,t)),e.overlayY==="bottom"){let s=this._document.documentElement.clientHeight;r.bottom=`${s-(o.y+this._overlayRect.height)}px`}else r.top=it(o.y);return r}_getExactOverlayX(e,i,t){let r={left:"",right:""},o=this._getOverlayPoint(i,this._overlayRect,e);this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,t));let s;if(this._isRtl()?s=e.overlayX==="end"?"left":"right":s=e.overlayX==="end"?"right":"left",s==="right"){let a=this._document.documentElement.clientWidth;r.right=`${a-(o.x+this._overlayRect.width)}px`}else r.left=it(o.x);return r}_getScrollVisibility(){let e=this._getOriginRect(),i=this._pane.getBoundingClientRect(),t=this._scrollables.map(r=>r.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:Qx(e,t),isOriginOutsideView:wg(e,t),isOverlayClipped:Qx(i,t),isOverlayOutsideView:wg(i,t)}}_subtractOverflows(e,...i){return i.reduce((t,r)=>t-Math.max(r,0),e)}_getNarrowedViewportRect(){let e=this._document.documentElement.clientWidth,i=this._document.documentElement.clientHeight,t=this._viewportRuler.getViewportScrollPosition();return{top:t.top+this._viewportMargin,left:t.left+this._viewportMargin,right:t.left+e-this._viewportMargin,bottom:t.top+i-this._viewportMargin,width:e-2*this._viewportMargin,height:i-2*this._viewportMargin}}_isRtl(){return this._overlayRef.getDirection()==="rtl"}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(e,i){return i==="x"?e.offsetX==null?this._offsetX:e.offsetX:e.offsetY==null?this._offsetY:e.offsetY}_validatePositions(){}_addPanelClasses(e){this._pane&&qo(e).forEach(i=>{i!==""&&this._appliedPanelClasses.indexOf(i)===-1&&(this._appliedPanelClasses.push(i),this._pane.classList.add(i))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(e=>{this._pane.classList.remove(e)}),this._appliedPanelClasses=[])}_getOriginRect(){let e=this._origin;if(e instanceof k)return e.nativeElement.getBoundingClientRect();if(e instanceof Element)return e.getBoundingClientRect();let i=e.width||0,t=e.height||0;return{top:e.y,bottom:e.y+t,left:e.x,right:e.x+i,height:t,width:i}}};function Br(n,e){for(let i in e)e.hasOwnProperty(i)&&(n[i]=e[i]);return n}function Xx(n){if(typeof n!="number"&&n!=null){let[e,i]=n.split(eP);return!i||i==="px"?parseFloat(e):null}return n||null}function Jx(n){return{top:Math.floor(n.top),right:Math.floor(n.right),bottom:Math.floor(n.bottom),left:Math.floor(n.left),width:Math.floor(n.width),height:Math.floor(n.height)}}var eC="cdk-global-overlay-wrapper",Eg=class{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(e){let i=e.getConfig();this._overlayRef=e,this._width&&!i.width&&e.updateSize({width:this._width}),this._height&&!i.height&&e.updateSize({height:this._height}),e.hostElement.classList.add(eC),this._isDisposed=!1}top(e=""){return this._bottomOffset="",this._topOffset=e,this._alignItems="flex-start",this}left(e=""){return this._xOffset=e,this._xPosition="left",this}bottom(e=""){return this._topOffset="",this._bottomOffset=e,this._alignItems="flex-end",this}right(e=""){return this._xOffset=e,this._xPosition="right",this}start(e=""){return this._xOffset=e,this._xPosition="start",this}end(e=""){return this._xOffset=e,this._xPosition="end",this}width(e=""){return this._overlayRef?this._overlayRef.updateSize({width:e}):this._width=e,this}height(e=""){return this._overlayRef?this._overlayRef.updateSize({height:e}):this._height=e,this}centerHorizontally(e=""){return this.left(e),this._xPosition="center",this}centerVertically(e=""){return this.top(e),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;let e=this._overlayRef.overlayElement.style,i=this._overlayRef.hostElement.style,t=this._overlayRef.getConfig(),{width:r,height:o,maxWidth:s,maxHeight:a}=t,l=(r==="100%"||r==="100vw")&&(!s||s==="100%"||s==="100vw"),c=(o==="100%"||o==="100vh")&&(!a||a==="100%"||a==="100vh"),d=this._xPosition,u=this._xOffset,h=this._overlayRef.getConfig().direction==="rtl",m="",g="",v="";l?v="flex-start":d==="center"?(v="center",h?g=u:m=u):h?d==="left"||d==="end"?(v="flex-end",m=u):(d==="right"||d==="start")&&(v="flex-start",g=u):d==="left"||d==="start"?(v="flex-start",m=u):(d==="right"||d==="end")&&(v="flex-end",g=u),e.position=this._cssPosition,e.marginLeft=l?"0":m,e.marginTop=c?"0":this._topOffset,e.marginBottom=this._bottomOffset,e.marginRight=l?"0":g,i.justifyContent=v,i.alignItems=c?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;let e=this._overlayRef.overlayElement.style,i=this._overlayRef.hostElement,t=i.style;i.classList.remove(eC),t.justifyContent=t.alignItems=e.marginTop=e.marginBottom=e.marginLeft=e.marginRight=e.position="",this._overlayRef=null,this._isDisposed=!0}},tP=(()=>{let e=class e{constructor(t,r,o,s){this._viewportRuler=t,this._document=r,this._platform=o,this._overlayContainer=s}global(){return new Eg}flexibleConnectedTo(t){return new Dg(t,this._viewportRuler,this._document,this._platform,this._overlayContainer)}};e.\u0275fac=function(r){return new(r||e)(p(Qi),p(N),p(be),p(os))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),nP=0,et=(()=>{let e=class e{constructor(t,r,o,s,a,l,c,d,u,h,m,g){this.scrollStrategies=t,this._overlayContainer=r,this._componentFactoryResolver=o,this._positionBuilder=s,this._keyboardDispatcher=a,this._injector=l,this._ngZone=c,this._document=d,this._directionality=u,this._location=h,this._outsideClickDispatcher=m,this._animationsModuleType=g}create(t){let r=this._createHostElement(),o=this._createPaneElement(r),s=this._createPortalOutlet(o),a=new ii(t);return a.direction=a.direction||this._directionality.value,new xi(s,r,o,a,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,this._animationsModuleType==="NoopAnimations")}position(){return this._positionBuilder}_createPaneElement(t){let r=this._document.createElement("div");return r.id=`cdk-overlay-${nP++}`,r.classList.add("cdk-overlay-pane"),t.appendChild(r),r}_createHostElement(){let t=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(t),t}_createPortalOutlet(t){return this._appRef||(this._appRef=this._injector.get(Wt)),new $a(t,this._componentFactoryResolver,this._appRef,this._injector,this._document)}};e.\u0275fac=function(r){return new(r||e)(p(KF),p(os),p(mi),p(tP),p(XF),p(Ne),p(A),p(N),p(Dt),p(vi),p(JF),p(ct,8))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),iP=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],rP=new y("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{let n=C(et);return()=>n.scrollStrategies.reposition()}}),lu=(()=>{let e=class e{constructor(t){this.elementRef=t}};e.\u0275fac=function(r){return new(r||e)(f(k))},e.\u0275dir=O({type:e,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0});let n=e;return n})(),Sg=(()=>{let e=class e{get offsetX(){return this._offsetX}set offsetX(t){this._offsetX=t,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(t){this._offsetY=t,this._position&&this._updatePositionStrategy(this._position)}get disposeOnNavigation(){return this._disposeOnNavigation}set disposeOnNavigation(t){this._disposeOnNavigation=t}constructor(t,r,o,s,a){this._overlay=t,this._dir=a,this._backdropSubscription=ve.EMPTY,this._attachSubscription=ve.EMPTY,this._detachSubscription=ve.EMPTY,this._positionSubscription=ve.EMPTY,this._disposeOnNavigation=!1,this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.hasBackdrop=!1,this.lockPosition=!1,this.flexibleDimensions=!1,this.growAfterOpen=!1,this.push=!1,this.backdropClick=new X,this.positionChange=new X,this.attach=new X,this.detach=new X,this.overlayKeydown=new X,this.overlayOutsideClick=new X,this._templatePortal=new Mn(r,o),this._scrollStrategyFactory=s,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(t){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),t.origin&&this.open&&this._position.apply()),t.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=iP);let t=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=t.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=t.detachments().subscribe(()=>this.detach.emit()),t.keydownEvents().subscribe(r=>{this.overlayKeydown.next(r),r.keyCode===27&&!this.disableClose&&!bt(r)&&(r.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(r=>{this.overlayOutsideClick.next(r)})}_buildConfig(){let t=this._position=this.positionStrategy||this._createPositionStrategy(),r=new ii({direction:this._dir,positionStrategy:t,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop,disposeOnNavigation:this.disposeOnNavigation});return(this.width||this.width===0)&&(r.width=this.width),(this.height||this.height===0)&&(r.height=this.height),(this.minWidth||this.minWidth===0)&&(r.minWidth=this.minWidth),(this.minHeight||this.minHeight===0)&&(r.minHeight=this.minHeight),this.backdropClass&&(r.backdropClass=this.backdropClass),this.panelClass&&(r.panelClass=this.panelClass),r}_updatePositionStrategy(t){let r=this.positions.map(o=>({originX:o.originX,originY:o.originY,overlayX:o.overlayX,overlayY:o.overlayY,offsetX:o.offsetX||this.offsetX,offsetY:o.offsetY||this.offsetY,panelClass:o.panelClass||void 0}));return t.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(r).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){let t=this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());return this._updatePositionStrategy(t),t}_getFlexibleConnectedPositionStrategyOrigin(){return this.origin instanceof lu?this.origin.elementRef:this.origin}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(t=>{this.backdropClick.emit(t)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(kf(()=>this.positionChange.observers.length>0)).subscribe(t=>{this.positionChange.emit(t),this.positionChange.observers.length===0&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}};e.\u0275fac=function(r){return new(r||e)(f(et),f(Ve),f(Ke),f(rP),f(Dt,8))},e.\u0275dir=O({type:e,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:["cdkConnectedOverlayOrigin","origin"],positions:["cdkConnectedOverlayPositions","positions"],positionStrategy:["cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:["cdkConnectedOverlayOffsetX","offsetX"],offsetY:["cdkConnectedOverlayOffsetY","offsetY"],width:["cdkConnectedOverlayWidth","width"],height:["cdkConnectedOverlayHeight","height"],minWidth:["cdkConnectedOverlayMinWidth","minWidth"],minHeight:["cdkConnectedOverlayMinHeight","minHeight"],backdropClass:["cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:["cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:["cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:["cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:["cdkConnectedOverlayOpen","open"],disableClose:["cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:["cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:["cdkConnectedOverlayHasBackdrop","hasBackdrop",fe],lockPosition:["cdkConnectedOverlayLockPosition","lockPosition",fe],flexibleDimensions:["cdkConnectedOverlayFlexibleDimensions","flexibleDimensions",fe],growAfterOpen:["cdkConnectedOverlayGrowAfterOpen","growAfterOpen",fe],push:["cdkConnectedOverlayPush","push",fe],disposeOnNavigation:["cdkConnectedOverlayDisposeOnNavigation","disposeOnNavigation",fe]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[Ue,qe]});let n=e;return n})();function sP(n,e){if(n&1){let i=Rt();_(0,"div",1)(1,"button",2),j("click",function(){Ye(i);let r=U();return Ze(r.action())}),M(2),b()()}if(n&2){let i=U();D(2),Ae(" ",i.data.action," ")}}var aP=["label"];function lP(n,e){}var cP=Math.pow(2,31)-1,Ya=class{constructor(e,i){this._overlayRef=i,this._afterDismissed=new T,this._afterOpened=new T,this._onAction=new T,this._dismissedByAction=!1,this.containerInstance=e,e._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(e){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(e,cP))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}},dt=new y("MatSnackBarData"),ss=class{constructor(){this.politeness="assertive",this.announcementMessage="",this.duration=0,this.data=null,this.horizontalPosition="center",this.verticalPosition="bottom"}},dP=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=O({type:e,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"],standalone:!0});let n=e;return n})(),uP=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=O({type:e,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"],standalone:!0});let n=e;return n})(),fP=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=O({type:e,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"],standalone:!0});let n=e;return n})(),hP=(()=>{let e=class e{constructor(t,r){this.snackBarRef=t,this.data=r}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}};e.\u0275fac=function(r){return new(r||e)(f(Ya),f(dt))},e.\u0275cmp=V({type:e,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],standalone:!0,features:[B],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions",""],["mat-button","","matSnackBarAction","",3,"click"]],template:function(r,o){r&1&&(_(0,"div",0),M(1),b(),z(2,sP,3,1,"div",1)),r&2&&(D(1),Ae(" ",o.data.message,` +`),D(1),pe(2,o.hasAction?2:-1))},dependencies:[Lt,dP,uP,fP],styles:[".mat-mdc-simple-snack-bar{display:flex}"],encapsulation:2,changeDetection:0});let n=e;return n})(),mP={snackBarState:ti("state",[ni("void, hidden",at({transform:"scale(0.8)",opacity:0})),ni("visible",at({transform:"scale(1)",opacity:1})),Zt("* => visible",fn("150ms cubic-bezier(0, 0, 0.2, 1)")),Zt("* => void, * => hidden",fn("75ms cubic-bezier(0.4, 0.0, 1, 1)",at({opacity:0})))])},pP=0,gP=(()=>{let e=class e extends Yi{constructor(t,r,o,s,a){super(),this._ngZone=t,this._elementRef=r,this._changeDetectorRef=o,this._platform=s,this.snackBarConfig=a,this._document=C(N),this._trackedModals=new Set,this._announceDelay=150,this._destroyed=!1,this._onAnnounce=new T,this._onExit=new T,this._onEnter=new T,this._animationState="void",this._liveElementId=`mat-snack-bar-container-live-${pP++}`,this.attachDomPortal=l=>{this._assertNotAttached();let c=this._portalOutlet.attachDomPortal(l);return this._afterPortalAttached(),c},a.politeness==="assertive"&&!a.announcementMessage?this._live="assertive":a.politeness==="off"?this._live="off":this._live="polite",this._platform.FIREFOX&&(this._live==="polite"&&(this._role="status"),this._live==="assertive"&&(this._role="alert"))}attachComponentPortal(t){this._assertNotAttached();let r=this._portalOutlet.attachComponentPortal(t);return this._afterPortalAttached(),r}attachTemplatePortal(t){this._assertNotAttached();let r=this._portalOutlet.attachTemplatePortal(t);return this._afterPortalAttached(),r}onAnimationEnd(t){let{fromState:r,toState:o}=t;if((o==="void"&&r!=="void"||o==="hidden")&&this._completeExit(),o==="visible"){let s=this._onEnter;this._ngZone.run(()=>{s.next(),s.complete()})}}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.markForCheck(),this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce())}exit(){return this._ngZone.run(()=>{this._animationState="hidden",this._changeDetectorRef.markForCheck(),this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId)}),this._onExit}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){queueMicrotask(()=>{this._onExit.next(),this._onExit.complete()})}_afterPortalAttached(){let t=this._elementRef.nativeElement,r=this.snackBarConfig.panelClass;r&&(Array.isArray(r)?r.forEach(a=>t.classList.add(a)):t.classList.add(r)),this._exposeToModals();let o=this._label.nativeElement,s="mdc-snackbar__label";o.classList.toggle(s,!o.querySelector(`.${s}`))}_exposeToModals(){let t=this._liveElementId,r=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let o=0;o{let r=t.getAttribute("aria-owns");if(r){let o=r.replace(this._liveElementId,"").trim();o.length>0?t.setAttribute("aria-owns",o):t.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{let t=this._elementRef.nativeElement.querySelector("[aria-hidden]"),r=this._elementRef.nativeElement.querySelector("[aria-live]");if(t&&r){let o=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&t.contains(document.activeElement)&&(o=document.activeElement),t.removeAttribute("aria-hidden"),r.appendChild(t),o?.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}};e.\u0275fac=function(r){return new(r||e)(f(A),f(k),f(Oe),f(be),f(ss))},e.\u0275cmp=V({type:e,selectors:[["mat-snack-bar-container"]],viewQuery:function(r,o){if(r&1&&(Be(Zi,7),Be(aP,7)),r&2){let s;q(s=Y())&&(o._portalOutlet=s.first),q(s=Y())&&(o._label=s.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container","mdc-snackbar--open"],hostVars:1,hostBindings:function(r,o){r&1&&Bm("@state.done",function(a){return o.onAnimationEnd(a)}),r&2&&Vm("@state",o._animationState)},standalone:!0,features:[ue,B],decls:6,vars:3,consts:[[1,"mdc-snackbar__surface"],[1,"mat-mdc-snack-bar-label"],["label",""],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(r,o){r&1&&(_(0,"div",0)(1,"div",1,2)(3,"div",3),z(4,lP,0,0,"ng-template",4),b(),ee(5,"div"),b()()),r&2&&(D(5),we("aria-live",o._live)("role",o._role)("id",o._liveElementId))},dependencies:[Zi],styles:['.mdc-snackbar{display:none;position:fixed;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-snackbar--opening,.mdc-snackbar--open,.mdc-snackbar--closing{display:flex}.mdc-snackbar--open .mdc-snackbar__label,.mdc-snackbar--open .mdc-snackbar__actions{visibility:visible}.mdc-snackbar__surface{padding-left:0;padding-right:8px;display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-snackbar__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-snackbar__surface::before{border-color:CanvasText}}[dir=rtl] .mdc-snackbar__surface,.mdc-snackbar__surface[dir=rtl]{padding-left:8px;padding-right:0}.mdc-snackbar--open .mdc-snackbar__surface{transform:scale(1);opacity:1;pointer-events:auto}.mdc-snackbar--closing .mdc-snackbar__surface{transform:scale(1)}.mdc-snackbar__label{padding-left:16px;padding-right:8px;width:100%;flex-grow:1;box-sizing:border-box;margin:0;visibility:hidden;padding-top:14px;padding-bottom:14px}[dir=rtl] .mdc-snackbar__label,.mdc-snackbar__label[dir=rtl]{padding-left:8px;padding-right:16px}.mdc-snackbar__label::before{display:inline;content:attr(data-mdc-snackbar-label-text)}.mdc-snackbar__actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box;visibility:hidden}.mdc-snackbar__action+.mdc-snackbar__dismiss{margin-left:8px;margin-right:0}[dir=rtl] .mdc-snackbar__action+.mdc-snackbar__dismiss,.mdc-snackbar__action+.mdc-snackbar__dismiss[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-snack-bar-container{margin:8px;position:static}.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:344px}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:100%}}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container{width:100vw}}.mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:672px}.mat-mdc-snack-bar-container .mdc-snackbar__surface{box-shadow:0px 3px 5px -1px rgba(0, 0, 0, 0.2), 0px 6px 10px 0px rgba(0, 0, 0, 0.14), 0px 1px 18px 0px rgba(0, 0, 0, 0.12)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{background-color:var(--mdc-snackbar-container-color)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:var(--mdc-snackbar-container-shape)}.mat-mdc-snack-bar-container .mdc-snackbar__label{color:var(--mdc-snackbar-supporting-text-color)}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-size:var(--mdc-snackbar-supporting-text-size);font-family:var(--mdc-snackbar-supporting-text-font);font-weight:var(--mdc-snackbar-supporting-text-weight);line-height:var(--mdc-snackbar-supporting-text-line-height)}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-snack-bar-button-color);--mat-text-button-state-layer-color:currentColor;--mat-text-button-ripple-color:currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{opacity:.1}.mat-mdc-snack-bar-container .mdc-snackbar__label::before{display:none}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-handset .mdc-snackbar__surface{width:100%}'],encapsulation:2,data:{animation:[mP.snackBarState]}});let n=e;return n})();function _P(){return new ss}var bP=new y("mat-snack-bar-default-options",{providedIn:"root",factory:_P}),nC=(()=>{let e=class e{get _openedSnackBarRef(){let t=this._parentSnackBar;return t?t._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(t){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=t:this._snackBarRefAtThisLevel=t}constructor(t,r,o,s,a,l){this._overlay=t,this._live=r,this._injector=o,this._breakpointObserver=s,this._parentSnackBar=a,this._defaultConfig=l,this._snackBarRefAtThisLevel=null,this.simpleSnackBarComponent=hP,this.snackBarContainerComponent=gP,this.handsetCssClass="mat-mdc-snack-bar-handset"}openFromComponent(t,r){return this._attach(t,r)}openFromTemplate(t,r){return this._attach(t,r)}open(t,r="",o){let s=w(w({},this._defaultConfig),o);return s.data={message:t,action:r},s.announcementMessage===t&&(s.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,s)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(t,r){let o=r&&r.viewContainerRef&&r.viewContainerRef.injector,s=Ne.create({parent:o||this._injector,providers:[{provide:ss,useValue:r}]}),a=new Sn(this.snackBarContainerComponent,r.viewContainerRef,s),l=t.attach(a);return l.instance.snackBarConfig=r,l.instance}_attach(t,r){let o=w(w(w({},new ss),this._defaultConfig),r),s=this._createOverlay(o),a=this._attachSnackBarContainer(s,o),l=new Ya(a,s);if(t instanceof Ve){let c=new Mn(t,null,{$implicit:o.data,snackBarRef:l});l.instance=a.attachTemplatePortal(c)}else{let c=this._createInjector(o,l),d=new Sn(t,void 0,c),u=a.attachComponentPortal(d);l.instance=u.instance}return this._breakpointObserver.observe(yx.HandsetPortrait).pipe(ne(s.detachments())).subscribe(c=>{s.overlayElement.classList.toggle(this.handsetCssClass,c.matches)}),o.announcementMessage&&a._onAnnounce.subscribe(()=>{this._live.announce(o.announcementMessage,o.politeness)}),this._animateSnackBar(l,o),this._openedSnackBarRef=l,this._openedSnackBarRef}_animateSnackBar(t,r){t.afterDismissed().subscribe(()=>{this._openedSnackBarRef==t&&(this._openedSnackBarRef=null),r.announcementMessage&&this._live.clear()}),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{t.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):t.containerInstance.enter(),r.duration&&r.duration>0&&t.afterOpened().subscribe(()=>t._dismissAfter(r.duration))}_createOverlay(t){let r=new ii;r.direction=t.direction;let o=this._overlay.position().global(),s=t.direction==="rtl",a=t.horizontalPosition==="left"||t.horizontalPosition==="start"&&!s||t.horizontalPosition==="end"&&s,l=!a&&t.horizontalPosition!=="center";return a?o.left("0"):l?o.right("0"):o.centerHorizontally(),t.verticalPosition==="top"?o.top("0"):o.bottom("0"),r.positionStrategy=o,this._overlay.create(r)}_createInjector(t,r){let o=t&&t.viewContainerRef&&t.viewContainerRef.injector;return Ne.create({parent:o||this._injector,providers:[{provide:Ya,useValue:r},{provide:dt,useValue:t.data}]})}};e.\u0275fac=function(r){return new(r||e)(p(et),p(Jd),p(Ne),p(Ud),p(e,12),p(bP))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var yP=["*"],cu;function wP(){if(cu===void 0&&(cu=null,typeof window<"u")){let n=window;n.trustedTypes!==void 0&&(cu=n.trustedTypes.createPolicy("angular#components",{createHTML:e=>e}))}return cu}function Qa(n){return wP()?.createHTML(n)||n}function iC(n){return Error(`Unable to find icon with the name "${n}"`)}function xP(){return Error("Could not find HttpClient provider for use with Angular Material icons. Please include the HttpClientModule from @angular/common/http in your app imports.")}function rC(n){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${n}".`)}function oC(n){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${n}".`)}var Di=class{constructor(e,i,t){this.url=e,this.svgText=i,this.options=t}},CP=(()=>{let e=class e{constructor(t,r,o,s){this._httpClient=t,this._sanitizer=r,this._errorHandler=s,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=o}addSvgIcon(t,r,o){return this.addSvgIconInNamespace("",t,r,o)}addSvgIconLiteral(t,r,o){return this.addSvgIconLiteralInNamespace("",t,r,o)}addSvgIconInNamespace(t,r,o,s){return this._addSvgIconConfig(t,r,new Di(o,null,s))}addSvgIconResolver(t){return this._resolvers.push(t),this}addSvgIconLiteralInNamespace(t,r,o,s){let a=this._sanitizer.sanitize(Mt.HTML,o);if(!a)throw oC(o);let l=Qa(a);return this._addSvgIconConfig(t,r,new Di("",l,s))}addSvgIconSet(t,r){return this.addSvgIconSetInNamespace("",t,r)}addSvgIconSetLiteral(t,r){return this.addSvgIconSetLiteralInNamespace("",t,r)}addSvgIconSetInNamespace(t,r,o){return this._addSvgIconSetConfig(t,new Di(r,null,o))}addSvgIconSetLiteralInNamespace(t,r,o){let s=this._sanitizer.sanitize(Mt.HTML,r);if(!s)throw oC(r);let a=Qa(s);return this._addSvgIconSetConfig(t,new Di("",a,o))}registerFontClassAlias(t,r=t){return this._fontCssClassesByAlias.set(t,r),this}classNameForFontAlias(t){return this._fontCssClassesByAlias.get(t)||t}setDefaultFontSetClass(...t){return this._defaultFontSetClass=t,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(t){let r=this._sanitizer.sanitize(Mt.RESOURCE_URL,t);if(!r)throw rC(t);let o=this._cachedIconsByUrl.get(r);return o?R(du(o)):this._loadSvgIconFromConfig(new Di(t,null)).pipe(Ee(s=>this._cachedIconsByUrl.set(r,s)),F(s=>du(s)))}getNamedSvgIcon(t,r=""){let o=sC(r,t),s=this._svgIconConfigs.get(o);if(s)return this._getSvgFromConfig(s);if(s=this._getIconConfigFromResolvers(r,t),s)return this._svgIconConfigs.set(o,s),this._getSvgFromConfig(s);let a=this._iconSetConfigs.get(r);return a?this._getSvgFromIconSetConfigs(t,a):Pn(iC(o))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(t){return t.svgText?R(du(this._svgElementFromConfig(t))):this._loadSvgIconFromConfig(t).pipe(F(r=>du(r)))}_getSvgFromIconSetConfigs(t,r){let o=this._extractIconWithNameFromAnySet(t,r);if(o)return R(o);let s=r.filter(a=>!a.svgText).map(a=>this._loadSvgIconSetFromConfig(a).pipe(Nn(l=>{let d=`Loading icon set URL: ${this._sanitizer.sanitize(Mt.RESOURCE_URL,a.url)} failed: ${l.message}`;return this._errorHandler.handleError(new Error(d)),R(null)})));return ks(s).pipe(F(()=>{let a=this._extractIconWithNameFromAnySet(t,r);if(!a)throw iC(t);return a}))}_extractIconWithNameFromAnySet(t,r){for(let o=r.length-1;o>=0;o--){let s=r[o];if(s.svgText&&s.svgText.toString().indexOf(t)>-1){let a=this._svgElementFromConfig(s),l=this._extractSvgIconFromSet(a,t,s.options);if(l)return l}}return null}_loadSvgIconFromConfig(t){return this._fetchIcon(t).pipe(Ee(r=>t.svgText=r),F(()=>this._svgElementFromConfig(t)))}_loadSvgIconSetFromConfig(t){return t.svgText?R(null):this._fetchIcon(t).pipe(Ee(r=>t.svgText=r))}_extractSvgIconFromSet(t,r,o){let s=t.querySelector(`[id="${r}"]`);if(!s)return null;let a=s.cloneNode(!0);if(a.removeAttribute("id"),a.nodeName.toLowerCase()==="svg")return this._setSvgAttributes(a,o);if(a.nodeName.toLowerCase()==="symbol")return this._setSvgAttributes(this._toSvgElement(a),o);let l=this._svgElementFromString(Qa(""));return l.appendChild(a),this._setSvgAttributes(l,o)}_svgElementFromString(t){let r=this._document.createElement("DIV");r.innerHTML=t;let o=r.querySelector("svg");if(!o)throw Error(" tag not found");return o}_toSvgElement(t){let r=this._svgElementFromString(Qa("")),o=t.attributes;for(let s=0;sQa(d)),Ln(()=>this._inProgressUrlFetches.delete(a)),ki());return this._inProgressUrlFetches.set(a,c),c}_addSvgIconConfig(t,r,o){return this._svgIconConfigs.set(sC(t,r),o),this}_addSvgIconSetConfig(t,r){let o=this._iconSetConfigs.get(t);return o?o.push(r):this._iconSetConfigs.set(t,[r]),this}_svgElementFromConfig(t){if(!t.svgElement){let r=this._svgElementFromString(t.svgText);this._setSvgAttributes(r,t.options),t.svgElement=r}return t.svgElement}_getIconConfigFromResolvers(t,r){for(let o=0;oe?e.pathname+e.search:""}}var aC=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],MP=aC.map(n=>`[${n}]`).join(", "),TP=/^url\(['"]?#(.*?)['"]?\)$/,zr=(()=>{let e=class e{get color(){return this._color||this._defaultColor}set color(t){this._color=t}get svgIcon(){return this._svgIcon}set svgIcon(t){t!==this._svgIcon&&(t?this._updateSvgIcon(t):this._svgIcon&&this._clearSvgElement(),this._svgIcon=t)}get fontSet(){return this._fontSet}set fontSet(t){let r=this._cleanupFontValue(t);r!==this._fontSet&&(this._fontSet=r,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(t){let r=this._cleanupFontValue(t);r!==this._fontIcon&&(this._fontIcon=r,this._updateFontIconClasses())}constructor(t,r,o,s,a,l){this._elementRef=t,this._iconRegistry=r,this._location=s,this._errorHandler=a,this.inline=!1,this._previousFontSetClass=[],this._currentIconFetch=ve.EMPTY,l&&(l.color&&(this.color=this._defaultColor=l.color),l.fontSet&&(this.fontSet=l.fontSet)),o||t.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(t){if(!t)return["",""];let r=t.split(":");switch(r.length){case 1:return["",r[0]];case 2:return r;default:throw Error(`Invalid icon name: "${t}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){let t=this._elementsWithExternalReferences;if(t&&t.size){let r=this._location.getPathname();r!==this._previousPath&&(this._previousPath=r,this._prependPathToReferences(r))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(t){this._clearSvgElement();let r=this._location.getPathname();this._previousPath=r,this._cacheChildrenWithExternalReferences(t),this._prependPathToReferences(r),this._elementRef.nativeElement.appendChild(t)}_clearSvgElement(){let t=this._elementRef.nativeElement,r=t.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();r--;){let o=t.childNodes[r];(o.nodeType!==1||o.nodeName.toLowerCase()==="svg")&&o.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;let t=this._elementRef.nativeElement,r=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(o=>o.length>0);this._previousFontSetClass.forEach(o=>t.classList.remove(o)),r.forEach(o=>t.classList.add(o)),this._previousFontSetClass=r,this.fontIcon!==this._previousFontIconClass&&!r.includes("mat-ligature-font")&&(this._previousFontIconClass&&t.classList.remove(this._previousFontIconClass),this.fontIcon&&t.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(t){return typeof t=="string"?t.trim().split(" ")[0]:t}_prependPathToReferences(t){let r=this._elementsWithExternalReferences;r&&r.forEach((o,s)=>{o.forEach(a=>{s.setAttribute(a.name,`url('${t}#${a.value}')`)})})}_cacheChildrenWithExternalReferences(t){let r=t.querySelectorAll(MP),o=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let s=0;s{let l=r[s],c=l.getAttribute(a),d=c?c.match(TP):null;if(d){let u=o.get(l);u||(u=[],o.set(l,u)),u.push({name:a,value:d[1]})}})}_updateSvgIcon(t){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),t){let[r,o]=this._splitIconName(t);r&&(this._svgNamespace=r),o&&(this._svgName=o),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(o,r).pipe(ie(1)).subscribe(s=>this._setSvgElement(s),s=>{let a=`Error retrieving icon ${r}:${o}! ${s.message}`;this._errorHandler.handleError(new Error(a))})}}};e.\u0275fac=function(r){return new(r||e)(f(k),f(CP),fi("aria-hidden"),f(IP),f(Ht),f(EP,8))},e.\u0275cmp=V({type:e,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:10,hostBindings:function(r,o){r&2&&(we("data-mat-icon-type",o._usingFontIcon()?"font":"svg")("data-mat-icon-name",o._svgName||o.fontIcon)("data-mat-icon-namespace",o._svgNamespace||o.fontSet)("fontIcon",o._usingFontIcon()?o.fontIcon:null),Yn(o.color?"mat-"+o.color:""),_e("mat-icon-inline",o.inline)("mat-icon-no-color",o.color!=="primary"&&o.color!=="accent"&&o.color!=="warn"))},inputs:{color:"color",inline:["inline","inline",fe],svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],standalone:!0,features:[Ue,B],ngContentSelectors:yP,decls:1,vars:0,template:function(r,o){r&1&&(Xe(),ge(0))},styles:["mat-icon,mat-icon.mat-primary,mat-icon.mat-accent,mat-icon.mat-warn{color:var(--mat-icon-color)}.mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0});let n=e;return n})(),Hr=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({imports:[un,un]});let n=e;return n})();var Ki=(()=>{let e=class e{constructor(t){this._snackBar=t,this.horizontalPosition="center",this.verticalPosition="top"}success(t){this.open({type:"success",duration:1500,data:t})}info(t){this.open({type:"info",duration:2e3,data:t})}warning(t){this.open({type:"warning",duration:3e3,data:t})}error(t){this.open({type:"error",duration:3500,data:t})}open(t){switch(t.type){case"success":this._snackBar.openFromComponent(OP,{data:t.data,duration:t.duration,horizontalPosition:this.horizontalPosition,verticalPosition:this.verticalPosition,panelClass:["success-snackbar"]});break;case"info":this._snackBar.openFromComponent(lC,{data:t.data,duration:t.duration,horizontalPosition:this.horizontalPosition,verticalPosition:this.verticalPosition,panelClass:["info-snackbar"]});break;case"warning":this._snackBar.openFromComponent(RP,{data:t.data,duration:t.duration,horizontalPosition:this.horizontalPosition,verticalPosition:this.verticalPosition,panelClass:["warning-snackbar"]});break;case"error":this._snackBar.openFromComponent(kP,{data:t.data,duration:t.duration,horizontalPosition:this.horizontalPosition,verticalPosition:this.verticalPosition,panelClass:["error-snackbar"]});break;default:this._snackBar.openFromComponent(lC,{data:t.data,duration:t.duration,horizontalPosition:this.horizontalPosition,verticalPosition:this.verticalPosition,panelClass:["info-snackbar"]});break}}};e.\u0275fac=function(r){return new(r||e)(p(nC))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),OP=(()=>{let e=class e{constructor(t,r,o,s){this.data=t,this.duration=r,this.horizontalPosition=o,this.verticalPosition=s}};e.\u0275fac=function(r){return new(r||e)(f(dt),f(dt),f(dt),f(dt))},e.\u0275cmp=V({type:e,selectors:[["snack-message-success"]],standalone:!0,features:[B],decls:6,vars:1,consts:[[1,"snack-message-success","snack-message"],[1,"snack-message-content"]],template:function(r,o){r&1&&(_(0,"div",0)(1,"div")(2,"mat-icon"),M(3,"cancel"),b()(),_(4,"div",1),M(5),b()()),r&2&&(D(5),Ae(" ",o.data," "))},dependencies:[Hr,zr],styles:[`.snack-message-success[_ngcontent-%COMP%] { + }`]});let n=e;return n})(),lC=(()=>{let e=class e{constructor(t,r,o,s){this.data=t,this.duration=r,this.horizontalPosition=o,this.verticalPosition=s}};e.\u0275fac=function(r){return new(r||e)(f(dt),f(dt),f(dt),f(dt))},e.\u0275cmp=V({type:e,selectors:[["snack-message-info"]],standalone:!0,features:[B],decls:6,vars:1,consts:[[1,"snack-message-info","snack-message"],[1,"snack-message-content"]],template:function(r,o){r&1&&(_(0,"div",0)(1,"div")(2,"mat-icon"),M(3,"cancel"),b()(),_(4,"div",1),M(5),b()()),r&2&&(D(5),Ae(" ",o.data," "))},dependencies:[Hr,zr],styles:[`.snack-message-info[_ngcontent-%COMP%] { + }`]});let n=e;return n})(),RP=(()=>{let e=class e{constructor(t,r,o,s){this.data=t,this.duration=r,this.horizontalPosition=o,this.verticalPosition=s}};e.\u0275fac=function(r){return new(r||e)(f(dt),f(dt),f(dt),f(dt))},e.\u0275cmp=V({type:e,selectors:[["snack-message-warning"]],standalone:!0,features:[B],decls:6,vars:1,consts:[[1,"snack-message-warning","snack-message"],[1,"snack-message-content"]],template:function(r,o){r&1&&(_(0,"div",0)(1,"div")(2,"mat-icon"),M(3,"cancel"),b()(),_(4,"div",1),M(5),b()()),r&2&&(D(5),Ae(" ",o.data," "))},dependencies:[Hr,zr],styles:[`.snack-message-warning[_ngcontent-%COMP%] { + }`]});let n=e;return n})(),kP=(()=>{let e=class e{constructor(t,r,o,s){this.data=t,this.duration=r,this.horizontalPosition=o,this.verticalPosition=s}};e.\u0275fac=function(r){return new(r||e)(f(dt),f(dt),f(dt),f(dt))},e.\u0275cmp=V({type:e,selectors:[["snack-message-error"]],standalone:!0,features:[B],decls:6,vars:1,consts:[[1,"snack-message-error","snack-message"],[1,"snack-message-content"]],template:function(r,o){r&1&&(_(0,"div",0)(1,"div")(2,"mat-icon"),M(3,"cancel"),b()(),_(4,"div",1),M(5),b()()),r&2&&(D(5),Ae(" ",o.data," "))},dependencies:[Hr,zr]});let n=e;return n})();var hn=(()=>{let e=class e{constructor(t,r,o){this.msg_srv=t,this.http=r,this.router=o,this.auth_login_url="/api/user/auth/login",this.auth_logout_url="/api/user/auth/logout",this.manage_user_create_url="/api/user/manage/user/create",this.manage_user_update_url="/api/user/manage/user/update",this.manage_user_delete_url="/api/user/manage/user/delete",this.manage_user_list_url="/api/user/manage/user/list",this.init_user={id:0,username:""},this.user=aa(this.init_user),this.user_list=aa({total:0,page:0,size:20,list:[]}),this.auth_verify()}auth_login(t,r){this.http.post(this.auth_login_url,{username:t,password:r}).subscribe(o=>{o.status===200&&(localStorage.setItem("ult-token",o.data.token),this.user.set(o.data.user),this.router.navigate([""]))})}auth_verify(){this.http.get(this.auth_login_url).subscribe(t=>{t.status===200&&(this.user.set(t.data.user),console.log("[D] auth verify user=",this.user()))})}auth_logout(){this.http.post(this.auth_logout_url,{}).subscribe(t=>{this.router.navigate(["login"]).finally(()=>{localStorage.removeItem("ult-token"),this.user.set(this.init_user)})})}manage_user_create(t){return this.http.post(this.manage_user_create_url,w({},t)).pipe(Ee({next:r=>{r.status===200&&this.manage_user_list()}}))}manage_user_delete(t){return this.http.post(this.manage_user_delete_url,{id:t.id}).pipe(Ee({next:r=>{r.status===200?(this.msg_srv.success("\u5220\u9664\u7528\u6237\u6210\u529F"),this.manage_user_list()):this.msg_srv.error(r.msg)}})).subscribe()}manage_user_update(t){return this.http.post(this.manage_user_update_url,t).pipe(Ee({next:r=>{r.status===200?(this.msg_srv.success("\u66F4\u65B0\u7528\u6237\u6210\u529F"),this.manage_user_list()):this.msg_srv.error(r.msg)}}))}manage_user_list(){this.http.get(this.manage_user_list_url,{params:{}}).subscribe(t=>{t.status===200?this.user_list.set(ae(w({},this.user_list()),{total:t.data.total,list:t.data.list})):this.user_list.set(ae(w({},this.user_list()),{list:[]}))})}};e.\u0275fac=function(r){return new(r||e)(p(Ki),p(Rr),p(Gi))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var cC=(()=>{let e=class e{constructor(t){this.user_srv=t}};e.\u0275fac=function(r){return new(r||e)(f(hn))},e.\u0275cmp=V({type:e,selectors:[["app-home"]],standalone:!0,features:[B],decls:2,vars:0,template:function(r,o){r&1&&(_(0,"h1"),M(1,"Welcome"),b())},dependencies:[Je],styles:['[_nghost-%COMP%]{width:100%;height:100%;max-height:100%;min-height:100%;display:flex;justify-content:center;align-items:center;background-color:#fff;margin:0}@keyframes _ngcontent-%COMP%_fillup{0%{background-position-x:200%}to{background-position-x:0}}@keyframes _ngcontent-%COMP%_fadein{0%{opacity:0}to{opacity:1}}[_nghost-%COMP%] h1[_ngcontent-%COMP%]{width:100%;margin:0;padding:0;height:100%;display:flex;align-items:center;justify-content:center;color:var(--my-primary-color);font-size:12rem;font-family:Arial,Helvetica,sans-serif;font-weight:800;letter-spacing:-.5rem;position:relative;background-image:linear-gradient(to right,var(--my-primary-color),var(--my-primary-color),transparent);background-size:200% 100%;background-repeat:no-repeat;-webkit-background-clip:text;background-position-x:200%;animation:3s _ngcontent-%COMP%_fillup ease-in-out 2s forwards}[_nghost-%COMP%] h1[_ngcontent-%COMP%]:after{content:"Welcome";position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;-webkit-text-stroke-color:white;-webkit-text-fill-color:transparent;opacity:0;animation:2s _ngcontent-%COMP%_fadein ease-in-out forwards}@media screen and (max-width: 40rem){[_nghost-%COMP%] h1[_ngcontent-%COMP%]{font-size:8rem}}']});let n=e;return n})();var gC=(()=>{let e=class e{constructor(t,r){this._renderer=t,this._elementRef=r,this.onChange=o=>{},this.onTouched=()=>{}}setProperty(t,r){this._renderer.setProperty(this._elementRef.nativeElement,t,r)}registerOnTouched(t){this.onTouched=t}registerOnChange(t){this.onChange=t}setDisabledState(t){this.setProperty("disabled",t)}};e.\u0275fac=function(r){return new(r||e)(f(Ir),f(k))},e.\u0275dir=O({type:e});let n=e;return n})(),FP=(()=>{let e=class e extends gC{};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275dir=O({type:e,features:[ue]});let n=e;return n})(),Ag=new y("NgValueAccessor");var PP={provide:Ag,useExisting:Vi(()=>Ji),multi:!0};function NP(){let n=bi()?bi().getUserAgent():"";return/android (\d+)/.test(n.toLowerCase())}var LP=new y("CompositionEventMode"),Ji=(()=>{let e=class e extends gC{constructor(t,r,o){super(t,r),this._compositionMode=o,this._composing=!1,this._compositionMode==null&&(this._compositionMode=!NP())}writeValue(t){let r=t??"";this.setProperty("value",r)}_handleInput(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}_compositionStart(){this._composing=!0}_compositionEnd(t){this._composing=!1,this._compositionMode&&this.onChange(t)}};e.\u0275fac=function(r){return new(r||e)(f(Ir),f(k),f(LP,8))},e.\u0275dir=O({type:e,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(r,o){r&1&&j("input",function(a){return o._handleInput(a.target.value)})("blur",function(){return o.onTouched()})("compositionstart",function(){return o._compositionStart()})("compositionend",function(a){return o._compositionEnd(a.target.value)})},features:[Me([PP]),ue]});let n=e;return n})();function Xi(n){return n==null||(typeof n=="string"||Array.isArray(n))&&n.length===0}function _C(n){return n!=null&&typeof n.length=="number"}var yu=new y("NgValidators"),wu=new y("NgAsyncValidators"),jP=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,cs=class{static min(e){return VP(e)}static max(e){return BP(e)}static required(e){return zP(e)}static requiredTrue(e){return HP(e)}static email(e){return UP(e)}static minLength(e){return $P(e)}static maxLength(e){return WP(e)}static pattern(e){return GP(e)}static nullValidator(e){return bC(e)}static compose(e){return DC(e)}static composeAsync(e){return EC(e)}};function VP(n){return e=>{if(Xi(e.value)||Xi(n))return null;let i=parseFloat(e.value);return!isNaN(i)&&i{if(Xi(e.value)||Xi(n))return null;let i=parseFloat(e.value);return!isNaN(i)&&i>n?{max:{max:n,actual:e.value}}:null}}function zP(n){return Xi(n.value)?{required:!0}:null}function HP(n){return n.value===!0?null:{required:!0}}function UP(n){return Xi(n.value)||jP.test(n.value)?null:{email:!0}}function $P(n){return e=>Xi(e.value)||!_C(e.value)?null:e.value.length_C(e.value)&&e.value.length>n?{maxlength:{requiredLength:n,actualLength:e.value.length}}:null}function GP(n){if(!n)return bC;let e,i;return typeof n=="string"?(i="",n.charAt(0)!=="^"&&(i+="^"),i+=n,n.charAt(n.length-1)!=="$"&&(i+="$"),e=new RegExp(i)):(i=n.toString(),e=n),t=>{if(Xi(t.value))return null;let r=t.value;return e.test(r)?null:{pattern:{requiredPattern:i,actualValue:r}}}}function bC(n){return null}function vC(n){return n!=null}function yC(n){return Mr(n)?ke(n):n}function wC(n){let e={};return n.forEach(i=>{e=i!=null?w(w({},e),i):e}),Object.keys(e).length===0?null:e}function xC(n,e){return e.map(i=>i(n))}function qP(n){return!n.validate}function CC(n){return n.map(e=>qP(e)?e:i=>e.validate(i))}function DC(n){if(!n)return null;let e=n.filter(vC);return e.length==0?null:function(i){return wC(xC(i,e))}}function Og(n){return n!=null?DC(CC(n)):null}function EC(n){if(!n)return null;let e=n.filter(vC);return e.length==0?null:function(i){let t=xC(i,e).map(yC);return ks(t).pipe(F(wC))}}function Rg(n){return n!=null?EC(CC(n)):null}function dC(n,e){return n===null?[e]:Array.isArray(n)?[...n,e]:[n,e]}function IC(n){return n._rawValidators}function SC(n){return n._rawAsyncValidators}function Mg(n){return n?Array.isArray(n)?n:[n]:[]}function hu(n,e){return Array.isArray(n)?n.includes(e):n===e}function uC(n,e){let i=Mg(e);return Mg(n).forEach(r=>{hu(i,r)||i.push(r)}),i}function fC(n,e){return Mg(e).filter(i=>!hu(n,i))}var mu=class{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(e){this._rawValidators=e||[],this._composedValidatorFn=Og(this._rawValidators)}_setAsyncValidators(e){this._rawAsyncValidators=e||[],this._composedAsyncValidatorFn=Rg(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(e){this._onDestroyCallbacks.push(e)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(e=>e()),this._onDestroyCallbacks=[]}reset(e=void 0){this.control&&this.control.reset(e)}hasError(e,i){return this.control?this.control.hasError(e,i):!1}getError(e,i){return this.control?this.control.getError(e,i):null}},Ur=class extends mu{get formDirective(){return null}get path(){return null}},Tn=class extends mu{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}},Tg=class{constructor(e){this._cd=e}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}},YP={"[class.ng-untouched]":"isUntouched","[class.ng-touched]":"isTouched","[class.ng-pristine]":"isPristine","[class.ng-dirty]":"isDirty","[class.ng-valid]":"isValid","[class.ng-invalid]":"isInvalid","[class.ng-pending]":"isPending"},Dq=ae(w({},YP),{"[class.ng-submitted]":"isSubmitted"}),ds=(()=>{let e=class e extends Tg{constructor(t){super(t)}};e.\u0275fac=function(r){return new(r||e)(f(Tn,2))},e.\u0275dir=O({type:e,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(r,o){r&2&&_e("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)},features:[ue]});let n=e;return n})();var Ka="VALID",fu="INVALID",ls="PENDING",Xa="DISABLED";function MC(n){return(xu(n)?n.validators:n)||null}function ZP(n){return Array.isArray(n)?Og(n):n||null}function TC(n,e){return(xu(e)?e.asyncValidators:n)||null}function QP(n){return Array.isArray(n)?Rg(n):n||null}function xu(n){return n!=null&&!Array.isArray(n)&&typeof n=="object"}function KP(n,e,i){let t=n.controls;if(!(e?Object.keys(t):t).length)throw new S(1e3,"");if(!t[i])throw new S(1001,"")}function XP(n,e,i){n._forEachChild((t,r)=>{if(i[r]===void 0)throw new S(1002,"")})}var pu=class{constructor(e,i){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(e),this._assignAsyncValidators(i)}get validator(){return this._composedValidatorFn}set validator(e){this._rawValidators=this._composedValidatorFn=e}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(e){this._rawAsyncValidators=this._composedAsyncValidatorFn=e}get parent(){return this._parent}get valid(){return this.status===Ka}get invalid(){return this.status===fu}get pending(){return this.status==ls}get disabled(){return this.status===Xa}get enabled(){return this.status!==Xa}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(e){this._assignValidators(e)}setAsyncValidators(e){this._assignAsyncValidators(e)}addValidators(e){this.setValidators(uC(e,this._rawValidators))}addAsyncValidators(e){this.setAsyncValidators(uC(e,this._rawAsyncValidators))}removeValidators(e){this.setValidators(fC(e,this._rawValidators))}removeAsyncValidators(e){this.setAsyncValidators(fC(e,this._rawAsyncValidators))}hasValidator(e){return hu(this._rawValidators,e)}hasAsyncValidator(e){return hu(this._rawAsyncValidators,e)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(e={}){this.touched=!0,this._parent&&!e.onlySelf&&this._parent.markAsTouched(e)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(e=>e.markAllAsTouched())}markAsUntouched(e={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(i=>{i.markAsUntouched({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)}markAsDirty(e={}){this.pristine=!1,this._parent&&!e.onlySelf&&this._parent.markAsDirty(e)}markAsPristine(e={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(i=>{i.markAsPristine({onlySelf:!0})}),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)}markAsPending(e={}){this.status=ls,e.emitEvent!==!1&&this.statusChanges.emit(this.status),this._parent&&!e.onlySelf&&this._parent.markAsPending(e)}disable(e={}){let i=this._parentMarkedDirty(e.onlySelf);this.status=Xa,this.errors=null,this._forEachChild(t=>{t.disable(ae(w({},e),{onlySelf:!0}))}),this._updateValue(),e.emitEvent!==!1&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(ae(w({},e),{skipPristineCheck:i})),this._onDisabledChange.forEach(t=>t(!0))}enable(e={}){let i=this._parentMarkedDirty(e.onlySelf);this.status=Ka,this._forEachChild(t=>{t.enable(ae(w({},e),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent}),this._updateAncestors(ae(w({},e),{skipPristineCheck:i})),this._onDisabledChange.forEach(t=>t(!1))}_updateAncestors(e){this._parent&&!e.onlySelf&&(this._parent.updateValueAndValidity(e),e.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(e){this._parent=e}getRawValue(){return this.value}updateValueAndValidity(e={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===Ka||this.status===ls)&&this._runAsyncValidator(e.emitEvent)),e.emitEvent!==!1&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!e.onlySelf&&this._parent.updateValueAndValidity(e)}_updateTreeValidity(e={emitEvent:!0}){this._forEachChild(i=>i._updateTreeValidity(e)),this.updateValueAndValidity({onlySelf:!0,emitEvent:e.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Xa:Ka}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(e){if(this.asyncValidator){this.status=ls,this._hasOwnPendingAsyncValidator=!0;let i=yC(this.asyncValidator(this));this._asyncValidationSubscription=i.subscribe(t=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(t,{emitEvent:e})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(e,i={}){this.errors=e,this._updateControlsErrors(i.emitEvent!==!1)}get(e){let i=e;return i==null||(Array.isArray(i)||(i=i.split(".")),i.length===0)?null:i.reduce((t,r)=>t&&t._find(r),this)}getError(e,i){let t=i?this.get(i):this;return t&&t.errors?t.errors[e]:null}hasError(e,i){return!!this.getError(e,i)}get root(){let e=this;for(;e._parent;)e=e._parent;return e}_updateControlsErrors(e){this.status=this._calculateStatus(),e&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(e)}_initObservables(){this.valueChanges=new X,this.statusChanges=new X}_calculateStatus(){return this._allControlsDisabled()?Xa:this.errors?fu:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(ls)?ls:this._anyControlsHaveStatus(fu)?fu:Ka}_anyControlsHaveStatus(e){return this._anyControls(i=>i.status===e)}_anyControlsDirty(){return this._anyControls(e=>e.dirty)}_anyControlsTouched(){return this._anyControls(e=>e.touched)}_updatePristine(e={}){this.pristine=!this._anyControlsDirty(),this._parent&&!e.onlySelf&&this._parent._updatePristine(e)}_updateTouched(e={}){this.touched=this._anyControlsTouched(),this._parent&&!e.onlySelf&&this._parent._updateTouched(e)}_registerOnCollectionChange(e){this._onCollectionChange=e}_setUpdateStrategy(e){xu(e)&&e.updateOn!=null&&(this._updateOn=e.updateOn)}_parentMarkedDirty(e){let i=this._parent&&this._parent.dirty;return!e&&!!i&&!this._parent._anyControlsDirty()}_find(e){return null}_assignValidators(e){this._rawValidators=Array.isArray(e)?e.slice():e,this._composedValidatorFn=ZP(this._rawValidators)}_assignAsyncValidators(e){this._rawAsyncValidators=Array.isArray(e)?e.slice():e,this._composedAsyncValidatorFn=QP(this._rawAsyncValidators)}},gu=class extends pu{constructor(e,i,t){super(MC(i),TC(t,i)),this.controls=e,this._initObservables(),this._setUpdateStrategy(i),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(e,i){return this.controls[e]?this.controls[e]:(this.controls[e]=i,i.setParent(this),i._registerOnCollectionChange(this._onCollectionChange),i)}addControl(e,i,t={}){this.registerControl(e,i),this.updateValueAndValidity({emitEvent:t.emitEvent}),this._onCollectionChange()}removeControl(e,i={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}setControl(e,i,t={}){this.controls[e]&&this.controls[e]._registerOnCollectionChange(()=>{}),delete this.controls[e],i&&this.registerControl(e,i),this.updateValueAndValidity({emitEvent:t.emitEvent}),this._onCollectionChange()}contains(e){return this.controls.hasOwnProperty(e)&&this.controls[e].enabled}setValue(e,i={}){XP(this,!0,e),Object.keys(e).forEach(t=>{KP(this,!0,t),this.controls[t].setValue(e[t],{onlySelf:!0,emitEvent:i.emitEvent})}),this.updateValueAndValidity(i)}patchValue(e,i={}){e!=null&&(Object.keys(e).forEach(t=>{let r=this.controls[t];r&&r.patchValue(e[t],{onlySelf:!0,emitEvent:i.emitEvent})}),this.updateValueAndValidity(i))}reset(e={},i={}){this._forEachChild((t,r)=>{t.reset(e?e[r]:null,{onlySelf:!0,emitEvent:i.emitEvent})}),this._updatePristine(i),this._updateTouched(i),this.updateValueAndValidity(i)}getRawValue(){return this._reduceChildren({},(e,i,t)=>(e[t]=i.getRawValue(),e))}_syncPendingControls(){let e=this._reduceChildren(!1,(i,t)=>t._syncPendingControls()?!0:i);return e&&this.updateValueAndValidity({onlySelf:!0}),e}_forEachChild(e){Object.keys(this.controls).forEach(i=>{let t=this.controls[i];t&&e(t,i)})}_setUpControls(){this._forEachChild(e=>{e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(e){for(let[i,t]of Object.entries(this.controls))if(this.contains(i)&&e(t))return!0;return!1}_reduceValue(){let e={};return this._reduceChildren(e,(i,t,r)=>((t.enabled||this.disabled)&&(i[r]=t.value),i))}_reduceChildren(e,i){let t=e;return this._forEachChild((r,o)=>{t=i(t,r,o)}),t}_allControlsDisabled(){for(let e of Object.keys(this.controls))if(this.controls[e].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(e){return this.controls.hasOwnProperty(e)?this.controls[e]:null}};var us=new y("CallSetDisabledState",{providedIn:"root",factory:()=>Cu}),Cu="always";function JP(n,e){return[...e.path,n]}function el(n,e,i=Cu){kg(n,e),e.valueAccessor.writeValue(n.value),(n.disabled||i==="always")&&e.valueAccessor.setDisabledState?.(n.disabled),tN(n,e),iN(n,e),nN(n,e),eN(n,e)}function _u(n,e,i=!0){let t=()=>{};e.valueAccessor&&(e.valueAccessor.registerOnChange(t),e.valueAccessor.registerOnTouched(t)),vu(n,e),n&&(e._invokeOnDestroyCallbacks(),n._registerOnCollectionChange(()=>{}))}function bu(n,e){n.forEach(i=>{i.registerOnValidatorChange&&i.registerOnValidatorChange(e)})}function eN(n,e){if(e.valueAccessor.setDisabledState){let i=t=>{e.valueAccessor.setDisabledState(t)};n.registerOnDisabledChange(i),e._registerOnDestroy(()=>{n._unregisterOnDisabledChange(i)})}}function kg(n,e){let i=IC(n);e.validator!==null?n.setValidators(dC(i,e.validator)):typeof i=="function"&&n.setValidators([i]);let t=SC(n);e.asyncValidator!==null?n.setAsyncValidators(dC(t,e.asyncValidator)):typeof t=="function"&&n.setAsyncValidators([t]);let r=()=>n.updateValueAndValidity();bu(e._rawValidators,r),bu(e._rawAsyncValidators,r)}function vu(n,e){let i=!1;if(n!==null){if(e.validator!==null){let r=IC(n);if(Array.isArray(r)&&r.length>0){let o=r.filter(s=>s!==e.validator);o.length!==r.length&&(i=!0,n.setValidators(o))}}if(e.asyncValidator!==null){let r=SC(n);if(Array.isArray(r)&&r.length>0){let o=r.filter(s=>s!==e.asyncValidator);o.length!==r.length&&(i=!0,n.setAsyncValidators(o))}}}let t=()=>{};return bu(e._rawValidators,t),bu(e._rawAsyncValidators,t),i}function tN(n,e){e.valueAccessor.registerOnChange(i=>{n._pendingValue=i,n._pendingChange=!0,n._pendingDirty=!0,n.updateOn==="change"&&AC(n,e)})}function nN(n,e){e.valueAccessor.registerOnTouched(()=>{n._pendingTouched=!0,n.updateOn==="blur"&&n._pendingChange&&AC(n,e),n.updateOn!=="submit"&&n.markAsTouched()})}function AC(n,e){n._pendingDirty&&n.markAsDirty(),n.setValue(n._pendingValue,{emitModelToViewChange:!1}),e.viewToModelUpdate(n._pendingValue),n._pendingChange=!1}function iN(n,e){let i=(t,r)=>{e.valueAccessor.writeValue(t),r&&e.viewToModelUpdate(t)};n.registerOnChange(i),e._registerOnDestroy(()=>{n._unregisterOnChange(i)})}function OC(n,e){n==null,kg(n,e)}function rN(n,e){return vu(n,e)}function RC(n,e){if(!n.hasOwnProperty("model"))return!1;let i=n.model;return i.isFirstChange()?!0:!Object.is(e,i.currentValue)}function oN(n){return Object.getPrototypeOf(n.constructor)===FP}function kC(n,e){n._syncPendingControls(),e.forEach(i=>{let t=i.control;t.updateOn==="submit"&&t._pendingChange&&(i.viewToModelUpdate(t._pendingValue),t._pendingChange=!1)})}function FC(n,e){if(!e)return null;Array.isArray(e);let i,t,r;return e.forEach(o=>{o.constructor===Ji?i=o:oN(o)?t=o:r=o}),r||t||i||null}function sN(n,e){let i=n.indexOf(e);i>-1&&n.splice(i,1)}var aN={provide:Ur,useExisting:Vi(()=>tl)},Ja=(()=>Promise.resolve())(),tl=(()=>{let e=class e extends Ur{constructor(t,r,o){super(),this.callSetDisabledState=o,this.submitted=!1,this._directives=new Set,this.ngSubmit=new X,this.form=new gu({},Og(t),Rg(r))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(t){Ja.then(()=>{let r=this._findContainer(t.path);t.control=r.registerControl(t.name,t.control),el(t.control,t,this.callSetDisabledState),t.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(t)})}getControl(t){return this.form.get(t.path)}removeControl(t){Ja.then(()=>{let r=this._findContainer(t.path);r&&r.removeControl(t.name),this._directives.delete(t)})}addFormGroup(t){Ja.then(()=>{let r=this._findContainer(t.path),o=new gu({});OC(o,t),r.registerControl(t.name,o),o.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(t){Ja.then(()=>{let r=this._findContainer(t.path);r&&r.removeControl(t.name)})}getFormGroup(t){return this.form.get(t.path)}updateModel(t,r){Ja.then(()=>{this.form.get(t.path).setValue(r)})}setValue(t){this.control.setValue(t)}onSubmit(t){return this.submitted=!0,kC(this.form,this._directives),this.ngSubmit.emit(t),t?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(t=void 0){this.form.reset(t),this.submitted=!1}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.form._updateOn=this.options.updateOn)}_findContainer(t){return t.pop(),t.length?this.form.get(t):this.form}};e.\u0275fac=function(r){return new(r||e)(f(yu,10),f(wu,10),f(us,8))},e.\u0275dir=O({type:e,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(r,o){r&1&&j("submit",function(a){return o.onSubmit(a)})("reset",function(){return o.onReset()})},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Me([aN]),ue]});let n=e;return n})();function hC(n,e){let i=n.indexOf(e);i>-1&&n.splice(i,1)}function mC(n){return typeof n=="object"&&n!==null&&Object.keys(n).length===2&&"value"in n&&"disabled"in n}var $r=class extends pu{constructor(e=null,i,t){super(MC(i),TC(t,i)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(e),this._setUpdateStrategy(i),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),xu(i)&&(i.nonNullable||i.initialValueIsDefault)&&(mC(e)?this.defaultValue=e.value:this.defaultValue=e)}setValue(e,i={}){this.value=this._pendingValue=e,this._onChange.length&&i.emitModelToViewChange!==!1&&this._onChange.forEach(t=>t(this.value,i.emitViewToModelChange!==!1)),this.updateValueAndValidity(i)}patchValue(e,i={}){this.setValue(e,i)}reset(e=this.defaultValue,i={}){this._applyFormState(e),this.markAsPristine(i),this.markAsUntouched(i),this.setValue(this.value,i),this._pendingChange=!1}_updateValue(){}_anyControls(e){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(e){this._onChange.push(e)}_unregisterOnChange(e){hC(this._onChange,e)}registerOnDisabledChange(e){this._onDisabledChange.push(e)}_unregisterOnDisabledChange(e){hC(this._onDisabledChange,e)}_forEachChild(e){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(e){mC(e)?(this.value=this._pendingValue=e.value,e.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=e}};var lN=n=>n instanceof $r;var cN={provide:Tn,useExisting:Vi(()=>nl)},pC=(()=>Promise.resolve())(),nl=(()=>{let e=class e extends Tn{constructor(t,r,o,s,a,l){super(),this._changeDetectorRef=a,this.callSetDisabledState=l,this.control=new $r,this._registered=!1,this.name="",this.update=new X,this._parent=t,this._setValidators(r),this._setAsyncValidators(o),this.valueAccessor=FC(this,s)}ngOnChanges(t){if(this._checkForErrors(),!this._registered||"name"in t){if(this._registered&&(this._checkName(),this.formDirective)){let r=t.name.previousValue;this.formDirective.removeControl({name:r,path:this._getPath(r)})}this._setUpControl()}"isDisabled"in t&&this._updateDisabled(t),RC(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){el(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(t){pC.then(()=>{this.control.setValue(t,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(t){let r=t.isDisabled.currentValue,o=r!==0&&fe(r);pC.then(()=>{o&&!this.control.disabled?this.control.disable():!o&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(t){return this._parent?JP(t,this._parent):[t]}};e.\u0275fac=function(r){return new(r||e)(f(Ur,9),f(yu,10),f(wu,10),f(Ag,10),f(Oe,8),f(us,8))},e.\u0275dir=O({type:e,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[Me([cN]),ue,qe]});let n=e;return n})();var dN=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({});let n=e;return n})();var PC=new y("NgModelWithFormControlWarning"),uN={provide:Tn,useExisting:Vi(()=>Fg)},Fg=(()=>{let e=class e extends Tn{set isDisabled(t){}constructor(t,r,o,s,a){super(),this._ngModelWarningConfig=s,this.callSetDisabledState=a,this.update=new X,this._ngModelWarningSent=!1,this._setValidators(t),this._setAsyncValidators(r),this.valueAccessor=FC(this,o)}ngOnChanges(t){if(this._isControlChanged(t)){let r=t.form.previousValue;r&&_u(r,this,!1),el(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}RC(t,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&_u(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(t){this.viewModel=t,this.update.emit(t)}_isControlChanged(t){return t.hasOwnProperty("form")}};e._ngModelWarningSentOnce=!1,e.\u0275fac=function(r){return new(r||e)(f(yu,10),f(wu,10),f(Ag,10),f(PC,8),f(us,8))},e.\u0275dir=O({type:e,selectors:[["","formControl",""]],inputs:{form:["formControl","form"],isDisabled:["disabled","isDisabled"],model:["ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[Me([uN]),ue,qe]});let n=e;return n})(),fN={provide:Ur,useExisting:Vi(()=>il)},il=(()=>{let e=class e extends Ur{constructor(t,r,o){super(),this.callSetDisabledState=o,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new X,this._setValidators(t),this._setAsyncValidators(r)}ngOnChanges(t){this._checkFormPresent(),t.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(vu(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(t){let r=this.form.get(t.path);return el(r,t,this.callSetDisabledState),r.updateValueAndValidity({emitEvent:!1}),this.directives.push(t),r}getControl(t){return this.form.get(t.path)}removeControl(t){_u(t.control||null,t,!1),sN(this.directives,t)}addFormGroup(t){this._setUpFormContainer(t)}removeFormGroup(t){this._cleanUpFormContainer(t)}getFormGroup(t){return this.form.get(t.path)}addFormArray(t){this._setUpFormContainer(t)}removeFormArray(t){this._cleanUpFormContainer(t)}getFormArray(t){return this.form.get(t.path)}updateModel(t,r){this.form.get(t.path).setValue(r)}onSubmit(t){return this.submitted=!0,kC(this.form,this.directives),this.ngSubmit.emit(t),t?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(t=void 0){this.form.reset(t),this.submitted=!1}_updateDomValue(){this.directives.forEach(t=>{let r=t.control,o=this.form.get(t.path);r!==o&&(_u(r||null,t),lN(o)&&(el(o,t,this.callSetDisabledState),t.control=o))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(t){let r=this.form.get(t.path);OC(r,t),r.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(t){if(this.form){let r=this.form.get(t.path);r&&rN(r,t)&&r.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){kg(this.form,this),this._oldForm&&vu(this._oldForm,this)}_checkFormPresent(){this.form}};e.\u0275fac=function(r){return new(r||e)(f(yu,10),f(wu,10),f(us,8))},e.\u0275dir=O({type:e,selectors:[["","formGroup",""]],hostBindings:function(r,o){r&1&&j("submit",function(a){return o.onSubmit(a)})("reset",function(){return o.onReset()})},inputs:{form:["formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Me([fN]),ue,qe]});let n=e;return n})();var NC=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({imports:[dN]});let n=e;return n})();var fs=(()=>{let e=class e{static withConfig(t){return{ngModule:e,providers:[{provide:us,useValue:t.callSetDisabledState??Cu}]}}};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({imports:[NC]});let n=e;return n})(),LC=(()=>{let e=class e{static withConfig(t){return{ngModule:e,providers:[{provide:PC,useValue:t.warnOnNgModelWithFormControl??"always"},{provide:us,useValue:t.callSetDisabledState??Cu}]}}};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({imports:[NC]});let n=e;return n})();var jC=an({passive:!0}),VC=(()=>{let e=class e{constructor(t,r){this._platform=t,this._ngZone=r,this._monitoredElements=new Map}monitor(t){if(!this._platform.isBrowser)return yt;let r=cn(t),o=this._monitoredElements.get(r);if(o)return o.subject;let s=new T,a="cdk-text-field-autofilled",l=c=>{c.animationName==="cdk-text-field-autofill-start"&&!r.classList.contains(a)?(r.classList.add(a),this._ngZone.run(()=>s.next({target:c.target,isAutofilled:!0}))):c.animationName==="cdk-text-field-autofill-end"&&r.classList.contains(a)&&(r.classList.remove(a),this._ngZone.run(()=>s.next({target:c.target,isAutofilled:!1})))};return this._ngZone.runOutsideAngular(()=>{r.addEventListener("animationstart",l,jC),r.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set(r,{subject:s,unlisten:()=>{r.removeEventListener("animationstart",l,jC)}}),s}stopMonitoring(t){let r=cn(t),o=this._monitoredElements.get(r);o&&(o.unlisten(),o.subject.complete(),r.classList.remove("cdk-text-field-autofill-monitored"),r.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(r))}ngOnDestroy(){this._monitoredElements.forEach((t,r)=>this.stopMonitoring(r))}};e.\u0275fac=function(r){return new(r||e)(p(be),p(A))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var BC=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({});let n=e;return n})();var Pg=class{constructor(e){this._box=e,this._destroyed=new T,this._resizeSubject=new T,this._elementObservables=new Map,typeof ResizeObserver<"u"&&(this._resizeObserver=new ResizeObserver(i=>this._resizeSubject.next(i)))}observe(e){return this._elementObservables.has(e)||this._elementObservables.set(e,new W(i=>{let t=this._resizeSubject.subscribe(i);return this._resizeObserver?.observe(e,{box:this._box}),()=>{this._resizeObserver?.unobserve(e),t.unsubscribe(),this._elementObservables.delete(e)}}).pipe(le(i=>i.some(t=>t.target===e)),ec({bufferSize:1,refCount:!0}),ne(this._destroyed))),this._elementObservables.get(e)}destroy(){this._destroyed.next(),this._destroyed.complete(),this._resizeSubject.complete(),this._elementObservables.clear()}},zC=(()=>{let e=class e{constructor(){this._observers=new Map,this._ngZone=C(A),typeof ResizeObserver<"u"}ngOnDestroy(){for(let[,t]of this._observers)t.destroy();this._observers.clear(),typeof ResizeObserver<"u"}observe(t,r){let o=r?.box||"content-box";return this._observers.has(o)||this._observers.set(o,new Pg(o)),this._observers.get(o).observe(t)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();var mN=["notch"],pN=["matFormFieldNotchedOutline",""],gN=["*"],_N=["textField"],bN=["iconPrefixContainer"],vN=["textPrefixContainer"];function yN(n,e){n&1&&ee(0,"span",16)}function wN(n,e){if(n&1&&(_(0,"label",14),ge(1,1),z(2,yN,1,0,"span",15),b()),n&2){let i=U(2);P("floating",i._shouldLabelFloat())("monitorResize",i._hasOutline())("id",i._labelId),we("for",i._control.id),D(2),pe(2,!i.hideRequiredMarker&&i._control.required?2:-1)}}function xN(n,e){if(n&1&&z(0,wN,3,5,"label",14),n&2){let i=U();pe(0,i._hasFloatingLabel()?0:-1)}}function CN(n,e){n&1&&ee(0,"div",17)}function DN(n,e){}function EN(n,e){if(n&1&&z(0,DN,0,0,"ng-template",9),n&2){U(2);let i=Tr(1);P("ngTemplateOutlet",i)}}function IN(n,e){if(n&1&&(_(0,"div",5),z(1,EN,1,1,null,9),b()),n&2){let i=U();P("matFormFieldNotchedOutlineOpen",i._shouldLabelFloat()),D(1),pe(1,i._forceDisplayInfixLabel()?-1:1)}}function SN(n,e){n&1&&(_(0,"div",18,19),ge(2,2),b())}function MN(n,e){n&1&&(_(0,"div",20,21),ge(2,3),b())}function TN(n,e){}function AN(n,e){if(n&1&&z(0,TN,0,0,"ng-template",9),n&2){U();let i=Tr(1);P("ngTemplateOutlet",i)}}function ON(n,e){n&1&&(_(0,"div",22),ge(1,4),b())}function RN(n,e){n&1&&(_(0,"div",23),ge(1,5),b())}function kN(n,e){n&1&&ee(0,"div",12)}function FN(n,e){if(n&1&&(_(0,"div",24),ge(1,6),b()),n&2){let i=U();P("@transitionMessages",i._subscriptAnimationState)}}function PN(n,e){if(n&1&&(_(0,"mat-hint",26),M(1),b()),n&2){let i=U(2);P("id",i._hintLabelId),D(1),Ct(i.hintLabel)}}function NN(n,e){if(n&1&&(_(0,"div",25),z(1,PN,2,2,"mat-hint",26),ge(2,7),ee(3,"div",27),ge(4,8),b()),n&2){let i=U();P("@transitionMessages",i._subscriptAnimationState),D(1),pe(1,i.hintLabel?1:-1)}}var LN=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],jN=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"],Ei=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=O({type:e,selectors:[["mat-label"]],standalone:!0});let n=e;return n})();var VN=new y("MatError");var BN=0,Ng=(()=>{let e=class e{constructor(){this.align="start",this.id=`mat-mdc-hint-${BN++}`}};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=O({type:e,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(r,o){r&2&&(Zn("id",o.id),we("align",null),_e("mat-mdc-form-field-hint-end",o.align==="end"))},inputs:{align:"align",id:"id"},standalone:!0});let n=e;return n})(),zN=new y("MatPrefix");var HN=new y("MatSuffix");var ZC=new y("FloatingLabelParent"),HC=(()=>{let e=class e{get floating(){return this._floating}set floating(t){this._floating=t,this.monitorResize&&this._handleResize()}get monitorResize(){return this._monitorResize}set monitorResize(t){this._monitorResize=t,this._monitorResize?this._subscribeToResize():this._resizeSubscription.unsubscribe()}constructor(t){this._elementRef=t,this._floating=!1,this._monitorResize=!1,this._resizeObserver=C(zC),this._ngZone=C(A),this._parent=C(ZC),this._resizeSubscription=new ve}ngOnDestroy(){this._resizeSubscription.unsubscribe()}getWidth(){return UN(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}_handleResize(){setTimeout(()=>this._parent._handleLabelResized())}_subscribeToResize(){this._resizeSubscription.unsubscribe(),this._ngZone.runOutsideAngular(()=>{this._resizeSubscription=this._resizeObserver.observe(this._elementRef.nativeElement,{box:"border-box"}).subscribe(()=>this._handleResize())})}};e.\u0275fac=function(r){return new(r||e)(f(k))},e.\u0275dir=O({type:e,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(r,o){r&2&&_e("mdc-floating-label--float-above",o.floating)},inputs:{floating:"floating",monitorResize:"monitorResize"},standalone:!0});let n=e;return n})();function UN(n){let e=n;if(e.offsetParent!==null)return e.scrollWidth;let i=e.cloneNode(!0);i.style.setProperty("position","absolute"),i.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(i);let t=i.scrollWidth;return i.remove(),t}var UC="mdc-line-ripple--active",Du="mdc-line-ripple--deactivating",$C=(()=>{let e=class e{constructor(t,r){this._elementRef=t,this._handleTransitionEnd=o=>{let s=this._elementRef.nativeElement.classList,a=s.contains(Du);o.propertyName==="opacity"&&a&&s.remove(UC,Du)},r.runOutsideAngular(()=>{t.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){let t=this._elementRef.nativeElement.classList;t.remove(Du),t.add(UC)}deactivate(){this._elementRef.nativeElement.classList.add(Du)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}};e.\u0275fac=function(r){return new(r||e)(f(k),f(A))},e.\u0275dir=O({type:e,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"],standalone:!0});let n=e;return n})(),WC=(()=>{let e=class e{constructor(t,r){this._elementRef=t,this._ngZone=r,this.open=!1}ngAfterViewInit(){let t=this._elementRef.nativeElement.querySelector(".mdc-floating-label");t?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),typeof requestAnimationFrame=="function"&&(t.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>t.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_setNotchWidth(t){!this.open||!t?this._notch.nativeElement.style.width="":this._notch.nativeElement.style.width=`calc(${t}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + ${8+1}px)`}};e.\u0275fac=function(r){return new(r||e)(f(k),f(A))},e.\u0275cmp=V({type:e,selectors:[["div","matFormFieldNotchedOutline",""]],viewQuery:function(r,o){if(r&1&&Be(mN,5),r&2){let s;q(s=Y())&&(o._notch=s.first)}},hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(r,o){r&2&&_e("mdc-notched-outline--notched",o.open)},inputs:{open:["matFormFieldNotchedOutlineOpen","open"]},standalone:!0,features:[B],attrs:pN,ngContentSelectors:gN,decls:5,vars:0,consts:[[1,"mdc-notched-outline__leading"],[1,"mdc-notched-outline__notch"],["notch",""],[1,"mdc-notched-outline__trailing"]],template:function(r,o){r&1&&(Xe(),ee(0,"div",0),_(1,"div",1,2),ge(3),b(),ee(4,"div",3))},encapsulation:2,changeDetection:0});let n=e;return n})(),$N={transitionMessages:ti("transitionMessages",[ni("enter",at({opacity:1,transform:"translateY(0%)"})),Zt("void => enter",[at({opacity:0,transform:"translateY(-5px)"}),fn("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])},ol=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=O({type:e});let n=e;return n})();var sl=new y("MatFormField"),WN=new y("MAT_FORM_FIELD_DEFAULT_OPTIONS"),GC=0,qC="fill",GN="auto",YC="fixed",qN="translateY(-50%)",Ii=(()=>{let e=class e{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(t){this._hideRequiredMarker=ln(t)}get floatLabel(){return this._floatLabel||this._defaults?.floatLabel||GN}set floatLabel(t){t!==this._floatLabel&&(this._floatLabel=t,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(t){let r=this._appearance,o=t||this._defaults?.appearance||qC;this._appearance=o,this._appearance==="outline"&&this._appearance!==r&&(this._needsOutlineLabelOffsetUpdateOnStable=!0)}get subscriptSizing(){return this._subscriptSizing||this._defaults?.subscriptSizing||YC}set subscriptSizing(t){this._subscriptSizing=t||this._defaults?.subscriptSizing||YC}get hintLabel(){return this._hintLabel}set hintLabel(t){this._hintLabel=t,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(t){this._explicitFormFieldControl=t}constructor(t,r,o,s,a,l,c,d){this._elementRef=t,this._changeDetectorRef=r,this._ngZone=o,this._dir=s,this._platform=a,this._defaults=l,this._animationMode=c,this._hideRequiredMarker=!1,this.color="primary",this._appearance=qC,this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId=`mat-mdc-form-field-label-${GC++}`,this._hintLabelId=`mat-mdc-hint-${GC++}`,this._subscriptAnimationState="",this._destroyed=new T,this._isFocused=null,this._needsOutlineLabelOffsetUpdateOnStable=!1,l&&(l.appearance&&(this.appearance=l.appearance),this._hideRequiredMarker=!!l?.hideRequiredMarker,l.color&&(this.color=l.color))}ngAfterViewInit(){this._updateFocusState(),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl()}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}getLabelId(){return this._hasFloatingLabel()?this._labelId:null}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(){let t=this._control;t.controlType&&this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${t.controlType}`),t.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),t.ngControl&&t.ngControl.valueChanges&&t.ngControl.valueChanges.pipe(ne(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck())}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(t=>!t._isText),this._hasTextPrefix=!!this._prefixChildren.find(t=>t._isText),this._hasIconSuffix=!!this._suffixChildren.find(t=>!t._isText),this._hasTextSuffix=!!this._suffixChildren.find(t=>t._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),rt(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){this._control}_updateFocusState(){this._control.focused&&!this._isFocused?(this._isFocused=!0,this._lineRipple?.activate()):!this._control.focused&&(this._isFocused||this._isFocused===null)&&(this._isFocused=!1,this._lineRipple?.deactivate()),this._textField?.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.pipe(ne(this._destroyed)).subscribe(()=>{this._needsOutlineLabelOffsetUpdateOnStable&&(this._needsOutlineLabelOffsetUpdateOnStable=!1,this._updateOutlineLabelOffset())})}),this._dir.change.pipe(ne(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0)}_shouldAlwaysFloat(){return this.floatLabel==="always"}_hasOutline(){return this.appearance==="outline"}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel(){return!!this._labelChildNonStatic||!!this._labelChildStatic}_shouldLabelFloat(){return this._control.shouldLabelFloat||this._shouldAlwaysFloat()}_shouldForward(t){let r=this._control?this._control.ngControl:null;return r&&r[t]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_handleLabelResized(){this._refreshOutlineNotchWidth()}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||!this._shouldLabelFloat()?this._notchedOutline?._setNotchWidth(0):this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){this._hintChildren}_syncDescribedByIds(){if(this._control){let t=[];if(this._control.userAriaDescribedBy&&typeof this._control.userAriaDescribedBy=="string"&&t.push(...this._control.userAriaDescribedBy.split(" ")),this._getDisplayedMessages()==="hint"){let r=this._hintChildren?this._hintChildren.find(s=>s.align==="start"):null,o=this._hintChildren?this._hintChildren.find(s=>s.align==="end"):null;r?t.push(r.id):this._hintLabel&&t.push(this._hintLabelId),o&&t.push(o.id)}else this._errorChildren&&t.push(...this._errorChildren.map(r=>r.id));this._control.setDescribedByIds(t)}}_updateOutlineLabelOffset(){if(!this._platform.isBrowser||!this._hasOutline()||!this._floatingLabel)return;let t=this._floatingLabel.element;if(!(this._iconPrefixContainer||this._textPrefixContainer)){t.style.transform="";return}if(!this._isAttachedToDom()){this._needsOutlineLabelOffsetUpdateOnStable=!0;return}let r=this._iconPrefixContainer?.nativeElement,o=this._textPrefixContainer?.nativeElement,s=r?.getBoundingClientRect().width??0,a=o?.getBoundingClientRect().width??0,l=this._dir.value==="rtl"?"-1":"1",c=`${s+a}px`,u=`calc(${l} * (${c} + var(--mat-mdc-form-field-label-offset-x, 0px)))`;t.style.transform=`var( + --mat-mdc-form-field-label-transform, + ${qN} translateX(${u}) + )`}_isAttachedToDom(){let t=this._elementRef.nativeElement;if(t.getRootNode){let r=t.getRootNode();return r&&r!==t}return document.documentElement.contains(t)}};e.\u0275fac=function(r){return new(r||e)(f(k),f(Oe),f(A),f(Dt),f(be),f(WN,8),f(ct,8),f(N))},e.\u0275cmp=V({type:e,selectors:[["mat-form-field"]],contentQueries:function(r,o,s){if(r&1&&(Re(s,Ei,5),Re(s,Ei,7),Re(s,ol,5),Re(s,zN,5),Re(s,HN,5),Re(s,VN,5),Re(s,Ng,5)),r&2){let a;q(a=Y())&&(o._labelChildNonStatic=a.first),q(a=Y())&&(o._labelChildStatic=a.first),q(a=Y())&&(o._formFieldControl=a.first),q(a=Y())&&(o._prefixChildren=a),q(a=Y())&&(o._suffixChildren=a),q(a=Y())&&(o._errorChildren=a),q(a=Y())&&(o._hintChildren=a)}},viewQuery:function(r,o){if(r&1&&(Be(_N,5),Be(bN,5),Be(vN,5),Be(HC,5),Be(WC,5),Be($C,5)),r&2){let s;q(s=Y())&&(o._textField=s.first),q(s=Y())&&(o._iconPrefixContainer=s.first),q(s=Y())&&(o._textPrefixContainer=s.first),q(s=Y())&&(o._floatingLabel=s.first),q(s=Y())&&(o._notchedOutline=s.first),q(s=Y())&&(o._lineRipple=s.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(r,o){r&2&&_e("mat-mdc-form-field-label-always-float",o._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",o._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",o._hasIconSuffix)("mat-form-field-invalid",o._control.errorState)("mat-form-field-disabled",o._control.disabled)("mat-form-field-autofilled",o._control.autofilled)("mat-form-field-no-animations",o._animationMode==="NoopAnimations")("mat-form-field-appearance-fill",o.appearance=="fill")("mat-form-field-appearance-outline",o.appearance=="outline")("mat-form-field-hide-placeholder",o._hasFloatingLabel()&&!o._shouldLabelFloat())("mat-focused",o._control.focused)("mat-primary",o.color!=="accent"&&o.color!=="warn")("mat-accent",o.color==="accent")("mat-warn",o.color==="warn")("ng-untouched",o._shouldForward("untouched"))("ng-touched",o._shouldForward("touched"))("ng-pristine",o._shouldForward("pristine"))("ng-dirty",o._shouldForward("dirty"))("ng-valid",o._shouldForward("valid"))("ng-invalid",o._shouldForward("invalid"))("ng-pending",o._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],standalone:!0,features:[Me([{provide:sl,useExisting:e},{provide:ZC,useExisting:e}]),B],ngContentSelectors:jN,decls:18,vars:21,consts:[["labelTemplate",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],["textField",""],["class","mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen"],["class","mat-mdc-form-field-icon-prefix"],["class","mat-mdc-form-field-text-prefix"],[1,"mat-mdc-form-field-infix"],[3,"ngTemplateOutlet"],["class","mat-mdc-form-field-text-suffix"],["class","mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align"],["matFormFieldFloatingLabel","",3,"floating","monitorResize","id"],["aria-hidden","true","class","mat-mdc-form-field-required-marker mdc-floating-label--required"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[1,"mat-mdc-form-field-focus-overlay"],[1,"mat-mdc-form-field-icon-prefix"],["iconPrefixContainer",""],[1,"mat-mdc-form-field-text-prefix"],["textPrefixContainer",""],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],[3,"id"],[1,"mat-mdc-form-field-hint-spacer"]],template:function(r,o){if(r&1&&(Xe(LN),z(0,xN,1,1,"ng-template",null,0,G0),_(2,"div",1,2),j("click",function(a){return o._control.onContainerClick(a)}),z(4,CN,1,0,"div",3),_(5,"div",4),z(6,IN,2,2,"div",5)(7,SN,3,0,"div",6)(8,MN,3,0,"div",7),_(9,"div",8),z(10,AN,1,1,null,9),ge(11),b(),z(12,ON,2,0,"div",10)(13,RN,2,0,"div",11),b(),z(14,kN,1,0,"div",12),b(),_(15,"div",13),z(16,FN,2,1)(17,NN,5,2),b()),r&2){let s;D(2),_e("mdc-text-field--filled",!o._hasOutline())("mdc-text-field--outlined",o._hasOutline())("mdc-text-field--no-label",!o._hasFloatingLabel())("mdc-text-field--disabled",o._control.disabled)("mdc-text-field--invalid",o._control.errorState),D(2),pe(4,!o._hasOutline()&&!o._control.disabled?4:-1),D(2),pe(6,o._hasOutline()?6:-1),D(1),pe(7,o._hasIconPrefix?7:-1),D(1),pe(8,o._hasTextPrefix?8:-1),D(2),pe(10,!o._hasOutline()||o._forceDisplayInfixLabel()?10:-1),D(2),pe(12,o._hasTextSuffix?12:-1),D(1),pe(13,o._hasIconSuffix?13:-1),D(1),pe(14,o._hasOutline()?-1:14),D(1),_e("mat-mdc-form-field-subscript-dynamic-size",o.subscriptSizing==="dynamic"),D(1),pe(16,(s=o._getDisplayedMessages())==="error"?16:s==="hint"?17:-1)}},dependencies:[HC,WC,dw,$C,Ng],styles:['.mdc-text-field{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px,var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:4px;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:4px;border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:4px;border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:4px;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px,var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px,var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px,var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px,var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px,calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:"";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 64px/0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 64px/0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 96px/0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0px;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after,.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;pointer-events:none}.mdc-notched-outline__trailing{flex-grow:1}.mdc-notched-outline__notch{flex:0 0 auto;width:auto}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{border-top:1px solid;border-bottom:1px solid}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{max-width:calc(100% - 12px*2)}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-text-field--filled{border-top-left-radius:var(--mdc-filled-text-field-container-shape);border-top-right-radius:var(--mdc-filled-text-field-container-shape);border-bottom-right-radius:0;border-bottom-left-radius:0}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-caret-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-filled-text-field-error-caret-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-filled-text-field-input-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-filled-text-field-disabled-input-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-focus-label-text-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-hover-label-text-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-disabled-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-focus-label-text-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-filled-text-field-error-hover-label-text-color)}.mdc-text-field--filled .mdc-floating-label{font-family:var(--mdc-filled-text-field-label-text-font);font-size:var(--mdc-filled-text-field-label-text-size);font-weight:var(--mdc-filled-text-field-label-text-weight);letter-spacing:var(--mdc-filled-text-field-label-text-tracking)}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-filled-text-field-input-text-placeholder-color)}}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:var(--mdc-filled-text-field-container-color)}.mdc-text-field--filled.mdc-text-field--disabled{background-color:var(--mdc-filled-text-field-disabled-container-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-hover-active-indicator-color)}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-focus-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--disabled .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-disabled-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-line-ripple::before{border-bottom-color:var(--mdc-filled-text-field-error-hover-active-indicator-color)}.mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple::after{border-bottom-color:var(--mdc-filled-text-field-error-focus-active-indicator-color)}.mdc-text-field--filled .mdc-line-ripple::before{border-bottom-width:var(--mdc-filled-text-field-active-indicator-height)}.mdc-text-field--filled .mdc-line-ripple::after{border-bottom-width:var(--mdc-filled-text-field-focus-active-indicator-height)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-caret-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__input{caret-color:var(--mdc-outlined-text-field-error-caret-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input{color:var(--mdc-outlined-text-field-input-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-text-field__input{color:var(--mdc-outlined-text-field-disabled-input-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-focus-label-text-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-hover-label-text-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-disabled-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-focus-label-text-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-floating-label--float-above{color:var(--mdc-outlined-text-field-error-hover-label-text-color)}.mdc-text-field--outlined .mdc-floating-label{font-family:var(--mdc-outlined-text-field-label-text-font);font-size:var(--mdc-outlined-text-field-label-text-size);font-weight:var(--mdc-outlined-text-field-label-text-weight);letter-spacing:var(--mdc-outlined-text-field-label-text-tracking)}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}@media all{.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:var(--mdc-outlined-text-field-input-text-placeholder-color)}}.mdc-text-field--outlined.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(.75*var(--mdc-outlined-text-field-label-text-size))}.mdc-text-field--outlined.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mdc-outlined-text-field-label-text-size)}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px,var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px,var(--mdc-outlined-text-field-container-shape))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-right-radius:var(--mdc-outlined-text-field-container-shape);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-outlined-text-field-container-shape);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-outlined-text-field-container-shape)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px,var(--mdc-outlined-text-field-container-shape))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px,var(--mdc-outlined-text-field-container-shape))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px,calc(var(--mdc-outlined-text-field-container-shape) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-hover-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-focus-outline-color)}.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-disabled-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-hover-outline-color)}.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-outlined-text-field-error-focus-outline-color)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-outline-width)}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline .mdc-notched-outline__trailing{border-width:var(--mdc-outlined-text-field-focus-outline-width)}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;line-height:normal;pointer-events:all}.mat-mdc-form-field:not(.mat-form-field-disabled) .mat-mdc-floating-label.mdc-floating-label{cursor:inherit}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-form-field-disabled .mdc-text-field__input::placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-moz-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input::-webkit-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-form-field-disabled .mdc-text-field__input:-ms-input-placeholder{color:var(--mat-form-field-disabled-input-text-placeholder-color)}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid rgba(0,0,0,0)}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid rgba(0,0,0,0)}.mat-mdc-form-field-infix{min-height:var(--mat-form-field-container-height);padding-top:var(--mat-form-field-filled-with-label-container-padding-top);padding-bottom:var(--mat-form-field-filled-with-label-container-padding-bottom)}.mdc-text-field--outlined .mat-mdc-form-field-infix,.mdc-text-field--no-label .mat-mdc-form-field-infix{padding-top:var(--mat-form-field-container-vertical-padding);padding-bottom:var(--mat-form-field-container-vertical-padding)}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:calc(var(--mat-form-field-container-height)/2)}.mdc-text-field--filled .mat-mdc-floating-label{display:var(--mat-form-field-filled-label-display, block)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY(calc(calc(6.75px + var(--mat-form-field-container-height) / 2) * -1)) scale(var(--mat-mdc-form-field-floating-label-scale, 0.75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block;color:var(--mat-form-field-error-text-color)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align::before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none;background-color:var(--mat-form-field-state-layer-color)}.mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-hover-state-layer-opacity)}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:var(--mat-form-field-focus-state-layer-opacity)}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:var(--mat-form-field-select-option-text-color)}select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:var(--mat-form-field-select-disabled-option-text-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none;color:var(--mat-form-field-enabled-select-arrow-color)}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select.mat-focused .mat-mdc-form-field-infix::after{color:var(--mat-form-field-focus-select-arrow-color)}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix::after{color:var(--mat-form-field-disabled-select-arrow-color)}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field-input-control[type=date],.mat-mdc-form-field-input-control[type=datetime],.mat-mdc-form-field-input-control[type=datetime-local],.mat-mdc-form-field-input-control[type=month],.mat-mdc-form-field-input-control[type=week],.mat-mdc-form-field-input-control[type=time]{line-height:1}.mat-mdc-form-field-input-control::-webkit-datetime-edit{line-height:1;padding:0;margin-bottom:-2px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-container-text-font);line-height:var(--mat-form-field-container-text-line-height);font-size:var(--mat-form-field-container-text-size);letter-spacing:var(--mat-form-field-container-text-tracking);font-weight:var(--mat-form-field-container-text-weight)}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field .mdc-text-field--outlined .mdc-floating-label--float-above{font-size:calc(var(--mat-form-field-outlined-label-text-populated-size)*var(--mat-mdc-form-field-floating-label-scale))}.mat-mdc-form-field .mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:var(--mat-form-field-outlined-label-text-populated-size)}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto;position:relative;z-index:1}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-leading-icon-color)}.mat-form-field-disabled .mat-mdc-form-field-icon-prefix{color:var(--mat-form-field-disabled-leading-icon-color)}.mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-trailing-icon-color)}.mat-form-field-disabled .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-disabled-trailing-icon-color)}.mat-form-field-invalid .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-trailing-icon-color)}.mat-form-field-invalid:not(.mat-focused):not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper:hover .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-hover-trailing-icon-color)}.mat-form-field-invalid.mat-focused .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{color:var(--mat-form-field-error-focus-trailing-icon-color)}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 10.25px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 24.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - 32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}100%{transform:translateX(calc(0% - -32px)) translateY(calc(0% - 34.75px)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}100%{transform:translateX(calc(0% - 0%)) translateY(calc(0% - 106%)) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-notched-outline .mdc-floating-label{max-width:calc(100% + 1px)}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:calc(133.3333333333% + 1px)}'],encapsulation:2,data:{animation:[$N.transitionMessages]},changeDetection:0});let n=e;return n})(),hs=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({imports:[un,Je,_x,un]});let n=e;return n})();var ZN=new y("MAT_INPUT_VALUE_ACCESSOR"),QN=["button","checkbox","file","hidden","image","radio","range","reset","submit"],KN=0,ms=(()=>{let e=class e{get disabled(){return this._disabled}set disabled(t){this._disabled=ln(t),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(t){this._id=t||this._uid}get required(){return this._required??this.ngControl?.control?.hasValidator(cs.required)??!1}set required(t){this._required=ln(t)}get type(){return this._type}set type(t){this._type=t||"text",this._validateType(),!this._isTextarea&&tg().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(t){this._errorStateTracker.matcher=t}get value(){return this._inputValueAccessor.value}set value(t){t!==this.value&&(this._inputValueAccessor.value=t,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(t){this._readonly=ln(t)}get errorState(){return this._errorStateTracker.errorState}set errorState(t){this._errorStateTracker.errorState=t}constructor(t,r,o,s,a,l,c,d,u,h){this._elementRef=t,this._platform=r,this.ngControl=o,this._autofillMonitor=d,this._formField=h,this._uid=`mat-input-${KN++}`,this.focused=!1,this.stateChanges=new T,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(v=>tg().has(v)),this._iOSKeyupListener=v=>{let E=v.target;!E.value&&E.selectionStart===0&&E.selectionEnd===0&&(E.setSelectionRange(1,1),E.setSelectionRange(0,0))};let m=this._elementRef.nativeElement,g=m.nodeName.toLowerCase();this._inputValueAccessor=c||m,this._previousNativeValue=this.value,this.id=this.id,r.IOS&&u.runOutsideAngular(()=>{t.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._errorStateTracker=new es(l,o,a,s,this.stateChanges),this._isServer=!this._platform.isBrowser,this._isNativeSelect=g==="select",this._isTextarea=g==="textarea",this._isInFormField=!!h,this._isNativeSelect&&(this.controlType=m.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(t=>{this.autofilled=t.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),this.ngControl.disabled!==null&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(t){this._elementRef.nativeElement.focus(t)}updateErrorState(){this._errorStateTracker.updateErrorState()}_focusChanged(t){t!==this.focused&&(this.focused=t,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){let t=this._elementRef.nativeElement.value;this._previousNativeValue!==t&&(this._previousNativeValue=t,this.stateChanges.next())}_dirtyCheckPlaceholder(){let t=this._getPlaceholder();if(t!==this._previousPlaceholder){let r=this._elementRef.nativeElement;this._previousPlaceholder=t,t?r.setAttribute("placeholder",t):r.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){QN.indexOf(this._type)>-1}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let t=this._elementRef.nativeElement.validity;return t&&t.badInput}get empty(){return!this._isNeverEmpty()&&!this._elementRef.nativeElement.value&&!this._isBadInput()&&!this.autofilled}get shouldLabelFloat(){if(this._isNativeSelect){let t=this._elementRef.nativeElement,r=t.options[0];return this.focused||t.multiple||!this.empty||!!(t.selectedIndex>-1&&r&&r.label)}else return this.focused||!this.empty}setDescribedByIds(t){t.length?this._elementRef.nativeElement.setAttribute("aria-describedby",t.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){let t=this._elementRef.nativeElement;return this._isNativeSelect&&(t.multiple||t.size>1)}};e.\u0275fac=function(r){return new(r||e)(f(k),f(be),f(Tn,10),f(tl,8),f(il,8),f(tu),f(ZN,10),f(VC),f(A),f(sl,8))},e.\u0275dir=O({type:e,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(r,o){r&1&&j("focus",function(){return o._focusChanged(!0)})("blur",function(){return o._focusChanged(!1)})("input",function(){return o._onInput()}),r&2&&(Zn("id",o.id)("disabled",o.disabled)("required",o.required),we("name",o.name||null)("readonly",o.readonly&&!o._isNativeSelect||null)("aria-invalid",o.empty&&o.required?null:o.errorState)("aria-required",o.required)("id",o.id),_e("mat-input-server",o._isServer)("mat-mdc-form-field-textarea-control",o._isInFormField&&o._isTextarea)("mat-mdc-form-field-input-control",o._isInFormField)("mdc-text-field__input",o._isInFormField)("mat-mdc-native-select-inline",o._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],standalone:!0,features:[Me([{provide:ol,useExisting:e}]),qe]});let n=e;return n})(),QC=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275mod=oe({type:e}),e.\u0275inj=re({imports:[un,hs,hs,BC,un]});let n=e;return n})();var KC=(()=>{let e=class e{constructor(t){this.user_srv=t,this.username="",this.password=""}login(){this.user_srv.auth_login(this.username,this.password)}};e.\u0275fac=function(r){return new(r||e)(f(hn))},e.\u0275cmp=V({type:e,selectors:[["app-login"]],standalone:!0,features:[B],decls:13,vars:2,consts:[["appearance","outline"],["matInput","","placeholder","username","name","username",3,"ngModel","ngModelChange"],["matInput","","placeholder","password","type","password","name","password",3,"ngModel","ngModelChange"],["mat-raised-button","","color","primary",3,"click"]],template:function(r,o){r&1&&(_(0,"p")(1,"mat-form-field",0)(2,"mat-label"),M(3,"username"),b(),_(4,"input",1),j("ngModelChange",function(a){return o.username=a}),b()()(),_(5,"p")(6,"mat-form-field",0)(7,"mat-label"),M(8,"password"),b(),_(9,"input",2),j("ngModelChange",function(a){return o.password=a}),b()()(),_(10,"p")(11,"button",3),j("click",function(){return o.login()}),M(12,"\u767B\u5F55"),b()()),r&2&&(D(4),P("ngModel",o.username),D(5),P("ngModel",o.password))},dependencies:[Je,fs,Ji,ds,nl,Lt,ms,Ii,hs,Ei,QC,Hr],styles:["[_nghost-%COMP%]{height:100%;width:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}[_nghost-%COMP%] p[_ngcontent-%COMP%]{min-width:20rem;max-width:30rem;width:100%}[_nghost-%COMP%] p[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] p[_ngcontent-%COMP%] mat-form-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] p[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:100%}"]});let n=e;return n})();var XN=typeof atob=="function";var Lg=typeof Buffer=="function",XC=typeof TextDecoder=="function"?new TextDecoder:void 0,T7=typeof TextEncoder=="function"?new TextEncoder:void 0,JN="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",eL=Array.prototype.slice.call(JN),Eu=(n=>{let e={};return n.forEach((i,t)=>e[i]=t),e})(eL),tL=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,Wr=String.fromCharCode.bind(String),JC=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):n=>new Uint8Array(Array.prototype.slice.call(n,0));var eD=n=>n.replace(/[^A-Za-z0-9\+\/]/g,"");var nL=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,iL=n=>{switch(n.length){case 4:var e=(7&n.charCodeAt(0))<<18|(63&n.charCodeAt(1))<<12|(63&n.charCodeAt(2))<<6|63&n.charCodeAt(3),i=e-65536;return Wr((i>>>10)+55296)+Wr((i&1023)+56320);case 3:return Wr((15&n.charCodeAt(0))<<12|(63&n.charCodeAt(1))<<6|63&n.charCodeAt(2));default:return Wr((31&n.charCodeAt(0))<<6|63&n.charCodeAt(1))}},rL=n=>n.replace(nL,iL),oL=n=>{if(n=n.replace(/\s+/g,""),!tL.test(n))throw new TypeError("malformed base64.");n+="==".slice(2-(n.length&3));let e,i="",t,r;for(let o=0;o>16&255):r===64?Wr(e>>16&255,e>>8&255):Wr(e>>16&255,e>>8&255,e&255);return i},tD=XN?n=>atob(eD(n)):Lg?n=>Buffer.from(n,"base64").toString("binary"):oL,sL=Lg?n=>JC(Buffer.from(n,"base64")):n=>JC(tD(n).split("").map(e=>e.charCodeAt(0)));var aL=Lg?n=>Buffer.from(n,"base64").toString("utf8"):XC?n=>XC.decode(sL(n)):n=>rL(tD(n)),lL=n=>eD(n.replace(/[-_]/g,e=>e=="-"?"+":"/")),nD=n=>aL(lL(n));function dL(n,e){n&1&&ge(0,2)}function uL(n,e){n&1&&(_(0,"thead",0),Ot(1,1),b(),_(2,"tbody",0),Ot(3,2)(4,3),b(),_(5,"tfoot",0),Ot(6,4),b())}function fL(n,e){n&1&&Ot(0,1)(1,2)(2,3)(3,4)}var hL=[[["caption"]],[["colgroup"],["col"]],"*"],mL=["caption","colgroup, col","*"];function Hg(n){return class extends n{get sticky(){return this._sticky}set sticky(e){let i=this._sticky;this._sticky=ln(e),this._hasStickyChanged=i!==this._sticky}hasStickyChanged(){let e=this._hasStickyChanged;return this._hasStickyChanged=!1,e}resetStickyChanged(){this._hasStickyChanged=!1}constructor(...e){super(...e),this._sticky=!1,this._hasStickyChanged=!1}}}var An=new y("CDK_TABLE");var Ou=(()=>{let e=class e{constructor(t){this.template=t}};e.\u0275fac=function(r){return new(r||e)(f(Ve))},e.\u0275dir=O({type:e,selectors:[["","cdkCellDef",""]],standalone:!0});let n=e;return n})(),Ru=(()=>{let e=class e{constructor(t){this.template=t}};e.\u0275fac=function(r){return new(r||e)(f(Ve))},e.\u0275dir=O({type:e,selectors:[["","cdkHeaderCellDef",""]],standalone:!0});let n=e;return n})(),oD=(()=>{let e=class e{constructor(t){this.template=t}};e.\u0275fac=function(r){return new(r||e)(f(Ve))},e.\u0275dir=O({type:e,selectors:[["","cdkFooterCellDef",""]],standalone:!0});let n=e;return n})(),jg=class{},pL=Hg(jg),ps=(()=>{let e=class e extends pL{get name(){return this._name}set name(t){this._setNameInput(t)}get stickyEnd(){return this._stickyEnd}set stickyEnd(t){t!==this._stickyEnd&&(this._stickyEnd=t,this._hasStickyChanged=!0)}constructor(t){super(),this._table=t,this._stickyEnd=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(t){t&&(this._name=t,this.cssClassFriendlyName=t.replace(/[^a-z0-9_-]/gi,"-"),this._updateColumnCssClassName())}};e.\u0275fac=function(r){return new(r||e)(f(An,8))},e.\u0275dir=O({type:e,selectors:[["","cdkColumnDef",""]],contentQueries:function(r,o,s){if(r&1&&(Re(s,Ou,5),Re(s,Ru,5),Re(s,oD,5)),r&2){let a;q(a=Y())&&(o.cell=a.first),q(a=Y())&&(o.headerCell=a.first),q(a=Y())&&(o.footerCell=a.first)}},inputs:{sticky:"sticky",name:["cdkColumnDef","name"],stickyEnd:["stickyEnd","stickyEnd",fe]},standalone:!0,features:[Me([{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:e}]),Ue,ue]});let n=e;return n})(),Su=class{constructor(e,i){i.nativeElement.classList.add(...e._columnCssClassName)}},sD=(()=>{let e=class e extends Su{constructor(t,r){super(t,r)}};e.\u0275fac=function(r){return new(r||e)(f(ps),f(k))},e.\u0275dir=O({type:e,selectors:[["cdk-header-cell"],["th","cdk-header-cell",""]],hostAttrs:["role","columnheader",1,"cdk-header-cell"],standalone:!0,features:[ue]});let n=e;return n})();var aD=(()=>{let e=class e extends Su{constructor(t,r){super(t,r);let o=t._table?._getCellRole();o&&r.nativeElement.setAttribute("role",o)}};e.\u0275fac=function(r){return new(r||e)(f(ps),f(k))},e.\u0275dir=O({type:e,selectors:[["cdk-cell"],["td","cdk-cell",""]],hostAttrs:[1,"cdk-cell"],standalone:!0,features:[ue]});let n=e;return n})(),Mu=class{constructor(){this.tasks=[],this.endTasks=[]}},Tu=new y("_COALESCED_STYLE_SCHEDULER"),Ug=(()=>{let e=class e{constructor(t){this._ngZone=t,this._currentSchedule=null,this._destroyed=new T}schedule(t){this._createScheduleIfNeeded(),this._currentSchedule.tasks.push(t)}scheduleEnd(t){this._createScheduleIfNeeded(),this._currentSchedule.endTasks.push(t)}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}_createScheduleIfNeeded(){this._currentSchedule||(this._currentSchedule=new Mu,this._getScheduleObservable().pipe(ne(this._destroyed)).subscribe(()=>{for(;this._currentSchedule.tasks.length||this._currentSchedule.endTasks.length;){let t=this._currentSchedule;this._currentSchedule=new Mu;for(let r of t.tasks)r();for(let r of t.endTasks)r()}this._currentSchedule=null}))}_getScheduleObservable(){return this._ngZone.isStable?ke(Promise.resolve(void 0)):this._ngZone.onStable.pipe(ie(1))}};e.\u0275fac=function(r){return new(r||e)(p(A))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})();var $g=(()=>{let e=class e{constructor(t,r){this.template=t,this._differs=r}ngOnChanges(t){if(!this._columnsDiffer){let r=t.columns&&t.columns.currentValue||[];this._columnsDiffer=this._differs.find(r).create(),this._columnsDiffer.diff(r)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(t){return this instanceof al?t.headerCell.template:this instanceof Wg?t.footerCell.template:t.cell.template}};e.\u0275fac=function(r){return new(r||e)(f(Ve),f(Gn))},e.\u0275dir=O({type:e,features:[qe]});let n=e;return n})(),Vg=class extends $g{},gL=Hg(Vg),al=(()=>{let e=class e extends gL{constructor(t,r,o){super(t,r),this._table=o}ngOnChanges(t){super.ngOnChanges(t)}};e.\u0275fac=function(r){return new(r||e)(f(Ve),f(Gn),f(An,8))},e.\u0275dir=O({type:e,selectors:[["","cdkHeaderRowDef",""]],inputs:{columns:["cdkHeaderRowDef","columns"],sticky:["cdkHeaderRowDefSticky","sticky"]},standalone:!0,features:[ue,qe]});let n=e;return n})(),Bg=class extends $g{},_L=Hg(Bg),Wg=(()=>{let e=class e extends _L{constructor(t,r,o){super(t,r),this._table=o}ngOnChanges(t){super.ngOnChanges(t)}};e.\u0275fac=function(r){return new(r||e)(f(Ve),f(Gn),f(An,8))},e.\u0275dir=O({type:e,selectors:[["","cdkFooterRowDef",""]],inputs:{columns:["cdkFooterRowDef","columns"],sticky:["cdkFooterRowDefSticky","sticky"]},standalone:!0,features:[ue,qe]});let n=e;return n})(),ku=(()=>{let e=class e extends $g{constructor(t,r,o){super(t,r),this._table=o}};e.\u0275fac=function(r){return new(r||e)(f(Ve),f(Gn),f(An,8))},e.\u0275dir=O({type:e,selectors:[["","cdkRowDef",""]],inputs:{columns:["cdkRowDefColumns","columns"],when:["cdkRowDefWhen","when"]},standalone:!0,features:[ue]});let n=e;return n})(),Gr=(()=>{let e=class e{constructor(t){this._viewContainer=t,e.mostRecentCellOutlet=this}ngOnDestroy(){e.mostRecentCellOutlet===this&&(e.mostRecentCellOutlet=null)}};e.mostRecentCellOutlet=null,e.\u0275fac=function(r){return new(r||e)(f(Ke))},e.\u0275dir=O({type:e,selectors:[["","cdkCellOutlet",""]],standalone:!0});let n=e;return n})(),Gg=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275cmp=V({type:e,selectors:[["cdk-header-row"],["tr","cdk-header-row",""]],hostAttrs:["role","row",1,"cdk-header-row"],standalone:!0,features:[B],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(r,o){r&1&&Ot(0,0)},dependencies:[Gr],encapsulation:2});let n=e;return n})();var qg=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275cmp=V({type:e,selectors:[["cdk-row"],["tr","cdk-row",""]],hostAttrs:["role","row",1,"cdk-row"],standalone:!0,features:[B],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(r,o){r&1&&Ot(0,0)},dependencies:[Gr],encapsulation:2});let n=e;return n})(),lD=(()=>{let e=class e{constructor(t){this.templateRef=t,this._contentClassName="cdk-no-data-row"}};e.\u0275fac=function(r){return new(r||e)(f(Ve))},e.\u0275dir=O({type:e,selectors:[["ng-template","cdkNoDataRow",""]],standalone:!0});let n=e;return n})(),iD=["top","bottom","left","right"],zg=class{constructor(e,i,t,r,o=!0,s=!0,a){this._isNativeHtmlTable=e,this._stickCellCss=i,this.direction=t,this._coalescedStyleScheduler=r,this._isBrowser=o,this._needsPositionStickyOnElement=s,this._positionListener=a,this._cachedCellWidths=[],this._borderCellCss={top:`${i}-border-elem-top`,bottom:`${i}-border-elem-bottom`,left:`${i}-border-elem-left`,right:`${i}-border-elem-right`}}clearStickyPositioning(e,i){let t=[];for(let r of e)if(r.nodeType===r.ELEMENT_NODE){t.push(r);for(let o=0;o{for(let r of t)this._removeStickyStyle(r,i)})}updateStickyColumns(e,i,t,r=!0){if(!e.length||!this._isBrowser||!(i.some(o=>o)||t.some(o=>o))){this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:[]}),this._positionListener.stickyEndColumnsUpdated({sizes:[]}));return}this._coalescedStyleScheduler.schedule(()=>{let o=e[0],s=o.children.length,a=this._getCellWidths(o,r),l=this._getStickyStartColumnPositions(a,i),c=this._getStickyEndColumnPositions(a,t),d=i.lastIndexOf(!0),u=t.indexOf(!0),h=this.direction==="rtl",m=h?"right":"left",g=h?"left":"right";for(let v of e)for(let E=0;Ei[E]?v:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:u===-1?[]:a.slice(u).map((v,E)=>t[E+u]?v:null).reverse()}))})}stickRows(e,i,t){this._isBrowser&&this._coalescedStyleScheduler.schedule(()=>{let r=t==="bottom"?e.slice().reverse():e,o=t==="bottom"?i.slice().reverse():i,s=[],a=[],l=[];for(let d=0,u=0;d{let t=e.querySelector("tfoot");i.some(r=>!r)?this._removeStickyStyle(t,["bottom"]):this._addStickyStyle(t,"bottom",0,!1)})}_removeStickyStyle(e,i){for(let r of i)e.style[r]="",e.classList.remove(this._borderCellCss[r]);iD.some(r=>i.indexOf(r)===-1&&e.style[r])?e.style.zIndex=this._getCalculatedZIndex(e):(e.style.zIndex="",this._needsPositionStickyOnElement&&(e.style.position=""),e.classList.remove(this._stickCellCss))}_addStickyStyle(e,i,t,r){e.classList.add(this._stickCellCss),r&&e.classList.add(this._borderCellCss[i]),e.style[i]=`${t}px`,e.style.zIndex=this._getCalculatedZIndex(e),this._needsPositionStickyOnElement&&(e.style.cssText+="position: -webkit-sticky; position: sticky; ")}_getCalculatedZIndex(e){let i={top:100,bottom:10,left:1,right:1},t=0;for(let r of iD)e.style[r]&&(t+=i[r]);return t?`${t}`:""}_getCellWidths(e,i=!0){if(!i&&this._cachedCellWidths.length)return this._cachedCellWidths;let t=[],r=e.children;for(let o=0;o0;o--)i[o]&&(t[o]=r,r+=e[o]);return t}};var Au=new y("CDK_SPL");var Yg=(()=>{let e=class e{constructor(t,r){this.viewContainer=t,this.elementRef=r;let o=C(An);o._rowOutlet=this,o._outletAssigned()}};e.\u0275fac=function(r){return new(r||e)(f(Ke),f(k))},e.\u0275dir=O({type:e,selectors:[["","rowOutlet",""]],standalone:!0});let n=e;return n})(),Zg=(()=>{let e=class e{constructor(t,r){this.viewContainer=t,this.elementRef=r;let o=C(An);o._headerRowOutlet=this,o._outletAssigned()}};e.\u0275fac=function(r){return new(r||e)(f(Ke),f(k))},e.\u0275dir=O({type:e,selectors:[["","headerRowOutlet",""]],standalone:!0});let n=e;return n})(),Qg=(()=>{let e=class e{constructor(t,r){this.viewContainer=t,this.elementRef=r;let o=C(An);o._footerRowOutlet=this,o._outletAssigned()}};e.\u0275fac=function(r){return new(r||e)(f(Ke),f(k))},e.\u0275dir=O({type:e,selectors:[["","footerRowOutlet",""]],standalone:!0});let n=e;return n})(),Kg=(()=>{let e=class e{constructor(t,r){this.viewContainer=t,this.elementRef=r;let o=C(An);o._noDataRowOutlet=this,o._outletAssigned()}};e.\u0275fac=function(r){return new(r||e)(f(Ke),f(k))},e.\u0275dir=O({type:e,selectors:[["","noDataRowOutlet",""]],standalone:!0});let n=e;return n})();var Xg=(()=>{let e=class e{_getCellRole(){if(this._cellRoleInternal===void 0){let t=this._elementRef.nativeElement.getAttribute("role"),r=t==="grid"||t==="treegrid"?"gridcell":"cell";this._cellRoleInternal=this._isNativeHtmlTable&&r==="cell"?null:r}return this._cellRoleInternal}get trackBy(){return this._trackByFn}set trackBy(t){this._trackByFn=t}get dataSource(){return this._dataSource}set dataSource(t){this._dataSource!==t&&this._switchDataSource(t)}get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(t){this._multiTemplateDataRows=t,this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}get fixedLayout(){return this._fixedLayout}set fixedLayout(t){this._fixedLayout=t,this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}constructor(t,r,o,s,a,l,c,d,u,h,m,g){this._differs=t,this._changeDetectorRef=r,this._elementRef=o,this._dir=a,this._platform=c,this._viewRepeater=d,this._coalescedStyleScheduler=u,this._viewportRuler=h,this._stickyPositioningListener=m,this._ngZone=g,this._onDestroy=new T,this._columnDefsByName=new Map,this._customColumnDefs=new Set,this._customRowDefs=new Set,this._customHeaderRowDefs=new Set,this._customFooterRowDefs=new Set,this._headerRowDefChanged=!0,this._footerRowDefChanged=!0,this._stickyColumnStylesNeedReset=!0,this._forceRecalculateCellWidths=!0,this._cachedRenderRowsMap=new Map,this.stickyCssClass="cdk-table-sticky",this.needsPositionStickyOnElement=!0,this._isShowingNoDataRow=!1,this._hasRendered=!1,this._cellRoleInternal=void 0,this._multiTemplateDataRows=!1,this._fixedLayout=!1,this.contentChanged=new X,this.viewChange=new tt({start:0,end:Number.MAX_VALUE}),s||o.nativeElement.setAttribute("role","table"),this._document=l,this._isServer=!c.isBrowser,this._isNativeHtmlTable=o.nativeElement.nodeName==="TABLE"}ngOnInit(){this._setupStickyStyler(),this._dataDiffer=this._differs.find([]).create((t,r)=>this.trackBy?this.trackBy(r.dataIndex,r.data):r),this._viewportRuler.change().pipe(ne(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentChecked(){this._hasRendered&&this._render()}ngOnDestroy(){[this._rowOutlet?.viewContainer,this._headerRowOutlet?.viewContainer,this._footerRowOutlet?.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(t=>{t?.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._onDestroy.next(),this._onDestroy.complete(),su(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();let t=this._dataDiffer.diff(this._renderRows);if(!t){this._updateNoDataRow(),this.contentChanged.next();return}let r=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(t,r,(o,s,a)=>this._getEmbeddedViewArgs(o.item,a),o=>o.item.data,o=>{o.operation===is.INSERTED&&o.context&&this._renderCellTemplateForItem(o.record.item.rowDef,o.context)}),this._updateRowIndexContext(),t.forEachIdentityChange(o=>{let s=r.get(o.currentIndex);s.context.$implicit=o.item.data}),this._updateNoDataRow(),this._ngZone&&A.isInAngularZone()?this._ngZone.onStable.pipe(ie(1),ne(this._onDestroy)).subscribe(()=>{this.updateStickyColumnStyles()}):this.updateStickyColumnStyles(),this.contentChanged.next()}addColumnDef(t){this._customColumnDefs.add(t)}removeColumnDef(t){this._customColumnDefs.delete(t)}addRowDef(t){this._customRowDefs.add(t)}removeRowDef(t){this._customRowDefs.delete(t)}addHeaderRowDef(t){this._customHeaderRowDefs.add(t),this._headerRowDefChanged=!0}removeHeaderRowDef(t){this._customHeaderRowDefs.delete(t),this._headerRowDefChanged=!0}addFooterRowDef(t){this._customFooterRowDefs.add(t),this._footerRowDefChanged=!0}removeFooterRowDef(t){this._customFooterRowDefs.delete(t),this._footerRowDefChanged=!0}setNoDataRow(t){this._customNoDataRow=t}updateStickyHeaderRowStyles(){let t=this._getRenderedRows(this._headerRowOutlet);if(this._isNativeHtmlTable){let o=rD(this._headerRowOutlet,"thead");o&&(o.style.display=t.length?"":"none")}let r=this._headerRowDefs.map(o=>o.sticky);this._stickyStyler.clearStickyPositioning(t,["top"]),this._stickyStyler.stickRows(t,r,"top"),this._headerRowDefs.forEach(o=>o.resetStickyChanged())}updateStickyFooterRowStyles(){let t=this._getRenderedRows(this._footerRowOutlet);if(this._isNativeHtmlTable){let o=rD(this._footerRowOutlet,"tfoot");o&&(o.style.display=t.length?"":"none")}let r=this._footerRowDefs.map(o=>o.sticky);this._stickyStyler.clearStickyPositioning(t,["bottom"]),this._stickyStyler.stickRows(t,r,"bottom"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,r),this._footerRowDefs.forEach(o=>o.resetStickyChanged())}updateStickyColumnStyles(){let t=this._getRenderedRows(this._headerRowOutlet),r=this._getRenderedRows(this._rowOutlet),o=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this._fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...t,...r,...o],["left","right"]),this._stickyColumnStylesNeedReset=!1),t.forEach((s,a)=>{this._addStickyColumnStyles([s],this._headerRowDefs[a])}),this._rowDefs.forEach(s=>{let a=[];for(let l=0;l{this._addStickyColumnStyles([s],this._footerRowDefs[a])}),Array.from(this._columnDefsByName.values()).forEach(s=>s.resetStickyChanged())}_outletAssigned(){!this._hasRendered&&this._rowOutlet&&this._headerRowOutlet&&this._footerRowOutlet&&this._noDataRowOutlet&&(this._hasRendered=!0,this._render())}_render(){this._cacheRowDefs(),this._cacheColumnDefs(),!this._headerRowDefs.length&&!this._footerRowDefs.length&&this._rowDefs.length;let r=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||r,this._forceRecalculateCellWidths=r,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}_getAllRenderRows(){let t=[],r=this._cachedRenderRowsMap;this._cachedRenderRowsMap=new Map;for(let o=0;o{let l=o&&o.has(a)?o.get(a):[];if(l.length){let c=l.shift();return c.dataIndex=r,c}else return{data:t,rowDef:a,dataIndex:r}})}_cacheColumnDefs(){this._columnDefsByName.clear(),Iu(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(r=>{this._columnDefsByName.has(r.name),this._columnDefsByName.set(r.name,r)})}_cacheRowDefs(){this._headerRowDefs=Iu(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=Iu(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=Iu(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);let t=this._rowDefs.filter(r=>!r.when);!this.multiTemplateDataRows&&t.length>1,this._defaultRowDef=t[0]}_renderUpdatedColumns(){let t=(a,l)=>a||!!l.getColumnsDiff(),r=this._rowDefs.reduce(t,!1);r&&this._forceRenderDataRows();let o=this._headerRowDefs.reduce(t,!1);o&&this._forceRenderHeaderRows();let s=this._footerRowDefs.reduce(t,!1);return s&&this._forceRenderFooterRows(),r||o||s}_switchDataSource(t){this._data=[],su(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),t||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet&&this._rowOutlet.viewContainer.clear()),this._dataSource=t}_observeRenderChanges(){if(!this.dataSource)return;let t;su(this.dataSource)?t=this.dataSource.connect(this):lr(this.dataSource)?t=this.dataSource:Array.isArray(this.dataSource)&&(t=R(this.dataSource)),this._renderChangeSubscription=t.pipe(ne(this._onDestroy)).subscribe(r=>{this._data=r||[],this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((t,r)=>this._renderRow(this._headerRowOutlet,t,r)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((t,r)=>this._renderRow(this._footerRowOutlet,t,r)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(t,r){let o=Array.from(r.columns||[]).map(l=>{let c=this._columnDefsByName.get(l);return c}),s=o.map(l=>l.sticky),a=o.map(l=>l.stickyEnd);this._stickyStyler.updateStickyColumns(t,s,a,!this._fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(t){let r=[];for(let o=0;o!s.when||s.when(r,t));else{let s=this._rowDefs.find(a=>a.when&&a.when(r,t))||this._defaultRowDef;s&&o.push(s)}return o.length,o}_getEmbeddedViewArgs(t,r){let o=t.rowDef,s={$implicit:t.data};return{templateRef:o.template,context:s,index:r}}_renderRow(t,r,o,s={}){let a=t.viewContainer.createEmbeddedView(r.template,s,o);return this._renderCellTemplateForItem(r,s),a}_renderCellTemplateForItem(t,r){for(let o of this._getCellTemplates(t))Gr.mostRecentCellOutlet&&Gr.mostRecentCellOutlet._viewContainer.createEmbeddedView(o,r);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){let t=this._rowOutlet.viewContainer;for(let r=0,o=t.length;r{let o=this._columnDefsByName.get(r);return t.extractCellTemplate(o)})}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){let t=(r,o)=>r||o.hasStickyChanged();this._headerRowDefs.reduce(t,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(t,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(t,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){let t=this._dir?this._dir.value:"ltr";this._stickyStyler=new zg(this._isNativeHtmlTable,this.stickyCssClass,t,this._coalescedStyleScheduler,this._platform.isBrowser,this.needsPositionStickyOnElement,this._stickyPositioningListener),(this._dir?this._dir.change:R()).pipe(ne(this._onDestroy)).subscribe(r=>{this._stickyStyler.direction=r,this.updateStickyColumnStyles()})}_getOwnDefs(t){return t.filter(r=>!r._table||r._table===this)}_updateNoDataRow(){let t=this._customNoDataRow||this._noDataRow;if(!t)return;let r=this._rowOutlet.viewContainer.length===0;if(r===this._isShowingNoDataRow)return;let o=this._noDataRowOutlet.viewContainer;if(r){let s=o.createEmbeddedView(t.templateRef),a=s.rootNodes[0];s.rootNodes.length===1&&a?.nodeType===this._document.ELEMENT_NODE&&(a.setAttribute("role","row"),a.classList.add(t._contentClassName))}else o.clear();this._isShowingNoDataRow=r,this._changeDetectorRef.markForCheck()}};e.\u0275fac=function(r){return new(r||e)(f(Gn),f(Oe),f(k),fi("role"),f(Dt,8),f(N),f(be),f(Wa),f(Tu),f(Qi),f(Au,12),f(A,8))},e.\u0275cmp=V({type:e,selectors:[["cdk-table"],["table","cdk-table",""]],contentQueries:function(r,o,s){if(r&1&&(Re(s,lD,5),Re(s,ps,5),Re(s,ku,5),Re(s,al,5),Re(s,Wg,5)),r&2){let a;q(a=Y())&&(o._noDataRow=a.first),q(a=Y())&&(o._contentColumnDefs=a),q(a=Y())&&(o._contentRowDefs=a),q(a=Y())&&(o._contentHeaderRowDefs=a),q(a=Y())&&(o._contentFooterRowDefs=a)}},hostAttrs:[1,"cdk-table"],hostVars:2,hostBindings:function(r,o){r&2&&_e("cdk-table-fixed-layout",o.fixedLayout)},inputs:{trackBy:"trackBy",dataSource:"dataSource",multiTemplateDataRows:["multiTemplateDataRows","multiTemplateDataRows",fe],fixedLayout:["fixedLayout","fixedLayout",fe]},outputs:{contentChanged:"contentChanged"},exportAs:["cdkTable"],standalone:!0,features:[Me([{provide:An,useExisting:e},{provide:Wa,useClass:rs},{provide:Tu,useClass:Ug},{provide:Au,useValue:null}]),Ue,B],ngContentSelectors:mL,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(r,o){r&1&&(Xe(hL),ge(0),ge(1,1),z(2,dL,1,0)(3,uL,7,0)(4,fL,4,0)),r&2&&(D(2),pe(2,o._isServer?2:-1),D(1),pe(3,o._isNativeHtmlTable?3:4))},dependencies:[Zg,Yg,Kg,Qg],styles:[".cdk-table-fixed-layout{table-layout:fixed}"],encapsulation:2});let n=e;return n})();function Iu(n,e){return n.concat(Array.from(e))}function rD(n,e){let i=e.toUpperCase(),t=n.viewContainer.element.nativeElement;for(;t;){let r=t.nodeType===1?t.nodeName:null;if(r===i)return t;if(r==="TABLE")break;t=t.parentNode}return null}function bL(n,e){n&1&&ge(0,2)}function vL(n,e){n&1&&(_(0,"thead",0),Ot(1,1),b(),_(2,"tbody",2),Ot(3,3)(4,4),b(),_(5,"tfoot",0),Ot(6,5),b())}function yL(n,e){n&1&&Ot(0,1)(1,3)(2,4)(3,5)}var wL=[[["caption"]],[["colgroup"],["col"]],"*"],xL=["caption","colgroup, col","*"];var Fu=(()=>{let e=class e extends Xg{constructor(){super(...arguments),this.stickyCssClass="mat-mdc-table-sticky",this.needsPositionStickyOnElement=!1}};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275cmp=V({type:e,selectors:[["mat-table"],["table","mat-table",""]],hostAttrs:[1,"mat-mdc-table","mdc-data-table__table"],hostVars:2,hostBindings:function(r,o){r&2&&_e("mdc-table-fixed-layout",o.fixedLayout)},exportAs:["matTable"],standalone:!0,features:[Me([{provide:Xg,useExisting:e},{provide:An,useExisting:e},{provide:Tu,useClass:Ug},{provide:Wa,useClass:rs},{provide:Au,useValue:null}]),ue,B],ngContentSelectors:xL,decls:5,vars:2,consts:[["role","rowgroup"],["headerRowOutlet",""],["role","rowgroup",1,"mdc-data-table__content"],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(r,o){r&1&&(Xe(wL),ge(0),ge(1,1),z(2,bL,1,0)(3,vL,7,0)(4,yL,4,0)),r&2&&(D(2),pe(2,o._isServer?2:-1),D(1),pe(3,o._isNativeHtmlTable?3:4))},dependencies:[Zg,Yg,Kg,Qg],styles:[".mat-mdc-table-sticky{position:sticky !important}.mdc-data-table{-webkit-overflow-scrolling:touch;display:inline-flex;flex-direction:column;box-sizing:border-box;position:relative}.mdc-data-table__table-container{-webkit-overflow-scrolling:touch;overflow-x:auto;width:100%}.mdc-data-table__table{min-width:100%;border:0;white-space:nowrap;border-spacing:0;table-layout:fixed}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell,.mdc-data-table__cell[dir=rtl]{text-align:right}.mdc-data-table__cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__cell--numeric,.mdc-data-table__cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__header-cell{box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mdc-data-table__header-cell,.mdc-data-table__header-cell[dir=rtl]{text-align:right}.mdc-data-table__header-cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__header-cell--numeric,.mdc-data-table__header-cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__header-cell-wrapper{align-items:center;display:inline-flex;vertical-align:middle}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px 0 16px}.mdc-data-table__header-cell--checkbox,.mdc-data-table__cell--checkbox{padding-left:4px;padding-right:0}[dir=rtl] .mdc-data-table__header-cell--checkbox,[dir=rtl] .mdc-data-table__cell--checkbox,.mdc-data-table__header-cell--checkbox[dir=rtl],.mdc-data-table__cell--checkbox[dir=rtl]{padding-left:0;padding-right:4px}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table{table-layout:auto;white-space:normal;background-color:var(--mat-table-background-color)}.mat-mdc-header-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-header-container-height, 56px);color:var(--mat-table-header-headline-color, rgba(0, 0, 0, 0.87));font-family:var(--mat-table-header-headline-font, Roboto, sans-serif);line-height:var(--mat-table-header-headline-line-height);font-size:var(--mat-table-header-headline-size, 14px);font-weight:var(--mat-table-header-headline-weight, 500)}.mat-mdc-row{height:var(--mat-table-row-item-container-height, 52px);color:var(--mat-table-row-item-label-text-color, rgba(0, 0, 0, 0.87))}.mat-mdc-row,.mdc-data-table__content{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-table-row-item-label-text-font, Roboto, sans-serif);line-height:var(--mat-table-row-item-label-text-line-height);font-size:var(--mat-table-row-item-label-text-size, 14px);font-weight:var(--mat-table-row-item-label-text-weight)}.mat-mdc-footer-row{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;height:var(--mat-table-footer-container-height, 52px);color:var(--mat-table-row-item-label-text-color, rgba(0, 0, 0, 0.87));font-family:var(--mat-table-footer-supporting-text-font, Roboto, sans-serif);line-height:var(--mat-table-footer-supporting-text-line-height);font-size:var(--mat-table-footer-supporting-text-size, 14px);font-weight:var(--mat-table-footer-supporting-text-weight);letter-spacing:var(--mat-table-footer-supporting-text-tracking)}.mat-mdc-header-cell{border-bottom-color:var(--mat-table-row-item-outline-color, rgba(0, 0, 0, 0.12));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-header-headline-tracking);font-weight:inherit;line-height:inherit}.mat-mdc-cell{border-bottom-color:var(--mat-table-row-item-outline-color, rgba(0, 0, 0, 0.12));border-bottom-width:var(--mat-table-row-item-outline-width, 1px);border-bottom-style:solid;letter-spacing:var(--mat-table-row-item-label-text-tracking);line-height:inherit}.mdc-data-table__row:last-child .mat-mdc-cell{border-bottom:none}.mat-mdc-footer-cell{letter-spacing:var(--mat-table-row-item-label-text-tracking)}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}"],encapsulation:2});let n=e;return n})(),Pu=(()=>{let e=class e extends Ou{};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275dir=O({type:e,selectors:[["","matCellDef",""]],standalone:!0,features:[Me([{provide:Ou,useExisting:e}]),ue]});let n=e;return n})(),Nu=(()=>{let e=class e extends Ru{};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275dir=O({type:e,selectors:[["","matHeaderCellDef",""]],standalone:!0,features:[Me([{provide:Ru,useExisting:e}]),ue]});let n=e;return n})();var Lu=(()=>{let e=class e extends ps{get name(){return this._name}set name(t){this._setNameInput(t)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275dir=O({type:e,selectors:[["","matColumnDef",""]],inputs:{sticky:"sticky",name:["matColumnDef","name"]},standalone:!0,features:[Me([{provide:ps,useExisting:e},{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:e}]),ue]});let n=e;return n})(),ju=(()=>{let e=class e extends sD{};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275dir=O({type:e,selectors:[["mat-header-cell"],["th","mat-header-cell",""]],hostAttrs:["role","columnheader",1,"mat-mdc-header-cell","mdc-data-table__header-cell"],standalone:!0,features:[ue]});let n=e;return n})();var Vu=(()=>{let e=class e extends aD{};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275dir=O({type:e,selectors:[["mat-cell"],["td","mat-cell",""]],hostAttrs:[1,"mat-mdc-cell","mdc-data-table__cell"],standalone:!0,features:[ue]});let n=e;return n})();var Bu=(()=>{let e=class e extends al{};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275dir=O({type:e,selectors:[["","matHeaderRowDef",""]],inputs:{columns:["matHeaderRowDef","columns"],sticky:["matHeaderRowDefSticky","sticky"]},standalone:!0,features:[Me([{provide:al,useExisting:e}]),ue]});let n=e;return n})();var zu=(()=>{let e=class e extends ku{};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275dir=O({type:e,selectors:[["","matRowDef",""]],inputs:{columns:["matRowDefColumns","columns"],when:["matRowDefWhen","when"]},standalone:!0,features:[Me([{provide:ku,useExisting:e}]),ue]});let n=e;return n})(),Hu=(()=>{let e=class e extends Gg{};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275cmp=V({type:e,selectors:[["mat-header-row"],["tr","mat-header-row",""]],hostAttrs:["role","row",1,"mat-mdc-header-row","mdc-data-table__header-row"],exportAs:["matHeaderRow"],standalone:!0,features:[Me([{provide:Gg,useExisting:e}]),ue,B],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(r,o){r&1&&Ot(0,0)},dependencies:[Gr],encapsulation:2});let n=e;return n})();var Uu=(()=>{let e=class e extends qg{};e.\u0275fac=(()=>{let t;return function(o){return(t||(t=_t(e)))(o||e)}})(),e.\u0275cmp=V({type:e,selectors:[["mat-row"],["tr","mat-row",""]],hostAttrs:["role","row",1,"mat-mdc-row","mdc-data-table__row"],exportAs:["matRow"],standalone:!0,features:[Me([{provide:qg,useExisting:e}]),ue,B],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(r,o){r&1&&Ot(0,0)},dependencies:[Gr],encapsulation:2});let n=e;return n})();var cD=(()=>{let e=class e{constructor(t){this.http=t,this.log_list_url="/api/log/content/list",this.logs=aa({list:[],total:0,page:0,size:0})}get_logs(){return this.http.get(this.log_list_url).pipe().subscribe(t=>{t.status===200?this.logs.set(ae(w({},this.logs()),{total:t.data.total,list:t.data.list})):this.logs.set(ae(w({},this.logs()),{list:[]}))})}};e.\u0275fac=function(r){return new(r||e)(p(Rr))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function DL(n,e){n&1&&(_(0,"th",12),M(1,"\u7528\u6237"),b())}function EL(n,e){if(n&1&&(_(0,"td",13),M(1),b()),n&2){let i=e.$implicit;D(1),Ae(" ",i.username,"")}}function IL(n,e){n&1&&(_(0,"th",12),M(1,"\u65F6\u95F4"),b())}function SL(n,e){if(n&1&&(_(0,"td",13),M(1),B0(2,"date"),b()),n&2){let i=e.$implicit;D(1),Ae(" ",z0(2,1,i.created_at,"yyyy-MM-dd HH:mm:SS"),"")}}function ML(n,e){n&1&&(_(0,"th",12),M(1,"\u65E5\u5FD7\u7C7B\u578B"),b())}function TL(n,e){if(n&1&&(_(0,"td",13),M(1),b()),n&2){let i=e.$implicit;D(1),Ae(" ",i.type.label,"")}}function AL(n,e){n&1&&(_(0,"th",12),M(1,"\u64CD\u4F5C"),b())}function OL(n,e){if(n&1&&ee(0,"td",14),n&2){let i=e.$implicit,t=U();P("innerHTML",t.decodeLog(i.html),Yy)}}function RL(n,e){n&1&&ee(0,"tr",15)}function kL(n,e){n&1&&ee(0,"tr",16)}var dD=(()=>{let e=class e{constructor(t){this.log_srv=t,this.displayedColumns=["username","created_at","type","html"]}ngOnInit(){this.log_srv.get_logs()}decodeLog(t){return nD(t)}};e.\u0275fac=function(r){return new(r||e)(f(cD))},e.\u0275cmp=V({type:e,selectors:[["app-log"]],standalone:!0,features:[B],decls:17,vars:3,consts:[[1,"logs"],[1,"table"],["mat-table","",1,"mat-elevation-z8",3,"dataSource"],["matColumnDef","username"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","created_at"],["matColumnDef","type"],["matColumnDef","html"],["mat-cell","",3,"innerHTML",4,"matCellDef"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],["mat-header-cell",""],["mat-cell",""],["mat-cell","",3,"innerHTML"],["mat-header-row",""],["mat-row",""]],template:function(r,o){r&1&&(_(0,"div",0)(1,"div",1)(2,"table",2),Tt(3,3),z(4,DL,2,0,"th",4)(5,EL,2,1,"td",5),At(),Tt(6,6),z(7,IL,2,0,"th",4)(8,SL,3,4,"td",5),At(),Tt(9,7),z(10,ML,2,0,"th",4)(11,TL,2,1,"td",5),At(),Tt(12,8),z(13,AL,2,0,"th",4)(14,OL,1,1,"td",9),At(),z(15,RL,1,0,"tr",10)(16,kL,1,0,"tr",11),b()()()),r&2&&(D(2),P("dataSource",o.log_srv.logs().list),D(13),P("matHeaderRowDef",o.displayedColumns),D(1),P("matRowDefColumns",o.displayedColumns))},dependencies:[Je,uw,Fu,Lu,ju,Vu,Pu,Nu,Hu,Bu,zu,Uu],styles:["[_nghost-%COMP%]{width:100%;overflow-x:auto}[_nghost-%COMP%] td>div.nf-op-log>span.nf-op-log-keyword{color:var(--my-primary-color);text-decoration:underline;font-weight:700;margin:0 1rem}"]});let n=e;return n})();var PL=["trigger"],NL=["panel"];function LL(n,e){if(n&1&&(_(0,"span",9),M(1),b()),n&2){let i=U();D(1),Ct(i.placeholder)}}function jL(n,e){n&1&&ge(0)}function VL(n,e){if(n&1&&(_(0,"span",11),M(1),b()),n&2){let i=U(2);D(1),Ct(i.triggerValue)}}function BL(n,e){if(n&1&&(_(0,"span",10),z(1,jL,1,0)(2,VL,2,1),b()),n&2){let i=U();D(1),pe(1,i.customTrigger?1:2)}}function zL(n,e){if(n&1){let i=Rt();Cn(),Js(),_(0,"div",12,13),j("@transformPanel.done",function(r){Ye(i);let o=U();return Ze(o._panelDoneAnimatingStream.next(r.toState))})("keydown",function(r){Ye(i);let o=U();return Ze(o._handleKeydown(r))}),ge(2,1),b()}if(n&2){let i=U();A0("mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open ",i._getPanelTheme(),""),P("ngClass",i.panelClass)("@transformPanel","showing"),we("id",i.id+"-panel")("aria-multiselectable",i.multiple)("aria-label",i.ariaLabel||null)("aria-labelledby",i._getPanelAriaLabelledby())}}var HL=[[["mat-select-trigger"]],"*"],UL=["mat-select-trigger","*"],$L={transformPanelWrap:ti("transformPanelWrap",[Zt("* => void",Yx("@transformPanel",[qx()],{optional:!0}))]),transformPanel:ti("transformPanel",[ni("void",at({opacity:0,transform:"scale(1, 0.8)"})),Zt("void => showing",fn("120ms cubic-bezier(0, 0, 0.2, 1)",at({opacity:1,transform:"scale(1, 1)"}))),Zt("* => void",fn("100ms linear",at({opacity:0})))])};var uD=0,WL=new y("mat-select-scroll-strategy",{providedIn:"root",factory:()=>{let n=C(et);return()=>n.scrollStrategies.reposition()}});var GL=new y("MAT_SELECT_CONFIG");var qL=new y("MatSelectTrigger"),Jg=class{constructor(e,i){this.source=e,this.value=i}},gs=(()=>{let e=class e{_scrollOptionIntoView(t){let r=this.options.toArray()[t];if(r){let o=this.panel.nativeElement,s=zx(t,this.options,this.optionGroups),a=r._getHostElement();t===0&&s===1?o.scrollTop=0:o.scrollTop=Hx(a.offsetTop,a.offsetHeight,o.scrollTop,o.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(t){return new Jg(this,t)}get focused(){return this._focused||this._panelOpen}get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(t){this._hideSingleSelectionIndicator=t,this._syncParentProperties()}get placeholder(){return this._placeholder}set placeholder(t){this._placeholder=t,this.stateChanges.next()}get required(){return this._required??this.ngControl?.control?.hasValidator(cs.required)??!1}set required(t){this._required=t,this.stateChanges.next()}get multiple(){return this._multiple}set multiple(t){this._selectionModel,this._multiple=t}get compareWith(){return this._compareWith}set compareWith(t){this._compareWith=t,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(t){this._assignValue(t)&&this._onChange(t)}get errorStateMatcher(){return this._errorStateTracker.matcher}set errorStateMatcher(t){this._errorStateTracker.matcher=t}get id(){return this._id}set id(t){this._id=t||this._uid,this.stateChanges.next()}get errorState(){return this._errorStateTracker.errorState}set errorState(t){this._errorStateTracker.errorState=t}constructor(t,r,o,s,a,l,c,d,u,h,m,g,v,E){this._viewportRuler=t,this._changeDetectorRef=r,this._ngZone=o,this._elementRef=a,this._dir=l,this._parentFormField=u,this.ngControl=h,this._liveAnnouncer=v,this._defaultOptions=E,this._positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}],this._panelOpen=!1,this._compareWith=(I,Q)=>I===Q,this._uid=`mat-select-${uD++}`,this._triggerAriaLabelledBy=null,this._destroy=new T,this.stateChanges=new T,this._onChange=()=>{},this._onTouched=()=>{},this._valueId=`mat-select-value-${uD++}`,this._panelDoneAnimatingStream=new T,this._overlayPanelClass=this._defaultOptions?.overlayPanelClass||"",this._focused=!1,this.controlType="mat-select",this.disabled=!1,this.disableRipple=!1,this.tabIndex=0,this._hideSingleSelectionIndicator=this._defaultOptions?.hideSingleSelectionIndicator??!1,this._multiple=!1,this.disableOptionCentering=this._defaultOptions?.disableOptionCentering??!1,this.ariaLabel="",this.panelWidth=this._defaultOptions&&typeof this._defaultOptions.panelWidth<"u"?this._defaultOptions.panelWidth:"auto",this.optionSelectionChanges=Bt(()=>{let I=this.options;return I?I.changes.pipe(pt(I),Fe(()=>rt(...I.map(Q=>Q.onSelectionChange)))):this._ngZone.onStable.pipe(ie(1),Fe(()=>this.optionSelectionChanges))}),this.openedChange=new X,this._openedStream=this.openedChange.pipe(le(I=>I),F(()=>{})),this._closedStream=this.openedChange.pipe(le(I=>!I),F(()=>{})),this.selectionChange=new X,this.valueChange=new X,this._trackedModal=null,this._skipPredicate=I=>this.panelOpen?!1:I.disabled,this.ngControl&&(this.ngControl.valueAccessor=this),E?.typeaheadDebounceInterval!=null&&(this.typeaheadDebounceInterval=E.typeaheadDebounceInterval),this._errorStateTracker=new es(s,h,d,c,this.stateChanges),this._scrollStrategyFactory=g,this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=parseInt(m)||0,this.id=this.id}ngOnInit(){this._selectionModel=new ou(this.multiple),this.stateChanges.next(),this._panelDoneAnimatingStream.pipe(Ri(),ne(this._destroy)).subscribe(()=>this._panelDoneAnimating(this.panelOpen)),this._viewportRuler.change().pipe(ne(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._changeDetectorRef.detectChanges())})}ngAfterContentInit(){this._initKeyManager(),this._selectionModel.changed.pipe(ne(this._destroy)).subscribe(t=>{t.added.forEach(r=>r.select()),t.removed.forEach(r=>r.deselect())}),this.options.changes.pipe(pt(null),ne(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){let t=this._getTriggerAriaLabelledby(),r=this.ngControl;if(t!==this._triggerAriaLabelledBy){let o=this._elementRef.nativeElement;this._triggerAriaLabelledBy=t,t?o.setAttribute("aria-labelledby",t):o.removeAttribute("aria-labelledby")}r&&(this._previousControl!==r.control&&(this._previousControl!==void 0&&r.disabled!==null&&r.disabled!==this.disabled&&(this.disabled=r.disabled),this._previousControl=r.control),this.updateErrorState())}ngOnChanges(t){(t.disabled||t.userAriaDescribedBy)&&this.stateChanges.next(),t.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this.typeaheadDebounceInterval)}ngOnDestroy(){this._keyManager?.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete(),this._clearFromModal()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin()),this._overlayWidth=this._getOverlayWidth(this._preferredOverlayOrigin),this._applyModalPanelOwnership(),this._panelOpen=!0,this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_applyModalPanelOwnership(){let t=this._elementRef.nativeElement.closest('body > .cdk-overlay-container [aria-modal="true"]');if(!t)return;let r=`${this.id}-panel`;this._trackedModal&&Kd(this._trackedModal,"aria-owns",r),ag(t,"aria-owns",r),this._trackedModal=t}_clearFromModal(){if(!this._trackedModal)return;let t=`${this.id}-panel`;Kd(this._trackedModal,"aria-owns",t),this._trackedModal=null}close(){this._panelOpen&&(this._panelOpen=!1,this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched(),this.stateChanges.next())}writeValue(t){this._assignValue(t)}registerOnChange(t){this._onChange=t}registerOnTouched(t){this._onTouched=t}setDisabledState(t){this.disabled=t,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){return this.multiple?this._selectionModel?.selected||[]:this._selectionModel?.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){let t=this._selectionModel.selected.map(r=>r.viewValue);return this._isRtl()&&t.reverse(),t.join(", ")}return this._selectionModel.selected[0].viewValue}updateErrorState(){this._errorStateTracker.updateErrorState()}_isRtl(){return this._dir?this._dir.value==="rtl":!1}_handleKeydown(t){this.disabled||(this.panelOpen?this._handleOpenKeydown(t):this._handleClosedKeydown(t))}_handleClosedKeydown(t){let r=t.keyCode,o=r===40||r===38||r===37||r===39,s=r===13||r===32,a=this._keyManager;if(!a.isTyping()&&s&&!bt(t)||(this.multiple||t.altKey)&&o)t.preventDefault(),this.open();else if(!this.multiple){let l=this.selected;a.onKeydown(t);let c=this.selected;c&&l!==c&&this._liveAnnouncer.announce(c.viewValue,1e4)}}_handleOpenKeydown(t){let r=this._keyManager,o=t.keyCode,s=o===40||o===38,a=r.isTyping();if(s&&t.altKey)t.preventDefault(),this.close();else if(!a&&(o===13||o===32)&&r.activeItem&&!bt(t))t.preventDefault(),r.activeItem._selectViaInteraction();else if(!a&&this._multiple&&o===65&&t.ctrlKey){t.preventDefault();let l=this.options.some(c=>!c.disabled&&!c.selected);this.options.forEach(c=>{c.disabled||(l?c.select():c.deselect())})}else{let l=r.activeItemIndex;r.onKeydown(t),this._multiple&&s&&t.shiftKey&&r.activeItem&&r.activeItemIndex!==l&&r.activeItem._selectViaInteraction()}}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){this._focused=!1,this._keyManager?.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_onAttached(){this._overlayDir.positionChange.pipe(ie(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()})}_getPanelTheme(){return this._parentFormField?`mat-${this._parentFormField.color}`:""}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(t){if(this.options.forEach(r=>r.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&t)Array.isArray(t),t.forEach(r=>this._selectOptionByValue(r)),this._sortValues();else{let r=this._selectOptionByValue(t);r?this._keyManager.updateActiveItem(r):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(t){let r=this.options.find(o=>{if(this._selectionModel.isSelected(o))return!1;try{return o.value!=null&&this._compareWith(o.value,t)}catch{return!1}});return r&&this._selectionModel.select(r),r}_assignValue(t){return t!==this._value||this._multiple&&Array.isArray(t)?(this.options&&this._setSelectionByValue(t),this._value=t,!0):!1}_getOverlayWidth(t){return this.panelWidth==="auto"?(t instanceof lu?t.elementRef:t||this._elementRef).nativeElement.getBoundingClientRect().width:this.panelWidth===null?"":this.panelWidth}_syncParentProperties(){if(this.options)for(let t of this.options)t._changeDetectorRef.markForCheck()}_initKeyManager(){this._keyManager=new Zd(this.options).withTypeAhead(this.typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]).skipPredicate(this._skipPredicate),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){let t=rt(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(ne(t)).subscribe(r=>{this._onSelect(r.source,r.isUserInput),r.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),rt(...this.options.map(r=>r._stateChanges)).pipe(ne(t)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(t,r){let o=this._selectionModel.isSelected(t);t.value==null&&!this._multiple?(t.deselect(),this._selectionModel.clear(),this.value!=null&&this._propagateChanges(t.value)):(o!==t.selected&&(t.selected?this._selectionModel.select(t):this._selectionModel.deselect(t)),r&&this._keyManager.setActiveItem(t),this.multiple&&(this._sortValues(),r&&this.focus())),o!==this._selectionModel.isSelected(t)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){let t=this.options.toArray();this._selectionModel.sort((r,o)=>this.sortComparator?this.sortComparator(r,o,t):t.indexOf(r)-t.indexOf(o)),this.stateChanges.next()}}_propagateChanges(t){let r;this.multiple?r=this.selected.map(o=>o.value):r=this.selected?this.selected.value:t,this._value=r,this.valueChange.emit(r),this._onChange(r),this.selectionChange.emit(this._getChangeEvent(r)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){if(this._keyManager)if(this.empty){let t=-1;for(let r=0;r0}focus(t){this._elementRef.nativeElement.focus(t)}_getPanelAriaLabelledby(){if(this.ariaLabel)return null;let t=this._parentFormField?.getLabelId(),r=t?t+" ":"";return this.ariaLabelledby?r+this.ariaLabelledby:t}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){if(this.ariaLabel)return null;let t=this._parentFormField?.getLabelId(),r=(t?t+" ":"")+this._valueId;return this.ariaLabelledby&&(r+=" "+this.ariaLabelledby),r}_panelDoneAnimating(t){this.openedChange.emit(t)}setDescribedByIds(t){t.length?this._elementRef.nativeElement.setAttribute("aria-describedby",t.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focus(),this.open()}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}};e.\u0275fac=function(r){return new(r||e)(f(Qi),f(Oe),f(A),f(tu),f(k),f(Dt,8),f(tl,8),f(il,8),f(sl,8),f(Tn,10),fi("tabindex"),f(WL),f(Jd),f(GL,8))},e.\u0275cmp=V({type:e,selectors:[["mat-select"]],contentQueries:function(r,o,s){if(r&1&&(Re(s,qL,5),Re(s,Jn,5),Re(s,gg,5)),r&2){let a;q(a=Y())&&(o.customTrigger=a.first),q(a=Y())&&(o.options=a),q(a=Y())&&(o.optionGroups=a)}},viewQuery:function(r,o){if(r&1&&(Be(PL,5),Be(NL,5),Be(Sg,5)),r&2){let s;q(s=Y())&&(o.trigger=s.first),q(s=Y())&&(o.panel=s.first),q(s=Y())&&(o._overlayDir=s.first)}},hostAttrs:["role","combobox","aria-autocomplete","none","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:19,hostBindings:function(r,o){r&1&&j("keydown",function(a){return o._handleKeydown(a)})("focus",function(){return o._onFocus()})("blur",function(){return o._onBlur()}),r&2&&(we("id",o.id)("tabindex",o.disabled?-1:o.tabIndex)("aria-controls",o.panelOpen?o.id+"-panel":null)("aria-expanded",o.panelOpen)("aria-label",o.ariaLabel||null)("aria-required",o.required.toString())("aria-disabled",o.disabled.toString())("aria-invalid",o.errorState)("aria-activedescendant",o._getAriaActiveDescendant()),_e("mat-mdc-select-disabled",o.disabled)("mat-mdc-select-invalid",o.errorState)("mat-mdc-select-required",o.required)("mat-mdc-select-empty",o.empty)("mat-mdc-select-multiple",o.multiple))},inputs:{userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",disabled:["disabled","disabled",fe],disableRipple:["disableRipple","disableRipple",fe],tabIndex:["tabIndex","tabIndex",t=>t==null?0:Qn(t)],hideSingleSelectionIndicator:["hideSingleSelectionIndicator","hideSingleSelectionIndicator",fe],placeholder:"placeholder",required:["required","required",fe],multiple:["multiple","multiple",fe],disableOptionCentering:["disableOptionCentering","disableOptionCentering",fe],compareWith:"compareWith",value:"value",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:["typeaheadDebounceInterval","typeaheadDebounceInterval",Qn],sortComparator:"sortComparator",id:"id",panelWidth:"panelWidth"},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},exportAs:["matSelect"],standalone:!0,features:[Me([{provide:ol,useExisting:e},{provide:pg,useExisting:e}]),Ue,qe,B],ngContentSelectors:UL,decls:11,vars:8,consts:[["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],[1,"mat-mdc-select-value"],["class","mat-mdc-select-placeholder mat-mdc-select-min-line"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false","aria-hidden","true"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayLockPosition","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth","backdropClick","attach","detach"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",3,"ngClass","keydown"],["panel",""]],template:function(r,o){if(r&1&&(Xe(HL),_(0,"div",0,1),j("click",function(){return o.open()}),_(3,"div",2),z(4,LL,2,1,"span",3)(5,BL,3,1),b(),_(6,"div",4)(7,"div",5),Cn(),_(8,"svg",6),ee(9,"path",7),b()()()(),z(10,zL,3,9,"ng-template",8),j("backdropClick",function(){return o.close()})("attach",function(){return o._onAttached()})("detach",function(){return o.close()})),r&2){let s=Tr(1);D(3),we("id",o._valueId),D(1),pe(4,o.empty?4:5),D(6),P("cdkConnectedOverlayPanelClass",o._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",o._scrollStrategy)("cdkConnectedOverlayOrigin",o._preferredOverlayOrigin||s)("cdkConnectedOverlayOpen",o.panelOpen)("cdkConnectedOverlayPositions",o._positions)("cdkConnectedOverlayWidth",o._overlayWidth)}},dependencies:[lu,Sg,Fo],styles:['.mat-mdc-select{display:inline-block;width:100%;outline:none;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-select-enabled-trigger-text-color);font-family:var(--mat-select-trigger-text-font);line-height:var(--mat-select-trigger-text-line-height);font-size:var(--mat-select-trigger-text-size);font-weight:var(--mat-select-trigger-text-weight);letter-spacing:var(--mat-select-trigger-text-tracking)}.mat-mdc-select-disabled{color:var(--mat-select-disabled-trigger-text-color)}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:translateY(-8px)}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-select-arrow{width:10px;height:5px;position:relative;color:var(--mat-select-enabled-arrow-color)}.mat-mdc-form-field.mat-focused .mat-mdc-select-arrow{color:var(--mat-select-focused-arrow-color)}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:var(--mat-select-invalid-arrow-color)}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:var(--mat-select-disabled-arrow-color)}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}div.mat-mdc-select-panel{box-shadow:0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);width:100%;max-height:275px;outline:0;overflow:auto;padding:8px 0;border-radius:4px;box-sizing:border-box;position:static;background-color:var(--mat-select-panel-background-color)}.cdk-high-contrast-active div.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) div.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above div.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);color:var(--mat-select-placeholder-text-color)}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-mdc-text-field-wrapper{cursor:pointer}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100%/0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}'],encapsulation:2,data:{animation:[$L.transformPanel]},changeDetection:0});let n=e;return n})();function YL(n,e){}var qr=class{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0,this.closeOnOverlayDetachments=!0}};var t_=(()=>{let e=class e extends Yi{constructor(t,r,o,s,a,l,c,d){super(),this._elementRef=t,this._focusTrapFactory=r,this._config=s,this._interactivityChecker=a,this._ngZone=l,this._overlayRef=c,this._focusMonitor=d,this._platform=C(be),this._focusTrap=null,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this._ariaLabelledByQueue=[],this._changeDetectorRef=C(Oe),this.attachDomPortal=u=>{this._portalOutlet.hasAttached();let h=this._portalOutlet.attachDomPortal(u);return this._contentAttached(),h},this._document=o,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(t){this._ariaLabelledByQueue.push(t),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(t){let r=this._ariaLabelledByQueue.indexOf(t);r>-1&&(this._ariaLabelledByQueue.splice(r,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._restoreFocus()}attachComponentPortal(t){this._portalOutlet.hasAttached();let r=this._portalOutlet.attachComponentPortal(t);return this._contentAttached(),r}attachTemplatePortal(t){this._portalOutlet.hasAttached();let r=this._portalOutlet.attachTemplatePortal(t);return this._contentAttached(),r}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(t,r){this._interactivityChecker.isFocusable(t)||(t.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{let o=()=>{t.removeEventListener("blur",o),t.removeEventListener("mousedown",o),t.removeAttribute("tabindex")};t.addEventListener("blur",o),t.addEventListener("mousedown",o)})),t.focus(r)}_focusByCssSelector(t,r){let o=this._elementRef.nativeElement.querySelector(t);o&&this._forceFocus(o,r)}_trapFocus(){let t=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||t.focus();break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElementWhenReady().then(r=>{r||this._focusDialogContainer()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus);break}}_restoreFocus(){let t=this._config.restoreFocus,r=null;if(typeof t=="string"?r=this._document.querySelector(t):typeof t=="boolean"?r=t?this._elementFocusedBeforeDialogWasOpened:null:t&&(r=t),this._config.restoreFocus&&r&&typeof r.focus=="function"){let o=Na(),s=this._elementRef.nativeElement;(!o||o===this._document.body||o===s||s.contains(o))&&(this._focusMonitor?(this._focusMonitor.focusVia(r,this._closeInteractionType),this._closeInteractionType=null):r.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){let t=this._elementRef.nativeElement,r=Na();return t===r||t.contains(r)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=Na()))}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}};e.\u0275fac=function(r){return new(r||e)(f(k),f(Xd),f(N,8),f(qr),f(ja),f(A),f(xi),f(In))},e.\u0275cmp=V({type:e,selectors:[["cdk-dialog-container"]],viewQuery:function(r,o){if(r&1&&Be(Zi,7),r&2){let s;q(s=Y())&&(o._portalOutlet=s.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(r,o){r&2&&we("id",o._config.id||null)("role",o._config.role)("aria-modal",o._config.ariaModal)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null)},standalone:!0,features:[ue,B],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(r,o){r&1&&z(0,YL,0,0,"ng-template",0)},dependencies:[Zi],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2});let n=e;return n})(),ll=class{constructor(e,i){this.overlayRef=e,this.config=i,this.closed=new T,this.disableClose=i.disableClose,this.backdropClick=e.backdropClick(),this.keydownEvents=e.keydownEvents(),this.outsidePointerEvents=e.outsidePointerEvents(),this.id=i.id,this.keydownEvents.subscribe(t=>{t.keyCode===27&&!this.disableClose&&!bt(t)&&(t.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})}),this._detachSubscription=e.detachments().subscribe(()=>{i.closeOnOverlayDetachments!==!1&&this.close()})}close(e,i){if(this.containerInstance){let t=this.closed;this.containerInstance._closeInteractionType=i?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),t.next(e),t.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(e="",i=""){return this.overlayRef.updateSize({width:e,height:i}),this}addPanelClass(e){return this.overlayRef.addPanelClass(e),this}removePanelClass(e){return this.overlayRef.removePanelClass(e),this}},ZL=new y("DialogScrollStrategy",{providedIn:"root",factory:()=>{let n=C(et);return()=>n.scrollStrategies.block()}}),QL=new y("DialogData"),KL=new y("DefaultDialogConfig");var XL=0,fD=(()=>{let e=class e{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(t,r,o,s,a,l){this._overlay=t,this._injector=r,this._defaultOptions=o,this._parentDialog=s,this._overlayContainer=a,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new T,this._afterOpenedAtThisLevel=new T,this._ariaHiddenElements=new Map,this.afterAllClosed=Bt(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(pt(void 0))),this._scrollStrategy=l}open(t,r){let o=this._defaultOptions||new qr;r=w(w({},o),r),r.id=r.id||`cdk-dialog-${XL++}`,r.id&&this.getDialogById(r.id);let s=this._getOverlayConfig(r),a=this._overlay.create(s),l=new ll(a,r),c=this._attachContainer(a,l,r);return l.containerInstance=c,this._attachDialogContent(t,l,c,r),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(l),l.closed.subscribe(()=>this._removeOpenDialog(l,!0)),this.afterOpened.next(l),l}closeAll(){e_(this.openDialogs,t=>t.close())}getDialogById(t){return this.openDialogs.find(r=>r.id===t)}ngOnDestroy(){e_(this._openDialogsAtThisLevel,t=>{t.config.closeOnDestroy===!1&&this._removeOpenDialog(t,!1)}),e_(this._openDialogsAtThisLevel,t=>t.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(t){let r=new ii({positionStrategy:t.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:t.scrollStrategy||this._scrollStrategy(),panelClass:t.panelClass,hasBackdrop:t.hasBackdrop,direction:t.direction,minWidth:t.minWidth,minHeight:t.minHeight,maxWidth:t.maxWidth,maxHeight:t.maxHeight,width:t.width,height:t.height,disposeOnNavigation:t.closeOnNavigation});return t.backdropClass&&(r.backdropClass=t.backdropClass),r}_attachContainer(t,r,o){let s=o.injector||o.viewContainerRef?.injector,a=[{provide:qr,useValue:o},{provide:ll,useValue:r},{provide:xi,useValue:t}],l;o.container?typeof o.container=="function"?l=o.container:(l=o.container.type,a.push(...o.container.providers(o))):l=t_;let c=new Sn(l,o.viewContainerRef,Ne.create({parent:s||this._injector,providers:a}),o.componentFactoryResolver);return t.attach(c).instance}_attachDialogContent(t,r,o,s){if(t instanceof Ve){let a=this._createInjector(s,r,o,void 0),l={$implicit:s.data,dialogRef:r};s.templateContext&&(l=w(w({},l),typeof s.templateContext=="function"?s.templateContext():s.templateContext)),o.attachTemplatePortal(new Mn(t,null,l,a))}else{let a=this._createInjector(s,r,o,this._injector),l=o.attachComponentPortal(new Sn(t,s.viewContainerRef,a,s.componentFactoryResolver));r.componentRef=l,r.componentInstance=l.instance}}_createInjector(t,r,o,s){let a=t.injector||t.viewContainerRef?.injector,l=[{provide:QL,useValue:t.data},{provide:ll,useValue:r}];return t.providers&&(typeof t.providers=="function"?l.push(...t.providers(r,t,o)):l.push(...t.providers)),t.direction&&(!a||!a.get(Dt,null,{optional:!0}))&&l.push({provide:Dt,useValue:{value:t.direction,change:R()}}),Ne.create({parent:a||s,providers:l})}_removeOpenDialog(t,r){let o=this.openDialogs.indexOf(t);o>-1&&(this.openDialogs.splice(o,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((s,a)=>{s?a.setAttribute("aria-hidden",s):a.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),r&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){let t=this._overlayContainer.getContainerElement();if(t.parentElement){let r=t.parentElement.children;for(let o=r.length-1;o>-1;o--){let s=r[o];s!==t&&s.nodeName!=="SCRIPT"&&s.nodeName!=="STYLE"&&!s.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(s,s.getAttribute("aria-hidden")),s.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){let t=this._parentDialog;return t?t._getAfterAllClosed():this._afterAllClosedAtThisLevel}};e.\u0275fac=function(r){return new(r||e)(p(et),p(Ne),p(KL,8),p(e,12),p(os),p(ZL))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function e_(n,e){let i=n.length;for(;i--;)e(n[i])}function JL(n,e){}var cl=class{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.maxWidth="80vw",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}},n_="mdc-dialog--open",hD="mdc-dialog--opening",mD="mdc-dialog--closing",ej=150,tj=75,nj=(()=>{let e=class e extends t_{constructor(t,r,o,s,a,l,c,d,u){super(t,r,o,s,a,l,c,u),this._animationMode=d,this._animationStateChanged=new X,this._animationsEnabled=this._animationMode!=="NoopAnimations",this._hostElement=this._elementRef.nativeElement,this._enterAnimationDuration=this._animationsEnabled?gD(this._config.enterAnimationDuration)??ej:0,this._exitAnimationDuration=this._animationsEnabled?gD(this._config.exitAnimationDuration)??tj:0,this._animationTimer=null,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(pD,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(hD,n_)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(n_),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(n_),this._animationsEnabled?(this._hostElement.style.setProperty(pD,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(mD)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_clearAnimationClasses(){this._hostElement.classList.remove(hD,mD)}_waitForAnimationToComplete(t,r){this._animationTimer!==null&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(r,t)}_requestAnimationFrame(t){this._ngZone.runOutsideAngular(()=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(t):t()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(t){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:t})}ngOnDestroy(){super.ngOnDestroy(),this._animationTimer!==null&&clearTimeout(this._animationTimer)}attachComponentPortal(t){let r=super.attachComponentPortal(t);return r.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),r}};e.\u0275fac=function(r){return new(r||e)(f(k),f(Xd),f(N,8),f(cl),f(ja),f(A),f(xi),f(ct,8),f(In))},e.\u0275cmp=V({type:e,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:8,hostBindings:function(r,o){r&2&&(Zn("id",o._config.id),we("aria-modal",o._config.ariaModal)("role",o._config.role)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledByQueue[0])("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null),_e("_mat-animation-noopable",!o._animationsEnabled))},standalone:!0,features:[ue,B],decls:3,vars:0,consts:[[1,"mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(r,o){r&1&&(_(0,"div",0)(1,"div",1),z(2,JL,0,0,"ng-template",2),b()())},dependencies:[Zi],styles:['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto;outline:0;transform:scale(0.8)}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--closing .mdc-dialog__surface{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{opacity:1}.mdc-dialog--open .mdc-dialog__surface{transform:none}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__container .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{width:100%;height:100%}.mat-mdc-dialog-component-host{display:contents}.mat-mdc-dialog-container{--mdc-dialog-container-elevation: var(--mdc-dialog-container-elevation-shadow);outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12))}.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, 4px)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, Roboto, sans-serif);line-height:var(--mdc-dialog-subhead-line-height, 1.5rem);font-size:var(--mdc-dialog-subhead-size, 1rem);font-weight:var(--mdc-dialog-subhead-weight, 400);letter-spacing:var(--mdc-dialog-subhead-tracking, 0.03125em)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, rgba(0, 0, 0, 0.87))}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, Roboto, sans-serif);line-height:var(--mdc-dialog-supporting-text-line-height, 1.5rem);font-size:var(--mdc-dialog-supporting-text-size, 1rem);font-weight:var(--mdc-dialog-supporting-text-weight, 400);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 0.03125em)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, rgba(0, 0, 0, 0.6))}.mat-mdc-dialog-container .mdc-dialog__container{transition:opacity linear var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container .mdc-dialog__surface{transition:transform var(--mat-dialog-transition-duration, 0ms) 0ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container,.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__surface{transition:none}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-actions{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2});let n=e;return n})(),pD="--mat-dialog-transition-duration";function gD(n){return n==null?null:typeof n=="number"?n:n.endsWith("ms")?wi(n.substring(0,n.length-2)):n.endsWith("s")?wi(n.substring(0,n.length-1))*1e3:n==="0"?0:null}var $u=function(n){return n[n.OPEN=0]="OPEN",n[n.CLOSING=1]="CLOSING",n[n.CLOSED=2]="CLOSED",n}($u||{}),Si=class{constructor(e,i,t){this._ref=e,this._containerInstance=t,this._afterOpened=new T,this._beforeClosed=new T,this._state=$u.OPEN,this.disableClose=i.disableClose,this.id=e.id,t._animationStateChanged.pipe(le(r=>r.state==="opened"),ie(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),t._animationStateChanged.pipe(le(r=>r.state==="closed"),ie(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),e.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),rt(this.backdropClick(),this.keydownEvents().pipe(le(r=>r.keyCode===27&&!this.disableClose&&!bt(r)))).subscribe(r=>{this.disableClose||(r.preventDefault(),_D(this,r.type==="keydown"?"keyboard":"mouse"))})}close(e){this._result=e,this._containerInstance._animationStateChanged.pipe(le(i=>i.state==="closing"),ie(1)).subscribe(i=>{this._beforeClosed.next(e),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),i.totalTime+100)}),this._state=$u.CLOSING,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(e){let i=this._ref.config.positionStrategy;return e&&(e.left||e.right)?e.left?i.left(e.left):i.right(e.right):i.centerHorizontally(),e&&(e.top||e.bottom)?e.top?i.top(e.top):i.bottom(e.bottom):i.centerVertically(),this._ref.updatePosition(),this}updateSize(e="",i=""){return this._ref.updateSize(e,i),this}addPanelClass(e){return this._ref.addPanelClass(e),this}removePanelClass(e){return this._ref.removePanelClass(e),this}getState(){return this._state}_finishDialogClose(){this._state=$u.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}};function _D(n,e,i){return n._closeInteractionType=e,n.close(i)}var dl=new y("MatMdcDialogData"),ij=new y("mat-mdc-dialog-default-options"),rj=new y("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{let n=C(et);return()=>n.scrollStrategies.block()}});var oj=0,Wu=(()=>{let e=class e{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){let t=this._parentDialog;return t?t._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(t,r,o,s,a,l,c,d){this._overlay=t,this._defaultOptions=s,this._scrollStrategy=a,this._parentDialog=l,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new T,this._afterOpenedAtThisLevel=new T,this.dialogConfigClass=cl,this.afterAllClosed=Bt(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(pt(void 0))),this._dialog=r.get(fD),this._dialogRefConstructor=Si,this._dialogContainerType=nj,this._dialogDataToken=dl}open(t,r){let o;r=w(w({},this._defaultOptions||new cl),r),r.id=r.id||`mat-mdc-dialog-${oj++}`,r.scrollStrategy=r.scrollStrategy||this._scrollStrategy();let s=this._dialog.open(t,ae(w({},r),{positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:r},{provide:qr,useValue:r}]},templateContext:()=>({dialogRef:o}),providers:(a,l,c)=>(o=new this._dialogRefConstructor(a,r,c),o.updatePosition(r?.position),[{provide:this._dialogContainerType,useValue:c},{provide:this._dialogDataToken,useValue:l.data},{provide:this._dialogRefConstructor,useValue:o}])}));return o.componentRef=s.componentRef,o.componentInstance=s.componentInstance,this.openDialogs.push(o),this.afterOpened.next(o),o.afterClosed().subscribe(()=>{let a=this.openDialogs.indexOf(o);a>-1&&(this.openDialogs.splice(a,1),this.openDialogs.length||this._getAfterAllClosed().next())}),o}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(t){return this.openDialogs.find(r=>r.id===t)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(t){let r=t.length;for(;r--;)t[r].close()}};e.\u0275fac=function(r){return new(r||e)(p(et),p(Ne),p(vi,8),p(ij,8),p(rj),p(e,12),p(os),p(ct,8))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})(),sj=0,_s=(()=>{let e=class e{constructor(t,r,o){this.dialogRef=t,this._elementRef=r,this._dialog=o,this.type="button"}ngOnInit(){this.dialogRef||(this.dialogRef=bD(this._elementRef,this._dialog.openDialogs))}ngOnChanges(t){let r=t._matDialogClose||t._matDialogCloseResult;r&&(this.dialogResult=r.currentValue)}_onButtonClick(t){_D(this.dialogRef,t.screenX===0&&t.screenY===0?"keyboard":"mouse",this.dialogResult)}};e.\u0275fac=function(r){return new(r||e)(f(Si,8),f(k),f(Wu))},e.\u0275dir=O({type:e,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(r,o){r&1&&j("click",function(a){return o._onButtonClick(a)}),r&2&&we("aria-label",o.ariaLabel||null)("type",o.type)},inputs:{ariaLabel:["aria-label","ariaLabel"],type:"type",dialogResult:["mat-dialog-close","dialogResult"],_matDialogClose:["matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],standalone:!0,features:[qe]});let n=e;return n})(),bs=(()=>{let e=class e{constructor(t,r,o){this._dialogRef=t,this._elementRef=r,this._dialog=o,this.id=`mat-mdc-dialog-title-${sj++}`}ngOnInit(){this._dialogRef||(this._dialogRef=bD(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{this._dialogRef._containerInstance?._addAriaLabelledBy?.(this.id)})}ngOnDestroy(){let t=this._dialogRef?._containerInstance;t&&Promise.resolve().then(()=>{t._removeAriaLabelledBy?.(this.id)})}};e.\u0275fac=function(r){return new(r||e)(f(Si,8),f(k),f(Wu))},e.\u0275dir=O({type:e,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(r,o){r&2&&Zn("id",o.id)},inputs:{id:"id"},exportAs:["matDialogTitle"],standalone:!0});let n=e;return n})(),Gu=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=O({type:e,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"],standalone:!0});let n=e;return n})(),vs=(()=>{let e=class e{constructor(){this.align="start"}};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=O({type:e,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:4,hostBindings:function(r,o){r&2&&_e("mat-mdc-dialog-actions-align-center",o.align==="center")("mat-mdc-dialog-actions-align-end",o.align==="end")},inputs:{align:"align"},standalone:!0});let n=e;return n})();function bD(n,e){let i=n.nativeElement.parentElement;for(;i&&!i.classList.contains("mat-mdc-dialog-container");)i=i.parentElement;return i?e.find(t=>t.id===i.id):null}function aj(n,e){if(n&1&&(_(0,"mat-option",7),M(1),b()),n&2){let i=e.$implicit;P("value",i.value),D(1),Ct(i.label)}}var vD=(()=>{let e=class e{constructor(t,r,o){this.msg_srv=t,this.user_srv=r,this.dialogRef=o,this.new_user={username:"",nickname:"",password:"",confirm_password:"",status:0,privileges:[]}}create(){if(this.new_user.username.length<3){this.msg_srv.warning("\u7528\u6237\u540D\u957F\u5EA6\u4E0D\u80FD\u5C0F\u4E8E3");return}if(this.new_user.password.length<8){this.msg_srv.warning("\u5BC6\u7801\u81F3\u5C118\u4F4D");return}if(!this.new_user.password.match(/[a-z]+/)){this.msg_srv.warning("\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5C0F\u5199\u5B57\u6BCD");return}if(!this.new_user.password.match(/[A-Z]+/)){this.msg_srv.warning("\u5BC6\u7801\u5FC5\u987B\u5305\u542B\u5927\u5199\u5B57\u6BCD");return}if(this.new_user.password!=this.new_user.confirm_password){this.msg_srv.warning("\u8F93\u5165\u7684\u4E24\u6B21\u5BC6\u7801\u4E0D\u540C");return}console.log("[D] before create new user, new_user=",this.new_user),this.user_srv.manage_user_create({username:this.new_user.username,password:this.new_user.password,status:this.new_user.status,privileges:this.new_user.privileges,role:100}).subscribe(t=>{t.status===200&&(this.msg_srv.success("\u521B\u5EFA\u7528\u6237\u6210\u529F"),this.dialogRef.close())})}};e.\u0275fac=function(r){return new(r||e)(f(Ki),f(hn),f(Si))},e.\u0275cmp=V({type:e,selectors:[["app-create-user-dialog"]],standalone:!0,features:[B],decls:34,vars:7,consts:[["mat-dialog-title",""],[1,"create-user-content"],["matInput","","placeholder","username","name","username",3,"ngModel","ngModelChange"],["matInput","","placeholder","password","type","password","name","password",3,"ngModel","ngModelChange"],["matInput","","placeholder","confirm password","type","password","name","confirm_password",3,"ngModel","ngModelChange"],["multiple","",3,"ngModel","ngModelChange"],[3,"ngModel","ngModelChange"],[3,"value"],["align","end"],["mat-raised-button","","mat-dialog-close",""],["mat-raised-button","","color","primary",3,"click"]],template:function(r,o){r&1&&(_(0,"h2",0),M(1,"\u65B0\u5EFA\u7528\u6237"),b(),_(2,"mat-dialog-content",1)(3,"mat-form-field")(4,"mat-label"),M(5,"username"),b(),_(6,"input",2),j("ngModelChange",function(a){return o.new_user.username=a}),b()(),_(7,"mat-form-field")(8,"mat-label"),M(9,"password"),b(),_(10,"input",3),j("ngModelChange",function(a){return o.new_user.password=a}),b()(),_(11,"mat-form-field")(12,"mat-label"),M(13,"confirm password"),b(),_(14,"input",4),j("ngModelChange",function(a){return o.new_user.confirm_password=a}),b()(),_(15,"mat-form-field")(16,"mat-label"),M(17,"privilege"),b(),_(18,"mat-select",5),j("ngModelChange",function(a){return o.new_user.privileges=a}),Ao(19,aj,2,2,"mat-option",7,To),b()(),_(21,"mat-form-field")(22,"mat-label"),M(23,"status"),b(),_(24,"mat-select",6),j("ngModelChange",function(a){return o.new_user.status=a}),_(25,"mat-option",7),M(26,"\u6B63\u5E38"),b(),_(27,"mat-option",7),M(28,"\u51BB\u7ED3"),b()()()(),_(29,"mat-dialog-actions",8)(30,"button",9),M(31,"\u53D6\u6D88"),b(),_(32,"button",10),j("click",function(){return o.create()}),M(33,"\u65B0\u5EFA"),b()()),r&2&&(D(6),P("ngModel",o.new_user.username),D(4),P("ngModel",o.new_user.password),D(4),P("ngModel",o.new_user.confirm_password),D(4),P("ngModel",o.new_user.privileges),Oo(19,o.user_srv.user().privileges),D(6),P("ngModel",o.new_user.status),D(1),P("value",0),D(2),P("value",1))},dependencies:[Je,Ii,gs,Jn,ms,Ei,Lt,fs,Ji,ds,nl,bs,Gu,vs,_s],styles:["[_nghost-%COMP%] mat-dialog-content.create-user-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:450px}@media screen and (max-width: 40rem){[_nghost-%COMP%] mat-dialog-content.create-user-content[_ngcontent-%COMP%]{width:100%}}"]});let n=e;return n})();var yD=(()=>{let e=class e{constructor(t){this.data=t}confirm(){this.data.confirmed=!0}};e.\u0275fac=function(r){return new(r||e)(f(dl))},e.\u0275cmp=V({type:e,selectors:[["app-confirm"]],standalone:!0,features:[B],decls:7,vars:2,consts:[["mat-dialog-title",""],["align","end"],["mat-button","","mat-dialog-close",""],["mat-button","","color","primary","cdkFocusInitial","",3,"mat-dialog-close","click"]],template:function(r,o){r&1&&(_(0,"h2",0),M(1),b(),_(2,"mat-dialog-actions",1)(3,"button",2),M(4,"Cancel"),b(),_(5,"button",3),j("click",function(){return o.confirm()}),M(6,"\u786E\u8BA4"),b()()),r&2&&(D(1),Ct(o.data.title),D(4),P("mat-dialog-close",!0))},dependencies:[Je,bs,vs,Lt,_s]});let n=e;return n})();function wD(n,e){return Array.isArray(n)&&Array.isArray(e)&&n.length===e.length&&n.every((i,t)=>i===e[t])}function lj(n,e){if(n&1&&(_(0,"mat-option",6),M(1),b()),n&2){let i=e.$implicit;P("value",i.value),D(1),Ct(i.label)}}var xD=(()=>{let e=class e{constructor(t,r,o,s){this.data=t,this.msg_srv=r,this.user_srv=o,this.dialogRef=s,this.user={},this.privileges=new $r([]),this.status=new $r,this.password=new $r(""),this.confirm_password=new $r(""),this.user=ae(w({},t),{password:"",confirm_password:""}),this.privileges.setValue(this.user.privileges.map(a=>a.value)),this.status.setValue(this.user.status.value)}update(){let t=!1,r={id:this.user.id};if((this.password.value||this.confirm_password.value)&&(t=!0,r.password=this.password.value,this.password.value!=this.confirm_password.value)){this.msg_srv.warning("\u4E24\u6B21\u5BC6\u7801\u4E0D\u76F8\u540C");return}if(this.status.value!=this.user.status.value&&(t=!0,r.status=this.status.value),wD(this.privileges.value,this.user.privileges.map(o=>o.value))||(r.privileges=this.privileges.value,t=!0),!t){this.msg_srv.warning("\u6CA1\u6709\u53D8\u66F4");return}this.user_srv.manage_user_update(r).subscribe(o=>{(o.status===200||o.status===401)&&this.dialogRef.close()})}initedPrivileges(t){return t.map(r=>r.value)}};e.\u0275fac=function(r){return new(r||e)(f(dl),f(Ki),f(hn),f(Si))},e.\u0275cmp=V({type:e,selectors:[["app-update-user-dialog"]],standalone:!0,features:[B],decls:30,vars:6,consts:[["mat-dialog-title",""],[1,"update-user-content"],["matInput","","placeholder","password","type","password","name","password",3,"formControl"],["matInput","","placeholder","confirm password","type","password","name","confirm_password",3,"formControl"],["multiple","",3,"formControl"],[3,"formControl"],[3,"value"],["align","end"],["mat-raised-button","","mat-dialog-close",""],["mat-raised-button","","color","primary",3,"click"]],template:function(r,o){r&1&&(_(0,"h2",0),M(1,"\u4FEE\u6539\u7528\u6237"),b(),_(2,"mat-dialog-content",1)(3,"mat-form-field")(4,"mat-label"),M(5,"password"),b(),ee(6,"input",2),b(),_(7,"mat-form-field")(8,"mat-label"),M(9,"confirm password"),b(),ee(10,"input",3),b(),_(11,"mat-form-field")(12,"mat-label"),M(13,"privilege"),b(),_(14,"mat-select",4),Ao(15,lj,2,2,"mat-option",6,To),b()(),_(17,"mat-form-field")(18,"mat-label"),M(19,"status"),b(),_(20,"mat-select",5)(21,"mat-option",6),M(22,"\u6B63\u5E38"),b(),_(23,"mat-option",6),M(24,"\u51BB\u7ED3"),b()()()(),_(25,"mat-dialog-actions",7)(26,"button",8),M(27,"\u53D6\u6D88"),b(),_(28,"button",9),j("click",function(){return o.update()}),M(29,"\u4FEE\u6539"),b()()),r&2&&(D(6),P("formControl",o.password),D(4),P("formControl",o.confirm_password),D(4),P("formControl",o.privileges),Oo(15,o.user_srv.user().privileges),D(6),P("formControl",o.status),D(1),P("value",0),D(2),P("value",1))},dependencies:[Je,Lt,vs,_s,Gu,bs,Ii,ms,Ei,Jn,gs,LC,Ji,ds,Fg,fs],styles:["[_nghost-%COMP%] mat-dialog-content.update-user-content[_ngcontent-%COMP%]{display:flex;flex-direction:column;width:450px}@media screen and (max-width: 40rem){[_nghost-%COMP%] mat-dialog-content.update-user-content[_ngcontent-%COMP%]{width:100%}}"]});let n=e;return n})();var cj=["tooltip"],dj=20;var uj=new y("mat-tooltip-scroll-strategy",{providedIn:"root",factory:()=>{let n=C(et);return()=>n.scrollStrategies.reposition({scrollThrottle:dj})}});function fj(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}var hj=new y("mat-tooltip-default-options",{providedIn:"root",factory:fj});var CD="tooltip-panel",DD=an({passive:!0}),mj=500,pj=8,gj=8,_j=24,bj=200,ED=(()=>{let e=class e{get position(){return this._position}set position(t){t!==this._position&&(this._position=t,this._overlayRef&&(this._updatePosition(this._overlayRef),this._tooltipInstance?.show(0),this._overlayRef.updatePosition()))}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(t){this._positionAtOrigin=ln(t),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(t){this._disabled=ln(t),this._disabled?this.hide(0):this._setupPointerEnterEventsIfNeeded()}get showDelay(){return this._showDelay}set showDelay(t){this._showDelay=wi(t)}get hideDelay(){return this._hideDelay}set hideDelay(t){this._hideDelay=wi(t),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}get message(){return this._message}set message(t){this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this._message,"tooltip"),this._message=t!=null?String(t).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage(),this._ngZone.runOutsideAngular(()=>{Promise.resolve().then(()=>{this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")})}))}get tooltipClass(){return this._tooltipClass}set tooltipClass(t){this._tooltipClass=t,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}constructor(t,r,o,s,a,l,c,d,u,h,m,g){this._overlay=t,this._elementRef=r,this._scrollDispatcher=o,this._viewContainerRef=s,this._ngZone=a,this._platform=l,this._ariaDescriber=c,this._focusMonitor=d,this._dir=h,this._defaultOptions=m,this._position="below",this._positionAtOrigin=!1,this._disabled=!1,this._viewInitialized=!1,this._pointerExitEventsInitialized=!1,this._tooltipComponent=vj,this._viewportMargin=8,this._cssClassPrefix="mat-mdc",this.touchGestures="auto",this._message="",this._passiveListeners=[],this._destroyed=new T,this._scrollStrategy=u,this._document=g,m&&(this._showDelay=m.showDelay,this._hideDelay=m.hideDelay,m.position&&(this.position=m.position),m.positionAtOrigin&&(this.positionAtOrigin=m.positionAtOrigin),m.touchGestures&&(this.touchGestures=m.touchGestures)),h.change.pipe(ne(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)}),this._viewportMargin=pj}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe(ne(this._destroyed)).subscribe(t=>{t?t==="keyboard"&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){let t=this._elementRef.nativeElement;clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._passiveListeners.forEach(([r,o])=>{t.removeEventListener(r,o,DD)}),this._passiveListeners.length=0,this._destroyed.next(),this._destroyed.complete(),this._ariaDescriber.removeDescription(t,this.message,"tooltip"),this._focusMonitor.stopMonitoring(t)}show(t=this.showDelay,r){if(this.disabled||!this.message||this._isTooltipVisible()){this._tooltipInstance?._cancelPendingAnimations();return}let o=this._createOverlay(r);this._detach(),this._portal=this._portal||new Sn(this._tooltipComponent,this._viewContainerRef);let s=this._tooltipInstance=o.attach(this._portal).instance;s._triggerElement=this._elementRef.nativeElement,s._mouseLeaveHideDelay=this._hideDelay,s.afterHidden().pipe(ne(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),s.show(t)}hide(t=this.hideDelay){let r=this._tooltipInstance;r&&(r.isVisible()?r.hide(t):(r._cancelPendingAnimations(),this._detach()))}toggle(t){this._isTooltipVisible()?this.hide():this.show(void 0,t)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(t){if(this._overlayRef){let s=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!t)&&s._origin instanceof k)return this._overlayRef;this._detach()}let r=this._scrollDispatcher.getAncestorScrollContainers(this._elementRef),o=this._overlay.position().flexibleConnectedTo(this.positionAtOrigin?t||this._elementRef:this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(r);return o.positionChanges.pipe(ne(this._destroyed)).subscribe(s=>{this._updateCurrentPositionClass(s.connectionPair),this._tooltipInstance&&s.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=this._overlay.create({direction:this._dir,positionStrategy:o,panelClass:`${this._cssClassPrefix}-${CD}`,scrollStrategy:this._scrollStrategy()}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe(ne(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe(ne(this._destroyed)).subscribe(()=>this._tooltipInstance?._handleBodyInteraction()),this._overlayRef.keydownEvents().pipe(ne(this._destroyed)).subscribe(s=>{this._isTooltipVisible()&&s.keyCode===27&&!bt(s)&&(s.preventDefault(),s.stopPropagation(),this._ngZone.run(()=>this.hide(0)))}),this._defaultOptions?.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(t){let r=t.getConfig().positionStrategy,o=this._getOrigin(),s=this._getOverlayPosition();r.withPositions([this._addOffset(w(w({},o.main),s.main)),this._addOffset(w(w({},o.fallback),s.fallback))])}_addOffset(t){let r=gj,o=!this._dir||this._dir.value=="ltr";return t.originY==="top"?t.offsetY=-r:t.originY==="bottom"?t.offsetY=r:t.originX==="start"?t.offsetX=o?-r:r:t.originX==="end"&&(t.offsetX=o?r:-r),t}_getOrigin(){let t=!this._dir||this._dir.value=="ltr",r=this.position,o;r=="above"||r=="below"?o={originX:"center",originY:r=="above"?"top":"bottom"}:r=="before"||r=="left"&&t||r=="right"&&!t?o={originX:"start",originY:"center"}:(r=="after"||r=="right"&&t||r=="left"&&!t)&&(o={originX:"end",originY:"center"});let{x:s,y:a}=this._invertPosition(o.originX,o.originY);return{main:o,fallback:{originX:s,originY:a}}}_getOverlayPosition(){let t=!this._dir||this._dir.value=="ltr",r=this.position,o;r=="above"?o={overlayX:"center",overlayY:"bottom"}:r=="below"?o={overlayX:"center",overlayY:"top"}:r=="before"||r=="left"&&t||r=="right"&&!t?o={overlayX:"end",overlayY:"center"}:(r=="after"||r=="right"&&t||r=="left"&&!t)&&(o={overlayX:"start",overlayY:"center"});let{x:s,y:a}=this._invertPosition(o.overlayX,o.overlayY);return{main:o,fallback:{overlayX:s,overlayY:a}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),this._ngZone.onMicrotaskEmpty.pipe(ie(1),ne(this._destroyed)).subscribe(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()}))}_setTooltipClass(t){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=t,this._tooltipInstance._markForCheck())}_invertPosition(t,r){return this.position==="above"||this.position==="below"?r==="top"?r="bottom":r==="bottom"&&(r="top"):t==="end"?t="start":t==="start"&&(t="end"),{x:t,y:r}}_updateCurrentPositionClass(t){let{overlayY:r,originX:o,originY:s}=t,a;if(r==="center"?this._dir&&this._dir.value==="rtl"?a=o==="end"?"left":"right":a=o==="start"?"left":"right":a=r==="bottom"&&s==="top"?"above":"below",a!==this._currentPosition){let l=this._overlayRef;if(l){let c=`${this._cssClassPrefix}-${CD}-`;l.removePanelClass(c+this._currentPosition),l.addPanelClass(c+a)}this._currentPosition=a}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._passiveListeners.length||(this._platformSupportsMouseEvents()?this._passiveListeners.push(["mouseenter",t=>{this._setupPointerExitEventsIfNeeded();let r;t.x!==void 0&&t.y!==void 0&&(r=t),this.show(void 0,r)}]):this.touchGestures!=="off"&&(this._disableNativeGesturesIfNecessary(),this._passiveListeners.push(["touchstart",t=>{let r=t.targetTouches?.[0],o=r?{x:r.clientX,y:r.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>this.show(void 0,o),mj)}])),this._addListeners(this._passiveListeners))}_setupPointerExitEventsIfNeeded(){if(this._pointerExitEventsInitialized)return;this._pointerExitEventsInitialized=!0;let t=[];if(this._platformSupportsMouseEvents())t.push(["mouseleave",r=>{let o=r.relatedTarget;(!o||!this._overlayRef?.overlayElement.contains(o))&&this.hide()}],["wheel",r=>this._wheelListener(r)]);else if(this.touchGestures!=="off"){this._disableNativeGesturesIfNecessary();let r=()=>{clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions.touchendHideDelay)};t.push(["touchend",r],["touchcancel",r])}this._addListeners(t),this._passiveListeners.push(...t)}_addListeners(t){t.forEach(([r,o])=>{this._elementRef.nativeElement.addEventListener(r,o,DD)})}_platformSupportsMouseEvents(){return!this._platform.IOS&&!this._platform.ANDROID}_wheelListener(t){if(this._isTooltipVisible()){let r=this._document.elementFromPoint(t.clientX,t.clientY),o=this._elementRef.nativeElement;r!==o&&!o.contains(r)&&this.hide()}}_disableNativeGesturesIfNecessary(){let t=this.touchGestures;if(t!=="off"){let r=this._elementRef.nativeElement,o=r.style;(t==="on"||r.nodeName!=="INPUT"&&r.nodeName!=="TEXTAREA")&&(o.userSelect=o.msUserSelect=o.webkitUserSelect=o.MozUserSelect="none"),(t==="on"||!r.draggable)&&(o.webkitUserDrag="none"),o.touchAction="none",o.webkitTapHighlightColor="transparent"}}};e.\u0275fac=function(r){return new(r||e)(f(et),f(k),f(Ga),f(Ke),f(A),f(be),f(Sx),f(In),f(uj),f(Dt),f(hj,8),f(N))},e.\u0275dir=O({type:e,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],hostVars:2,hostBindings:function(r,o){r&2&&_e("mat-mdc-tooltip-disabled",o.disabled)},inputs:{position:["matTooltipPosition","position"],positionAtOrigin:["matTooltipPositionAtOrigin","positionAtOrigin"],disabled:["matTooltipDisabled","disabled"],showDelay:["matTooltipShowDelay","showDelay"],hideDelay:["matTooltipHideDelay","hideDelay"],touchGestures:["matTooltipTouchGestures","touchGestures"],message:["matTooltip","message"],tooltipClass:["matTooltipClass","tooltipClass"]},exportAs:["matTooltip"],standalone:!0});let n=e;return n})(),vj=(()=>{let e=class e{constructor(t,r,o){this._changeDetectorRef=t,this._elementRef=r,this._isMultiline=!1,this._closeOnInteraction=!1,this._isVisible=!1,this._onHide=new T,this._showAnimation="mat-mdc-tooltip-show",this._hideAnimation="mat-mdc-tooltip-hide",this._animationsDisabled=o==="NoopAnimations"}show(t){this._hideTimeoutId!=null&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},t)}hide(t){this._showTimeoutId!=null&&clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},t)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:t}){(!t||!this._triggerElement.contains(t))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){let t=this._elementRef.nativeElement.getBoundingClientRect();return t.height>_j&&t.width>=bj}_handleAnimationEnd({animationName:t}){(t===this._showAnimation||t===this._hideAnimation)&&this._finalizeAnimation(t===this._showAnimation)}_cancelPendingAnimations(){this._showTimeoutId!=null&&clearTimeout(this._showTimeoutId),this._hideTimeoutId!=null&&clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(t){t?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(t){let r=this._tooltip.nativeElement,o=this._showAnimation,s=this._hideAnimation;if(r.classList.remove(t?s:o),r.classList.add(t?o:s),this._isVisible=t,t&&!this._animationsDisabled&&typeof getComputedStyle=="function"){let a=getComputedStyle(r);(a.getPropertyValue("animation-duration")==="0s"||a.getPropertyValue("animation-name")==="none")&&(this._animationsDisabled=!0)}t&&this._onShow(),this._animationsDisabled&&(r.classList.add("_mat-animation-noopable"),this._finalizeAnimation(t))}};e.\u0275fac=function(r){return new(r||e)(f(Oe),f(k),f(ct,8))},e.\u0275cmp=V({type:e,selectors:[["mat-tooltip-component"]],viewQuery:function(r,o){if(r&1&&Be(cj,7),r&2){let s;q(s=Y())&&(o._tooltip=s.first)}},hostAttrs:["aria-hidden","true"],hostVars:2,hostBindings:function(r,o){r&1&&j("mouseleave",function(a){return o._handleMouseLeave(a)}),r&2&&Sr("zoom",o.isVisible()?1:null)},standalone:!0,features:[B],decls:4,vars:4,consts:[[1,"mdc-tooltip","mdc-tooltip--shown","mat-mdc-tooltip",3,"ngClass","animationend"],["tooltip",""],[1,"mdc-tooltip__surface","mdc-tooltip__surface-animation"]],template:function(r,o){r&1&&(_(0,"div",0,1),j("animationend",function(a){return o._handleAnimationEnd(a)}),_(2,"div",2),M(3),b()()),r&2&&(_e("mdc-tooltip--multiline",o._isMultiline),P("ngClass",o.tooltipClass),D(3),Ct(o.message))},dependencies:[Fo],styles:['.mdc-tooltip__surface{word-break:break-all;word-break:var(--mdc-tooltip-word-break, normal);overflow-wrap:anywhere}.mdc-tooltip--showing-transition .mdc-tooltip__surface-animation{transition:opacity 150ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-tooltip--hide-transition .mdc-tooltip__surface-animation{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-tooltip{position:fixed;display:none;z-index:9}.mdc-tooltip-wrapper--rich{position:relative}.mdc-tooltip--shown,.mdc-tooltip--showing,.mdc-tooltip--hide{display:inline-flex}.mdc-tooltip--shown.mdc-tooltip--rich,.mdc-tooltip--showing.mdc-tooltip--rich,.mdc-tooltip--hide.mdc-tooltip--rich{display:inline-block;left:-320px;position:absolute}.mdc-tooltip__surface{line-height:16px;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center}.mdc-tooltip__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-tooltip__surface::before{border-color:CanvasText}}.mdc-tooltip--rich .mdc-tooltip__surface{align-items:flex-start;display:flex;flex-direction:column;min-height:24px;min-width:40px;max-width:320px;position:relative}.mdc-tooltip--multiline .mdc-tooltip__surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mdc-tooltip__surface,.mdc-tooltip--multiline .mdc-tooltip__surface[dir=rtl]{text-align:right}.mdc-tooltip__surface .mdc-tooltip__title{margin:0 8px}.mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(200px - 2*8px);margin:8px;text-align:left}[dir=rtl] .mdc-tooltip__surface .mdc-tooltip__content,.mdc-tooltip__surface .mdc-tooltip__content[dir=rtl]{text-align:right}.mdc-tooltip--rich .mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(320px - 2*8px);align-self:stretch}.mdc-tooltip__surface .mdc-tooltip__content-link{text-decoration:none}.mdc-tooltip--rich-actions,.mdc-tooltip__content,.mdc-tooltip__title{z-index:1}.mdc-tooltip__surface-animation{opacity:0;transform:scale(0.8);will-change:transform,opacity}.mdc-tooltip--shown .mdc-tooltip__surface-animation{transform:scale(1);opacity:1}.mdc-tooltip--hide .mdc-tooltip__surface-animation{transform:scale(1)}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{position:absolute;height:24px;width:24px;transform:rotate(35deg) skewY(20deg) scaleX(0.9396926208)}.mdc-tooltip__caret-surface-top .mdc-elevation-overlay,.mdc-tooltip__caret-surface-bottom .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-tooltip__caret-surface-bottom{box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);outline:1px solid rgba(0,0,0,0);z-index:-1}@media screen and (forced-colors: active){.mdc-tooltip__caret-surface-bottom{outline-color:CanvasText}}.mat-mdc-tooltip .mdc-tooltip__surface{background-color:var(--mdc-plain-tooltip-container-color)}.mat-mdc-tooltip .mdc-tooltip__surface{border-radius:var(--mdc-plain-tooltip-container-shape)}.mat-mdc-tooltip .mdc-tooltip__caret-surface-top,.mat-mdc-tooltip .mdc-tooltip__caret-surface-bottom{border-radius:var(--mdc-plain-tooltip-container-shape)}.mat-mdc-tooltip .mdc-tooltip__surface{color:var(--mdc-plain-tooltip-supporting-text-color)}.mat-mdc-tooltip .mdc-tooltip__surface{font-family:var(--mdc-plain-tooltip-supporting-text-font);line-height:var(--mdc-plain-tooltip-supporting-text-line-height);font-size:var(--mdc-plain-tooltip-supporting-text-size);font-weight:var(--mdc-plain-tooltip-supporting-text-weight);letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking)}.mat-mdc-tooltip{position:relative;transform:scale(0)}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-panel.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}'],encapsulation:2,changeDetection:0});let n=e;return n})();function yj(n,e){if(n&1&&(_(0,"mat-option",18),M(1),b()),n&2){let i=e.$implicit;P("value",i),D(1),Ae(" ",i," ")}}function wj(n,e){if(n&1){let i=Rt();_(0,"mat-form-field",16)(1,"mat-select",17),j("selectionChange",function(r){Ye(i);let o=U(2);return Ze(o._changePageSize(r.value))}),Ao(2,yj,2,2,"mat-option",18,To),b()()}if(n&2){let i=U(2);P("appearance",i._formFieldAppearance)("color",i.color),D(1),P("value",i.pageSize)("disabled",i.disabled)("aria-labelledby",i._pageSizeLabelId)("panelClass",i.selectConfig.panelClass||"")("disableOptionCentering",i.selectConfig.disableOptionCentering),Oo(2,i._displayedPageSizeOptions)}}function xj(n,e){if(n&1&&(_(0,"div",19),M(1),b()),n&2){let i=U(2);D(1),Ct(i.pageSize)}}function Cj(n,e){if(n&1&&(_(0,"div",12)(1,"div",13),M(2),b(),z(3,wj,4,7,"mat-form-field",14)(4,xj,2,1,"div",15),b()),n&2){let i=U();D(1),we("id",i._pageSizeLabelId),D(1),Ae(" ",i._intl.itemsPerPageLabel," "),D(1),pe(3,i._displayedPageSizeOptions.length>1?3:-1),D(1),pe(4,i._displayedPageSizeOptions.length<=1?4:-1)}}function Dj(n,e){if(n&1){let i=Rt();_(0,"button",20),j("click",function(){Ye(i);let r=U();return Ze(r.firstPage())}),Cn(),_(1,"svg",7),ee(2,"path",21),b()()}if(n&2){let i=U();P("matTooltip",i._intl.firstPageLabel)("matTooltipDisabled",i._previousButtonsDisabled())("matTooltipPosition","above")("disabled",i._previousButtonsDisabled()),we("aria-label",i._intl.firstPageLabel)}}function Ej(n,e){if(n&1){let i=Rt();Cn(),Js(),_(0,"button",22),j("click",function(){Ye(i);let r=U();return Ze(r.lastPage())}),Cn(),_(1,"svg",7),ee(2,"path",23),b()()}if(n&2){let i=U();P("matTooltip",i._intl.lastPageLabel)("matTooltipDisabled",i._nextButtonsDisabled())("matTooltipPosition","above")("disabled",i._nextButtonsDisabled()),we("aria-label",i._intl.lastPageLabel)}}var Ij=(()=>{let e=class e{constructor(){this.changes=new T,this.itemsPerPageLabel="Items per page:",this.nextPageLabel="Next page",this.previousPageLabel="Previous page",this.firstPageLabel="First page",this.lastPageLabel="Last page",this.getRangeLabel=(t,r,o)=>{if(o==0||r==0)return`0 of ${o}`;o=Math.max(o,0);let s=t*r,a=s{let e=class e extends Tj{get pageIndex(){return this._pageIndex}set pageIndex(t){this._pageIndex=Math.max(t||0,0),this._changeDetectorRef.markForCheck()}get length(){return this._length}set length(t){this._length=t||0,this._changeDetectorRef.markForCheck()}get pageSize(){return this._pageSize}set pageSize(t){this._pageSize=Math.max(t||0,0),this._updateDisplayedPageSizeOptions()}get pageSizeOptions(){return this._pageSizeOptions}set pageSizeOptions(t){this._pageSizeOptions=(t||[]).map(r=>Qn(r,0)),this._updateDisplayedPageSizeOptions()}constructor(t,r,o){if(super(),this._intl=t,this._changeDetectorRef=r,this._pageSizeLabelId=`mat-paginator-page-size-label-${Aj++}`,this._pageIndex=0,this._length=0,this._pageSizeOptions=[],this.hidePageSize=!1,this.showFirstLastButtons=!1,this.selectConfig={},this.disabled=!1,this.page=new X,this._intlChanges=t.changes.subscribe(()=>this._changeDetectorRef.markForCheck()),o){let{pageSize:s,pageSizeOptions:a,hidePageSize:l,showFirstLastButtons:c}=o;s!=null&&(this._pageSize=s),a!=null&&(this._pageSizeOptions=a),l!=null&&(this.hidePageSize=l),c!=null&&(this.showFirstLastButtons=c)}this._formFieldAppearance=o?.formFieldAppearance||"outline"}ngOnInit(){this._initialized=!0,this._updateDisplayedPageSizeOptions(),this._markInitialized()}ngOnDestroy(){this._intlChanges.unsubscribe()}nextPage(){if(!this.hasNextPage())return;let t=this.pageIndex;this.pageIndex=this.pageIndex+1,this._emitPageEvent(t)}previousPage(){if(!this.hasPreviousPage())return;let t=this.pageIndex;this.pageIndex=this.pageIndex-1,this._emitPageEvent(t)}firstPage(){if(!this.hasPreviousPage())return;let t=this.pageIndex;this.pageIndex=0,this._emitPageEvent(t)}lastPage(){if(!this.hasNextPage())return;let t=this.pageIndex;this.pageIndex=this.getNumberOfPages()-1,this._emitPageEvent(t)}hasPreviousPage(){return this.pageIndex>=1&&this.pageSize!=0}hasNextPage(){let t=this.getNumberOfPages()-1;return this.pageIndext-r),this._changeDetectorRef.markForCheck())}_emitPageEvent(t){this.page.emit({previousPageIndex:t,pageIndex:this.pageIndex,pageSize:this.pageSize,length:this.length})}};e.\u0275fac=function(r){return new(r||e)(f(Ij),f(Oe),f(Mj,8))},e.\u0275cmp=V({type:e,selectors:[["mat-paginator"]],hostAttrs:["role","group",1,"mat-mdc-paginator"],inputs:{color:"color",pageIndex:["pageIndex","pageIndex",Qn],length:["length","length",Qn],pageSize:["pageSize","pageSize",Qn],pageSizeOptions:"pageSizeOptions",hidePageSize:["hidePageSize","hidePageSize",fe],showFirstLastButtons:["showFirstLastButtons","showFirstLastButtons",fe],selectConfig:"selectConfig",disabled:["disabled","disabled",fe]},outputs:{page:"page"},exportAs:["matPaginator"],standalone:!0,features:[Ue,ue,B],decls:14,vars:14,consts:[[1,"mat-mdc-paginator-outer-container"],[1,"mat-mdc-paginator-container"],["class","mat-mdc-paginator-page-size"],[1,"mat-mdc-paginator-range-actions"],["aria-live","polite",1,"mat-mdc-paginator-range-label"],["mat-icon-button","","type","button","class","mat-mdc-paginator-navigation-first",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-previous",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["viewBox","0 0 24 24","focusable","false","aria-hidden","true",1,"mat-mdc-paginator-icon"],["d","M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-next",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["d","M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"],["mat-icon-button","","type","button","class","mat-mdc-paginator-navigation-last",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled"],[1,"mat-mdc-paginator-page-size"],[1,"mat-mdc-paginator-page-size-label"],["class","mat-mdc-paginator-page-size-select",3,"appearance","color"],["class","mat-mdc-paginator-page-size-value"],[1,"mat-mdc-paginator-page-size-select",3,"appearance","color"],["hideSingleSelectionIndicator","",3,"value","disabled","aria-labelledby","panelClass","disableOptionCentering","selectionChange"],[3,"value"],[1,"mat-mdc-paginator-page-size-value"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-first",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["d","M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-last",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["d","M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"]],template:function(r,o){r&1&&(_(0,"div",0)(1,"div",1),z(2,Cj,5,4,"div",2),_(3,"div",3)(4,"div",4),M(5),b(),z(6,Dj,3,5,"button",5),_(7,"button",6),j("click",function(){return o.previousPage()}),Cn(),_(8,"svg",7),ee(9,"path",8),b()(),Js(),_(10,"button",9),j("click",function(){return o.nextPage()}),Cn(),_(11,"svg",7),ee(12,"path",10),b()(),z(13,Ej,3,5,"button",11),b()()()),r&2&&(D(2),pe(2,o.hidePageSize?-1:2),D(3),Ae(" ",o._intl.getRangeLabel(o.pageIndex,o.pageSize,o.length)," "),D(1),pe(6,o.showFirstLastButtons?6:-1),D(1),P("matTooltip",o._intl.previousPageLabel)("matTooltipDisabled",o._previousButtonsDisabled())("matTooltipPosition","above")("disabled",o._previousButtonsDisabled()),we("aria-label",o._intl.previousPageLabel),D(3),P("matTooltip",o._intl.nextPageLabel)("matTooltipDisabled",o._nextButtonsDisabled())("matTooltipPosition","above")("disabled",o._nextButtonsDisabled()),we("aria-label",o._intl.nextPageLabel),D(3),pe(13,o.showFirstLastButtons?13:-1))},dependencies:[Ii,gs,Jn,iu,ED],styles:[".mat-mdc-paginator{display:block;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:var(--mat-paginator-container-text-color);background-color:var(--mat-paginator-container-background-color);font-family:var(--mat-paginator-container-text-font);line-height:var(--mat-paginator-container-text-line-height);font-size:var(--mat-paginator-container-text-size);font-weight:var(--mat-paginator-container-text-weight);letter-spacing:var(--mat-paginator-container-text-tracking)}.mat-mdc-paginator .mat-mdc-select-value{font-size:var(--mat-paginator-select-trigger-text-size)}.mat-mdc-paginator .mat-mdc-form-field-subscript-wrapper{display:none}.mat-mdc-paginator .mat-mdc-select{line-height:1.5}.mat-mdc-paginator-outer-container{display:flex}.mat-mdc-paginator-container{display:flex;align-items:center;justify-content:flex-end;padding:0 8px;flex-wrap:wrap;width:100%;min-height:var(--mat-paginator-container-size)}.mat-mdc-paginator-page-size{display:flex;align-items:baseline;margin-right:8px}[dir=rtl] .mat-mdc-paginator-page-size{margin-right:0;margin-left:8px}.mat-mdc-paginator-page-size-label{margin:0 4px}.mat-mdc-paginator-page-size-select{margin:0 4px;width:84px}.mat-mdc-paginator-range-label{margin:0 32px 0 24px}.mat-mdc-paginator-range-actions{display:flex;align-items:center}.mat-mdc-paginator-icon{display:inline-block;width:28px;fill:var(--mat-paginator-enabled-icon-color)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:var(--mat-paginator-disabled-icon-color)}[dir=rtl] .mat-mdc-paginator-icon{transform:rotate(180deg)}.cdk-high-contrast-active .mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon,.cdk-high-contrast-active .mat-mdc-paginator-icon{fill:currentColor;fill:CanvasText}.cdk-high-contrast-active .mat-mdc-paginator-range-actions .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0});let n=e;return n})();function Oj(n,e){n&1&&(_(0,"th",16),M(1,"username"),b())}function Rj(n,e){if(n&1&&(_(0,"td",17),M(1),b()),n&2){let i=e.$implicit;D(1),Ae(" ",i.username,"")}}function kj(n,e){n&1&&(_(0,"th",16),M(1,"status"),b())}function Fj(n,e){if(n&1&&(_(0,"td",17),M(1),b()),n&2){let i=e.$implicit;D(1),Ae(" ",i.status.label,"")}}function Pj(n,e){n&1&&(_(0,"th",16),M(1,"role"),b())}function Nj(n,e){if(n&1&&(_(0,"td",17),M(1),b()),n&2){let i=e.$implicit;D(1),Ae(" ",i.role.label,"")}}function Lj(n,e){n&1&&(_(0,"th",16),M(1,"privileges"),b())}function jj(n,e){if(n&1&&(_(0,"td",17),M(1),b()),n&2){let i=e.$implicit,t=U();D(1),Ae(" ",t._parsePrivileges(i.privileges),"")}}function Vj(n,e){n&1&&(_(0,"th",16),M(1,"operation"),b())}function Bj(n,e){if(n&1){let i=Rt();_(0,"td",18)(1,"button",19),j("click",function(){let o=Ye(i).$implicit,s=U();return Ze(s.update_user(o))}),_(2,"mat-icon",20),M(3,"tune"),b()(),_(4,"button",21),j("click",function(){let o=Ye(i).$implicit,s=U();return Ze(s.delete_user(o))}),_(5,"mat-icon",22),M(6,"delete"),b()()()}}function zj(n,e){n&1&&ee(0,"tr",23)}function Hj(n,e){n&1&&ee(0,"tr",24)}var Uj=()=>[5,10,25,100],SD=(()=>{let e=class e{constructor(t,r){this.user_srv=t,this.dialog=r,this.displayedColumns=["username","status","role","privileges","operation"]}ngOnInit(){this.user_srv.manage_user_list()}open_dialog(){this.dialog.open(vD,{data:{}})}_parsePrivileges(t){try{return t.map(o=>o.label).join("; ")}catch(r){return console.log("[D] parse privileges err=",r),""}}delete_user(t){let r={title:`\u786E\u8BA4\u5220\u9664\u7528\u6237 ${t.username} \u5417?`,confirmed:!1};this.dialog.open(yD,{data:r}).afterClosed().subscribe(()=>{r.confirmed&&this.user_srv.manage_user_delete(t)})}update_user(t){this.dialog.open(xD,{data:t})}handlePager(t){console.log("[D] handle pager change event=",t),this.user_srv.user_list.set(ae(w({},this.user_srv.user_list()),{size:t.pageSize,page:t.pageIndex})),this.user_srv.manage_user_list()}};e.\u0275fac=function(r){return new(r||e)(f(hn),f(Wu))},e.\u0275cmp=V({type:e,selectors:[["app-user"]],standalone:!0,features:[B],decls:26,vars:7,consts:[[1,"toolbar"],["mat-raised-button","","color","primary",3,"click"],[1,"table"],["mat-table","",1,"mat-elevation-z8",3,"dataSource"],["matColumnDef","username"],["mat-header-cell","",4,"matHeaderCellDef"],["mat-cell","",4,"matCellDef"],["matColumnDef","status"],["matColumnDef","role"],["matColumnDef","privileges"],["matColumnDef","operation"],["mat-cell","","style","padding-left: 4px !important;",4,"matCellDef"],["mat-header-row","",4,"matHeaderRowDef"],["mat-row","",4,"matRowDef","matRowDefColumns"],[1,"pager"],["aria-label","Select page",3,"length","pageSize","pageSizeOptions","page"],["mat-header-cell",""],["mat-cell",""],["mat-cell","",2,"padding-left","4px !important"],["mat-icon-button","",3,"click"],["color","primary"],["mat-icon-button","","color","warn",3,"click"],["color","secondary"],["mat-header-row",""],["mat-row",""]],template:function(r,o){r&1&&(_(0,"div",0)(1,"div"),M(2," \u7528\u6237\u7BA1\u7406 "),b(),_(3,"button",1),j("click",function(){return o.open_dialog()}),M(4,"\u65B0\u5EFA\u7528\u6237"),b()(),_(5,"div",2)(6,"table",3),Tt(7,4),z(8,Oj,2,0,"th",5)(9,Rj,2,1,"td",6),At(),Tt(10,7),z(11,kj,2,0,"th",5)(12,Fj,2,1,"td",6),At(),Tt(13,8),z(14,Pj,2,0,"th",5)(15,Nj,2,1,"td",6),At(),Tt(16,9),z(17,Lj,2,0,"th",5)(18,jj,2,1,"td",6),At(),Tt(19,10),z(20,Vj,2,0,"th",5)(21,Bj,7,0,"td",11),At(),z(22,zj,1,0,"tr",12)(23,Hj,1,0,"tr",13),b()(),_(24,"div",14)(25,"mat-paginator",15),j("page",function(a){return o.handlePager(a)}),b()()),r&2&&(D(6),P("dataSource",o.user_srv.user_list().list),D(16),P("matHeaderRowDef",o.displayedColumns),D(1),P("matRowDefColumns",o.displayedColumns),D(2),P("length",o.user_srv.user_list().total)("pageSize",o.user_srv.user_list().size)("pageSizeOptions",V0(6,Uj)))},dependencies:[Je,Lt,Fu,Lu,ju,Vu,Pu,Nu,Hu,Uu,zu,Bu,iu,zr,ID],styles:["[_nghost-%COMP%]{width:100%;max-width:100%;display:flex;flex-direction:column}[_nghost-%COMP%] > div[_ngcontent-%COMP%]{width:100%}[_nghost-%COMP%] div.toolbar[_ngcontent-%COMP%]{display:flex;width:100%;max-width:100%;align-items:center;flex-direction:row;margin-top:1rem}[_nghost-%COMP%] div.toolbar[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{margin-left:1rem}[_nghost-%COMP%] div.toolbar[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:auto;margin-right:1rem}[_nghost-%COMP%] div.table[_ngcontent-%COMP%]{flex:1 0 0;margin-top:1rem}[_nghost-%COMP%] div.pager[_ngcontent-%COMP%]{margin-top:auto}"]});let n=e;return n})();var MD=[{path:"",component:cC},{path:"login",component:KC},{path:"log",component:dD},{path:"user",component:SD}];var TD=(()=>{let e=class e{constructor(t,r){this.msg_srv=t,this.router=r}intercept(t,r){return t=t.clone({headers:t.headers.append("Authorization",localStorage.getItem("ult-token")??"")}),r.handle(t).pipe(F(o=>{if(o instanceof No)try{let s=o.body;console.log(`[D] ${t.method} - ${t.url} =>`,s),s.status>200&&this.msg_srv.error(s.msg),s.status===401&&this.router.navigate(["login"])}catch(s){console.warn("[E] http err=",s),this.msg_srv.error("\u65E0\u6CD5\u8FDE\u63A5\u670D\u52A1\u5668")}return o}))}};e.\u0275fac=function(r){return new(r||e)(p(Ki),p(Gi))},e.\u0275prov=x({token:e,factory:e.\u0275fac,providedIn:"root"});let n=e;return n})();function AD(n){return new S(3e3,!1)}function $j(){return new S(3100,!1)}function Wj(){return new S(3101,!1)}function Gj(n){return new S(3001,!1)}function qj(n){return new S(3003,!1)}function Yj(n){return new S(3004,!1)}function Zj(n,e){return new S(3005,!1)}function Qj(){return new S(3006,!1)}function Kj(){return new S(3007,!1)}function Xj(n,e){return new S(3008,!1)}function Jj(n){return new S(3002,!1)}function eV(n,e,i,t,r){return new S(3010,!1)}function tV(){return new S(3011,!1)}function nV(){return new S(3012,!1)}function iV(){return new S(3200,!1)}function rV(){return new S(3202,!1)}function oV(){return new S(3013,!1)}function sV(n){return new S(3014,!1)}function aV(n){return new S(3015,!1)}function lV(n){return new S(3016,!1)}function cV(n,e){return new S(3404,!1)}function dV(n){return new S(3502,!1)}function uV(n){return new S(3503,!1)}function fV(){return new S(3300,!1)}function hV(n){return new S(3504,!1)}function mV(n){return new S(3301,!1)}function pV(n,e){return new S(3302,!1)}function gV(n){return new S(3303,!1)}function _V(n,e){return new S(3400,!1)}function bV(n){return new S(3401,!1)}function vV(n){return new S(3402,!1)}function yV(n,e){return new S(3505,!1)}function er(n){switch(n.length){case 0:return new qi;case 1:return n[0];default:return new Ha(n)}}function $D(n,e,i=new Map,t=new Map){let r=[],o=[],s=-1,a=null;if(e.forEach(l=>{let c=l.get("offset"),d=c==s,u=d&&a||new Map;l.forEach((h,m)=>{let g=m,v=h;if(m!=="offset")switch(g=n.normalizePropertyName(g,r),v){case ru:v=i.get(m);break;case ei:v=t.get(m);break;default:v=n.normalizeStyleValue(m,g,v,r);break}u.set(g,v)}),d||o.push(u),a=u,s=c}),r.length)throw dV(r);return o}function E_(n,e,i,t){switch(e){case"start":n.onStart(()=>t(i&&r_(i,"start",n)));break;case"done":n.onDone(()=>t(i&&r_(i,"done",n)));break;case"destroy":n.onDestroy(()=>t(i&&r_(i,"destroy",n)));break}}function r_(n,e,i){let t=i.totalTime,r=!!i.disabled,o=I_(n.element,n.triggerName,n.fromState,n.toState,e||n.phaseName,t??n.totalTime,r),s=n._data;return s!=null&&(o._data=s),o}function I_(n,e,i,t,r="",o=0,s){return{element:n,triggerName:e,fromState:i,toState:t,phaseName:r,totalTime:o,disabled:!!s}}function Kt(n,e,i){let t=n.get(e);return t||n.set(e,t=i),t}function OD(n){let e=n.indexOf(":"),i=n.substring(1,e),t=n.slice(e+1);return[i,t]}var wV=(()=>typeof document>"u"?null:document.documentElement)();function S_(n){let e=n.parentNode||n.host||null;return e===wV?null:e}function xV(n){return n.substring(1,6)=="ebkit"}var Yr=null,RD=!1;function CV(n){Yr||(Yr=DV()||{},RD=Yr.style?"WebkitAppearance"in Yr.style:!1);let e=!0;return Yr.style&&!xV(n)&&(e=n in Yr.style,!e&&RD&&(e="Webkit"+n.charAt(0).toUpperCase()+n.slice(1)in Yr.style)),e}function DV(){return typeof document<"u"?document.body:null}function WD(n,e){for(;e;){if(e===n)return!0;e=S_(e)}return!1}function GD(n,e,i){if(i)return Array.from(n.querySelectorAll(e));let t=n.querySelector(e);return t?[t]:[]}var M_=(()=>{let e=class e{validateStyleProperty(t){return CV(t)}matchesElement(t,r){return!1}containsElement(t,r){return WD(t,r)}getParentElement(t){return S_(t)}query(t,r,o){return GD(t,r,o)}computeStyle(t,r,o){return o||""}animate(t,r,o,s,a,l=[],c){return new qi(o,s)}};e.\u0275fac=function(r){return new(r||e)},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})(),_l=(()=>{let e=class e{};e.NOOP=new M_;let n=e;return n})(),Kr=class{};var EV=1e3,qD="{{",IV="}}",YD="ng-enter",d_="ng-leave",qu="ng-trigger",Xu=".ng-trigger",kD="ng-animating",u_=".ng-animating";function Mi(n){if(typeof n=="number")return n;let e=n.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:f_(parseFloat(e[1]),e[2])}function f_(n,e){switch(e){case"s":return n*EV;default:return n}}function Ju(n,e,i){return n.hasOwnProperty("duration")?n:SV(n,e,i)}function SV(n,e,i){let t=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i,r,o=0,s="";if(typeof n=="string"){let a=n.match(t);if(a===null)return e.push(AD(n)),{duration:0,delay:0,easing:""};r=f_(parseFloat(a[1]),a[2]);let l=a[3];l!=null&&(o=f_(parseFloat(l),a[4]));let c=a[5];c&&(s=c)}else r=n;if(!i){let a=!1,l=e.length;r<0&&(e.push($j()),a=!0),o<0&&(e.push(Wj()),a=!0),a&&e.splice(l,0,AD(n))}return{duration:r,delay:o,easing:s}}function bl(n,e={}){return Object.keys(n).forEach(i=>{e[i]=n[i]}),e}function ZD(n){let e=new Map;return Object.keys(n).forEach(i=>{let t=n[i];e.set(i,t)}),e}function MV(n){return n.length?n[0]instanceof Map?n:n.map(e=>ZD(e)):[]}function ws(n,e=new Map,i){if(i)for(let[t,r]of i)e.set(t,r);for(let[t,r]of n)e.set(t,r);return e}function ri(n,e,i){e.forEach((t,r)=>{let o=T_(r);i&&!i.has(r)&&i.set(r,n.style[o]),n.style[o]=t})}function Qr(n,e){e.forEach((i,t)=>{let r=T_(t);n.style[r]=""})}function ul(n){return Array.isArray(n)?n.length==1?n[0]:Gx(n):n}function TV(n,e,i){let t=e.params||{},r=QD(n);r.length&&r.forEach(o=>{t.hasOwnProperty(o)||i.push(Gj(o))})}var h_=new RegExp(`${qD}\\s*(.+?)\\s*${IV}`,"g");function QD(n){let e=[];if(typeof n=="string"){let i;for(;i=h_.exec(n);)e.push(i[1]);h_.lastIndex=0}return e}function hl(n,e,i){let t=n.toString(),r=t.replace(h_,(o,s)=>{let a=e[s];return a==null&&(i.push(qj(s)),a=""),a.toString()});return r==t?n:r}function ef(n){let e=[],i=n.next();for(;!i.done;)e.push(i.value),i=n.next();return e}var AV=/-+([a-z0-9])/g;function T_(n){return n.replace(AV,(...e)=>e[1].toUpperCase())}function OV(n,e){return n===0||e===0}function RV(n,e,i){if(i.size&&e.length){let t=e[0],r=[];if(i.forEach((o,s)=>{t.has(s)||r.push(s),t.set(s,o)}),r.length)for(let o=1;os.set(a,KD(n,a)))}}return e}function Qt(n,e,i){switch(e.type){case 7:return n.visitTrigger(e,i);case 0:return n.visitState(e,i);case 1:return n.visitTransition(e,i);case 2:return n.visitSequence(e,i);case 3:return n.visitGroup(e,i);case 4:return n.visitAnimate(e,i);case 5:return n.visitKeyframes(e,i);case 6:return n.visitStyle(e,i);case 8:return n.visitReference(e,i);case 9:return n.visitAnimateChild(e,i);case 10:return n.visitAnimateRef(e,i);case 11:return n.visitQuery(e,i);case 12:return n.visitStagger(e,i);default:throw Yj(e.type)}}function KD(n,e){return window.getComputedStyle(n)[e]}var kV=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]),tf=class extends Kr{normalizePropertyName(e,i){return T_(e)}normalizeStyleValue(e,i,t,r){let o="",s=t.toString().trim();if(kV.has(i)&&t!==0&&t!=="0")if(typeof t=="number")o="px";else{let a=t.match(/^[+-]?[\d\.]+([a-z]*)$/);a&&a[1].length==0&&r.push(Zj(e,t))}return s+o}};var nf="*";function FV(n,e){let i=[];return typeof n=="string"?n.split(/\s*,\s*/).forEach(t=>PV(t,i,e)):i.push(n),i}function PV(n,e,i){if(n[0]==":"){let l=NV(n,i);if(typeof l=="function"){e.push(l);return}n=l}let t=n.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(t==null||t.length<4)return i.push(aV(n)),e;let r=t[1],o=t[2],s=t[3];e.push(FD(r,s));let a=r==nf&&s==nf;o[0]=="<"&&!a&&e.push(FD(s,r))}function NV(n,e){switch(n){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(i,t)=>parseFloat(t)>parseFloat(i);case":decrement":return(i,t)=>parseFloat(t) *"}}var Yu=new Set(["true","1"]),Zu=new Set(["false","0"]);function FD(n,e){let i=Yu.has(n)||Zu.has(n),t=Yu.has(e)||Zu.has(e);return(r,o)=>{let s=n==nf||n==r,a=e==nf||e==o;return!s&&i&&typeof r=="boolean"&&(s=r?Yu.has(n):Zu.has(n)),!a&&t&&typeof o=="boolean"&&(a=o?Yu.has(e):Zu.has(e)),s&&a}}var XD=":self",LV=new RegExp(`s*${XD}s*,?`,"g");function JD(n,e,i,t){return new m_(n).build(e,i,t)}var PD="",m_=class{constructor(e){this._driver=e}build(e,i,t){let r=new p_(i);return this._resetContextStyleTimingState(r),Qt(this,ul(e),r)}_resetContextStyleTimingState(e){e.currentQuerySelector=PD,e.collectedStyles=new Map,e.collectedStyles.set(PD,new Map),e.currentTime=0}visitTrigger(e,i){let t=i.queryCount=0,r=i.depCount=0,o=[],s=[];return e.name.charAt(0)=="@"&&i.errors.push(Qj()),e.definitions.forEach(a=>{if(this._resetContextStyleTimingState(i),a.type==0){let l=a,c=l.name;c.toString().split(/\s*,\s*/).forEach(d=>{l.name=d,o.push(this.visitState(l,i))}),l.name=c}else if(a.type==1){let l=this.visitTransition(a,i);t+=l.queryCount,r+=l.depCount,s.push(l)}else i.errors.push(Kj())}),{type:7,name:e.name,states:o,transitions:s,queryCount:t,depCount:r,options:null}}visitState(e,i){let t=this.visitStyle(e.styles,i),r=e.options&&e.options.params||null;if(t.containsDynamicStyles){let o=new Set,s=r||{};if(t.styles.forEach(a=>{a instanceof Map&&a.forEach(l=>{QD(l).forEach(c=>{s.hasOwnProperty(c)||o.add(c)})})}),o.size){let a=ef(o.values());i.errors.push(Xj(e.name,a))}}return{type:0,name:e.name,style:t,options:r?{params:r}:null}}visitTransition(e,i){i.queryCount=0,i.depCount=0;let t=Qt(this,ul(e.animation),i);return{type:1,matchers:FV(e.expr,i.errors),animation:t,queryCount:i.queryCount,depCount:i.depCount,options:Zr(e.options)}}visitSequence(e,i){return{type:2,steps:e.steps.map(t=>Qt(this,t,i)),options:Zr(e.options)}}visitGroup(e,i){let t=i.currentTime,r=0,o=e.steps.map(s=>{i.currentTime=t;let a=Qt(this,s,i);return r=Math.max(r,i.currentTime),a});return i.currentTime=r,{type:3,steps:o,options:Zr(e.options)}}visitAnimate(e,i){let t=zV(e.timings,i.errors);i.currentAnimateTimings=t;let r,o=e.styles?e.styles:at({});if(o.type==5)r=this.visitKeyframes(o,i);else{let s=e.styles,a=!1;if(!s){a=!0;let c={};t.easing&&(c.easing=t.easing),s=at(c)}i.currentTime+=t.duration+t.delay;let l=this.visitStyle(s,i);l.isEmptyStep=a,r=l}return i.currentAnimateTimings=null,{type:4,timings:t,style:r,options:null}}visitStyle(e,i){let t=this._makeStyleAst(e,i);return this._validateStyleAst(t,i),t}_makeStyleAst(e,i){let t=[],r=Array.isArray(e.styles)?e.styles:[e.styles];for(let a of r)typeof a=="string"?a===ei?t.push(a):i.errors.push(Jj(a)):t.push(ZD(a));let o=!1,s=null;return t.forEach(a=>{if(a instanceof Map&&(a.has("easing")&&(s=a.get("easing"),a.delete("easing")),!o)){for(let l of a.values())if(l.toString().indexOf(qD)>=0){o=!0;break}}}),{type:6,styles:t,easing:s,offset:e.offset,containsDynamicStyles:o,options:null}}_validateStyleAst(e,i){let t=i.currentAnimateTimings,r=i.currentTime,o=i.currentTime;t&&o>0&&(o-=t.duration+t.delay),e.styles.forEach(s=>{typeof s!="string"&&s.forEach((a,l)=>{let c=i.collectedStyles.get(i.currentQuerySelector),d=c.get(l),u=!0;d&&(o!=r&&o>=d.startTime&&r<=d.endTime&&(i.errors.push(eV(l,d.startTime,d.endTime,o,r)),u=!1),o=d.startTime),u&&c.set(l,{startTime:o,endTime:r}),i.options&&TV(a,i.options,i.errors)})})}visitKeyframes(e,i){let t={type:5,styles:[],options:null};if(!i.currentAnimateTimings)return i.errors.push(tV()),t;let r=1,o=0,s=[],a=!1,l=!1,c=0,d=e.steps.map(I=>{let Q=this._makeStyleAst(I,i),xe=Q.offset!=null?Q.offset:BV(Q.styles),se=0;return xe!=null&&(o++,se=Q.offset=xe),l=l||se<0||se>1,a=a||se0&&o{let xe=h>0?Q==m?1:h*Q:s[Q],se=xe*E;i.currentTime=g+v.delay+se,v.duration=se,this._validateStyleAst(I,i),I.offset=xe,t.styles.push(I)}),t}visitReference(e,i){return{type:8,animation:Qt(this,ul(e.animation),i),options:Zr(e.options)}}visitAnimateChild(e,i){return i.depCount++,{type:9,options:Zr(e.options)}}visitAnimateRef(e,i){return{type:10,animation:this.visitReference(e.animation,i),options:Zr(e.options)}}visitQuery(e,i){let t=i.currentQuerySelector,r=e.options||{};i.queryCount++,i.currentQuery=e;let[o,s]=jV(e.selector);i.currentQuerySelector=t.length?t+" "+o:o,Kt(i.collectedStyles,i.currentQuerySelector,new Map);let a=Qt(this,ul(e.animation),i);return i.currentQuery=null,i.currentQuerySelector=t,{type:11,selector:o,limit:r.limit||0,optional:!!r.optional,includeSelf:s,animation:a,originalSelector:e.selector,options:Zr(e.options)}}visitStagger(e,i){i.currentQuery||i.errors.push(oV());let t=e.timings==="full"?{duration:0,delay:0,easing:"full"}:Ju(e.timings,i.errors,!0);return{type:12,animation:Qt(this,ul(e.animation),i),timings:t,options:null}}};function jV(n){let e=!!n.split(/\s*,\s*/).find(i=>i==XD);return e&&(n=n.replace(LV,"")),n=n.replace(/@\*/g,Xu).replace(/@\w+/g,i=>Xu+"-"+i.slice(1)).replace(/:animating/g,u_),[n,e]}function VV(n){return n?bl(n):null}var p_=class{constructor(e){this.errors=e,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}};function BV(n){if(typeof n=="string")return null;let e=null;if(Array.isArray(n))n.forEach(i=>{if(i instanceof Map&&i.has("offset")){let t=i;e=parseFloat(t.get("offset")),t.delete("offset")}});else if(n instanceof Map&&n.has("offset")){let i=n;e=parseFloat(i.get("offset")),i.delete("offset")}return e}function zV(n,e){if(n.hasOwnProperty("duration"))return n;if(typeof n=="number"){let o=Ju(n,e).duration;return o_(o,0,"")}let i=n;if(i.split(/\s+/).some(o=>o.charAt(0)=="{"&&o.charAt(1)=="{")){let o=o_(0,0,"");return o.dynamic=!0,o.strValue=i,o}let r=Ju(i,e);return o_(r.duration,r.delay,r.easing)}function Zr(n){return n?(n=bl(n),n.params&&(n.params=VV(n.params))):n={},n}function o_(n,e,i){return{duration:n,delay:e,easing:i}}function A_(n,e,i,t,r,o,s=null,a=!1){return{type:1,element:n,keyframes:e,preStyleProps:i,postStyleProps:t,duration:r,delay:o,totalTime:r+o,easing:s,subTimeline:a}}var ml=class{constructor(){this._map=new Map}get(e){return this._map.get(e)||[]}append(e,i){let t=this._map.get(e);t||this._map.set(e,t=[]),t.push(...i)}has(e){return this._map.has(e)}clear(){this._map.clear()}},HV=1,UV=":enter",$V=new RegExp(UV,"g"),WV=":leave",GV=new RegExp(WV,"g");function eE(n,e,i,t,r,o=new Map,s=new Map,a,l,c=[]){return new g_().buildKeyframes(n,e,i,t,r,o,s,a,l,c)}var g_=class{buildKeyframes(e,i,t,r,o,s,a,l,c,d=[]){c=c||new ml;let u=new __(e,i,c,r,o,d,[]);u.options=l;let h=l.delay?Mi(l.delay):0;u.currentTimeline.delayNextStep(h),u.currentTimeline.setStyles([s],null,u.errors,l),Qt(this,t,u);let m=u.timelines.filter(g=>g.containsAnimation());if(m.length&&a.size){let g;for(let v=m.length-1;v>=0;v--){let E=m[v];if(E.element===i){g=E;break}}g&&!g.allowOnlyTimelineStyles()&&g.setStyles([a],null,u.errors,l)}return m.length?m.map(g=>g.buildKeyframes()):[A_(i,[],[],[],0,h,"",!1)]}visitTrigger(e,i){}visitState(e,i){}visitTransition(e,i){}visitAnimateChild(e,i){let t=i.subInstructions.get(i.element);if(t){let r=i.createSubContext(e.options),o=i.currentTimeline.currentTime,s=this._visitSubInstructions(t,r,r.options);o!=s&&i.transformIntoNewTimeline(s)}i.previousNode=e}visitAnimateRef(e,i){let t=i.createSubContext(e.options);t.transformIntoNewTimeline(),this._applyAnimationRefDelays([e.options,e.animation.options],i,t),this.visitReference(e.animation,t),i.transformIntoNewTimeline(t.currentTimeline.currentTime),i.previousNode=e}_applyAnimationRefDelays(e,i,t){for(let r of e){let o=r?.delay;if(o){let s=typeof o=="number"?o:Mi(hl(o,r?.params??{},i.errors));t.delayNextStep(s)}}}_visitSubInstructions(e,i,t){let o=i.currentTimeline.currentTime,s=t.duration!=null?Mi(t.duration):null,a=t.delay!=null?Mi(t.delay):null;return s!==0&&e.forEach(l=>{let c=i.appendInstructionToTimeline(l,s,a);o=Math.max(o,c.duration+c.delay)}),o}visitReference(e,i){i.updateOptions(e.options,!0),Qt(this,e.animation,i),i.previousNode=e}visitSequence(e,i){let t=i.subContextCount,r=i,o=e.options;if(o&&(o.params||o.delay)&&(r=i.createSubContext(o),r.transformIntoNewTimeline(),o.delay!=null)){r.previousNode.type==6&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=rf);let s=Mi(o.delay);r.delayNextStep(s)}e.steps.length&&(e.steps.forEach(s=>Qt(this,s,r)),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>t&&r.transformIntoNewTimeline()),i.previousNode=e}visitGroup(e,i){let t=[],r=i.currentTimeline.currentTime,o=e.options&&e.options.delay?Mi(e.options.delay):0;e.steps.forEach(s=>{let a=i.createSubContext(e.options);o&&a.delayNextStep(o),Qt(this,s,a),r=Math.max(r,a.currentTimeline.currentTime),t.push(a.currentTimeline)}),t.forEach(s=>i.currentTimeline.mergeTimelineCollectedStyles(s)),i.transformIntoNewTimeline(r),i.previousNode=e}_visitTiming(e,i){if(e.dynamic){let t=e.strValue,r=i.params?hl(t,i.params,i.errors):t;return Ju(r,i.errors)}else return{duration:e.duration,delay:e.delay,easing:e.easing}}visitAnimate(e,i){let t=i.currentAnimateTimings=this._visitTiming(e.timings,i),r=i.currentTimeline;t.delay&&(i.incrementTime(t.delay),r.snapshotCurrentStyles());let o=e.style;o.type==5?this.visitKeyframes(o,i):(i.incrementTime(t.duration),this.visitStyle(o,i),r.applyStylesToKeyframe()),i.currentAnimateTimings=null,i.previousNode=e}visitStyle(e,i){let t=i.currentTimeline,r=i.currentAnimateTimings;!r&&t.hasCurrentStyleProperties()&&t.forwardFrame();let o=r&&r.easing||e.easing;e.isEmptyStep?t.applyEmptyStep(o):t.setStyles(e.styles,o,i.errors,i.options),i.previousNode=e}visitKeyframes(e,i){let t=i.currentAnimateTimings,r=i.currentTimeline.duration,o=t.duration,a=i.createSubContext().currentTimeline;a.easing=t.easing,e.styles.forEach(l=>{let c=l.offset||0;a.forwardTime(c*o),a.setStyles(l.styles,l.easing,i.errors,i.options),a.applyStylesToKeyframe()}),i.currentTimeline.mergeTimelineCollectedStyles(a),i.transformIntoNewTimeline(r+o),i.previousNode=e}visitQuery(e,i){let t=i.currentTimeline.currentTime,r=e.options||{},o=r.delay?Mi(r.delay):0;o&&(i.previousNode.type===6||t==0&&i.currentTimeline.hasCurrentStyleProperties())&&(i.currentTimeline.snapshotCurrentStyles(),i.previousNode=rf);let s=t,a=i.invokeQuery(e.selector,e.originalSelector,e.limit,e.includeSelf,!!r.optional,i.errors);i.currentQueryTotal=a.length;let l=null;a.forEach((c,d)=>{i.currentQueryIndex=d;let u=i.createSubContext(e.options,c);o&&u.delayNextStep(o),c===i.element&&(l=u.currentTimeline),Qt(this,e.animation,u),u.currentTimeline.applyStylesToKeyframe();let h=u.currentTimeline.currentTime;s=Math.max(s,h)}),i.currentQueryIndex=0,i.currentQueryTotal=0,i.transformIntoNewTimeline(s),l&&(i.currentTimeline.mergeTimelineCollectedStyles(l),i.currentTimeline.snapshotCurrentStyles()),i.previousNode=e}visitStagger(e,i){let t=i.parentContext,r=i.currentTimeline,o=e.timings,s=Math.abs(o.duration),a=s*(i.currentQueryTotal-1),l=s*i.currentQueryIndex;switch(o.duration<0?"reverse":o.easing){case"reverse":l=a-l;break;case"full":l=t.currentStaggerTime;break}let d=i.currentTimeline;l&&d.delayNextStep(l);let u=d.currentTime;Qt(this,e.animation,i),i.previousNode=e,t.currentStaggerTime=r.currentTime-u+(r.startTime-t.currentTimeline.startTime)}},rf={},__=class n{constructor(e,i,t,r,o,s,a,l){this._driver=e,this.element=i,this.subInstructions=t,this._enterClassName=r,this._leaveClassName=o,this.errors=s,this.timelines=a,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=rf,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=l||new of(this._driver,i,0),a.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(e,i){if(!e)return;let t=e,r=this.options;t.duration!=null&&(r.duration=Mi(t.duration)),t.delay!=null&&(r.delay=Mi(t.delay));let o=t.params;if(o){let s=r.params;s||(s=this.options.params={}),Object.keys(o).forEach(a=>{(!i||!s.hasOwnProperty(a))&&(s[a]=hl(o[a],s,this.errors))})}}_copyOptions(){let e={};if(this.options){let i=this.options.params;if(i){let t=e.params={};Object.keys(i).forEach(r=>{t[r]=i[r]})}}return e}createSubContext(e=null,i,t){let r=i||this.element,o=new n(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,t||0));return o.previousNode=this.previousNode,o.currentAnimateTimings=this.currentAnimateTimings,o.options=this._copyOptions(),o.updateOptions(e),o.currentQueryIndex=this.currentQueryIndex,o.currentQueryTotal=this.currentQueryTotal,o.parentContext=this,this.subContextCount++,o}transformIntoNewTimeline(e){return this.previousNode=rf,this.currentTimeline=this.currentTimeline.fork(this.element,e),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(e,i,t){let r={duration:i??e.duration,delay:this.currentTimeline.currentTime+(t??0)+e.delay,easing:""},o=new b_(this._driver,e.element,e.keyframes,e.preStyleProps,e.postStyleProps,r,e.stretchStartingKeyframe);return this.timelines.push(o),r}incrementTime(e){this.currentTimeline.forwardTime(this.currentTimeline.duration+e)}delayNextStep(e){e>0&&this.currentTimeline.delayNextStep(e)}invokeQuery(e,i,t,r,o,s){let a=[];if(r&&a.push(this.element),e.length>0){e=e.replace($V,"."+this._enterClassName),e=e.replace(GV,"."+this._leaveClassName);let l=t!=1,c=this._driver.query(this.element,e,l);t!==0&&(c=t<0?c.slice(c.length+t,c.length):c.slice(0,t)),a.push(...c)}return!o&&a.length==0&&s.push(sV(i)),a}},of=class n{constructor(e,i,t,r){this._driver=e,this.element=i,this.startTime=t,this._elementTimelineStylesLookup=r,this.duration=0,this.easing=null,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(i),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(i,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(e){let i=this._keyframes.size===1&&this._pendingStyles.size;this.duration||i?(this.forwardTime(this.currentTime+e),i&&this.snapshotCurrentStyles()):this.startTime+=e}fork(e,i){return this.applyStylesToKeyframe(),new n(this._driver,e,i||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=HV,this._loadKeyframe()}forwardTime(e){this.applyStylesToKeyframe(),this.duration=e,this._loadKeyframe()}_updateStyle(e,i){this._localTimelineStyles.set(e,i),this._globalTimelineStyles.set(e,i),this._styleSummary.set(e,{time:this.currentTime,value:i})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(e){e&&this._previousKeyframe.set("easing",e);for(let[i,t]of this._globalTimelineStyles)this._backFill.set(i,t||ei),this._currentKeyframe.set(i,ei);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(e,i,t,r){i&&this._previousKeyframe.set("easing",i);let o=r&&r.params||{},s=qV(e,this._globalTimelineStyles);for(let[a,l]of s){let c=hl(l,o,t);this._pendingStyles.set(a,c),this._localTimelineStyles.has(a)||this._backFill.set(a,this._globalTimelineStyles.get(a)??ei),this._updateStyle(a,c)}}applyStylesToKeyframe(){this._pendingStyles.size!=0&&(this._pendingStyles.forEach((e,i)=>{this._currentKeyframe.set(i,e)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((e,i)=>{this._currentKeyframe.has(i)||this._currentKeyframe.set(i,e)}))}snapshotCurrentStyles(){for(let[e,i]of this._localTimelineStyles)this._pendingStyles.set(e,i),this._updateStyle(e,i)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){let e=[];for(let i in this._currentKeyframe)e.push(i);return e}mergeTimelineCollectedStyles(e){e._styleSummary.forEach((i,t)=>{let r=this._styleSummary.get(t);(!r||i.time>r.time)&&this._updateStyle(t,i.value)})}buildKeyframes(){this.applyStylesToKeyframe();let e=new Set,i=new Set,t=this._keyframes.size===1&&this.duration===0,r=[];this._keyframes.forEach((a,l)=>{let c=ws(a,new Map,this._backFill);c.forEach((d,u)=>{d===ru?e.add(u):d===ei&&i.add(u)}),t||c.set("offset",l/this.duration),r.push(c)});let o=e.size?ef(e.values()):[],s=i.size?ef(i.values()):[];if(t){let a=r[0],l=new Map(a);a.set("offset",0),l.set("offset",1),r=[a,l]}return A_(this.element,r,o,s,this.duration,this.startTime,this.easing,!1)}},b_=class extends of{constructor(e,i,t,r,o,s,a=!1){super(e,i,s.delay),this.keyframes=t,this.preStyleProps=r,this.postStyleProps=o,this._stretchStartingKeyframe=a,this.timings={duration:s.duration,delay:s.delay,easing:s.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let e=this.keyframes,{delay:i,duration:t,easing:r}=this.timings;if(this._stretchStartingKeyframe&&i){let o=[],s=t+i,a=i/s,l=ws(e[0]);l.set("offset",0),o.push(l);let c=ws(e[0]);c.set("offset",ND(a)),o.push(c);let d=e.length-1;for(let u=1;u<=d;u++){let h=ws(e[u]),m=h.get("offset"),g=i+m*t;h.set("offset",ND(g/s)),o.push(h)}t=s,i=0,r="",e=o}return A_(this.element,e,this.preStyleProps,this.postStyleProps,t,i,r,!0)}};function ND(n,e=3){let i=Math.pow(10,e-1);return Math.round(n*i)/i}function qV(n,e){let i=new Map,t;return n.forEach(r=>{if(r==="*"){t=t||e.keys();for(let o of t)i.set(o,ei)}else ws(r,i)}),i}function LD(n,e,i,t,r,o,s,a,l,c,d,u,h){return{type:0,element:n,triggerName:e,isRemovalTransition:r,fromState:i,fromStyles:o,toState:t,toStyles:s,timelines:a,queriedElements:l,preStyleProps:c,postStyleProps:d,totalTime:u,errors:h}}var s_={},sf=class{constructor(e,i,t){this._triggerName=e,this.ast=i,this._stateStyles=t}match(e,i,t,r){return YV(this.ast.matchers,e,i,t,r)}buildStyles(e,i,t){let r=this._stateStyles.get("*");return e!==void 0&&(r=this._stateStyles.get(e?.toString())||r),r?r.buildStyles(i,t):new Map}build(e,i,t,r,o,s,a,l,c,d){let u=[],h=this.ast.options&&this.ast.options.params||s_,m=a&&a.params||s_,g=this.buildStyles(t,m,u),v=l&&l.params||s_,E=this.buildStyles(r,v,u),I=new Set,Q=new Map,xe=new Map,se=r==="void",ht={params:ZV(v,h),delay:this.ast.options?.delay},ze=d?[]:eE(e,i,this.ast.animation,o,s,g,E,ht,c,u),He=0;if(ze.forEach(pn=>{He=Math.max(pn.duration+pn.delay,He)}),u.length)return LD(i,this._triggerName,t,r,se,g,E,[],[],Q,xe,He,u);ze.forEach(pn=>{let gn=pn.element,R_=Kt(Q,gn,new Set);pn.preStyleProps.forEach(tr=>R_.add(tr));let Es=Kt(xe,gn,new Set);pn.postStyleProps.forEach(tr=>Es.add(tr)),gn!==i&&I.add(gn)});let jt=ef(I.values());return LD(i,this._triggerName,t,r,se,g,E,ze,jt,Q,xe,He)}};function YV(n,e,i,t,r){return n.some(o=>o(e,i,t,r))}function ZV(n,e){let i=bl(e);for(let t in n)n.hasOwnProperty(t)&&n[t]!=null&&(i[t]=n[t]);return i}var v_=class{constructor(e,i,t){this.styles=e,this.defaultParams=i,this.normalizer=t}buildStyles(e,i){let t=new Map,r=bl(this.defaultParams);return Object.keys(e).forEach(o=>{let s=e[o];s!==null&&(r[o]=s)}),this.styles.styles.forEach(o=>{typeof o!="string"&&o.forEach((s,a)=>{s&&(s=hl(s,r,i));let l=this.normalizer.normalizePropertyName(a,i);s=this.normalizer.normalizeStyleValue(a,l,s,i),t.set(a,s)})}),t}};function QV(n,e,i){return new y_(n,e,i)}var y_=class{constructor(e,i,t){this.name=e,this.ast=i,this._normalizer=t,this.transitionFactories=[],this.states=new Map,i.states.forEach(r=>{let o=r.options&&r.options.params||{};this.states.set(r.name,new v_(r.style,o,t))}),jD(this.states,"true","1"),jD(this.states,"false","0"),i.transitions.forEach(r=>{this.transitionFactories.push(new sf(e,r,this.states))}),this.fallbackTransition=KV(e,this.states,this._normalizer)}get containsQueries(){return this.ast.queryCount>0}matchTransition(e,i,t,r){return this.transitionFactories.find(s=>s.match(e,i,t,r))||null}matchStyles(e,i,t){return this.fallbackTransition.buildStyles(e,i,t)}};function KV(n,e,i){let o={type:1,animation:{type:2,steps:[],options:null},matchers:[(s,a)=>!0],options:null,queryCount:0,depCount:0};return new sf(n,o,e)}function jD(n,e,i){n.has(e)?n.has(i)||n.set(i,n.get(e)):n.has(i)&&n.set(e,n.get(i))}var XV=new ml,w_=class{constructor(e,i,t){this.bodyNode=e,this._driver=i,this._normalizer=t,this._animations=new Map,this._playersById=new Map,this.players=[]}register(e,i){let t=[],r=[],o=JD(this._driver,i,t,r);if(t.length)throw uV(t);r.length&&void 0,this._animations.set(e,o)}_buildPlayer(e,i,t){let r=e.element,o=$D(this._normalizer,e.keyframes,i,t);return this._driver.animate(r,o,e.duration,e.delay,e.easing,[],!0)}create(e,i,t={}){let r=[],o=this._animations.get(e),s,a=new Map;if(o?(s=eE(this._driver,i,o,YD,d_,new Map,new Map,t,XV,r),s.forEach(d=>{let u=Kt(a,d.element,new Map);d.postStyleProps.forEach(h=>u.set(h,null))})):(r.push(fV()),s=[]),r.length)throw hV(r);a.forEach((d,u)=>{d.forEach((h,m)=>{d.set(m,this._driver.computeStyle(u,m,ei))})});let l=s.map(d=>{let u=a.get(d.element);return this._buildPlayer(d,new Map,u)}),c=er(l);return this._playersById.set(e,c),c.onDestroy(()=>this.destroy(e)),this.players.push(c),c}destroy(e){let i=this._getPlayer(e);i.destroy(),this._playersById.delete(e);let t=this.players.indexOf(i);t>=0&&this.players.splice(t,1)}_getPlayer(e){let i=this._playersById.get(e);if(!i)throw mV(e);return i}listen(e,i,t,r){let o=I_(i,"","","");return E_(this._getPlayer(e),t,o,r),()=>{}}command(e,i,t,r){if(t=="register"){this.register(e,r[0]);return}if(t=="create"){let s=r[0]||{};this.create(e,i,s);return}let o=this._getPlayer(e);switch(t){case"play":o.play();break;case"pause":o.pause();break;case"reset":o.reset();break;case"restart":o.restart();break;case"finish":o.finish();break;case"init":o.init();break;case"setPosition":o.setPosition(parseFloat(r[0]));break;case"destroy":this.destroy(e);break}}},VD="ng-animate-queued",JV=".ng-animate-queued",a_="ng-animate-disabled",e2=".ng-animate-disabled",t2="ng-star-inserted",n2=".ng-star-inserted",i2=[],tE={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},r2={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},On="__ng_removed",pl=class{get params(){return this.options.params}constructor(e,i=""){this.namespaceId=i;let t=e&&e.hasOwnProperty("value"),r=t?e.value:e;if(this.value=s2(r),t){let o=bl(e);delete o.value,this.options=o}else this.options={};this.options.params||(this.options.params={})}absorbOptions(e){let i=e.params;if(i){let t=this.options.params;Object.keys(i).forEach(r=>{t[r]==null&&(t[r]=i[r])})}}},fl="void",l_=new pl(fl),x_=class{constructor(e,i,t){this.id=e,this.hostElement=i,this._engine=t,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+e,mn(i,this._hostClassName)}listen(e,i,t,r){if(!this._triggers.has(i))throw pV(t,i);if(t==null||t.length==0)throw gV(i);if(!a2(t))throw _V(t,i);let o=Kt(this._elementListeners,e,[]),s={name:i,phase:t,callback:r};o.push(s);let a=Kt(this._engine.statesByElement,e,new Map);return a.has(i)||(mn(e,qu),mn(e,qu+"-"+i),a.set(i,l_)),()=>{this._engine.afterFlush(()=>{let l=o.indexOf(s);l>=0&&o.splice(l,1),this._triggers.has(i)||a.delete(i)})}}register(e,i){return this._triggers.has(e)?!1:(this._triggers.set(e,i),!0)}_getTrigger(e){let i=this._triggers.get(e);if(!i)throw bV(e);return i}trigger(e,i,t,r=!0){let o=this._getTrigger(i),s=new gl(this.id,i,e),a=this._engine.statesByElement.get(e);a||(mn(e,qu),mn(e,qu+"-"+i),this._engine.statesByElement.set(e,a=new Map));let l=a.get(i),c=new pl(t,this.id);if(!(t&&t.hasOwnProperty("value"))&&l&&c.absorbOptions(l.options),a.set(i,c),l||(l=l_),!(c.value===fl)&&l.value===c.value){if(!d2(l.params,c.params)){let v=[],E=o.matchStyles(l.value,l.params,v),I=o.matchStyles(c.value,c.params,v);v.length?this._engine.reportError(v):this._engine.afterFlush(()=>{Qr(e,E),ri(e,I)})}return}let h=Kt(this._engine.playersByElement,e,[]);h.forEach(v=>{v.namespaceId==this.id&&v.triggerName==i&&v.queued&&v.destroy()});let m=o.matchTransition(l.value,c.value,e,c.params),g=!1;if(!m){if(!r)return;m=o.fallbackTransition,g=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:i,transition:m,fromState:l,toState:c,player:s,isFallbackTransition:g}),g||(mn(e,VD),s.onStart(()=>{ys(e,VD)})),s.onDone(()=>{let v=this.players.indexOf(s);v>=0&&this.players.splice(v,1);let E=this._engine.playersByElement.get(e);if(E){let I=E.indexOf(s);I>=0&&E.splice(I,1)}}),this.players.push(s),h.push(s),s}deregister(e){this._triggers.delete(e),this._engine.statesByElement.forEach(i=>i.delete(e)),this._elementListeners.forEach((i,t)=>{this._elementListeners.set(t,i.filter(r=>r.name!=e))})}clearElementCache(e){this._engine.statesByElement.delete(e),this._elementListeners.delete(e);let i=this._engine.playersByElement.get(e);i&&(i.forEach(t=>t.destroy()),this._engine.playersByElement.delete(e))}_signalRemovalForInnerTriggers(e,i){let t=this._engine.driver.query(e,Xu,!0);t.forEach(r=>{if(r[On])return;let o=this._engine.fetchNamespacesByElement(r);o.size?o.forEach(s=>s.triggerLeaveAnimation(r,i,!1,!0)):this.clearElementCache(r)}),this._engine.afterFlushAnimationsDone(()=>t.forEach(r=>this.clearElementCache(r)))}triggerLeaveAnimation(e,i,t,r){let o=this._engine.statesByElement.get(e),s=new Map;if(o){let a=[];if(o.forEach((l,c)=>{if(s.set(c,l.value),this._triggers.has(c)){let d=this.trigger(e,c,fl,r);d&&a.push(d)}}),a.length)return this._engine.markElementAsRemoved(this.id,e,!0,i,s),t&&er(a).onDone(()=>this._engine.processLeaveNode(e)),!0}return!1}prepareLeaveAnimationListeners(e){let i=this._elementListeners.get(e),t=this._engine.statesByElement.get(e);if(i&&t){let r=new Set;i.forEach(o=>{let s=o.name;if(r.has(s))return;r.add(s);let l=this._triggers.get(s).fallbackTransition,c=t.get(s)||l_,d=new pl(fl),u=new gl(this.id,s,e);this._engine.totalQueuedPlayers++,this._queue.push({element:e,triggerName:s,transition:l,fromState:c,toState:d,player:u,isFallbackTransition:!0})})}}removeNode(e,i){let t=this._engine;if(e.childElementCount&&this._signalRemovalForInnerTriggers(e,i),this.triggerLeaveAnimation(e,i,!0))return;let r=!1;if(t.totalAnimations){let o=t.players.length?t.playersByQueriedElement.get(e):[];if(o&&o.length)r=!0;else{let s=e;for(;s=s.parentNode;)if(t.statesByElement.get(s)){r=!0;break}}}if(this.prepareLeaveAnimationListeners(e),r)t.markElementAsRemoved(this.id,e,!1,i);else{let o=e[On];(!o||o===tE)&&(t.afterFlush(()=>this.clearElementCache(e)),t.destroyInnerAnimations(e),t._onRemovalComplete(e,i))}}insertNode(e,i){mn(e,this._hostClassName)}drainQueuedTransitions(e){let i=[];return this._queue.forEach(t=>{let r=t.player;if(r.destroyed)return;let o=t.element,s=this._elementListeners.get(o);s&&s.forEach(a=>{if(a.name==t.triggerName){let l=I_(o,t.triggerName,t.fromState.value,t.toState.value);l._data=e,E_(t.player,a.phase,l,a.callback)}}),r.markedForDestroy?this._engine.afterFlush(()=>{r.destroy()}):i.push(t)}),this._queue=[],i.sort((t,r)=>{let o=t.transition.ast.depCount,s=r.transition.ast.depCount;return o==0||s==0?o-s:this._engine.driver.containsElement(t.element,r.element)?1:-1})}destroy(e){this.players.forEach(i=>i.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,e)}},C_=class{_onRemovalComplete(e,i){this.onRemovalComplete(e,i)}constructor(e,i,t){this.bodyNode=e,this.driver=i,this._normalizer=t,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(r,o)=>{}}get queuedPlayers(){let e=[];return this._namespaceList.forEach(i=>{i.players.forEach(t=>{t.queued&&e.push(t)})}),e}createNamespace(e,i){let t=new x_(e,i,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,i)?this._balanceNamespaceList(t,i):(this.newHostElements.set(i,t),this.collectEnterElement(i)),this._namespaceLookup[e]=t}_balanceNamespaceList(e,i){let t=this._namespaceList,r=this.namespacesByHostElement;if(t.length-1>=0){let s=!1,a=this.driver.getParentElement(i);for(;a;){let l=r.get(a);if(l){let c=t.indexOf(l);t.splice(c+1,0,e),s=!0;break}a=this.driver.getParentElement(a)}s||t.unshift(e)}else t.push(e);return r.set(i,e),e}register(e,i){let t=this._namespaceLookup[e];return t||(t=this.createNamespace(e,i)),t}registerTrigger(e,i,t){let r=this._namespaceLookup[e];r&&r.register(i,t)&&this.totalAnimations++}destroy(e,i){e&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{let t=this._fetchNamespace(e);this.namespacesByHostElement.delete(t.hostElement);let r=this._namespaceList.indexOf(t);r>=0&&this._namespaceList.splice(r,1),t.destroy(i),delete this._namespaceLookup[e]}))}_fetchNamespace(e){return this._namespaceLookup[e]}fetchNamespacesByElement(e){let i=new Set,t=this.statesByElement.get(e);if(t){for(let r of t.values())if(r.namespaceId){let o=this._fetchNamespace(r.namespaceId);o&&i.add(o)}}return i}trigger(e,i,t,r){if(Qu(i)){let o=this._fetchNamespace(e);if(o)return o.trigger(i,t,r),!0}return!1}insertNode(e,i,t,r){if(!Qu(i))return;let o=i[On];if(o&&o.setForRemoval){o.setForRemoval=!1,o.setForMove=!0;let s=this.collectedLeaveElements.indexOf(i);s>=0&&this.collectedLeaveElements.splice(s,1)}if(e){let s=this._fetchNamespace(e);s&&s.insertNode(i,t)}r&&this.collectEnterElement(i)}collectEnterElement(e){this.collectedEnterElements.push(e)}markElementAsDisabled(e,i){i?this.disabledNodes.has(e)||(this.disabledNodes.add(e),mn(e,a_)):this.disabledNodes.has(e)&&(this.disabledNodes.delete(e),ys(e,a_))}removeNode(e,i,t){if(Qu(i)){let r=e?this._fetchNamespace(e):null;r?r.removeNode(i,t):this.markElementAsRemoved(e,i,!1,t);let o=this.namespacesByHostElement.get(i);o&&o.id!==e&&o.removeNode(i,t)}else this._onRemovalComplete(i,t)}markElementAsRemoved(e,i,t,r,o){this.collectedLeaveElements.push(i),i[On]={namespaceId:e,setForRemoval:r,hasAnimation:t,removedBeforeQueried:!1,previousTriggersValues:o}}listen(e,i,t,r,o){return Qu(i)?this._fetchNamespace(e).listen(i,t,r,o):()=>{}}_buildInstruction(e,i,t,r,o){return e.transition.build(this.driver,e.element,e.fromState.value,e.toState.value,t,r,e.fromState.options,e.toState.options,i,o)}destroyInnerAnimations(e){let i=this.driver.query(e,Xu,!0);i.forEach(t=>this.destroyActiveAnimationsForElement(t)),this.playersByQueriedElement.size!=0&&(i=this.driver.query(e,u_,!0),i.forEach(t=>this.finishActiveQueriedAnimationOnElement(t)))}destroyActiveAnimationsForElement(e){let i=this.playersByElement.get(e);i&&i.forEach(t=>{t.queued?t.markedForDestroy=!0:t.destroy()})}finishActiveQueriedAnimationOnElement(e){let i=this.playersByQueriedElement.get(e);i&&i.forEach(t=>t.finish())}whenRenderingDone(){return new Promise(e=>{if(this.players.length)return er(this.players).onDone(()=>e());e()})}processLeaveNode(e){let i=e[On];if(i&&i.setForRemoval){if(e[On]=tE,i.namespaceId){this.destroyInnerAnimations(e);let t=this._fetchNamespace(i.namespaceId);t&&t.clearElementCache(e)}this._onRemovalComplete(e,i.setForRemoval)}e.classList?.contains(a_)&&this.markElementAsDisabled(e,!1),this.driver.query(e,e2,!0).forEach(t=>{this.markElementAsDisabled(t,!1)})}flush(e=-1){let i=[];if(this.newHostElements.size&&(this.newHostElements.forEach((t,r)=>this._balanceNamespaceList(t,r)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let t=0;tt()),this._flushFns=[],this._whenQuietFns.length){let t=this._whenQuietFns;this._whenQuietFns=[],i.length?er(i).onDone(()=>{t.forEach(r=>r())}):t.forEach(r=>r())}}reportError(e){throw vV(e)}_flushAnimations(e,i){let t=new ml,r=[],o=new Map,s=[],a=new Map,l=new Map,c=new Map,d=new Set;this.disabledNodes.forEach(L=>{d.add(L);let $=this.driver.query(L,JV,!0);for(let G=0;G<$.length;G++)d.add($[G])});let u=this.bodyNode,h=Array.from(this.statesByElement.keys()),m=HD(h,this.collectedEnterElements),g=new Map,v=0;m.forEach((L,$)=>{let G=YD+v++;g.set($,G),L.forEach(Ce=>mn(Ce,G))});let E=[],I=new Set,Q=new Set;for(let L=0;LI.add(Ce)):Q.add($))}let xe=new Map,se=HD(h,Array.from(I));se.forEach((L,$)=>{let G=d_+v++;xe.set($,G),L.forEach(Ce=>mn(Ce,G))}),e.push(()=>{m.forEach((L,$)=>{let G=g.get($);L.forEach(Ce=>ys(Ce,G))}),se.forEach((L,$)=>{let G=xe.get($);L.forEach(Ce=>ys(Ce,G))}),E.forEach(L=>{this.processLeaveNode(L)})});let ht=[],ze=[];for(let L=this._namespaceList.length-1;L>=0;L--)this._namespaceList[L].drainQueuedTransitions(i).forEach(G=>{let Ce=G.player,ut=G.element;if(ht.push(Ce),this.collectedEnterElements.length){let vt=ut[On];if(vt&&vt.setForMove){if(vt.previousTriggersValues&&vt.previousTriggersValues.has(G.triggerName)){let nr=vt.previousTriggersValues.get(G.triggerName),Xt=this.statesByElement.get(G.element);if(Xt&&Xt.has(G.triggerName)){let xl=Xt.get(G.triggerName);xl.value=nr,Xt.set(G.triggerName,xl)}}Ce.destroy();return}}let Rn=!u||!this.driver.containsElement(u,ut),Vt=xe.get(ut),Ti=g.get(ut),$e=this._buildInstruction(G,t,Ti,Vt,Rn);if($e.errors&&$e.errors.length){ze.push($e);return}if(Rn){Ce.onStart(()=>Qr(ut,$e.fromStyles)),Ce.onDestroy(()=>ri(ut,$e.toStyles)),r.push(Ce);return}if(G.isFallbackTransition){Ce.onStart(()=>Qr(ut,$e.fromStyles)),Ce.onDestroy(()=>ri(ut,$e.toStyles)),r.push(Ce);return}let P_=[];$e.timelines.forEach(vt=>{vt.stretchStartingKeyframe=!0,this.disabledNodes.has(vt.element)||P_.push(vt)}),$e.timelines=P_,t.append(ut,$e.timelines);let pE={instruction:$e,player:Ce,element:ut};s.push(pE),$e.queriedElements.forEach(vt=>Kt(a,vt,[]).push(Ce)),$e.preStyleProps.forEach((vt,nr)=>{if(vt.size){let Xt=l.get(nr);Xt||l.set(nr,Xt=new Set),vt.forEach((xl,ff)=>Xt.add(ff))}}),$e.postStyleProps.forEach((vt,nr)=>{let Xt=c.get(nr);Xt||c.set(nr,Xt=new Set),vt.forEach((xl,ff)=>Xt.add(ff))})});if(ze.length){let L=[];ze.forEach($=>{L.push(yV($.triggerName,$.errors))}),ht.forEach($=>$.destroy()),this.reportError(L)}let He=new Map,jt=new Map;s.forEach(L=>{let $=L.element;t.has($)&&(jt.set($,$),this._beforeAnimationBuild(L.player.namespaceId,L.instruction,He))}),r.forEach(L=>{let $=L.element;this._getPreviousPlayers($,!1,L.namespaceId,L.triggerName,null).forEach(Ce=>{Kt(He,$,[]).push(Ce),Ce.destroy()})});let pn=E.filter(L=>UD(L,l,c)),gn=new Map;zD(gn,this.driver,Q,c,ei).forEach(L=>{UD(L,l,c)&&pn.push(L)});let Es=new Map;m.forEach((L,$)=>{zD(Es,this.driver,new Set(L),l,ru)}),pn.forEach(L=>{let $=gn.get(L),G=Es.get(L);gn.set(L,new Map([...$?.entries()??[],...G?.entries()??[]]))});let tr=[],k_=[],F_={};s.forEach(L=>{let{element:$,player:G,instruction:Ce}=L;if(t.has($)){if(d.has($)){G.onDestroy(()=>ri($,Ce.toStyles)),G.disabled=!0,G.overrideTotalTime(Ce.totalTime),r.push(G);return}let ut=F_;if(jt.size>1){let Vt=$,Ti=[];for(;Vt=Vt.parentNode;){let $e=jt.get(Vt);if($e){ut=$e;break}Ti.push(Vt)}Ti.forEach($e=>jt.set($e,ut))}let Rn=this._buildAnimation(G.namespaceId,Ce,He,o,Es,gn);if(G.setRealPlayer(Rn),ut===F_)tr.push(G);else{let Vt=this.playersByElement.get(ut);Vt&&Vt.length&&(G.parentPlayer=er(Vt)),r.push(G)}}else Qr($,Ce.fromStyles),G.onDestroy(()=>ri($,Ce.toStyles)),k_.push(G),d.has($)&&r.push(G)}),k_.forEach(L=>{let $=o.get(L.element);if($&&$.length){let G=er($);L.setRealPlayer(G)}}),r.forEach(L=>{L.parentPlayer?L.syncPlayerEvents(L.parentPlayer):L.destroy()});for(let L=0;L!Rn.destroyed);ut.length?l2(this,$,ut):this.processLeaveNode($)}return E.length=0,tr.forEach(L=>{this.players.push(L),L.onDone(()=>{L.destroy();let $=this.players.indexOf(L);this.players.splice($,1)}),L.play()}),tr}afterFlush(e){this._flushFns.push(e)}afterFlushAnimationsDone(e){this._whenQuietFns.push(e)}_getPreviousPlayers(e,i,t,r,o){let s=[];if(i){let a=this.playersByQueriedElement.get(e);a&&(s=a)}else{let a=this.playersByElement.get(e);if(a){let l=!o||o==fl;a.forEach(c=>{c.queued||!l&&c.triggerName!=r||s.push(c)})}}return(t||r)&&(s=s.filter(a=>!(t&&t!=a.namespaceId||r&&r!=a.triggerName))),s}_beforeAnimationBuild(e,i,t){let r=i.triggerName,o=i.element,s=i.isRemovalTransition?void 0:e,a=i.isRemovalTransition?void 0:r;for(let l of i.timelines){let c=l.element,d=c!==o,u=Kt(t,c,[]);this._getPreviousPlayers(c,d,s,a,i.toState).forEach(m=>{let g=m.getRealPlayer();g.beforeDestroy&&g.beforeDestroy(),m.destroy(),u.push(m)})}Qr(o,i.fromStyles)}_buildAnimation(e,i,t,r,o,s){let a=i.triggerName,l=i.element,c=[],d=new Set,u=new Set,h=i.timelines.map(g=>{let v=g.element;d.add(v);let E=v[On];if(E&&E.removedBeforeQueried)return new qi(g.duration,g.delay);let I=v!==l,Q=c2((t.get(v)||i2).map(He=>He.getRealPlayer())).filter(He=>{let jt=He;return jt.element?jt.element===v:!1}),xe=o.get(v),se=s.get(v),ht=$D(this._normalizer,g.keyframes,xe,se),ze=this._buildPlayer(g,ht,Q);if(g.subTimeline&&r&&u.add(v),I){let He=new gl(e,a,v);He.setRealPlayer(ze),c.push(He)}return ze});c.forEach(g=>{Kt(this.playersByQueriedElement,g.element,[]).push(g),g.onDone(()=>o2(this.playersByQueriedElement,g.element,g))}),d.forEach(g=>mn(g,kD));let m=er(h);return m.onDestroy(()=>{d.forEach(g=>ys(g,kD)),ri(l,i.toStyles)}),u.forEach(g=>{Kt(r,g,[]).push(m)}),m}_buildPlayer(e,i,t){return i.length>0?this.driver.animate(e.element,i,e.duration,e.delay,e.easing,t):new qi(e.duration,e.delay)}},gl=class{constructor(e,i,t){this.namespaceId=e,this.triggerName=i,this.element=t,this._player=new qi,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.parentPlayer=null,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(e){this._containsRealPlayer||(this._player=e,this._queuedCallbacks.forEach((i,t)=>{i.forEach(r=>E_(e,t,void 0,r))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(e.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(e){this.totalTime=e}syncPlayerEvents(e){let i=this._player;i.triggerCallback&&e.onStart(()=>i.triggerCallback("start")),e.onDone(()=>this.finish()),e.onDestroy(()=>this.destroy())}_queueEvent(e,i){Kt(this._queuedCallbacks,e,[]).push(i)}onDone(e){this.queued&&this._queueEvent("done",e),this._player.onDone(e)}onStart(e){this.queued&&this._queueEvent("start",e),this._player.onStart(e)}onDestroy(e){this.queued&&this._queueEvent("destroy",e),this._player.onDestroy(e)}init(){this._player.init()}hasStarted(){return this.queued?!1:this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(e){this.queued||this._player.setPosition(e)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(e){let i=this._player;i.triggerCallback&&i.triggerCallback(e)}};function o2(n,e,i){let t=n.get(e);if(t){if(t.length){let r=t.indexOf(i);t.splice(r,1)}t.length==0&&n.delete(e)}return t}function s2(n){return n??null}function Qu(n){return n&&n.nodeType===1}function a2(n){return n=="start"||n=="done"}function BD(n,e){let i=n.style.display;return n.style.display=e??"none",i}function zD(n,e,i,t,r){let o=[];i.forEach(l=>o.push(BD(l)));let s=[];t.forEach((l,c)=>{let d=new Map;l.forEach(u=>{let h=e.computeStyle(c,u,r);d.set(u,h),(!h||h.length==0)&&(c[On]=r2,s.push(c))}),n.set(c,d)});let a=0;return i.forEach(l=>BD(l,o[a++])),s}function HD(n,e){let i=new Map;if(n.forEach(a=>i.set(a,[])),e.length==0)return i;let t=1,r=new Set(e),o=new Map;function s(a){if(!a)return t;let l=o.get(a);if(l)return l;let c=a.parentNode;return i.has(c)?l=c:r.has(c)?l=t:l=s(c),o.set(a,l),l}return e.forEach(a=>{let l=s(a);l!==t&&i.get(l).push(a)}),i}function mn(n,e){n.classList?.add(e)}function ys(n,e){n.classList?.remove(e)}function l2(n,e,i){er(i).onDone(()=>n.processLeaveNode(e))}function c2(n){let e=[];return nE(n,e),e}function nE(n,e){for(let i=0;ir.add(o)):e.set(n,t),i.delete(n),!0}var xs=class{constructor(e,i,t){this._driver=i,this._normalizer=t,this._triggerCache={},this.onRemovalComplete=(r,o)=>{},this._transitionEngine=new C_(e.body,i,t),this._timelineEngine=new w_(e.body,i,t),this._transitionEngine.onRemovalComplete=(r,o)=>this.onRemovalComplete(r,o)}registerTrigger(e,i,t,r,o){let s=e+"-"+r,a=this._triggerCache[s];if(!a){let l=[],c=[],d=JD(this._driver,o,l,c);if(l.length)throw cV(r,l);c.length&&void 0,a=QV(r,d,this._normalizer),this._triggerCache[s]=a}this._transitionEngine.registerTrigger(i,r,a)}register(e,i){this._transitionEngine.register(e,i)}destroy(e,i){this._transitionEngine.destroy(e,i)}onInsert(e,i,t,r){this._transitionEngine.insertNode(e,i,t,r)}onRemove(e,i,t){this._transitionEngine.removeNode(e,i,t)}disableAnimations(e,i){this._transitionEngine.markElementAsDisabled(e,i)}process(e,i,t,r){if(t.charAt(0)=="@"){let[o,s]=OD(t),a=r;this._timelineEngine.command(o,i,s,a)}else this._transitionEngine.trigger(e,i,t,r)}listen(e,i,t,r,o){if(t.charAt(0)=="@"){let[s,a]=OD(t);return this._timelineEngine.listen(s,i,a,o)}return this._transitionEngine.listen(e,i,t,r,o)}flush(e=-1){this._transitionEngine.flush(e)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(e){this._transitionEngine.afterFlushAnimationsDone(e)}};function u2(n,e){let i=null,t=null;return Array.isArray(e)&&e.length?(i=c_(e[0]),e.length>1&&(t=c_(e[e.length-1]))):e instanceof Map&&(i=c_(e)),i||t?new f2(n,i,t):null}var f2=(()=>{let e=class e{constructor(t,r,o){this._element=t,this._startStyles=r,this._endStyles=o,this._state=0;let s=e.initialStylesByElement.get(t);s||e.initialStylesByElement.set(t,s=new Map),this._initialStyles=s}start(){this._state<1&&(this._startStyles&&ri(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(ri(this._element,this._initialStyles),this._endStyles&&(ri(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(e.initialStylesByElement.delete(this._element),this._startStyles&&(Qr(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Qr(this._element,this._endStyles),this._endStyles=null),ri(this._element,this._initialStyles),this._state=3)}};e.initialStylesByElement=new WeakMap;let n=e;return n})();function c_(n){let e=null;return n.forEach((i,t)=>{h2(t)&&(e=e||new Map,e.set(t,i))}),e}function h2(n){return n==="display"||n==="position"}var af=class{constructor(e,i,t,r){this.element=e,this.keyframes=i,this.options=t,this._specialStyles=r,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=t.duration,this._delay=t.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(e=>e()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;let e=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,e,this.options),this._finalKeyframe=e.length?e[e.length-1]:new Map;let i=()=>this._onFinish();this.domPlayer.addEventListener("finish",i),this.onDestroy(()=>{this.domPlayer.removeEventListener("finish",i)})}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(e){let i=[];return e.forEach(t=>{i.push(Object.fromEntries(t))}),i}_triggerWebAnimation(e,i,t){return e.animate(this._convertKeyframesToObject(i),t)}onStart(e){this._originalOnStartFns.push(e),this._onStartFns.push(e)}onDone(e){this._originalOnDoneFns.push(e),this._onDoneFns.push(e)}onDestroy(e){this._onDestroyFns.push(e)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(e=>e()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(e=>e()),this._onDestroyFns=[])}setPosition(e){this.domPlayer===void 0&&this.init(),this.domPlayer.currentTime=e*this.time}getPosition(){return+(this.domPlayer.currentTime??0)/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){let e=new Map;this.hasStarted()&&this._finalKeyframe.forEach((t,r)=>{r!=="offset"&&e.set(r,this._finished?t:KD(this.element,r))}),this.currentSnapshot=e}triggerCallback(e){let i=e==="start"?this._onStartFns:this._onDoneFns;i.forEach(t=>t()),i.length=0}},lf=class{validateStyleProperty(e){return!0}validateAnimatableStyleProperty(e){return!0}matchesElement(e,i){return!1}containsElement(e,i){return WD(e,i)}getParentElement(e){return S_(e)}query(e,i,t){return GD(e,i,t)}computeStyle(e,i,t){return window.getComputedStyle(e)[i]}animate(e,i,t,r,o,s=[]){let a=r==0?"both":"forwards",l={duration:t,delay:r,fill:a};o&&(l.easing=o);let c=new Map,d=s.filter(m=>m instanceof af);OV(t,r)&&d.forEach(m=>{m.currentSnapshot.forEach((g,v)=>c.set(v,g))});let u=MV(i).map(m=>ws(m));u=RV(e,u,c);let h=u2(e,u);return new af(e,u,l,h)}};var Ku="@",iE="@.disabled",cf=class{constructor(e,i,t,r){this.namespaceId=e,this.delegate=i,this.engine=t,this._onDestroy=r,this.\u0275type=0}get data(){return this.delegate.data}destroyNode(e){this.delegate.destroyNode?.(e)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(e,i){return this.delegate.createElement(e,i)}createComment(e){return this.delegate.createComment(e)}createText(e){return this.delegate.createText(e)}appendChild(e,i){this.delegate.appendChild(e,i),this.engine.onInsert(this.namespaceId,i,e,!1)}insertBefore(e,i,t,r=!0){this.delegate.insertBefore(e,i,t),this.engine.onInsert(this.namespaceId,i,e,r)}removeChild(e,i,t){this.engine.onRemove(this.namespaceId,i,this.delegate)}selectRootElement(e,i){return this.delegate.selectRootElement(e,i)}parentNode(e){return this.delegate.parentNode(e)}nextSibling(e){return this.delegate.nextSibling(e)}setAttribute(e,i,t,r){this.delegate.setAttribute(e,i,t,r)}removeAttribute(e,i,t){this.delegate.removeAttribute(e,i,t)}addClass(e,i){this.delegate.addClass(e,i)}removeClass(e,i){this.delegate.removeClass(e,i)}setStyle(e,i,t,r){this.delegate.setStyle(e,i,t,r)}removeStyle(e,i,t){this.delegate.removeStyle(e,i,t)}setProperty(e,i,t){i.charAt(0)==Ku&&i==iE?this.disableAnimations(e,!!t):this.delegate.setProperty(e,i,t)}setValue(e,i){this.delegate.setValue(e,i)}listen(e,i,t){return this.delegate.listen(e,i,t)}disableAnimations(e,i){this.engine.disableAnimations(e,i)}},D_=class extends cf{constructor(e,i,t,r,o){super(i,t,r,o),this.factory=e,this.namespaceId=i}setProperty(e,i,t){i.charAt(0)==Ku?i.charAt(1)=="."&&i==iE?(t=t===void 0?!0:!!t,this.disableAnimations(e,t)):this.engine.process(this.namespaceId,e,i.slice(1),t):this.delegate.setProperty(e,i,t)}listen(e,i,t){if(i.charAt(0)==Ku){let r=m2(e),o=i.slice(1),s="";return o.charAt(0)!=Ku&&([o,s]=p2(o)),this.engine.listen(this.namespaceId,r,o,s,a=>{let l=a._data||-1;this.factory.scheduleListenerCallback(l,t,a)})}return this.delegate.listen(e,i,t)}};function m2(n){switch(n){case"body":return document.body;case"document":return document;case"window":return window;default:return n}}function p2(n){let e=n.indexOf("."),i=n.substring(0,e),t=n.slice(e+1);return[i,t]}var df=class{constructor(e,i,t){this.delegate=e,this.engine=i,this._zone=t,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,i.onRemovalComplete=(r,o)=>{let s=o?.parentNode(r);s&&o.removeChild(s,r)}}createRenderer(e,i){let t="",r=this.delegate.createRenderer(e,i);if(!e||!i?.data?.animation){let c=this._rendererCache,d=c.get(r);if(!d){let u=()=>c.delete(r);d=new cf(t,r,this.engine,u),c.set(r,d)}return d}let o=i.id,s=i.id+"-"+this._currentId;this._currentId++,this.engine.register(s,e);let a=c=>{Array.isArray(c)?c.forEach(a):this.engine.registerTrigger(o,s,e,c.name,c)};return i.data.animation.forEach(a),new D_(this,s,r,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(e,i,t){if(e>=0&&ei(t));return}let r=this._animationCallbacksBuffer;r.length==0&&queueMicrotask(()=>{this._zone.run(()=>{r.forEach(o=>{let[s,a]=o;s(a)}),this._animationCallbacksBuffer=[]})}),r.push([i,t])}end(){this._cdRecurDepth--,this._cdRecurDepth==0&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}};var _2=(()=>{let e=class e extends xs{constructor(t,r,o,s){super(t,r,o)}ngOnDestroy(){this.flush()}};e.\u0275fac=function(r){return new(r||e)(p(N),p(_l),p(Kr),p(Wt))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})();function b2(){return new tf}function v2(n,e,i){return new df(n,e,i)}var rE=[{provide:Kr,useFactory:b2},{provide:xs,useClass:_2},{provide:vr,useFactory:v2,deps:[Ed,xs,A]}],y2=[{provide:_l,useFactory:()=>new lf},{provide:ct,useValue:"BrowserAnimations"},...rE],vQ=[{provide:_l,useClass:M_},{provide:ct,useValue:"NoopAnimations"},...rE];function oE(){return[...y2]}var yl="Service workers are disabled or not supported by this browser";function w2(n){return Bt(()=>Pn(new Error(n)))}var Cs=class{constructor(e){if(this.serviceWorker=e,!e)this.worker=this.events=this.registration=w2(yl);else{let t=li(e,"controllerchange").pipe(F(()=>e.controller)),r=Bt(()=>R(e.controller)),o=Jt(r,t);this.worker=o.pipe(le(d=>!!d)),this.registration=this.worker.pipe(Fe(()=>e.getRegistration()));let c=li(e,"message").pipe(F(d=>d.data)).pipe(le(d=>d&&d.type)).pipe(Af());c.connect(),this.events=c}}postMessage(e,i){return this.worker.pipe(ie(1),Ee(t=>{t.postMessage(w({action:e},i))})).toPromise().then(()=>{})}postMessageWithOperation(e,i,t){let r=this.waitForOperationCompleted(t),o=this.postMessage(e,i);return Promise.all([o,r]).then(([,s])=>s)}generateNonce(){return Math.round(Math.random()*1e7)}eventsOfType(e){let i;return typeof e=="string"?i=t=>t.type===e:i=t=>e.includes(t.type),this.events.pipe(le(i))}nextEventOfType(e){return this.eventsOfType(e).pipe(ie(1))}waitForOperationCompleted(e){return this.eventsOfType("OPERATION_COMPLETED").pipe(le(i=>i.nonce===e),ie(1),F(i=>{if(i.result!==void 0)return i.result;throw new Error(i.error)})).toPromise()}get isEnabled(){return!!this.serviceWorker}},x2=(()=>{let e=class e{get isEnabled(){return this.sw.isEnabled}constructor(t){if(this.sw=t,this.pushManager=null,this.subscriptionChanges=new T,!t.isEnabled){this.messages=cr,this.notificationClicks=cr,this.subscription=cr;return}this.messages=this.sw.eventsOfType("PUSH").pipe(F(o=>o.data)),this.notificationClicks=this.sw.eventsOfType("NOTIFICATION_CLICK").pipe(F(o=>o.data)),this.pushManager=this.sw.registration.pipe(F(o=>o.pushManager));let r=this.pushManager.pipe(Fe(o=>o.getSubscription()));this.subscription=rt(r,this.subscriptionChanges)}requestSubscription(t){if(!this.sw.isEnabled||this.pushManager===null)return Promise.reject(new Error(yl));let r={userVisibleOnly:!0},o=this.decodeBase64(t.serverPublicKey.replace(/_/g,"/").replace(/-/g,"+")),s=new Uint8Array(new ArrayBuffer(o.length));for(let a=0;aa.subscribe(r)),ie(1)).toPromise().then(a=>(this.subscriptionChanges.next(a),a))}unsubscribe(){if(!this.sw.isEnabled)return Promise.reject(new Error(yl));let t=r=>{if(r===null)throw new Error("Not subscribed to push notifications.");return r.unsubscribe().then(o=>{if(!o)throw new Error("Unsubscribe failed!");this.subscriptionChanges.next(null)})};return this.subscription.pipe(ie(1),Fe(t)).toPromise()}decodeBase64(t){return atob(t)}};e.\u0275fac=function(r){return new(r||e)(p(Cs))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})(),C2=(()=>{let e=class e{get isEnabled(){return this.sw.isEnabled}constructor(t){if(this.sw=t,!t.isEnabled){this.versionUpdates=cr,this.unrecoverable=cr;return}this.versionUpdates=this.sw.eventsOfType(["VERSION_DETECTED","VERSION_INSTALLATION_FAILED","VERSION_READY","NO_NEW_VERSION_DETECTED"]),this.unrecoverable=this.sw.eventsOfType("UNRECOVERABLE_STATE")}checkForUpdate(){if(!this.sw.isEnabled)return Promise.reject(new Error(yl));let t=this.sw.generateNonce();return this.sw.postMessageWithOperation("CHECK_FOR_UPDATES",{nonce:t},t)}activateUpdate(){if(!this.sw.isEnabled)return Promise.reject(new Error(yl));let t=this.sw.generateNonce();return this.sw.postMessageWithOperation("ACTIVATE_UPDATE",{nonce:t},t)}};e.\u0275fac=function(r){return new(r||e)(p(Cs))},e.\u0275prov=x({token:e,factory:e.\u0275fac});let n=e;return n})();var sE=new y("NGSW_REGISTER_SCRIPT");function D2(n,e,i,t){return()=>{if(!(ua(t)&&"serviceWorker"in navigator&&i.enabled!==!1))return;navigator.serviceWorker.addEventListener("controllerchange",()=>{navigator.serviceWorker.controller!==null&&navigator.serviceWorker.controller.postMessage({action:"INITIALIZE"})});let r;if(typeof i.registrationStrategy=="function")r=i.registrationStrategy();else{let[s,...a]=(i.registrationStrategy||"registerWhenStable:30000").split(":");switch(s){case"registerImmediately":r=R(null);break;case"registerWithDelay":r=aE(+a[0]||0);break;case"registerWhenStable":r=a[0]?rt(lE(n),aE(+a[0])):lE(n);break;default:throw new Error(`Unknown ServiceWorker registration strategy: ${i.registrationStrategy}`)}}n.get(A).runOutsideAngular(()=>r.pipe(ie(1)).subscribe(()=>navigator.serviceWorker.register(e,{scope:i.scope}).catch(s=>console.error("Service worker registration failed with:",s))))}}function aE(n){return R(null).pipe(uo(n))}function lE(n){return n.get(Wt).isStable.pipe(le(i=>i))}function E2(n,e){return new Cs(ua(e)&&n.enabled!==!1?navigator.serviceWorker:void 0)}var vl=class{};function cE(n,e={}){return zi([x2,C2,{provide:sE,useValue:n},{provide:vl,useValue:e},{provide:Cs,useFactory:E2,deps:[vl,$t]},{provide:id,useFactory:D2,deps:[Ne,sE,vl,$t],multi:!0}])}var dE={providers:[hx(MD),xw(Cw()),{provide:ep,useClass:TD,multi:!0},oE(),cE("ngsw-worker.js",{enabled:!X0(),registrationStrategy:"registerWhenStable:30000"})]};var I2=["*",[["mat-toolbar-row"]]],S2=["*","mat-toolbar-row"],M2=(()=>{let e=class e{};e.\u0275fac=function(r){return new(r||e)},e.\u0275dir=O({type:e,selectors:[["mat-toolbar-row"]],hostAttrs:[1,"mat-toolbar-row"],exportAs:["matToolbarRow"],standalone:!0});let n=e;return n})(),uE=(()=>{let e=class e{constructor(t,r,o){this._elementRef=t,this._platform=r,this._document=o}ngAfterViewInit(){this._platform.isBrowser&&(this._checkToolbarMixedModes(),this._toolbarRows.changes.subscribe(()=>this._checkToolbarMixedModes()))}_checkToolbarMixedModes(){this._toolbarRows.length}};e.\u0275fac=function(r){return new(r||e)(f(k),f(be),f(N))},e.\u0275cmp=V({type:e,selectors:[["mat-toolbar"]],contentQueries:function(r,o,s){if(r&1&&Re(s,M2,5),r&2){let a;q(a=Y())&&(o._toolbarRows=a)}},hostAttrs:[1,"mat-toolbar"],hostVars:6,hostBindings:function(r,o){r&2&&(Yn(o.color?"mat-"+o.color:""),_e("mat-toolbar-multiple-rows",o._toolbarRows.length>0)("mat-toolbar-single-row",o._toolbarRows.length===0))},inputs:{color:"color"},exportAs:["matToolbar"],standalone:!0,features:[B],ngContentSelectors:S2,decls:2,vars:0,template:function(r,o){r&1&&(Xe(I2),ge(0),ge(1,1))},styles:[".mat-toolbar{background:var(--mat-toolbar-container-background-color);color:var(--mat-toolbar-container-text-color)}.mat-toolbar,.mat-toolbar h1,.mat-toolbar h2,.mat-toolbar h3,.mat-toolbar h4,.mat-toolbar h5,.mat-toolbar h6{font-family:var(--mat-toolbar-title-text-font);font-size:var(--mat-toolbar-title-text-size);line-height:var(--mat-toolbar-title-text-line-height);font-weight:var(--mat-toolbar-title-text-weight);letter-spacing:var(--mat-toolbar-title-text-tracking);margin:0}.cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar .mat-form-field-underline,.mat-toolbar .mat-form-field-ripple,.mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.mat-toolbar .mat-form-field-label,.mat-toolbar .mat-focused .mat-form-field-label,.mat-toolbar .mat-select-value,.mat-toolbar .mat-select-arrow,.mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.mat-toolbar .mat-input-element{caret-color:currentColor}.mat-toolbar .mat-mdc-button-base.mat-mdc-button-base.mat-unthemed{--mdc-text-button-label-text-color:var(--mat-toolbar-container-text-color);--mdc-outlined-button-label-text-color:var(--mat-toolbar-container-text-color)}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap;height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-row,.mat-toolbar-single-row{height:var(--mat-toolbar-mobile-height)}}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%;min-height:var(--mat-toolbar-standard-height)}@media(max-width: 599px){.mat-toolbar-multiple-rows{min-height:var(--mat-toolbar-mobile-height)}}"],encapsulation:2,changeDetection:0});let n=e;return n})();var T2=["mat-menu-item",""];function A2(n,e){n&1&&(Cn(),_(0,"svg",3),ee(1,"polygon",4),b())}var O2=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],R2=["mat-icon, [matMenuItemIcon]","*"];function k2(n,e){if(n&1){let i=Rt();_(0,"div",0),j("keydown",function(r){Ye(i);let o=U();return Ze(o._handleKeydown(r))})("click",function(){Ye(i);let r=U();return Ze(r.closed.emit("click"))})("@transformMenu.start",function(r){Ye(i);let o=U();return Ze(o._onAnimationStart(r))})("@transformMenu.done",function(r){Ye(i);let o=U();return Ze(o._onAnimationDone(r))}),_(1,"div",1),ge(2),b()()}if(n&2){let i=U();P("id",i.panelId)("ngClass",i._classList)("@transformMenu",i._panelAnimationState),we("aria-label",i.ariaLabel||null)("aria-labelledby",i.ariaLabelledby||null)("aria-describedby",i.ariaDescribedby||null)}}var F2=["*"],O_=new y("MAT_MENU_PANEL"),wl=(()=>{let e=class e{constructor(t,r,o,s,a){this._elementRef=t,this._document=r,this._focusMonitor=o,this._parentMenu=s,this._changeDetectorRef=a,this.role="menuitem",this.disabled=!1,this.disableRipple=!1,this._hovered=new T,this._focused=new T,this._highlighted=!1,this._triggersSubmenu=!1,s?.addItem?.(this)}focus(t,r){this._focusMonitor&&t?this._focusMonitor.focusVia(this._getHostElement(),t,r):this._getHostElement().focus(r),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(t){this.disabled&&(t.preventDefault(),t.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){let t=this._elementRef.nativeElement.cloneNode(!0),r=t.querySelectorAll("mat-icon, .material-icons");for(let o=0;o enter",fn("120ms cubic-bezier(0, 0, 0.2, 1)",at({opacity:1,transform:"scale(1)"}))),Zt("* => void",fn("100ms 25ms linear",at({opacity:0})))]),fadeInItems:ti("fadeInItems",[ni("showing",at({opacity:1})),Zt("void => *",[at({opacity:0}),fn("400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])},cK=uf.fadeInItems,dK=uf.transformMenu,N2=0,L2=new y("mat-menu-default-options",{providedIn:"root",factory:j2});function j2(){return{overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"}}var Ds=(()=>{let e=class e{get xPosition(){return this._xPosition}set xPosition(t){this._xPosition=t,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(t){this._yPosition=t,this.setPositionClasses()}set panelClass(t){let r=this._previousPanelClass;r&&r.length&&r.split(" ").forEach(o=>{this._classList[o]=!1}),this._previousPanelClass=t,t&&t.length&&(t.split(" ").forEach(o=>{this._classList[o]=!0}),this._elementRef.nativeElement.className="")}get classList(){return this.panelClass}set classList(t){this.panelClass=t}constructor(t,r,o,s){this._elementRef=t,this._ngZone=r,this._changeDetectorRef=s,this._elevationPrefix="mat-elevation-z",this._baseElevation=8,this._directDescendantItems=new ji,this._classList={},this._panelAnimationState="void",this._animationDone=new T,this.closed=new X,this.close=this.closed,this.panelId=`mat-menu-panel-${N2++}`,this.overlayPanelClass=o.overlayPanelClass||"",this._xPosition=o.xPosition,this._yPosition=o.yPosition,this.backdropClass=o.backdropClass,this.overlapTrigger=o.overlapTrigger,this.hasBackdrop=o.hasBackdrop}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new Qd(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(pt(this._directDescendantItems),Fe(t=>rt(...t.map(r=>r._focused)))).subscribe(t=>this._keyManager.updateActiveItem(t)),this._directDescendantItems.changes.subscribe(t=>{let r=this._keyManager;if(this._panelAnimationState==="enter"&&r.activeItem?._hasFocus()){let o=t.toArray(),s=Math.max(0,Math.min(o.length-1,r.activeItemIndex||0));o[s]&&!o[s].disabled?r.setActiveItem(s):r.setNextItemActive()}})}ngOnDestroy(){this._keyManager?.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),this._firstItemFocusSubscription?.unsubscribe()}_hovered(){return this._directDescendantItems.changes.pipe(pt(this._directDescendantItems),Fe(r=>rt(...r.map(o=>o._hovered))))}addItem(t){}removeItem(t){}_handleKeydown(t){let r=t.keyCode,o=this._keyManager;switch(r){case 27:bt(t)||(t.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&this.direction==="ltr"&&this.closed.emit("keydown");break;case 39:this.parentMenu&&this.direction==="rtl"&&this.closed.emit("keydown");break;default:(r===38||r===40)&&o.setFocusOrigin("keyboard"),o.onKeydown(t);return}t.stopPropagation()}focusFirstItem(t="program"){this._firstItemFocusSubscription?.unsubscribe(),this._firstItemFocusSubscription=this._ngZone.onStable.pipe(ie(1)).subscribe(()=>{let r=null;if(this._directDescendantItems.length&&(r=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),!r||!r.contains(document.activeElement)){let o=this._keyManager;o.setFocusOrigin(t).setFirstItemActive(),!o.activeItem&&r&&r.focus()}})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(t){let r=Math.min(this._baseElevation+t,24),o=`${this._elevationPrefix}${r}`,s=Object.keys(this._classList).find(a=>a.startsWith(this._elevationPrefix));(!s||s===this._previousElevation)&&(this._previousElevation&&(this._classList[this._previousElevation]=!1),this._classList[o]=!0,this._previousElevation=o)}setPositionClasses(t=this.xPosition,r=this.yPosition){let o=this._classList;o["mat-menu-before"]=t==="before",o["mat-menu-after"]=t==="after",o["mat-menu-above"]=r==="above",o["mat-menu-below"]=r==="below",this._changeDetectorRef?.markForCheck()}_startAnimation(){this._panelAnimationState="enter"}_resetAnimation(){this._panelAnimationState="void"}_onAnimationDone(t){this._animationDone.next(t),this._isAnimating=!1}_onAnimationStart(t){this._isAnimating=!0,t.toState==="enter"&&this._keyManager.activeItemIndex===0&&(t.element.scrollTop=0)}_updateDirectDescendants(){this._allItems.changes.pipe(pt(this._allItems)).subscribe(t=>{this._directDescendantItems.reset(t.filter(r=>r._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}};e.\u0275fac=function(r){return new(r||e)(f(k),f(A),f(L2),f(Oe))},e.\u0275cmp=V({type:e,selectors:[["mat-menu"]],contentQueries:function(r,o,s){if(r&1&&(Re(s,P2,5),Re(s,wl,5),Re(s,wl,4)),r&2){let a;q(a=Y())&&(o.lazyContent=a.first),q(a=Y())&&(o._allItems=a),q(a=Y())&&(o.items=a)}},viewQuery:function(r,o){if(r&1&&Be(Ve,5),r&2){let s;q(s=Y())&&(o.templateRef=s.first)}},hostVars:3,hostBindings:function(r,o){r&2&&we("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},inputs:{backdropClass:"backdropClass",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:["overlapTrigger","overlapTrigger",fe],hasBackdrop:["hasBackdrop","hasBackdrop",t=>t==null?null:fe(t)],panelClass:["class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"},exportAs:["matMenu"],standalone:!0,features:[Me([{provide:O_,useExisting:e}]),Ue,B],ngContentSelectors:F2,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel","mat-mdc-elevation-specific",3,"id","ngClass","keydown","click"],[1,"mat-mdc-menu-content"]],template:function(r,o){r&1&&(Xe(),z(0,k2,3,6,"ng-template"))},dependencies:[Fo],styles:['mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.mat-mdc-menu-content,.mat-mdc-menu-content .mat-mdc-menu-item .mat-mdc-menu-item-text{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;white-space:normal;font-family:var(--mat-menu-item-label-text-font);line-height:var(--mat-menu-item-label-text-line-height);font-size:var(--mat-menu-item-label-text-size);letter-spacing:var(--mat-menu-item-label-text-tracking);font-weight:var(--mat-menu-item-label-text-weight)}.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;box-sizing:border-box;outline:0;border-radius:var(--mat-menu-container-shape);background-color:var(--mat-menu-container-color);will-change:transform,opacity}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;align-items:center;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item,.mat-mdc-menu-item:visited,.mat-mdc-menu-item:link{color:var(--mat-menu-item-label-text-color)}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-item .mat-mdc-menu-submenu-icon{color:var(--mat-menu-item-icon-color)}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:16px}.mat-mdc-menu-item.mat-mdc-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-mdc-menu-item.mat-mdc-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-mdc-menu-item:not([disabled]):hover{background-color:var(--mat-menu-item-hover-state-layer-color)}.mat-mdc-menu-item:not([disabled]).cdk-program-focused,.mat-mdc-menu-item:not([disabled]).cdk-keyboard-focused,.mat-mdc-menu-item:not([disabled]).mat-mdc-menu-item-highlighted{background-color:var(--mat-menu-item-focus-state-layer-color)}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-mdc-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'],encapsulation:2,data:{animation:[uf.transformMenu,uf.fadeInItems]},changeDetection:0});let n=e;return n})(),V2=new y("mat-menu-scroll-strategy",{providedIn:"root",factory:()=>{let n=C(et);return()=>n.scrollStrategies.reposition()}});var fE=an({passive:!0});var hE=(()=>{let e=class e{get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(t){this.menu=t}get menu(){return this._menu}set menu(t){t!==this._menu&&(this._menu=t,this._menuCloseSubscription.unsubscribe(),t&&(this._parentMaterialMenu,this._menuCloseSubscription=t.close.subscribe(r=>{this._destroyMenu(r),(r==="click"||r==="tab")&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(r)})),this._menuItemInstance?._setTriggersSubmenu(this.triggersSubmenu()))}constructor(t,r,o,s,a,l,c,d,u){this._overlay=t,this._element=r,this._viewContainerRef=o,this._menuItemInstance=l,this._dir=c,this._focusMonitor=d,this._ngZone=u,this._overlayRef=null,this._menuOpen=!1,this._closingActionsSubscription=ve.EMPTY,this._hoverSubscription=ve.EMPTY,this._menuCloseSubscription=ve.EMPTY,this._changeDetectorRef=C(Oe),this._handleTouchStart=h=>{Ba(h)||(this._openedBy="touch")},this._openedBy=void 0,this.restoreFocus=!0,this.menuOpened=new X,this.onMenuOpen=this.menuOpened,this.menuClosed=new X,this.onMenuClose=this.menuClosed,this._scrollStrategy=s,this._parentMaterialMenu=a instanceof Ds?a:void 0,r.nativeElement.addEventListener("touchstart",this._handleTouchStart,fE)}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null),this._element.nativeElement.removeEventListener("touchstart",this._handleTouchStart,fE),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe()}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&this._dir.value==="rtl"?"rtl":"ltr"}triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this.menu)}toggleMenu(){return this._menuOpen?this.closeMenu():this.openMenu()}openMenu(){let t=this.menu;if(this._menuOpen||!t)return;let r=this._createOverlay(t),o=r.getConfig(),s=o.positionStrategy;this._setPosition(t,s),o.hasBackdrop=t.hasBackdrop==null?!this.triggersSubmenu():t.hasBackdrop,r.attach(this._getPortal(t)),t.lazyContent&&t.lazyContent.attach(this.menuData),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this.closeMenu()),this._initMenu(t),t instanceof Ds&&(t._startAnimation(),t._directDescendantItems.changes.pipe(ne(t.close)).subscribe(()=>{s.withLockedPosition(!1).reapplyLastPosition(),s.withLockedPosition(!0)}))}closeMenu(){this.menu?.close.emit()}focus(t,r){this._focusMonitor&&t?this._focusMonitor.focusVia(this._element,t,r):this._element.nativeElement.focus(r)}updatePosition(){this._overlayRef?.updatePosition()}_destroyMenu(t){if(!this._overlayRef||!this.menuOpen)return;let r=this.menu;this._closingActionsSubscription.unsubscribe(),this._overlayRef.detach(),this.restoreFocus&&(t==="keydown"||!this._openedBy||!this.triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,r instanceof Ds?(r._resetAnimation(),r.lazyContent?r._animationDone.pipe(le(o=>o.toState==="void"),ie(1),ne(r.lazyContent._attached)).subscribe({next:()=>r.lazyContent.detach(),complete:()=>this._setIsMenuOpen(!1)}):this._setIsMenuOpen(!1)):(this._setIsMenuOpen(!1),r?.lazyContent?.detach())}_initMenu(t){t.parentMenu=this.triggersSubmenu()?this._parentMaterialMenu:void 0,t.direction=this.dir,this._setMenuElevation(t),t.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0)}_setMenuElevation(t){if(t.setElevation){let r=0,o=t.parentMenu;for(;o;)r++,o=o.parentMenu;t.setElevation(r)}}_setIsMenuOpen(t){t!==this._menuOpen&&(this._menuOpen=t,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&this._menuItemInstance._setHighlighted(t),this._changeDetectorRef.markForCheck())}_createOverlay(t){if(!this._overlayRef){let r=this._getOverlayConfig(t);this._subscribeToPositions(t,r.positionStrategy),this._overlayRef=this._overlay.create(r),this._overlayRef.keydownEvents().subscribe()}return this._overlayRef}_getOverlayConfig(t){return new ii({positionStrategy:this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:t.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:t.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir})}_subscribeToPositions(t,r){t.setPositionClasses&&r.positionChanges.subscribe(o=>{let s=o.connectionPair.overlayX==="start"?"after":"before",a=o.connectionPair.overlayY==="top"?"below":"above";this._ngZone?this._ngZone.run(()=>t.setPositionClasses(s,a)):t.setPositionClasses(s,a)})}_setPosition(t,r){let[o,s]=t.xPosition==="before"?["end","start"]:["start","end"],[a,l]=t.yPosition==="above"?["bottom","top"]:["top","bottom"],[c,d]=[a,l],[u,h]=[o,s],m=0;if(this.triggersSubmenu()){if(h=o=t.xPosition==="before"?"start":"end",s=u=o==="end"?"start":"end",this._parentMaterialMenu){if(this._parentInnerPadding==null){let g=this._parentMaterialMenu.items.first;this._parentInnerPadding=g?g._getHostElement().offsetTop:0}m=a==="bottom"?this._parentInnerPadding:-this._parentInnerPadding}}else t.overlapTrigger||(c=a==="top"?"bottom":"top",d=l==="top"?"bottom":"top");r.withPositions([{originX:o,originY:c,overlayX:u,overlayY:a,offsetY:m},{originX:s,originY:c,overlayX:h,overlayY:a,offsetY:m},{originX:o,originY:d,overlayX:u,overlayY:l,offsetY:-m},{originX:s,originY:d,overlayX:h,overlayY:l,offsetY:-m}])}_menuClosingActions(){let t=this._overlayRef.backdropClick(),r=this._overlayRef.detachments(),o=this._parentMaterialMenu?this._parentMaterialMenu.closed:R(),s=this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(le(a=>a!==this._menuItemInstance),le(()=>this._menuOpen)):R();return rt(t,o,s,r)}_handleMousedown(t){Va(t)||(this._openedBy=t.button===0?"mouse":void 0,this.triggersSubmenu()&&t.preventDefault())}_handleKeydown(t){let r=t.keyCode;(r===13||r===32)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(r===39&&this.dir==="ltr"||r===37&&this.dir==="rtl")&&(this._openedBy="keyboard",this.openMenu())}_handleClick(t){this.triggersSubmenu()?(t.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){!this.triggersSubmenu()||!this._parentMaterialMenu||(this._hoverSubscription=this._parentMaterialMenu._hovered().pipe(le(t=>t===this._menuItemInstance&&!t.disabled),uo(0,Os)).subscribe(()=>{this._openedBy="mouse",this.menu instanceof Ds&&this.menu._isAnimating?this.menu._animationDone.pipe(ie(1),uo(0,Os),ne(this._parentMaterialMenu._hovered())).subscribe(()=>this.openMenu()):this.openMenu()}))}_getPortal(t){return(!this._portal||this._portal.templateRef!==t.templateRef)&&(this._portal=new Mn(t.templateRef,this._viewContainerRef)),this._portal}};e.\u0275fac=function(r){return new(r||e)(f(et),f(k),f(Ke),f(V2),f(O_,8),f(wl,10),f(Dt,8),f(In),f(A))},e.\u0275dir=O({type:e,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],hostVars:3,hostBindings:function(r,o){r&1&&j("click",function(a){return o._handleClick(a)})("mousedown",function(a){return o._handleMousedown(a)})("keydown",function(a){return o._handleKeydown(a)}),r&2&&we("aria-haspopup",o.menu?"menu":null)("aria-expanded",o.menuOpen)("aria-controls",o.menuOpen?o.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:["mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:["matMenuTriggerFor","menu"],menuData:["matMenuTriggerData","menuData"],restoreFocus:["matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"],standalone:!0});let n=e;return n})();function B2(n,e){if(n&1){let i=Rt();_(0,"button",6),M(1),b(),_(2,"mat-menu",null,7)(4,"button",8),j("click",function(){Ye(i);let r=U();return Ze(r.router.navigate(["user"]))}),M(5,"\u7528\u6237\u7BA1\u7406"),b(),_(6,"button",8),j("click",function(){Ye(i);let r=U();return Ze(r.router.navigate(["log"]))}),M(7,"\u64CD\u4F5C\u65E5\u5FD7"),b(),_(8,"button",8),j("click",function(){Ye(i);let r=U();return Ze(r.user_srv.auth_logout())}),M(9,"\u9000\u51FA"),b()()}if(n&2){let i=Tr(3),t=U();P("matMenuTriggerFor",i),D(1),Ae(" ","welcome, "+t.user_srv.user().username?t.user_srv.user().username:"Plz Login"," ")}}function z2(n,e){if(n&1){let i=Rt();_(0,"div",9)(1,"ul")(2,"li",10),j("click",function(){Ye(i);let r=U();return Ze(r.router.navigate(["user"]))}),M(3,"\u7528\u6237\u7BA1\u7406"),b(),_(4,"li",10),j("click",function(){Ye(i);let r=U();return Ze(r.router.navigate(["log"]))}),M(5,"\u64CD\u4F5C\u65E5\u5FD7"),b()()()}if(n&2){let i=U();D(2),Yn(i.url==="user"?"active":""),D(2),Yn(i.url==="log"?"active":"")}}var mE=(()=>{let e=class e{constructor(t,r){this.router=t,this.user_srv=r,this.title="front",this.url="",this.router.events.subscribe(o=>{if(o instanceof yi){let s=o.url;s.startsWith("/")&&(s=s.slice(1)),s=s.split("/")[0],console.log("[D] router val=",s),this.url=s}})}};e.\u0275fac=function(r){return new(r||e)(f(Gi),f(hn))},e.\u0275cmp=V({type:e,selectors:[["app-root"]],standalone:!0,features:[B],decls:9,vars:2,consts:[[1,"title"],["color","primary"],[1,"home-button",3,"click"],[1,"example-spacer"],[1,"content"],["class","side-container"],["mat-button","","aria-label","title menu button",1,"title-menu",3,"matMenuTriggerFor"],["menu","matMenu"],["mat-menu-item","",3,"click"],[1,"side-container"],[3,"click"]],template:function(r,o){r&1&&(_(0,"div",0)(1,"mat-toolbar",1)(2,"span",2),j("click",function(){return o.router.navigate([""])}),M(3,"Ult App"),b(),ee(4,"span",3),z(5,B2,10,2),b()(),_(6,"div",4),z(7,z2,6,4,"div",5),ee(8,"router-outlet"),b()),r&2&&(D(5),pe(5,o.user_srv.user().username!=""?5:-1),D(2),pe(7,o.url!="login"?7:-1))},dependencies:[Je,Wp,uE,Lt,hE,Ds,wl],styles:["[_nghost-%COMP%]{display:flex;height:100%;max-height:100%;width:100%;flex-direction:column}[_nghost-%COMP%] div.title[_ngcontent-%COMP%]{width:100%;max-width:100%;height:64px}[_nghost-%COMP%] div.title[_ngcontent-%COMP%] span.home-button[_ngcontent-%COMP%]{cursor:pointer}[_nghost-%COMP%] div.title[_ngcontent-%COMP%] button.title-menu[_ngcontent-%COMP%]{margin-left:auto}[_nghost-%COMP%] div.content[_ngcontent-%COMP%]{width:100%;height:calc(100% - 64px);max-height:calc(100% - 64px);display:flex;flex-direction:row}[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%]{display:flex;width:235px;max-width:235px;min-width:235px;flex-direction:column;border-right:1px solid #ddd;max-height:100%;overflow-y:auto}[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{width:100%;margin:0;padding:0}[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{list-style:none;display:flex;align-items:center;text-indent:1rem;width:100%;height:48px;font-size:16px}[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover{background:rgb(239,239,239);cursor:pointer}[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%] ul[_ngcontent-%COMP%] li.active[_ngcontent-%COMP%]{background:rgb(221,221,237);color:#3c3fa9}@media screen and (max-width: 40rem){[_nghost-%COMP%] div.content[_ngcontent-%COMP%] .side-container[_ngcontent-%COMP%]{display:none}}"]});let n=e;return n})();Aw(mE,dE).catch(n=>console.error(n)); diff --git a/internal/middleware/front/dist/front/browser/manifest.webmanifest b/internal/middleware/front/dist/front/browser/manifest.webmanifest new file mode 100644 index 0000000..d07c0e9 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/manifest.webmanifest @@ -0,0 +1,59 @@ +{ + "name": "front", + "short_name": "front", + "theme_color": "#1976d2", + "background_color": "#fafafa", + "display": "standalone", + "scope": "./", + "start_url": "./", + "icons": [ + { + "src": "assets/icons/icon-72x72.png", + "sizes": "72x72", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-96x96.png", + "sizes": "96x96", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-128x128.png", + "sizes": "128x128", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-144x144.png", + "sizes": "144x144", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-152x152.png", + "sizes": "152x152", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-384x384.png", + "sizes": "384x384", + "type": "image/png", + "purpose": "maskable any" + }, + { + "src": "assets/icons/icon-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable any" + } + ] +} diff --git a/internal/middleware/front/dist/front/browser/ngsw-worker.js b/internal/middleware/front/dist/front/browser/ngsw-worker.js new file mode 100755 index 0000000..6588aac --- /dev/null +++ b/internal/middleware/front/dist/front/browser/ngsw-worker.js @@ -0,0 +1,1860 @@ +(() => { + var __defProp = Object.defineProperty; + var __defProps = Object.defineProperties; + var __getOwnPropDescs = Object.getOwnPropertyDescriptors; + var __getOwnPropSymbols = Object.getOwnPropertySymbols; + var __hasOwnProp = Object.prototype.hasOwnProperty; + var __propIsEnum = Object.prototype.propertyIsEnumerable; + var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; + var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; + }; + var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/named-cache-storage.mjs + var NamedCacheStorage = class { + constructor(original, cacheNamePrefix) { + this.original = original; + this.cacheNamePrefix = cacheNamePrefix; + } + delete(cacheName) { + return this.original.delete(`${this.cacheNamePrefix}:${cacheName}`); + } + has(cacheName) { + return this.original.has(`${this.cacheNamePrefix}:${cacheName}`); + } + async keys() { + const prefix = `${this.cacheNamePrefix}:`; + const allCacheNames = await this.original.keys(); + const ownCacheNames = allCacheNames.filter((name) => name.startsWith(prefix)); + return ownCacheNames.map((name) => name.slice(prefix.length)); + } + match(request, options) { + return this.original.match(request, options); + } + async open(cacheName) { + const cache = await this.original.open(`${this.cacheNamePrefix}:${cacheName}`); + return Object.assign(cache, { name: cacheName }); + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/adapter.mjs + var Adapter = class { + constructor(scopeUrl, caches) { + this.scopeUrl = scopeUrl; + const parsedScopeUrl = this.parseUrl(this.scopeUrl); + this.origin = parsedScopeUrl.origin; + this.caches = new NamedCacheStorage(caches, `ngsw:${parsedScopeUrl.path}`); + } + newRequest(input, init) { + return new Request(input, init); + } + newResponse(body, init) { + return new Response(body, init); + } + newHeaders(headers) { + return new Headers(headers); + } + isClient(source) { + return source instanceof Client; + } + get time() { + return Date.now(); + } + normalizeUrl(url) { + const parsed = this.parseUrl(url, this.scopeUrl); + return parsed.origin === this.origin ? parsed.path : url; + } + parseUrl(url, relativeTo) { + const parsed = !relativeTo ? new URL(url) : new URL(url, relativeTo); + return { origin: parsed.origin, path: parsed.pathname, search: parsed.search }; + } + timeout(ms) { + return new Promise((resolve) => { + setTimeout(() => resolve(), ms); + }); + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/database.mjs + var NotFound = class { + constructor(table, key) { + this.table = table; + this.key = key; + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/db-cache.mjs + var CacheDatabase = class { + constructor(adapter2) { + this.adapter = adapter2; + this.cacheNamePrefix = "db"; + this.tables = /* @__PURE__ */ new Map(); + } + "delete"(name) { + if (this.tables.has(name)) { + this.tables.delete(name); + } + return this.adapter.caches.delete(`${this.cacheNamePrefix}:${name}`); + } + async list() { + const prefix = `${this.cacheNamePrefix}:`; + const allCacheNames = await this.adapter.caches.keys(); + const dbCacheNames = allCacheNames.filter((name) => name.startsWith(prefix)); + return dbCacheNames.map((name) => name.slice(prefix.length)); + } + async open(name, cacheQueryOptions) { + if (!this.tables.has(name)) { + const cache = await this.adapter.caches.open(`${this.cacheNamePrefix}:${name}`); + const table = new CacheTable(name, cache, this.adapter, cacheQueryOptions); + this.tables.set(name, table); + } + return this.tables.get(name); + } + }; + var CacheTable = class { + constructor(name, cache, adapter2, cacheQueryOptions) { + this.name = name; + this.cache = cache; + this.adapter = adapter2; + this.cacheQueryOptions = cacheQueryOptions; + this.cacheName = this.cache.name; + } + request(key) { + return this.adapter.newRequest("/" + key); + } + "delete"(key) { + return this.cache.delete(this.request(key), this.cacheQueryOptions); + } + keys() { + return this.cache.keys().then((requests) => requests.map((req) => req.url.slice(1))); + } + read(key) { + return this.cache.match(this.request(key), this.cacheQueryOptions).then((res) => { + if (res === void 0) { + return Promise.reject(new NotFound(this.name, key)); + } + return res.json(); + }); + } + write(key, value) { + return this.cache.put(this.request(key), this.adapter.newResponse(JSON.stringify(value))); + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/api.mjs + var UpdateCacheStatus; + (function(UpdateCacheStatus2) { + UpdateCacheStatus2[UpdateCacheStatus2["NOT_CACHED"] = 0] = "NOT_CACHED"; + UpdateCacheStatus2[UpdateCacheStatus2["CACHED_BUT_UNUSED"] = 1] = "CACHED_BUT_UNUSED"; + UpdateCacheStatus2[UpdateCacheStatus2["CACHED"] = 2] = "CACHED"; + })(UpdateCacheStatus || (UpdateCacheStatus = {})); + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/error.mjs + var SwCriticalError = class extends Error { + constructor() { + super(...arguments); + this.isCritical = true; + } + }; + function errorToString(error) { + if (error instanceof Error) { + return `${error.message} +${error.stack}`; + } else { + return `${error}`; + } + } + var SwUnrecoverableStateError = class extends SwCriticalError { + constructor() { + super(...arguments); + this.isUnrecoverableState = true; + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/sha1.mjs + function sha1(str) { + const utf8 = str; + const words32 = stringToWords32(utf8, Endian.Big); + return _sha1(words32, utf8.length * 8); + } + function sha1Binary(buffer) { + const words32 = arrayBufferToWords32(buffer, Endian.Big); + return _sha1(words32, buffer.byteLength * 8); + } + function _sha1(words32, len) { + const w = []; + let [a, b, c, d, e] = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]; + words32[len >> 5] |= 128 << 24 - len % 32; + words32[(len + 64 >> 9 << 4) + 15] = len; + for (let i = 0; i < words32.length; i += 16) { + const [h0, h1, h2, h3, h4] = [a, b, c, d, e]; + for (let j = 0; j < 80; j++) { + if (j < 16) { + w[j] = words32[i + j]; + } else { + w[j] = rol32(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1); + } + const [f, k] = fk(j, b, c, d); + const temp = [rol32(a, 5), f, e, k, w[j]].reduce(add32); + [e, d, c, b, a] = [d, c, rol32(b, 30), a, temp]; + } + [a, b, c, d, e] = [add32(a, h0), add32(b, h1), add32(c, h2), add32(d, h3), add32(e, h4)]; + } + return byteStringToHexString(words32ToByteString([a, b, c, d, e])); + } + function add32(a, b) { + return add32to64(a, b)[1]; + } + function add32to64(a, b) { + const low = (a & 65535) + (b & 65535); + const high = (a >>> 16) + (b >>> 16) + (low >>> 16); + return [high >>> 16, high << 16 | low & 65535]; + } + function rol32(a, count) { + return a << count | a >>> 32 - count; + } + var Endian; + (function(Endian2) { + Endian2[Endian2["Little"] = 0] = "Little"; + Endian2[Endian2["Big"] = 1] = "Big"; + })(Endian || (Endian = {})); + function fk(index, b, c, d) { + if (index < 20) { + return [b & c | ~b & d, 1518500249]; + } + if (index < 40) { + return [b ^ c ^ d, 1859775393]; + } + if (index < 60) { + return [b & c | b & d | c & d, 2400959708]; + } + return [b ^ c ^ d, 3395469782]; + } + function stringToWords32(str, endian) { + const size = str.length + 3 >>> 2; + const words32 = []; + for (let i = 0; i < size; i++) { + words32[i] = wordAt(str, i * 4, endian); + } + return words32; + } + function arrayBufferToWords32(buffer, endian) { + const size = buffer.byteLength + 3 >>> 2; + const words32 = []; + const view = new Uint8Array(buffer); + for (let i = 0; i < size; i++) { + words32[i] = wordAt(view, i * 4, endian); + } + return words32; + } + function byteAt(str, index) { + if (typeof str === "string") { + return index >= str.length ? 0 : str.charCodeAt(index) & 255; + } else { + return index >= str.byteLength ? 0 : str[index] & 255; + } + } + function wordAt(str, index, endian) { + let word = 0; + if (endian === Endian.Big) { + for (let i = 0; i < 4; i++) { + word += byteAt(str, index + i) << 24 - 8 * i; + } + } else { + for (let i = 0; i < 4; i++) { + word += byteAt(str, index + i) << 8 * i; + } + } + return word; + } + function words32ToByteString(words32) { + return words32.reduce((str, word) => str + word32ToByteString(word), ""); + } + function word32ToByteString(word) { + let str = ""; + for (let i = 0; i < 4; i++) { + str += String.fromCharCode(word >>> 8 * (3 - i) & 255); + } + return str; + } + function byteStringToHexString(str) { + let hex = ""; + for (let i = 0; i < str.length; i++) { + const b = byteAt(str, i); + hex += (b >>> 4).toString(16) + (b & 15).toString(16); + } + return hex.toLowerCase(); + } + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/assets.mjs + var AssetGroup = class { + constructor(scope2, adapter2, idle, config, hashes, db, cacheNamePrefix) { + this.scope = scope2; + this.adapter = adapter2; + this.idle = idle; + this.config = config; + this.hashes = hashes; + this.db = db; + this.inFlightRequests = /* @__PURE__ */ new Map(); + this.urls = []; + this.patterns = []; + this.name = config.name; + this.urls = config.urls.map((url) => adapter2.normalizeUrl(url)); + this.patterns = config.patterns.map((pattern) => new RegExp(pattern)); + this.cache = adapter2.caches.open(`${cacheNamePrefix}:${config.name}:cache`); + this.metadata = this.db.open(`${cacheNamePrefix}:${config.name}:meta`, config.cacheQueryOptions); + } + async cacheStatus(url) { + const cache = await this.cache; + const meta = await this.metadata; + const req = this.adapter.newRequest(url); + const res = await cache.match(req, this.config.cacheQueryOptions); + if (res === void 0) { + return UpdateCacheStatus.NOT_CACHED; + } + try { + const data = await meta.read(req.url); + if (!data.used) { + return UpdateCacheStatus.CACHED_BUT_UNUSED; + } + } catch (_) { + } + return UpdateCacheStatus.CACHED; + } + async getCacheNames() { + const [cache, metadata] = await Promise.all([ + this.cache, + this.metadata + ]); + return [cache.name, metadata.cacheName]; + } + async handleFetch(req, _event) { + const url = this.adapter.normalizeUrl(req.url); + if (this.urls.indexOf(url) !== -1 || this.patterns.some((pattern) => pattern.test(url))) { + const cache = await this.cache; + let cachedResponse; + try { + cachedResponse = await cache.match(req, this.config.cacheQueryOptions); + } catch (error) { + throw new SwCriticalError(`Cache is throwing while looking for a match: ${error}`); + } + if (cachedResponse !== void 0) { + if (this.hashes.has(url)) { + return cachedResponse; + } else { + if (await this.needToRevalidate(req, cachedResponse)) { + this.idle.schedule(`revalidate(${cache.name}): ${req.url}`, async () => { + await this.fetchAndCacheOnce(req); + }); + } + return cachedResponse; + } + } + const res = await this.fetchAndCacheOnce(this.newRequestWithMetadata(req.url, req)); + return res.clone(); + } else { + return null; + } + } + async needToRevalidate(req, res) { + if (res.headers.has("Cache-Control")) { + const cacheControl = res.headers.get("Cache-Control"); + const cacheDirectives = cacheControl.split(",").map((v) => v.trim()).map((v) => v.split("=")); + cacheDirectives.forEach((v) => v[0] = v[0].toLowerCase()); + const maxAgeDirective = cacheDirectives.find((v) => v[0] === "max-age"); + const cacheAge = maxAgeDirective ? maxAgeDirective[1] : void 0; + if (!cacheAge) { + return true; + } + try { + const maxAge = 1e3 * parseInt(cacheAge); + let ts; + try { + const metaTable = await this.metadata; + ts = (await metaTable.read(req.url)).ts; + } catch (e) { + const date = res.headers.get("Date"); + if (date === null) { + return true; + } + ts = Date.parse(date); + } + const age = this.adapter.time - ts; + return age < 0 || age > maxAge; + } catch (e) { + return true; + } + } else if (res.headers.has("Expires")) { + const expiresStr = res.headers.get("Expires"); + try { + return this.adapter.time > Date.parse(expiresStr); + } catch (e) { + return true; + } + } else { + return true; + } + } + async fetchFromCacheOnly(url) { + const cache = await this.cache; + const metaTable = await this.metadata; + const request = this.adapter.newRequest(url); + const response = await cache.match(request, this.config.cacheQueryOptions); + if (response === void 0) { + return null; + } + let metadata = void 0; + try { + metadata = await metaTable.read(request.url); + } catch (e) { + } + return { response, metadata }; + } + async unhashedResources() { + const cache = await this.cache; + return (await cache.keys()).map((request) => this.adapter.normalizeUrl(request.url)).filter((url) => !this.hashes.has(url)); + } + async fetchAndCacheOnce(req, used = true) { + if (this.inFlightRequests.has(req.url)) { + return this.inFlightRequests.get(req.url); + } + const fetchOp = this.fetchFromNetwork(req); + this.inFlightRequests.set(req.url, fetchOp); + try { + const res = await fetchOp; + if (!res.ok) { + throw new Error(`Response not Ok (fetchAndCacheOnce): request for ${req.url} returned response ${res.status} ${res.statusText}`); + } + try { + const cache = await this.cache; + await cache.put(req, res.clone()); + if (!this.hashes.has(this.adapter.normalizeUrl(req.url))) { + const meta = { ts: this.adapter.time, used }; + const metaTable = await this.metadata; + await metaTable.write(req.url, meta); + } + return res; + } catch (err) { + throw new SwCriticalError(`Failed to update the caches for request to '${req.url}' (fetchAndCacheOnce): ${errorToString(err)}`); + } + } finally { + this.inFlightRequests.delete(req.url); + } + } + async fetchFromNetwork(req, redirectLimit = 3) { + const res = await this.cacheBustedFetchFromNetwork(req); + if (res["redirected"] && !!res.url) { + if (redirectLimit === 0) { + throw new SwCriticalError(`Response hit redirect limit (fetchFromNetwork): request redirected too many times, next is ${res.url}`); + } + return this.fetchFromNetwork(this.newRequestWithMetadata(res.url, req), redirectLimit - 1); + } + return res; + } + async cacheBustedFetchFromNetwork(req) { + const url = this.adapter.normalizeUrl(req.url); + if (this.hashes.has(url)) { + const canonicalHash = this.hashes.get(url); + let response = await this.safeFetch(req); + let makeCacheBustedRequest = response.ok; + if (makeCacheBustedRequest) { + const fetchedHash = sha1Binary(await response.clone().arrayBuffer()); + makeCacheBustedRequest = fetchedHash !== canonicalHash; + } + if (makeCacheBustedRequest) { + const cacheBustReq = this.newRequestWithMetadata(this.cacheBust(req.url), req); + response = await this.safeFetch(cacheBustReq); + if (response.ok) { + const cacheBustedHash = sha1Binary(await response.clone().arrayBuffer()); + if (canonicalHash !== cacheBustedHash) { + throw new SwCriticalError(`Hash mismatch (cacheBustedFetchFromNetwork): ${req.url}: expected ${canonicalHash}, got ${cacheBustedHash} (after cache busting)`); + } + } + } + if (!response.ok && response.status === 404) { + throw new SwUnrecoverableStateError(`Failed to retrieve hashed resource from the server. (AssetGroup: ${this.config.name} | URL: ${url})`); + } + return response; + } else { + return this.safeFetch(req); + } + } + async maybeUpdate(updateFrom, req, cache) { + const url = this.adapter.normalizeUrl(req.url); + if (this.hashes.has(url)) { + const hash = this.hashes.get(url); + const res = await updateFrom.lookupResourceWithHash(url, hash); + if (res !== null) { + await cache.put(req, res); + return true; + } + } + return false; + } + newRequestWithMetadata(url, options) { + return this.adapter.newRequest(url, { headers: options.headers }); + } + cacheBust(url) { + return url + (url.indexOf("?") === -1 ? "?" : "&") + "ngsw-cache-bust=" + Math.random(); + } + async safeFetch(req) { + try { + return await this.scope.fetch(req); + } catch (e) { + return this.adapter.newResponse("", { + status: 504, + statusText: "Gateway Timeout" + }); + } + } + }; + var PrefetchAssetGroup = class extends AssetGroup { + async initializeFully(updateFrom) { + const cache = await this.cache; + await this.urls.reduce(async (previous, url) => { + await previous; + const req = this.adapter.newRequest(url); + let alreadyCached = false; + try { + alreadyCached = await cache.match(req, this.config.cacheQueryOptions) !== void 0; + } catch (error) { + throw new SwCriticalError(`Cache is throwing while looking for a match in a PrefetchAssetGroup: ${error}`); + } + if (alreadyCached) { + return; + } + if (updateFrom !== void 0 && await this.maybeUpdate(updateFrom, req, cache)) { + return; + } + await this.fetchAndCacheOnce(req, false); + }, Promise.resolve()); + if (updateFrom !== void 0) { + const metaTable = await this.metadata; + await (await updateFrom.previouslyCachedResources()).filter((url) => this.urls.indexOf(url) !== -1 || this.patterns.some((pattern) => pattern.test(url))).reduce(async (previous, url) => { + await previous; + const req = this.adapter.newRequest(url); + const alreadyCached = await cache.match(req, this.config.cacheQueryOptions) !== void 0; + if (alreadyCached) { + return; + } + const res = await updateFrom.lookupResourceWithoutHash(url); + if (res === null || res.metadata === void 0) { + return; + } + await cache.put(req, res.response); + await metaTable.write(req.url, __spreadProps(__spreadValues({}, res.metadata), { used: false })); + }, Promise.resolve()); + } + } + }; + var LazyAssetGroup = class extends AssetGroup { + async initializeFully(updateFrom) { + if (updateFrom === void 0) { + return; + } + const cache = await this.cache; + await this.urls.reduce(async (previous, url) => { + await previous; + const req = this.adapter.newRequest(url); + let alreadyCached = false; + try { + alreadyCached = await cache.match(req, this.config.cacheQueryOptions) !== void 0; + } catch (error) { + throw new SwCriticalError(`Cache is throwing while looking for a match in a LazyAssetGroup: ${error}`); + } + if (alreadyCached) { + return; + } + const updated = await this.maybeUpdate(updateFrom, req, cache); + if (this.config.updateMode === "prefetch" && !updated) { + const cacheStatus = await updateFrom.recentCacheStatus(url); + if (cacheStatus !== UpdateCacheStatus.CACHED) { + return; + } + await this.fetchAndCacheOnce(req, false); + } + }, Promise.resolve()); + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/data.mjs + var LruList = class { + constructor(state) { + if (state === void 0) { + state = { + head: null, + tail: null, + map: {}, + count: 0 + }; + } + this.state = state; + } + get size() { + return this.state.count; + } + pop() { + if (this.state.tail === null) { + return null; + } + const url = this.state.tail; + this.remove(url); + return url; + } + remove(url) { + const node = this.state.map[url]; + if (node === void 0) { + return false; + } + if (this.state.head === url) { + if (node.next === null) { + this.state.head = null; + this.state.tail = null; + this.state.map = {}; + this.state.count = 0; + return true; + } + const next = this.state.map[node.next]; + next.previous = null; + this.state.head = next.url; + node.next = null; + delete this.state.map[url]; + this.state.count--; + return true; + } + const previous = this.state.map[node.previous]; + previous.next = node.next; + if (node.next !== null) { + this.state.map[node.next].previous = node.previous; + } else { + this.state.tail = node.previous; + } + node.next = null; + node.previous = null; + delete this.state.map[url]; + this.state.count--; + return true; + } + accessed(url) { + if (this.state.head === url) { + return; + } + const node = this.state.map[url] || { url, next: null, previous: null }; + if (this.state.map[url] !== void 0) { + this.remove(url); + } + if (this.state.head !== null) { + this.state.map[this.state.head].previous = url; + } + node.next = this.state.head; + this.state.head = url; + if (this.state.tail === null) { + this.state.tail = url; + } + this.state.map[url] = node; + this.state.count++; + } + }; + var DataGroup = class { + constructor(scope2, adapter2, config, db, debugHandler, cacheNamePrefix) { + this.scope = scope2; + this.adapter = adapter2; + this.config = config; + this.db = db; + this.debugHandler = debugHandler; + this._lru = null; + this.patterns = config.patterns.map((pattern) => new RegExp(pattern)); + this.cache = adapter2.caches.open(`${cacheNamePrefix}:${config.name}:cache`); + this.lruTable = this.db.open(`${cacheNamePrefix}:${config.name}:lru`, config.cacheQueryOptions); + this.ageTable = this.db.open(`${cacheNamePrefix}:${config.name}:age`, config.cacheQueryOptions); + } + async lru() { + if (this._lru === null) { + const table = await this.lruTable; + try { + this._lru = new LruList(await table.read("lru")); + } catch (e) { + this._lru = new LruList(); + } + } + return this._lru; + } + async syncLru() { + if (this._lru === null) { + return; + } + const table = await this.lruTable; + try { + return table.write("lru", this._lru.state); + } catch (err) { + this.debugHandler.log(err, `DataGroup(${this.config.name}@${this.config.version}).syncLru()`); + } + } + async handleFetch(req, event) { + if (!this.patterns.some((pattern) => pattern.test(req.url))) { + return null; + } + const lru = await this.lru(); + switch (req.method) { + case "OPTIONS": + return null; + case "GET": + case "HEAD": + switch (this.config.strategy) { + case "freshness": + return this.handleFetchWithFreshness(req, event, lru); + case "performance": + return this.handleFetchWithPerformance(req, event, lru); + default: + throw new Error(`Unknown strategy: ${this.config.strategy}`); + } + default: + const wasCached = lru.remove(req.url); + if (wasCached) { + await this.clearCacheForUrl(req.url); + } + await this.syncLru(); + return this.safeFetch(req); + } + } + async handleFetchWithPerformance(req, event, lru) { + var _a; + const okToCacheOpaque = (_a = this.config.cacheOpaqueResponses) != null ? _a : false; + let res = null; + const fromCache = await this.loadFromCache(req, lru); + if (fromCache !== null) { + res = fromCache.res; + if (this.config.refreshAheadMs !== void 0 && fromCache.age >= this.config.refreshAheadMs) { + event.waitUntil(this.safeCacheResponse(req, this.safeFetch(req), lru, okToCacheOpaque)); + } + } + if (res !== null) { + return res; + } + const [timeoutFetch, networkFetch] = this.networkFetchWithTimeout(req); + res = await timeoutFetch; + if (res === void 0) { + res = this.adapter.newResponse(null, { status: 504, statusText: "Gateway Timeout" }); + event.waitUntil(this.safeCacheResponse(req, networkFetch, lru, okToCacheOpaque)); + } else { + await this.safeCacheResponse(req, res, lru, okToCacheOpaque); + } + return res; + } + async handleFetchWithFreshness(req, event, lru) { + var _a; + const okToCacheOpaque = (_a = this.config.cacheOpaqueResponses) != null ? _a : true; + const [timeoutFetch, networkFetch] = this.networkFetchWithTimeout(req); + let res; + try { + res = await timeoutFetch; + } catch (e) { + res = void 0; + } + if (res === void 0) { + event.waitUntil(this.safeCacheResponse(req, networkFetch, lru, okToCacheOpaque)); + const fromCache = await this.loadFromCache(req, lru); + res = fromCache !== null ? fromCache.res : null; + } else { + await this.safeCacheResponse(req, res, lru, okToCacheOpaque); + } + if (res !== null) { + return res; + } + return networkFetch; + } + networkFetchWithTimeout(req) { + if (this.config.timeoutMs !== void 0) { + const networkFetch = this.scope.fetch(req); + const safeNetworkFetch = (async () => { + try { + return await networkFetch; + } catch (e) { + return this.adapter.newResponse(null, { + status: 504, + statusText: "Gateway Timeout" + }); + } + })(); + const networkFetchUndefinedError = (async () => { + try { + return await networkFetch; + } catch (e) { + return void 0; + } + })(); + const timeout = this.adapter.timeout(this.config.timeoutMs); + return [Promise.race([networkFetchUndefinedError, timeout]), safeNetworkFetch]; + } else { + const networkFetch = this.safeFetch(req); + return [networkFetch, networkFetch]; + } + } + async safeCacheResponse(req, resOrPromise, lru, okToCacheOpaque) { + try { + const res = await resOrPromise; + try { + await this.cacheResponse(req, res, lru, okToCacheOpaque); + } catch (err) { + this.debugHandler.log(err, `DataGroup(${this.config.name}@${this.config.version}).safeCacheResponse(${req.url}, status: ${res.status})`); + } + } catch (e) { + } + } + async loadFromCache(req, lru) { + const cache = await this.cache; + let res = await cache.match(req, this.config.cacheQueryOptions); + if (res !== void 0) { + try { + const ageTable = await this.ageTable; + const age = this.adapter.time - (await ageTable.read(req.url)).age; + if (age <= this.config.maxAge) { + lru.accessed(req.url); + return { res, age }; + } + } catch (e) { + } + lru.remove(req.url); + await this.clearCacheForUrl(req.url); + await this.syncLru(); + } + return null; + } + async cacheResponse(req, res, lru, okToCacheOpaque = false) { + if (!(res.ok || okToCacheOpaque && res.type === "opaque")) { + return; + } + if (lru.size >= this.config.maxSize) { + const evictedUrl = lru.pop(); + if (evictedUrl !== null) { + await this.clearCacheForUrl(evictedUrl); + } + } + lru.accessed(req.url); + await (await this.cache).put(req, res.clone()); + const ageTable = await this.ageTable; + await ageTable.write(req.url, { age: this.adapter.time }); + await this.syncLru(); + } + async cleanup() { + await Promise.all([ + this.cache.then((cache) => this.adapter.caches.delete(cache.name)), + this.ageTable.then((table) => this.db.delete(table.name)), + this.lruTable.then((table) => this.db.delete(table.name)) + ]); + } + async getCacheNames() { + const [cache, ageTable, lruTable] = await Promise.all([ + this.cache, + this.ageTable, + this.lruTable + ]); + return [cache.name, ageTable.cacheName, lruTable.cacheName]; + } + async clearCacheForUrl(url) { + const [cache, ageTable] = await Promise.all([this.cache, this.ageTable]); + await Promise.all([ + cache.delete(this.adapter.newRequest(url, { method: "GET" }), this.config.cacheQueryOptions), + cache.delete(this.adapter.newRequest(url, { method: "HEAD" }), this.config.cacheQueryOptions), + ageTable.delete(url) + ]); + } + async safeFetch(req) { + try { + return this.scope.fetch(req); + } catch (e) { + return this.adapter.newResponse(null, { + status: 504, + statusText: "Gateway Timeout" + }); + } + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/app-version.mjs + var BACKWARDS_COMPATIBILITY_NAVIGATION_URLS = [ + { positive: true, regex: "^/.*$" }, + { positive: false, regex: "^/.*\\.[^/]*$" }, + { positive: false, regex: "^/.*__" } + ]; + var AppVersion = class { + get okay() { + return this._okay; + } + constructor(scope2, adapter2, database, idle, debugHandler, manifest, manifestHash) { + this.scope = scope2; + this.adapter = adapter2; + this.database = database; + this.debugHandler = debugHandler; + this.manifest = manifest; + this.manifestHash = manifestHash; + this.hashTable = /* @__PURE__ */ new Map(); + this._okay = true; + this.indexUrl = this.adapter.normalizeUrl(this.manifest.index); + Object.keys(manifest.hashTable).forEach((url) => { + this.hashTable.set(adapter2.normalizeUrl(url), manifest.hashTable[url]); + }); + const assetCacheNamePrefix = `${manifestHash}:assets`; + this.assetGroups = (manifest.assetGroups || []).map((config) => { + switch (config.installMode) { + case "prefetch": + return new PrefetchAssetGroup(scope2, adapter2, idle, config, this.hashTable, database, assetCacheNamePrefix); + case "lazy": + return new LazyAssetGroup(scope2, adapter2, idle, config, this.hashTable, database, assetCacheNamePrefix); + } + }); + this.dataGroups = (manifest.dataGroups || []).map((config) => new DataGroup(scope2, adapter2, config, database, debugHandler, `${config.version}:data`)); + manifest.navigationUrls = manifest.navigationUrls || BACKWARDS_COMPATIBILITY_NAVIGATION_URLS; + const includeUrls = manifest.navigationUrls.filter((spec) => spec.positive); + const excludeUrls = manifest.navigationUrls.filter((spec) => !spec.positive); + this.navigationUrls = { + include: includeUrls.map((spec) => new RegExp(spec.regex)), + exclude: excludeUrls.map((spec) => new RegExp(spec.regex)) + }; + } + async initializeFully(updateFrom) { + try { + await this.assetGroups.reduce(async (previous, group) => { + await previous; + return group.initializeFully(updateFrom); + }, Promise.resolve()); + } catch (err) { + this._okay = false; + throw err; + } + } + async handleFetch(req, event) { + const asset = await this.assetGroups.reduce(async (potentialResponse, group) => { + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + return group.handleFetch(req, event); + }, Promise.resolve(null)); + if (asset !== null) { + return asset; + } + const data = await this.dataGroups.reduce(async (potentialResponse, group) => { + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + return group.handleFetch(req, event); + }, Promise.resolve(null)); + if (data !== null) { + return data; + } + if (this.adapter.normalizeUrl(req.url) !== this.indexUrl && this.isNavigationRequest(req)) { + if (this.manifest.navigationRequestStrategy === "freshness") { + try { + return await this.scope.fetch(req); + } catch (e) { + } + } + return this.handleFetch(this.adapter.newRequest(this.indexUrl), event); + } + return null; + } + isNavigationRequest(req) { + if (req.method !== "GET" || req.mode !== "navigate") { + return false; + } + if (!this.acceptsTextHtml(req)) { + return false; + } + const urlPrefix = this.scope.registration.scope.replace(/\/$/, ""); + const url = req.url.startsWith(urlPrefix) ? req.url.slice(urlPrefix.length) : req.url; + const urlWithoutQueryOrHash = url.replace(/[?#].*$/, ""); + return this.navigationUrls.include.some((regex) => regex.test(urlWithoutQueryOrHash)) && !this.navigationUrls.exclude.some((regex) => regex.test(urlWithoutQueryOrHash)); + } + async lookupResourceWithHash(url, hash) { + if (!this.hashTable.has(url)) { + return null; + } + if (this.hashTable.get(url) !== hash) { + return null; + } + const cacheState = await this.lookupResourceWithoutHash(url); + return cacheState && cacheState.response; + } + lookupResourceWithoutHash(url) { + return this.assetGroups.reduce(async (potentialResponse, group) => { + const resp = await potentialResponse; + if (resp !== null) { + return resp; + } + return group.fetchFromCacheOnly(url); + }, Promise.resolve(null)); + } + previouslyCachedResources() { + return this.assetGroups.reduce(async (resources, group) => (await resources).concat(await group.unhashedResources()), Promise.resolve([])); + } + async recentCacheStatus(url) { + return this.assetGroups.reduce(async (current, group) => { + const status = await current; + if (status === UpdateCacheStatus.CACHED) { + return status; + } + const groupStatus = await group.cacheStatus(url); + if (groupStatus === UpdateCacheStatus.NOT_CACHED) { + return status; + } + return groupStatus; + }, Promise.resolve(UpdateCacheStatus.NOT_CACHED)); + } + async getCacheNames() { + const allGroupCacheNames = await Promise.all([ + ...this.assetGroups.map((group) => group.getCacheNames()), + ...this.dataGroups.map((group) => group.getCacheNames()) + ]); + return [].concat(...allGroupCacheNames); + } + get appData() { + return this.manifest.appData || null; + } + acceptsTextHtml(req) { + const accept = req.headers.get("Accept"); + if (accept === null) { + return false; + } + const values = accept.split(","); + return values.some((value) => value.trim().toLowerCase() === "text/html"); + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/debug.mjs + var SW_VERSION = "17.0.0"; + var DEBUG_LOG_BUFFER_SIZE = 100; + var DebugHandler = class { + constructor(driver, adapter2) { + this.driver = driver; + this.adapter = adapter2; + this.debugLogA = []; + this.debugLogB = []; + } + async handleFetch(req) { + const [state, versions, idle] = await Promise.all([ + this.driver.debugState(), + this.driver.debugVersions(), + this.driver.debugIdleState() + ]); + const msgState = `NGSW Debug Info: + +Driver version: ${SW_VERSION} +Driver state: ${state.state} (${state.why}) +Latest manifest hash: ${state.latestHash || "none"} +Last update check: ${this.since(state.lastUpdateCheck)}`; + const msgVersions = versions.map((version) => `=== Version ${version.hash} === + +Clients: ${version.clients.join(", ")}`).join("\n\n"); + const msgIdle = `=== Idle Task Queue === +Last update tick: ${this.since(idle.lastTrigger)} +Last update run: ${this.since(idle.lastRun)} +Task queue: +${idle.queue.map((v) => " * " + v).join("\n")} + +Debug log: +${this.formatDebugLog(this.debugLogB)} +${this.formatDebugLog(this.debugLogA)} +`; + return this.adapter.newResponse(`${msgState} + +${msgVersions} + +${msgIdle}`, { headers: this.adapter.newHeaders({ "Content-Type": "text/plain" }) }); + } + since(time) { + if (time === null) { + return "never"; + } + let age = this.adapter.time - time; + const days = Math.floor(age / 864e5); + age = age % 864e5; + const hours = Math.floor(age / 36e5); + age = age % 36e5; + const minutes = Math.floor(age / 6e4); + age = age % 6e4; + const seconds = Math.floor(age / 1e3); + const millis = age % 1e3; + return (days > 0 ? `${days}d` : "") + (hours > 0 ? `${hours}h` : "") + (minutes > 0 ? `${minutes}m` : "") + (seconds > 0 ? `${seconds}s` : "") + (millis > 0 ? `${millis}u` : ""); + } + log(value, context = "") { + if (this.debugLogA.length === DEBUG_LOG_BUFFER_SIZE) { + this.debugLogB = this.debugLogA; + this.debugLogA = []; + } + if (typeof value !== "string") { + value = this.errorToString(value); + } + this.debugLogA.push({ value, time: this.adapter.time, context }); + } + errorToString(err) { + return `${err.name}(${err.message}, ${err.stack})`; + } + formatDebugLog(log) { + return log.map((entry) => `[${this.since(entry.time)}] ${entry.value} ${entry.context}`).join("\n"); + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/idle.mjs + var IdleScheduler = class { + constructor(adapter2, delay, maxDelay, debug) { + this.adapter = adapter2; + this.delay = delay; + this.maxDelay = maxDelay; + this.debug = debug; + this.queue = []; + this.scheduled = null; + this.empty = Promise.resolve(); + this.emptyResolve = null; + this.lastTrigger = null; + this.lastRun = null; + this.oldestScheduledAt = null; + } + async trigger() { + var _a; + this.lastTrigger = this.adapter.time; + if (this.queue.length === 0) { + return; + } + if (this.scheduled !== null) { + this.scheduled.cancel = true; + } + const scheduled = { + cancel: false + }; + this.scheduled = scheduled; + const now = this.adapter.time; + const maxDelay = Math.max(0, ((_a = this.oldestScheduledAt) != null ? _a : now) + this.maxDelay - now); + const delay = Math.min(maxDelay, this.delay); + await this.adapter.timeout(delay); + if (scheduled.cancel) { + return; + } + this.scheduled = null; + await this.execute(); + } + async execute() { + this.lastRun = this.adapter.time; + while (this.queue.length > 0) { + const queue = this.queue; + this.queue = []; + await queue.reduce(async (previous, task) => { + await previous; + try { + await task.run(); + } catch (err) { + this.debug.log(err, `while running idle task ${task.desc}`); + } + }, Promise.resolve()); + } + if (this.emptyResolve !== null) { + this.emptyResolve(); + this.emptyResolve = null; + } + this.empty = Promise.resolve(); + this.oldestScheduledAt = null; + } + schedule(desc, run) { + this.queue.push({ desc, run }); + if (this.emptyResolve === null) { + this.empty = new Promise((resolve) => { + this.emptyResolve = resolve; + }); + } + if (this.oldestScheduledAt === null) { + this.oldestScheduledAt = this.adapter.time; + } + } + get size() { + return this.queue.length; + } + get taskDescriptions() { + return this.queue.map((task) => task.desc); + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/manifest.mjs + function hashManifest(manifest) { + return sha1(JSON.stringify(manifest)); + } + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/msg.mjs + function isMsgCheckForUpdates(msg) { + return msg.action === "CHECK_FOR_UPDATES"; + } + function isMsgActivateUpdate(msg) { + return msg.action === "ACTIVATE_UPDATE"; + } + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/src/driver.mjs + var IDLE_DELAY = 5e3; + var MAX_IDLE_DELAY = 3e4; + var SUPPORTED_CONFIG_VERSION = 1; + var NOTIFICATION_OPTION_NAMES = [ + "actions", + "badge", + "body", + "data", + "dir", + "icon", + "image", + "lang", + "renotify", + "requireInteraction", + "silent", + "tag", + "timestamp", + "title", + "vibrate" + ]; + var DriverReadyState; + (function(DriverReadyState2) { + DriverReadyState2[DriverReadyState2["NORMAL"] = 0] = "NORMAL"; + DriverReadyState2[DriverReadyState2["EXISTING_CLIENTS_ONLY"] = 1] = "EXISTING_CLIENTS_ONLY"; + DriverReadyState2[DriverReadyState2["SAFE_MODE"] = 2] = "SAFE_MODE"; + })(DriverReadyState || (DriverReadyState = {})); + var Driver = class { + constructor(scope2, adapter2, db) { + this.scope = scope2; + this.adapter = adapter2; + this.db = db; + this.state = DriverReadyState.NORMAL; + this.stateMessage = "(nominal)"; + this.initialized = null; + this.clientVersionMap = /* @__PURE__ */ new Map(); + this.versions = /* @__PURE__ */ new Map(); + this.latestHash = null; + this.lastUpdateCheck = null; + this.scheduledNavUpdateCheck = false; + this.loggedInvalidOnlyIfCachedRequest = false; + this.controlTable = this.db.open("control"); + this.ngswStatePath = this.adapter.parseUrl("ngsw/state", this.scope.registration.scope).path; + this.scope.addEventListener("install", (event) => { + event.waitUntil(this.scope.skipWaiting()); + }); + this.scope.addEventListener("activate", (event) => { + event.waitUntil((async () => { + await this.scope.clients.claim(); + this.idle.schedule("activate: cleanup-old-sw-caches", async () => { + try { + await this.cleanupOldSwCaches(); + } catch (err) { + this.debugger.log(err, "cleanupOldSwCaches @ activate: cleanup-old-sw-caches"); + } + }); + })()); + if (this.scope.registration.active !== null) { + this.scope.registration.active.postMessage({ action: "INITIALIZE" }); + } + }); + this.scope.addEventListener("fetch", (event) => this.onFetch(event)); + this.scope.addEventListener("message", (event) => this.onMessage(event)); + this.scope.addEventListener("push", (event) => this.onPush(event)); + this.scope.addEventListener("notificationclick", (event) => this.onClick(event)); + this.debugger = new DebugHandler(this, this.adapter); + this.idle = new IdleScheduler(this.adapter, IDLE_DELAY, MAX_IDLE_DELAY, this.debugger); + } + onFetch(event) { + const req = event.request; + const scopeUrl = this.scope.registration.scope; + const requestUrlObj = this.adapter.parseUrl(req.url, scopeUrl); + if (req.headers.has("ngsw-bypass") || /[?&]ngsw-bypass(?:[=&]|$)/i.test(requestUrlObj.search)) { + return; + } + if (requestUrlObj.path === this.ngswStatePath) { + event.respondWith(this.debugger.handleFetch(req)); + return; + } + if (this.state === DriverReadyState.SAFE_MODE) { + event.waitUntil(this.idle.trigger()); + return; + } + if (requestUrlObj.origin.startsWith("http:") && scopeUrl.startsWith("https:")) { + this.debugger.log(`Ignoring passive mixed content request: Driver.fetch(${req.url})`); + return; + } + if (req.cache === "only-if-cached" && req.mode !== "same-origin") { + if (!this.loggedInvalidOnlyIfCachedRequest) { + this.loggedInvalidOnlyIfCachedRequest = true; + this.debugger.log(`Ignoring invalid request: 'only-if-cached' can be set only with 'same-origin' mode`, `Driver.fetch(${req.url}, cache: ${req.cache}, mode: ${req.mode})`); + } + return; + } + event.respondWith(this.handleFetch(event)); + } + onMessage(event) { + if (this.state === DriverReadyState.SAFE_MODE) { + return; + } + const data = event.data; + if (!data || !data.action) { + return; + } + event.waitUntil((async () => { + if (data.action === "INITIALIZE") { + return this.ensureInitialized(event); + } + if (!this.adapter.isClient(event.source)) { + return; + } + await this.ensureInitialized(event); + await this.handleMessage(data, event.source); + })()); + } + onPush(msg) { + if (!msg.data) { + return; + } + msg.waitUntil(this.handlePush(msg.data.json())); + } + onClick(event) { + event.waitUntil(this.handleClick(event.notification, event.action)); + } + async ensureInitialized(event) { + if (this.initialized !== null) { + return this.initialized; + } + try { + this.initialized = this.initialize(); + await this.initialized; + } catch (error) { + this.state = DriverReadyState.SAFE_MODE; + this.stateMessage = `Initialization failed due to error: ${errorToString(error)}`; + throw error; + } finally { + event.waitUntil(this.idle.trigger()); + } + } + async handleMessage(msg, from) { + if (isMsgCheckForUpdates(msg)) { + const action = this.checkForUpdate(); + await this.completeOperation(from, action, msg.nonce); + } else if (isMsgActivateUpdate(msg)) { + const action = this.updateClient(from); + await this.completeOperation(from, action, msg.nonce); + } + } + async handlePush(data) { + await this.broadcast({ + type: "PUSH", + data + }); + if (!data.notification || !data.notification.title) { + return; + } + const desc = data.notification; + let options = {}; + NOTIFICATION_OPTION_NAMES.filter((name) => desc.hasOwnProperty(name)).forEach((name) => options[name] = desc[name]); + await this.scope.registration.showNotification(desc["title"], options); + } + async handleClick(notification, action) { + var _a, _b, _c; + notification.close(); + const options = {}; + NOTIFICATION_OPTION_NAMES.filter((name) => name in notification).forEach((name) => options[name] = notification[name]); + const notificationAction = action === "" || action === void 0 ? "default" : action; + const onActionClick = (_b = (_a = notification == null ? void 0 : notification.data) == null ? void 0 : _a.onActionClick) == null ? void 0 : _b[notificationAction]; + const urlToOpen = new URL((_c = onActionClick == null ? void 0 : onActionClick.url) != null ? _c : "", this.scope.registration.scope).href; + switch (onActionClick == null ? void 0 : onActionClick.operation) { + case "openWindow": + await this.scope.clients.openWindow(urlToOpen); + break; + case "focusLastFocusedOrOpen": { + let matchingClient = await this.getLastFocusedMatchingClient(this.scope); + if (matchingClient) { + await (matchingClient == null ? void 0 : matchingClient.focus()); + } else { + await this.scope.clients.openWindow(urlToOpen); + } + break; + } + case "navigateLastFocusedOrOpen": { + let matchingClient = await this.getLastFocusedMatchingClient(this.scope); + if (matchingClient) { + matchingClient = await matchingClient.navigate(urlToOpen); + await (matchingClient == null ? void 0 : matchingClient.focus()); + } else { + await this.scope.clients.openWindow(urlToOpen); + } + break; + } + case "sendRequest": { + await this.scope.fetch(urlToOpen); + break; + } + default: + break; + } + await this.broadcast({ + type: "NOTIFICATION_CLICK", + data: { action, notification: options } + }); + } + async getLastFocusedMatchingClient(scope2) { + const windowClients = await scope2.clients.matchAll({ type: "window" }); + return windowClients[0]; + } + async completeOperation(client, promise, nonce) { + const response = { type: "OPERATION_COMPLETED", nonce }; + try { + client.postMessage(__spreadProps(__spreadValues({}, response), { + result: await promise + })); + } catch (e) { + client.postMessage(__spreadProps(__spreadValues({}, response), { + error: e.toString() + })); + } + } + async updateClient(client) { + const existing = this.clientVersionMap.get(client.id); + if (existing === this.latestHash) { + return false; + } + let previous = void 0; + if (existing !== void 0) { + const existingVersion = this.versions.get(existing); + previous = this.mergeHashWithAppData(existingVersion.manifest, existing); + } + this.clientVersionMap.set(client.id, this.latestHash); + await this.sync(); + const current = this.versions.get(this.latestHash); + return true; + } + async handleFetch(event) { + try { + await this.ensureInitialized(event); + } catch (e) { + return this.safeFetch(event.request); + } + if (event.request.mode === "navigate" && !this.scheduledNavUpdateCheck) { + this.scheduledNavUpdateCheck = true; + this.idle.schedule("check-updates-on-navigation", async () => { + this.scheduledNavUpdateCheck = false; + await this.checkForUpdate(); + }); + } + const appVersion = await this.assignVersion(event); + let res = null; + try { + if (appVersion !== null) { + try { + res = await appVersion.handleFetch(event.request, event); + } catch (err) { + if (err.isUnrecoverableState) { + await this.notifyClientsAboutUnrecoverableState(appVersion, err.message); + } + if (err.isCritical) { + this.debugger.log(err, `Driver.handleFetch(version: ${appVersion.manifestHash})`); + await this.versionFailed(appVersion, err); + return this.safeFetch(event.request); + } + throw err; + } + } + if (res === null) { + return this.safeFetch(event.request); + } + return res; + } finally { + event.waitUntil(this.idle.trigger()); + } + } + async initialize() { + const table = await this.controlTable; + let manifests, assignments, latest; + try { + [manifests, assignments, latest] = await Promise.all([ + table.read("manifests"), + table.read("assignments"), + table.read("latest") + ]); + if (!this.versions.has(latest.latest) && !manifests.hasOwnProperty(latest.latest)) { + this.debugger.log(`Missing manifest for latest version hash ${latest.latest}`, "initialize: read from DB"); + throw new Error(`Missing manifest for latest hash ${latest.latest}`); + } + this.idle.schedule("init post-load (update)", async () => { + await this.checkForUpdate(); + }); + } catch (_) { + const manifest = await this.fetchLatestManifest(); + const hash = hashManifest(manifest); + manifests = { [hash]: manifest }; + assignments = {}; + latest = { latest: hash }; + await Promise.all([ + table.write("manifests", manifests), + table.write("assignments", assignments), + table.write("latest", latest) + ]); + } + this.idle.schedule("init post-load (cleanup)", async () => { + await this.cleanupCaches(); + }); + Object.keys(manifests).forEach((hash) => { + const manifest = manifests[hash]; + if (!this.versions.has(hash)) { + this.versions.set(hash, new AppVersion(this.scope, this.adapter, this.db, this.idle, this.debugger, manifest, hash)); + } + }); + Object.keys(assignments).forEach((clientId) => { + const hash = assignments[clientId]; + if (this.versions.has(hash)) { + this.clientVersionMap.set(clientId, hash); + } else { + this.clientVersionMap.set(clientId, latest.latest); + this.debugger.log(`Unknown version ${hash} mapped for client ${clientId}, using latest instead`, `initialize: map assignments`); + } + }); + this.latestHash = latest.latest; + if (!this.versions.has(latest.latest)) { + throw new Error(`Invariant violated (initialize): latest hash ${latest.latest} has no known manifest`); + } + await Promise.all(Object.keys(manifests).map(async (hash) => { + try { + await this.scheduleInitialization(this.versions.get(hash)); + } catch (err) { + this.debugger.log(err, `initialize: schedule init of ${hash}`); + } + })); + } + lookupVersionByHash(hash, debugName = "lookupVersionByHash") { + if (!this.versions.has(hash)) { + throw new Error(`Invariant violated (${debugName}): want AppVersion for ${hash} but not loaded`); + } + return this.versions.get(hash); + } + async assignVersion(event) { + const clientId = event.resultingClientId || event.clientId; + if (clientId) { + if (this.clientVersionMap.has(clientId)) { + const hash = this.clientVersionMap.get(clientId); + let appVersion = this.lookupVersionByHash(hash, "assignVersion"); + if (this.state === DriverReadyState.NORMAL && hash !== this.latestHash && appVersion.isNavigationRequest(event.request)) { + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + const client = await this.scope.clients.get(clientId); + if (client) { + await this.updateClient(client); + } + appVersion = this.lookupVersionByHash(this.latestHash, "assignVersion"); + } + return appVersion; + } else { + if (this.state !== DriverReadyState.NORMAL) { + return null; + } + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + this.clientVersionMap.set(clientId, this.latestHash); + await this.sync(); + return this.lookupVersionByHash(this.latestHash, "assignVersion"); + } + } else { + if (this.state !== DriverReadyState.NORMAL) { + return null; + } + if (this.latestHash === null) { + throw new Error(`Invariant violated (assignVersion): latestHash was null`); + } + return this.lookupVersionByHash(this.latestHash, "assignVersion"); + } + } + async fetchLatestManifest(ignoreOfflineError = false) { + const res = await this.safeFetch(this.adapter.newRequest("ngsw.json?ngsw-cache-bust=" + Math.random())); + if (!res.ok) { + if (res.status === 404) { + await this.deleteAllCaches(); + await this.scope.registration.unregister(); + } else if ((res.status === 503 || res.status === 504) && ignoreOfflineError) { + return null; + } + throw new Error(`Manifest fetch failed! (status: ${res.status})`); + } + this.lastUpdateCheck = this.adapter.time; + return res.json(); + } + async deleteAllCaches() { + const cacheNames = await this.adapter.caches.keys(); + await Promise.all(cacheNames.map((name) => this.adapter.caches.delete(name))); + } + async scheduleInitialization(appVersion) { + const initialize = async () => { + try { + await appVersion.initializeFully(); + } catch (err) { + this.debugger.log(err, `initializeFully for ${appVersion.manifestHash}`); + await this.versionFailed(appVersion, err); + } + }; + if (this.scope.registration.scope.indexOf("://localhost") > -1) { + return initialize(); + } + this.idle.schedule(`initialization(${appVersion.manifestHash})`, initialize); + } + async versionFailed(appVersion, err) { + const broken = Array.from(this.versions.entries()).find(([hash, version]) => version === appVersion); + if (broken === void 0) { + return; + } + const brokenHash = broken[0]; + if (this.latestHash === brokenHash) { + this.state = DriverReadyState.EXISTING_CLIENTS_ONLY; + this.stateMessage = `Degraded due to: ${errorToString(err)}`; + } + } + async setupUpdate(manifest, hash) { + try { + const newVersion = new AppVersion(this.scope, this.adapter, this.db, this.idle, this.debugger, manifest, hash); + if (manifest.configVersion !== SUPPORTED_CONFIG_VERSION) { + await this.deleteAllCaches(); + await this.scope.registration.unregister(); + throw new Error(`Invalid config version: expected ${SUPPORTED_CONFIG_VERSION}, got ${manifest.configVersion}.`); + } + await newVersion.initializeFully(this); + this.versions.set(hash, newVersion); + this.latestHash = hash; + if (this.state === DriverReadyState.EXISTING_CLIENTS_ONLY) { + this.state = DriverReadyState.NORMAL; + this.stateMessage = "(nominal)"; + } + await this.sync(); + await this.notifyClientsAboutVersionReady(manifest, hash); + } catch (e) { + await this.notifyClientsAboutVersionInstallationFailed(manifest, hash, e); + throw e; + } + } + async checkForUpdate() { + let hash = "(unknown)"; + try { + const manifest = await this.fetchLatestManifest(true); + if (manifest === null) { + this.debugger.log("Check for update aborted. (Client or server offline.)"); + return false; + } + hash = hashManifest(manifest); + if (this.versions.has(hash)) { + await this.notifyClientsAboutNoNewVersionDetected(manifest, hash); + return false; + } + await this.notifyClientsAboutVersionDetected(manifest, hash); + await this.setupUpdate(manifest, hash); + return true; + } catch (err) { + this.debugger.log(err, `Error occurred while updating to manifest ${hash}`); + this.state = DriverReadyState.EXISTING_CLIENTS_ONLY; + this.stateMessage = `Degraded due to failed initialization: ${errorToString(err)}`; + return false; + } + } + async sync() { + const table = await this.controlTable; + const manifests = {}; + this.versions.forEach((version, hash) => { + manifests[hash] = version.manifest; + }); + const assignments = {}; + this.clientVersionMap.forEach((hash, clientId) => { + assignments[clientId] = hash; + }); + const latest = { + latest: this.latestHash + }; + await Promise.all([ + table.write("manifests", manifests), + table.write("assignments", assignments), + table.write("latest", latest) + ]); + } + async cleanupCaches() { + try { + const activeClients = new Set((await this.scope.clients.matchAll()).map((client) => client.id)); + const knownClients = Array.from(this.clientVersionMap.keys()); + const obsoleteClients = knownClients.filter((id) => !activeClients.has(id)); + obsoleteClients.forEach((id) => this.clientVersionMap.delete(id)); + const usedVersions = new Set(this.clientVersionMap.values()); + const obsoleteVersions = Array.from(this.versions.keys()).filter((version) => !usedVersions.has(version) && version !== this.latestHash); + obsoleteVersions.forEach((version) => this.versions.delete(version)); + await this.sync(); + const allCaches = await this.adapter.caches.keys(); + const usedCaches = new Set(await this.getCacheNames()); + const cachesToDelete = allCaches.filter((name) => !usedCaches.has(name)); + await Promise.all(cachesToDelete.map((name) => this.adapter.caches.delete(name))); + } catch (err) { + this.debugger.log(err, "cleanupCaches"); + } + } + async cleanupOldSwCaches() { + const caches = this.adapter.caches.original; + const cacheNames = await caches.keys(); + const oldSwCacheNames = cacheNames.filter((name) => /^ngsw:(?!\/)/.test(name)); + await Promise.all(oldSwCacheNames.map((name) => caches.delete(name))); + } + lookupResourceWithHash(url, hash) { + return Array.from(this.versions.values()).reduce(async (prev, version) => { + if (await prev !== null) { + return prev; + } + return version.lookupResourceWithHash(url, hash); + }, Promise.resolve(null)); + } + async lookupResourceWithoutHash(url) { + await this.initialized; + const version = this.versions.get(this.latestHash); + return version ? version.lookupResourceWithoutHash(url) : null; + } + async previouslyCachedResources() { + await this.initialized; + const version = this.versions.get(this.latestHash); + return version ? version.previouslyCachedResources() : []; + } + async recentCacheStatus(url) { + const version = this.versions.get(this.latestHash); + return version ? version.recentCacheStatus(url) : UpdateCacheStatus.NOT_CACHED; + } + mergeHashWithAppData(manifest, hash) { + return { + hash, + appData: manifest.appData + }; + } + async notifyClientsAboutUnrecoverableState(appVersion, reason) { + const broken = Array.from(this.versions.entries()).find(([hash, version]) => version === appVersion); + if (broken === void 0) { + return; + } + const brokenHash = broken[0]; + const affectedClients = Array.from(this.clientVersionMap.entries()).filter(([clientId, hash]) => hash === brokenHash).map(([clientId]) => clientId); + await Promise.all(affectedClients.map(async (clientId) => { + const client = await this.scope.clients.get(clientId); + if (client) { + client.postMessage({ type: "UNRECOVERABLE_STATE", reason }); + } + })); + } + async notifyClientsAboutVersionInstallationFailed(manifest, hash, error) { + await this.initialized; + const clients = await this.scope.clients.matchAll(); + await Promise.all(clients.map(async (client) => { + client.postMessage({ + type: "VERSION_INSTALLATION_FAILED", + version: this.mergeHashWithAppData(manifest, hash), + error: errorToString(error) + }); + })); + } + async notifyClientsAboutNoNewVersionDetected(manifest, hash) { + await this.initialized; + const clients = await this.scope.clients.matchAll(); + await Promise.all(clients.map(async (client) => { + client.postMessage({ type: "NO_NEW_VERSION_DETECTED", version: this.mergeHashWithAppData(manifest, hash) }); + })); + } + async notifyClientsAboutVersionDetected(manifest, hash) { + await this.initialized; + const clients = await this.scope.clients.matchAll(); + await Promise.all(clients.map(async (client) => { + const version = this.clientVersionMap.get(client.id); + if (version === void 0) { + return; + } + client.postMessage({ type: "VERSION_DETECTED", version: this.mergeHashWithAppData(manifest, hash) }); + })); + } + async notifyClientsAboutVersionReady(manifest, hash) { + await this.initialized; + const clients = await this.scope.clients.matchAll(); + await Promise.all(clients.map(async (client) => { + const version = this.clientVersionMap.get(client.id); + if (version === void 0) { + return; + } + if (version === this.latestHash) { + return; + } + const current = this.versions.get(version); + const notice = { + type: "VERSION_READY", + currentVersion: this.mergeHashWithAppData(current.manifest, version), + latestVersion: this.mergeHashWithAppData(manifest, hash) + }; + client.postMessage(notice); + })); + } + async broadcast(msg) { + const clients = await this.scope.clients.matchAll(); + clients.forEach((client) => { + client.postMessage(msg); + }); + } + async debugState() { + return { + state: DriverReadyState[this.state], + why: this.stateMessage, + latestHash: this.latestHash, + lastUpdateCheck: this.lastUpdateCheck + }; + } + async debugVersions() { + return Array.from(this.versions.keys()).map((hash) => { + const version = this.versions.get(hash); + const clients = Array.from(this.clientVersionMap.entries()).filter(([clientId, version2]) => version2 === hash).map(([clientId, version2]) => clientId); + return { + hash, + manifest: version.manifest, + clients, + status: "" + }; + }); + } + async debugIdleState() { + return { + queue: this.idle.taskDescriptions, + lastTrigger: this.idle.lastTrigger, + lastRun: this.idle.lastRun + }; + } + async safeFetch(req) { + try { + return await this.scope.fetch(req); + } catch (err) { + this.debugger.log(err, `Driver.fetch(${req.url})`); + return this.adapter.newResponse(null, { + status: 504, + statusText: "Gateway Timeout" + }); + } + } + async getCacheNames() { + const controlTable = await this.controlTable; + const appVersions = Array.from(this.versions.values()); + const appVersionCacheNames = await Promise.all(appVersions.map((version) => version.getCacheNames())); + return [controlTable.cacheName].concat(...appVersionCacheNames); + } + }; + + // bazel-out/darwin_arm64-fastbuild-ST-2e5f3376adb5/bin/packages/service-worker/worker/main.mjs + var scope = self; + var adapter = new Adapter(scope.registration.scope, self.caches); + new Driver(scope, adapter, new CacheDatabase(adapter)); +})(); +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ diff --git a/internal/middleware/front/dist/front/browser/ngsw.json b/internal/middleware/front/dist/front/browser/ngsw.json new file mode 100644 index 0000000..c08567e --- /dev/null +++ b/internal/middleware/front/dist/front/browser/ngsw.json @@ -0,0 +1,79 @@ +{ + "configVersion": 1, + "timestamp": 1710749227562, + "index": "/index.html", + "assetGroups": [ + { + "name": "app", + "installMode": "prefetch", + "updateMode": "prefetch", + "cacheQueryOptions": { + "ignoreVary": true + }, + "urls": [ + "/favicon.ico", + "/index.html", + "/main-K7KCRENT.js", + "/manifest.webmanifest", + "/polyfills-TMVK3KFA.js", + "/styles-3T3ZIQFC.css" + ], + "patterns": [] + }, + { + "name": "assets", + "installMode": "lazy", + "updateMode": "prefetch", + "cacheQueryOptions": { + "ignoreVary": true + }, + "urls": [ + "/assets/icons/icon-128x128.png", + "/assets/icons/icon-144x144.png", + "/assets/icons/icon-152x152.png", + "/assets/icons/icon-192x192.png", + "/assets/icons/icon-384x384.png", + "/assets/icons/icon-512x512.png", + "/assets/icons/icon-72x72.png", + "/assets/icons/icon-96x96.png" + ], + "patterns": [] + } + ], + "dataGroups": [], + "hashTable": { + "/assets/icons/icon-128x128.png": "f912963bdc6d5a38d8f1dd0afbaab2ce8d657acb", + "/assets/icons/icon-144x144.png": "b155fd5f2fd5d2ea7760721063003c4cd95fd783", + "/assets/icons/icon-152x152.png": "eae6e0f0c8afb8aaae339e2a569b43e9238e5e6c", + "/assets/icons/icon-192x192.png": "15c4180454633880d98674aa7394656196c91584", + "/assets/icons/icon-384x384.png": "94a915751ef6c9282df9aea405ad679230631814", + "/assets/icons/icon-512x512.png": "1de182f76f7329dfa8f9fcdd1fdcdd695bea6a99", + "/assets/icons/icon-72x72.png": "aa88a6096bd973be7f6d7a5489bfa6bc2463f8c4", + "/assets/icons/icon-96x96.png": "7fb8f59c30ce2ff12c700321a0b39e14b3dc8f95", + "/favicon.ico": "9c39f434fe1261f68c5e3eefdf734630d99c5670", + "/index.html": "3b8d9a492329d3a6f13280951666e6c073c32071", + "/main-K7KCRENT.js": "b2c1bced1f984d3a635681ba3b28da91ac1b4dc4", + "/manifest.webmanifest": "4a17033d41b19f97cc660c6a603fdc95226d1704", + "/polyfills-TMVK3KFA.js": "fda1c82c5c620f1fa442f687b3df45a037f6fcc9", + "/styles-3T3ZIQFC.css": "e1406fd244b1e7e7ab47d07124fffd55ccc16178" + }, + "navigationUrls": [ + { + "positive": true, + "regex": "^\\/.*$" + }, + { + "positive": false, + "regex": "^\\/(?:.+\\/)?[^/]*\\.[^/]*$" + }, + { + "positive": false, + "regex": "^\\/(?:.+\\/)?[^/]*__[^/]*$" + }, + { + "positive": false, + "regex": "^\\/(?:.+\\/)?[^/]*__[^/]*\\/.*$" + } + ], + "navigationRequestStrategy": "performance" +} \ No newline at end of file diff --git a/internal/middleware/front/dist/front/browser/polyfills-TMVK3KFA.js b/internal/middleware/front/dist/front/browser/polyfills-TMVK3KFA.js new file mode 100644 index 0000000..57d4c33 --- /dev/null +++ b/internal/middleware/front/dist/front/browser/polyfills-TMVK3KFA.js @@ -0,0 +1,2 @@ +(function(e){let n=e.performance;function c(L){n&&n.mark&&n.mark(L)}function r(L,t){n&&n.measure&&n.measure(L,t)}c("Zone");let a=e.__Zone_symbol_prefix||"__zone_symbol__";function l(L){return a+L}let y=e[l("forceDuplicateZoneCheck")]===!0;if(e.Zone){if(y||typeof e.Zone.__symbol__!="function")throw new Error("Zone already loaded.");return e.Zone}let oe=class oe{static assertZonePatched(){if(e.Promise!==re.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let t=oe.current;for(;t.parent;)t=t.parent;return t}static get current(){return U.zone}static get currentTask(){return te}static __load_patch(t,s,o=!1){if(re.hasOwnProperty(t)){if(!o&&y)throw Error("Already loaded patch: "+t)}else if(!e["__Zone_disable_"+t]){let v="Zone:"+t;c(v),re[t]=s(e,oe,z),r(v,v)}}get parent(){return this._parent}get name(){return this._name}constructor(t,s){this._parent=t,this._name=s?s.name||"unnamed":"",this._properties=s&&s.properties||{},this._zoneDelegate=new k(this,this._parent&&this._parent._zoneDelegate,s)}get(t){let s=this.getZoneWith(t);if(s)return s._properties[t]}getZoneWith(t){let s=this;for(;s;){if(s._properties.hasOwnProperty(t))return s;s=s._parent}return null}fork(t){if(!t)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,t)}wrap(t,s){if(typeof t!="function")throw new Error("Expecting function got: "+t);let o=this._zoneDelegate.intercept(this,t,s),v=this;return function(){return v.runGuarded(o,this,arguments,s)}}run(t,s,o,v){U={parent:U,zone:this};try{return this._zoneDelegate.invoke(this,t,s,o,v)}finally{U=U.parent}}runGuarded(t,s=null,o,v){U={parent:U,zone:this};try{try{return this._zoneDelegate.invoke(this,t,s,o,v)}catch(F){if(this._zoneDelegate.handleError(this,F))throw F}}finally{U=U.parent}}runTask(t,s,o){if(t.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(t.zone||$).name+"; Execution: "+this.name+")");if(t.state===H&&(t.type===K||t.type===P))return;let v=t.state!=T;v&&t._transitionTo(T,M),t.runCount++;let F=te;te=t,U={parent:U,zone:this};try{t.type==P&&t.data&&!t.data.isPeriodic&&(t.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,t,s,o)}catch(u){if(this._zoneDelegate.handleError(this,u))throw u}}finally{t.state!==H&&t.state!==d&&(t.type==K||t.data&&t.data.isPeriodic?v&&t._transitionTo(M,T):(t.runCount=0,this._updateTaskCount(t,-1),v&&t._transitionTo(H,T,H))),U=U.parent,te=F}}scheduleTask(t){if(t.zone&&t.zone!==this){let o=this;for(;o;){if(o===t.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${t.zone.name}`);o=o.parent}}t._transitionTo(X,H);let s=[];t._zoneDelegates=s,t._zone=this;try{t=this._zoneDelegate.scheduleTask(this,t)}catch(o){throw t._transitionTo(d,X,H),this._zoneDelegate.handleError(this,o),o}return t._zoneDelegates===s&&this._updateTaskCount(t,1),t.state==X&&t._transitionTo(M,X),t}scheduleMicroTask(t,s,o,v){return this.scheduleTask(new m(N,t,s,o,v,void 0))}scheduleMacroTask(t,s,o,v,F){return this.scheduleTask(new m(P,t,s,o,v,F))}scheduleEventTask(t,s,o,v,F){return this.scheduleTask(new m(K,t,s,o,v,F))}cancelTask(t){if(t.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(t.zone||$).name+"; Execution: "+this.name+")");if(!(t.state!==M&&t.state!==T)){t._transitionTo(x,M,T);try{this._zoneDelegate.cancelTask(this,t)}catch(s){throw t._transitionTo(d,x),this._zoneDelegate.handleError(this,s),s}return this._updateTaskCount(t,-1),t._transitionTo(H,x),t.runCount=0,t}}_updateTaskCount(t,s){let o=t._zoneDelegates;s==-1&&(t._zoneDelegates=null);for(let v=0;vL.hasTask(s,o),onScheduleTask:(L,t,s,o)=>L.scheduleTask(s,o),onInvokeTask:(L,t,s,o,v,F)=>L.invokeTask(s,o,v,F),onCancelTask:(L,t,s,o)=>L.cancelTask(s,o)};class k{constructor(t,s,o){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=t,this._parentDelegate=s,this._forkZS=o&&(o&&o.onFork?o:s._forkZS),this._forkDlgt=o&&(o.onFork?s:s._forkDlgt),this._forkCurrZone=o&&(o.onFork?this.zone:s._forkCurrZone),this._interceptZS=o&&(o.onIntercept?o:s._interceptZS),this._interceptDlgt=o&&(o.onIntercept?s:s._interceptDlgt),this._interceptCurrZone=o&&(o.onIntercept?this.zone:s._interceptCurrZone),this._invokeZS=o&&(o.onInvoke?o:s._invokeZS),this._invokeDlgt=o&&(o.onInvoke?s:s._invokeDlgt),this._invokeCurrZone=o&&(o.onInvoke?this.zone:s._invokeCurrZone),this._handleErrorZS=o&&(o.onHandleError?o:s._handleErrorZS),this._handleErrorDlgt=o&&(o.onHandleError?s:s._handleErrorDlgt),this._handleErrorCurrZone=o&&(o.onHandleError?this.zone:s._handleErrorCurrZone),this._scheduleTaskZS=o&&(o.onScheduleTask?o:s._scheduleTaskZS),this._scheduleTaskDlgt=o&&(o.onScheduleTask?s:s._scheduleTaskDlgt),this._scheduleTaskCurrZone=o&&(o.onScheduleTask?this.zone:s._scheduleTaskCurrZone),this._invokeTaskZS=o&&(o.onInvokeTask?o:s._invokeTaskZS),this._invokeTaskDlgt=o&&(o.onInvokeTask?s:s._invokeTaskDlgt),this._invokeTaskCurrZone=o&&(o.onInvokeTask?this.zone:s._invokeTaskCurrZone),this._cancelTaskZS=o&&(o.onCancelTask?o:s._cancelTaskZS),this._cancelTaskDlgt=o&&(o.onCancelTask?s:s._cancelTaskDlgt),this._cancelTaskCurrZone=o&&(o.onCancelTask?this.zone:s._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let v=o&&o.onHasTask,F=s&&s._hasTaskZS;(v||F)&&(this._hasTaskZS=v?o:b,this._hasTaskDlgt=s,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=t,o.onScheduleTask||(this._scheduleTaskZS=b,this._scheduleTaskDlgt=s,this._scheduleTaskCurrZone=this.zone),o.onInvokeTask||(this._invokeTaskZS=b,this._invokeTaskDlgt=s,this._invokeTaskCurrZone=this.zone),o.onCancelTask||(this._cancelTaskZS=b,this._cancelTaskDlgt=s,this._cancelTaskCurrZone=this.zone))}fork(t,s){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,t,s):new _(t,s)}intercept(t,s,o){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,t,s,o):s}invoke(t,s,o,v,F){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,t,s,o,v,F):s.apply(o,v)}handleError(t,s){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,t,s):!0}scheduleTask(t,s){let o=s;if(this._scheduleTaskZS)this._hasTaskZS&&o._zoneDelegates.push(this._hasTaskDlgtOwner),o=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,t,s),o||(o=s);else if(s.scheduleFn)s.scheduleFn(s);else if(s.type==N)R(s);else throw new Error("Task is missing scheduleFn.");return o}invokeTask(t,s,o,v){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,t,s,o,v):s.callback.apply(o,v)}cancelTask(t,s){let o;if(this._cancelTaskZS)o=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,t,s);else{if(!s.cancelFn)throw Error("Task is not cancelable");o=s.cancelFn(s)}return o}hasTask(t,s){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,t,s)}catch(o){this.handleError(t,o)}}_updateTaskCount(t,s){let o=this._taskCounts,v=o[t],F=o[t]=v+s;if(F<0)throw new Error("More tasks executed then were scheduled.");if(v==0||F==0){let u={microTask:o.microTask>0,macroTask:o.macroTask>0,eventTask:o.eventTask>0,change:t};this.hasTask(this.zone,u)}}}class m{constructor(t,s,o,v,F,u){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=t,this.source=s,this.data=v,this.scheduleFn=F,this.cancelFn=u,!o)throw new Error("callback is not defined");this.callback=o;let f=this;t===K&&v&&v.useG?this.invoke=m.invokeTask:this.invoke=function(){return m.invokeTask.call(e,f,this,arguments)}}static invokeTask(t,s,o){t||(t=this),Q++;try{return t.runCount++,t.zone.runTask(t,s,o)}finally{Q==1&&E(),Q--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(H,X)}_transitionTo(t,s,o){if(this._state===s||this._state===o)this._state=t,t==H&&(this._zoneDelegates=null);else throw new Error(`${this.type} '${this.source}': can not transition to '${t}', expecting state '${s}'${o?" or '"+o+"'":""}, was '${this._state}'.`)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let I=l("setTimeout"),Z=l("Promise"),O=l("then"),B=[],A=!1,J;function q(L){if(J||e[Z]&&(J=e[Z].resolve(0)),J){let t=J[O];t||(t=J.then),t.call(J,L)}else e[I](L,0)}function R(L){Q===0&&B.length===0&&q(E),L&&B.push(L)}function E(){if(!A){for(A=!0;B.length;){let L=B;B=[];for(let t=0;tU,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:R,showUncaughtError:()=>!_[l("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:q},U={parent:null,zone:new _(null,null)},te=null,Q=0;function W(){}return r("Zone","Zone"),e.Zone=_})(globalThis);var me=Object.getOwnPropertyDescriptor,Ne=Object.defineProperty,Ie=Object.getPrototypeOf,it=Object.create,ct=Array.prototype.slice,Me="addEventListener",Le="removeEventListener",Se=Zone.__symbol__(Me),De=Zone.__symbol__(Le),ie="true",ce="false",pe=Zone.__symbol__("");function Ae(e,n){return Zone.current.wrap(e,n)}function je(e,n,c,r,a){return Zone.current.scheduleMacroTask(e,n,c,r,a)}var j=Zone.__symbol__,Pe=typeof window<"u",Te=Pe?window:void 0,Y=Pe&&Te||globalThis,at="removeAttribute";function He(e,n){for(let c=e.length-1;c>=0;c--)typeof e[c]=="function"&&(e[c]=Ae(e[c],n+"_"+c));return e}function lt(e,n){let c=e.constructor.name;for(let r=0;r{let b=function(){return _.apply(this,He(arguments,c+"."+a))};return ae(b,_),b})(l)}}}function Ye(e){return e?e.writable===!1?!1:!(typeof e.get=="function"&&typeof e.set>"u"):!0}var $e=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,we=!("nw"in Y)&&typeof Y.process<"u"&&{}.toString.call(Y.process)==="[object process]",xe=!we&&!$e&&!!(Pe&&Te.HTMLElement),Je=typeof Y.process<"u"&&{}.toString.call(Y.process)==="[object process]"&&!$e&&!!(Pe&&Te.HTMLElement),be={},We=function(e){if(e=e||Y.event,!e)return;let n=be[e.type];n||(n=be[e.type]=j("ON_PROPERTY"+e.type));let c=this||e.target||Y,r=c[n],a;if(xe&&c===Te&&e.type==="error"){let l=e;a=r&&r.call(this,l.message,l.filename,l.lineno,l.colno,l.error),a===!0&&e.preventDefault()}else a=r&&r.apply(this,arguments),a!=null&&!a&&e.preventDefault();return a};function qe(e,n,c){let r=me(e,n);if(!r&&c&&me(c,n)&&(r={enumerable:!0,configurable:!0}),!r||!r.configurable)return;let a=j("on"+n+"patched");if(e.hasOwnProperty(a)&&e[a])return;delete r.writable,delete r.value;let l=r.get,y=r.set,_=n.slice(2),b=be[_];b||(b=be[_]=j("ON_PROPERTY"+_)),r.set=function(k){let m=this;if(!m&&e===Y&&(m=Y),!m)return;typeof m[b]=="function"&&m.removeEventListener(_,We),y&&y.call(m,null),m[b]=k,typeof k=="function"&&m.addEventListener(_,We,!1)},r.get=function(){let k=this;if(!k&&e===Y&&(k=Y),!k)return null;let m=k[b];if(m)return m;if(l){let I=l.call(this);if(I)return r.set.call(this,I),typeof k[at]=="function"&&k.removeAttribute(n),I}return null},Ne(e,n,r),e[a]=!0}function Ke(e,n,c){if(n)for(let r=0;rfunction(y,_){let b=c(y,_);return b.cbIdx>=0&&typeof _[b.cbIdx]=="function"?je(b.name,_[b.cbIdx],b,a):l.apply(y,_)})}function ae(e,n){e[j("OriginalDelegate")]=n}var Xe=!1,Ze=!1;function ft(){try{let e=Te.navigator.userAgent;if(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1)return!0}catch{}return!1}function ht(){if(Xe)return Ze;Xe=!0;try{let e=Te.navigator.userAgent;(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1||e.indexOf("Edge/")!==-1)&&(Ze=!0)}catch{}return Ze}Zone.__load_patch("ZoneAwarePromise",(e,n,c)=>{let r=Object.getOwnPropertyDescriptor,a=Object.defineProperty;function l(u){if(u&&u.toString===Object.prototype.toString){let f=u.constructor&&u.constructor.name;return(f||"")+": "+JSON.stringify(u)}return u?u.toString():Object.prototype.toString.call(u)}let y=c.symbol,_=[],b=e[y("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")]!==!1,k=y("Promise"),m=y("then"),I="__creationTrace__";c.onUnhandledError=u=>{if(c.showUncaughtError()){let f=u&&u.rejection;f?console.error("Unhandled Promise rejection:",f instanceof Error?f.message:f,"; Zone:",u.zone.name,"; Task:",u.task&&u.task.source,"; Value:",f,f instanceof Error?f.stack:void 0):console.error(u)}},c.microtaskDrainDone=()=>{for(;_.length;){let u=_.shift();try{u.zone.runGuarded(()=>{throw u.throwOriginal?u.rejection:u})}catch(f){O(f)}}};let Z=y("unhandledPromiseRejectionHandler");function O(u){c.onUnhandledError(u);try{let f=n[Z];typeof f=="function"&&f.call(this,u)}catch{}}function B(u){return u&&u.then}function A(u){return u}function J(u){return t.reject(u)}let q=y("state"),R=y("value"),E=y("finally"),$=y("parentPromiseValue"),H=y("parentPromiseState"),X="Promise.then",M=null,T=!0,x=!1,d=0;function N(u,f){return i=>{try{z(u,f,i)}catch(h){z(u,!1,h)}}}let P=function(){let u=!1;return function(i){return function(){u||(u=!0,i.apply(null,arguments))}}},K="Promise resolved with itself",re=y("currentTaskTrace");function z(u,f,i){let h=P();if(u===i)throw new TypeError(K);if(u[q]===M){let g=null;try{(typeof i=="object"||typeof i=="function")&&(g=i&&i.then)}catch(w){return h(()=>{z(u,!1,w)})(),u}if(f!==x&&i instanceof t&&i.hasOwnProperty(q)&&i.hasOwnProperty(R)&&i[q]!==M)te(i),z(u,i[q],i[R]);else if(f!==x&&typeof g=="function")try{g.call(i,h(N(u,f)),h(N(u,!1)))}catch(w){h(()=>{z(u,!1,w)})()}else{u[q]=f;let w=u[R];if(u[R]=i,u[E]===E&&f===T&&(u[q]=u[H],u[R]=u[$]),f===x&&i instanceof Error){let p=n.currentTask&&n.currentTask.data&&n.currentTask.data[I];p&&a(i,re,{configurable:!0,enumerable:!1,writable:!0,value:p})}for(let p=0;p{try{let C=u[R],S=!!i&&E===i[E];S&&(i[$]=C,i[H]=w);let D=f.run(p,void 0,S&&p!==J&&p!==A?[]:[C]);z(i,!0,D)}catch(C){z(i,!1,C)}},i)}let W="function ZoneAwarePromise() { [native code] }",oe=function(){},L=e.AggregateError;class t{static toString(){return W}static resolve(f){return z(new this(null),T,f)}static reject(f){return z(new this(null),x,f)}static any(f){if(!f||typeof f[Symbol.iterator]!="function")return Promise.reject(new L([],"All promises were rejected"));let i=[],h=0;try{for(let p of f)h++,i.push(t.resolve(p))}catch{return Promise.reject(new L([],"All promises were rejected"))}if(h===0)return Promise.reject(new L([],"All promises were rejected"));let g=!1,w=[];return new t((p,C)=>{for(let S=0;S{g||(g=!0,p(D))},D=>{w.push(D),h--,h===0&&(g=!0,C(new L(w,"All promises were rejected")))})})}static race(f){let i,h,g=new this((C,S)=>{i=C,h=S});function w(C){i(C)}function p(C){h(C)}for(let C of f)B(C)||(C=this.resolve(C)),C.then(w,p);return g}static all(f){return t.allWithCallback(f)}static allSettled(f){return(this&&this.prototype instanceof t?this:t).allWithCallback(f,{thenCallback:h=>({status:"fulfilled",value:h}),errorCallback:h=>({status:"rejected",reason:h})})}static allWithCallback(f,i){let h,g,w=new this((D,G)=>{h=D,g=G}),p=2,C=0,S=[];for(let D of f){B(D)||(D=this.resolve(D));let G=C;try{D.then(V=>{S[G]=i?i.thenCallback(V):V,p--,p===0&&h(S)},V=>{i?(S[G]=i.errorCallback(V),p--,p===0&&h(S)):g(V)})}catch(V){g(V)}p++,C++}return p-=2,p===0&&h(S),w}constructor(f){let i=this;if(!(i instanceof t))throw new Error("Must be an instanceof Promise.");i[q]=M,i[R]=[];try{let h=P();f&&f(h(N(i,T)),h(N(i,x)))}catch(h){z(i,!1,h)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return t}then(f,i){let h=this.constructor?.[Symbol.species];(!h||typeof h!="function")&&(h=this.constructor||t);let g=new h(oe),w=n.current;return this[q]==M?this[R].push(w,g,f,i):Q(this,w,g,f,i),g}catch(f){return this.then(null,f)}finally(f){let i=this.constructor?.[Symbol.species];(!i||typeof i!="function")&&(i=t);let h=new i(oe);h[E]=E;let g=n.current;return this[q]==M?this[R].push(g,h,f,f):Q(this,g,h,f,f),h}}t.resolve=t.resolve,t.reject=t.reject,t.race=t.race,t.all=t.all;let s=e[k]=e.Promise;e.Promise=t;let o=y("thenPatched");function v(u){let f=u.prototype,i=r(f,"then");if(i&&(i.writable===!1||!i.configurable))return;let h=f.then;f[m]=h,u.prototype.then=function(g,w){return new t((C,S)=>{h.call(this,C,S)}).then(g,w)},u[o]=!0}c.patchThen=v;function F(u){return function(f,i){let h=u.apply(f,i);if(h instanceof t)return h;let g=h.constructor;return g[o]||v(g),h}}return s&&(v(s),le(e,"fetch",u=>F(u))),Promise[n.__symbol__("uncaughtPromiseErrors")]=_,t});Zone.__load_patch("toString",e=>{let n=Function.prototype.toString,c=j("OriginalDelegate"),r=j("Promise"),a=j("Error"),l=function(){if(typeof this=="function"){let k=this[c];if(k)return typeof k=="function"?n.call(k):Object.prototype.toString.call(k);if(this===Promise){let m=e[r];if(m)return n.call(m)}if(this===Error){let m=e[a];if(m)return n.call(m)}}return n.call(this)};l[c]=n,Function.prototype.toString=l;let y=Object.prototype.toString,_="[object Promise]";Object.prototype.toString=function(){return typeof Promise=="function"&&this instanceof Promise?_:y.call(this)}});var _e=!1;if(typeof window<"u")try{let e=Object.defineProperty({},"passive",{get:function(){_e=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{_e=!1}var dt={useG:!0},ee={},Qe={},et=new RegExp("^"+pe+"(\\w+)(true|false)$"),tt=j("propagationStopped");function nt(e,n){let c=(n?n(e):e)+ce,r=(n?n(e):e)+ie,a=pe+c,l=pe+r;ee[e]={},ee[e][ce]=a,ee[e][ie]=l}function _t(e,n,c,r){let a=r&&r.add||Me,l=r&&r.rm||Le,y=r&&r.listeners||"eventListeners",_=r&&r.rmAll||"removeAllListeners",b=j(a),k="."+a+":",m="prependListener",I="."+m+":",Z=function(R,E,$){if(R.isRemoved)return;let H=R.callback;typeof H=="object"&&H.handleEvent&&(R.callback=T=>H.handleEvent(T),R.originalDelegate=H);let X;try{R.invoke(R,E,[$])}catch(T){X=T}let M=R.options;if(M&&typeof M=="object"&&M.once){let T=R.originalDelegate?R.originalDelegate:R.callback;E[l].call(E,$.type,T,M)}return X};function O(R,E,$){if(E=E||e.event,!E)return;let H=R||E.target||e,X=H[ee[E.type][$?ie:ce]];if(X){let M=[];if(X.length===1){let T=Z(X[0],H,E);T&&M.push(T)}else{let T=X.slice();for(let x=0;x{throw x})}}}let B=function(R){return O(this,R,!1)},A=function(R){return O(this,R,!0)};function J(R,E){if(!R)return!1;let $=!0;E&&E.useG!==void 0&&($=E.useG);let H=E&&E.vh,X=!0;E&&E.chkDup!==void 0&&(X=E.chkDup);let M=!1;E&&E.rt!==void 0&&(M=E.rt);let T=R;for(;T&&!T.hasOwnProperty(a);)T=Ie(T);if(!T&&R[a]&&(T=R),!T||T[b])return!1;let x=E&&E.eventNameToString,d={},N=T[b]=T[a],P=T[j(l)]=T[l],K=T[j(y)]=T[y],re=T[j(_)]=T[_],z;E&&E.prepend&&(z=T[j(E.prepend)]=T[E.prepend]);function U(i,h){return!_e&&typeof i=="object"&&i?!!i.capture:!_e||!h?i:typeof i=="boolean"?{capture:i,passive:!0}:i?typeof i=="object"&&i.passive!==!1?{...i,passive:!0}:i:{passive:!0}}let te=function(i){if(!d.isExisting)return N.call(d.target,d.eventName,d.capture?A:B,d.options)},Q=function(i){if(!i.isRemoved){let h=ee[i.eventName],g;h&&(g=h[i.capture?ie:ce]);let w=g&&i.target[g];if(w){for(let p=0;pfunction(a,l){a[tt]=!0,r&&r.apply(a,l)})}function Tt(e,n,c,r,a){let l=Zone.__symbol__(r);if(n[l])return;let y=n[l]=n[r];n[r]=function(_,b,k){return b&&b.prototype&&a.forEach(function(m){let I=`${c}.${r}::`+m,Z=b.prototype;try{if(Z.hasOwnProperty(m)){let O=e.ObjectGetOwnPropertyDescriptor(Z,m);O&&O.value?(O.value=e.wrapWithCurrentZone(O.value,I),e._redefineProperty(b.prototype,m,O)):Z[m]&&(Z[m]=e.wrapWithCurrentZone(Z[m],I))}else Z[m]&&(Z[m]=e.wrapWithCurrentZone(Z[m],I))}catch{}}),y.call(n,_,b,k)},e.attachOriginToPatched(n[r],y)}function ot(e,n,c){if(!c||c.length===0)return n;let r=c.filter(l=>l.target===e);if(!r||r.length===0)return n;let a=r[0].ignoreProperties;return n.filter(l=>a.indexOf(l)===-1)}function ze(e,n,c,r){if(!e)return;let a=ot(e,n,c);Ke(e,a,r)}function Oe(e){return Object.getOwnPropertyNames(e).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}function yt(e,n){if(we&&!Je||Zone[e.symbol("patchEvents")])return;let c=n.__Zone_ignore_on_properties,r=[];if(xe){let a=window;r=r.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);let l=ft()?[{target:a,ignoreProperties:["error"]}]:[];ze(a,Oe(a),c&&c.concat(l),Ie(a))}r=r.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let a=0;a{let r=Oe(e);c.patchOnProperties=Ke,c.patchMethod=le,c.bindArguments=He,c.patchMacroTask=ut;let a=n.__symbol__("BLACK_LISTED_EVENTS"),l=n.__symbol__("UNPATCHED_EVENTS");e[l]&&(e[a]=e[l]),e[a]&&(n[a]=n[l]=e[a]),c.patchEventPrototype=Et,c.patchEventTarget=_t,c.isIEOrEdge=ht,c.ObjectDefineProperty=Ne,c.ObjectGetOwnPropertyDescriptor=me,c.ObjectCreate=it,c.ArraySlice=ct,c.patchClass=ge,c.wrapWithCurrentZone=Ae,c.filterProperties=ot,c.attachOriginToPatched=ae,c._redefineProperty=Object.defineProperty,c.patchCallbacks=Tt,c.getGlobalObjects=()=>({globalSources:Qe,zoneSymbolEventNames:ee,eventNames:r,isBrowser:xe,isMix:Je,isNode:we,TRUE_STR:ie,FALSE_STR:ce,ZONE_SYMBOL_PREFIX:pe,ADD_EVENT_LISTENER_STR:Me,REMOVE_EVENT_LISTENER_STR:Le})});function mt(e,n){n.patchMethod(e,"queueMicrotask",c=>function(r,a){Zone.current.scheduleMicroTask("queueMicrotask",a[0])})}var ve=j("zoneTask");function Ee(e,n,c,r){let a=null,l=null;n+=r,c+=r;let y={};function _(k){let m=k.data;return m.args[0]=function(){return k.invoke.apply(this,arguments)},m.handleId=a.apply(e,m.args),k}function b(k){return l.call(e,k.data.handleId)}a=le(e,n,k=>function(m,I){if(typeof I[0]=="function"){let Z={isPeriodic:r==="Interval",delay:r==="Timeout"||r==="Interval"?I[1]||0:void 0,args:I},O=I[0];I[0]=function(){try{return O.apply(this,arguments)}finally{Z.isPeriodic||(typeof Z.handleId=="number"?delete y[Z.handleId]:Z.handleId&&(Z.handleId[ve]=null))}};let B=je(n,I[0],Z,_,b);if(!B)return B;let A=B.data.handleId;return typeof A=="number"?y[A]=B:A&&(A[ve]=B),A&&A.ref&&A.unref&&typeof A.ref=="function"&&typeof A.unref=="function"&&(B.ref=A.ref.bind(A),B.unref=A.unref.bind(A)),typeof A=="number"||A?A:B}else return k.apply(e,I)}),l=le(e,c,k=>function(m,I){let Z=I[0],O;typeof Z=="number"?O=y[Z]:(O=Z&&Z[ve],O||(O=Z)),O&&typeof O.type=="string"?O.state!=="notScheduled"&&(O.cancelFn&&O.data.isPeriodic||O.runCount===0)&&(typeof Z=="number"?delete y[Z]:Z&&(Z[ve]=null),O.zone.cancelTask(O)):k.apply(e,I)})}function pt(e,n){let{isBrowser:c,isMix:r}=n.getGlobalObjects();if(!c&&!r||!e.customElements||!("customElements"in e))return;let a=["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"];n.patchCallbacks(n,e.customElements,"customElements","define",a)}function gt(e,n){if(Zone[n.symbol("patchEventTarget")])return;let{eventNames:c,zoneSymbolEventNames:r,TRUE_STR:a,FALSE_STR:l,ZONE_SYMBOL_PREFIX:y}=n.getGlobalObjects();for(let b=0;b{let n=e[Zone.__symbol__("legacyPatch")];n&&n()});Zone.__load_patch("timers",e=>{let n="set",c="clear";Ee(e,n,c,"Timeout"),Ee(e,n,c,"Interval"),Ee(e,n,c,"Immediate")});Zone.__load_patch("requestAnimationFrame",e=>{Ee(e,"request","cancel","AnimationFrame"),Ee(e,"mozRequest","mozCancel","AnimationFrame"),Ee(e,"webkitRequest","webkitCancel","AnimationFrame")});Zone.__load_patch("blocking",(e,n)=>{let c=["alert","prompt","confirm"];for(let r=0;rfunction(b,k){return n.current.run(l,e,k,_)})}});Zone.__load_patch("EventTarget",(e,n,c)=>{kt(e,c),gt(e,c);let r=e.XMLHttpRequestEventTarget;r&&r.prototype&&c.patchEventTarget(e,c,[r.prototype])});Zone.__load_patch("MutationObserver",(e,n,c)=>{ge("MutationObserver"),ge("WebKitMutationObserver")});Zone.__load_patch("IntersectionObserver",(e,n,c)=>{ge("IntersectionObserver")});Zone.__load_patch("FileReader",(e,n,c)=>{ge("FileReader")});Zone.__load_patch("on_property",(e,n,c)=>{yt(c,e)});Zone.__load_patch("customElements",(e,n,c)=>{pt(e,c)});Zone.__load_patch("XHR",(e,n)=>{b(e);let c=j("xhrTask"),r=j("xhrSync"),a=j("xhrListener"),l=j("xhrScheduled"),y=j("xhrURL"),_=j("xhrErrorBeforeScheduled");function b(k){let m=k.XMLHttpRequest;if(!m)return;let I=m.prototype;function Z(d){return d[c]}let O=I[Se],B=I[De];if(!O){let d=k.XMLHttpRequestEventTarget;if(d){let N=d.prototype;O=N[Se],B=N[De]}}let A="readystatechange",J="scheduled";function q(d){let N=d.data,P=N.target;P[l]=!1,P[_]=!1;let K=P[a];O||(O=P[Se],B=P[De]),K&&B.call(P,A,K);let re=P[a]=()=>{if(P.readyState===P.DONE)if(!N.aborted&&P[l]&&d.state===J){let U=P[n.__symbol__("loadfalse")];if(P.status!==0&&U&&U.length>0){let te=d.invoke;d.invoke=function(){let Q=P[n.__symbol__("loadfalse")];for(let W=0;Wfunction(d,N){return d[r]=N[2]==!1,d[y]=N[1],$.apply(d,N)}),H="XMLHttpRequest.send",X=j("fetchTaskAborting"),M=j("fetchTaskScheduling"),T=le(I,"send",()=>function(d,N){if(n.current[M]===!0||d[r])return T.apply(d,N);{let P={target:d,url:d[y],isPeriodic:!1,args:N,aborted:!1},K=je(H,R,P,q,E);d&&d[_]===!0&&!P.aborted&&K.state===J&&K.invoke()}}),x=le(I,"abort",()=>function(d,N){let P=Z(d);if(P&&typeof P.type=="string"){if(P.cancelFn==null||P.data&&P.data.aborted)return;P.zone.cancelTask(P)}else if(n.current[X]===!0)return x.apply(d,N)})}});Zone.__load_patch("geolocation",e=>{e.navigator&&e.navigator.geolocation&<(e.navigator.geolocation,["getCurrentPosition","watchPosition"])});Zone.__load_patch("PromiseRejectionEvent",(e,n)=>{function c(r){return function(a){rt(e,r).forEach(y=>{let _=e.PromiseRejectionEvent;if(_){let b=new _(r,{promise:a.promise,reason:a.rejection});y.invoke(b)}})}}e.PromiseRejectionEvent&&(n[j("unhandledPromiseRejectionHandler")]=c("unhandledrejection"),n[j("rejectionHandledHandler")]=c("rejectionhandled"))});Zone.__load_patch("queueMicrotask",(e,n,c)=>{mt(e,c)}); diff --git a/internal/middleware/front/dist/front/browser/safety-worker.js b/internal/middleware/front/dist/front/browser/safety-worker.js new file mode 100755 index 0000000..d98014b --- /dev/null +++ b/internal/middleware/front/dist/front/browser/safety-worker.js @@ -0,0 +1,26 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +// tslint:disable:no-console + +self.addEventListener('install', event => { + self.skipWaiting(); +}); + +self.addEventListener('activate', event => { + event.waitUntil(self.clients.claim()); + + event.waitUntil(self.registration.unregister().then(() => { + console.log('NGSW Safety Worker - unregistered old service worker'); + })); + + event.waitUntil(caches.keys().then(cacheNames => { + const ngswCacheNames = cacheNames.filter(name => /^ngsw:/.test(name)); + return Promise.all(ngswCacheNames.map(name => caches.delete(name))); + })); +}); diff --git a/internal/middleware/front/dist/front/browser/styles-3T3ZIQFC.css b/internal/middleware/front/dist/front/browser/styles-3T3ZIQFC.css new file mode 100644 index 0000000..011e80d --- /dev/null +++ b/internal/middleware/front/dist/front/browser/styles-3T3ZIQFC.css @@ -0,0 +1 @@ +.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0);background-color:var(--mat-ripple-color, rgba(0, 0, 0, .1))}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-app-background{background-color:var(--mat-app-background-color, transparent);color:var(--mat-app-text-color, inherit)}html{--mat-ripple-color:rgba(0, 0, 0, .1)}html{--mat-option-selected-state-label-text-color:#3f51b5;--mat-option-label-text-color:rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color:#ff4081;--mat-option-label-text-color:rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, .04)}.mat-warn{--mat-option-selected-state-label-text-color:#f44336;--mat-option-label-text-color:rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, .04)}html{--mat-optgroup-label-text-color:rgba(0, 0, 0, .87)}.mat-primary{--mat-full-pseudo-checkbox-selected-icon-color:#3f51b5;--mat-full-pseudo-checkbox-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color:#b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color:#b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color:#3f51b5;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color:#b0b0b0}html,.mat-accent{--mat-full-pseudo-checkbox-selected-icon-color:#ff4081;--mat-full-pseudo-checkbox-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color:#b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color:#b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color:#ff4081;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color:#b0b0b0}.mat-warn{--mat-full-pseudo-checkbox-selected-icon-color:#f44336;--mat-full-pseudo-checkbox-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color:#b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color:#b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color:#f44336;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color:#b0b0b0}html{--mat-app-background-color:#fafafa;--mat-app-text-color:rgba(0, 0, 0, .87)}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}html{--mat-option-label-text-font:Roboto, sans-serif;--mat-option-label-text-line-height:24px;--mat-option-label-text-size:16px;--mat-option-label-text-tracking:.03125em;--mat-option-label-text-weight:400}html{--mat-optgroup-label-text-font:Roboto, sans-serif;--mat-optgroup-label-text-line-height:24px;--mat-optgroup-label-text-size:16px;--mat-optgroup-label-text-tracking:.03125em;--mat-optgroup-label-text-weight:400}html{--mdc-elevated-card-container-shape:4px;--mdc-outlined-card-container-shape:4px;--mdc-outlined-card-outline-width:1px}html{--mdc-elevated-card-container-color:white;--mdc-elevated-card-container-elevation:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color:white;--mdc-outlined-card-outline-color:rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color:rgba(0, 0, 0, .54)}html{--mat-card-title-text-font:Roboto, sans-serif;--mat-card-title-text-line-height:32px;--mat-card-title-text-size:20px;--mat-card-title-text-tracking:.0125em;--mat-card-title-text-weight:500;--mat-card-subtitle-text-font:Roboto, sans-serif;--mat-card-subtitle-text-line-height:22px;--mat-card-subtitle-text-size:14px;--mat-card-subtitle-text-tracking:.0071428571em;--mat-card-subtitle-text-weight:500}html{--mdc-linear-progress-active-indicator-height:4px;--mdc-linear-progress-track-height:4px;--mdc-linear-progress-track-shape:0}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color:#3f51b5;--mdc-linear-progress-track-color:rgba(63, 81, 181, .25)}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color:#ff4081;--mdc-linear-progress-track-color:rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color:#f44336;--mdc-linear-progress-track-color:rgba(244, 67, 54, .25)}html{--mdc-plain-tooltip-container-shape:4px;--mdc-plain-tooltip-supporting-text-line-height:16px}html{--mdc-plain-tooltip-container-color:#616161;--mdc-plain-tooltip-supporting-text-color:#fff}html{--mdc-plain-tooltip-supporting-text-font:Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size:12px;--mdc-plain-tooltip-supporting-text-weight:400;--mdc-plain-tooltip-supporting-text-tracking:.0333333333em}html{--mdc-filled-text-field-active-indicator-height:1px;--mdc-filled-text-field-focus-active-indicator-height:2px;--mdc-filled-text-field-container-shape:4px;--mdc-outlined-text-field-outline-width:1px;--mdc-outlined-text-field-focus-outline-width:2px;--mdc-outlined-text-field-container-shape:4px}html{--mdc-filled-text-field-caret-color:#3f51b5;--mdc-filled-text-field-focus-active-indicator-color:#3f51b5;--mdc-filled-text-field-focus-label-text-color:rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color:whitesmoke;--mdc-filled-text-field-disabled-container-color:#fafafa;--mdc-filled-text-field-label-text-color:rgba(0, 0, 0, .6);--mdc-filled-text-field-hover-label-text-color:rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color:rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color:rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color:rgba(0, 0, 0, .6);--mdc-filled-text-field-error-hover-label-text-color:#f44336;--mdc-filled-text-field-error-focus-label-text-color:#f44336;--mdc-filled-text-field-error-label-text-color:#f44336;--mdc-filled-text-field-error-caret-color:#f44336;--mdc-filled-text-field-active-indicator-color:rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color:rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color:rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color:#f44336;--mdc-filled-text-field-error-focus-active-indicator-color:#f44336;--mdc-filled-text-field-error-hover-active-indicator-color:#f44336;--mdc-outlined-text-field-caret-color:#3f51b5;--mdc-outlined-text-field-focus-outline-color:#3f51b5;--mdc-outlined-text-field-focus-label-text-color:rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color:rgba(0, 0, 0, .6);--mdc-outlined-text-field-hover-label-text-color:rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color:rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color:rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color:rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color:#f44336;--mdc-outlined-text-field-error-focus-label-text-color:#f44336;--mdc-outlined-text-field-error-label-text-color:#f44336;--mdc-outlined-text-field-error-hover-label-text-color:#f44336;--mdc-outlined-text-field-outline-color:rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color:rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color:rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color:#f44336;--mdc-outlined-text-field-error-hover-outline-color:#f44336;--mdc-outlined-text-field-error-outline-color:#f44336;--mat-form-field-focus-select-arrow-color:rgba(63, 81, 181, .87);--mat-form-field-disabled-input-text-placeholder-color:rgba(0, 0, 0, .38);--mat-form-field-state-layer-color:rgba(0, 0, 0, .87);--mat-form-field-error-text-color:#f44336;--mat-form-field-select-option-text-color:inherit;--mat-form-field-select-disabled-option-text-color:GrayText;--mat-form-field-leading-icon-color:unset;--mat-form-field-disabled-leading-icon-color:unset;--mat-form-field-trailing-icon-color:unset;--mat-form-field-disabled-trailing-icon-color:unset;--mat-form-field-error-focus-trailing-icon-color:unset;--mat-form-field-error-hover-trailing-icon-color:unset;--mat-form-field-error-trailing-icon-color:unset;--mat-form-field-enabled-select-arrow-color:rgba(0, 0, 0, .54);--mat-form-field-disabled-select-arrow-color:rgba(0, 0, 0, .38);--mat-form-field-hover-state-layer-opacity:.04;--mat-form-field-focus-state-layer-opacity:.12}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color:#ff4081;--mdc-filled-text-field-focus-active-indicator-color:#ff4081;--mdc-filled-text-field-focus-label-text-color:rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color:#ff4081;--mdc-outlined-text-field-focus-outline-color:#ff4081;--mdc-outlined-text-field-focus-label-text-color:rgba(255, 64, 129, .87);--mat-form-field-focus-select-arrow-color:rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color:#f44336;--mdc-filled-text-field-focus-active-indicator-color:#f44336;--mdc-filled-text-field-focus-label-text-color:rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color:#f44336;--mdc-outlined-text-field-focus-outline-color:#f44336;--mdc-outlined-text-field-focus-label-text-color:rgba(244, 67, 54, .87);--mat-form-field-focus-select-arrow-color:rgba(244, 67, 54, .87)}html{--mat-form-field-container-height:56px;--mat-form-field-filled-label-display:block;--mat-form-field-container-vertical-padding:16px;--mat-form-field-filled-with-label-container-padding-top:24px;--mat-form-field-filled-with-label-container-padding-bottom:8px}html{--mdc-filled-text-field-label-text-font:Roboto, sans-serif;--mdc-filled-text-field-label-text-size:16px;--mdc-filled-text-field-label-text-tracking:.03125em;--mdc-filled-text-field-label-text-weight:400;--mdc-outlined-text-field-label-text-font:Roboto, sans-serif;--mdc-outlined-text-field-label-text-size:16px;--mdc-outlined-text-field-label-text-tracking:.03125em;--mdc-outlined-text-field-label-text-weight:400;--mat-form-field-container-text-font:Roboto, sans-serif;--mat-form-field-container-text-line-height:24px;--mat-form-field-container-text-size:16px;--mat-form-field-container-text-tracking:.03125em;--mat-form-field-container-text-weight:400;--mat-form-field-outlined-label-text-populated-size:16px;--mat-form-field-subscript-text-font:Roboto, sans-serif;--mat-form-field-subscript-text-line-height:20px;--mat-form-field-subscript-text-size:12px;--mat-form-field-subscript-text-tracking:.0333333333em;--mat-form-field-subscript-text-weight:400}html{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, .38);--mat-select-placeholder-text-color:rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, .38);--mat-select-focused-arrow-color:rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, .38);--mat-select-placeholder-text-color:rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, .38);--mat-select-focused-arrow-color:rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, .38);--mat-select-placeholder-text-color:rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, .38);--mat-select-focused-arrow-color:rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, .87)}html{--mat-select-trigger-text-font:Roboto, sans-serif;--mat-select-trigger-text-line-height:24px;--mat-select-trigger-text-size:16px;--mat-select-trigger-text-tracking:.03125em;--mat-select-trigger-text-weight:400}html{--mat-autocomplete-background-color:white}html{--mdc-dialog-container-elevation-shadow:0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mdc-dialog-container-shadow-color:#000;--mdc-dialog-container-shape:4px}html{--mdc-dialog-container-color:white;--mdc-dialog-subhead-color:rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color:rgba(0, 0, 0, .6)}html{--mdc-dialog-subhead-font:Roboto, sans-serif;--mdc-dialog-subhead-line-height:32px;--mdc-dialog-subhead-size:20px;--mdc-dialog-subhead-weight:500;--mdc-dialog-subhead-tracking:.0125em;--mdc-dialog-supporting-text-font:Roboto, sans-serif;--mdc-dialog-supporting-text-line-height:24px;--mdc-dialog-supporting-text-size:16px;--mdc-dialog-supporting-text-weight:400;--mdc-dialog-supporting-text-tracking:.03125em}.mat-mdc-standard-chip{--mdc-chip-container-shape-family:rounded;--mdc-chip-container-shape-radius:16px 16px 16px 16px;--mdc-chip-with-avatar-avatar-shape-family:rounded;--mdc-chip-with-avatar-avatar-shape-radius:14px 14px 14px 14px;--mdc-chip-with-avatar-avatar-size:28px;--mdc-chip-with-icon-icon-size:18px}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color:#212121;--mdc-chip-elevated-container-color:#e0e0e0;--mdc-chip-elevated-disabled-container-color:#e0e0e0;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:#212121;--mdc-chip-with-icon-icon-color:#212121;--mdc-chip-with-icon-disabled-icon-color:#212121;--mdc-chip-with-icon-selected-icon-color:#212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:#212121;--mdc-chip-with-trailing-icon-trailing-icon-color:#212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#3f51b5;--mdc-chip-elevated-disabled-container-color:#3f51b5;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#ff4081;--mdc-chip-elevated-disabled-container-color:#ff4081;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#f44336;--mdc-chip-elevated-disabled-container-color:#f44336;--mdc-chip-focus-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height:32px}.mat-mdc-standard-chip{--mdc-chip-label-text-font:Roboto, sans-serif;--mdc-chip-label-text-line-height:20px;--mdc-chip-label-text-size:14px;--mdc-chip-label-text-tracking:.0178571429em;--mdc-chip-label-text-weight:400}.mdc-switch{--mdc-switch-disabled-handle-opacity:.38;--mdc-switch-disabled-selected-icon-opacity:.38;--mdc-switch-disabled-track-opacity:.12;--mdc-switch-disabled-unselected-icon-opacity:.38;--mdc-switch-handle-height:20px;--mdc-switch-handle-shape:10px;--mdc-switch-handle-width:20px;--mdc-switch-selected-icon-size:18px;--mdc-switch-track-height:14px;--mdc-switch-track-shape:7px;--mdc-switch-track-width:36px;--mdc-switch-unselected-icon-size:18px;--mdc-switch-selected-focus-state-layer-opacity:.12;--mdc-switch-selected-hover-state-layer-opacity:.04;--mdc-switch-selected-pressed-state-layer-opacity:.1;--mdc-switch-unselected-focus-state-layer-opacity:.12;--mdc-switch-unselected-hover-state-layer-opacity:.04;--mdc-switch-unselected-pressed-state-layer-opacity:.1}.mat-mdc-slide-toggle{--mdc-switch-selected-focus-state-layer-color:#3949ab;--mdc-switch-selected-handle-color:#3949ab;--mdc-switch-selected-hover-state-layer-color:#3949ab;--mdc-switch-selected-pressed-state-layer-color:#3949ab;--mdc-switch-selected-focus-handle-color:#1a237e;--mdc-switch-selected-hover-handle-color:#1a237e;--mdc-switch-selected-pressed-handle-color:#1a237e;--mdc-switch-selected-focus-track-color:#7986cb;--mdc-switch-selected-hover-track-color:#7986cb;--mdc-switch-selected-pressed-track-color:#7986cb;--mdc-switch-selected-track-color:#7986cb;--mdc-switch-disabled-selected-handle-color:#424242;--mdc-switch-disabled-selected-icon-color:#fff;--mdc-switch-disabled-selected-track-color:#424242;--mdc-switch-disabled-unselected-handle-color:#424242;--mdc-switch-disabled-unselected-icon-color:#fff;--mdc-switch-disabled-unselected-track-color:#424242;--mdc-switch-handle-surface-color:var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color:black;--mdc-switch-disabled-handle-elevation-shadow:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color:#fff;--mdc-switch-unselected-focus-handle-color:#212121;--mdc-switch-unselected-focus-state-layer-color:#424242;--mdc-switch-unselected-focus-track-color:#e0e0e0;--mdc-switch-unselected-handle-color:#616161;--mdc-switch-unselected-hover-handle-color:#212121;--mdc-switch-unselected-hover-state-layer-color:#424242;--mdc-switch-unselected-hover-track-color:#e0e0e0;--mdc-switch-unselected-icon-color:#fff;--mdc-switch-unselected-pressed-handle-color:#212121;--mdc-switch-unselected-pressed-state-layer-color:#424242;--mdc-switch-unselected-pressed-track-color:#e0e0e0;--mdc-switch-unselected-track-color:#e0e0e0;--mdc-form-field-label-text-color:rgba(0, 0, 0, .87);--mdc-switch-disabled-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color:#d81b60;--mdc-switch-selected-handle-color:#d81b60;--mdc-switch-selected-hover-state-layer-color:#d81b60;--mdc-switch-selected-pressed-state-layer-color:#d81b60;--mdc-switch-selected-focus-handle-color:#880e4f;--mdc-switch-selected-hover-handle-color:#880e4f;--mdc-switch-selected-pressed-handle-color:#880e4f;--mdc-switch-selected-focus-track-color:#f06292;--mdc-switch-selected-hover-track-color:#f06292;--mdc-switch-selected-pressed-track-color:#f06292;--mdc-switch-selected-track-color:#f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color:#e53935;--mdc-switch-selected-handle-color:#e53935;--mdc-switch-selected-hover-state-layer-color:#e53935;--mdc-switch-selected-pressed-state-layer-color:#e53935;--mdc-switch-selected-focus-handle-color:#b71c1c;--mdc-switch-selected-hover-handle-color:#b71c1c;--mdc-switch-selected-pressed-handle-color:#b71c1c;--mdc-switch-selected-focus-track-color:#e57373;--mdc-switch-selected-hover-track-color:#e57373;--mdc-switch-selected-pressed-track-color:#e57373;--mdc-switch-selected-track-color:#e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size:40px}.mat-mdc-slide-toggle{--mdc-form-field-label-text-font:Roboto, sans-serif;--mdc-form-field-label-text-line-height:20px;--mdc-form-field-label-text-size:14px;--mdc-form-field-label-text-tracking:.0178571429em;--mdc-form-field-label-text-weight:400}html{--mdc-radio-disabled-selected-icon-opacity:.38;--mdc-radio-disabled-unselected-icon-opacity:.38;--mdc-radio-state-layer-size:40px}.mat-mdc-radio-button{--mdc-form-field-label-text-color:rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#3f51b5;--mdc-radio-selected-hover-icon-color:#3f51b5;--mdc-radio-selected-icon-color:#3f51b5;--mdc-radio-selected-pressed-icon-color:#3f51b5;--mat-radio-ripple-color:#000;--mat-radio-checked-ripple-color:#3f51b5;--mat-radio-disabled-label-color:rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#ff4081;--mdc-radio-selected-hover-icon-color:#ff4081;--mdc-radio-selected-icon-color:#ff4081;--mdc-radio-selected-pressed-icon-color:#ff4081;--mat-radio-ripple-color:#000;--mat-radio-checked-ripple-color:#ff4081;--mat-radio-disabled-label-color:rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#f44336;--mdc-radio-selected-hover-icon-color:#f44336;--mdc-radio-selected-icon-color:#f44336;--mdc-radio-selected-pressed-icon-color:#f44336;--mat-radio-ripple-color:#000;--mat-radio-checked-ripple-color:#f44336;--mat-radio-disabled-label-color:rgba(0, 0, 0, .38)}html{--mdc-radio-state-layer-size:40px}.mat-mdc-radio-button{--mdc-form-field-label-text-font:Roboto, sans-serif;--mdc-form-field-label-text-line-height:20px;--mdc-form-field-label-text-size:14px;--mdc-form-field-label-text-tracking:.0178571429em;--mdc-form-field-label-text-weight:400}html{--mat-slider-value-indicator-width:auto;--mat-slider-value-indicator-height:32px;--mat-slider-value-indicator-caret-display:block;--mat-slider-value-indicator-border-radius:4px;--mat-slider-value-indicator-padding:0 12px;--mat-slider-value-indicator-text-transform:none;--mat-slider-value-indicator-container-transform:translateX(-50%);--mdc-slider-active-track-height:6px;--mdc-slider-active-track-shape:9999px;--mdc-slider-handle-height:20px;--mdc-slider-handle-shape:50%;--mdc-slider-handle-width:20px;--mdc-slider-inactive-track-height:4px;--mdc-slider-inactive-track-shape:9999px;--mdc-slider-with-overlap-handle-outline-width:1px;--mdc-slider-with-tick-marks-active-container-opacity:.6;--mdc-slider-with-tick-marks-container-shape:50%;--mdc-slider-with-tick-marks-container-size:2px;--mdc-slider-with-tick-marks-inactive-container-opacity:.6}html{--mdc-slider-handle-color:#3f51b5;--mdc-slider-focus-handle-color:#3f51b5;--mdc-slider-hover-handle-color:#3f51b5;--mdc-slider-active-track-color:#3f51b5;--mdc-slider-inactive-track-color:#3f51b5;--mdc-slider-with-tick-marks-inactive-container-color:#3f51b5;--mdc-slider-with-tick-marks-active-container-color:white;--mdc-slider-disabled-active-track-color:#000;--mdc-slider-disabled-handle-color:#000;--mdc-slider-disabled-inactive-track-color:#000;--mdc-slider-label-container-color:#000;--mdc-slider-label-label-text-color:#fff;--mdc-slider-with-overlap-handle-outline-color:#fff;--mdc-slider-with-tick-marks-disabled-container-color:#000;--mdc-slider-handle-elevation:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-slider-ripple-color:#3f51b5;--mat-slider-hover-state-layer-color:rgba(63, 81, 181, .05);--mat-slider-focus-state-layer-color:rgba(63, 81, 181, .2);--mat-slider-value-indicator-opacity:.6}html .mat-accent{--mat-slider-ripple-color:#ff4081;--mat-slider-hover-state-layer-color:rgba(255, 64, 129, .05);--mat-slider-focus-state-layer-color:rgba(255, 64, 129, .2);--mdc-slider-handle-color:#ff4081;--mdc-slider-focus-handle-color:#ff4081;--mdc-slider-hover-handle-color:#ff4081;--mdc-slider-active-track-color:#ff4081;--mdc-slider-inactive-track-color:#ff4081;--mdc-slider-with-tick-marks-inactive-container-color:#ff4081;--mdc-slider-with-tick-marks-active-container-color:white}html .mat-warn{--mat-slider-ripple-color:#f44336;--mat-slider-hover-state-layer-color:rgba(244, 67, 54, .05);--mat-slider-focus-state-layer-color:rgba(244, 67, 54, .2);--mdc-slider-handle-color:#f44336;--mdc-slider-focus-handle-color:#f44336;--mdc-slider-hover-handle-color:#f44336;--mdc-slider-active-track-color:#f44336;--mdc-slider-inactive-track-color:#f44336;--mdc-slider-with-tick-marks-inactive-container-color:#f44336;--mdc-slider-with-tick-marks-active-container-color:white}html{--mdc-slider-label-label-text-font:Roboto, sans-serif;--mdc-slider-label-label-text-size:14px;--mdc-slider-label-label-text-line-height:22px;--mdc-slider-label-label-text-tracking:.0071428571em;--mdc-slider-label-label-text-weight:500}html{--mat-menu-container-shape:4px}html{--mat-menu-item-label-text-color:rgba(0, 0, 0, .87);--mat-menu-item-icon-color:rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-menu-container-color:white}html{--mat-menu-item-label-text-font:Roboto, sans-serif;--mat-menu-item-label-text-size:16px;--mat-menu-item-label-text-tracking:.03125em;--mat-menu-item-label-text-line-height:24px;--mat-menu-item-label-text-weight:400}html{--mdc-list-list-item-container-shape:0;--mdc-list-list-item-leading-avatar-shape:50%;--mdc-list-list-item-container-color:transparent;--mdc-list-list-item-selected-container-color:transparent;--mdc-list-list-item-leading-avatar-color:transparent;--mdc-list-list-item-leading-icon-size:24px;--mdc-list-list-item-leading-avatar-size:40px;--mdc-list-list-item-trailing-icon-size:24px;--mdc-list-list-item-disabled-state-layer-color:transparent;--mdc-list-list-item-disabled-state-layer-opacity:0;--mdc-list-list-item-disabled-label-text-opacity:.38;--mdc-list-list-item-disabled-leading-icon-opacity:.38;--mdc-list-list-item-disabled-trailing-icon-opacity:.38}html{--mdc-list-list-item-label-text-color:rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color:rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color:rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color:black;--mdc-list-list-item-disabled-leading-icon-color:black;--mdc-list-list-item-disabled-trailing-icon-color:black;--mdc-list-list-item-hover-label-text-color:rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color:rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color:black;--mdc-list-list-item-hover-state-layer-opacity:.04;--mdc-list-list-item-focus-state-layer-color:black;--mdc-list-list-item-focus-state-layer-opacity:.12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#3f51b5;--mdc-radio-selected-hover-icon-color:#3f51b5;--mdc-radio-selected-icon-color:#3f51b5;--mdc-radio-selected-pressed-icon-color:#3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#ff4081;--mdc-radio-selected-hover-icon-color:#ff4081;--mdc-radio-selected-icon-color:#ff4081;--mdc-radio-selected-pressed-icon-color:#ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:#000;--mdc-radio-disabled-unselected-icon-color:#000;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#f44336;--mdc-radio-selected-hover-icon-color:#f44336;--mdc-radio-selected-icon-color:#f44336;--mdc-radio-selected-pressed-icon-color:#f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#3f51b5;--mdc-checkbox-selected-hover-icon-color:#3f51b5;--mdc-checkbox-selected-icon-color:#3f51b5;--mdc-checkbox-selected-pressed-icon-color:#3f51b5;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#3f51b5;--mdc-checkbox-selected-hover-state-layer-color:#3f51b5;--mdc-checkbox-selected-pressed-state-layer-color:#3f51b5;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#ff4081;--mdc-checkbox-selected-hover-icon-color:#ff4081;--mdc-checkbox-selected-icon-color:#ff4081;--mdc-checkbox-selected-pressed-icon-color:#ff4081;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#ff4081;--mdc-checkbox-selected-hover-state-layer-color:#ff4081;--mdc-checkbox-selected-pressed-state-layer-color:#ff4081;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#f44336;--mdc-checkbox-selected-hover-icon-color:#f44336;--mdc-checkbox-selected-icon-color:#f44336;--mdc-checkbox-selected-pressed-icon-color:#f44336;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#f44336;--mdc-checkbox-selected-hover-state-layer-color:#f44336;--mdc-checkbox-selected-pressed-state-layer-color:#f44336;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}html{--mdc-list-list-item-one-line-container-height:48px;--mdc-list-list-item-two-line-container-height:64px;--mdc-list-list-item-three-line-container-height:88px}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-state-layer-size:40px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mdc-list-list-item-label-text-font:Roboto, sans-serif;--mdc-list-list-item-label-text-line-height:24px;--mdc-list-list-item-label-text-size:16px;--mdc-list-list-item-label-text-tracking:.03125em;--mdc-list-list-item-label-text-weight:400;--mdc-list-list-item-supporting-text-font:Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height:20px;--mdc-list-list-item-supporting-text-size:14px;--mdc-list-list-item-supporting-text-tracking:.0178571429em;--mdc-list-list-item-supporting-text-weight:400;--mdc-list-list-item-trailing-supporting-text-font:Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height:20px;--mdc-list-list-item-trailing-supporting-text-size:12px;--mdc-list-list-item-trailing-supporting-text-tracking:.0333333333em;--mdc-list-list-item-trailing-supporting-text-weight:400}.mdc-list-group__subheader{font:400 16px/28px Roboto,sans-serif;letter-spacing:.009375em}html{--mat-paginator-container-text-color:rgba(0, 0, 0, .87);--mat-paginator-container-background-color:white;--mat-paginator-enabled-icon-color:rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color:rgba(0, 0, 0, .12)}html{--mat-paginator-container-size:56px}.mat-mdc-paginator{--mat-form-field-container-height:40px;--mat-form-field-filled-label-display:none;--mat-form-field-container-vertical-padding:8px;--mat-form-field-filled-with-label-container-padding-top:8px;--mat-form-field-filled-with-label-container-padding-bottom:8px}html{--mat-paginator-container-text-font:Roboto, sans-serif;--mat-paginator-container-text-line-height:20px;--mat-paginator-container-text-size:12px;--mat-paginator-container-text-tracking:.0333333333em;--mat-paginator-container-text-weight:400;--mat-paginator-select-trigger-text-size:12px}html{--mdc-tab-indicator-active-indicator-height:2px;--mdc-tab-indicator-active-indicator-shape:0;--mdc-secondary-navigation-tab-container-height:48px;--mat-tab-header-divider-color:transparent;--mat-tab-header-divider-height:0}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color:#3f51b5;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color:#000;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color:#3f51b5;--mat-tab-header-active-ripple-color:#3f51b5;--mat-tab-header-inactive-ripple-color:#3f51b5;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color:#3f51b5;--mat-tab-header-active-hover-label-text-color:#3f51b5;--mat-tab-header-active-focus-indicator-color:#3f51b5;--mat-tab-header-active-hover-indicator-color:#3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color:#ff4081;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color:#000;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color:#ff4081;--mat-tab-header-active-ripple-color:#ff4081;--mat-tab-header-inactive-ripple-color:#ff4081;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color:#ff4081;--mat-tab-header-active-hover-label-text-color:#ff4081;--mat-tab-header-active-focus-indicator-color:#ff4081;--mat-tab-header-active-hover-indicator-color:#ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color:#f44336;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color:#000;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color:#f44336;--mat-tab-header-active-ripple-color:#f44336;--mat-tab-header-inactive-ripple-color:#f44336;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color:#f44336;--mat-tab-header-active-hover-label-text-color:#f44336;--mat-tab-header-active-focus-indicator-color:#f44336;--mat-tab-header-active-hover-indicator-color:#f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color:#3f51b5;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color:#ff4081;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color:#f44336;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height:48px}.mat-mdc-tab-header{--mat-tab-header-label-text-font:Roboto, sans-serif;--mat-tab-header-label-text-size:14px;--mat-tab-header-label-text-tracking:.0892857143em;--mat-tab-header-label-text-line-height:36px;--mat-tab-header-label-text-weight:500}html{--mdc-checkbox-disabled-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-state-layer-opacity:.16;--mdc-checkbox-selected-hover-state-layer-opacity:.04;--mdc-checkbox-selected-pressed-state-layer-opacity:.16;--mdc-checkbox-unselected-focus-state-layer-opacity:.16;--mdc-checkbox-unselected-hover-state-layer-opacity:.04;--mdc-checkbox-unselected-pressed-state-layer-opacity:.16}html{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#ff4081;--mdc-checkbox-selected-hover-icon-color:#ff4081;--mdc-checkbox-selected-icon-color:#ff4081;--mdc-checkbox-selected-pressed-icon-color:#ff4081;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#ff4081;--mdc-checkbox-selected-hover-state-layer-color:#ff4081;--mdc-checkbox-selected-pressed-state-layer-color:#ff4081;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox{--mdc-form-field-label-text-color:rgba(0, 0, 0, .87)}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#3f51b5;--mdc-checkbox-selected-hover-icon-color:#3f51b5;--mdc-checkbox-selected-icon-color:#3f51b5;--mdc-checkbox-selected-pressed-icon-color:#3f51b5;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#3f51b5;--mdc-checkbox-selected-hover-state-layer-color:#3f51b5;--mdc-checkbox-selected-pressed-state-layer-color:#3f51b5;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-icon-color:#f44336;--mdc-checkbox-selected-hover-icon-color:#f44336;--mdc-checkbox-selected-icon-color:#f44336;--mdc-checkbox-selected-pressed-icon-color:#f44336;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#f44336;--mdc-checkbox-selected-hover-state-layer-color:#f44336;--mdc-checkbox-selected-pressed-state-layer-color:#f44336;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:#00000061}html{--mdc-checkbox-state-layer-size:40px}.mat-mdc-checkbox{--mdc-form-field-label-text-font:Roboto, sans-serif;--mdc-form-field-label-text-line-height:20px;--mdc-form-field-label-text-size:14px;--mdc-form-field-label-text-tracking:.0178571429em;--mdc-form-field-label-text-weight:400}html{--mdc-text-button-container-shape:4px;--mdc-text-button-keep-touch-target:false;--mdc-filled-button-container-shape:4px;--mdc-filled-button-keep-touch-target:false;--mdc-protected-button-container-shape:4px;--mdc-protected-button-keep-touch-target:false;--mdc-outlined-button-keep-touch-target:false;--mdc-outlined-button-outline-width:1px;--mdc-outlined-button-container-shape:4px}html{--mdc-text-button-label-text-color:#000;--mdc-text-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mat-text-button-state-layer-color:#000;--mat-text-button-disabled-state-layer-color:#000;--mat-text-button-ripple-color:rgba(0, 0, 0, .1);--mat-text-button-hover-state-layer-opacity:.04;--mat-text-button-focus-state-layer-opacity:.12;--mat-text-button-pressed-state-layer-opacity:.12;--mdc-filled-button-container-color:white;--mdc-filled-button-label-text-color:#000;--mdc-filled-button-disabled-container-color:rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mat-filled-button-state-layer-color:#000;--mat-filled-button-disabled-state-layer-color:#000;--mat-filled-button-ripple-color:rgba(0, 0, 0, .1);--mat-filled-button-hover-state-layer-opacity:.04;--mat-filled-button-focus-state-layer-opacity:.12;--mat-filled-button-pressed-state-layer-opacity:.12;--mdc-protected-button-container-color:white;--mdc-protected-button-label-text-color:#000;--mdc-protected-button-disabled-container-color:rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation-shadow:0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-protected-button-container-shadow-color:#000;--mat-protected-button-state-layer-color:#000;--mat-protected-button-disabled-state-layer-color:#000;--mat-protected-button-ripple-color:rgba(0, 0, 0, .1);--mat-protected-button-hover-state-layer-opacity:.04;--mat-protected-button-focus-state-layer-opacity:.12;--mat-protected-button-pressed-state-layer-opacity:.12;--mdc-outlined-button-disabled-outline-color:rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-outlined-button-label-text-color:#000;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:#000;--mat-outlined-button-disabled-state-layer-color:#000;--mat-outlined-button-ripple-color:rgba(0, 0, 0, .1);--mat-outlined-button-hover-state-layer-opacity:.04;--mat-outlined-button-focus-state-layer-opacity:.12;--mat-outlined-button-pressed-state-layer-opacity:.12}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color:#3f51b5;--mat-text-button-state-layer-color:#3f51b5;--mat-text-button-ripple-color:rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color:#ff4081;--mat-text-button-state-layer-color:#ff4081;--mat-text-button-ripple-color:rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color:#f44336;--mat-text-button-state-layer-color:#f44336;--mat-text-button-ripple-color:rgba(244, 67, 54, .1)}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color:#3f51b5;--mdc-filled-button-label-text-color:#fff;--mat-filled-button-state-layer-color:#fff;--mat-filled-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color:#ff4081;--mdc-filled-button-label-text-color:#fff;--mat-filled-button-state-layer-color:#fff;--mat-filled-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color:#f44336;--mdc-filled-button-label-text-color:#fff;--mat-filled-button-state-layer-color:#fff;--mat-filled-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color:#3f51b5;--mdc-protected-button-label-text-color:#fff;--mat-protected-button-state-layer-color:#fff;--mat-protected-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color:#ff4081;--mdc-protected-button-label-text-color:#fff;--mat-protected-button-state-layer-color:#fff;--mat-protected-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color:#f44336;--mdc-protected-button-label-text-color:#fff;--mat-protected-button-state-layer-color:#fff;--mat-protected-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color:#3f51b5;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:#3f51b5;--mat-outlined-button-ripple-color:rgba(63, 81, 181, .1)}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color:#ff4081;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:#ff4081;--mat-outlined-button-ripple-color:rgba(255, 64, 129, .1)}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color:#f44336;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:#f44336;--mat-outlined-button-ripple-color:rgba(244, 67, 54, .1)}html{--mdc-text-button-container-height:36px;--mdc-filled-button-container-height:36px;--mdc-outlined-button-container-height:36px;--mdc-protected-button-container-height:36px}html{--mdc-text-button-label-text-font:Roboto, sans-serif;--mdc-text-button-label-text-size:14px;--mdc-text-button-label-text-tracking:.0892857143em;--mdc-text-button-label-text-weight:500;--mdc-text-button-label-text-transform:none;--mdc-filled-button-label-text-font:Roboto, sans-serif;--mdc-filled-button-label-text-size:14px;--mdc-filled-button-label-text-tracking:.0892857143em;--mdc-filled-button-label-text-weight:500;--mdc-filled-button-label-text-transform:none;--mdc-outlined-button-label-text-font:Roboto, sans-serif;--mdc-outlined-button-label-text-size:14px;--mdc-outlined-button-label-text-tracking:.0892857143em;--mdc-outlined-button-label-text-weight:500;--mdc-outlined-button-label-text-transform:none;--mdc-protected-button-label-text-font:Roboto, sans-serif;--mdc-protected-button-label-text-size:14px;--mdc-protected-button-label-text-tracking:.0892857143em;--mdc-protected-button-label-text-weight:500;--mdc-protected-button-label-text-transform:none}html{--mdc-icon-button-state-layer-size:48px;--mdc-icon-button-icon-size:24px}html{--mdc-icon-button-icon-color:inherit;--mdc-icon-button-disabled-icon-color:rgba(0, 0, 0, .38);--mat-icon-button-state-layer-color:#000;--mat-icon-button-disabled-state-layer-color:#000;--mat-icon-button-ripple-color:rgba(0, 0, 0, .1);--mat-icon-button-hover-state-layer-opacity:.04;--mat-icon-button-focus-state-layer-opacity:.12;--mat-icon-button-pressed-state-layer-opacity:.12}html .mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color:#3f51b5;--mat-icon-button-state-layer-color:#3f51b5;--mat-icon-button-ripple-color:rgba(63, 81, 181, .1)}html .mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color:#ff4081;--mat-icon-button-state-layer-color:#ff4081;--mat-icon-button-ripple-color:rgba(255, 64, 129, .1)}html .mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color:#f44336;--mat-icon-button-state-layer-color:#f44336;--mat-icon-button-ripple-color:rgba(244, 67, 54, .1)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size:48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}html{--mdc-fab-container-shape:50%;--mdc-fab-icon-size:24px}html{--mdc-fab-container-color:white;--mdc-fab-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-fab-container-shadow-color:#000;--mat-fab-foreground-color:black;--mat-fab-state-layer-color:#000;--mat-fab-disabled-state-layer-color:#000;--mat-fab-ripple-color:rgba(0, 0, 0, .1);--mat-fab-hover-state-layer-opacity:.04;--mat-fab-focus-state-layer-opacity:.12;--mat-fab-pressed-state-layer-opacity:.12;--mat-fab-disabled-state-container-color:rgba(0, 0, 0, .12);--mat-fab-disabled-state-foreground-color:rgba(0, 0, 0, .38);--mdc-extended-fab-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-extended-fab-container-shadow-color:#000}html .mat-mdc-fab.mat-primary,html .mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color:#3f51b5;--mat-fab-foreground-color:#fff;--mat-fab-state-layer-color:#fff;--mat-fab-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-fab.mat-accent,html .mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color:#ff4081;--mat-fab-foreground-color:#fff;--mat-fab-state-layer-color:#fff;--mat-fab-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-fab.mat-warn,html .mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color:#f44336;--mat-fab-foreground-color:#fff;--mat-fab-state-layer-color:#fff;--mat-fab-ripple-color:rgba(255, 255, 255, .1)}html{--mdc-extended-fab-label-text-font:Roboto, sans-serif;--mdc-extended-fab-label-text-size:14px;--mdc-extended-fab-label-text-tracking:.0892857143em;--mdc-extended-fab-label-text-weight:500}html{--mdc-snackbar-container-shape:4px}html{--mdc-snackbar-container-color:#333333;--mdc-snackbar-supporting-text-color:rgba(255, 255, 255, .87);--mat-snack-bar-button-color:#ff4081}html{--mdc-snackbar-supporting-text-font:Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height:20px;--mdc-snackbar-supporting-text-size:14px;--mdc-snackbar-supporting-text-weight:400}html{--mat-table-row-item-outline-width:1px}html{--mat-table-background-color:white;--mat-table-header-headline-color:rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color:rgba(0, 0, 0, .87);--mat-table-row-item-outline-color:rgba(0, 0, 0, .12)}html{--mat-table-header-container-height:56px;--mat-table-footer-container-height:52px;--mat-table-row-item-container-height:52px}html{--mat-table-header-headline-font:Roboto, sans-serif;--mat-table-header-headline-line-height:22px;--mat-table-header-headline-size:14px;--mat-table-header-headline-weight:500;--mat-table-header-headline-tracking:.0071428571em;--mat-table-row-item-label-text-font:Roboto, sans-serif;--mat-table-row-item-label-text-line-height:20px;--mat-table-row-item-label-text-size:14px;--mat-table-row-item-label-text-weight:400;--mat-table-row-item-label-text-tracking:.0178571429em;--mat-table-footer-supporting-text-font:Roboto, sans-serif;--mat-table-footer-supporting-text-line-height:20px;--mat-table-footer-supporting-text-size:14px;--mat-table-footer-supporting-text-weight:400;--mat-table-footer-supporting-text-tracking:.0178571429em}html{--mdc-circular-progress-active-indicator-width:4px;--mdc-circular-progress-size:48px}html{--mdc-circular-progress-active-indicator-color:#3f51b5}html .mat-accent{--mdc-circular-progress-active-indicator-color:#ff4081}html .mat-warn{--mdc-circular-progress-active-indicator-color:#f44336}html{--mat-badge-background-color:#3f51b5;--mat-badge-text-color:white;--mat-badge-disabled-state-background-color:#b9b9b9;--mat-badge-disabled-state-text-color:rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color:#ff4081;--mat-badge-text-color:white}.mat-badge-warn{--mat-badge-background-color:#f44336;--mat-badge-text-color:white}html{--mat-badge-text-font:Roboto, sans-serif;--mat-badge-text-size:12px;--mat-badge-text-weight:600;--mat-badge-small-size-text-size:9px;--mat-badge-large-size-text-size:24px}html{--mat-bottom-sheet-container-shape:4px}html{--mat-bottom-sheet-container-text-color:rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color:white}html{--mat-bottom-sheet-container-text-font:Roboto, sans-serif;--mat-bottom-sheet-container-text-line-height:20px;--mat-bottom-sheet-container-text-size:14px;--mat-bottom-sheet-container-text-tracking:.0178571429em;--mat-bottom-sheet-container-text-weight:400}html{--mat-legacy-button-toggle-height:36px;--mat-legacy-button-toggle-shape:2px;--mat-legacy-button-toggle-focus-state-layer-opacity:1;--mat-standard-button-toggle-shape:4px;--mat-standard-button-toggle-hover-state-layer-opacity:.04;--mat-standard-button-toggle-focus-state-layer-opacity:.12}html{--mat-legacy-button-toggle-text-color:rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color:rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color:rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color:#e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color:rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color:#eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color:#bdbdbd;--mat-standard-button-toggle-text-color:rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color:white;--mat-standard-button-toggle-state-layer-color:black;--mat-standard-button-toggle-selected-state-background-color:#e0e0e0;--mat-standard-button-toggle-selected-state-text-color:rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color:rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color:white;--mat-standard-button-toggle-disabled-selected-state-text-color:rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color:#bdbdbd;--mat-standard-button-toggle-divider-color:#e0e0e0}html{--mat-standard-button-toggle-height:48px}html{--mat-legacy-button-toggle-text-font:Roboto, sans-serif;--mat-standard-button-toggle-text-font:Roboto, sans-serif}html{--mat-datepicker-calendar-date-selected-state-text-color:white;--mat-datepicker-calendar-date-selected-state-background-color:#3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color:rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color:white;--mat-datepicker-calendar-date-focus-state-background-color:rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color:rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color:#3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color:rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color:rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color:#a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color:#46a35e;--mat-datepicker-toggle-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color:rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color:rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color:rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color:rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color:transparent;--mat-datepicker-calendar-date-disabled-state-text-color:rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color:rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color:rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color:rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color:rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color:white;--mat-datepicker-calendar-container-text-color:rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color:white;--mat-datepicker-calendar-date-selected-state-background-color:#ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color:rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color:white;--mat-datepicker-calendar-date-focus-state-background-color:rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color:rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color:rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color:rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color:#a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color:#46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color:white;--mat-datepicker-calendar-date-selected-state-background-color:#f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color:rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color:white;--mat-datepicker-calendar-date-focus-state-background-color:rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color:rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color:rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color:rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color:#a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color:#46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color:#ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color:#f44336}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size:40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}html{--mat-datepicker-calendar-text-font:Roboto, sans-serif;--mat-datepicker-calendar-text-size:13px;--mat-datepicker-calendar-body-label-text-size:14px;--mat-datepicker-calendar-body-label-text-weight:500;--mat-datepicker-calendar-period-button-text-size:14px;--mat-datepicker-calendar-period-button-text-weight:500;--mat-datepicker-calendar-header-text-size:11px;--mat-datepicker-calendar-header-text-weight:400}html{--mat-divider-width:1px}html{--mat-divider-color:rgba(0, 0, 0, .12)}html{--mat-expansion-container-shape:4px}html{--mat-expansion-container-background-color:white;--mat-expansion-container-text-color:rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color:rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color:rgba(0, 0, 0, .26);--mat-expansion-header-text-color:rgba(0, 0, 0, .87);--mat-expansion-header-description-color:rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color:rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height:48px;--mat-expansion-header-expanded-state-height:64px}html{--mat-expansion-header-text-font:Roboto, sans-serif;--mat-expansion-header-text-size:14px;--mat-expansion-header-text-weight:500;--mat-expansion-header-text-line-height:inherit;--mat-expansion-header-text-tracking:inherit;--mat-expansion-container-text-font:Roboto, sans-serif;--mat-expansion-container-text-line-height:20px;--mat-expansion-container-text-size:14px;--mat-expansion-container-text-tracking:.0178571429em;--mat-expansion-container-text-weight:400}html{--mat-grid-list-tile-header-primary-text-size:14px;--mat-grid-list-tile-header-secondary-text-size:12px;--mat-grid-list-tile-footer-primary-text-size:14px;--mat-grid-list-tile-footer-secondary-text-size:12px}html{--mat-icon-color:inherit}.mat-icon.mat-primary{--mat-icon-color:#3f51b5}.mat-icon.mat-accent{--mat-icon-color:#ff4081}.mat-icon.mat-warn{--mat-icon-color:#f44336}html{--mat-sidenav-container-shape:0}html{--mat-sidenav-container-divider-color:rgba(0, 0, 0, .12);--mat-sidenav-container-background-color:white;--mat-sidenav-container-text-color:rgba(0, 0, 0, .87);--mat-sidenav-content-background-color:#fafafa;--mat-sidenav-content-text-color:rgba(0, 0, 0, .87);--mat-sidenav-scrim-color:rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#3f51b5;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#3f51b5;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#3f51b5;--mat-stepper-header-edit-state-icon-foreground-color:white;--mat-stepper-container-color:white;--mat-stepper-line-color:rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color:rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color:rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color:rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color:#f44336;--mat-stepper-header-icon-background-color:rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color:#f44336;--mat-stepper-header-error-state-icon-background-color:transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#ff4081;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#ff4081;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#ff4081;--mat-stepper-header-edit-state-icon-foreground-color:white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#f44336;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#f44336;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#f44336;--mat-stepper-header-edit-state-icon-foreground-color:white}html{--mat-stepper-header-height:72px}html{--mat-stepper-container-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-size:14px;--mat-stepper-header-label-text-weight:400;--mat-stepper-header-error-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-weight:400}html{--mat-sort-arrow-color:#757575}html{--mat-toolbar-container-background-color:whitesmoke;--mat-toolbar-container-text-color:rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color:#3f51b5;--mat-toolbar-container-text-color:white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color:#ff4081;--mat-toolbar-container-text-color:white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color:#f44336;--mat-toolbar-container-text-color:white}html{--mat-toolbar-standard-height:64px;--mat-toolbar-mobile-height:56px}html{--mat-toolbar-title-text-font:Roboto, sans-serif;--mat-toolbar-title-text-line-height:32px;--mat-toolbar-title-text-size:20px;--mat-toolbar-title-text-tracking:.0125em;--mat-toolbar-title-text-weight:500}html{--mat-tree-container-background-color:white;--mat-tree-node-text-color:rgba(0, 0, 0, .87)}html{--mat-tree-node-min-height:48px}html{--mat-tree-node-text-font:Roboto, sans-serif;--mat-tree-node-text-size:14px;--mat-tree-node-text-weight:400}.mat-h1,.mat-headline-5,.mat-typography .mat-h1,.mat-typography .mat-headline-5,.mat-typography h1{font:400 24px/32px Roboto,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h2,.mat-headline-6,.mat-typography .mat-h2,.mat-typography .mat-headline-6,.mat-typography h2{font:500 20px/32px Roboto,sans-serif;letter-spacing:.0125em;margin:0 0 16px}.mat-h3,.mat-subtitle-1,.mat-typography .mat-h3,.mat-typography .mat-subtitle-1,.mat-typography h3{font:400 16px/28px Roboto,sans-serif;letter-spacing:.009375em;margin:0 0 16px}.mat-h4,.mat-body-1,.mat-typography .mat-h4,.mat-typography .mat-body-1,.mat-typography h4{font:400 16px/24px Roboto,sans-serif;letter-spacing:.03125em;margin:0 0 16px}.mat-h5,.mat-typography .mat-h5,.mat-typography h5{font:400 11.62px/20px Roboto,sans-serif;margin:0 0 12px}.mat-h6,.mat-typography .mat-h6,.mat-typography h6{font:400 9.38px/20px Roboto,sans-serif;margin:0 0 12px}.mat-body-strong,.mat-subtitle-2,.mat-typography .mat-body-strong,.mat-typography .mat-subtitle-2{font:500 14px/22px Roboto,sans-serif;letter-spacing:.0071428571em}.mat-body,.mat-body-2,.mat-typography .mat-body,.mat-typography .mat-body-2,.mat-typography{font:400 14px/20px Roboto,sans-serif;letter-spacing:.0178571429em}.mat-body p,.mat-body-2 p,.mat-typography .mat-body p,.mat-typography .mat-body-2 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption,.mat-typography .mat-small,.mat-typography .mat-caption{font:400 12px/20px Roboto,sans-serif;letter-spacing:.0333333333em}.mat-headline-1,.mat-typography .mat-headline-1{font:300 96px/96px Roboto,sans-serif;letter-spacing:-.015625em;margin:0 0 56px}.mat-headline-2,.mat-typography .mat-headline-2{font:300 60px/60px Roboto,sans-serif;letter-spacing:-.0083333333em;margin:0 0 64px}.mat-headline-3,.mat-typography .mat-headline-3{font:400 48px/50px Roboto,sans-serif;letter-spacing:normal;margin:0 0 64px}.mat-headline-4,.mat-typography .mat-headline-4{font:400 34px/40px Roboto,sans-serif;letter-spacing:.0073529412em;margin:0 0 64px}:root{--primary-color: rgb(63, 81, 181);--my-primary-color: rgb(67, 80, 175);--my-success-text-color: rgb(94, 140, 117);--my-success-backgroud-color: rgb(203, 228, 216);--my-warning-text-color: rgb(132, 113, 56);--my-warning-backgroud-color: rgb(254, 243, 200);--my-error-text-color: rgb(136, 52, 61);--my-error-backgroud-color: rgb(246, 209, 213);--my-info-text-color: rgb(60, 64, 69);--my-info-backgroud-color: rgb(222, 223, 225);font-size:8px}html,body{margin:0;padding:0;height:100vh;max-height:100vh}html,body{height:100%}body{margin:0;font-family:Roboto,Helvetica Neue,sans-serif}.mat-mdc-snack-bar-container.info-snackbar{--mdc-snackbar-container-color: var(--my-info-backgroud-color);--mdc-snackbar-supporting-text-color: var(--my-info-text-color)}.mat-mdc-snack-bar-container.success-snackbar{--mdc-snackbar-container-color: var(--my-success-backgroud-color);--mdc-snackbar-supporting-text-color: var(--my-success-text-color)}.mat-mdc-snack-bar-container.warning-snackbar{--mdc-snackbar-container-color: var(--my-warning-backgroud-color);--mdc-snackbar-supporting-text-color: var(--my-warning-text-color)}.mat-mdc-snack-bar-container.error-snackbar{--mdc-snackbar-container-color: var(--my-error-backgroud-color);--mdc-snackbar-supporting-text-color: var(--my-error-text-color)}.snack-message{display:flex;align-items:center;height:100%}.snack-message div{height:100%;display:flex;align-items:center}.snack-message div.snack-message-content{margin-left:1rem} diff --git a/internal/middleware/front/dist/front/browser/worker-basic.min.js b/internal/middleware/front/dist/front/browser/worker-basic.min.js new file mode 100755 index 0000000..d98014b --- /dev/null +++ b/internal/middleware/front/dist/front/browser/worker-basic.min.js @@ -0,0 +1,26 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +// tslint:disable:no-console + +self.addEventListener('install', event => { + self.skipWaiting(); +}); + +self.addEventListener('activate', event => { + event.waitUntil(self.clients.claim()); + + event.waitUntil(self.registration.unregister().then(() => { + console.log('NGSW Safety Worker - unregistered old service worker'); + })); + + event.waitUntil(caches.keys().then(cacheNames => { + const ngswCacheNames = cacheNames.filter(name => /^ngsw:/.test(name)); + return Promise.all(ngswCacheNames.map(name => caches.delete(name))); + })); +}); diff --git a/internal/middleware/front/front.go b/internal/middleware/front/front.go new file mode 100644 index 0000000..93f068e --- /dev/null +++ b/internal/middleware/front/front.go @@ -0,0 +1,61 @@ +package front + +import ( + "embed" + "fmt" + "github.com/loveuer/nf" + "github.com/sirupsen/logrus" + "net/http" + "strings" +) + +//go:embed dist/front/browser +var DefaultFront embed.FS + +func NewFront(ff *embed.FS, basePath string) nf.HandlerFunc { + var ( + e error + indexBytes []byte + index string + ) + + index = fmt.Sprintf("%s/index.html", basePath) + + if indexBytes, e = ff.ReadFile(index); e != nil { + logrus.Panicf("read index file err: %v", e) + } + + return func(c *nf.Ctx) error { + var ( + err error + bs []byte + path = c.Path() + ) + + if bs, err = ff.ReadFile(basePath + path); err != nil { + logrus.Debugf("embed read file [%s]%s err: %v", basePath, path, err) + c.Set("Content-Type", "text/html") + _, err = c.Write(indexBytes) + return err + } + + var dbs []byte + if len(bs) > 512 { + dbs = bs[:512] + } else { + dbs = bs + } + + switch { + case strings.HasSuffix(path, ".js"): + c.Set("Content-Type", "application/javascript") + case strings.HasSuffix(path, ".css"): + c.Set("Content-Type", "text/css") + default: + c.Set("Content-Type", http.DetectContentType(dbs)) + } + + _, err = c.Write(bs) + return err + } +} diff --git a/internal/middleware/oplog/new.go b/internal/middleware/oplog/new.go new file mode 100644 index 0000000..718efb4 --- /dev/null +++ b/internal/middleware/oplog/new.go @@ -0,0 +1,117 @@ +package oplog + +import ( + "context" + "github.com/loveuer/nf" + "github.com/loveuer/nfflow/internal/database" + "github.com/loveuer/nfflow/internal/model" + "github.com/loveuer/nfflow/internal/opt" + "github.com/loveuer/nfflow/internal/sqlType" + "github.com/loveuer/nfflow/internal/util" + "github.com/sirupsen/logrus" + "sync" + "time" +) + +var ( + _once = &sync.Once{} + lc = make(chan *model.OpLog, 1024) +) + +// NewOpLog +// +// * 记录操作日志的 中间件使用方法如下: +// +// app := nf.New() +// app.Post("/login", oplog.NewOpLog(ctx), HandleLog) +// +// func HandleLog(c *nf.Ctx) error { +// // 你的操作逻辑 +// c.Local(opt.OpLogLocalKey, &oplog.OpLog{}) +// // 剩下某些逻辑 +// // return xxx +// } +func NewOpLog(ctx context.Context) nf.HandlerFunc { + + _once.Do(func() { + go func() { + var ( + err error + ticker = time.NewTicker(time.Duration(opt.OpLogWriteDurationSecond) * time.Second) + list = make([]*model.OpLog, 0, 1024) + + write = func() { + if len(list) == 0 { + return + } + + if err = database.DB.Session(util.Timeout(10)). + Model(&model.OpLog{}). + Create(&list). + Error; err != nil { + logrus.Errorf("middleware.NewOpLog: write logs err=%v", err) + } + + list = list[:0] + } + ) + + Loop: + for { + select { + case <-ctx.Done(): + break Loop + case <-ticker.C: + write() + case item, ok := <-lc: + if !ok { + return + } + + list = append(list, item) + + if len(list) >= 100 { + write() + } + } + } + + write() + }() + }) + + return func(c *nf.Ctx) error { + now := time.Now() + + err := c.Next() + + op, ok := c.Locals("user").(*model.User) + + opv := c.Locals(opt.OpLogLocalKey) + log, ok := opv.(*OpLog) + if !ok { + logrus.Warnf("middleware.NewOpLog: %s - %s local '%s' to [*OpLog] invalid", c.Method(), c.Path(), opt.OpLogLocalKey) + return err + } + + log.Content["time"] = now.UnixMilli() + log.Content["user_id"] = op.Id + log.Content["username"] = op.Username + log.Content["created_at"] = now.UnixMilli() + + select { + case lc <- &model.OpLog{ + CreatedAt: now.UnixMilli(), + UpdatedAt: now.UnixMilli(), + UserId: op.Id, + Username: op.Username, + Type: log.Type, + Content: sqlType.NewJSONB(log.Content), + }: + case <-util.Timeout(3).Done(): + logrus.Warnf("middleware.NewOpLog: %s - %s log -> chan timeout[3s]", c.Method, c.Path()) + } + + return err + } +} diff --git a/internal/middleware/oplog/oplog.go b/internal/middleware/oplog/oplog.go new file mode 100644 index 0000000..01df92f --- /dev/null +++ b/internal/middleware/oplog/oplog.go @@ -0,0 +1,8 @@ +package oplog + +import "github.com/loveuer/nfflow/internal/model" + +type OpLog struct { + Type model.OpLogType + Content map[string]any +} diff --git a/internal/middleware/privilege/privilege.go b/internal/middleware/privilege/privilege.go new file mode 100644 index 0000000..6ee9d9f --- /dev/null +++ b/internal/middleware/privilege/privilege.go @@ -0,0 +1,86 @@ +package privilege + +import ( + "fmt" + "github.com/loveuer/nf" + "github.com/loveuer/nf/nft/resp" + "github.com/loveuer/nfflow/internal/model" + "github.com/samber/lo" + "github.com/sirupsen/logrus" + "strings" +) + +type Relation int64 + +type vf func(user *model.User, ps ...model.Privilege) error + +const ( + RelationAnd Relation = iota + 1 + RelationOr +) + +var ( + AndFunc vf = func(user *model.User, ps ...model.Privilege) error { + pm := lo.SliceToMap(user.Privileges, func(item model.Privilege) (int64, struct{}) { + return item.Value(), struct{}{} + }) + + for _, p := range ps { + if _, exist := pm[p.Value()]; !exist { + return fmt.Errorf("缺少权限: %d, %s, %s", p.Value(), p.Code(), p.Label()) + } + } + + return nil + } + + OrFunc vf = func(user *model.User, ps ...model.Privilege) error { + pm := lo.SliceToMap(user.Privileges, func(item model.Privilege) (int64, struct{}) { + return item.Value(), struct{}{} + }) + + for _, p := range ps { + if _, exist := pm[p.Value()]; exist { + return nil + } + } + + return fmt.Errorf("缺少权限: %s", strings.Join( + lo.Map(ps, func(item model.Privilege, index int) string { + return item.Code() + }), + ", ", + )) + } +) + +func Verify(relation Relation, privileges ...model.Privilege) nf.HandlerFunc { + + var _vf vf + + switch relation { + case RelationAnd: + _vf = AndFunc + case RelationOr: + _vf = OrFunc + default: + logrus.Panicf("middleware.Verify: unknown relation") + } + + return func(c *nf.Ctx) error { + if len(privileges) == 0 { + return c.Next() + } + + op, ok := c.Locals("user").(*model.User) + if !ok { + return resp.Resp401(c, nil) + } + + if err := _vf(op, privileges...); err != nil { + return resp.Resp403(c, err.Error()) + } + + return c.Next() + } +} diff --git a/internal/model/init.go b/internal/model/init.go new file mode 100644 index 0000000..2e909ee --- /dev/null +++ b/internal/model/init.go @@ -0,0 +1,74 @@ +package model + +import ( + "github.com/loveuer/nfflow/internal/database" + "github.com/loveuer/nfflow/internal/opt" + "github.com/loveuer/nfflow/internal/util" + "github.com/sirupsen/logrus" + "strings" +) + +func MustInit(db database.Store) { + var err error + + if err = initModel(db); err != nil { + logrus.Fatalf("model.MustInit: init models err=%v", err) + } + + logrus.Info("MustInitModels: auto_migrate privilege model success") + + if err = initData(db); err != nil { + logrus.Fatalf("model.MustInit: init datas err=%v", err) + } +} + +func initModel(client database.Store) error { + if err := client.Session(util.Timeout(10)).AutoMigrate( + &User{}, + &OpLog{}, + + &Task{}, + ); err != nil { + return err + } + + logrus.Info("MustInitModels: auto_migrate user model success") + + return nil +} + +func initData(client database.Store) error { + var ( + err error + ) + + { + count := 0 + + if err = client.Session(util.Timeout()).Model(&User{}).Select("count(id)").Take(&count).Error; err != nil { + return err + } + + if count < len(initUsers) { + logrus.Warn("mustInitDatas: user count = 0, start init...") + for _, user := range initUsers { + if err = client.Session(util.Timeout(5)).Model(&User{}).Create(user).Error; err != nil { + if !strings.Contains(err.Error(), "SQLSTATE 23505") { + return err + } + } + } + + if opt.Cfg.Database.Type == "postgresql" { + if err = client.Session(util.Timeout(5)).Exec(`SELECT setval('users_id_seq', (SELECT MAX(id) FROM users))`).Error; err != nil { + return err + } + } + + logrus.Info("mustInitDatas: creat init users success") + + } + } + + return nil +} diff --git a/internal/model/interface.go b/internal/model/interface.go new file mode 100644 index 0000000..eaae85a --- /dev/null +++ b/internal/model/interface.go @@ -0,0 +1,17 @@ +package model + +type Enum interface { + Value() int64 + Code() string + Label() string + + MarshalJSON() ([]byte, error) + + All() []Enum +} + +type OpLogger interface { + Enum + Render(content map[string]any) (string, error) + Template() string +} diff --git a/internal/model/oplog.go b/internal/model/oplog.go new file mode 100644 index 0000000..6f81614 --- /dev/null +++ b/internal/model/oplog.go @@ -0,0 +1,311 @@ +package model + +import ( + "bytes" + "encoding/base64" + "encoding/json" + "github.com/loveuer/nfflow/internal/sqlType" + "github.com/spf13/cast" + "github.com/tdewolff/minify/v2" + "github.com/tdewolff/minify/v2/html" + "html/template" + "time" +) + +var ( + FuncMap = template.FuncMap{ + "time_format": func(mil any, format string) string { + return time.UnixMilli(cast.ToInt64(mil)).Format(format) + }, + } +) + +var ( + _ OpLogger = OpLogType(0) +) + +type OpLogType uint64 + +const ( + OpLogTypeLogin OpLogType = iota + 1 + OpLogTypeLogout + OpLogTypeCreateUser + OpLogTypeUpdateUser + OpLogTypeDeleteUser + + // todo: 添加自己的操作日志 分类 +) + +func (o OpLogType) Value() int64 { + return int64(o) +} + +func (o OpLogType) Code() string { + switch o { + case OpLogTypeLogin: + return "login" + case OpLogTypeLogout: + return "logout" + case OpLogTypeCreateUser: + return "create_user" + case OpLogTypeUpdateUser: + return "update_user" + case OpLogTypeDeleteUser: + return "delete_user" + default: + return "unknown" + } +} + +func (o OpLogType) Label() string { + switch o { + case OpLogTypeLogin: + return "登入" + case OpLogTypeLogout: + return "登出" + case OpLogTypeCreateUser: + return "创建用户" + case OpLogTypeUpdateUser: + return "修改用户" + case OpLogTypeDeleteUser: + return "删除用户" + default: + return "未知" + } +} + +func (o OpLogType) MarshalJSON() ([]byte, error) { + return json.Marshal(map[string]any{ + "value": o.Value(), + "code": o.Code(), + "label": o.Label(), + }) +} + +func (o OpLogType) All() []Enum { + return []Enum{ + OpLogTypeLogin, + OpLogTypeLogout, + OpLogTypeCreateUser, + OpLogTypeUpdateUser, + OpLogTypeDeleteUser, + } +} + +func _trimHTML(v []byte) string { + //if len(v) == 0 { + // return "" + //} + // + //bs := make([]byte, 0, len(v)) + // + //for _, b := range v { + // if b == '\t' || b == '\n' { + // continue + // } + // + // bs = append(bs, b) + //} + + return base64.StdEncoding.EncodeToString(v) + //return string(bs) +} + +var ( + _mini = minify.New() +) + +func init() { + _mini.AddFunc("text/html", html.Minify) +} + +func (o OpLogType) Render(content map[string]any) (string, error) { + var ( + err error + render *template.Template + buf bytes.Buffer + bs []byte + ) + + if render, err = template.New(o.Code()). + Funcs(FuncMap). + Parse(o.Template()); err != nil { + return "", err + } + + if err = render.Execute(&buf, content); err != nil { + return "", err + } + + if bs, err = _mini.Bytes("text/html", buf.Bytes()); err != nil { + return "", err + } + + //return string(bs), nil + + return _trimHTML(bs), nil +} + +const ( + oplogTemplateLogin = ` +
+ 用户 + {{ .username }} + + 于 + {{ time_format .time "2006-01-02 15:04:05" }} + + 在 + {{ .ip }} + + 上 + + 登入 + + 了系统 +
+ ` + oplogTemplateLogout = ` +
+ 用户 + {{ .username }} + + 于 + {{ time_format .time "2006-01-02 15:04:05" }} + + 在 + {{ .ip }} + + 上 + + 登出 + + 了系统 +
+` + oplogTemplateCreateUser = ` +
+ 用户 + {{ .username }} + + 于 + {{ time_format .time "2006-01-02 15:04:05" }} + + + 创建 + + 了用户 + {{ .target_username }} + +
+` + oplogTemplateUpdateUser = ` +
+ 用户 + {{ .username }} + + 于 + {{ time_format .time "2006-01-02 15:04:05" }} + + + 编辑 + + 了用户 + {{ .target_username }} + +
+` + oplogTemplateDeleteUser = ` +
+ 用户 + {{ .username }} + + 于 + {{ time_format .time "2006-01-02 15:04:05" }} + + + 删除 + + 了用户 + {{ .target_username }} + +
+` +) + +func (o OpLogType) Template() string { + switch o { + case OpLogTypeLogin: + return oplogTemplateLogin + case OpLogTypeLogout: + return oplogTemplateLogout + case OpLogTypeCreateUser: + return oplogTemplateCreateUser + case OpLogTypeUpdateUser: + return oplogTemplateUpdateUser + case OpLogTypeDeleteUser: + return oplogTemplateDeleteUser + default: + return `
错误的日志类型
` + } +} + +type OpLog struct { + Id uint64 `json:"id" gorm:"primaryKey;column:id"` + CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"` + UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"` + DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"` + + UserId uint64 `json:"user_id" gorm:"column:user_id"` + Username string `json:"username" gorm:"column:username;varchar(128)"` + Type OpLogType `json:"type" gorm:"column:type;type:varchar(128)"` + Content sqlType.JSONB `json:"content" gorm:"column:content;type:jsonb"` + HTML string `json:"html" gorm:"-"` +} diff --git a/internal/model/privilege.go b/internal/model/privilege.go new file mode 100644 index 0000000..49c046a --- /dev/null +++ b/internal/model/privilege.go @@ -0,0 +1,61 @@ +package model + +import "encoding/json" + +type Privilege uint64 + +type _privilege struct { + Value int64 `json:"value"` + Code string `json:"code"` + Label string `json:"label"` +} + +const ( + PrivilegeUserManage Privilege = iota + 1 + PrivilegeOpLog +) + +func (p Privilege) Value() int64 { + return int64(p) +} + +func (p Privilege) Code() string { + switch p { + case PrivilegeUserManage: + return "user_manage" + case PrivilegeOpLog: + return "oplog" + default: + return "unknown" + } +} + +func (p Privilege) Label() string { + switch p { + case PrivilegeUserManage: + return "用户管理" + case PrivilegeOpLog: + return "操作日志" + default: + return "未知" + } +} + +func (p Privilege) MarshalJSON() ([]byte, error) { + _p := &_privilege{ + Value: int64(p), + Code: p.Code(), + Label: p.Label(), + } + + return json.Marshal(_p) +} + +func (p Privilege) All() []Enum { + return []Enum{ + PrivilegeUserManage, + PrivilegeOpLog, + } +} + +var _ Enum = (*Privilege)(nil) diff --git a/internal/model/role.go b/internal/model/role.go new file mode 100644 index 0000000..bd729dc --- /dev/null +++ b/internal/model/role.go @@ -0,0 +1,85 @@ +package model + +import ( + "encoding/json" + "github.com/loveuer/nfflow/internal/opt" + "gorm.io/gorm" +) + +type _role struct { + Value uint8 `json:"value"` + Code string `json:"code"` + Label string `json:"label"` +} + +type Role uint8 + +var _ Enum = Role(0) + +func (u Role) MarshalJSON() ([]byte, error) { + m := _role{ + Value: uint8(u), + Code: u.Code(), + Label: u.Label(), + } + return json.Marshal(m) +} + +const ( + RoleRoot Role = 255 + RoleAdmin Role = 254 + RoleUser Role = 100 +) + +func (u Role) Code() string { + switch u { + case RoleRoot: + return "root" + case RoleAdmin: + return "admin" + case RoleUser: + return "user" + default: + return "unknown" + } +} + +func (u Role) Label() string { + switch u { + case RoleRoot: + return "根用户" + case RoleAdmin: + return "管理员" + case RoleUser: + return "用户" + default: + return "未知" + } +} + +func (u Role) Value() int64 { + return int64(u) +} + +func (u Role) All() []Enum { + return []Enum{ + RoleAdmin, + RoleUser, + } +} + +func (u Role) Where(db *gorm.DB) *gorm.DB { + if opt.RoleMustLess { + return db.Where("users.role < ?", u.Value()) + } else { + return db.Where("users.role <= ?", u.Value()) + } +} + +func (u Role) CanOP(op *User) bool { + if opt.RoleMustLess { + return op.Role > u + } + + return op.Role >= u +} diff --git a/internal/model/task.go b/internal/model/task.go new file mode 100644 index 0000000..b172a85 --- /dev/null +++ b/internal/model/task.go @@ -0,0 +1,128 @@ +package model + +import ( + "encoding/json" + "github.com/loveuer/nfflow/internal/sqlType" +) + +type InputType int64 + +const ( + InputTypeES InputType = iota + 1 + InputTypePG + InputTypeMQ +) + +type OutputType int64 + +const ( + OutputTypeES OutputType = iota + 1 + OutputTypeFile + OutputTypeMQ +) + +type TaskStatus int64 + +func (t TaskStatus) MarshalJSON() ([]byte, error) { + return json.Marshal(map[string]any{ + "value": t.Value(), + "code": t.Code(), + "label": t.Label(), + }) +} + +func (t TaskStatus) All() []Enum { + return []Enum{ + TaskStatusNotReady, + TaskStatusReady, + TaskStatusRunning, + TaskStatusSucceed, + TaskStatusFailed, + } +} + +var _ Enum = TaskStatus(0) + +const ( + TaskStatusNotReady TaskStatus = iota + TaskStatusReady + TaskStatusRunning + TaskStatusSucceed + TaskStatusFailed +) + +func (t TaskStatus) Value() int64 { + return int64(t) +} + +func (t TaskStatus) Code() string { + switch t { + case TaskStatusNotReady: + return "not_ready" + case TaskStatusReady: + return "ready" + case TaskStatusRunning: + return "running" + case TaskStatusSucceed: + return "succeed" + case TaskStatusFailed: + return "failed" + default: + return "unknown" + } +} + +func (t TaskStatus) Label() string { + switch t { + case TaskStatusNotReady: + return "未完善" + case TaskStatusReady: + return "等待执行" + case TaskStatusRunning: + return "执行中" + case TaskStatusSucceed: + return "执行成功" + case TaskStatusFailed: + return "执行失败" + default: + return "未知" + } +} + +type Task struct { + Id uint64 `json:"id" gorm:"primaryKey;column:id"` + CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"` + UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"` + DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"` + + TaskName string `json:"task_name" gorm:"column:task_name;type:varchar(256)"` + TaskRunType string `json:"task_run_type" gorm:"column:task_run_type;type:varchar(16);default:once"` // cron: C-"cron syntax", "once", timestamp: T-1234567890123 毫秒时间戳 + TimeoutSecond int `json:"timeout_second" gorm:"column:timeout_second"` + TaskStatus TaskStatus `json:"task_status" gorm:"column:task_status"` + TaskLog string `json:"task_log" gorm:"task_log"` +} + +type Input struct { + Id uint64 `json:"id" gorm:"primaryKey;column:id"` + CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"` + UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"` + DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"` + InputType InputType `json:"input_type"` + InputConfig sqlType.JSONB `json:"input_config"` +} + +type Output struct { + Id uint64 `json:"id" gorm:"primaryKey;column:id"` + CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"` + UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"` + DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"` + OutputType OutputType + OutputConfig sqlType.JSONB +} + +type Pipe struct { + Id uint64 `json:"id" gorm:"primaryKey;column:id"` + CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"` + UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"` + DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"` +} diff --git a/internal/model/user.go b/internal/model/user.go new file mode 100644 index 0000000..b2c514c --- /dev/null +++ b/internal/model/user.go @@ -0,0 +1,257 @@ +package model + +import ( + "encoding/json" + "errors" + "fmt" + "github.com/golang-jwt/jwt/v5" + "github.com/loveuer/nfflow/internal/opt" + "github.com/loveuer/nfflow/internal/sqlType" + "github.com/loveuer/nfflow/internal/util" + "github.com/samber/lo" + "github.com/sirupsen/logrus" + "github.com/spf13/cast" + "strings" + "time" +) + +var ( + initUsers = []*User{ + { + Id: 1, + Username: "root", + Password: util.NewPassword("404@Ro0t"), + Nickname: "admin", + Role: RoleRoot, + //Privileges: sqlType.NumSlice[Privilege]{ + // PrivilegeUserManage, + //}, + Privileges: lo.Map(Privilege(0).All(), func(item Enum, index int) Privilege { + return item.(Privilege) + }), + CreatedById: 1, + CreatedByName: "admin", + ActiveAt: time.Now().UnixMilli(), + Deadline: time.Now().AddDate(100, 0, 0).UnixMilli(), + }, + { + Id: 2, + Username: "admin", + Password: util.NewPassword("Foobar123"), + Nickname: "admin", + Role: RoleAdmin, + Privileges: lo.Map(Privilege(0).All(), func(item Enum, index int) Privilege { + return item.(Privilege) + }), + CreatedById: 1, + CreatedByName: "admin", + ActiveAt: time.Now().UnixMilli(), + Deadline: time.Now().AddDate(100, 0, 0).UnixMilli(), + }, + { + Id: 3, + Username: "user", + Password: util.NewPassword("Foobar123"), + Nickname: "user", + Role: RoleUser, + Privileges: sqlType.NumSlice[Privilege]{ + PrivilegeOpLog, + }, + CreatedById: 2, + CreatedByName: "admin", + ActiveAt: time.Now().UnixMilli(), + Deadline: time.Now().AddDate(100, 0, 0).UnixMilli(), + }, + } + + _ Enum = Status(0) +) + +type Status uint64 + +const ( + StatusNormal Status = iota + StatusFrozen +) + +func (s Status) Value() int64 { + return int64(s) +} + +func (s Status) Code() string { + switch s { + case StatusNormal: + return "normal" + case StatusFrozen: + return "frozen" + default: + return "unknown" + } +} + +func (s Status) Label() string { + switch s { + case StatusNormal: + return "正常" + case StatusFrozen: + return "冻结" + default: + return "异常" + } +} + +func (s Status) All() []Enum { + return []Enum{ + StatusNormal, + StatusFrozen, + } +} + +func (s Status) MarshalJSON() ([]byte, error) { + return json.Marshal(map[string]any{ + "value": s.Value(), + "code": s.Code(), + "label": s.Label(), + }) +} + +type User struct { + Id uint64 `json:"id" gorm:"primaryKey;column:id"` + CreatedAt int64 `json:"created_at" gorm:"column:created_at;autoCreateTime:milli"` + UpdatedAt int64 `json:"updated_at" gorm:"column:updated_at;autoUpdateTime:milli"` + DeletedAt int64 `json:"deleted_at" gorm:"index;column:deleted_at;default:0"` + + Username string `json:"username" gorm:"column:username;type:varchar(64);unique"` + Password string `json:"-" gorm:"column:password;type:varchar(256)"` + + Status Status `json:"status" gorm:"column:status;default:0"` + + Nickname string `json:"nickname" gorm:"column:nickname;type:varchar(64)"` + Comment string `json:"comment" gorm:"column:comment"` + + Role Role `json:"role" gorm:"column:role"` + Privileges sqlType.NumSlice[Privilege] `json:"privileges" gorm:"column:privileges;type:bigint[]"` + + CreatedById uint64 `json:"created_by_id" gorm:"column:created_by_id"` + CreatedByName string `json:"created_by_name" gorm:"column:created_by_name;type:varchar(64)"` + + ActiveAt int64 `json:"active_at" gorm:"column:active_at"` + Deadline int64 `json:"deadline" gorm:"column:deadline"` + + LoginAt int64 `json:"login_at" gorm:"-"` +} + +func (u *User) CheckStatus(mustOk bool) error { + switch u.Status { + case StatusNormal: + case StatusFrozen: + if mustOk { + return errors.New("用户被冻结") + } + default: + return errors.New("用户状态未知") + } + + return nil +} + +func (u *User) IsValid(mustOk bool) error { + now := time.Now() + + if now.UnixMilli() >= u.Deadline { + return errors.New("用户已过期") + } + + if now.UnixMilli() < u.ActiveAt { + return errors.New("用户未启用") + } + + if u.DeletedAt > 0 { + return errors.New("用户不存在") + } + + return u.CheckStatus(mustOk) +} + +func (u *User) JwtEncode() (token string, err error) { + + now := time.Now() + + jwtToken := jwt.NewWithClaims(jwt.SigningMethodHS512, jwt.MapClaims{ + "id": u.Id, + "username": u.Username, + "status": u.Status, + "deadline": u.Deadline, + "login_at": now.UnixMilli(), + }) + + if token, err = jwtToken.SignedString([]byte(opt.JwtTokenSecret)); err != nil { + err = fmt.Errorf("JwtEncode: jwt token signed secret err: %v", err) + logrus.Error(err) + return "", nil + } + + return +} + +func (u *User) FromJwt(token string) *User { + var ( + ok bool + err error + pt *jwt.Token + claims jwt.MapClaims + ) + + token = strings.TrimPrefix(token, "Bearer ") + + if pt, err = jwt.Parse(token, func(t *jwt.Token) (interface{}, error) { + if _, ok = t.Method.(*jwt.SigningMethodHMAC); !ok { + return nil, fmt.Errorf("unexpected signing method: %v", t.Header["alg"]) + } + + return []byte(opt.JwtTokenSecret), nil + }); err != nil { + logrus.Errorf("jwt parse err: %v", err) + return nil + } + + if !pt.Valid { + logrus.Warn("parsed jwt invalid") + return nil + } + + if claims, ok = pt.Claims.(jwt.MapClaims); !ok { + logrus.Error("convert jwt claims err") + return nil + } + + u.Id = cast.ToUint64(claims["user_id"]) + u.Username = cast.ToString(claims["username"]) + u.Status = Status(cast.ToInt64(claims["status"])) + u.Deadline = cast.ToInt64(claims["deadline"]) + u.LoginAt = cast.ToInt64(claims["login_at"]) + + return u +} + +func (u User) MarshalBinary() ([]byte, error) { + return json.Marshal(map[string]any{ + "id": u.Id, + "created_at": u.CreatedAt, + "updated_at": u.UpdatedAt, + "deleted_at": u.DeletedAt, + "username": u.Username, + "status": u.Status.Value(), + "nickname": u.Nickname, + "comment": u.Comment, + "role": uint8(u.Role), + "privileges": lo.Map(u.Privileges, func(item Privilege, index int) int64 { + return item.Value() + }), + "created_by_id": u.CreatedById, + "created_by_name": u.CreatedByName, + "active_at": u.ActiveAt, + "deadline": u.Deadline, + "login_at": u.LoginAt, + }) +} diff --git a/internal/opt/opt.go b/internal/opt/opt.go new file mode 100644 index 0000000..09a0a16 --- /dev/null +++ b/internal/opt/opt.go @@ -0,0 +1,84 @@ +package opt + +import ( + "encoding/json" + "flag" + "github.com/sirupsen/logrus" + "io" + "os" + "path" + "runtime" + "strconv" +) + +type database struct { + Type string `json:"type"` // postgresql, mysql, sqlite + Path string `json:"path"` + Host string `json:"host"` + Port int `json:"port"` + DB string `json:"db"` + Username string `json:"username"` + Password string `json:"password"` +} + +type cache struct { + Type string `json:"type"` // redis, memor + Host string `json:"host"` + Port int `json:"port"` + Username string `json:"username"` + Password string `json:"password"` +} + +type config struct { + Name string `json:"name"` + Address string `json:"address"` + Database database `json:"database"` + Cache cache `json:"cache"` +} + +var ( + ConfigFile string + Debug int + Cfg = &config{} +) + +func MustInitConfig() { + flag.Parse() + + var ( + err error + cf *os.File + bs []byte + ) + + if cf, err = os.Open(ConfigFile); err != nil { + logrus.Panicf("MustInitConfig: open config file=%s err=%v", ConfigFile, err) + } + defer cf.Close() + + if bs, err = io.ReadAll(cf); err != nil { + logrus.Panicf("MustInitConfig: read in config file err=%v", err) + } + + if err = json.Unmarshal(bs, Cfg); err != nil { + logrus.Panicf("MustInitConfig: json marshal config=%s err=%v", string(bs), err) + } + + if Debug > 0 { + logrus.SetLevel(logrus.DebugLevel) + + if Debug >= 9999 { + logrus.SetLevel(logrus.TraceLevel) + logrus.SetReportCaller(true) + logrus.SetFormatter(&logrus.TextFormatter{ + ForceColors: true, + CallerPrettyfier: func(frame *runtime.Frame) (string, string) { + file := path.Base(frame.File) + return "", " " + file + ":" + strconv.Itoa(frame.Line) + }, + }) + } + } + + logrus.Infof("read in config detail: \n%s", string(bs)) +} diff --git a/internal/opt/var.go b/internal/opt/var.go new file mode 100644 index 0000000..7acd160 --- /dev/null +++ b/internal/opt/var.go @@ -0,0 +1,46 @@ +package opt + +import "time" + +const ( + Version = "v0.0.1" + + // todo: 可以替换自己生生成的 secret + JwtTokenSecret = "7^D+UW3BPB2Mnz)bY3uVrAUyv&dj8Kdz" + + // todo: 是否打开 gorm 的 debug 打印 (开发和 dev 环境时可以打开) + DBDebug = true + + // todo: 同一个账号是否可以多 client 登录 + MultiLogin = false + + // todo: 用户量不大的情况, 并没有缓存用户具体信息, 如果需要可以打开 + EnableUserCache = true + + // todo: 缓存时, key 的前缀 + CachePrefix = "ultone" + + // todo: 登录颁发的 cookie 的 name + CookieName = "utlone-token" + + // todo: 用户列表,日志列表 size 参数 + DefaultSize, MaxSize = 20, 200 + + // todo: 操作用户时, role 相等时能否操作: 包括 列表, 能否新建,修改,删除同样 role 的用户 + RoleMustLess = false + + // todo: 通过 c.Local() 存入 oplog 时的 key 值 + OpLogLocalKey = "oplog" + + // todo: 操作日志 最多延迟多少秒写入(最多缓存多少秒的日志,然后 bulk 写入) + OpLogWriteDurationSecond = 5 + + TaskMinTimeout = 10 + TaskMaxTimeout = 24 * 3600 + TaskFetchInterval = 5 * 60 +) + +var ( + // todo: 颁发的 token, (cookie) 在缓存中存在的时间 (每次请求该时间也会被刷新) + TokenTimeout = time.Duration(3600*12) * time.Second +) diff --git a/internal/sqlType/err.go b/internal/sqlType/err.go new file mode 100644 index 0000000..d1195e0 --- /dev/null +++ b/internal/sqlType/err.go @@ -0,0 +1,9 @@ +package sqlType + +import "errors" + +var ( + ErrConvertScanVal = errors.New("convert scan val to str err") + ErrInvalidScanVal = errors.New("scan val invalid") + ErrConvertVal = errors.New("convert err") +) diff --git a/internal/sqlType/jsonb.go b/internal/sqlType/jsonb.go new file mode 100644 index 0000000..ace1417 --- /dev/null +++ b/internal/sqlType/jsonb.go @@ -0,0 +1,76 @@ +package sqlType + +import ( + "database/sql/driver" + "encoding/json" + + "github.com/jackc/pgtype" +) + +type JSONB struct { + Val pgtype.JSONB + Valid bool +} + +func NewJSONB(v interface{}) JSONB { + j := new(JSONB) + j.Val = pgtype.JSONB{} + if err := j.Val.Set(v); err == nil { + j.Valid = true + return *j + } + + return *j +} + +func (j *JSONB) Set(value interface{}) error { + if err := j.Val.Set(value); err != nil { + j.Valid = false + return err + } + + j.Valid = true + + return nil +} + +func (j *JSONB) Bind(model interface{}) error { + return j.Val.AssignTo(model) +} + +func (j *JSONB) Scan(value interface{}) error { + j.Val = pgtype.JSONB{} + if value == nil { + j.Valid = false + return nil + } + + j.Valid = true + + return j.Val.Scan(value) +} + +func (j JSONB) Value() (driver.Value, error) { + if j.Valid { + return j.Val.Value() + } + + return nil, nil +} + +func (j JSONB) MarshalJSON() ([]byte, error) { + if j.Valid { + return j.Val.MarshalJSON() + } + + return json.Marshal(nil) +} + +func (j *JSONB) UnmarshalJSON(b []byte) error { + if string(b) == "null" { + j.Valid = false + return j.Val.UnmarshalJSON(b) + } + + return j.Val.UnmarshalJSON(b) +} diff --git a/internal/sqlType/nullStr.go b/internal/sqlType/nullStr.go new file mode 100644 index 0000000..a7df3cf --- /dev/null +++ b/internal/sqlType/nullStr.go @@ -0,0 +1,42 @@ +package sqlType + +import ( + "database/sql" + "encoding/json" +) + +// type NullString struct { +// sql.NullString +// } + +type NullString struct{ sql.NullString } + +func NewNullString(val string) NullString { + if val == "" { + return NullString{} + } + + return NullString{sql.NullString{Valid: true, String: val}} +} + +func (ns NullString) MarshalJSON() ([]byte, error) { + if !ns.Valid { + return json.Marshal(nil) + } + + return json.Marshal(ns.String) +} + +func (ns *NullString) UnmarshalJSON(data []byte) error { + if string(data) == "null" { + ns.Valid = false + return nil + } + + if err := json.Unmarshal(data, &ns.String); err != nil { + ns.Valid = true + return err + } + + return nil +} diff --git a/internal/sqlType/set.go b/internal/sqlType/set.go new file mode 100644 index 0000000..03812b0 --- /dev/null +++ b/internal/sqlType/set.go @@ -0,0 +1,53 @@ +package sqlType + +import "encoding/json" + +type Set map[string]struct{} + +func (s Set) MarshalJSON() ([]byte, error) { + array := make([]string, 0) + for name := range s { + array = append(array, name) + } + + return json.Marshal(array) +} + +func (s *Set) UnmarshalJSON(b []byte) error { + array := make([]string, 0) + if err := json.Unmarshal(b, &array); err != nil { + return err + } + + set := make(map[string]struct{}) + + for _, name := range array { + set[name] = struct{}{} + } + + *s = set + return nil +} + +func (s Set) ToStringSlice() []string { + var ( + result = make([]string, 0, len(s)) + ) + + for key := range s { + result = append(result, key) + } + + return result +} + +func (s *Set) FromStringSlice(ss *[]string) { + if s == nil { + m := make(Set) + s = &m + } + + for idx := range *(ss) { + (*s)[(*ss)[idx]] = struct{}{} + } +} diff --git a/internal/sqlType/strSlice.go b/internal/sqlType/strSlice.go new file mode 100644 index 0000000..05d7875 --- /dev/null +++ b/internal/sqlType/strSlice.go @@ -0,0 +1,109 @@ +package sqlType + +import ( + "bytes" + "database/sql/driver" + "encoding/json" +) + +type StrSlice []string + +func (s *StrSlice) Scan(val interface{}) error { + + str, ok := val.(string) + if !ok { + return ErrConvertScanVal + } + + if len(str) < 2 { + return nil + } + + bs := make([]byte, 0, 128) + bss := make([]byte, 0, 2*len(str)) + + quoteCount := 0 + + for idx := 1; idx < len(str)-1; idx++ { + // 44: , 92: \ 34: " + quote := str[idx] + switch quote { + case 44: + if quote == 44 && str[idx-1] != 92 && quoteCount == 0 { + if len(bs) > 0 { + if !(bs[0] == 34 && bs[len(bs)-1] == 34) { + bs = append([]byte{34}, bs...) + bs = append(bs, 34) + } + + bss = append(bss, bs...) + bss = append(bss, 44) + } + bs = bs[:0] + } else { + bs = append(bs, quote) + } + case 34: + if str[idx-1] != 92 { + quoteCount = (quoteCount + 1) % 2 + } + bs = append(bs, quote) + default: + bs = append(bs, quote) + } + + //bs = append(bs, str[idx]) + } + + if len(bs) > 0 { + if !(bs[0] == 34 && bs[len(bs)-1] == 34) { + bs = append([]byte{34}, bs...) + bs = append(bs, 34) + } + + bss = append(bss, bs...) + } else { + if len(bss) > 2 { + bss = bss[:len(bss)-2] + } + } + + bss = append([]byte{'['}, append(bss, ']')...) + + if err := json.Unmarshal(bss, s); err != nil { + return err + } + + return nil +} + +func (s StrSlice) Value() (driver.Value, error) { + if s == nil { + return "{}", nil + } + + if len(s) == 0 { + return "{}", nil + } + + buf := &bytes.Buffer{} + + encoder := json.NewEncoder(buf) + encoder.SetEscapeHTML(false) + + if err := encoder.Encode(s); err != nil { + return "{}", err + } + + bs := buf.Bytes() + + bs[0] = '{' + + if bs[len(bs)-1] == 10 { + bs = bs[:len(bs)-1] + } + + bs[len(bs)-1] = '}' + + return string(bs), nil +} diff --git a/internal/sqlType/uint64Slice.go b/internal/sqlType/uint64Slice.go new file mode 100644 index 0000000..7bba191 --- /dev/null +++ b/internal/sqlType/uint64Slice.go @@ -0,0 +1,71 @@ +package sqlType + +import ( + "database/sql/driver" + "fmt" + "strconv" + "strings" + + "github.com/spf13/cast" +) + +type NumSlice[T ~int | ~int64 | ~uint | ~uint64] []T + +func (n *NumSlice[T]) Scan(val interface{}) error { + str, ok := val.(string) + if !ok { + return ErrConvertScanVal + } + + length := len(str) + + if length <= 0 { + *n = make(NumSlice[T], 0) + return nil + } + + if str[0] != '{' || str[length-1] != '}' { + return ErrInvalidScanVal + } + + str = str[1 : length-1] + if len(str) == 0 { + *n = make(NumSlice[T], 0) + return nil + } + + numStrs := strings.Split(str, ",") + nums := make([]T, len(numStrs)) + + for idx := range numStrs { + num, err := cast.ToInt64E(strings.TrimSpace(numStrs[idx])) + if err != nil { + return fmt.Errorf("%w: can't convert to %T", ErrConvertVal, T(0)) + } + + nums[idx] = T(num) + } + + *n = nums + + return nil +} + +func (n NumSlice[T]) Value() (driver.Value, error) { + if n == nil { + return "{}", nil + } + + if len(n) == 0 { + return "{}", nil + } + + ss := make([]string, 0, len(n)) + for idx := range n { + ss = append(ss, strconv.Itoa(int(n[idx]))) + } + + s := strings.Join(ss, ", ") + + return fmt.Sprintf("{%s}", s), nil +} diff --git a/internal/util/ctx.go b/internal/util/ctx.go new file mode 100644 index 0000000..2e83851 --- /dev/null +++ b/internal/util/ctx.go @@ -0,0 +1,22 @@ +package util + +import ( + "context" + "time" +) + +func Timeout(seconds ...int) (ctx context.Context) { + var ( + duration time.Duration + ) + + if len(seconds) > 0 && seconds[0] > 0 { + duration = time.Duration(seconds[0]) * time.Second + } else { + duration = time.Duration(30) * time.Second + } + + ctx, _ = context.WithTimeout(context.Background(), duration) + + return +} diff --git a/internal/util/password.go b/internal/util/password.go new file mode 100644 index 0000000..3b94a9b --- /dev/null +++ b/internal/util/password.go @@ -0,0 +1,84 @@ +package util + +import ( + "crypto/sha256" + "encoding/hex" + "errors" + "fmt" + "github.com/sirupsen/logrus" + "golang.org/x/crypto/pbkdf2" + "regexp" + "strconv" + "strings" +) + +const ( + EncryptHeader string = "pbkdf2:sha256" // 用户密码加密 +) + +func NewPassword(password string) string { + return EncryptPassword(password, RandomString(8), int(RandomInt(50000)+100000)) +} + +func ComparePassword(in, db string) bool { + strs := strings.Split(db, "$") + if len(strs) != 3 { + logrus.Errorf("password in db invalid: %s", db) + return false + } + + encs := strings.Split(strs[0], ":") + if len(encs) != 3 { + logrus.Errorf("password in db invalid: %s", db) + return false + } + + encIteration, err := strconv.Atoi(encs[2]) + if err != nil { + logrus.Errorf("password in db invalid: %s, convert iter err: %s", db, err) + return false + } + + return EncryptPassword(in, strs[1], encIteration) == db +} + +func EncryptPassword(password, salt string, iter int) string { + hash := pbkdf2.Key([]byte(password), []byte(salt), iter, 32, sha256.New) + encrypted := hex.EncodeToString(hash) + return fmt.Sprintf("%s:%d$%s$%s", EncryptHeader, iter, salt, encrypted) +} + +func CheckPassword(password string) error { + if len(password) < 8 || len(password) > 32 { + return errors.New("密码长度不符合") + } + + var ( + err error + match bool + patternList = []string{`[0-9]+`, `[a-z]+`, `[A-Z]+`, `[!@#%]+`} //, `[~!@#$%^&*?_-]+`} + matchAccount = 0 + tips = []string{"缺少数字", "缺少小写字母", "缺少大写字母", "缺少'!@#%'"} + locktips = make([]string, 0) + ) + + for idx, pattern := range patternList { + match, err = regexp.MatchString(pattern, password) + if err != nil { + logrus.Warnf("regex match string err, reg_str: %s, err: %v", pattern, err) + return errors.New("密码强度不够") + } + + if match { + matchAccount++ + } else { + locktips = append(locktips, tips[idx]) + } + } + + if matchAccount < 3 { + return fmt.Errorf("密码强度不够, 可能 %s", strings.Join(locktips, ", ")) + } + + return nil +} diff --git a/internal/util/random.go b/internal/util/random.go new file mode 100644 index 0000000..a612286 --- /dev/null +++ b/internal/util/random.go @@ -0,0 +1,54 @@ +package util + +import ( + "crypto/rand" + "math/big" +) + +var ( + letters = []byte("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") + letterNum = []byte("0123456789") + letterLow = []byte("abcdefghijklmnopqrstuvwxyz") + letterCap = []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZ") + letterSyb = []byte("!@#$%^&*()_+-=") +) + +func RandomInt(max int64) int64 { + num, _ := rand.Int(rand.Reader, big.NewInt(max)) + return num.Int64() +} + +func RandomString(length int) string { + result := make([]byte, length) + for i := 0; i < length; i++ { + num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letters)))) + result[i] = letters[num.Int64()] + } + return string(result) +} + +func RandomPassword(length int, withSymbol bool) string { + result := make([]byte, length) + kind := 3 + if withSymbol { + kind++ + } + + for i := 0; i < length; i++ { + switch i % kind { + case 0: + num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterNum)))) + result[i] = letterNum[num.Int64()] + case 1: + num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterLow)))) + result[i] = letterLow[num.Int64()] + case 2: + num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterCap)))) + result[i] = letterCap[num.Int64()] + case 3: + num, _ := rand.Int(rand.Reader, big.NewInt(int64(len(letterSyb)))) + result[i] = letterSyb[num.Int64()] + } + } + return string(result) +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..63498cd --- /dev/null +++ b/main.go @@ -0,0 +1,22 @@ +package main + +import ( + "context" + "github.com/loveuer/nfflow/internal/cmd" + "github.com/loveuer/nfflow/internal/util" + "github.com/sirupsen/logrus" + "os/signal" + "syscall" +) + +func main() { + ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT) + defer cancel() + + if err := cmd.Execute(ctx); err != nil { + logrus.Errorf("cmd.Execute: err=%v", err) + } + + logrus.Warn("received quit signal...(2s)") + <-util.Timeout(2).Done() +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..49fe72b --- /dev/null +++ b/readme.md @@ -0,0 +1,35 @@ +# utl-one: utl all in one + +### Usage + +- 1. `git clone -b master --depth 1 http://10.220.10.35/dev/template/ultone.git {your_project_name}` + +- 2. `cd {your_project_name} && rm -rf .git && git init` + +- 3. `go mod tidy` + +### Setting + +#### 仔细查看项目中的 todo + +#### 仔细查看 opt.var 中的设置 + +#### SQL + +- sqlite: +- postgresql: +- mysql + +#### Cache + +- redis +- memory + +### Feature + +- 用户全功能模块 +- 操作日志 + +### Next + +- common user list (比如操作日志用户下拉) \ No newline at end of file