From be7322e62c7df481bed2349ceb1245d73a172156 Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 09:28:08 +0100 Subject: [PATCH 01/15] Format --- ui/angular.json | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/ui/angular.json b/ui/angular.json index b990771..d8e019a 100644 --- a/ui/angular.json +++ b/ui/angular.json @@ -13,14 +13,12 @@ "build": { "builder": "@angular/build:application", "options": { - "outputPath": { + "outputPath": { "base": "../server/wwwroot", "browser": "" }, "browser": "src/main.ts", - "polyfills": [ - "zone.js" - ], + "polyfills": ["zone.js"], "tsConfig": "tsconfig.app.json", "assets": [ { @@ -28,9 +26,7 @@ "input": "public" } ], - "styles": [ - "src/styles.css" - ] + "styles": ["src/styles.css"] }, "configurations": { "production": { @@ -58,11 +54,11 @@ }, "serve": { "builder": "@angular/build:dev-server", - "options": { - "sslKey": "certs/dev_localhost.key", - "sslCert": "certs/dev_localhost.pem", - "port": 4201, - }, + "options": { + "sslKey": "certs/dev_localhost.key", + "sslCert": "certs/dev_localhost.pem", + "port": 4201 + }, "configurations": { "production": { "buildTarget": "ui:build:production" @@ -79,10 +75,7 @@ "test": { "builder": "@angular/build:karma", "options": { - "polyfills": [ - "zone.js", - "zone.js/testing" - ], + "polyfills": ["zone.js", "zone.js/testing"], "tsConfig": "tsconfig.spec.json", "assets": [ { @@ -90,9 +83,7 @@ "input": "public" } ], - "styles": [ - "src/styles.css" - ] + "styles": ["src/styles.css"] } } } From 9765312cb7253bccc4002531707c37b4a7e41283 Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 09:33:21 +0100 Subject: [PATCH 02/15] Formatting & adjustments in README --- .github/workflows/dotnet.yml | 6 ++--- README.md | 46 ++++++++++++++++-------------------- ui/certs/Readme.md | 13 +++++++--- 3 files changed, 33 insertions(+), 32 deletions(-) diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 7e2770d..e5619f0 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -1,18 +1,16 @@ - name: .NET and npm build on: push: - branches: [ "main" ] + branches: ["main"] pull_request: - branches: [ "main" ] + branches: ["main"] jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v5 diff --git a/README.md b/README.md index a32e316..e1005e0 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ The ASP.NET Core project is setup to run in development and production. In produ Configure the YARP reverse proxy to match the Angular CLI URL. This is only required in development. I always use HTTPS in development and the port needs to match the Angular CLI developement env. > [!IMPORTANT] -> In a real Angular project, the additional dev routes need to be added so that the __dev refresh__ works! +> In a real Angular project, the additional dev routes need to be added so that the **dev refresh** works! ```json "UiDevServerUrl": "https://localhost:4201", @@ -100,38 +100,39 @@ Configure the YARP reverse proxy to match the Angular CLI URL. This is only requ ## Setup Angular CLI -Add the certificates to the CLI project for example in the **/certs** folder +Add the certificates to the CLI project for example in the **/certs** folder. -Update the Angular CLI angular.json file: +Update the Angular CLI `angular.json` file: ```json +... "serve": { - "builder": "@angular/build:dev-server", - "options": { - "sslKey": "certs/dev_localhost.key", - "sslCert": "certs/dev_localhost.pem", - "port": 4201, - }, + "builder": "@angular/build:dev-server", + "options": { + "sslKey": "certs/dev_localhost.key", + "sslCert": "certs/dev_localhost.pem", + "port": 4201 + } +} +... ``` > [!NOTE] > The default Angular setup uses port 4200, this needs to match the YARP reverse proxy settings for development. -Update the outputPath for the (angular cli build) to deploy the production paths to the wwwroot of the .NET project +Update the `outputPath` for the (Angular CLI build) to deploy the production paths to the `wwwroot` of the .NET project ``` -"architect": { + "architect": { "build": { "builder": "@angular/build:application", "options": { - "outputPath": { + "outputPath": { "base": "../server/wwwroot", "browser": "" }, "browser": "src/main.ts", - "polyfills": [ - "zone.js" - ], + "polyfills": ["zone.js"], "tsConfig": "tsconfig.app.json", "assets": [ { @@ -139,9 +140,7 @@ Update the outputPath for the (angular cli build) to deploy the production paths "input": "public" } ], - "styles": [ - "src/styles.css" - ] + "styles": ["src/styles.css"] }, ``` @@ -219,7 +218,7 @@ Add the Azure App registration settings to the **appsettings.Development.json** }, ``` -App Service (linux plan) configuration +App Service (linux plan) configuration ``` MicrosoftEntraID__Instance --your-value-- @@ -253,24 +252,22 @@ Or just open Visual Studio and run the solution. Github actions is used for the DevOps. The build pipeline builds both the .NET project and the Angular CLI project using npm. The two projects are built in the same step because the UI project is built into the wwwroot of the server project. ```yaml - name: .NET and npm build on: push: - branches: [ "main" ] + branches: ["main"] pull_request: - branches: [ "main" ] + branches: ["main"] jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - name: Setup .NET - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v5 with: dotnet-version: 9.0.x @@ -289,7 +286,6 @@ jobs: run: dotnet build --no-restore - name: Test run: dotnet test --no-build --verbosity normal - ``` ## github actions Azure deployment diff --git a/ui/certs/Readme.md b/ui/certs/Readme.md index ffc0ee8..8151140 100644 --- a/ui/certs/Readme.md +++ b/ui/certs/Readme.md @@ -8,7 +8,14 @@ 1. Update the `ui\angular.json` file to point to the certificate files: ```json - "sslKey": "certs/dev_localhost.key", - "sslCert": "certs/dev_localhost.pem", - "port": 4201 + ... + "serve": { + "builder": "@angular/build:dev-server", + "options": { + "sslKey": "certs/dev_localhost.key", + "sslCert": "certs/dev_localhost.pem", + "port": 4201 + } + } + ... ``` From 354de64ccc042784b559207876c5c87f6c9ef73a Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 09:39:13 +0100 Subject: [PATCH 03/15] remove content of wwwroot --- server/wwwroot/3rdpartylicenses.txt | 355 ------------------------- server/wwwroot/favicon.ico | Bin 15086 -> 0 bytes server/wwwroot/index.html | 14 - server/wwwroot/main-XIYAOO2E.js | 5 - server/wwwroot/polyfills-5CFQRCPP.js | 2 - server/wwwroot/prerendered-routes.json | 3 - server/wwwroot/styles-5INURTSO.css | 0 7 files changed, 379 deletions(-) delete mode 100644 server/wwwroot/3rdpartylicenses.txt delete mode 100644 server/wwwroot/favicon.ico delete mode 100644 server/wwwroot/index.html delete mode 100644 server/wwwroot/main-XIYAOO2E.js delete mode 100644 server/wwwroot/polyfills-5CFQRCPP.js delete mode 100644 server/wwwroot/prerendered-routes.json delete mode 100644 server/wwwroot/styles-5INURTSO.css diff --git a/server/wwwroot/3rdpartylicenses.txt b/server/wwwroot/3rdpartylicenses.txt deleted file mode 100644 index 02a097b..0000000 --- a/server/wwwroot/3rdpartylicenses.txt +++ /dev/null @@ -1,355 +0,0 @@ - --------------------------------------------------------------------------------- -Package: @angular/core -License: "MIT" - -The MIT License - -Copyright (c) 2010-2025 Google LLC. https://angular.dev/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. - --------------------------------------------------------------------------------- -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" - -The MIT License - -Copyright (c) 2010-2025 Google LLC. https://angular.dev/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. - --------------------------------------------------------------------------------- -Package: @angular/platform-browser -License: "MIT" - -The MIT License - -Copyright (c) 2010-2025 Google LLC. https://angular.dev/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. - --------------------------------------------------------------------------------- -Package: @angular/router -License: "MIT" - -The MIT License - -Copyright (c) 2010-2025 Google LLC. https://angular.dev/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. - --------------------------------------------------------------------------------- -Package: zone.js -License: "MIT" - -The MIT License - -Copyright (c) 2010-2025 Google LLC. https://angular.dev/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/server/wwwroot/favicon.ico b/server/wwwroot/favicon.ico deleted file mode 100644 index 57614f9c967596fad0a3989bec2b1deff33034f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmd^G33O9Omi+`8$@{|M-I6TH3wzF-p5CV8o}7f~KxR60LK+ApEFB<$bcciv%@SmA zV{n>g85YMFFeU*Uvl=i4v)C*qgnb;$GQ=3XTe9{Y%c`mO%su)noNCCQ*@t1WXn|B(hQ7i~ zrUK8|pUkD6#lNo!bt$6)jR!&C?`P5G(`e((P($RaLeq+o0Vd~f11;qB05kdbAOm?r zXv~GYr_sibQO9NGTCdT;+G(!{4Xs@4fPak8#L8PjgJwcs-Mm#nR_Z0s&u?nDX5^~@ z+A6?}g0|=4e_LoE69pPFO`yCD@BCjgKpzMH0O4Xs{Ahc?K3HC5;l=f zg>}alhBXX&);z$E-wai+9TTRtBX-bWYY@cl$@YN#gMd~tM_5lj6W%8ah4;uZ;jP@Q zVbuel1rPA?2@x9Y+u?e`l{Z4ngfG5q5BLH5QsEu4GVpt{KIp1?U)=3+KQ;%7ec8l* zdV=zZgN5>O3G(3L2fqj3;oBbZZw$Ij@`Juz@?+yy#OPw)>#wsTewVgTK9BGt5AbZ&?K&B3GVF&yu?@(Xj3fR3n+ZP0%+wo)D9_xp>Z$`A4 zfV>}NWjO#3lqumR0`gvnffd9Ka}JJMuHS&|55-*mCD#8e^anA<+sFZVaJe7{=p*oX zE_Uv?1>e~ga=seYzh{9P+n5<+7&9}&(kwqSaz;1aD|YM3HBiy<))4~QJSIryyqp| z8nGc(8>3(_nEI4n)n7j(&d4idW1tVLjZ7QbNLXg;LB ziHsS5pXHEjGJZb59KcvS~wv;uZR-+4qEqow`;JCfB*+b^UL^3!?;-^F%yt=VjU|v z39SSqKcRu_NVvz!zJzL0CceJaS6%!(eMshPv_0U5G`~!a#I$qI5Ic(>IONej@aH=f z)($TAT#1I{iCS4f{D2+ApS=$3E7}5=+y(rA9mM#;Cky%b*Gi0KfFA`ofKTzu`AV-9 znW|y@19rrZ*!N2AvDi<_ZeR3O2R{#dh1#3-d%$k${Rx42h+i&GZo5!C^dSL34*AKp z27mTd>k>?V&X;Nl%GZ(>0s`1UN~Hfyj>KPjtnc|)xM@{H_B9rNr~LuH`Gr5_am&Ep zTjZA8hljNj5H1Ipm-uD9rC}U{-vR!eay5&6x6FkfupdpT*84MVwGpdd(}ib)zZ3Ky z7C$pnjc82(W_y_F{PhYj?o!@3__UUvpX)v69aBSzYj3 zdi}YQkKs^SyXyFG2LTRz9{(w}y~!`{EuAaUr6G1M{*%c+kP1olW9z23dSH!G4_HSK zzae-DF$OGR{ofP*!$a(r^5Go>I3SObVI6FLY)N@o<*gl0&kLo-OT{Tl*7nCz>Iq=? zcigIDHtj|H;6sR?or8Wd_a4996GI*CXGU}o;D9`^FM!AT1pBY~?|4h^61BY#_yIfO zKO?E0 zJ{Pc`9rVEI&$xxXu`<5E)&+m(7zX^v0rqofLs&bnQT(1baQkAr^kEsk)15vlzAZ-l z@OO9RF<+IiJ*O@HE256gCt!bF=NM*vh|WVWmjVawcNoksRTMvR03H{p@cjwKh(CL4 z7_PB(dM=kO)!s4fW!1p0f93YN@?ZSG` z$B!JaAJCtW$B97}HNO9(x-t30&E}Mo1UPi@Av%uHj~?T|!4JLwV;KCx8xO#b9IlUW zI6+{a@Wj|<2Y=U;a@vXbxqZNngH8^}LleE_4*0&O7#3iGxfJ%Id>+sb;7{L=aIic8 z|EW|{{S)J-wr@;3PmlxRXU8!e2gm_%s|ReH!reFcY8%$Hl4M5>;6^UDUUae?kOy#h zk~6Ee_@ZAn48Bab__^bNmQ~+k=02jz)e0d9Z3>G?RGG!65?d1>9}7iG17?P*=GUV-#SbLRw)Hu{zx*azHxWkGNTWl@HeWjA?39Ia|sCi{e;!^`1Oec zb>Z|b65OM*;eC=ZLSy?_fg$&^2xI>qSLA2G*$nA3GEnp3$N-)46`|36m*sc#4%C|h zBN<2U;7k>&G_wL4=Ve5z`ubVD&*Hxi)r@{4RCDw7U_D`lbC(9&pG5C*z#W>8>HU)h z!h3g?2UL&sS!oY5$3?VlA0Me9W5e~V;2jds*fz^updz#AJ%G8w2V}AEE?E^=MK%Xt z__Bx1cr7+DQmuHmzn*|hh%~eEc9@m05@clWfpEFcr+06%0&dZJH&@8^&@*$qR@}o3 z@Tuuh2FsLz^zH+dN&T&?0G3I?MpmYJ;GP$J!EzjeM#YLJ!W$}MVNb0^HfOA>5Fe~UNn%Zk(PT@~9}1dt)1UQ zU*B5K?Dl#G74qmg|2>^>0WtLX#Jz{lO4NT`NYB*(L#D|5IpXr9v&7a@YsGp3vLR7L zHYGHZg7{ie6n~2p$6Yz>=^cEg7tEgk-1YRl%-s7^cbqFb(U7&Dp78+&ut5!Tn(hER z|Gp4Ed@CnOPeAe|N>U(dB;SZ?NU^AzoD^UAH_vamp6Ws}{|mSq`^+VP1g~2B{%N-!mWz<`)G)>V-<`9`L4?3dM%Qh6<@kba+m`JS{Ya@9Fq*m6$$ zA1%Ogc~VRH33|S9l%CNb4zM%k^EIpqY}@h{w(aBcJ9c05oiZx#SK9t->5lSI`=&l~ z+-Ic)a{FbBhXV$Xt!WRd`R#Jk-$+_Z52rS>?Vpt2IK<84|E-SBEoIw>cs=a{BlQ7O z-?{Fy_M&84&9|KM5wt~)*!~i~E=(6m8(uCO)I=)M?)&sRbzH$9Rovzd?ZEY}GqX+~ zFbEbLz`BZ49=2Yh-|<`waK-_4!7`ro@zlC|r&I4fc4oyb+m=|c8)8%tZ-z5FwhzDt zL5kB@u53`d@%nHl0Sp)Dw`(QU&>vujEn?GPEXUW!Wi<+4e%BORl&BIH+SwRcbS}X@ z01Pk|vA%OdJKAs17zSXtO55k!;%m9>1eW9LnyAX4uj7@${O6cfii`49qTNItzny5J zH&Gj`e}o}?xjQ}r?LrI%FjUd@xflT3|7LA|ka%Q3i}a8gVm<`HIWoJGH=$EGClX^C0lysQJ>UO(q&;`T#8txuoQ_{l^kEV9CAdXuU1Ghg8 zN_6hHFuy&1x24q5-(Z7;!poYdt*`UTdrQOIQ!2O7_+AHV2hgXaEz7)>$LEdG z<8vE^Tw$|YwZHZDPM!SNOAWG$?J)MdmEk{U!!$M#fp7*Wo}jJ$Q(=8>R`Ats?e|VU?Zt7Cdh%AdnfyN3MBWw{ z$OnREvPf7%z6`#2##_7id|H%Y{vV^vWXb?5d5?a_y&t3@p9t$ncHj-NBdo&X{wrfJ zamN)VMYROYh_SvjJ=Xd!Ga?PY_$;*L=SxFte!4O6%0HEh%iZ4=gvns7IWIyJHa|hT z2;1+e)`TvbNb3-0z&DD_)Jomsg-7p_Uh`wjGnU1urmv1_oVqRg#=C?e?!7DgtqojU zWoAB($&53;TsXu^@2;8M`#z{=rPy?JqgYM0CDf4v@z=ZD|ItJ&8%_7A#K?S{wjxgd z?xA6JdJojrWpB7fr2p_MSsU4(R7=XGS0+Eg#xR=j>`H@R9{XjwBmqAiOxOL` zt?XK-iTEOWV}f>Pz3H-s*>W z4~8C&Xq25UQ^xH6H9kY_RM1$ch+%YLF72AA7^b{~VNTG}Tj#qZltz5Q=qxR`&oIlW Nr__JTFzvMr^FKp4S3v*( diff --git a/server/wwwroot/index.html b/server/wwwroot/index.html deleted file mode 100644 index 6ff619b..0000000 --- a/server/wwwroot/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - ui - - - - - - - - diff --git a/server/wwwroot/main-XIYAOO2E.js b/server/wwwroot/main-XIYAOO2E.js deleted file mode 100644 index 5cf180e..0000000 --- a/server/wwwroot/main-XIYAOO2E.js +++ /dev/null @@ -1,5 +0,0 @@ -var Pg=Object.defineProperty,kg=Object.defineProperties;var Fg=Object.getOwnPropertyDescriptors;var Tl=Object.getOwnPropertySymbols;var Lg=Object.prototype.hasOwnProperty,jg=Object.prototype.propertyIsEnumerable;var _l=(e,n,t)=>n in e?Pg(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,g=(e,n)=>{for(var t in n||={})Lg.call(n,t)&&_l(e,t,n[t]);if(Tl)for(var t of Tl(n))jg.call(n,t)&&_l(e,t,n[t]);return e},j=(e,n)=>kg(e,Fg(n));var wn=(e,n,t)=>new Promise((r,o)=>{var i=c=>{try{a(t.next(c))}catch(u){o(u)}},s=c=>{try{a(t.throw(c))}catch(u){o(u)}},a=c=>c.done?r(c.value):Promise.resolve(c.value).then(i,s);a((t=t.apply(e,n)).next())});var ia;function Uo(){return ia}function Ue(e){let n=ia;return ia=e,n}var Sl=Symbol("NotFound");function bn(e){return e===Sl||e?.name==="\u0275NotFound"}var re=null,Vo=!1,sa=1,Bg=null,pe=Symbol("SIGNAL");function S(e){let n=re;return re=e,n}function $o(){return re}var Ir={version:0,lastCleanEpoch:0,dirty:!1,producers:void 0,producersTail:void 0,consumers:void 0,consumersTail:void 0,recomputing:!1,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Cr(e){if(Vo)throw new Error("");if(re===null)return;re.consumerOnSignalRead(e);let n=re.producersTail;if(n!==void 0&&n.producer===e)return;let t,r=re.recomputing;if(r&&(t=n!==void 0?n.nextProducer:re.producers,t!==void 0&&t.producer===e)){re.producersTail=t,t.lastReadVersion=e.version;return}let o=e.consumersTail;if(o!==void 0&&o.consumer===re&&(!r||Vg(o,re)))return;let i=Tn(re),s={producer:e,consumer:re,nextProducer:t,prevConsumer:o,lastReadVersion:e.version,nextConsumer:void 0};re.producersTail=s,n!==void 0?n.nextProducer=s:re.producers=s,i&&Al(e,s)}function Ml(){sa++}function aa(e){if(!(Tn(e)&&!e.dirty)&&!(!e.dirty&&e.lastCleanEpoch===sa)){if(!e.producerMustRecompute(e)&&!br(e)){Ho(e);return}e.producerRecomputeValue(e),Ho(e)}}function ca(e){if(e.consumers===void 0)return;let n=Vo;Vo=!0;try{for(let t=e.consumers;t!==void 0;t=t.nextConsumer){let r=t.consumer;r.dirty||Ug(r)}}finally{Vo=n}}function ua(){return re?.consumerAllowSignalWrites!==!1}function Ug(e){e.dirty=!0,ca(e),e.consumerMarkedDirty?.(e)}function Ho(e){e.dirty=!1,e.lastCleanEpoch=sa}function wr(e){return e&&Nl(e),S(e)}function Nl(e){e.producersTail=void 0,e.recomputing=!0}function zo(e,n){S(n),e&&Rl(e)}function Rl(e){e.recomputing=!1;let n=e.producersTail,t=n!==void 0?n.nextProducer:e.producers;if(t!==void 0){if(Tn(e))do t=la(t);while(t!==void 0);n!==void 0?n.nextProducer=void 0:e.producers=void 0}}function br(e){for(let n=e.producers;n!==void 0;n=n.nextProducer){let t=n.producer,r=n.lastReadVersion;if(r!==t.version||(aa(t),r!==t.version))return!0}return!1}function Tr(e){if(Tn(e)){let n=e.producers;for(;n!==void 0;)n=la(n)}e.producers=void 0,e.producersTail=void 0,e.consumers=void 0,e.consumersTail=void 0}function Al(e,n){let t=e.consumersTail,r=Tn(e);if(t!==void 0?(n.nextConsumer=t.nextConsumer,t.nextConsumer=n):(n.nextConsumer=void 0,e.consumers=n),n.prevConsumer=t,e.consumersTail=n,!r)for(let o=e.producers;o!==void 0;o=o.nextProducer)Al(o.producer,o)}function la(e){let n=e.producer,t=e.nextProducer,r=e.nextConsumer,o=e.prevConsumer;if(e.nextConsumer=void 0,e.prevConsumer=void 0,r!==void 0?r.prevConsumer=o:n.consumersTail=o,o!==void 0)o.nextConsumer=r;else if(n.consumers=r,!Tn(n)){let i=n.producers;for(;i!==void 0;)i=la(i)}return t}function Tn(e){return e.consumerIsAlwaysLive||e.consumers!==void 0}function da(e){Bg?.(e)}function Vg(e,n){let t=n.producersTail;if(t!==void 0){let r=n.producers;do{if(r===e)return!0;if(r===t)break;r=r.nextProducer}while(r!==void 0)}return!1}function fa(e,n){return Object.is(e,n)}function Hg(){throw new Error}var xl=Hg;function Ol(e){xl(e)}function pa(e){xl=e}var $g=null;function ha(e,n){let t=Object.create(Go);t.value=e,n!==void 0&&(t.equal=n);let r=()=>Pl(t);return r[pe]=t,da(t),[r,s=>_n(t,s),s=>ga(t,s)]}function Pl(e){return Cr(e),e.value}function _n(e,n){ua()||Ol(e),e.equal(e.value,n)||(e.value=n,zg(e))}function ga(e,n){ua()||Ol(e),_n(e,n(e.value))}var Go=j(g({},Ir),{equal:fa,value:void 0,kind:"signal"});function zg(e){e.version++,Ml(),ca(e),$g?.(e)}function _(e){return typeof e=="function"}function Sn(e){let t=e(r=>{Error.call(r),r.stack=new Error().stack});return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}var qo=Sn(e=>function(t){e(this),this.message=t?`${t.length} errors occurred during unsubscription: -${t.map((r,o)=>`${o+1}) ${r.toString()}`).join(` - `)}`:"",this.name="UnsubscriptionError",this.errors=t});function _r(e,n){if(e){let t=e.indexOf(n);0<=t&&e.splice(t,1)}}var G=class e{constructor(n){this.initialTeardown=n,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let n;if(!this.closed){this.closed=!0;let{_parentage:t}=this;if(t)if(this._parentage=null,Array.isArray(t))for(let i of t)i.remove(this);else t.remove(this);let{initialTeardown:r}=this;if(_(r))try{r()}catch(i){n=i instanceof qo?i.errors:[i]}let{_finalizers:o}=this;if(o){this._finalizers=null;for(let i of o)try{kl(i)}catch(s){n=n??[],s instanceof qo?n=[...n,...s.errors]:n.push(s)}}if(n)throw new qo(n)}}add(n){var t;if(n&&n!==this)if(this.closed)kl(n);else{if(n instanceof e){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=(t=this._finalizers)!==null&&t!==void 0?t:[]).push(n)}}_hasParent(n){let{_parentage:t}=this;return t===n||Array.isArray(t)&&t.includes(n)}_addParent(n){let{_parentage:t}=this;this._parentage=Array.isArray(t)?(t.push(n),t):t?[t,n]:n}_removeParent(n){let{_parentage:t}=this;t===n?this._parentage=null:Array.isArray(t)&&_r(t,n)}remove(n){let{_finalizers:t}=this;t&&_r(t,n),n instanceof e&&n._removeParent(this)}};G.EMPTY=(()=>{let e=new G;return e.closed=!0,e})();var ma=G.EMPTY;function Wo(e){return e instanceof G||e&&"closed"in e&&_(e.remove)&&_(e.add)&&_(e.unsubscribe)}function kl(e){_(e)?e():e.unsubscribe()}var Re={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Mn={setTimeout(e,n,...t){let{delegate:r}=Mn;return r?.setTimeout?r.setTimeout(e,n,...t):setTimeout(e,n,...t)},clearTimeout(e){let{delegate:n}=Mn;return(n?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Zo(e){Mn.setTimeout(()=>{let{onUnhandledError:n}=Re;if(n)n(e);else throw e})}function Sr(){}var Fl=ya("C",void 0,void 0);function Ll(e){return ya("E",void 0,e)}function jl(e){return ya("N",e,void 0)}function ya(e,n,t){return{kind:e,value:n,error:t}}var Ut=null;function Nn(e){if(Re.useDeprecatedSynchronousErrorHandling){let n=!Ut;if(n&&(Ut={errorThrown:!1,error:null}),e(),n){let{errorThrown:t,error:r}=Ut;if(Ut=null,t)throw r}}else e()}function Bl(e){Re.useDeprecatedSynchronousErrorHandling&&Ut&&(Ut.errorThrown=!0,Ut.error=e)}var Vt=class extends G{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,Wo(n)&&n.add(this)):this.destination=Wg}static create(n,t,r){return new Rn(n,t,r)}next(n){this.isStopped?Da(jl(n),this):this._next(n)}error(n){this.isStopped?Da(Ll(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?Da(Fl,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(n){this.destination.next(n)}_error(n){try{this.destination.error(n)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},Gg=Function.prototype.bind;function va(e,n){return Gg.call(e,n)}var Ea=class{constructor(n){this.partialObserver=n}next(n){let{partialObserver:t}=this;if(t.next)try{t.next(n)}catch(r){Yo(r)}}error(n){let{partialObserver:t}=this;if(t.error)try{t.error(n)}catch(r){Yo(r)}else Yo(n)}complete(){let{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(t){Yo(t)}}},Rn=class extends Vt{constructor(n,t,r){super();let o;if(_(n)||!n)o={next:n??void 0,error:t??void 0,complete:r??void 0};else{let i;this&&Re.useDeprecatedNextContext?(i=Object.create(n),i.unsubscribe=()=>this.unsubscribe(),o={next:n.next&&va(n.next,i),error:n.error&&va(n.error,i),complete:n.complete&&va(n.complete,i)}):o=n}this.destination=new Ea(o)}};function Yo(e){Re.useDeprecatedSynchronousErrorHandling?Bl(e):Zo(e)}function qg(e){throw e}function Da(e,n){let{onStoppedNotification:t}=Re;t&&Mn.setTimeout(()=>t(e,n))}var Wg={closed:!0,next:Sr,error:qg,complete:Sr};var An=typeof Symbol=="function"&&Symbol.observable||"@@observable";function De(e){return e}function Ia(...e){return Ca(e)}function Ca(e){return e.length===0?De:e.length===1?e[0]:function(t){return e.reduce((r,o)=>o(r),t)}}var A=(()=>{class e{constructor(t){t&&(this._subscribe=t)}lift(t){let r=new e;return r.source=this,r.operator=t,r}subscribe(t,r,o){let i=Yg(t)?t:new Rn(t,r,o);return Nn(()=>{let{operator:s,source:a}=this;i.add(s?s.call(i,a):a?this._subscribe(i):this._trySubscribe(i))}),i}_trySubscribe(t){try{return this._subscribe(t)}catch(r){t.error(r)}}forEach(t,r){return r=Ul(r),new r((o,i)=>{let s=new Rn({next:a=>{try{t(a)}catch(c){i(c),s.unsubscribe()}},error:i,complete:o});this.subscribe(s)})}_subscribe(t){var r;return(r=this.source)===null||r===void 0?void 0:r.subscribe(t)}[An](){return this}pipe(...t){return Ca(t)(this)}toPromise(t){return t=Ul(t),new t((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=n=>new e(n),e})();function Ul(e){var n;return(n=e??Re.Promise)!==null&&n!==void 0?n:Promise}function Zg(e){return e&&_(e.next)&&_(e.error)&&_(e.complete)}function Yg(e){return e&&e instanceof Vt||Zg(e)&&Wo(e)}function wa(e){return _(e?.lift)}function x(e){return n=>{if(wa(n))return n.lift(function(t){try{return e(t,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function O(e,n,t,r,o){return new ba(e,n,t,r,o)}var ba=class extends Vt{constructor(n,t,r,o,i,s){super(n),this.onFinalize=i,this.shouldUnsubscribe=s,this._next=t?function(a){try{t(a)}catch(c){n.error(c)}}:super._next,this._error=o?function(a){try{o(a)}catch(c){n.error(c)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(a){n.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:t}=this;super.unsubscribe(),!t&&((n=this.onFinalize)===null||n===void 0||n.call(this))}}};function xn(){return x((e,n)=>{let t=null;e._refCount++;let r=O(n,void 0,void 0,void 0,()=>{if(!e||e._refCount<=0||0<--e._refCount){t=null;return}let o=e._connection,i=t;t=null,o&&(!i||o===i)&&o.unsubscribe(),n.unsubscribe()});e.subscribe(r),r.closed||(t=e.connect())})}var On=class extends A{constructor(n,t){super(),this.source=n,this.subjectFactory=t,this._subject=null,this._refCount=0,this._connection=null,wa(n)&&(this.lift=n.lift)}_subscribe(n){return this.getSubject().subscribe(n)}getSubject(){let n=this._subject;return(!n||n.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;let{_connection:n}=this;this._subject=this._connection=null,n?.unsubscribe()}connect(){let n=this._connection;if(!n){n=this._connection=new G;let t=this.getSubject();n.add(this.source.subscribe(O(t,void 0,()=>{this._teardown(),t.complete()},r=>{this._teardown(),t.error(r)},()=>this._teardown()))),n.closed&&(this._connection=null,n=G.EMPTY)}return n}refCount(){return xn()(this)}};var Vl=Sn(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var K=(()=>{class e extends A{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(t){let r=new Qo(this,this);return r.operator=t,r}_throwIfClosed(){if(this.closed)throw new Vl}next(t){Nn(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let r of this.currentObservers)r.next(t)}})}error(t){Nn(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=t;let{observers:r}=this;for(;r.length;)r.shift().error(t)}})}complete(){Nn(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:t}=this;for(;t.length;)t.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var t;return((t=this.observers)===null||t===void 0?void 0:t.length)>0}_trySubscribe(t){return this._throwIfClosed(),super._trySubscribe(t)}_subscribe(t){return this._throwIfClosed(),this._checkFinalizedStatuses(t),this._innerSubscribe(t)}_innerSubscribe(t){let{hasError:r,isStopped:o,observers:i}=this;return r||o?ma:(this.currentObservers=null,i.push(t),new G(()=>{this.currentObservers=null,_r(i,t)}))}_checkFinalizedStatuses(t){let{hasError:r,thrownError:o,isStopped:i}=this;r?t.error(o):i&&t.complete()}asObservable(){let t=new A;return t.source=this,t}}return e.create=(n,t)=>new Qo(n,t),e})(),Qo=class extends K{constructor(n,t){super(),this.destination=n,this.source=t}next(n){var t,r;(r=(t=this.destination)===null||t===void 0?void 0:t.next)===null||r===void 0||r.call(t,n)}error(n){var t,r;(r=(t=this.destination)===null||t===void 0?void 0:t.error)===null||r===void 0||r.call(t,n)}complete(){var n,t;(t=(n=this.destination)===null||n===void 0?void 0:n.complete)===null||t===void 0||t.call(n)}_subscribe(n){var t,r;return(r=(t=this.source)===null||t===void 0?void 0:t.subscribe(n))!==null&&r!==void 0?r:ma}};var J=class extends K{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){let t=super._subscribe(n);return!t.closed&&n.next(this._value),t}getValue(){let{hasError:n,thrownError:t,_value:r}=this;if(n)throw t;return this._throwIfClosed(),r}next(n){super.next(this._value=n)}};var he=new A(e=>e.complete());function Hl(e){return e&&_(e.schedule)}function $l(e){return e[e.length-1]}function zl(e){return _($l(e))?e.pop():void 0}function mt(e){return Hl($l(e))?e.pop():void 0}function ql(e,n,t,r){function o(i){return i instanceof t?i:new t(function(s){s(i)})}return new(t||(t=Promise))(function(i,s){function a(l){try{u(r.next(l))}catch(d){s(d)}}function c(l){try{u(r.throw(l))}catch(d){s(d)}}function u(l){l.done?i(l.value):o(l.value).then(a,c)}u((r=r.apply(e,n||[])).next())})}function Gl(e){var n=typeof Symbol=="function"&&Symbol.iterator,t=n&&e[n],r=0;if(t)return t.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}function Ht(e){return this instanceof Ht?(this.v=e,this):new Ht(e)}function Wl(e,n,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=t.apply(e,n||[]),o,i=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",s),o[Symbol.asyncIterator]=function(){return this},o;function s(f){return function(D){return Promise.resolve(D).then(f,d)}}function a(f,D){r[f]&&(o[f]=function(T){return new Promise(function(I,C){i.push([f,T,I,C])>1||c(f,T)})},D&&(o[f]=D(o[f])))}function c(f,D){try{u(r[f](D))}catch(T){h(i[0][3],T)}}function u(f){f.value instanceof Ht?Promise.resolve(f.value.v).then(l,d):h(i[0][2],f)}function l(f){c("next",f)}function d(f){c("throw",f)}function h(f,D){f(D),i.shift(),i.length&&c(i[0][0],i[0][1])}}function Zl(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=e[Symbol.asyncIterator],t;return n?n.call(e):(e=typeof Gl=="function"?Gl(e):e[Symbol.iterator](),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(i){t[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),o(a,c,s.done,s.value)})}}function o(i,s,a,c){Promise.resolve(c).then(function(u){i({value:u,done:a})},s)}}var Ko=e=>e&&typeof e.length=="number"&&typeof e!="function";function Jo(e){return _(e?.then)}function Xo(e){return _(e[An])}function ei(e){return Symbol.asyncIterator&&_(e?.[Symbol.asyncIterator])}function ti(e){return new TypeError(`You provided ${e!==null&&typeof e=="object"?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function Qg(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var ni=Qg();function ri(e){return _(e?.[ni])}function oi(e){return Wl(this,arguments,function*(){let t=e.getReader();try{for(;;){let{value:r,done:o}=yield Ht(t.read());if(o)return yield Ht(void 0);yield yield Ht(r)}}finally{t.releaseLock()}})}function ii(e){return _(e?.getReader)}function W(e){if(e instanceof A)return e;if(e!=null){if(Xo(e))return Kg(e);if(Ko(e))return Jg(e);if(Jo(e))return Xg(e);if(ei(e))return Yl(e);if(ri(e))return em(e);if(ii(e))return tm(e)}throw ti(e)}function Kg(e){return new A(n=>{let t=e[An]();if(_(t.subscribe))return t.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Jg(e){return new A(n=>{for(let t=0;t{e.then(t=>{n.closed||(n.next(t),n.complete())},t=>n.error(t)).then(null,Zo)})}function em(e){return new A(n=>{for(let t of e)if(n.next(t),n.closed)return;n.complete()})}function Yl(e){return new A(n=>{nm(e,n).catch(t=>n.error(t))})}function tm(e){return Yl(oi(e))}function nm(e,n){var t,r,o,i;return ql(this,void 0,void 0,function*(){try{for(t=Zl(e);r=yield t.next(),!r.done;){let s=r.value;if(n.next(s),n.closed)return}}catch(s){o={error:s}}finally{try{r&&!r.done&&(i=t.return)&&(yield i.call(t))}finally{if(o)throw o.error}}n.complete()})}function ge(e,n,t,r=0,o=!1){let i=n.schedule(function(){t(),o?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(i),!o)return i}function si(e,n=0){return x((t,r)=>{t.subscribe(O(r,o=>ge(r,e,()=>r.next(o),n),()=>ge(r,e,()=>r.complete(),n),o=>ge(r,e,()=>r.error(o),n)))})}function ai(e,n=0){return x((t,r)=>{r.add(e.schedule(()=>t.subscribe(r),n))})}function Ql(e,n){return W(e).pipe(ai(n),si(n))}function Kl(e,n){return W(e).pipe(ai(n),si(n))}function Jl(e,n){return new A(t=>{let r=0;return n.schedule(function(){r===e.length?t.complete():(t.next(e[r++]),t.closed||this.schedule())})})}function Xl(e,n){return new A(t=>{let r;return ge(t,n,()=>{r=e[ni](),ge(t,n,()=>{let o,i;try{({value:o,done:i}=r.next())}catch(s){t.error(s);return}i?t.complete():t.next(o)},0,!0)}),()=>_(r?.return)&&r.return()})}function ci(e,n){if(!e)throw new Error("Iterable cannot be null");return new A(t=>{ge(t,n,()=>{let r=e[Symbol.asyncIterator]();ge(t,n,()=>{r.next().then(o=>{o.done?t.complete():t.next(o.value)})},0,!0)})})}function ed(e,n){return ci(oi(e),n)}function td(e,n){if(e!=null){if(Xo(e))return Ql(e,n);if(Ko(e))return Jl(e,n);if(Jo(e))return Kl(e,n);if(ei(e))return ci(e,n);if(ri(e))return Xl(e,n);if(ii(e))return ed(e,n)}throw ti(e)}function U(e,n){return n?td(e,n):W(e)}function w(...e){let n=mt(e);return U(e,n)}function Pn(e,n){let t=_(e)?e:()=>e,r=o=>o.error(t());return new A(n?o=>n.schedule(r,0,o):r)}function Ta(e){return!!e&&(e instanceof A||_(e.lift)&&_(e.subscribe))}var Qe=Sn(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"});function R(e,n){return x((t,r)=>{let o=0;t.subscribe(O(r,i=>{r.next(e.call(n,i,o++))}))})}var{isArray:rm}=Array;function om(e,n){return rm(n)?e(...n):e(n)}function nd(e){return R(n=>om(e,n))}var{isArray:im}=Array,{getPrototypeOf:sm,prototype:am,keys:cm}=Object;function rd(e){if(e.length===1){let n=e[0];if(im(n))return{args:n,keys:null};if(um(n)){let t=cm(n);return{args:t.map(r=>n[r]),keys:t}}}return{args:e,keys:null}}function um(e){return e&&typeof e=="object"&&sm(e)===am}function od(e,n){return e.reduce((t,r,o)=>(t[r]=n[o],t),{})}function Mr(...e){let n=mt(e),t=zl(e),{args:r,keys:o}=rd(e);if(r.length===0)return U([],n);let i=new A(lm(r,n,o?s=>od(o,s):De));return t?i.pipe(nd(t)):i}function lm(e,n,t=De){return r=>{id(n,()=>{let{length:o}=e,i=new Array(o),s=o,a=o;for(let c=0;c{let u=U(e[c],n),l=!1;u.subscribe(O(r,d=>{i[c]=d,l||(l=!0,a--),a||r.next(t(i.slice()))},()=>{--s||r.complete()}))},r)},r)}}function id(e,n,t){e?ge(t,e,n):n()}function sd(e,n,t,r,o,i,s,a){let c=[],u=0,l=0,d=!1,h=()=>{d&&!c.length&&!u&&n.complete()},f=T=>u{i&&n.next(T),u++;let I=!1;W(t(T,l++)).subscribe(O(n,C=>{o?.(C),i?f(C):n.next(C)},()=>{I=!0},void 0,()=>{if(I)try{for(u--;c.length&&uD(C)):D(C)}h()}catch(C){n.error(C)}}))};return e.subscribe(O(n,f,()=>{d=!0,h()})),()=>{a?.()}}function H(e,n,t=1/0){return _(n)?H((r,o)=>R((i,s)=>n(r,i,o,s))(W(e(r,o))),t):(typeof n=="number"&&(t=n),x((r,o)=>sd(r,o,e,t)))}function kn(e=1/0){return H(De,e)}function ad(){return kn(1)}function Fn(...e){return ad()(U(e,mt(e)))}function Nr(e){return new A(n=>{W(e()).subscribe(n)})}function oe(e,n){return x((t,r)=>{let o=0;t.subscribe(O(r,i=>e.call(n,i,o++)&&r.next(i)))})}function Ke(e){return x((n,t)=>{let r=null,o=!1,i;r=n.subscribe(O(t,void 0,void 0,s=>{i=W(e(s,Ke(e)(n))),r?(r.unsubscribe(),r=null,i.subscribe(t)):o=!0})),o&&(r.unsubscribe(),r=null,i.subscribe(t))})}function cd(e,n,t,r,o){return(i,s)=>{let a=t,c=n,u=0;i.subscribe(O(s,l=>{let d=u++;c=a?e(c,l,d):(a=!0,l),r&&s.next(c)},o&&(()=>{a&&s.next(c),s.complete()})))}}function Ve(e,n){return _(n)?H(e,n,1):H(e,1)}function yt(e){return x((n,t)=>{let r=!1;n.subscribe(O(t,o=>{r=!0,t.next(o)},()=>{r||t.next(e),t.complete()}))})}function Je(e){return e<=0?()=>he:x((n,t)=>{let r=0;n.subscribe(O(t,o=>{++r<=e&&(t.next(o),e<=r&&t.complete())}))})}function ui(e=dm){return x((n,t)=>{let r=!1;n.subscribe(O(t,o=>{r=!0,t.next(o)},()=>r?t.complete():t.error(e())))})}function dm(){return new Qe}function $t(e){return x((n,t)=>{try{n.subscribe(t)}finally{t.add(e)}})}function Xe(e,n){let t=arguments.length>=2;return r=>r.pipe(e?oe((o,i)=>e(o,i,r)):De,Je(1),t?yt(n):ui(()=>new Qe))}function Ln(e){return e<=0?()=>he:x((n,t)=>{let r=[];n.subscribe(O(t,o=>{r.push(o),e{for(let o of r)t.next(o);t.complete()},void 0,()=>{r=null}))})}function _a(e,n){let t=arguments.length>=2;return r=>r.pipe(e?oe((o,i)=>e(o,i,r)):De,Ln(1),t?yt(n):ui(()=>new Qe))}function Sa(e,n){return x(cd(e,n,arguments.length>=2,!0))}function Ma(...e){let n=mt(e);return x((t,r)=>{(n?Fn(e,t,n):Fn(e,t)).subscribe(r)})}function X(e,n){return x((t,r)=>{let o=null,i=0,s=!1,a=()=>s&&!o&&r.complete();t.subscribe(O(r,c=>{o?.unsubscribe();let u=0,l=i++;W(e(c,l)).subscribe(o=O(r,d=>r.next(n?n(c,d,l,u++):d),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function li(e){return x((n,t)=>{W(e).subscribe(O(t,()=>t.complete(),Sr)),!t.closed&&n.subscribe(t)})}function Z(e,n,t){let r=_(e)||n||t?{next:e,error:n,complete:t}:e;return r?x((o,i)=>{var s;(s=r.subscribe)===null||s===void 0||s.call(r);let a=!0;o.subscribe(O(i,c=>{var u;(u=r.next)===null||u===void 0||u.call(r,c),i.next(c)},()=>{var c;a=!1,(c=r.complete)===null||c===void 0||c.call(r),i.complete()},c=>{var u;a=!1,(u=r.error)===null||u===void 0||u.call(r,c),i.error(c)},()=>{var c,u;a&&((c=r.unsubscribe)===null||c===void 0||c.call(r)),(u=r.finalize)===null||u===void 0||u.call(r)}))}):De}function ud(e){let n=S(null);try{return e()}finally{S(n)}}var m=class extends Error{code;constructor(n,t){super(nt(n,t)),this.code=n}};function fm(e){return`NG0${Math.abs(e)}`}function nt(e,n){return`${fm(e)}${n?": "+n:""}`}function F(e){for(let n in e)if(e[n]===F)return n;throw Error("")}function vt(e){if(typeof e=="string")return e;if(Array.isArray(e))return`[${e.map(vt).join(", ")}]`;if(e==null)return""+e;let n=e.overriddenName||e.name;if(n)return`${n}`;let t=e.toString();if(t==null)return""+t;let r=t.indexOf(` -`);return r>=0?t.slice(0,r):t}function Ua(e,n){return e?n?`${e} ${n}`:e:n||""}var pm=F({__forward_ref__:F});function gi(e){return e.__forward_ref__=gi,e.toString=function(){return vt(this())},e}function me(e){return Va(e)?e():e}function Va(e){return typeof e=="function"&&e.hasOwnProperty(pm)&&e.__forward_ref__===gi}function y(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function rt(e){return{providers:e.providers||[],imports:e.imports||[]}}function Or(e){return hm(e,mi)}function Ha(e){return Or(e)!==null}function hm(e,n){return e.hasOwnProperty(n)&&e[n]||null}function gm(e){let n=e?.[mi]??null;return n||null}function Ra(e){return e&&e.hasOwnProperty(fi)?e[fi]:null}var mi=F({\u0275prov:F}),fi=F({\u0275inj:F}),v=class{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(n,t){this._desc=n,this.\u0275prov=void 0,typeof t=="number"?this.__NG_ELEMENT_ID__=t:t!==void 0&&(this.\u0275prov=y({token:this,providedIn:t.providedIn||"root",factory:t.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function $a(e){return e&&!!e.\u0275providers}var za=F({\u0275cmp:F}),Ga=F({\u0275dir:F}),qa=F({\u0275pipe:F}),Wa=F({\u0275mod:F}),Ar=F({\u0275fac:F}),Wt=F({__NG_ELEMENT_ID__:F}),dd=F({__NG_ENV_ID__:F});function Za(e){return typeof e=="string"?e:e==null?"":String(e)}function pd(e){return typeof e=="function"?e.name||e.toString():typeof e=="object"&&e!=null&&typeof e.type=="function"?e.type.name||e.type.toString():Za(e)}var hd=F({ngErrorCode:F}),mm=F({ngErrorMessage:F}),ym=F({ngTokenPath:F});function Ya(e,n){return gd("",-200,n)}function yi(e,n){throw new m(-201,!1)}function gd(e,n,t){let r=new m(n,e);return r[hd]=n,r[mm]=e,t&&(r[ym]=t),r}function vm(e){return e[hd]}var Aa;function md(){return Aa}function ce(e){let n=Aa;return Aa=e,n}function Qa(e,n,t){let r=Or(e);if(r&&r.providedIn=="root")return r.value===void 0?r.value=r.factory():r.value;if(t&8)return null;if(n!==void 0)return n;yi(e,"Injector")}var Dm={},zt=Dm,Em="__NG_DI_FLAG__",xa=class{injector;constructor(n){this.injector=n}retrieve(n,t){let r=Gt(t)||0;try{return this.injector.get(n,r&8?null:zt,r)}catch(o){if(bn(o))return o;throw o}}};function Im(e,n=0){let t=Uo();if(t===void 0)throw new m(-203,!1);if(t===null)return Qa(e,void 0,n);{let r=Cm(n),o=t.retrieve(e,r);if(bn(o)){if(r.optional)return null;throw o}return o}}function E(e,n=0){return(md()||Im)(me(e),n)}function p(e,n){return E(e,Gt(n))}function Gt(e){return typeof e>"u"||typeof e=="number"?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Cm(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function Oa(e){let n=[];for(let t=0;tArray.isArray(t)?vi(t,n):n(t))}function Ka(e,n,t){n>=e.length?e.push(t):e.splice(n,0,t)}function Pr(e,n){return n>=e.length-1?e.pop():e.splice(n,1)[0]}var Zt={},Ae=[],It=new v(""),Ja=new v("",-1),Xa=new v(""),xr=class{get(n,t=zt){if(t===zt){let o=gd("",-201);throw o.name="\u0275NotFound",o}return t}};function ec(e){return e[Wa]||null}function ot(e){return e[za]||null}function tc(e){return e[Ga]||null}function yd(e){return e[qa]||null}function Yt(e){return{\u0275providers:e}}function vd(...e){return{\u0275providers:nc(!0,e),\u0275fromNgModule:!0}}function nc(e,...n){let t=[],r=new Set,o,i=s=>{t.push(s)};return vi(n,s=>{let a=s;pi(a,i,[],r)&&(o||=[],o.push(a))}),o!==void 0&&Dd(o,i),t}function Dd(e,n){for(let t=0;t{n(i,r)})}}function pi(e,n,t,r){if(e=me(e),!e)return!1;let o=null,i=Ra(e),s=!i&&ot(e);if(!i&&!s){let c=e.ngModule;if(i=Ra(c),i)o=c;else return!1}else{if(s&&!s.standalone)return!1;o=e}let a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){let c=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let u of c)pi(u,n,t,r)}}else if(i){if(i.imports!=null&&!a){r.add(o);let u;try{vi(i.imports,l=>{pi(l,n,t,r)&&(u||=[],u.push(l))})}finally{}u!==void 0&&Dd(u,n)}if(!a){let u=Dt(o)||(()=>new o);n({provide:o,useFactory:u,deps:Ae},o),n({provide:Xa,useValue:o,multi:!0},o),n({provide:It,useValue:()=>E(o),multi:!0},o)}let c=i.providers;if(c!=null&&!a){let u=e;rc(c,l=>{n(l,u)})}}else return!1;return o!==e&&e.providers!==void 0}function rc(e,n){for(let t of e)$a(t)&&(t=t.\u0275providers),Array.isArray(t)?rc(t,n):n(t)}var bm=F({provide:String,useValue:F});function Ed(e){return e!==null&&typeof e=="object"&&bm in e}function Tm(e){return!!(e&&e.useExisting)}function _m(e){return!!(e&&e.useFactory)}function hi(e){return typeof e=="function"}var kr=new v(""),di={},fd={},Na;function Fr(){return Na===void 0&&(Na=new xr),Na}var $=class{},qt=class extends ${parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(n,t,r,o){super(),this.parent=t,this.source=r,this.scopes=o,ka(n,s=>this.processProvider(s)),this.records.set(Ja,jn(void 0,this)),o.has("environment")&&this.records.set($,jn(void 0,this));let i=this.records.get(kr);i!=null&&typeof i.value=="string"&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(Xa,Ae,{self:!0}))}retrieve(n,t){let r=Gt(t)||0;try{return this.get(n,zt,r)}catch(o){if(bn(o))return o;throw o}}destroy(){Rr(this),this._destroyed=!0;let n=S(null);try{for(let r of this._ngOnDestroyHooks)r.ngOnDestroy();let t=this._onDestroyHooks;this._onDestroyHooks=[];for(let r of t)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),S(n)}}onDestroy(n){return Rr(this),this._onDestroyHooks.push(n),()=>this.removeOnDestroy(n)}runInContext(n){Rr(this);let t=Ue(this),r=ce(void 0),o;try{return n()}finally{Ue(t),ce(r)}}get(n,t=zt,r){if(Rr(this),n.hasOwnProperty(dd))return n[dd](this);let o=Gt(r),i,s=Ue(this),a=ce(void 0);try{if(!(o&4)){let u=this.records.get(n);if(u===void 0){let l=Am(n)&&Or(n);l&&this.injectableDefInScope(l)?u=jn(Pa(n),di):u=null,this.records.set(n,u)}if(u!=null)return this.hydrate(n,u,o)}let c=o&2?Fr():this.parent;return t=o&8&&t===zt?null:t,c.get(n,t)}catch(c){let u=vm(c);throw u===-200||u===-201?new m(u,null):c}finally{ce(a),Ue(s)}}resolveInjectorInitializers(){let n=S(null),t=Ue(this),r=ce(void 0),o;try{let i=this.get(It,Ae,{self:!0});for(let s of i)s()}finally{Ue(t),ce(r),S(n)}}toString(){let n=[],t=this.records;for(let r of t.keys())n.push(vt(r));return`R3Injector[${n.join(", ")}]`}processProvider(n){n=me(n);let t=hi(n)?n:me(n&&n.provide),r=Mm(n);if(!hi(n)&&n.multi===!0){let o=this.records.get(t);o||(o=jn(void 0,di,!0),o.factory=()=>Oa(o.multi),this.records.set(t,o)),t=n,o.multi.push(n)}this.records.set(t,r)}hydrate(n,t,r){let o=S(null);try{if(t.value===fd)throw Ya(vt(n));return t.value===di&&(t.value=fd,t.value=t.factory(void 0,r)),typeof t.value=="object"&&t.value&&Rm(t.value)&&this._ngOnDestroyHooks.add(t.value),t.value}finally{S(o)}}injectableDefInScope(n){if(!n.providedIn)return!1;let t=me(n.providedIn);return typeof t=="string"?t==="any"||this.scopes.has(t):this.injectorDefTypes.has(t)}removeOnDestroy(n){let t=this._onDestroyHooks.indexOf(n);t!==-1&&this._onDestroyHooks.splice(t,1)}};function Pa(e){let n=Or(e),t=n!==null?n.factory:Dt(e);if(t!==null)return t;if(e instanceof v)throw new m(204,!1);if(e instanceof Function)return Sm(e);throw new m(204,!1)}function Sm(e){if(e.length>0)throw new m(204,!1);let t=gm(e);return t!==null?()=>t.factory(e):()=>new e}function Mm(e){if(Ed(e))return jn(void 0,e.useValue);{let n=Id(e);return jn(n,di)}}function Id(e,n,t){let r;if(hi(e)){let o=me(e);return Dt(o)||Pa(o)}else if(Ed(e))r=()=>me(e.useValue);else if(_m(e))r=()=>e.useFactory(...Oa(e.deps||[]));else if(Tm(e))r=(o,i)=>E(me(e.useExisting),i!==void 0&&i&8?8:void 0);else{let o=me(e&&(e.useClass||e.provide));if(Nm(e))r=()=>new o(...Oa(e.deps));else return Dt(o)||Pa(o)}return r}function Rr(e){if(e.destroyed)throw new m(205,!1)}function jn(e,n,t=!1){return{factory:e,value:n,multi:t?[]:void 0}}function Nm(e){return!!e.deps}function Rm(e){return e!==null&&typeof e=="object"&&typeof e.ngOnDestroy=="function"}function Am(e){return typeof e=="function"||typeof e=="object"&&e.ngMetadataName==="InjectionToken"}function ka(e,n){for(let t of e)Array.isArray(t)?ka(t,n):t&&$a(t)?ka(t.\u0275providers,n):n(t)}function Y(e,n){let t;e instanceof qt?(Rr(e),t=e):t=new xa(e);let r,o=Ue(t),i=ce(void 0);try{return n()}finally{Ue(o),ce(i)}}function Cd(){return md()!==void 0||Uo()!=null}var Oe=0,N=1,M=2,ee=3,be=4,Te=5,Lr=6,Bn=7,te=8,Ct=9,it=10,ie=11,Un=12,oc=13,Qt=14,_e=15,Kt=16,Jt=17,Xt=18,jr=19,ic=20,et=21,Di=22,Br=23,Ie=24,en=25,Ur=26,Q=27,wd=1;var wt=7,Vr=8,Hr=9,ue=10;function st(e){return Array.isArray(e)&&typeof e[wd]=="object"}function Pe(e){return Array.isArray(e)&&e[wd]===!0}function sc(e){return(e.flags&4)!==0}function tn(e){return e.componentOffset>-1}function Ei(e){return(e.flags&1)===1}function nn(e){return!!e.template}function Vn(e){return(e[M]&512)!==0}function rn(e){return(e[M]&256)===256}var bd="svg",Td="math";function Se(e){for(;Array.isArray(e);)e=e[Oe];return e}function _d(e,n){return Se(n[e])}function at(e,n){return Se(n[e.index])}function Ii(e,n){return e.data[n]}function Sd(e,n){return e[n]}function ac(e,n,t,r){t>=e.data.length&&(e.data[t]=null,e.blueprint[t]=null),n[t]=r}function He(e,n){let t=n[e];return st(t)?t:t[Oe]}function Ci(e){return(e[M]&128)===128}function Md(e){return Pe(e[ee])}function bt(e,n){return n==null?null:e[n]}function cc(e){e[Jt]=0}function uc(e){e[M]&1024||(e[M]|=1024,Ci(e)&&Hn(e))}function Nd(e,n){for(;e>0;)n=n[Qt],e--;return n}function $r(e){return!!(e[M]&9216||e[Ie]?.dirty)}function wi(e){e[it].changeDetectionScheduler?.notify(8),e[M]&64&&(e[M]|=1024),$r(e)&&Hn(e)}function Hn(e){e[it].changeDetectionScheduler?.notify(0);let n=Et(e);for(;n!==null&&!(n[M]&8192||(n[M]|=8192,!Ci(n)));)n=Et(n)}function lc(e,n){if(rn(e))throw new m(911,!1);e[et]===null&&(e[et]=[]),e[et].push(n)}function Rd(e,n){if(e[et]===null)return;let t=e[et].indexOf(n);t!==-1&&e[et].splice(t,1)}function Et(e){let n=e[ee];return Pe(n)?n[ee]:n}function Ad(e){return e[Bn]??=[]}function xd(e){return e.cleanup??=[]}var P={lFrame:Gd(null),bindingsEnabled:!0,skipHydrationRootTNode:null};var Fa=!1;function Od(){return P.lFrame.elementDepthCount}function Pd(){P.lFrame.elementDepthCount++}function dc(){P.lFrame.elementDepthCount--}function kd(){return P.bindingsEnabled}function Fd(){return P.skipHydrationRootTNode!==null}function fc(e){return P.skipHydrationRootTNode===e}function pc(){P.skipHydrationRootTNode=null}function B(){return P.lFrame.lView}function Tt(){return P.lFrame.tView}function zr(e){return P.lFrame.contextLView=e,e[te]}function Gr(e){return P.lFrame.contextLView=null,e}function Me(){let e=hc();for(;e!==null&&e.type===64;)e=e.parent;return e}function hc(){return P.lFrame.currentTNode}function Ld(){let e=P.lFrame,n=e.currentTNode;return e.isParent?n:n.parent}function $n(e,n){let t=P.lFrame;t.currentTNode=e,t.isParent=n}function gc(){return P.lFrame.isParent}function jd(){P.lFrame.isParent=!1}function mc(){return Fa}function yc(e){let n=Fa;return Fa=e,n}function Bd(){let e=P.lFrame,n=e.bindingRootIndex;return n===-1&&(n=e.bindingRootIndex=e.tView.bindingStartIndex),n}function Ud(e){return P.lFrame.bindingIndex=e}function vc(){return P.lFrame.bindingIndex++}function Vd(){return P.lFrame.inI18n}function Hd(e,n){let t=P.lFrame;t.bindingIndex=t.bindingRootIndex=e,bi(n)}function $d(){return P.lFrame.currentDirectiveIndex}function bi(e){P.lFrame.currentDirectiveIndex=e}function Dc(e){P.lFrame.currentQueryIndex=e}function xm(e){let n=e[N];return n.type===2?n.declTNode:n.type===1?e[Te]:null}function Ec(e,n,t){if(t&4){let o=n,i=e;for(;o=o.parent,o===null&&!(t&1);)if(o=xm(i),o===null||(i=i[Qt],o.type&10))break;if(o===null)return!1;n=o,e=i}let r=P.lFrame=zd();return r.currentTNode=n,r.lView=e,!0}function Ti(e){let n=zd(),t=e[N];P.lFrame=n,n.currentTNode=t.firstChild,n.lView=e,n.tView=t,n.contextLView=e,n.bindingIndex=t.bindingStartIndex,n.inI18n=!1}function zd(){let e=P.lFrame,n=e===null?null:e.child;return n===null?Gd(e):n}function Gd(e){let n={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:e,child:null,inI18n:!1};return e!==null&&(e.child=n),n}function qd(){let e=P.lFrame;return P.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var Ic=qd;function _i(){let e=qd();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function Wd(e){return(P.lFrame.contextLView=Nd(e,P.lFrame.contextLView))[te]}function Si(){return P.lFrame.selectedIndex}function _t(e){P.lFrame.selectedIndex=e}function Zd(){return P.lFrame.currentNamespace}var Yd=!0;function Mi(){return Yd}function Ni(e){Yd=e}function La(e,n=null,t=null,r){let o=Cc(e,n,t,r);return o.resolveInjectorInitializers(),o}function Cc(e,n=null,t=null,r,o=new Set){let i=[t||Ae,vd(e)];return r=r||(typeof e=="object"?void 0:vt(e)),new qt(i,n||Fr(),r||null,o)}var Ee=class e{static THROW_IF_NOT_FOUND=zt;static NULL=new xr;static create(n,t){if(Array.isArray(n))return La({name:""},t,n,"");{let r=n.name??"";return La({name:r},n.parent,n.providers,r)}}static \u0275prov=y({token:e,providedIn:"any",factory:()=>E(Ja)});static __NG_ELEMENT_ID__=-1},V=new v(""),St=(()=>{class e{static __NG_ELEMENT_ID__=Om;static __NG_ENV_ID__=t=>t}return e})(),ja=class extends St{_lView;constructor(n){super(),this._lView=n}get destroyed(){return rn(this._lView)}onDestroy(n){let t=this._lView;return lc(t,n),()=>Rd(t,n)}};function Om(){return new ja(B())}var xe=class{_console=console;handleError(n){this._console.error("ERROR",n)}},ye=new v("",{providedIn:"root",factory:()=>{let e=p($),n;return t=>{e.destroyed&&!n?setTimeout(()=>{throw t}):(n??=e.get(xe),n.handleError(t))}}}),Qd={provide:It,useValue:()=>void p(xe),multi:!0};function qr(e,n){let[t,r,o]=ha(e,n?.equal),i=t,s=i[pe];return i.set=r,i.update=o,i.asReadonly=Kd.bind(i),i}function Kd(){let e=this[pe];if(e.readonlyFn===void 0){let n=()=>this();n[pe]=e,e.readonlyFn=n}return e.readonlyFn}var Ri=(()=>{class e{view;node;constructor(t,r){this.view=t,this.node=r}static __NG_ELEMENT_ID__=Pm}return e})();function Pm(){return new Ri(B(),Me())}var tt=class{},Ai=new v("",{providedIn:"root",factory:()=>!1});var wc=new v(""),bc=new v(""),$e=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new J(!1);get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new A(t=>{t.next(!1),t.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let t=this.taskId++;return this.pendingTasks.add(t),t}has(t){return this.pendingTasks.has(t)}remove(t){this.pendingTasks.delete(t),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static \u0275prov=y({token:e,providedIn:"root",factory:()=>new e})}return e})(),xi=(()=>{class e{internalPendingTasks=p($e);scheduler=p(tt);errorHandler=p(ye);add(){let t=this.internalPendingTasks.add();return()=>{this.internalPendingTasks.has(t)&&(this.scheduler.notify(11),this.internalPendingTasks.remove(t))}}run(t){let r=this.add();t().catch(this.errorHandler).finally(r)}static \u0275prov=y({token:e,providedIn:"root",factory:()=>new e})}return e})();function Wr(...e){}var Tc=(()=>{class e{static \u0275prov=y({token:e,providedIn:"root",factory:()=>new Ba})}return e})(),Ba=class{dirtyEffectCount=0;queues=new Map;add(n){this.enqueue(n),this.schedule(n)}schedule(n){n.dirty&&this.dirtyEffectCount++}remove(n){let t=n.zone,r=this.queues.get(t);r.has(n)&&(r.delete(n),n.dirty&&this.dirtyEffectCount--)}enqueue(n){let t=n.zone;this.queues.has(t)||this.queues.set(t,new Set);let r=this.queues.get(t);r.has(n)||r.add(n)}flush(){for(;this.dirtyEffectCount>0;){let n=!1;for(let[t,r]of this.queues)t===null?n||=this.flushQueue(r):n||=t.run(()=>this.flushQueue(r));n||(this.dirtyEffectCount=0)}}flushQueue(n){let t=!1;for(let r of n)r.dirty&&(this.dirtyEffectCount--,t=!0,r.run());return t}};function Xr(e){return{toString:e}.toString()}function zm(e){return typeof e=="function"}var Fi=class{previousValue;currentValue;firstChange;constructor(n,t,r){this.previousValue=n,this.currentValue=t,this.firstChange=r}isFirstChange(){return this.firstChange}};function _f(e,n,t,r){n!==null?n.applyValueToInputSignal(n,r):e[t]=r}var eo=(()=>{let e=()=>Sf;return e.ngInherit=!0,e})();function Sf(e){return e.type.prototype.ngOnChanges&&(e.setInput=qm),Gm}function Gm(){let e=Nf(this),n=e?.current;if(n){let t=e.previous;if(t===Zt)e.previous=n;else for(let r in n)t[r]=n[r];e.current=null,this.ngOnChanges(n)}}function qm(e,n,t,r,o){let i=this.declaredInputs[r],s=Nf(e)||Wm(e,{previous:Zt,current:null}),a=s.current||(s.current={}),c=s.previous,u=c[i];a[i]=new Fi(u&&u.currentValue,t,c===Zt),_f(e,n,o,t)}var Mf="__ngSimpleChanges__";function Nf(e){return e[Mf]||null}function Wm(e,n){return e[Mf]=n}var Jd=[];var L=function(e,n=null,t){for(let r=0;r=r)break}else n[c]<0&&(e[Jt]+=65536),(a>14>16&&(e[M]&3)===n&&(e[M]+=16384,Xd(a,i)):Xd(a,i)}var Gn=-1,Qr=class{factory;name;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(n,t,r,o){this.factory=n,this.name=o,this.canSeeViewProviders=t,this.injectImpl=r}};function Km(e){return(e.flags&8)!==0}function Jm(e){return(e.flags&16)!==0}function Xm(e,n,t){let r=0;for(;rn){s=i-1;break}}}for(;i>16}function ji(e,n){let t=ny(e),r=n;for(;t>0;)r=r[Qt],t--;return r}var Rc=!0;function Bi(e){let n=Rc;return Rc=e,n}var ry=256,xf=ry-1,Of=5,oy=0,ze={};function iy(e,n,t){let r;typeof t=="string"?r=t.charCodeAt(0)||0:t.hasOwnProperty(Wt)&&(r=t[Wt]),r==null&&(r=t[Wt]=oy++);let o=r&xf,i=1<>Of)]|=i}function Pf(e,n){let t=kf(e,n);if(t!==-1)return t;let r=n[N];r.firstCreatePass&&(e.injectorIndex=n.length,Sc(r.data,e),Sc(n,null),Sc(r.blueprint,null));let o=Gc(e,n),i=e.injectorIndex;if(Af(o)){let s=Li(o),a=ji(o,n),c=a[N].data;for(let u=0;u<8;u++)n[i+u]=a[s+u]|c[s+u]}return n[i+8]=o,i}function Sc(e,n){e.push(0,0,0,0,0,0,0,0,n)}function kf(e,n){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||n[e.injectorIndex+8]===null?-1:e.injectorIndex}function Gc(e,n){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let t=0,r=null,o=n;for(;o!==null;){if(r=Uf(o),r===null)return Gn;if(t++,o=o[Qt],r.injectorIndex!==-1)return r.injectorIndex|t<<16}return Gn}function sy(e,n,t){iy(e,n,t)}function Ff(e,n,t){if(t&8||e!==void 0)return e;yi(n,"NodeInjector")}function Lf(e,n,t,r){if(t&8&&r===void 0&&(r=null),(t&3)===0){let o=e[Ct],i=ce(void 0);try{return o?o.get(n,r,t&8):Qa(n,r,t&8)}finally{ce(i)}}return Ff(r,n,t)}function jf(e,n,t,r=0,o){if(e!==null){if(n[M]&2048&&!(r&2)){let s=dy(e,n,t,r,ze);if(s!==ze)return s}let i=Bf(e,n,t,r,ze);if(i!==ze)return i}return Lf(n,t,r,o)}function Bf(e,n,t,r,o){let i=uy(t);if(typeof i=="function"){if(!Ec(n,e,r))return r&1?Ff(o,t,r):Lf(n,t,r,o);try{let s;if(s=i(r),s==null&&!(r&8))yi(t);else return s}finally{Ic()}}else if(typeof i=="number"){let s=null,a=kf(e,n),c=Gn,u=r&1?n[_e][Te]:null;for((a===-1||r&4)&&(c=a===-1?Gc(e,n):n[a+8],c===Gn||!nf(r,!1)?a=-1:(s=n[N],a=Li(c),n=ji(c,n)));a!==-1;){let l=n[N];if(tf(i,a,l.data)){let d=ay(a,n,t,s,r,u);if(d!==ze)return d}c=n[a+8],c!==Gn&&nf(r,n[N].data[a+8]===u)&&tf(i,a,n)?(s=l,a=Li(c),n=ji(c,n)):a=-1}}return o}function ay(e,n,t,r,o,i){let s=n[N],a=s.data[e+8],c=r==null?tn(a)&&Rc:r!=s&&(a.type&3)!==0,u=o&1&&i===a,l=cy(a,s,t,c,u);return l!==null?Ac(n,s,l,a,o):ze}function cy(e,n,t,r,o){let i=e.providerIndexes,s=n.data,a=i&1048575,c=e.directiveStart,u=e.directiveEnd,l=i>>20,d=r?a:a+l,h=o?a+l:u;for(let f=d;f=c&&D.type===t)return f}if(o){let f=s[c];if(f&&nn(f)&&f.type===t)return c}return null}function Ac(e,n,t,r,o){let i=e[t],s=n.data;if(i instanceof Qr){let a=i;if(a.resolving){let f=pd(s[t]);throw Ya(f)}let c=Bi(a.canSeeViewProviders);a.resolving=!0;let u=s[t].type||s[t],l,d=a.injectImpl?ce(a.injectImpl):null,h=Ec(e,r,0);try{i=e[t]=a.factory(void 0,o,s,e,r),n.firstCreatePass&&t>=r.directiveStart&&Zm(t,s[t],n)}finally{d!==null&&ce(d),Bi(c),a.resolving=!1,Ic()}}return i}function uy(e){if(typeof e=="string")return e.charCodeAt(0)||0;let n=e.hasOwnProperty(Wt)?e[Wt]:void 0;return typeof n=="number"?n>=0?n&xf:ly:n}function tf(e,n,t){let r=1<>Of)]&r)}function nf(e,n){return!(e&2)&&!(e&1&&n)}var on=class{_tNode;_lView;constructor(n,t){this._tNode=n,this._lView=t}get(n,t,r){return jf(this._tNode,this._lView,n,Gt(r),t)}};function ly(){return new on(Me(),B())}function Ji(e){return Xr(()=>{let n=e.prototype.constructor,t=n[Ar]||xc(n),r=Object.prototype,o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){let i=o[Ar]||xc(o);if(i&&i!==t)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function xc(e){return Va(e)?()=>{let n=xc(me(e));return n&&n()}:Dt(e)}function dy(e,n,t,r,o){let i=e,s=n;for(;i!==null&&s!==null&&s[M]&2048&&!Vn(s);){let a=Bf(i,s,t,r|2,ze);if(a!==ze)return a;let c=i.parent;if(!c){let u=s[ic];if(u){let l=u.get(t,ze,r);if(l!==ze)return l}c=Uf(s),s=s[Qt]}i=c}return o}function Uf(e){let n=e[N],t=n.type;return t===2?n.declTNode:t===1?e[Te]:null}function fy(){return qc(Me(),B())}function qc(e,n){return new to(at(e,n))}var to=(()=>{class e{nativeElement;constructor(t){this.nativeElement=t}static __NG_ELEMENT_ID__=fy}return e})();function Vf(e){return(e.flags&128)===128}var Wc=(function(e){return e[e.OnPush=0]="OnPush",e[e.Default=1]="Default",e})(Wc||{}),Hf=new Map,py=0;function hy(){return py++}function gy(e){Hf.set(e[jr],e)}function Oc(e){Hf.delete(e[jr])}var rf="__ngContext__";function qn(e,n){st(n)?(e[rf]=n[jr],gy(n)):e[rf]=n}function $f(e){return Gf(e[Un])}function zf(e){return Gf(e[be])}function Gf(e){for(;e!==null&&!Pe(e);)e=e[be];return e}var Pc;function Zc(e){Pc=e}function qf(){if(Pc!==void 0)return Pc;if(typeof document<"u")return document;throw new m(210,!1)}var Xi=new v("",{providedIn:"root",factory:()=>my}),my="ng",es=new v(""),Zn=new v("",{providedIn:"platform",factory:()=>"unknown"});var Yn=new v("",{providedIn:"root",factory:()=>qf().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});var yy="h",vy="b";var Wf=!1,Zf=new v("",{providedIn:"root",factory:()=>Wf});var Yc=new v("");var Dy=(e,n,t,r)=>{};function Ey(e,n,t,r){Dy(e,n,t,r)}function Qc(e){return(e.flags&32)===32}var Iy=()=>null;function Yf(e,n,t=!1){return Iy(e,n,t)}function Qf(e,n){let t=e.contentQueries;if(t!==null){let r=S(null);try{for(let o=0;o-1){let i;for(;++oi?d="":d=o[l+1].toLowerCase(),r&2&&u!==d){if(ke(r))return!1;s=!0}}}}return ke(r)||s}function ke(e){return(e&1)===0}function _y(e,n,t,r){if(n===null)return-1;let o=0;if(r||!t){let i=!1;for(;o-1)for(t++;t0?'="'+a+'"':"")+"]"}else r&8?o+="."+s:r&4&&(o+=" "+s);else o!==""&&!ke(s)&&(n+=of(i,o),o=""),r=s,i=i||!ke(r);t++}return o!==""&&(n+=of(i,o)),n}function Ay(e){return e.map(Ry).join(",")}function xy(e){let n=[],t=[],r=1,o=2;for(;rnull),s=r;if(n&&typeof n=="object"){let c=n;o=c.next?.bind(c),i=c.error?.bind(c),s=c.complete?.bind(c)}this.__isAsync&&(i=this.wrapInTimeout(i),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));let a=super.subscribe({next:o,error:i,complete:s});return n instanceof G&&n.add(a),a}wrapInTimeout(n){return t=>{let r=this.pendingTasks?.add();setTimeout(()=>{try{n(t)}finally{r!==void 0&&this.pendingTasks?.remove(r)}})}}},le=Lc;function ap(e){let n,t;function r(){e=Wr;try{t!==void 0&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(t),n!==void 0&&clearTimeout(n)}catch{}}return n=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame=="function"&&(t=requestAnimationFrame(()=>{e(),r()})),()=>r()}function cf(e){return queueMicrotask(()=>e()),()=>{e=Wr}}var nu="isAngularZone",Vi=nu+"_ID",Hy=0,z=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new le(!1);onMicrotaskEmpty=new le(!1);onStable=new le(!1);onError=new le(!1);constructor(n){let{enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:i=sp}=n;if(typeof Zone>"u")throw new m(908,!1);Zone.assertZonePatched();let s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&r,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=i,Gy(s)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get(nu)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new m(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new m(909,!1)}run(n,t,r){return this._inner.run(n,t,r)}runTask(n,t,r,o){let i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,n,$y,Wr,Wr);try{return i.runTask(s,t,r)}finally{i.cancelTask(s)}}runGuarded(n,t,r){return this._inner.runGuarded(n,t,r)}runOutsideAngular(n){return this._outer.run(n)}},$y={};function ru(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function zy(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function n(){ap(()=>{e.callbackScheduled=!1,jc(e),e.isCheckStableRunning=!0,ru(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{n()}):e._outer.run(()=>{n()}),jc(e)}function Gy(e){let n=()=>{zy(e)},t=Hy++;e._inner=e._inner.fork({name:"angular",properties:{[nu]:!0,[Vi]:t,[Vi+t]:!0},onInvokeTask:(r,o,i,s,a,c)=>{if(qy(c))return r.invokeTask(i,s,a,c);try{return uf(e),r.invokeTask(i,s,a,c)}finally{(e.shouldCoalesceEventChangeDetection&&s.type==="eventTask"||e.shouldCoalesceRunChangeDetection)&&n(),lf(e)}},onInvoke:(r,o,i,s,a,c,u)=>{try{return uf(e),r.invoke(i,s,a,c,u)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!Wy(c)&&n(),lf(e)}},onHasTask:(r,o,i,s)=>{r.hasTask(i,s),o===i&&(s.change=="microTask"?(e._hasPendingMicrotasks=s.microTask,jc(e),ru(e)):s.change=="macroTask"&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(r,o,i,s)=>(r.handleError(i,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}function jc(e){e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0?e.hasPendingMicrotasks=!0:e.hasPendingMicrotasks=!1}function uf(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function lf(e){e._nesting--,ru(e)}var Hi=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new le;onMicrotaskEmpty=new le;onStable=new le;onError=new le;run(n,t,r){return n.apply(t,r)}runGuarded(n,t,r){return n.apply(t,r)}runOutsideAngular(n){return n()}runTask(n,t,r,o){return n.apply(t,r)}};function qy(e){return cp(e,"__ignore_ng_zone__")}function Wy(e){return cp(e,"__scheduler_tick__")}function cp(e,n){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[n]===!0}var ou=(()=>{class e{impl=null;execute(){this.impl?.execute()}static \u0275prov=y({token:e,providedIn:"root",factory:()=>new e})}return e})(),up=[0,1,2,3],lp=(()=>{class e{ngZone=p(z);scheduler=p(tt);errorHandler=p(xe,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){p(ln,{optional:!0})}execute(){let t=this.sequences.size>0;t&&L(16),this.executing=!0;for(let r of up)for(let o of this.sequences)if(!(o.erroredOrDestroyed||!o.hooks[r]))try{o.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let i=o.hooks[r];return i(o.pipelinedValue)},o.snapshot))}catch(i){o.erroredOrDestroyed=!0,this.errorHandler?.handleError(i)}this.executing=!1;for(let r of this.sequences)r.afterRun(),r.once&&(this.sequences.delete(r),r.destroy());for(let r of this.deferredRegistrations)this.sequences.add(r);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),t&&L(17)}register(t){let{view:r}=t;r!==void 0?((r[en]??=[]).push(t),Hn(r),r[M]|=8192):this.executing?this.deferredRegistrations.add(t):this.addSequence(t)}addSequence(t){this.sequences.add(t),this.scheduler.notify(7)}unregister(t){this.executing&&this.sequences.has(t)?(t.erroredOrDestroyed=!0,t.pipelinedValue=void 0,t.once=!0):(this.sequences.delete(t),this.deferredRegistrations.delete(t))}maybeTrace(t,r){return r?r.run(ns.AFTER_NEXT_RENDER,t):t()}static \u0275prov=y({token:e,providedIn:"root",factory:()=>new e})}return e})(),$i=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(n,t,r,o,i,s=null){this.impl=n,this.hooks=t,this.view=r,this.once=o,this.snapshot=s,this.unregisterOnDestroy=i?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let n=this.view?.[en];n&&(this.view[en]=n.filter(t=>t!==this))}};function iu(e,n){let t=n?.injector??p(Ee);return ut("NgAfterNextRender"),Yy(e,t,n,!0)}function Zy(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function Yy(e,n,t,r){let o=n.get(ou);o.impl??=n.get(lp);let i=n.get(ln,null,{optional:!0}),s=t?.manualCleanup!==!0?n.get(St):null,a=n.get(Ri,null,{optional:!0}),c=new $i(o.impl,Zy(e),a?.view,r,s,i?.snapshot(null));return o.impl.register(c),c}var Qy=new v("",{providedIn:"root",factory:()=>({queue:new Set,isScheduled:!1,scheduler:null})});function dp(e,n){let t=e.get(Qy);if(Array.isArray(n))for(let r of n)t.queue.add(r);else t.queue.add(n);t.scheduler&&t.scheduler(e)}function Ky(e,n){for(let[t,r]of n)dp(e,r.animateFns)}function df(e,n,t,r){let o=e?.[Ur]?.enter;n!==null&&o&&o.has(t.index)&&Ky(r,o)}function zn(e,n,t,r,o,i,s,a){if(o!=null){let c,u=!1;Pe(o)?c=o:st(o)&&(u=!0,o=o[Oe]);let l=Se(o);e===0&&r!==null?(df(a,r,i,t),s==null?tp(n,r,l):Ui(n,r,l,s||null,!0)):e===1&&r!==null?(df(a,r,i,t),Ui(n,r,l,s||null,!0)):e===2?ff(a,i,t,d=>{ky(n,l,u,d)}):e===3&&ff(a,i,t,()=>{n.destroyNode(l)}),c!=null&&lv(n,e,t,c,i,r,s)}}function Jy(e,n){fp(e,n),n[Oe]=null,n[Te]=null}function Xy(e,n,t,r,o,i){r[Oe]=o,r[Te]=n,rs(e,r,t,1,o,i)}function fp(e,n){n[it].changeDetectionScheduler?.notify(9),rs(e,n,n[ie],2,null,null)}function ev(e){let n=e[Un];if(!n)return Mc(e[N],e);for(;n;){let t=null;if(st(n))t=n[Un];else{let r=n[ue];r&&(t=r)}if(!t){for(;n&&!n[be]&&n!==e;)st(n)&&Mc(n[N],n),n=n[ee];n===null&&(n=e),st(n)&&Mc(n[N],n),t=n&&n[be]}n=t}}function su(e,n){let t=e[Hr],r=t.indexOf(n);t.splice(r,1)}function au(e,n){if(rn(n))return;let t=n[ie];t.destroyNode&&rs(e,n,t,3,null,null),ev(n)}function Mc(e,n){if(rn(n))return;let t=S(null);try{n[M]&=-129,n[M]|=256,n[Ie]&&Tr(n[Ie]),rv(e,n),nv(e,n),n[N].type===1&&n[ie].destroy();let r=n[Kt];if(r!==null&&Pe(n[ee])){r!==n[ee]&&su(r,n);let o=n[Xt];o!==null&&o.detachView(e)}Oc(n)}finally{S(t)}}function ff(e,n,t,r){let o=e?.[Ur];if(o==null||o.leave==null||!o.leave.has(n.index))return r(!1);if(o.skipLeaveAnimations)return o.skipLeaveAnimations=!1,r(!1);e&&Wn.add(e),dp(t,()=>{if(o.leave&&o.leave.has(n.index)){let s=o.leave.get(n.index),a=[];if(s)for(let c=0;c{e[Ur].running=void 0,Wn.delete(e),n(!0)});return}n(!1)}function nv(e,n){let t=e.cleanup,r=n[Bn];if(t!==null)for(let s=0;s=0?r[a]():r[-a].unsubscribe(),s+=2}else{let a=r[t[s+1]];t[s].call(a)}r!==null&&(n[Bn]=null);let o=n[et];if(o!==null){n[et]=null;for(let s=0;sQ&&ip(e,n,Q,!1),L(s?2:0,o,t),t(r,o)}finally{_t(i),L(s?3:1,o,t)}}function gp(e,n,t){hv(e,n,t),(t.flags&64)===64&&gv(e,n,t)}function lu(e,n,t=at){let r=n.localNames;if(r!==null){let o=n.index+1;for(let i=0;inull;function hv(e,n,t){let r=t.directiveStart,o=t.directiveEnd;tn(t)&&Uy(n,t,e.data[r+t.componentOffset]),e.firstCreatePass||Pf(t,n);let i=t.initialInputs;for(let s=r;s{Hn(e.lView)},consumerOnSignalRead(){this.lView[Ie]=this}});function Mv(e){let n=e[Ie]??Object.create(Nv);return n.lView=e,n}var Nv=j(g({},Ir),{consumerIsAlwaysLive:!0,kind:"template",consumerMarkedDirty:e=>{let n=Et(e.lView);for(;n&&!Cp(n[N]);)n=Et(n);n&&uc(n)},consumerOnSignalRead(){this.lView[Ie]=this}});function Cp(e){return e.type!==2}function wp(e){if(e[Br]===null)return;let n=!0;for(;n;){let t=!1;for(let r of e[Br])r.dirty&&(t=!0,r.zone===null||Zone.current===r.zone?r.run():r.zone.run(()=>r.run()));n=t&&!!(e[M]&8192)}}var Rv=100;function bp(e,n=0){let r=e[it].rendererFactory,o=!1;o||r.begin?.();try{Av(e,n)}finally{o||r.end?.()}}function Av(e,n){let t=mc();try{yc(!0),Vc(e,n);let r=0;for(;$r(e);){if(r===Rv)throw new m(103,!1);r++,Vc(e,1)}}finally{yc(t)}}function xv(e,n,t,r){if(rn(n))return;let o=n[M],i=!1,s=!1;Ti(n);let a=!0,c=null,u=null;i||(Cp(e)?(u=bv(n),c=wr(u)):$o()===null?(a=!1,u=Mv(n),c=wr(u)):n[Ie]&&(Tr(n[Ie]),n[Ie]=null));try{cc(n),Ud(e.bindingStartIndex),t!==null&&hp(e,n,t,2,r);let l=(o&3)===3;if(!i)if(l){let f=e.preOrderCheckHooks;f!==null&&Oi(n,f,null)}else{let f=e.preOrderHooks;f!==null&&Pi(n,f,0,null),_c(n,0)}if(s||Ov(n),wp(n),Tp(n,0),e.contentQueries!==null&&Qf(e,n),!i)if(l){let f=e.contentCheckHooks;f!==null&&Oi(n,f)}else{let f=e.contentHooks;f!==null&&Pi(n,f,1),_c(n,1)}kv(e,n);let d=e.components;d!==null&&Sp(n,d,0);let h=e.viewQuery;if(h!==null&&kc(2,h,r),!i)if(l){let f=e.viewCheckHooks;f!==null&&Oi(n,f)}else{let f=e.viewHooks;f!==null&&Pi(n,f,2),_c(n,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),n[Di]){for(let f of n[Di])f();n[Di]=null}i||(Ep(n),n[M]&=-73)}catch(l){throw i||Hn(n),l}finally{u!==null&&(zo(u,c),a&&_v(u)),_i()}}function Tp(e,n){for(let t=$f(e);t!==null;t=zf(t))for(let r=ue;r0&&(e[t-1][be]=r[be]);let i=Pr(e,ue+n);Jy(r[N],r);let s=i[Xt];s!==null&&s.detachView(i[N]),r[ee]=null,r[be]=null,r[M]&=-129}return r}function jv(e,n,t,r){let o=ue+r,i=t.length;r>0&&(t[o-1][be]=n),r-1&&(zi(n,r),Pr(t,r))}this._attachedToViewContainer=!1}au(this._lView[N],this._lView)}onDestroy(n){lc(this._lView,n)}markForCheck(){fu(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[M]&=-129}reattach(){wi(this._lView),this._lView[M]|=128}detectChanges(){this._lView[M]|=1024,bp(this._lView)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new m(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let n=Vn(this._lView),t=this._lView[Kt];t!==null&&!n&&su(t,this._lView),fp(this._lView[N],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new m(902,!1);this._appRef=n;let t=Vn(this._lView),r=this._lView[Kt];r!==null&&!t&&Rp(r,this._lView),wi(this._lView)}};function os(e,n,t,r,o){let i=e.data[n];if(i===null)i=Bv(e,n,t,r,o),Vd()&&(i.flags|=32);else if(i.type&64){i.type=t,i.value=r,i.attrs=o;let s=Ld();i.injectorIndex=s===null?-1:s.injectorIndex}return $n(i,!0),i}function Bv(e,n,t,r,o){let i=hc(),s=gc(),a=s?i:i&&i.parent,c=e.data[n]=Vv(e,a,t,n,r,o);return Uv(e,c,i,s),c}function Uv(e,n,t,r){e.firstChild===null&&(e.firstChild=n),t!==null&&(r?t.child==null&&n.parent!==null&&(t.child=n):t.next===null&&(t.next=n,n.prev=t))}function Vv(e,n,t,r,o,i){let s=n?n.injectorIndex:-1,a=0;return Fd()&&(a|=128),{type:t,index:r,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,attrs:i,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:n,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}var jR=new RegExp(`^(\\d+)*(${vy}|${yy})*(.*)`);var Hv=()=>null,$v=()=>null;function hf(e,n){return Hv(e,n)}function zv(e,n,t){return $v(e,n,t)}var Ap=class{},is=class{},Hc=class{resolveComponentFactory(n){throw new m(917,!1)}},no=class{static NULL=new Hc},an=class{};var xp=(()=>{class e{static \u0275prov=y({token:e,providedIn:"root",factory:()=>null})}return e})();var ki={},$c=class{injector;parentInjector;constructor(n,t){this.injector=n,this.parentInjector=t}get(n,t,r){let o=this.injector.get(n,ki,r);return o!==ki||t===ki?o:this.parentInjector.get(n,t,r)}};function Gi(e,n,t){let r=t?e.styles:null,o=t?e.classes:null,i=0;if(n!==null)for(let s=0;s0&&(t.directiveToIndex=new Map);for(let h=0;h0;){let t=e[--n];if(typeof t=="number"&&t<0)return t}return 0}function Xv(e,n,t){if(t){if(n.exportAs)for(let r=0;rr(Se(T[e.index])):e.index;aD(D,n,t,i,a,f,!1)}}return u}function iD(e){return e.startsWith("animation")||e.startsWith("transition")}function sD(e,n,t,r){let o=e.cleanup;if(o!=null)for(let i=0;ic?a[c]:null}typeof s=="string"&&(i+=2)}return null}function aD(e,n,t,r,o,i,s){let a=n.firstCreatePass?xd(n):null,c=Ad(t),u=c.length;c.push(o,i),a&&a.push(r,e,u,(u+1)*(s?-1:1))}var zc=Symbol("BINDING");var qi=class extends no{ngModule;constructor(n){super(),this.ngModule=n}resolveComponentFactory(n){let t=ot(n);return new cn(t,this.ngModule)}};function cD(e){return Object.keys(e).map(n=>{let[t,r,o]=e[n],i={propName:t,templateName:n,isSignal:(r&ts.SignalBased)!==0};return o&&(i.transform=o),i})}function uD(e){return Object.keys(e).map(n=>({propName:e[n],templateName:n}))}function lD(e,n,t){let r=n instanceof $?n:n?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new $c(t,r):t}function dD(e){let n=e.get(an,null);if(n===null)throw new m(407,!1);let t=e.get(xp,null),r=e.get(tt,null);return{rendererFactory:n,sanitizer:t,changeDetectionScheduler:r,ngReflect:!1}}function fD(e,n){let t=Fp(e);return ep(n,t,t==="svg"?bd:t==="math"?Td:null)}function Fp(e){return(e.selectors[0][0]||"div").toLowerCase()}var cn=class extends is{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=cD(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=uD(this.componentDef.outputs),this.cachedOutputs}constructor(n,t){super(),this.componentDef=n,this.ngModule=t,this.componentType=n.type,this.selector=Ay(n.selectors),this.ngContentSelectors=n.ngContentSelectors??[],this.isBoundToModule=!!t}create(n,t,r,o,i,s){L(22);let a=S(null);try{let c=this.componentDef,u=pD(r,c,s,i),l=lD(c,o||this.ngModule,n),d=dD(l),h=d.rendererFactory.createRenderer(null,c),f=r?dv(h,r,c.encapsulation,l):fD(c,h),D=s?.some(Df)||i?.some(C=>typeof C!="function"&&C.bindings.some(Df)),T=Xc(null,u,null,512|rp(c),null,null,d,h,l,null,Yf(f,l,!0));T[Q]=f,Ti(T);let I=null;try{let C=Pp(Q,T,2,"#host",()=>u.directiveRegistry,!0,0);np(h,f,C),qn(f,T),gp(u,T,C),Kf(u,C,T),kp(u,C),t!==void 0&&gD(C,this.ngContentSelectors,t),I=He(C.index,T),T[te]=I[te],du(u,T,null)}catch(C){throw I!==null&&Oc(I),Oc(T),C}finally{L(23),_i()}return new Wi(this.componentType,T,!!D)}finally{S(a)}}};function pD(e,n,t,r){let o=e?["ng-version","20.3.9"]:xy(n.selectors[0]),i=null,s=null,a=0;if(t)for(let l of t)a+=l[zc].requiredVars,l.create&&(l.targetIdx=0,(i??=[]).push(l)),l.update&&(l.targetIdx=0,(s??=[]).push(l));if(r)for(let l=0;l{if(t&1&&e)for(let r of e)r.create();if(t&2&&n)for(let r of n)r.update()}}function Df(e){let n=e[zc].kind;return n==="input"||n==="twoWay"}var Wi=class extends Ap{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(n,t,r){super(),this._rootLView=t,this._hasInputBindings=r,this._tNode=Ii(t[N],Q),this.location=qc(this._tNode,t),this.instance=He(this._tNode.index,t)[te],this.hostView=this.changeDetectorRef=new sn(t,void 0),this.componentType=n}setInput(n,t){this._hasInputBindings;let r=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(n)&&Object.is(this.previousInputValues.get(n),t))return;let o=this._rootLView,i=vp(r,o[N],o,n,t);this.previousInputValues.set(n,t);let s=He(r.index,o);fu(s,1)}get injector(){return new on(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(n){this.hostView.onDestroy(n)}};function gD(e,n,t){let r=e.projection=[];for(let o=0;o{class e{static __NG_ELEMENT_ID__=mD}return e})();function mD(){let e=Me();return vD(e,B())}var yD=ro,Lp=class extends yD{_lContainer;_hostTNode;_hostLView;constructor(n,t,r){super(),this._lContainer=n,this._hostTNode=t,this._hostLView=r}get element(){return qc(this._hostTNode,this._hostLView)}get injector(){return new on(this._hostTNode,this._hostLView)}get parentInjector(){let n=Gc(this._hostTNode,this._hostLView);if(Af(n)){let t=ji(n,this._hostLView),r=Li(n),o=t[N].data[r+8];return new on(o,t)}else return new on(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){let t=Ef(this._lContainer);return t!==null&&t[n]||null}get length(){return this._lContainer.length-ue}createEmbeddedView(n,t,r){let o,i;typeof r=="number"?o=r:r!=null&&(o=r.index,i=r.injector);let s=hf(this._lContainer,n.ssrId),a=n.createEmbeddedViewImpl(t||{},i,s);return this.insertImpl(a,o,Uc(this._hostTNode,s)),a}createComponent(n,t,r,o,i,s,a){let c=n&&!zm(n),u;if(c)u=t;else{let I=t||{};u=I.index,r=I.injector,o=I.projectableNodes,i=I.environmentInjector||I.ngModuleRef,s=I.directives,a=I.bindings}let l=c?n:new cn(ot(n)),d=r||this.parentInjector;if(!i&&l.ngModule==null){let C=(c?d:this.parentInjector).get($,null);C&&(i=C)}let h=ot(l.componentType??{}),f=hf(this._lContainer,h?.id??null),D=f?.firstChild??null,T=l.create(d,o,D,i,s,a);return this.insertImpl(T.hostView,u,Uc(this._hostTNode,f)),T}insert(n,t){return this.insertImpl(n,t,!0)}insertImpl(n,t,r){let o=n._lView;if(Md(o)){let a=this.indexOf(n);if(a!==-1)this.detach(a);else{let c=o[ee],u=new Lp(c,c[Te],c[ee]);u.detach(u.indexOf(n))}}let i=this._adjustIndex(t),s=this._lContainer;return Np(s,o,i,r),n.attachToViewContainerRef(),Ka(Nc(s),i,n),n}move(n,t){return this.insert(n,t)}indexOf(n){let t=Ef(this._lContainer);return t!==null?t.indexOf(n):-1}remove(n){let t=this._adjustIndex(n,-1),r=zi(this._lContainer,t);r&&(Pr(Nc(this._lContainer),t),au(r[N],r))}detach(n){let t=this._adjustIndex(n,-1),r=zi(this._lContainer,t);return r&&Pr(Nc(this._lContainer),t)!=null?new sn(r):null}_adjustIndex(n,t=0){return n??this.length+t}};function Ef(e){return e[Vr]}function Nc(e){return e[Vr]||(e[Vr]=[])}function vD(e,n){let t,r=n[e.index];return Pe(r)?t=r:(t=Mp(r,n,null,e),n[e.index]=t,eu(n,t)),ED(t,n,e,r),new Lp(t,e,n)}function DD(e,n){let t=e[ie],r=t.createComment(""),o=at(n,e),i=t.parentNode(o);return Ui(t,i,r,t.nextSibling(o),!1),r}var ED=wD,ID=()=>!1;function CD(e,n,t){return ID(e,n,t)}function wD(e,n,t,r){if(e[wt])return;let o;t.type&8?o=Se(r):o=DD(n,t),e[wt]=o}var un=class{},ss=class{};var Zi=class extends un{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];componentFactoryResolver=new qi(this);constructor(n,t,r,o=!0){super(),this.ngModuleType=n,this._parent=t;let i=ec(n);this._bootstrapComponents=Jf(i.bootstrap),this._r3Injector=Cc(n,t,[{provide:un,useValue:this},{provide:no,useValue:this.componentFactoryResolver},...r],vt(n),new Set(["environment"])),o&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){let n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(t=>t()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}},Yi=class extends ss{moduleType;constructor(n){super(),this.moduleType=n}create(n){return new Zi(this.moduleType,n,[])}};var Jr=class extends un{injector;componentFactoryResolver=new qi(this);instance=null;constructor(n){super();let t=new qt([...n.providers,{provide:un,useValue:this},{provide:no,useValue:this.componentFactoryResolver}],n.parent||Fr(),n.debugName,new Set(["environment"]));this.injector=t,n.runEnvironmentInitializers&&t.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}};function Jn(e,n,t=null){return new Jr({providers:e,parent:n,debugName:t,runEnvironmentInitializers:!0}).injector}var bD=(()=>{class e{_injector;cachedInjectors=new Map;constructor(t){this._injector=t}getOrCreateStandaloneInjector(t){if(!t.standalone)return null;if(!this.cachedInjectors.has(t)){let r=nc(!1,t.type),o=r.length>0?Jn([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()}}static \u0275prov=y({token:e,providedIn:"environment",factory:()=>new e(E($))})}return e})();function dn(e){return Xr(()=>{let n=jp(e),t=j(g({},n),{decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===Wc.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&e.dependencies||null,getStandaloneInjector:n.standalone?o=>o.get(bD).getOrCreateStandaloneInjector(t):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||ct.Emulated,styles:e.styles||Ae,_:null,schemas:e.schemas||null,tView:null,id:""});n.standalone&&ut("NgStandalone"),Bp(t);let r=e.dependencies;return t.directiveDefs=If(r,TD),t.pipeDefs=If(r,yd),t.id=MD(t),t})}function TD(e){return ot(e)||tc(e)}function Rt(e){return Xr(()=>({type:e.type,bootstrap:e.bootstrap||Ae,declarations:e.declarations||Ae,imports:e.imports||Ae,exports:e.exports||Ae,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function _D(e,n){if(e==null)return Zt;let t={};for(let r in e)if(e.hasOwnProperty(r)){let o=e[r],i,s,a,c;Array.isArray(o)?(a=o[0],i=o[1],s=o[2]??i,c=o[3]||null):(i=o,s=o,a=ts.None,c=null),t[i]=[r,a,c],n[i]=s}return t}function SD(e){if(e==null)return Zt;let n={};for(let t in e)e.hasOwnProperty(t)&&(n[e[t]]=t);return n}function oo(e){return Xr(()=>{let n=jp(e);return Bp(n),n})}function as(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function jp(e){let n={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:n,inputConfig:e.inputs||Zt,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||Ae,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,inputs:_D(e.inputs,n),outputs:SD(e.outputs),debugInfo:null}}function Bp(e){e.features?.forEach(n=>n(e))}function If(e,n){return e?()=>{let t=typeof e=="function"?e():e,r=[];for(let o of t){let i=n(o);i!==null&&r.push(i)}return r}:null}function MD(e){let n=0,t=typeof e.consts=="function"?"":e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,t,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let i of r.join("|"))n=Math.imul(31,n)+i.charCodeAt(0)<<0;return n+=2147483648,"c"+n}function ND(e,n,t,r,o,i,s,a){if(t.firstCreatePass){e.mergedAttrs=Ki(e.mergedAttrs,e.attrs);let l=e.tView=Jc(2,e,o,i,s,t.directiveRegistry,t.pipeRegistry,null,t.schemas,t.consts,null);t.queries!==null&&(t.queries.template(t,e),l.queries=t.queries.embeddedTView(e))}a&&(e.flags|=a),$n(e,!1);let c=RD(t,n,e,r);Mi()&&cu(t,n,c,e),qn(c,n);let u=Mp(c,n,c,e);n[r+Q]=u,eu(n,u),CD(u,e,n)}function Up(e,n,t,r,o,i,s,a,c,u,l){let d=t+Q,h;if(n.firstCreatePass){if(h=os(n,d,4,s||null,a||null),u!=null){let f=bt(n.consts,u);h.localNames=[];for(let D=0;D{class e{log(t){console.log(t)}warn(t){console.warn(t)}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();var mu=new v("");function fn(e){return!!e&&typeof e.then=="function"}function cs(e){return!!e&&typeof e.subscribe=="function"}var yu=new v("");function us(e){return Yt([{provide:yu,multi:!0,useValue:e}])}var vu=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((t,r)=>{this.resolve=t,this.reject=r});appInits=p(yu,{optional:!0})??[];injector=p(Ee);constructor(){}runInitializers(){if(this.initialized)return;let t=[];for(let o of this.appInits){let i=Y(this.injector,o);if(fn(i))t.push(i);else if(cs(i)){let s=new Promise((a,c)=>{i.subscribe({complete:a,error:c})});t.push(s)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(t).then(()=>{r()}).catch(o=>{this.reject(o)}),t.length===0&&r(),this.initialized=!0}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),io=new v("");function Vp(){pa(()=>{let e="";throw new m(600,e)})}function Hp(e){return e.isBoundToModule}var xD=10;var pn=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=p(ye);afterRenderManager=p(ou);zonelessEnabled=p(Ai);rootEffectScheduler=p(Tc);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new K;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=p($e);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(R(t=>!t))}constructor(){p(ln,{optional:!0})}whenStable(){let t;return new Promise(r=>{t=this.isStable.subscribe({next:o=>{o&&r()}})}).finally(()=>{t.unsubscribe()})}_injector=p($);_rendererFactory=null;get injector(){return this._injector}bootstrap(t,r){return this.bootstrapImpl(t,r)}bootstrapImpl(t,r,o=Ee.NULL){return this._injector.get(z).run(()=>{L(10);let s=t instanceof is;if(!this._injector.get(vu).done){let D="";throw new m(405,D)}let c;s?c=t:c=this._injector.get(no).resolveComponentFactory(t),this.componentTypes.push(c.componentType);let u=Hp(c)?void 0:this._injector.get(un),l=r||c.selector,d=c.create(o,[],l,u),h=d.location.nativeElement,f=d.injector.get(mu,null);return f?.registerApplication(h),d.onDestroy(()=>{this.detachView(d.hostView),Yr(this.components,d),f?.unregisterApplication(h)}),this._loadComponent(d),L(11,d),d})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){L(12),this.tracingSnapshot!==null?this.tracingSnapshot.run(ns.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw new m(101,!1);let t=S(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,S(t),this.afterTick.next(),L(13)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(an,null,{optional:!0}));let t=0;for(;this.dirtyFlags!==0&&t++$r(t))){this.dirtyFlags|=2;return}else this.dirtyFlags&=-8}attachView(t){let r=t;this._views.push(r),r.attachToAppRef(this)}detachView(t){let r=t;Yr(this._views,r),r.detachFromAppRef()}_loadComponent(t){this.attachView(t.hostView);try{this.tick()}catch(o){this.internalErrorHandler(o)}this.components.push(t),this._injector.get(io,[]).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._destroyListeners=[]}}onDestroy(t){return this._destroyListeners.push(t),()=>Yr(this._destroyListeners,t)}destroy(){if(this._destroyed)throw new m(406,!1);let t=this._injector;t.destroy&&!t.destroyed&&t.destroy()}get viewCount(){return this._views.length}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function Yr(e,n){let t=e.indexOf(n);t>-1&&e.splice(t,1)}var GR=typeof document<"u"&&typeof document?.documentElement?.getAnimations=="function";function ls(e,n,t,r,o,i,s,a){ut("NgControlFlow");let c=B(),u=Tt(),l=bt(u.consts,i);return Up(c,u,e,n,t,r,o,l,256,s,a),so}function so(e,n,t,r,o,i,s,a){ut("NgControlFlow");let c=B(),u=Tt(),l=bt(u.consts,i);return Up(c,u,e,n,t,r,o,l,512,s,a),so}function ds(e,n){ut("NgControlFlow");let t=B(),r=vc(),o=t[r]!==Mt?t[r]:-1,i=o!==-1?Cf(t,Q+o):void 0,s=0;if(hu(t,r,e)){let a=S(null);try{if(i!==void 0&&Lv(i,s),e!==-1){let c=Q+e,u=Cf(t,c),l=OD(t[N],c),d=zv(u,l,t),h=wv(t,l,n,{dehydratedView:d});Np(u,h,s,Uc(l,d))}}finally{S(a)}}else if(i!==void 0){let a=Fv(i,s);a!==void 0&&(a[te]=n)}}function Cf(e,n){return e[n]}function OD(e,n){return Ii(e,n)}function wf(e,n,t,r,o){vp(n,e,t,o?"class":"style",r)}function Du(e,n,t,r){let o=B(),i=o[N],s=e+Q,a=i.firstCreatePass?Pp(s,o,2,n,yv,kd(),t,r):i.data[s];if(mp(a,o,e,n,$p),Ei(a)){let c=o[N];gp(c,o,a),Kf(c,a,o)}return r!=null&&lu(o,a),Du}function Eu(){let e=Tt(),n=Me(),t=yp(n);return e.firstCreatePass&&kp(e,t),fc(t)&&pc(),dc(),t.classesWithoutHost!=null&&Km(t)&&wf(e,t,B(),t.classesWithoutHost,!0),t.stylesWithoutHost!=null&&Jm(t)&&wf(e,t,B(),t.stylesWithoutHost,!1),Eu}function Xn(e,n,t,r){return Du(e,n,t,r),Eu(),Xn}function se(e,n,t,r){let o=B(),i=o[N],s=e+Q,a=i.firstCreatePass?tD(s,i,2,n,t,r):i.data[s];return mp(a,o,e,n,$p),r!=null&&lu(o,a),se}function ae(){let e=Me(),n=yp(e);return fc(n)&&pc(),dc(),ae}function er(e,n,t,r){return se(e,n,t,r),ae(),er}var $p=(e,n,t,r,o)=>(Ni(!0),ep(n[ie],r,Zd()));function Iu(){return B()}var ao="en-US";var PD=ao;function zp(e){typeof e=="string"&&(PD=e.toLowerCase().replace(/_/g,"-"))}function co(e,n,t){let r=B(),o=Tt(),i=Me();return(i.type&3||t)&&oD(i,o,r,t,r[ie],e,n,rD(i,r,n)),co}function uo(e=1){return Wd(e)}function ve(e,n=""){let t=B(),r=Tt(),o=e+Q,i=r.firstCreatePass?os(r,o,1,n,null):r.data[o],s=kD(r,t,i,n,e);t[o]=s,Mi()&&cu(r,t,s,i),$n(i,!1)}var kD=(e,n,t,r,o)=>(Ni(!0),Oy(n[ie],r));function FD(e,n,t,r=""){return hu(e,vc(),t)?n+Za(t)+r:Mt}function tr(e){return Cu("",e),tr}function Cu(e,n,t){let r=B(),o=FD(r,e,n,t);return o!==Mt&&LD(r,Si(),o),Cu}function LD(e,n,t){let r=_d(n,e);Py(e[ie],r,t)}function jD(e,n){let t=e[n];return t===Mt?void 0:t}function BD(e,n,t,r,o,i){let s=n+t;return hu(e,s,o)?nD(e,s+1,i?r.call(i,o):r(o)):jD(e,s+1)}function At(e,n){let t=Tt(),r,o=e+Q;t.firstCreatePass?(r=UD(n,t.pipeRegistry),t.data[o]=r,r.onDestroy&&(t.destroyHooks??=[]).push(o,r.onDestroy)):r=t.data[o];let i=r.factory||(r.factory=Dt(r.type,!0)),s,a=ce(Kn);try{let c=Bi(!1),u=i();return Bi(c),ac(t,B(),o,u),u}finally{ce(a)}}function UD(e,n){if(n)for(let t=n.length-1;t>=0;t--){let r=n[t];if(e===r.name)return r}}function xt(e,n,t){let r=e+Q,o=B(),i=Sd(o,r);return VD(o,r)?BD(o,Bd(),n,i.transform,t,i):i.transform(t)}function VD(e,n){return e[N].data[n].pure}var Qi=class{ngModuleFactory;componentFactories;constructor(n,t){this.ngModuleFactory=n,this.componentFactories=t}},wu=(()=>{class e{compileModuleSync(t){return new Yi(t)}compileModuleAsync(t){return Promise.resolve(this.compileModuleSync(t))}compileModuleAndAllComponentsSync(t){let r=this.compileModuleSync(t),o=ec(t),i=Jf(o.declarations).reduce((s,a)=>{let c=ot(a);return c&&s.push(new cn(c)),s},[]);return new Qi(r,i)}compileModuleAndAllComponentsAsync(t){return Promise.resolve(this.compileModuleAndAllComponentsSync(t))}clearCache(){}clearCacheFor(t){}getModuleId(t){}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var HD=(()=>{class e{zone=p(z);changeDetectionScheduler=p(tt);applicationRef=p(pn);applicationErrorHandler=p(ye);_onMicrotaskEmptySubscription;initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.changeDetectionScheduler.runningTick||this.zone.run(()=>{try{this.applicationRef.dirtyFlags|=1,this.applicationRef._tick()}catch(t){this.applicationErrorHandler(t)}})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function Gp({ngZoneFactory:e,ignoreChangesOutsideZone:n,scheduleInRootZone:t}){return e??=()=>new z(j(g({},qp()),{scheduleInRootZone:t})),[{provide:z,useFactory:e},{provide:It,multi:!0,useFactory:()=>{let r=p(HD,{optional:!0});return()=>r.initialize()}},{provide:It,multi:!0,useFactory:()=>{let r=p($D);return()=>{r.initialize()}}},n===!0?{provide:wc,useValue:!0}:[],{provide:bc,useValue:t??sp},{provide:ye,useFactory:()=>{let r=p(z),o=p($),i;return s=>{r.runOutsideAngular(()=>{o.destroyed&&!i?setTimeout(()=>{throw s}):(i??=o.get(xe),i.handleError(s))})}}}]}function qp(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:e?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:e?.runCoalescing??!1}}var $D=(()=>{class e{subscription=new G;initialized=!1;zone=p(z);pendingTasks=p($e);initialize(){if(this.initialized)return;this.initialized=!0;let t=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(t=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{z.assertNotInAngularZone(),queueMicrotask(()=>{t!==null&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(t),t=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{z.assertInAngularZone(),t??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var Wp=(()=>{class e{applicationErrorHandler=p(ye);appRef=p(pn);taskService=p($e);ngZone=p(z);zonelessEnabled=p(Ai);tracing=p(ln,{optional:!0});disableScheduling=p(wc,{optional:!0})??!1;zoneIsDefined=typeof Zone<"u"&&!!Zone.root.run;schedulerTickApplyArgs=[{data:{__scheduler_tick__:!0}}];subscriptions=new G;angularZoneId=this.zoneIsDefined?this.ngZone._inner?.get(Vi):null;scheduleInRootZone=!this.zonelessEnabled&&this.zoneIsDefined&&(p(bc,{optional:!0})??!1);cancelScheduledCallback=null;useMicrotaskScheduler=!1;runningTick=!1;pendingRenderTaskId=null;constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe(()=>{this.runningTick||this.cleanup()})),this.subscriptions.add(this.ngZone.onUnstable.subscribe(()=>{this.runningTick||this.cleanup()})),this.disableScheduling||=!this.zonelessEnabled&&(this.ngZone instanceof Hi||!this.zoneIsDefined)}notify(t){if(!this.zonelessEnabled&&t===5)return;let r=!1;switch(t){case 0:{this.appRef.dirtyFlags|=2;break}case 3:case 2:case 4:case 5:case 1:{this.appRef.dirtyFlags|=4;break}case 6:{this.appRef.dirtyFlags|=2,r=!0;break}case 12:{this.appRef.dirtyFlags|=16,r=!0;break}case 13:{this.appRef.dirtyFlags|=2,r=!0;break}case 11:{r=!0;break}case 9:case 8:case 7:case 10:default:this.appRef.dirtyFlags|=8}if(this.appRef.tracingSnapshot=this.tracing?.snapshot(this.appRef.tracingSnapshot)??null,!this.shouldScheduleTick(r))return;let o=this.useMicrotaskScheduler?cf:ap;this.pendingRenderTaskId=this.taskService.add(),this.scheduleInRootZone?this.cancelScheduledCallback=Zone.root.run(()=>o(()=>this.tick())):this.cancelScheduledCallback=this.ngZone.runOutsideAngular(()=>o(()=>this.tick()))}shouldScheduleTick(t){return!(this.disableScheduling&&!t||this.appRef.destroyed||this.pendingRenderTaskId!==null||this.runningTick||this.appRef._runningTick||!this.zonelessEnabled&&this.zoneIsDefined&&Zone.current.get(Vi+this.angularZoneId))}tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRef.dirtyFlags===0){this.cleanup();return}!this.zonelessEnabled&&this.appRef.dirtyFlags&7&&(this.appRef.dirtyFlags|=1);let t=this.taskService.add();try{this.ngZone.run(()=>{this.runningTick=!0,this.appRef._tick()},void 0,this.schedulerTickApplyArgs)}catch(r){this.taskService.remove(t),this.applicationErrorHandler(r)}finally{this.cleanup()}this.useMicrotaskScheduler=!0,cf(()=>{this.useMicrotaskScheduler=!1,this.taskService.remove(t)})}ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this.cancelScheduledCallback=null,this.pendingRenderTaskId!==null){let t=this.pendingRenderTaskId;this.pendingRenderTaskId=null,this.taskService.remove(t)}}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function zD(){return typeof $localize<"u"&&$localize.locale||ao}var fs=new v("",{providedIn:"root",factory:()=>p(fs,{optional:!0,skipSelf:!0})||zD()});function Fe(e){return ud(e)}var Zp=class{[pe];constructor(n){this[pe]=n}destroy(){this[pe].destroy()}};var Xp=Symbol("InputSignalNode#UNSET"),pE=j(g({},Go),{transformFn:void 0,applyValueToInputSignal(e,n){_n(e,n)}});function eh(e,n){let t=Object.create(pE);t.value=e,t.transformFn=n?.transform;function r(){if(Cr(t),t.value===Xp){let o=null;throw new m(-950,o)}return t.value}return r[pe]=t,r}var hE=new v("");hE.__NG_ELEMENT_ID__=e=>{let n=Me();if(n===null)throw new m(204,!1);if(n.type&2)return n.value;if(e&8)return null;throw new m(204,!1)};function Yp(e,n){return eh(e,n)}function gE(e){return eh(Xp,e)}var th=(Yp.required=gE,Yp);var bu=new v(""),mE=new v("");function lo(e){return!e.moduleRef}function yE(e){let n=lo(e)?e.r3Injector:e.moduleRef.injector,t=n.get(z);return t.run(()=>{lo(e)?e.r3Injector.resolveInjectorInitializers():e.moduleRef.resolveInjectorInitializers();let r=n.get(ye),o;if(t.runOutsideAngular(()=>{o=t.onError.subscribe({next:r})}),lo(e)){let i=()=>n.destroy(),s=e.platformInjector.get(bu);s.add(i),n.onDestroy(()=>{o.unsubscribe(),s.delete(i)})}else{let i=()=>e.moduleRef.destroy(),s=e.platformInjector.get(bu);s.add(i),e.moduleRef.onDestroy(()=>{Yr(e.allPlatformModules,e.moduleRef),o.unsubscribe(),s.delete(i)})}return DE(r,t,()=>{let i=n.get($e),s=i.add(),a=n.get(vu);return a.runInitializers(),a.donePromise.then(()=>{let c=n.get(fs,ao);if(zp(c||ao),!n.get(mE,!0))return lo(e)?n.get(pn):(e.allPlatformModules.push(e.moduleRef),e.moduleRef);if(lo(e)){let l=n.get(pn);return e.rootComponent!==void 0&&l.bootstrap(e.rootComponent),l}else return vE?.(e.moduleRef,e.allPlatformModules),e.moduleRef}).finally(()=>void i.remove(s))})})}var vE;function DE(e,n,t){try{let r=t();return fn(r)?r.catch(o=>{throw n.runOutsideAngular(()=>e(o)),o}):r}catch(r){throw n.runOutsideAngular(()=>e(r)),r}}var ps=null;function EE(e=[],n){return Ee.create({name:n,providers:[{provide:kr,useValue:"platform"},{provide:bu,useValue:new Set([()=>ps=null])},...e]})}function IE(e=[]){if(ps)return ps;let n=EE(e);return ps=n,Vp(),CE(n),n}function CE(e){let n=e.get(es,null);Y(e,()=>{n?.forEach(t=>t())})}var nr=(()=>{class e{static __NG_ELEMENT_ID__=wE}return e})();function wE(e){return bE(Me(),B(),(e&16)===16)}function bE(e,n,t){if(tn(e)&&!t){let r=He(e.index,n);return new sn(r,r)}else if(e.type&175){let r=n[_e];return new sn(r,n)}return null}function nh(e){let{rootComponent:n,appProviders:t,platformProviders:r,platformRef:o}=e;L(8);try{let i=o?.injector??IE(r),s=[Gp({}),{provide:tt,useExisting:Wp},Qd,...t||[]],a=new Jr({providers:s,parent:i,debugName:"",runEnvironmentInitializers:!1});return yE({r3Injector:a.injector,platformInjector:i,rootComponent:n})}catch(i){return Promise.reject(i)}finally{L(9)}}function rh(e){let n=ot(e);if(!n)return null;let t=new cn(n);return{get selector(){return t.selector},get type(){return t.componentType},get inputs(){return t.inputs},get outputs(){return t.outputs},get ngContentSelectors(){return t.ngContentSelectors},get isStandalone(){return n.standalone},get isSignal(){return n.signals}}}var sh=null;function lt(){return sh}function _u(e){sh??=e}var fo=class{},po=(()=>{class e{historyGo(t){throw new Error("")}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:()=>p(ah),providedIn:"platform"})}return e})(),Su=new v(""),ah=(()=>{class e extends po{_location;_history;_doc=p(V);constructor(){super(),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return lt().getBaseHref(this._doc)}onPopState(t){let r=lt().getGlobalEventTarget(this._doc,"window");return r.addEventListener("popstate",t,!1),()=>r.removeEventListener("popstate",t)}onHashChange(t){let r=lt().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}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:()=>new e,providedIn:"platform"})}return e})();function hs(e,n){return e?n?e.endsWith("/")?n.startsWith("/")?e+n.slice(1):e+n:n.startsWith("/")?e+n:`${e}/${n}`:e:n}function oh(e){let n=e.search(/#|\?|$/);return e[n-1]==="/"?e.slice(0,n-1)+e.slice(n):e}function Le(e){return e&&e[0]!=="?"?`?${e}`:e}var dt=(()=>{class e{historyGo(t){throw new Error("")}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:()=>p(ms),providedIn:"root"})}return e})(),gs=new v(""),ms=(()=>{class e extends dt{_platformLocation;_baseHref;_removeListenerFns=[];constructor(t,r){super(),this._platformLocation=t,this._baseHref=r??this._platformLocation.getBaseHrefFromDOM()??p(V).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 hs(this._baseHref,t)}path(t=!1){let r=this._platformLocation.pathname+Le(this._platformLocation.search),o=this._platformLocation.hash;return o&&t?`${r}${o}`:r}pushState(t,r,o,i){let s=this.prepareExternalUrl(o+Le(i));this._platformLocation.pushState(t,r,s)}replaceState(t,r,o,i){let s=this.prepareExternalUrl(o+Le(i));this._platformLocation.replaceState(t,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){this._platformLocation.historyGo?.(t)}static \u0275fac=function(r){return new(r||e)(E(po),E(gs,8))};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),Ot=(()=>{class e{_subject=new K;_basePath;_locationStrategy;_urlChangeListeners=[];_urlChangeSubscription=null;constructor(t){this._locationStrategy=t;let r=this._locationStrategy.getBaseHref();this._basePath=SE(oh(ih(r))),this._locationStrategy.onPopState(o=>{this._subject.next({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+Le(r))}normalize(t){return e.stripTrailingSlash(_E(this._basePath,ih(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+Le(r)),o)}replaceState(t,r="",o=null){this._locationStrategy.replaceState(o,"",t,r),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+Le(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.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??void 0,complete:o??void 0})}static normalizeQueryParams=Le;static joinWithSlash=hs;static stripTrailingSlash=oh;static \u0275fac=function(r){return new(r||e)(E(dt))};static \u0275prov=y({token:e,factory:()=>TE(),providedIn:"root"})}return e})();function TE(){return new Ot(E(dt))}function _E(e,n){if(!e||!n.startsWith(e))return n;let t=n.substring(e.length);return t===""||["/",";","?","#"].includes(t[0])?t:n}function ih(e){return e.replace(/\/index.html$/,"")}function SE(e){if(new RegExp("^(https?:)?//").test(e)){let[,t]=e.split(/\/\/[^\/]+/);return t}return e}var Ru=(()=>{class e extends dt{_platformLocation;_baseHref="";_removeListenerFns=[];constructor(t,r){super(),this._platformLocation=t,r!=null&&(this._baseHref=r)}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}path(t=!1){let r=this._platformLocation.hash??"#";return r.length>0?r.substring(1):r}prepareExternalUrl(t){let r=hs(this._baseHref,t);return r.length>0?"#"+r:r}pushState(t,r,o,i){let s=this.prepareExternalUrl(o+Le(i))||this._platformLocation.pathname;this._platformLocation.pushState(t,r,s)}replaceState(t,r,o,i){let s=this.prepareExternalUrl(o+Le(i))||this._platformLocation.pathname;this._platformLocation.replaceState(t,r,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(t=0){this._platformLocation.historyGo?.(t)}static \u0275fac=function(r){return new(r||e)(E(po),E(gs,8))};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})();function ME(e,n){return new m(2100,!1)}var Mu=class{createSubscription(n,t,r){return Fe(()=>n.subscribe({next:t,error:r}))}dispose(n){Fe(()=>n.unsubscribe())}},Nu=class{createSubscription(n,t,r){return n.then(o=>t?.(o),o=>r?.(o)),{unsubscribe:()=>{t=null,r=null}}}dispose(n){n.unsubscribe()}},NE=new Nu,RE=new Mu,Au=(()=>{class e{_ref;_latestValue=null;markForCheckOnValueUpdate=!0;_subscription=null;_obj=null;_strategy=null;applicationErrorHandler=p(ye);constructor(t){this._ref=t}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(t){if(!this._obj){if(t)try{this.markForCheckOnValueUpdate=!1,this._subscribe(t)}finally{this.markForCheckOnValueUpdate=!0}return this._latestValue}return t!==this._obj?(this._dispose(),this.transform(t)):this._latestValue}_subscribe(t){this._obj=t,this._strategy=this._selectStrategy(t),this._subscription=this._strategy.createSubscription(t,r=>this._updateLatestValue(t,r),r=>this.applicationErrorHandler(r))}_selectStrategy(t){if(fn(t))return NE;if(cs(t))return RE;throw ME(e,t)}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(t,r){t===this._obj&&(this._latestValue=r,this.markForCheckOnValueUpdate&&this._ref?.markForCheck())}static \u0275fac=function(r){return new(r||e)(Kn(nr,16))};static \u0275pipe=as({name:"async",type:e,pure:!1})}return e})();var xu=(()=>{class e{transform(t){return JSON.stringify(t,null,2)}static \u0275fac=function(r){return new(r||e)};static \u0275pipe=as({name:"json",type:e,pure:!1})}return e})();var ys=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275mod=Rt({type:e});static \u0275inj=rt({})}return e})();function ho(e,n){n=encodeURIComponent(n);for(let t of e.split(";")){let r=t.indexOf("="),[o,i]=r==-1?[t,""]:[t.slice(0,r),t.slice(r+1)];if(o.trim()===n)return decodeURIComponent(i)}return null}var hn=class{};var ch="browser";var uh=(()=>{class e{static \u0275prov=y({token:e,providedIn:"root",factory:()=>new Ou(p(V),window)})}return e})(),Ou=class{document;window;offset=()=>[0,0];constructor(n,t){this.document=n,this.window=t}setOffset(n){Array.isArray(n)?this.offset=()=>n:this.offset=n}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(n,t){this.window.scrollTo(j(g({},t),{left:n[0],top:n[1]}))}scrollToAnchor(n,t){let r=OE(this.document,n);r&&(this.scrollToElement(r,t),r.focus())}setHistoryScrollRestoration(n){try{this.window.history.scrollRestoration=n}catch{console.warn(nt(2400,!1))}}scrollToElement(n,t){let r=n.getBoundingClientRect(),o=r.left+this.window.pageXOffset,i=r.top+this.window.pageYOffset,s=this.offset();this.window.scrollTo(j(g({},t),{left:o-s[0],top:i-s[1]}))}};function OE(e,n){let t=e.getElementById(n)||e.getElementsByName(n)[0];if(t)return t;if(typeof e.createTreeWalker=="function"&&e.body&&typeof e.body.attachShadow=="function"){let r=e.createTreeWalker(e.body,NodeFilter.SHOW_ELEMENT),o=r.currentNode;for(;o;){let i=o.shadowRoot;if(i){let s=i.getElementById(n)||i.querySelector(`[name="${n}"]`);if(s)return s}o=r.nextNode()}}return null}var go=class{_doc;constructor(n){this._doc=n}manager},vs=(()=>{class e extends go{constructor(t){super(t)}supports(t){return!0}addEventListener(t,r,o,i){return t.addEventListener(r,o,i),()=>this.removeEventListener(t,r,o,i)}removeEventListener(t,r,o,i){return t.removeEventListener(r,o,i)}static \u0275fac=function(r){return new(r||e)(E(V))};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})(),Es=new v(""),ju=(()=>{class e{_zone;_plugins;_eventNameToPlugin=new Map;constructor(t,r){this._zone=r,t.forEach(s=>{s.manager=this});let o=t.filter(s=>!(s instanceof vs));this._plugins=o.slice().reverse();let i=t.find(s=>s instanceof vs);i&&this._plugins.push(i)}addEventListener(t,r,o,i){return this._findPluginFor(r).addEventListener(t,r,o,i)}getZone(){return this._zone}_findPluginFor(t){let r=this._eventNameToPlugin.get(t);if(r)return r;if(r=this._plugins.find(i=>i.supports(t)),!r)throw new m(5101,!1);return this._eventNameToPlugin.set(t,r),r}static \u0275fac=function(r){return new(r||e)(E(Es),E(z))};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})(),Pu="ng-app-id";function lh(e){for(let n of e)n.remove()}function dh(e,n){let t=n.createElement("style");return t.textContent=e,t}function kE(e,n,t,r){let o=e.head?.querySelectorAll(`style[${Pu}="${n}"],link[${Pu}="${n}"]`);if(o)for(let i of o)i.removeAttribute(Pu),i instanceof HTMLLinkElement?r.set(i.href.slice(i.href.lastIndexOf("/")+1),{usage:0,elements:[i]}):i.textContent&&t.set(i.textContent,{usage:0,elements:[i]})}function Fu(e,n){let t=n.createElement("link");return t.setAttribute("rel","stylesheet"),t.setAttribute("href",e),t}var Bu=(()=>{class e{doc;appId;nonce;inline=new Map;external=new Map;hosts=new Set;constructor(t,r,o,i={}){this.doc=t,this.appId=r,this.nonce=o,kE(t,r,this.inline,this.external),this.hosts.add(t.head)}addStyles(t,r){for(let o of t)this.addUsage(o,this.inline,dh);r?.forEach(o=>this.addUsage(o,this.external,Fu))}removeStyles(t,r){for(let o of t)this.removeUsage(o,this.inline);r?.forEach(o=>this.removeUsage(o,this.external))}addUsage(t,r,o){let i=r.get(t);i?i.usage++:r.set(t,{usage:1,elements:[...this.hosts].map(s=>this.addElement(s,o(t,this.doc)))})}removeUsage(t,r){let o=r.get(t);o&&(o.usage--,o.usage<=0&&(lh(o.elements),r.delete(t)))}ngOnDestroy(){for(let[,{elements:t}]of[...this.inline,...this.external])lh(t);this.hosts.clear()}addHost(t){this.hosts.add(t);for(let[r,{elements:o}]of this.inline)o.push(this.addElement(t,dh(r,this.doc)));for(let[r,{elements:o}]of this.external)o.push(this.addElement(t,Fu(r,this.doc)))}removeHost(t){this.hosts.delete(t)}addElement(t,r){return this.nonce&&r.setAttribute("nonce",this.nonce),t.appendChild(r)}static \u0275fac=function(r){return new(r||e)(E(V),E(Xi),E(Yn,8),E(Zn))};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})(),ku={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/Math/MathML"},Uu=/%COMP%/g;var ph="%COMP%",FE=`_nghost-${ph}`,LE=`_ngcontent-${ph}`,jE=!0,BE=new v("",{providedIn:"root",factory:()=>jE});function UE(e){return LE.replace(Uu,e)}function VE(e){return FE.replace(Uu,e)}function hh(e,n){return n.map(t=>t.replace(Uu,e))}var Vu=(()=>{class e{eventManager;sharedStylesHost;appId;removeStylesOnCompDestroy;doc;platformId;ngZone;nonce;tracingService;rendererByCompId=new Map;defaultRenderer;platformIsServer;constructor(t,r,o,i,s,a,c,u=null,l=null){this.eventManager=t,this.sharedStylesHost=r,this.appId=o,this.removeStylesOnCompDestroy=i,this.doc=s,this.platformId=a,this.ngZone=c,this.nonce=u,this.tracingService=l,this.platformIsServer=!1,this.defaultRenderer=new mo(t,s,c,this.platformIsServer,this.tracingService)}createRenderer(t,r){if(!t||!r)return this.defaultRenderer;let o=this.getOrCreateRenderer(t,r);return o instanceof Ds?o.applyToHost(t):o instanceof yo&&o.applyStyles(),o}getOrCreateRenderer(t,r){let o=this.rendererByCompId,i=o.get(r.id);if(!i){let s=this.doc,a=this.ngZone,c=this.eventManager,u=this.sharedStylesHost,l=this.removeStylesOnCompDestroy,d=this.platformIsServer,h=this.tracingService;switch(r.encapsulation){case ct.Emulated:i=new Ds(c,u,r,this.appId,l,s,a,d,h);break;case ct.ShadowDom:return new Lu(c,u,t,r,s,a,this.nonce,d,h);default:i=new yo(c,u,r,l,s,a,d,h);break}o.set(r.id,i)}return i}ngOnDestroy(){this.rendererByCompId.clear()}componentReplaced(t){this.rendererByCompId.delete(t)}static \u0275fac=function(r){return new(r||e)(E(ju),E(Bu),E(Xi),E(BE),E(V),E(Zn),E(z),E(Yn),E(ln,8))};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})(),mo=class{eventManager;doc;ngZone;platformIsServer;tracingService;data=Object.create(null);throwOnSyntheticProps=!0;constructor(n,t,r,o,i){this.eventManager=n,this.doc=t,this.ngZone=r,this.platformIsServer=o,this.tracingService=i}destroy(){}destroyNode=null;createElement(n,t){return t?this.doc.createElementNS(ku[t]||t,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,t){(fh(n)?n.content:n).appendChild(t)}insertBefore(n,t,r){n&&(fh(n)?n.content:n).insertBefore(t,r)}removeChild(n,t){t.remove()}selectRootElement(n,t){let r=typeof n=="string"?this.doc.querySelector(n):n;if(!r)throw new m(-5104,!1);return t||(r.textContent=""),r}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,t,r,o){if(o){t=o+":"+t;let i=ku[o];i?n.setAttributeNS(i,t,r):n.setAttribute(t,r)}else n.setAttribute(t,r)}removeAttribute(n,t,r){if(r){let o=ku[r];o?n.removeAttributeNS(o,t):n.removeAttribute(`${r}:${t}`)}else n.removeAttribute(t)}addClass(n,t){n.classList.add(t)}removeClass(n,t){n.classList.remove(t)}setStyle(n,t,r,o){o&(Nt.DashCase|Nt.Important)?n.style.setProperty(t,r,o&Nt.Important?"important":""):n.style[t]=r}removeStyle(n,t,r){r&Nt.DashCase?n.style.removeProperty(t):n.style[t]=""}setProperty(n,t,r){n!=null&&(n[t]=r)}setValue(n,t){n.nodeValue=t}listen(n,t,r,o){if(typeof n=="string"&&(n=lt().getGlobalEventTarget(this.doc,n),!n))throw new m(5102,!1);let i=this.decoratePreventDefault(r);return this.tracingService?.wrapEventListener&&(i=this.tracingService.wrapEventListener(n,t,i)),this.eventManager.addEventListener(n,t,i,o)}decoratePreventDefault(n){return t=>{if(t==="__ngUnwrap__")return n;n(t)===!1&&t.preventDefault()}}};function fh(e){return e.tagName==="TEMPLATE"&&e.content!==void 0}var Lu=class extends mo{sharedStylesHost;hostEl;shadowRoot;constructor(n,t,r,o,i,s,a,c,u){super(n,i,s,c,u),this.sharedStylesHost=t,this.hostEl=r,this.shadowRoot=r.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);let l=o.styles;l=hh(o.id,l);for(let h of l){let f=document.createElement("style");a&&f.setAttribute("nonce",a),f.textContent=h,this.shadowRoot.appendChild(f)}let d=o.getExternalStyles?.();if(d)for(let h of d){let f=Fu(h,i);a&&f.setAttribute("nonce",a),this.shadowRoot.appendChild(f)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,t){return super.appendChild(this.nodeOrShadowRoot(n),t)}insertBefore(n,t,r){return super.insertBefore(this.nodeOrShadowRoot(n),t,r)}removeChild(n,t){return super.removeChild(null,t)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}},yo=class extends mo{sharedStylesHost;removeStylesOnCompDestroy;styles;styleUrls;constructor(n,t,r,o,i,s,a,c,u){super(n,i,s,a,c),this.sharedStylesHost=t,this.removeStylesOnCompDestroy=o;let l=r.styles;this.styles=u?hh(u,l):l,this.styleUrls=r.getExternalStyles?.(u)}applyStyles(){this.sharedStylesHost.addStyles(this.styles,this.styleUrls)}destroy(){this.removeStylesOnCompDestroy&&Wn.size===0&&this.sharedStylesHost.removeStyles(this.styles,this.styleUrls)}},Ds=class extends yo{contentAttr;hostAttr;constructor(n,t,r,o,i,s,a,c,u){let l=o+"-"+r.id;super(n,t,r,i,s,a,c,u,l),this.contentAttr=UE(l),this.hostAttr=VE(l)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,t){let r=super.createElement(n,t);return super.setAttribute(r,this.contentAttr,""),r}};var Is=class e extends fo{supportsDOMEvents=!0;static makeCurrent(){_u(new e)}onAndCancel(n,t,r,o){return n.addEventListener(t,r,o),()=>{n.removeEventListener(t,r,o)}}dispatchEvent(n,t){n.dispatchEvent(t)}remove(n){n.remove()}createElement(n,t){return t=t||this.getDefaultDocument(),t.createElement(n)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(n){return n.nodeType===Node.ELEMENT_NODE}isShadowRoot(n){return n instanceof DocumentFragment}getGlobalEventTarget(n,t){return t==="window"?window:t==="document"?n:t==="body"?n.body:null}getBaseHref(n){let t=HE();return t==null?null:$E(t)}resetBaseElement(){vo=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return ho(document.cookie,n)}},vo=null;function HE(){return vo=vo||document.head.querySelector("base"),vo?vo.getAttribute("href"):null}function $E(e){return new URL(e,document.baseURI).pathname}var zE=(()=>{class e{build(){return new XMLHttpRequest}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})(),gh=["alt","control","meta","shift"],GE={"\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"},qE={alt:e=>e.altKey,control:e=>e.ctrlKey,meta:e=>e.metaKey,shift:e=>e.shiftKey},mh=(()=>{class e extends go{constructor(t){super(t)}supports(t){return e.parseEventName(t)!=null}addEventListener(t,r,o,i){let s=e.parseEventName(r),a=e.eventCallback(s.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>lt().onAndCancel(t,s.domEventName,a,i))}static parseEventName(t){let r=t.toLowerCase().split("."),o=r.shift();if(r.length===0||!(o==="keydown"||o==="keyup"))return null;let i=e._normalizeKey(r.pop()),s="",a=r.indexOf("code");if(a>-1&&(r.splice(a,1),s="code."),gh.forEach(u=>{let l=r.indexOf(u);l>-1&&(r.splice(l,1),s+=u+".")}),s+=i,r.length!=0||i.length===0)return null;let c={};return c.domEventName=o,c.fullKey=s,c}static matchEventFullKeyCode(t,r){let o=GE[t.key]||t.key,i="";return r.indexOf("code.")>-1&&(o=t.code,i="code."),o==null||!o?!1:(o=o.toLowerCase(),o===" "?o="space":o==="."&&(o="dot"),gh.forEach(s=>{if(s!==o){let a=qE[s];a(t)&&(i+=s+".")}}),i+=o,i===r)}static eventCallback(t,r,o){return i=>{e.matchEventFullKeyCode(i,t)&&o.runGuarded(()=>r(i))}}static _normalizeKey(t){return t==="esc"?"escape":t}static \u0275fac=function(r){return new(r||e)(E(V))};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})();function Hu(e,n,t){let r=g({rootComponent:e,platformRef:t?.platformRef},WE(n));return nh(r)}function WE(e){return{appProviders:[...JE,...e?.providers??[]],platformProviders:KE}}function ZE(){Is.makeCurrent()}function YE(){return new xe}function QE(){return Zc(document),document}var KE=[{provide:Zn,useValue:ch},{provide:es,useValue:ZE,multi:!0},{provide:V,useFactory:QE}];var JE=[{provide:kr,useValue:"root"},{provide:xe,useFactory:YE},{provide:Es,useClass:vs,multi:!0,deps:[V]},{provide:Es,useClass:mh,multi:!0,deps:[V]},Vu,Bu,ju,{provide:an,useExisting:Vu},{provide:hn,useClass:zE},[]];var ir=class{},Do=class{},Pt=class e{headers;normalizedNames=new Map;lazyInit;lazyUpdate=null;constructor(n){n?typeof n=="string"?this.lazyInit=()=>{this.headers=new Map,n.split(` -`).forEach(t=>{let r=t.indexOf(":");if(r>0){let o=t.slice(0,r),i=t.slice(r+1).trim();this.addHeaderEntry(o,i)}})}:typeof Headers<"u"&&n instanceof Headers?(this.headers=new Map,n.forEach((t,r)=>{this.addHeaderEntry(r,t)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(n).forEach(([t,r])=>{this.setHeaderEntries(t,r)})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();let t=this.headers.get(n.toLowerCase());return t&&t.length>0?t[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,t){return this.clone({name:n,value:t,op:"a"})}set(n,t){return this.clone({name:n,value:t,op:"s"})}delete(n,t){return this.clone({name:n,value:t,op:"d"})}maybeSetNormalizedName(n,t){this.normalizedNames.has(t)||this.normalizedNames.set(t,n)}init(){this.lazyInit&&(this.lazyInit instanceof e?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(n=>this.applyUpdate(n)),this.lazyUpdate=null))}copyFrom(n){n.init(),Array.from(n.headers.keys()).forEach(t=>{this.headers.set(t,n.headers.get(t)),this.normalizedNames.set(t,n.normalizedNames.get(t))})}clone(n){let t=new e;return t.lazyInit=this.lazyInit&&this.lazyInit instanceof e?this.lazyInit:this,t.lazyUpdate=(this.lazyUpdate||[]).concat([n]),t}applyUpdate(n){let t=n.name.toLowerCase();switch(n.op){case"a":case"s":let r=n.value;if(typeof r=="string"&&(r=[r]),r.length===0)return;this.maybeSetNormalizedName(n.name,t);let o=(n.op==="a"?this.headers.get(t):void 0)||[];o.push(...r),this.headers.set(t,o);break;case"d":let i=n.value;if(!i)this.headers.delete(t),this.normalizedNames.delete(t);else{let s=this.headers.get(t);if(!s)return;s=s.filter(a=>i.indexOf(a)===-1),s.length===0?(this.headers.delete(t),this.normalizedNames.delete(t)):this.headers.set(t,s)}break}}addHeaderEntry(n,t){let r=n.toLowerCase();this.maybeSetNormalizedName(n,r),this.headers.has(r)?this.headers.get(r).push(t):this.headers.set(r,[t])}setHeaderEntries(n,t){let r=(Array.isArray(t)?t:[t]).map(i=>i.toString()),o=n.toLowerCase();this.headers.set(o,r),this.maybeSetNormalizedName(n,o)}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(t=>n(this.normalizedNames.get(t),this.headers.get(t)))}};var ws=class{encodeKey(n){return yh(n)}encodeValue(n){return yh(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}};function XE(e,n){let t=new Map;return e.length>0&&e.replace(/^\?/,"").split("&").forEach(o=>{let i=o.indexOf("="),[s,a]=i==-1?[n.decodeKey(o),""]:[n.decodeKey(o.slice(0,i)),n.decodeValue(o.slice(i+1))],c=t.get(s)||[];c.push(a),t.set(s,c)}),t}var eI=/%(\d[a-f0-9])/gi,tI={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function yh(e){return encodeURIComponent(e).replace(eI,(n,t)=>tI[t]??n)}function Cs(e){return`${e}`}var ft=class e{map;encoder;updates=null;cloneFrom=null;constructor(n={}){if(this.encoder=n.encoder||new ws,n.fromString){if(n.fromObject)throw new m(2805,!1);this.map=XE(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(t=>{let r=n.fromObject[t],o=Array.isArray(r)?r.map(Cs):[Cs(r)];this.map.set(t,o)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();let t=this.map.get(n);return t?t[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,t){return this.clone({param:n,value:t,op:"a"})}appendAll(n){let t=[];return Object.keys(n).forEach(r=>{let o=n[r];Array.isArray(o)?o.forEach(i=>{t.push({param:r,value:i,op:"a"})}):t.push({param:r,value:o,op:"a"})}),this.clone(t)}set(n,t){return this.clone({param:n,value:t,op:"s"})}delete(n,t){return this.clone({param:n,value:t,op:"d"})}toString(){return this.init(),this.keys().map(n=>{let t=this.encoder.encodeKey(n);return this.map.get(n).map(r=>t+"="+this.encoder.encodeValue(r)).join("&")}).filter(n=>n!=="").join("&")}clone(n){let t=new e({encoder:this.encoder});return t.cloneFrom=this.cloneFrom||this,t.updates=(this.updates||[]).concat(n),t}init(){this.map===null&&(this.map=new Map),this.cloneFrom!==null&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(n=>this.map.set(n,this.cloneFrom.map.get(n))),this.updates.forEach(n=>{switch(n.op){case"a":case"s":let t=(n.op==="a"?this.map.get(n.param):void 0)||[];t.push(Cs(n.value)),this.map.set(n.param,t);break;case"d":if(n.value!==void 0){let r=this.map.get(n.param)||[],o=r.indexOf(Cs(n.value));o!==-1&&r.splice(o,1),r.length>0?this.map.set(n.param,r):this.map.delete(n.param)}else{this.map.delete(n.param);break}}}),this.cloneFrom=this.updates=null)}};var bs=class{map=new Map;set(n,t){return this.map.set(n,t),this}get(n){return this.map.has(n)||this.map.set(n,n.defaultValue()),this.map.get(n)}delete(n){return this.map.delete(n),this}has(n){return this.map.has(n)}keys(){return this.map.keys()}};function nI(e){switch(e){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function vh(e){return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer}function Dh(e){return typeof Blob<"u"&&e instanceof Blob}function Eh(e){return typeof FormData<"u"&&e instanceof FormData}function rI(e){return typeof URLSearchParams<"u"&&e instanceof URLSearchParams}var Ih="Content-Type",Ch="Accept",wh="X-Request-URL",bh="text/plain",Th="application/json",oI=`${Th}, ${bh}, */*`,rr=class e{url;body=null;headers;context;reportProgress=!1;withCredentials=!1;credentials;keepalive=!1;cache;priority;mode;redirect;referrer;integrity;responseType="json";method;params;urlWithParams;transferCache;timeout;constructor(n,t,r,o){this.url=t,this.method=n.toUpperCase();let i;if(nI(this.method)||o?(this.body=r!==void 0?r:null,i=o):i=r,i){if(this.reportProgress=!!i.reportProgress,this.withCredentials=!!i.withCredentials,this.keepalive=!!i.keepalive,i.responseType&&(this.responseType=i.responseType),i.headers&&(this.headers=i.headers),i.context&&(this.context=i.context),i.params&&(this.params=i.params),i.priority&&(this.priority=i.priority),i.cache&&(this.cache=i.cache),i.credentials&&(this.credentials=i.credentials),typeof i.timeout=="number"){if(i.timeout<1||!Number.isInteger(i.timeout))throw new m(2822,"");this.timeout=i.timeout}i.mode&&(this.mode=i.mode),i.redirect&&(this.redirect=i.redirect),i.integrity&&(this.integrity=i.integrity),i.referrer&&(this.referrer=i.referrer),this.transferCache=i.transferCache}if(this.headers??=new Pt,this.context??=new bs,!this.params)this.params=new ft,this.urlWithParams=t;else{let s=this.params.toString();if(s.length===0)this.urlWithParams=t;else{let a=t.indexOf("?"),c=a===-1?"?":ajt.set(Bt,n.setHeaders[Bt]),fe)),n.setParams&&(Ne=Object.keys(n.setParams).reduce((jt,Bt)=>jt.set(Bt,n.setParams[Bt]),Ne)),new e(t,r,T,{params:Ne,headers:fe,context:ne,reportProgress:C,responseType:o,withCredentials:I,transferCache:f,keepalive:i,cache:a,priority:s,timeout:D,mode:c,redirect:u,credentials:l,referrer:d,integrity:h})}},gn=(function(e){return e[e.Sent=0]="Sent",e[e.UploadProgress=1]="UploadProgress",e[e.ResponseHeader=2]="ResponseHeader",e[e.DownloadProgress=3]="DownloadProgress",e[e.Response=4]="Response",e[e.User=5]="User",e})(gn||{}),sr=class{headers;status;statusText;url;ok;type;redirected;constructor(n,t=200,r="OK"){this.headers=n.headers||new Pt,this.status=n.status!==void 0?n.status:t,this.statusText=n.statusText||r,this.url=n.url||null,this.redirected=n.redirected,this.ok=this.status>=200&&this.status<300}},Ts=class e extends sr{constructor(n={}){super(n)}type=gn.ResponseHeader;clone(n={}){return new e({headers:n.headers||this.headers,status:n.status!==void 0?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0})}},Eo=class e extends sr{body;constructor(n={}){super(n),this.body=n.body!==void 0?n.body:null}type=gn.Response;clone(n={}){return new e({body:n.body!==void 0?n.body:this.body,headers:n.headers||this.headers,status:n.status!==void 0?n.status:this.status,statusText:n.statusText||this.statusText,url:n.url||this.url||void 0,redirected:n.redirected??this.redirected})}},or=class extends sr{name="HttpErrorResponse";message;error;ok=!1;constructor(n){super(n,0,"Unknown Error"),this.status>=200&&this.status<300?this.message=`Http failure during parsing for ${n.url||"(unknown url)"}`:this.message=`Http failure response for ${n.url||"(unknown url)"}: ${n.status} ${n.statusText}`,this.error=n.error||null}},iI=200,sI=204;function $u(e,n){return{body:n,headers:e.headers,context:e.context,observe:e.observe,params:e.params,reportProgress:e.reportProgress,responseType:e.responseType,withCredentials:e.withCredentials,credentials:e.credentials,transferCache:e.transferCache,timeout:e.timeout,keepalive:e.keepalive,priority:e.priority,cache:e.cache,mode:e.mode,redirect:e.redirect,integrity:e.integrity,referrer:e.referrer}}var Ss=(()=>{class e{handler;constructor(t){this.handler=t}request(t,r,o={}){let i;if(t instanceof rr)i=t;else{let c;o.headers instanceof Pt?c=o.headers:c=new Pt(o.headers);let u;o.params&&(o.params instanceof ft?u=o.params:u=new ft({fromObject:o.params})),i=new rr(t,r,o.body!==void 0?o.body:null,{headers:c,context:o.context,params:u,reportProgress:o.reportProgress,responseType:o.responseType||"json",withCredentials:o.withCredentials,transferCache:o.transferCache,keepalive:o.keepalive,priority:o.priority,cache:o.cache,mode:o.mode,redirect:o.redirect,credentials:o.credentials,referrer:o.referrer,integrity:o.integrity,timeout:o.timeout})}let s=w(i).pipe(Ve(c=>this.handler.handle(c)));if(t instanceof rr||o.observe==="events")return s;let a=s.pipe(oe(c=>c instanceof Eo));switch(o.observe||"body"){case"body":switch(i.responseType){case"arraybuffer":return a.pipe(R(c=>{if(c.body!==null&&!(c.body instanceof ArrayBuffer))throw new m(2806,!1);return c.body}));case"blob":return a.pipe(R(c=>{if(c.body!==null&&!(c.body instanceof Blob))throw new m(2807,!1);return c.body}));case"text":return a.pipe(R(c=>{if(c.body!==null&&typeof c.body!="string")throw new m(2808,!1);return c.body}));case"json":default:return a.pipe(R(c=>c.body))}case"response":return a;default:throw new m(2809,!1)}}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 ft().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,$u(o,r))}post(t,r,o={}){return this.request("POST",t,$u(o,r))}put(t,r,o={}){return this.request("PUT",t,$u(o,r))}static \u0275fac=function(r){return new(r||e)(E(ir))};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})();var aI=new v("");function cI(e,n){return n(e)}function uI(e,n,t){return(r,o)=>Y(t,()=>n(r,i=>e(i,o)))}var Gu=new v(""),_h=new v(""),Sh=new v("",{providedIn:"root",factory:()=>!0});var _s=(()=>{class e extends ir{backend;injector;chain=null;pendingTasks=p(xi);contributeToStability=p(Sh);constructor(t,r){super(),this.backend=t,this.injector=r}handle(t){if(this.chain===null){let r=Array.from(new Set([...this.injector.get(Gu),...this.injector.get(_h,[])]));this.chain=r.reduceRight((o,i)=>uI(o,i,this.injector),cI)}if(this.contributeToStability){let r=this.pendingTasks.add();return this.chain(t,o=>this.backend.handle(o)).pipe($t(r))}else return this.chain(t,r=>this.backend.handle(r))}static \u0275fac=function(r){return new(r||e)(E(Do),E($))};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})();var lI=/^\)\]\}',?\n/,dI=RegExp(`^${wh}:`,"m");function fI(e){return"responseURL"in e&&e.responseURL?e.responseURL:dI.test(e.getAllResponseHeaders())?e.getResponseHeader(wh):null}var zu=(()=>{class e{xhrFactory;constructor(t){this.xhrFactory=t}handle(t){if(t.method==="JSONP")throw new m(-2800,!1);let r=this.xhrFactory;return w(null).pipe(X(()=>new A(i=>{let s=r.build();if(s.open(t.method,t.urlWithParams),t.withCredentials&&(s.withCredentials=!0),t.headers.forEach((I,C)=>s.setRequestHeader(I,C.join(","))),t.headers.has(Ch)||s.setRequestHeader(Ch,oI),!t.headers.has(Ih)){let I=t.detectContentTypeHeader();I!==null&&s.setRequestHeader(Ih,I)}if(t.timeout&&(s.timeout=t.timeout),t.responseType){let I=t.responseType.toLowerCase();s.responseType=I!=="json"?I:"text"}let a=t.serializeBody(),c=null,u=()=>{if(c!==null)return c;let I=s.statusText||"OK",C=new Pt(s.getAllResponseHeaders()),fe=fI(s)||t.url;return c=new Ts({headers:C,status:s.status,statusText:I,url:fe}),c},l=()=>{let{headers:I,status:C,statusText:fe,url:Ne}=u(),ne=null;C!==sI&&(ne=typeof s.response>"u"?s.responseText:s.response),C===0&&(C=ne?iI:0);let jt=C>=200&&C<300;if(t.responseType==="json"&&typeof ne=="string"){let Bt=ne;ne=ne.replace(lI,"");try{ne=ne!==""?JSON.parse(ne):null}catch(Og){ne=Bt,jt&&(jt=!1,ne={error:Og,text:ne})}}jt?(i.next(new Eo({body:ne,headers:I,status:C,statusText:fe,url:Ne||void 0})),i.complete()):i.error(new or({error:ne,headers:I,status:C,statusText:fe,url:Ne||void 0}))},d=I=>{let{url:C}=u(),fe=new or({error:I,status:s.status||0,statusText:s.statusText||"Unknown Error",url:C||void 0});i.error(fe)},h=d;t.timeout&&(h=I=>{let{url:C}=u(),fe=new or({error:new DOMException("Request timed out","TimeoutError"),status:s.status||0,statusText:s.statusText||"Request timeout",url:C||void 0});i.error(fe)});let f=!1,D=I=>{f||(i.next(u()),f=!0);let C={type:gn.DownloadProgress,loaded:I.loaded};I.lengthComputable&&(C.total=I.total),t.responseType==="text"&&s.responseText&&(C.partialText=s.responseText),i.next(C)},T=I=>{let C={type:gn.UploadProgress,loaded:I.loaded};I.lengthComputable&&(C.total=I.total),i.next(C)};return s.addEventListener("load",l),s.addEventListener("error",d),s.addEventListener("timeout",h),s.addEventListener("abort",d),t.reportProgress&&(s.addEventListener("progress",D),a!==null&&s.upload&&s.upload.addEventListener("progress",T)),s.send(a),i.next({type:gn.Sent}),()=>{s.removeEventListener("error",d),s.removeEventListener("abort",d),s.removeEventListener("load",l),s.removeEventListener("timeout",h),t.reportProgress&&(s.removeEventListener("progress",D),a!==null&&s.upload&&s.upload.removeEventListener("progress",T)),s.readyState!==s.DONE&&s.abort()}})))}static \u0275fac=function(r){return new(r||e)(E(hn))};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})(),Mh=new v(""),pI="XSRF-TOKEN",hI=new v("",{providedIn:"root",factory:()=>pI}),gI="X-XSRF-TOKEN",mI=new v("",{providedIn:"root",factory:()=>gI}),Io=class{},yI=(()=>{class e{doc;cookieName;lastCookieString="";lastToken=null;parseCount=0;constructor(t,r){this.doc=t,this.cookieName=r}getToken(){let t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=ho(t,this.cookieName),this.lastCookieString=t),this.lastToken}static \u0275fac=function(r){return new(r||e)(E(V),E(hI))};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})();function vI(e,n){let t=e.url.toLowerCase();if(!p(Mh)||e.method==="GET"||e.method==="HEAD"||t.startsWith("http://")||t.startsWith("https://"))return n(e);let r=p(Io).getToken(),o=p(mI);return r!=null&&!e.headers.has(o)&&(e=e.clone({headers:e.headers.set(o,r)})),n(e)}var qu=(function(e){return e[e.Interceptors=0]="Interceptors",e[e.LegacyInterceptors=1]="LegacyInterceptors",e[e.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",e[e.NoXsrfProtection=3]="NoXsrfProtection",e[e.JsonpSupport=4]="JsonpSupport",e[e.RequestsMadeViaParent=5]="RequestsMadeViaParent",e[e.Fetch=6]="Fetch",e})(qu||{});function DI(e,n){return{\u0275kind:e,\u0275providers:n}}function Wu(...e){let n=[Ss,zu,_s,{provide:ir,useExisting:_s},{provide:Do,useFactory:()=>p(aI,{optional:!0})??p(zu)},{provide:Gu,useValue:vI,multi:!0},{provide:Mh,useValue:!0},{provide:Io,useClass:yI}];for(let t of e)n.push(...t.\u0275providers);return Yt(n)}function Zu(e){return DI(qu.Interceptors,e.map(n=>({provide:Gu,useValue:n,multi:!0})))}var Nh=(()=>{class e{_doc;constructor(t){this._doc=t}getTitle(){return this._doc.title}setTitle(t){this._doc.title=t||""}static \u0275fac=function(r){return new(r||e)(E(V))};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();var Rh=e=>{let n=`${e}=`,r=decodeURIComponent(document.cookie).split(";");for(let o=0;oe.url.startsWith(r))&&(e=e.clone({headers:e.headers.set("X-XSRF-TOKEN",Rh("XSRF-RequestToken"))})),n(e)}function II(){return`${CI()}/api/`}function CI(){let e=window.location.host;return`${window.location.protocol}//${e}`}var b="primary",Po=Symbol("RouteTitle"),Xu=class{params;constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){let t=this.params[n];return Array.isArray(t)?t[0]:t}return null}getAll(n){if(this.has(n)){let t=this.params[n];return Array.isArray(t)?t:[t]}return[]}get keys(){return Object.keys(this.params)}};function vn(e){return new Xu(e)}function Bh(e,n,t){let r=t.path.split("/");if(r.length>e.length||t.pathMatch==="full"&&(n.hasChildren()||r.lengthr[i]===o)}else return e===n}function Vh(e){return e.length>0?e[e.length-1]:null}function ht(e){return Ta(e)?e:fn(e)?U(Promise.resolve(e)):w(e)}var bI={exact:$h,subset:zh},Hh={exact:TI,subset:_I,ignored:()=>!0};function xh(e,n,t){return bI[t.paths](e.root,n.root,t.matrixParams)&&Hh[t.queryParams](e.queryParams,n.queryParams)&&!(t.fragment==="exact"&&e.fragment!==n.fragment)}function TI(e,n){return qe(e,n)}function $h(e,n,t){if(!mn(e.segments,n.segments)||!Rs(e.segments,n.segments,t)||e.numberOfChildren!==n.numberOfChildren)return!1;for(let r in n.children)if(!e.children[r]||!$h(e.children[r],n.children[r],t))return!1;return!0}function _I(e,n){return Object.keys(n).length<=Object.keys(e).length&&Object.keys(n).every(t=>Uh(e[t],n[t]))}function zh(e,n,t){return Gh(e,n,n.segments,t)}function Gh(e,n,t,r){if(e.segments.length>t.length){let o=e.segments.slice(0,t.length);return!(!mn(o,t)||n.hasChildren()||!Rs(o,t,r))}else if(e.segments.length===t.length){if(!mn(e.segments,t)||!Rs(e.segments,t,r))return!1;for(let o in n.children)if(!e.children[o]||!zh(e.children[o],n.children[o],r))return!1;return!0}else{let o=t.slice(0,e.segments.length),i=t.slice(e.segments.length);return!mn(e.segments,o)||!Rs(e.segments,o,r)||!e.children[b]?!1:Gh(e.children[b],n,i,r)}}function Rs(e,n,t){return n.every((r,o)=>Hh[t](e[o].parameters,r.parameters))}var Ze=class{root;queryParams;fragment;_queryParamMap;constructor(n=new k([],{}),t={},r=null){this.root=n,this.queryParams=t,this.fragment=r}get queryParamMap(){return this._queryParamMap??=vn(this.queryParams),this._queryParamMap}toString(){return NI.serialize(this)}},k=class{segments;children;parent=null;constructor(n,t){this.segments=n,this.children=t,Object.values(t).forEach(r=>r.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return As(this)}},kt=class{path;parameters;_parameterMap;constructor(n,t){this.path=n,this.parameters=t}get parameterMap(){return this._parameterMap??=vn(this.parameters),this._parameterMap}toString(){return Wh(this)}};function SI(e,n){return mn(e,n)&&e.every((t,r)=>qe(t.parameters,n[r].parameters))}function mn(e,n){return e.length!==n.length?!1:e.every((t,r)=>t.path===n[r].path)}function MI(e,n){let t=[];return Object.entries(e.children).forEach(([r,o])=>{r===b&&(t=t.concat(n(o,r)))}),Object.entries(e.children).forEach(([r,o])=>{r!==b&&(t=t.concat(n(o,r)))}),t}var Dn=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:()=>new Ft,providedIn:"root"})}return e})(),Ft=class{parse(n){let t=new nl(n);return new Ze(t.parseRootSegment(),t.parseQueryParams(),t.parseFragment())}serialize(n){let t=`/${Co(n.root,!0)}`,r=xI(n.queryParams),o=typeof n.fragment=="string"?`#${RI(n.fragment)}`:"";return`${t}${r}${o}`}},NI=new Ft;function As(e){return e.segments.map(n=>Wh(n)).join("/")}function Co(e,n){if(!e.hasChildren())return As(e);if(n){let t=e.children[b]?Co(e.children[b],!1):"",r=[];return Object.entries(e.children).forEach(([o,i])=>{o!==b&&r.push(`${o}:${Co(i,!1)}`)}),r.length>0?`${t}(${r.join("//")})`:t}else{let t=MI(e,(r,o)=>o===b?[Co(e.children[b],!1)]:[`${o}:${Co(r,!1)}`]);return Object.keys(e.children).length===1&&e.children[b]!=null?`${As(e)}/${t[0]}`:`${As(e)}/(${t.join("//")})`}}function qh(e){return encodeURIComponent(e).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Ms(e){return qh(e).replace(/%3B/gi,";")}function RI(e){return encodeURI(e)}function tl(e){return qh(e).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function xs(e){return decodeURIComponent(e)}function Oh(e){return xs(e.replace(/\+/g,"%20"))}function Wh(e){return`${tl(e.path)}${AI(e.parameters)}`}function AI(e){return Object.entries(e).map(([n,t])=>`;${tl(n)}=${tl(t)}`).join("")}function xI(e){let n=Object.entries(e).map(([t,r])=>Array.isArray(r)?r.map(o=>`${Ms(t)}=${Ms(o)}`).join("&"):`${Ms(t)}=${Ms(r)}`).filter(t=>t);return n.length?`?${n.join("&")}`:""}var OI=/^[^\/()?;#]+/;function Yu(e){let n=e.match(OI);return n?n[0]:""}var PI=/^[^\/()?;=#]+/;function kI(e){let n=e.match(PI);return n?n[0]:""}var FI=/^[^=?&#]+/;function LI(e){let n=e.match(FI);return n?n[0]:""}var jI=/^[^&#]+/;function BI(e){let n=e.match(jI);return n?n[0]:""}var nl=class{url;remaining;constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new k([],{}):new k([],this.parseChildren())}parseQueryParams(){let n={};if(this.consumeOptional("?"))do this.parseQueryParam(n);while(this.consumeOptional("&"));return n}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(this.remaining==="")return{};this.consumeOptional("/");let n=[];for(this.peekStartsWith("(")||n.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),n.push(this.parseSegment());let t={};this.peekStartsWith("/(")&&(this.capture("/"),t=this.parseParens(!0));let r={};return this.peekStartsWith("(")&&(r=this.parseParens(!1)),(n.length>0||Object.keys(t).length>0)&&(r[b]=new k(n,t)),r}parseSegment(){let n=Yu(this.remaining);if(n===""&&this.peekStartsWith(";"))throw new m(4009,!1);return this.capture(n),new kt(xs(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){let t=kI(this.remaining);if(!t)return;this.capture(t);let r="";if(this.consumeOptional("=")){let o=Yu(this.remaining);o&&(r=o,this.capture(r))}n[xs(t)]=xs(r)}parseQueryParam(n){let t=LI(this.remaining);if(!t)return;this.capture(t);let r="";if(this.consumeOptional("=")){let s=BI(this.remaining);s&&(r=s,this.capture(r))}let o=Oh(t),i=Oh(r);if(n.hasOwnProperty(o)){let s=n[o];Array.isArray(s)||(s=[s],n[o]=s),s.push(i)}else n[o]=i}parseParens(n){let t={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let r=Yu(this.remaining),o=this.remaining[r.length];if(o!=="/"&&o!==")"&&o!==";")throw new m(4010,!1);let i;r.indexOf(":")>-1?(i=r.slice(0,r.indexOf(":")),this.capture(i),this.capture(":")):n&&(i=b);let s=this.parseChildren();t[i??b]=Object.keys(s).length===1&&s[b]?s[b]:new k([],s),this.consumeOptional("//")}return t}peekStartsWith(n){return this.remaining.startsWith(n)}consumeOptional(n){return this.peekStartsWith(n)?(this.remaining=this.remaining.substring(n.length),!0):!1}capture(n){if(!this.consumeOptional(n))throw new m(4011,!1)}};function Zh(e){return e.segments.length>0?new k([],{[b]:e}):e}function Yh(e){let n={};for(let[r,o]of Object.entries(e.children)){let i=Yh(o);if(r===b&&i.segments.length===0&&i.hasChildren())for(let[s,a]of Object.entries(i.children))n[s]=a;else(i.segments.length>0||i.hasChildren())&&(n[r]=i)}let t=new k(e.segments,n);return UI(t)}function UI(e){if(e.numberOfChildren===1&&e.children[b]){let n=e.children[b];return new k(e.segments.concat(n.segments),n.children)}return e}function fr(e){return e instanceof Ze}function Qh(e,n,t=null,r=null){let o=Kh(e);return Jh(o,n,t,r)}function Kh(e){let n;function t(i){let s={};for(let c of i.children){let u=t(c);s[c.outlet]=u}let a=new k(i.url,s);return i===e&&(n=a),a}let r=t(e.root),o=Zh(r);return n??o}function Jh(e,n,t,r){let o=e;for(;o.parent;)o=o.parent;if(n.length===0)return Qu(o,o,o,t,r);let i=VI(n);if(i.toRoot())return Qu(o,o,new k([],{}),t,r);let s=HI(i,o,e),a=s.processChildren?bo(s.segmentGroup,s.index,i.commands):eg(s.segmentGroup,s.index,i.commands);return Qu(o,s.segmentGroup,a,t,r)}function Os(e){return typeof e=="object"&&e!=null&&!e.outlets&&!e.segmentPath}function _o(e){return typeof e=="object"&&e!=null&&e.outlets}function Qu(e,n,t,r,o){let i={};r&&Object.entries(r).forEach(([c,u])=>{i[c]=Array.isArray(u)?u.map(l=>`${l}`):`${u}`});let s;e===n?s=t:s=Xh(e,n,t);let a=Zh(Yh(s));return new Ze(a,i,o)}function Xh(e,n,t){let r={};return Object.entries(e.children).forEach(([o,i])=>{i===n?r[o]=t:r[o]=Xh(i,n,t)}),new k(e.segments,r)}var Ps=class{isAbsolute;numberOfDoubleDots;commands;constructor(n,t,r){if(this.isAbsolute=n,this.numberOfDoubleDots=t,this.commands=r,n&&r.length>0&&Os(r[0]))throw new m(4003,!1);let o=r.find(_o);if(o&&o!==Vh(r))throw new m(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function VI(e){if(typeof e[0]=="string"&&e.length===1&&e[0]==="/")return new Ps(!0,0,e);let n=0,t=!1,r=e.reduce((o,i,s)=>{if(typeof i=="object"&&i!=null){if(i.outlets){let a={};return Object.entries(i.outlets).forEach(([c,u])=>{a[c]=typeof u=="string"?u.split("/"):u}),[...o,{outlets:a}]}if(i.segmentPath)return[...o,i.segmentPath]}return typeof i!="string"?[...o,i]:s===0?(i.split("/").forEach((a,c)=>{c==0&&a==="."||(c==0&&a===""?t=!0:a===".."?n++:a!=""&&o.push(a))}),o):[...o,i]},[]);return new Ps(t,n,r)}var ur=class{segmentGroup;processChildren;index;constructor(n,t,r){this.segmentGroup=n,this.processChildren=t,this.index=r}};function HI(e,n,t){if(e.isAbsolute)return new ur(n,!0,0);if(!t)return new ur(n,!1,NaN);if(t.parent===null)return new ur(t,!0,0);let r=Os(e.commands[0])?0:1,o=t.segments.length-1+r;return $I(t,o,e.numberOfDoubleDots)}function $I(e,n,t){let r=e,o=n,i=t;for(;i>o;){if(i-=o,r=r.parent,!r)throw new m(4005,!1);o=r.segments.length}return new ur(r,!1,o-i)}function zI(e){return _o(e[0])?e[0].outlets:{[b]:e}}function eg(e,n,t){if(e??=new k([],{}),e.segments.length===0&&e.hasChildren())return bo(e,n,t);let r=GI(e,n,t),o=t.slice(r.commandIndex);if(r.match&&r.pathIndexi!==b)&&e.children[b]&&e.numberOfChildren===1&&e.children[b].segments.length===0){let i=bo(e.children[b],n,t);return new k(e.segments,i.children)}return Object.entries(r).forEach(([i,s])=>{typeof s=="string"&&(s=[s]),s!==null&&(o[i]=eg(e.children[i],n,s))}),Object.entries(e.children).forEach(([i,s])=>{r[i]===void 0&&(o[i]=s)}),new k(e.segments,o)}}function GI(e,n,t){let r=0,o=n,i={match:!1,pathIndex:0,commandIndex:0};for(;o=t.length)return i;let s=e.segments[o],a=t[r];if(_o(a))break;let c=`${a}`,u=r0&&c===void 0)break;if(c&&u&&typeof u=="object"&&u.outlets===void 0){if(!kh(c,u,s))return i;r+=2}else{if(!kh(c,{},s))return i;r++}o++}return{match:!0,pathIndex:o,commandIndex:r}}function rl(e,n,t){let r=e.segments.slice(0,n),o=0;for(;o{typeof r=="string"&&(r=[r]),r!==null&&(n[t]=rl(new k([],{}),0,r))}),n}function Ph(e){let n={};return Object.entries(e).forEach(([t,r])=>n[t]=`${r}`),n}function kh(e,n,t){return e==t.path&&qe(n,t.parameters)}var lr="imperative",q=(function(e){return e[e.NavigationStart=0]="NavigationStart",e[e.NavigationEnd=1]="NavigationEnd",e[e.NavigationCancel=2]="NavigationCancel",e[e.NavigationError=3]="NavigationError",e[e.RoutesRecognized=4]="RoutesRecognized",e[e.ResolveStart=5]="ResolveStart",e[e.ResolveEnd=6]="ResolveEnd",e[e.GuardsCheckStart=7]="GuardsCheckStart",e[e.GuardsCheckEnd=8]="GuardsCheckEnd",e[e.RouteConfigLoadStart=9]="RouteConfigLoadStart",e[e.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",e[e.ChildActivationStart=11]="ChildActivationStart",e[e.ChildActivationEnd=12]="ChildActivationEnd",e[e.ActivationStart=13]="ActivationStart",e[e.ActivationEnd=14]="ActivationEnd",e[e.Scroll=15]="Scroll",e[e.NavigationSkipped=16]="NavigationSkipped",e})(q||{}),we=class{id;url;constructor(n,t){this.id=n,this.url=t}},Lt=class extends we{type=q.NavigationStart;navigationTrigger;restoredState;constructor(n,t,r="imperative",o=null){super(n,t),this.navigationTrigger=r,this.restoredState=o}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},Be=class extends we{urlAfterRedirects;type=q.NavigationEnd;constructor(n,t,r){super(n,t),this.urlAfterRedirects=r}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},de=(function(e){return e[e.Redirect=0]="Redirect",e[e.SupersededByNewNavigation=1]="SupersededByNewNavigation",e[e.NoDataFromResolver=2]="NoDataFromResolver",e[e.GuardRejected=3]="GuardRejected",e[e.Aborted=4]="Aborted",e})(de||{}),pr=(function(e){return e[e.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",e[e.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",e})(pr||{}),We=class extends we{reason;code;type=q.NavigationCancel;constructor(n,t,r,o){super(n,t),this.reason=r,this.code=o}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},Ye=class extends we{reason;code;type=q.NavigationSkipped;constructor(n,t,r,o){super(n,t),this.reason=r,this.code=o}},hr=class extends we{error;target;type=q.NavigationError;constructor(n,t,r,o){super(n,t),this.error=r,this.target=o}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},So=class extends we{urlAfterRedirects;state;type=q.RoutesRecognized;constructor(n,t,r,o){super(n,t),this.urlAfterRedirects=r,this.state=o}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},ks=class extends we{urlAfterRedirects;state;type=q.GuardsCheckStart;constructor(n,t,r,o){super(n,t),this.urlAfterRedirects=r,this.state=o}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Fs=class extends we{urlAfterRedirects;state;shouldActivate;type=q.GuardsCheckEnd;constructor(n,t,r,o,i){super(n,t),this.urlAfterRedirects=r,this.state=o,this.shouldActivate=i}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},Ls=class extends we{urlAfterRedirects;state;type=q.ResolveStart;constructor(n,t,r,o){super(n,t),this.urlAfterRedirects=r,this.state=o}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},js=class extends we{urlAfterRedirects;state;type=q.ResolveEnd;constructor(n,t,r,o){super(n,t),this.urlAfterRedirects=r,this.state=o}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Bs=class{route;type=q.RouteConfigLoadStart;constructor(n){this.route=n}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},Us=class{route;type=q.RouteConfigLoadEnd;constructor(n){this.route=n}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},Vs=class{snapshot;type=q.ChildActivationStart;constructor(n){this.snapshot=n}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},Hs=class{snapshot;type=q.ChildActivationEnd;constructor(n){this.snapshot=n}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},$s=class{snapshot;type=q.ActivationStart;constructor(n){this.snapshot=n}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},zs=class{snapshot;type=q.ActivationEnd;constructor(n){this.snapshot=n}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},gr=class{routerEvent;position;anchor;type=q.Scroll;constructor(n,t,r){this.routerEvent=n,this.position=t,this.anchor=r}toString(){let n=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${n}')`}},Mo=class{},mr=class{url;navigationBehaviorOptions;constructor(n,t){this.url=n,this.navigationBehaviorOptions=t}};function WI(e){return!(e instanceof Mo)&&!(e instanceof mr)}function ZI(e,n){return e.providers&&!e._injector&&(e._injector=Jn(e.providers,n,`Route: ${e.path}`)),e._injector??n}function je(e){return e.outlet||b}function YI(e,n){let t=e.filter(r=>je(r)===n);return t.push(...e.filter(r=>je(r)!==n)),t}function Dr(e){if(!e)return null;if(e.routeConfig?._injector)return e.routeConfig._injector;for(let n=e.parent;n;n=n.parent){let t=n.routeConfig;if(t?._loadedInjector)return t._loadedInjector;if(t?._injector)return t._injector}return null}var Gs=class{rootInjector;outlet=null;route=null;children;attachRef=null;get injector(){return Dr(this.route?.snapshot)??this.rootInjector}constructor(n){this.rootInjector=n,this.children=new En(this.rootInjector)}},En=(()=>{class e{rootInjector;contexts=new Map;constructor(t){this.rootInjector=t}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 Gs(this.rootInjector),this.contexts.set(t,r)),r}getContext(t){return this.contexts.get(t)||null}static \u0275fac=function(r){return new(r||e)(E($))};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),qs=class{_root;constructor(n){this._root=n}get root(){return this._root.value}parent(n){let t=this.pathFromRoot(n);return t.length>1?t[t.length-2]:null}children(n){let t=ol(n,this._root);return t?t.children.map(r=>r.value):[]}firstChild(n){let t=ol(n,this._root);return t&&t.children.length>0?t.children[0].value:null}siblings(n){let t=il(n,this._root);return t.length<2?[]:t[t.length-2].children.map(o=>o.value).filter(o=>o!==n)}pathFromRoot(n){return il(n,this._root).map(t=>t.value)}};function ol(e,n){if(e===n.value)return n;for(let t of n.children){let r=ol(e,t);if(r)return r}return null}function il(e,n){if(e===n.value)return[n];for(let t of n.children){let r=il(e,t);if(r.length)return r.unshift(n),r}return[]}var Ce=class{value;children;constructor(n,t){this.value=n,this.children=t}toString(){return`TreeNode(${this.value})`}};function cr(e){let n={};return e&&e.children.forEach(t=>n[t.value.outlet]=t),n}var No=class extends qs{snapshot;constructor(n,t){super(n),this.snapshot=t,pl(this,n)}toString(){return this.snapshot.toString()}};function tg(e){let n=QI(e),t=new J([new kt("",{})]),r=new J({}),o=new J({}),i=new J({}),s=new J(""),a=new pt(t,r,i,s,o,b,e,n.root);return a.snapshot=n.root,new No(new Ce(a,[]),n)}function QI(e){let n={},t={},r={},i=new yn([],n,r,"",t,b,e,null,{});return new Ro("",new Ce(i,[]))}var pt=class{urlSubject;paramsSubject;queryParamsSubject;fragmentSubject;dataSubject;outlet;component;snapshot;_futureSnapshot;_routerState;_paramMap;_queryParamMap;title;url;params;queryParams;fragment;data;constructor(n,t,r,o,i,s,a,c){this.urlSubject=n,this.paramsSubject=t,this.queryParamsSubject=r,this.fragmentSubject=o,this.dataSubject=i,this.outlet=s,this.component=a,this._futureSnapshot=c,this.title=this.dataSubject?.pipe(R(u=>u[Po]))??w(void 0),this.url=n,this.params=t,this.queryParams=r,this.fragment=o,this.data=i}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.params.pipe(R(n=>vn(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(R(n=>vn(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function Ws(e,n,t="emptyOnly"){let r,{routeConfig:o}=e;return n!==null&&(t==="always"||o?.path===""||!n.component&&!n.routeConfig?.loadComponent)?r={params:g(g({},n.params),e.params),data:g(g({},n.data),e.data),resolve:g(g(g(g({},e.data),n.data),o?.data),e._resolvedData)}:r={params:g({},e.params),data:g({},e.data),resolve:g(g({},e.data),e._resolvedData??{})},o&&rg(o)&&(r.resolve[Po]=o.title),r}var yn=class{url;params;queryParams;fragment;data;outlet;component;routeConfig;_resolve;_resolvedData;_routerState;_paramMap;_queryParamMap;get title(){return this.data?.[Po]}constructor(n,t,r,o,i,s,a,c,u){this.url=n,this.params=t,this.queryParams=r,this.fragment=o,this.data=i,this.outlet=s,this.component=a,this.routeConfig=c,this._resolve=u}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??=vn(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=vn(this.queryParams),this._queryParamMap}toString(){let n=this.url.map(r=>r.toString()).join("/"),t=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${n}', path:'${t}')`}},Ro=class extends qs{url;constructor(n,t){super(t),this.url=n,pl(this,t)}toString(){return ng(this._root)}};function pl(e,n){n.value._routerState=e,n.children.forEach(t=>pl(e,t))}function ng(e){let n=e.children.length>0?` { ${e.children.map(ng).join(", ")} } `:"";return`${e.value}${n}`}function Ku(e){if(e.snapshot){let n=e.snapshot,t=e._futureSnapshot;e.snapshot=t,qe(n.queryParams,t.queryParams)||e.queryParamsSubject.next(t.queryParams),n.fragment!==t.fragment&&e.fragmentSubject.next(t.fragment),qe(n.params,t.params)||e.paramsSubject.next(t.params),wI(n.url,t.url)||e.urlSubject.next(t.url),qe(n.data,t.data)||e.dataSubject.next(t.data)}else e.snapshot=e._futureSnapshot,e.dataSubject.next(e._futureSnapshot.data)}function sl(e,n){let t=qe(e.params,n.params)&&SI(e.url,n.url),r=!e.parent!=!n.parent;return t&&!r&&(!e.parent||sl(e.parent,n.parent))}function rg(e){return typeof e.title=="string"||e.title===null}var og=new v(""),ko=(()=>{class e{activated=null;get activatedComponentRef(){return this.activated}_activatedRoute=null;name=b;activateEvents=new le;deactivateEvents=new le;attachEvents=new le;detachEvents=new le;routerOutletData=th();parentContexts=p(En);location=p(ro);changeDetector=p(nr);inputBinder=p(Fo,{optional:!0});supportsBindingToComponentInputs=!0;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 m(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new m(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new m(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 m(4013,!1);this._activatedRoute=t;let o=this.location,s=t.snapshot.component,a=this.parentContexts.getOrCreateContext(this.name).children,c=new al(t,a,o.injector,this.routerOutletData);this.activated=o.createComponent(s,{index:o.length,injector:c,environmentInjector:r}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static \u0275fac=function(r){return new(r||e)};static \u0275dir=oo({type:e,selectors:[["router-outlet"]],inputs:{name:"name",routerOutletData:[1,"routerOutletData"]},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],features:[eo]})}return e})(),al=class{route;childContexts;parent;outletData;constructor(n,t,r,o){this.route=n,this.childContexts=t,this.parent=r,this.outletData=o}get(n,t){return n===pt?this.route:n===En?this.childContexts:n===og?this.outletData:this.parent.get(n,t)}},Fo=new v(""),hl=(()=>{class e{outletDataSubscriptions=new Map;bindActivatedRouteToOutletComponent(t){this.unsubscribeFromRouteData(t),this.subscribeToRouteData(t)}unsubscribeFromRouteData(t){this.outletDataSubscriptions.get(t)?.unsubscribe(),this.outletDataSubscriptions.delete(t)}subscribeToRouteData(t){let{activatedRoute:r}=t,o=Mr([r.queryParams,r.params,r.data]).pipe(X(([i,s,a],c)=>(a=g(g(g({},i),s),a),c===0?w(a):Promise.resolve(a)))).subscribe(i=>{if(!t.isActivated||!t.activatedComponentRef||t.activatedRoute!==r||r.component===null){this.unsubscribeFromRouteData(t);return}let s=rh(r.component);if(!s){this.unsubscribeFromRouteData(t);return}for(let{templateName:a}of s.inputs)t.activatedComponentRef.setInput(a,i[a])});this.outletDataSubscriptions.set(t,o)}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})(),gl=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275cmp=dn({type:e,selectors:[["ng-component"]],exportAs:["emptyRouterOutlet"],decls:1,vars:0,template:function(r,o){r&1&&Xn(0,"router-outlet")},dependencies:[ko],encapsulation:2})}return e})();function ml(e){let n=e.children&&e.children.map(ml),t=n?j(g({},e),{children:n}):g({},e);return!t.component&&!t.loadComponent&&(n||t.loadChildren)&&t.outlet&&t.outlet!==b&&(t.component=gl),t}function KI(e,n,t){let r=Ao(e,n._root,t?t._root:void 0);return new No(r,n)}function Ao(e,n,t){if(t&&e.shouldReuseRoute(n.value,t.value.snapshot)){let r=t.value;r._futureSnapshot=n.value;let o=JI(e,n,t);return new Ce(r,o)}else{if(e.shouldAttach(n.value)){let i=e.retrieve(n.value);if(i!==null){let s=i.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(a=>Ao(e,a)),s}}let r=XI(n.value),o=n.children.map(i=>Ao(e,i));return new Ce(r,o)}}function JI(e,n,t){return n.children.map(r=>{for(let o of t.children)if(e.shouldReuseRoute(r.value,o.value.snapshot))return Ao(e,r,o);return Ao(e,r)})}function XI(e){return new pt(new J(e.url),new J(e.params),new J(e.queryParams),new J(e.fragment),new J(e.data),e.outlet,e.component,e)}var yr=class{redirectTo;navigationBehaviorOptions;constructor(n,t){this.redirectTo=n,this.navigationBehaviorOptions=t}},ig="ngNavigationCancelingError";function Zs(e,n){let{redirectTo:t,navigationBehaviorOptions:r}=fr(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,o=sg(!1,de.Redirect);return o.url=t,o.navigationBehaviorOptions=r,o}function sg(e,n){let t=new Error(`NavigationCancelingError: ${e||""}`);return t[ig]=!0,t.cancellationCode=n,t}function eC(e){return ag(e)&&fr(e.url)}function ag(e){return!!e&&e[ig]}var tC=(e,n,t,r)=>R(o=>(new cl(n,o.targetRouterState,o.currentRouterState,t,r).activate(e),o)),cl=class{routeReuseStrategy;futureState;currState;forwardEvent;inputBindingEnabled;constructor(n,t,r,o,i){this.routeReuseStrategy=n,this.futureState=t,this.currState=r,this.forwardEvent=o,this.inputBindingEnabled=i}activate(n){let t=this.futureState._root,r=this.currState?this.currState._root:null;this.deactivateChildRoutes(t,r,n),Ku(this.futureState.root),this.activateChildRoutes(t,r,n)}deactivateChildRoutes(n,t,r){let o=cr(t);n.children.forEach(i=>{let s=i.value.outlet;this.deactivateRoutes(i,o[s],r),delete o[s]}),Object.values(o).forEach(i=>{this.deactivateRouteAndItsChildren(i,r)})}deactivateRoutes(n,t,r){let o=n.value,i=t?t.value:null;if(o===i)if(o.component){let s=r.getContext(o.outlet);s&&this.deactivateChildRoutes(n,t,s.children)}else this.deactivateChildRoutes(n,t,r);else i&&this.deactivateRouteAndItsChildren(t,r)}deactivateRouteAndItsChildren(n,t){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,t):this.deactivateRouteAndOutlet(n,t)}detachAndStoreRouteSubtree(n,t){let r=t.getContext(n.value.outlet),o=r&&n.value.component?r.children:t,i=cr(n);for(let s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);if(r&&r.outlet){let s=r.outlet.detach(),a=r.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:a})}}deactivateRouteAndOutlet(n,t){let r=t.getContext(n.value.outlet),o=r&&n.value.component?r.children:t,i=cr(n);for(let s of Object.values(i))this.deactivateRouteAndItsChildren(s,o);r&&(r.outlet&&(r.outlet.deactivate(),r.children.onOutletDeactivated()),r.attachRef=null,r.route=null)}activateChildRoutes(n,t,r){let o=cr(t);n.children.forEach(i=>{this.activateRoutes(i,o[i.value.outlet],r),this.forwardEvent(new zs(i.value.snapshot))}),n.children.length&&this.forwardEvent(new Hs(n.value.snapshot))}activateRoutes(n,t,r){let o=n.value,i=t?t.value:null;if(Ku(o),o===i)if(o.component){let s=r.getOrCreateContext(o.outlet);this.activateChildRoutes(n,t,s.children)}else this.activateChildRoutes(n,t,r);else if(o.component){let s=r.getOrCreateContext(o.outlet);if(this.routeReuseStrategy.shouldAttach(o.snapshot)){let a=this.routeReuseStrategy.retrieve(o.snapshot);this.routeReuseStrategy.store(o.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),Ku(a.route.value),this.activateChildRoutes(n,null,s.children)}else s.attachRef=null,s.route=o,s.outlet&&s.outlet.activateWith(o,s.injector),this.activateChildRoutes(n,null,s.children)}else this.activateChildRoutes(n,null,r)}},Ys=class{path;route;constructor(n){this.path=n,this.route=this.path[this.path.length-1]}},dr=class{component;route;constructor(n,t){this.component=n,this.route=t}};function nC(e,n,t){let r=e._root,o=n?n._root:null;return wo(r,o,t,[r.value])}function rC(e){let n=e.routeConfig?e.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:e,guards:n}}function Er(e,n){let t=Symbol(),r=n.get(e,t);return r===t?typeof e=="function"&&!Ha(e)?e:n.get(e):r}function wo(e,n,t,r,o={canDeactivateChecks:[],canActivateChecks:[]}){let i=cr(n);return e.children.forEach(s=>{oC(s,i[s.value.outlet],t,r.concat([s.value]),o),delete i[s.value.outlet]}),Object.entries(i).forEach(([s,a])=>To(a,t.getContext(s),o)),o}function oC(e,n,t,r,o={canDeactivateChecks:[],canActivateChecks:[]}){let i=e.value,s=n?n.value:null,a=t?t.getContext(e.value.outlet):null;if(s&&i.routeConfig===s.routeConfig){let c=iC(s,i,i.routeConfig.runGuardsAndResolvers);c?o.canActivateChecks.push(new Ys(r)):(i.data=s.data,i._resolvedData=s._resolvedData),i.component?wo(e,n,a?a.children:null,r,o):wo(e,n,t,r,o),c&&a&&a.outlet&&a.outlet.isActivated&&o.canDeactivateChecks.push(new dr(a.outlet.component,s))}else s&&To(n,a,o),o.canActivateChecks.push(new Ys(r)),i.component?wo(e,null,a?a.children:null,r,o):wo(e,null,t,r,o);return o}function iC(e,n,t){if(typeof t=="function")return t(e,n);switch(t){case"pathParamsChange":return!mn(e.url,n.url);case"pathParamsOrQueryParamsChange":return!mn(e.url,n.url)||!qe(e.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!sl(e,n)||!qe(e.queryParams,n.queryParams);case"paramsChange":default:return!sl(e,n)}}function To(e,n,t){let r=cr(e),o=e.value;Object.entries(r).forEach(([i,s])=>{o.component?n?To(s,n.children.getContext(i),t):To(s,null,t):To(s,n,t)}),o.component?n&&n.outlet&&n.outlet.isActivated?t.canDeactivateChecks.push(new dr(n.outlet.component,o)):t.canDeactivateChecks.push(new dr(null,o)):t.canDeactivateChecks.push(new dr(null,o))}function Lo(e){return typeof e=="function"}function sC(e){return typeof e=="boolean"}function aC(e){return e&&Lo(e.canLoad)}function cC(e){return e&&Lo(e.canActivate)}function uC(e){return e&&Lo(e.canActivateChild)}function lC(e){return e&&Lo(e.canDeactivate)}function dC(e){return e&&Lo(e.canMatch)}function cg(e){return e instanceof Qe||e?.name==="EmptyError"}var Ns=Symbol("INITIAL_VALUE");function vr(){return X(e=>Mr(e.map(n=>n.pipe(Je(1),Ma(Ns)))).pipe(R(n=>{for(let t of n)if(t!==!0){if(t===Ns)return Ns;if(t===!1||fC(t))return t}return!0}),oe(n=>n!==Ns),Je(1)))}function fC(e){return fr(e)||e instanceof yr}function pC(e,n){return H(t=>{let{targetSnapshot:r,currentSnapshot:o,guards:{canActivateChecks:i,canDeactivateChecks:s}}=t;return s.length===0&&i.length===0?w(j(g({},t),{guardsResult:!0})):hC(s,r,o,e).pipe(H(a=>a&&sC(a)?gC(r,i,e,n):w(a)),R(a=>j(g({},t),{guardsResult:a})))})}function hC(e,n,t,r){return U(e).pipe(H(o=>EC(o.component,o.route,t,n,r)),Xe(o=>o!==!0,!0))}function gC(e,n,t,r){return U(n).pipe(Ve(o=>Fn(yC(o.route.parent,r),mC(o.route,r),DC(e,o.path,t),vC(e,o.route,t))),Xe(o=>o!==!0,!0))}function mC(e,n){return e!==null&&n&&n(new $s(e)),w(!0)}function yC(e,n){return e!==null&&n&&n(new Vs(e)),w(!0)}function vC(e,n,t){let r=n.routeConfig?n.routeConfig.canActivate:null;if(!r||r.length===0)return w(!0);let o=r.map(i=>Nr(()=>{let s=Dr(n)??t,a=Er(i,s),c=cC(a)?a.canActivate(n,e):Y(s,()=>a(n,e));return ht(c).pipe(Xe())}));return w(o).pipe(vr())}function DC(e,n,t){let r=n[n.length-1],i=n.slice(0,n.length-1).reverse().map(s=>rC(s)).filter(s=>s!==null).map(s=>Nr(()=>{let a=s.guards.map(c=>{let u=Dr(s.node)??t,l=Er(c,u),d=uC(l)?l.canActivateChild(r,e):Y(u,()=>l(r,e));return ht(d).pipe(Xe())});return w(a).pipe(vr())}));return w(i).pipe(vr())}function EC(e,n,t,r,o){let i=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!i||i.length===0)return w(!0);let s=i.map(a=>{let c=Dr(n)??o,u=Er(a,c),l=lC(u)?u.canDeactivate(e,n,t,r):Y(c,()=>u(e,n,t,r));return ht(l).pipe(Xe())});return w(s).pipe(vr())}function IC(e,n,t,r){let o=n.canLoad;if(o===void 0||o.length===0)return w(!0);let i=o.map(s=>{let a=Er(s,e),c=aC(a)?a.canLoad(n,t):Y(e,()=>a(n,t));return ht(c)});return w(i).pipe(vr(),ug(r))}function ug(e){return Ia(Z(n=>{if(typeof n!="boolean")throw Zs(e,n)}),R(n=>n===!0))}function CC(e,n,t,r){let o=n.canMatch;if(!o||o.length===0)return w(!0);let i=o.map(s=>{let a=Er(s,e),c=dC(a)?a.canMatch(n,t):Y(e,()=>a(n,t));return ht(c)});return w(i).pipe(vr(),ug(r))}var xo=class{segmentGroup;constructor(n){this.segmentGroup=n||null}},Oo=class extends Error{urlTree;constructor(n){super(),this.urlTree=n}};function ar(e){return Pn(new xo(e))}function wC(e){return Pn(new m(4e3,!1))}function bC(e){return Pn(sg(!1,de.GuardRejected))}var ul=class{urlSerializer;urlTree;constructor(n,t){this.urlSerializer=n,this.urlTree=t}lineralizeSegments(n,t){let r=[],o=t.root;for(;;){if(r=r.concat(o.segments),o.numberOfChildren===0)return w(r);if(o.numberOfChildren>1||!o.children[b])return wC(`${n.redirectTo}`);o=o.children[b]}}applyRedirectCommands(n,t,r,o,i){return TC(t,o,i).pipe(R(s=>{if(s instanceof Ze)throw new Oo(s);let a=this.applyRedirectCreateUrlTree(s,this.urlSerializer.parse(s),n,r);if(s[0]==="/")throw new Oo(a);return a}))}applyRedirectCreateUrlTree(n,t,r,o){let i=this.createSegmentGroup(n,t.root,r,o);return new Ze(i,this.createQueryParams(t.queryParams,this.urlTree.queryParams),t.fragment)}createQueryParams(n,t){let r={};return Object.entries(n).forEach(([o,i])=>{if(typeof i=="string"&&i[0]===":"){let a=i.substring(1);r[o]=t[a]}else r[o]=i}),r}createSegmentGroup(n,t,r,o){let i=this.createSegments(n,t.segments,r,o),s={};return Object.entries(t.children).forEach(([a,c])=>{s[a]=this.createSegmentGroup(n,c,r,o)}),new k(i,s)}createSegments(n,t,r,o){return t.map(i=>i.path[0]===":"?this.findPosParam(n,i,o):this.findOrReturn(i,r))}findPosParam(n,t,r){let o=r[t.path.substring(1)];if(!o)throw new m(4001,!1);return o}findOrReturn(n,t){let r=0;for(let o of t){if(o.path===n.path)return t.splice(r),o;r++}return n}};function TC(e,n,t){if(typeof e=="string")return w(e);let r=e,{queryParams:o,fragment:i,routeConfig:s,url:a,outlet:c,params:u,data:l,title:d}=n;return ht(Y(t,()=>r({params:u,data:l,queryParams:o,fragment:i,routeConfig:s,url:a,outlet:c,title:d})))}var ll={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function _C(e,n,t,r,o){let i=lg(e,n,t);return i.matched?(r=ZI(n,r),CC(r,n,t,o).pipe(R(s=>s===!0?i:g({},ll)))):w(i)}function lg(e,n,t){if(n.path==="**")return SC(t);if(n.path==="")return n.pathMatch==="full"&&(e.hasChildren()||t.length>0)?g({},ll):{matched:!0,consumedSegments:[],remainingSegments:t,parameters:{},positionalParamSegments:{}};let o=(n.matcher||Bh)(t,e,n);if(!o)return g({},ll);let i={};Object.entries(o.posParams??{}).forEach(([a,c])=>{i[a]=c.path});let s=o.consumed.length>0?g(g({},i),o.consumed[o.consumed.length-1].parameters):i;return{matched:!0,consumedSegments:o.consumed,remainingSegments:t.slice(o.consumed.length),parameters:s,positionalParamSegments:o.posParams??{}}}function SC(e){return{matched:!0,parameters:e.length>0?Vh(e).parameters:{},consumedSegments:e,remainingSegments:[],positionalParamSegments:{}}}function Fh(e,n,t,r){return t.length>0&&RC(e,t,r)?{segmentGroup:new k(n,NC(r,new k(t,e.children))),slicedSegments:[]}:t.length===0&&AC(e,t,r)?{segmentGroup:new k(e.segments,MC(e,t,r,e.children)),slicedSegments:t}:{segmentGroup:new k(e.segments,e.children),slicedSegments:t}}function MC(e,n,t,r){let o={};for(let i of t)if(Ks(e,n,i)&&!r[je(i)]){let s=new k([],{});o[je(i)]=s}return g(g({},r),o)}function NC(e,n){let t={};t[b]=n;for(let r of e)if(r.path===""&&je(r)!==b){let o=new k([],{});t[je(r)]=o}return t}function RC(e,n,t){return t.some(r=>Ks(e,n,r)&&je(r)!==b)}function AC(e,n,t){return t.some(r=>Ks(e,n,r))}function Ks(e,n,t){return(e.hasChildren()||n.length>0)&&t.pathMatch==="full"?!1:t.path===""}function xC(e,n,t){return n.length===0&&!e.children[t]}var dl=class{};function OC(e,n,t,r,o,i,s="emptyOnly"){return new fl(e,n,t,r,o,s,i).recognize()}var PC=31,fl=class{injector;configLoader;rootComponentType;config;urlTree;paramsInheritanceStrategy;urlSerializer;applyRedirects;absoluteRedirectCount=0;allowRedirects=!0;constructor(n,t,r,o,i,s,a){this.injector=n,this.configLoader=t,this.rootComponentType=r,this.config=o,this.urlTree=i,this.paramsInheritanceStrategy=s,this.urlSerializer=a,this.applyRedirects=new ul(this.urlSerializer,this.urlTree)}noMatchError(n){return new m(4002,`'${n.segmentGroup}'`)}recognize(){let n=Fh(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(n).pipe(R(({children:t,rootSnapshot:r})=>{let o=new Ce(r,t),i=new Ro("",o),s=Qh(r,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,i.url=this.urlSerializer.serialize(s),{state:i,tree:s}}))}match(n){let t=new yn([],Object.freeze({}),Object.freeze(g({},this.urlTree.queryParams)),this.urlTree.fragment,Object.freeze({}),b,this.rootComponentType,null,{});return this.processSegmentGroup(this.injector,this.config,n,b,t).pipe(R(r=>({children:r,rootSnapshot:t})),Ke(r=>{if(r instanceof Oo)return this.urlTree=r.urlTree,this.match(r.urlTree.root);throw r instanceof xo?this.noMatchError(r):r}))}processSegmentGroup(n,t,r,o,i){return r.segments.length===0&&r.hasChildren()?this.processChildren(n,t,r,i):this.processSegment(n,t,r,r.segments,o,!0,i).pipe(R(s=>s instanceof Ce?[s]:[]))}processChildren(n,t,r,o){let i=[];for(let s of Object.keys(r.children))s==="primary"?i.unshift(s):i.push(s);return U(i).pipe(Ve(s=>{let a=r.children[s],c=YI(t,s);return this.processSegmentGroup(n,c,a,s,o)}),Sa((s,a)=>(s.push(...a),s)),yt(null),_a(),H(s=>{if(s===null)return ar(r);let a=dg(s);return kC(a),w(a)}))}processSegment(n,t,r,o,i,s,a){return U(t).pipe(Ve(c=>this.processSegmentAgainstRoute(c._injector??n,t,c,r,o,i,s,a).pipe(Ke(u=>{if(u instanceof xo)return w(null);throw u}))),Xe(c=>!!c),Ke(c=>{if(cg(c))return xC(r,o,i)?w(new dl):ar(r);throw c}))}processSegmentAgainstRoute(n,t,r,o,i,s,a,c){return je(r)!==s&&(s===b||!Ks(o,i,r))?ar(o):r.redirectTo===void 0?this.matchSegmentAgainstRoute(n,o,r,i,s,c):this.allowRedirects&&a?this.expandSegmentAgainstRouteUsingRedirect(n,o,t,r,i,s,c):ar(o)}expandSegmentAgainstRouteUsingRedirect(n,t,r,o,i,s,a){let{matched:c,parameters:u,consumedSegments:l,positionalParamSegments:d,remainingSegments:h}=lg(t,o,i);if(!c)return ar(t);typeof o.redirectTo=="string"&&o.redirectTo[0]==="/"&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>PC&&(this.allowRedirects=!1));let f=new yn(i,u,Object.freeze(g({},this.urlTree.queryParams)),this.urlTree.fragment,Lh(o),je(o),o.component??o._loadedComponent??null,o,jh(o)),D=Ws(f,a,this.paramsInheritanceStrategy);return f.params=Object.freeze(D.params),f.data=Object.freeze(D.data),this.applyRedirects.applyRedirectCommands(l,o.redirectTo,d,f,n).pipe(X(I=>this.applyRedirects.lineralizeSegments(o,I)),H(I=>this.processSegment(n,r,t,I.concat(h),s,!1,a)))}matchSegmentAgainstRoute(n,t,r,o,i,s){let a=_C(t,r,o,n,this.urlSerializer);return r.path==="**"&&(t.children={}),a.pipe(X(c=>c.matched?(n=r._injector??n,this.getChildConfig(n,r,o).pipe(X(({routes:u})=>{let l=r._loadedInjector??n,{parameters:d,consumedSegments:h,remainingSegments:f}=c,D=new yn(h,d,Object.freeze(g({},this.urlTree.queryParams)),this.urlTree.fragment,Lh(r),je(r),r.component??r._loadedComponent??null,r,jh(r)),T=Ws(D,s,this.paramsInheritanceStrategy);D.params=Object.freeze(T.params),D.data=Object.freeze(T.data);let{segmentGroup:I,slicedSegments:C}=Fh(t,h,f,u);if(C.length===0&&I.hasChildren())return this.processChildren(l,u,I,D).pipe(R(Ne=>new Ce(D,Ne)));if(u.length===0&&C.length===0)return w(new Ce(D,[]));let fe=je(r)===i;return this.processSegment(l,u,I,C,fe?b:i,!0,D).pipe(R(Ne=>new Ce(D,Ne instanceof Ce?[Ne]:[])))}))):ar(t)))}getChildConfig(n,t,r){return t.children?w({routes:t.children,injector:n}):t.loadChildren?t._loadedRoutes!==void 0?w({routes:t._loadedRoutes,injector:t._loadedInjector}):IC(n,t,r,this.urlSerializer).pipe(H(o=>o?this.configLoader.loadChildren(n,t).pipe(Z(i=>{t._loadedRoutes=i.routes,t._loadedInjector=i.injector})):bC(t))):w({routes:[],injector:n})}};function kC(e){e.sort((n,t)=>n.value.outlet===b?-1:t.value.outlet===b?1:n.value.outlet.localeCompare(t.value.outlet))}function FC(e){let n=e.value.routeConfig;return n&&n.path===""}function dg(e){let n=[],t=new Set;for(let r of e){if(!FC(r)){n.push(r);continue}let o=n.find(i=>r.value.routeConfig===i.value.routeConfig);o!==void 0?(o.children.push(...r.children),t.add(o)):n.push(r)}for(let r of t){let o=dg(r.children);n.push(new Ce(r.value,o))}return n.filter(r=>!t.has(r))}function Lh(e){return e.data||{}}function jh(e){return e.resolve||{}}function LC(e,n,t,r,o,i){return H(s=>OC(e,n,t,r,s.extractedUrl,o,i).pipe(R(({state:a,tree:c})=>j(g({},s),{targetSnapshot:a,urlAfterRedirects:c}))))}function jC(e,n){return H(t=>{let{targetSnapshot:r,guards:{canActivateChecks:o}}=t;if(!o.length)return w(t);let i=new Set(o.map(c=>c.route)),s=new Set;for(let c of i)if(!s.has(c))for(let u of fg(c))s.add(u);let a=0;return U(s).pipe(Ve(c=>i.has(c)?BC(c,r,e,n):(c.data=Ws(c,c.parent,e).resolve,w(void 0))),Z(()=>a++),Ln(1),H(c=>a===s.size?w(t):he))})}function fg(e){let n=e.children.map(t=>fg(t)).flat();return[e,...n]}function BC(e,n,t,r){let o=e.routeConfig,i=e._resolve;return o?.title!==void 0&&!rg(o)&&(i[Po]=o.title),Nr(()=>(e.data=Ws(e,e.parent,t).resolve,UC(i,e,n,r).pipe(R(s=>(e._resolvedData=s,e.data=g(g({},e.data),s),null)))))}function UC(e,n,t,r){let o=el(e);if(o.length===0)return w({});let i={};return U(o).pipe(H(s=>VC(e[s],n,t,r).pipe(Xe(),Z(a=>{if(a instanceof yr)throw Zs(new Ft,a);i[s]=a}))),Ln(1),R(()=>i),Ke(s=>cg(s)?he:Pn(s)))}function VC(e,n,t,r){let o=Dr(n)??r,i=Er(e,o),s=i.resolve?i.resolve(n,t):Y(o,()=>i(n,t));return ht(s)}function Ju(e){return X(n=>{let t=e(n);return t?U(t).pipe(R(()=>n)):w(n)})}var yl=(()=>{class e{buildTitle(t){let r,o=t.root;for(;o!==void 0;)r=this.getResolvedTitleForRoute(o)??r,o=o.children.find(i=>i.outlet===b);return r}getResolvedTitleForRoute(t){return t.data[Po]}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:()=>p(pg),providedIn:"root"})}return e})(),pg=(()=>{class e extends yl{title;constructor(t){super(),this.title=t}updateTitle(t){let r=this.buildTitle(t);r!==void 0&&this.title.setTitle(r)}static \u0275fac=function(r){return new(r||e)(E(Nh))};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),In=new v("",{providedIn:"root",factory:()=>({})}),Cn=new v(""),Js=(()=>{class e{componentLoaders=new WeakMap;childrenLoaders=new WeakMap;onLoadStartListener;onLoadEndListener;compiler=p(wu);loadComponent(t,r){if(this.componentLoaders.get(r))return this.componentLoaders.get(r);if(r._loadedComponent)return w(r._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(r);let o=ht(Y(t,()=>r.loadComponent())).pipe(R(gg),X(mg),Z(s=>{this.onLoadEndListener&&this.onLoadEndListener(r),r._loadedComponent=s}),$t(()=>{this.componentLoaders.delete(r)})),i=new On(o,()=>new K).pipe(xn());return this.componentLoaders.set(r,i),i}loadChildren(t,r){if(this.childrenLoaders.get(r))return this.childrenLoaders.get(r);if(r._loadedRoutes)return w({routes:r._loadedRoutes,injector:r._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(r);let i=hg(r,this.compiler,t,this.onLoadEndListener).pipe($t(()=>{this.childrenLoaders.delete(r)})),s=new On(i,()=>new K).pipe(xn());return this.childrenLoaders.set(r,s),s}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function hg(e,n,t,r){return ht(Y(t,()=>e.loadChildren())).pipe(R(gg),X(mg),H(o=>o instanceof ss||Array.isArray(o)?w(o):U(n.compileModuleAsync(o))),R(o=>{r&&r(e);let i,s,a=!1;return Array.isArray(o)?(s=o,a=!0):(i=o.create(t).injector,s=i.get(Cn,[],{optional:!0,self:!0}).flat()),{routes:s.map(ml),injector:i}}))}function HC(e){return e&&typeof e=="object"&&"default"in e}function gg(e){return HC(e)?e.default:e}function mg(e){return w(e)}var Xs=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:()=>p($C),providedIn:"root"})}return e})(),$C=(()=>{class e{shouldProcessUrl(t){return!0}extract(t){return t}merge(t,r){return t}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),vl=new v(""),Dl=new v("");function yg(e,n,t){let r=e.get(Dl),o=e.get(V);if(!o.startViewTransition||r.skipNextTransition)return r.skipNextTransition=!1,new Promise(u=>setTimeout(u));let i,s=new Promise(u=>{i=u}),a=o.startViewTransition(()=>(i(),zC(e)));a.ready.catch(u=>{});let{onViewTransitionCreated:c}=r;return c&&Y(e,()=>c({transition:a,from:n,to:t})),s}function zC(e){return new Promise(n=>{iu({read:()=>setTimeout(n)},{injector:e})})}var El=new v(""),ea=(()=>{class e{currentNavigation=qr(null,{equal:()=>!1});currentTransition=null;lastSuccessfulNavigation=null;events=new K;transitionAbortWithErrorSubject=new K;configLoader=p(Js);environmentInjector=p($);destroyRef=p(St);urlSerializer=p(Dn);rootContexts=p(En);location=p(Ot);inputBindingEnabled=p(Fo,{optional:!0})!==null;titleStrategy=p(yl);options=p(In,{optional:!0})||{};paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly";urlHandlingStrategy=p(Xs);createViewTransition=p(vl,{optional:!0});navigationErrorHandler=p(El,{optional:!0});navigationId=0;get hasRequestedNavigation(){return this.navigationId!==0}transitions;afterPreactivation=()=>w(void 0);rootComponentType=null;destroyed=!1;constructor(){let t=o=>this.events.next(new Bs(o)),r=o=>this.events.next(new Us(o));this.configLoader.onLoadEndListener=r,this.configLoader.onLoadStartListener=t,this.destroyRef.onDestroy(()=>{this.destroyed=!0})}complete(){this.transitions?.complete()}handleNavigationRequest(t){let r=++this.navigationId;Fe(()=>{this.transitions?.next(j(g({},t),{extractedUrl:this.urlHandlingStrategy.extract(t.rawUrl),targetSnapshot:null,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null,abortController:new AbortController,id:r}))})}setupNavigations(t){return this.transitions=new J(null),this.transitions.pipe(oe(r=>r!==null),X(r=>{let o=!1;return w(r).pipe(X(i=>{if(this.navigationId>r.id)return this.cancelNavigationTransition(r,"",de.SupersededByNewNavigation),he;this.currentTransition=r,this.currentNavigation.set({id:i.id,initialUrl:i.rawUrl,extractedUrl:i.extractedUrl,targetBrowserUrl:typeof i.extras.browserUrl=="string"?this.urlSerializer.parse(i.extras.browserUrl):i.extras.browserUrl,trigger:i.source,extras:i.extras,previousNavigation:this.lastSuccessfulNavigation?j(g({},this.lastSuccessfulNavigation),{previousNavigation:null}):null,abort:()=>i.abortController.abort()});let s=!t.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),a=i.extras.onSameUrlNavigation??t.onSameUrlNavigation;if(!s&&a!=="reload")return this.events.next(new Ye(i.id,this.urlSerializer.serialize(i.rawUrl),"",pr.IgnoredSameUrlNavigation)),i.resolve(!1),he;if(this.urlHandlingStrategy.shouldProcessUrl(i.rawUrl))return w(i).pipe(X(c=>(this.events.next(new Lt(c.id,this.urlSerializer.serialize(c.extractedUrl),c.source,c.restoredState)),c.id!==this.navigationId?he:Promise.resolve(c))),LC(this.environmentInjector,this.configLoader,this.rootComponentType,t.config,this.urlSerializer,this.paramsInheritanceStrategy),Z(c=>{r.targetSnapshot=c.targetSnapshot,r.urlAfterRedirects=c.urlAfterRedirects,this.currentNavigation.update(l=>(l.finalUrl=c.urlAfterRedirects,l));let u=new So(c.id,this.urlSerializer.serialize(c.extractedUrl),this.urlSerializer.serialize(c.urlAfterRedirects),c.targetSnapshot);this.events.next(u)}));if(s&&this.urlHandlingStrategy.shouldProcessUrl(i.currentRawUrl)){let{id:c,extractedUrl:u,source:l,restoredState:d,extras:h}=i,f=new Lt(c,this.urlSerializer.serialize(u),l,d);this.events.next(f);let D=tg(this.rootComponentType).snapshot;return this.currentTransition=r=j(g({},i),{targetSnapshot:D,urlAfterRedirects:u,extras:j(g({},h),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.update(T=>(T.finalUrl=u,T)),w(r)}else return this.events.next(new Ye(i.id,this.urlSerializer.serialize(i.extractedUrl),"",pr.IgnoredByUrlHandlingStrategy)),i.resolve(!1),he}),Z(i=>{let s=new ks(i.id,this.urlSerializer.serialize(i.extractedUrl),this.urlSerializer.serialize(i.urlAfterRedirects),i.targetSnapshot);this.events.next(s)}),R(i=>(this.currentTransition=r=j(g({},i),{guards:nC(i.targetSnapshot,i.currentSnapshot,this.rootContexts)}),r)),pC(this.environmentInjector,i=>this.events.next(i)),Z(i=>{if(r.guardsResult=i.guardsResult,i.guardsResult&&typeof i.guardsResult!="boolean")throw Zs(this.urlSerializer,i.guardsResult);let s=new Fs(i.id,this.urlSerializer.serialize(i.extractedUrl),this.urlSerializer.serialize(i.urlAfterRedirects),i.targetSnapshot,!!i.guardsResult);this.events.next(s)}),oe(i=>i.guardsResult?!0:(this.cancelNavigationTransition(i,"",de.GuardRejected),!1)),Ju(i=>{if(i.guards.canActivateChecks.length!==0)return w(i).pipe(Z(s=>{let a=new Ls(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);this.events.next(a)}),X(s=>{let a=!1;return w(s).pipe(jC(this.paramsInheritanceStrategy,this.environmentInjector),Z({next:()=>a=!0,complete:()=>{a||this.cancelNavigationTransition(s,"",de.NoDataFromResolver)}}))}),Z(s=>{let a=new js(s.id,this.urlSerializer.serialize(s.extractedUrl),this.urlSerializer.serialize(s.urlAfterRedirects),s.targetSnapshot);this.events.next(a)}))}),Ju(i=>{let s=a=>{let c=[];if(a.routeConfig?.loadComponent){let u=Dr(a)??this.environmentInjector;c.push(this.configLoader.loadComponent(u,a.routeConfig).pipe(Z(l=>{a.component=l}),R(()=>{})))}for(let u of a.children)c.push(...s(u));return c};return Mr(s(i.targetSnapshot.root)).pipe(yt(null),Je(1))}),Ju(()=>this.afterPreactivation()),X(()=>{let{currentSnapshot:i,targetSnapshot:s}=r,a=this.createViewTransition?.(this.environmentInjector,i.root,s.root);return a?U(a).pipe(R(()=>r)):w(r)}),R(i=>{let s=KI(t.routeReuseStrategy,i.targetSnapshot,i.currentRouterState);return this.currentTransition=r=j(g({},i),{targetRouterState:s}),this.currentNavigation.update(a=>(a.targetRouterState=s,a)),r}),Z(()=>{this.events.next(new Mo)}),tC(this.rootContexts,t.routeReuseStrategy,i=>this.events.next(i),this.inputBindingEnabled),Je(1),li(new A(i=>{let s=r.abortController.signal,a=()=>i.next();return s.addEventListener("abort",a),()=>s.removeEventListener("abort",a)}).pipe(oe(()=>!o&&!r.targetRouterState),Z(()=>{this.cancelNavigationTransition(r,r.abortController.signal.reason+"",de.Aborted)}))),Z({next:i=>{o=!0,this.lastSuccessfulNavigation=Fe(this.currentNavigation),this.events.next(new Be(i.id,this.urlSerializer.serialize(i.extractedUrl),this.urlSerializer.serialize(i.urlAfterRedirects))),this.titleStrategy?.updateTitle(i.targetRouterState.snapshot),i.resolve(!0)},complete:()=>{o=!0}}),li(this.transitionAbortWithErrorSubject.pipe(Z(i=>{throw i}))),$t(()=>{o||this.cancelNavigationTransition(r,"",de.SupersededByNewNavigation),this.currentTransition?.id===r.id&&(this.currentNavigation.set(null),this.currentTransition=null)}),Ke(i=>{if(this.destroyed)return r.resolve(!1),he;if(o=!0,ag(i))this.events.next(new We(r.id,this.urlSerializer.serialize(r.extractedUrl),i.message,i.cancellationCode)),eC(i)?this.events.next(new mr(i.url,i.navigationBehaviorOptions)):r.resolve(!1);else{let s=new hr(r.id,this.urlSerializer.serialize(r.extractedUrl),i,r.targetSnapshot??void 0);try{let a=Y(this.environmentInjector,()=>this.navigationErrorHandler?.(s));if(a instanceof yr){let{message:c,cancellationCode:u}=Zs(this.urlSerializer,a);this.events.next(new We(r.id,this.urlSerializer.serialize(r.extractedUrl),c,u)),this.events.next(new mr(a.redirectTo,a.navigationBehaviorOptions))}else throw this.events.next(s),i}catch(a){this.options.resolveNavigationPromiseOnError?r.resolve(!1):r.reject(a)}}return he}))}))}cancelNavigationTransition(t,r,o){let i=new We(t.id,this.urlSerializer.serialize(t.extractedUrl),r,o);this.events.next(i),t.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){let t=this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))),r=Fe(this.currentNavigation),o=r?.targetBrowserUrl??r?.extractedUrl;return t.toString()!==o?.toString()&&!r?.extras.skipLocationChange}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function GC(e){return e!==lr}var vg=(()=>{class e{static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:()=>p(qC),providedIn:"root"})}return e})(),Qs=class{shouldDetach(n){return!1}store(n,t){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,t){return n.routeConfig===t.routeConfig}},qC=(()=>{class e extends Qs{static \u0275fac=(()=>{let t;return function(o){return(t||(t=Ji(e)))(o||e)}})();static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),Dg=(()=>{class e{urlSerializer=p(Dn);options=p(In,{optional:!0})||{};canceledNavigationResolution=this.options.canceledNavigationResolution||"replace";location=p(Ot);urlHandlingStrategy=p(Xs);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";currentUrlTree=new Ze;getCurrentUrlTree(){return this.currentUrlTree}rawUrlTree=this.currentUrlTree;getRawUrlTree(){return this.rawUrlTree}createBrowserPath({finalUrl:t,initialUrl:r,targetBrowserUrl:o}){let i=t!==void 0?this.urlHandlingStrategy.merge(t,r):r,s=o??i;return s instanceof Ze?this.urlSerializer.serialize(s):s}commitTransition({targetRouterState:t,finalUrl:r,initialUrl:o}){r&&t?(this.currentUrlTree=r,this.rawUrlTree=this.urlHandlingStrategy.merge(r,o),this.routerState=t):this.rawUrlTree=o}routerState=tg(null);getRouterState(){return this.routerState}stateMemento=this.createStateMemento();updateStateMemento(){this.stateMemento=this.createStateMemento()}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}resetInternalState({finalUrl:t}){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,t??this.rawUrlTree)}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:()=>p(WC),providedIn:"root"})}return e})(),WC=(()=>{class e extends Dg{currentPageId=0;lastSuccessfulId=-1;restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}registerNonRouterCurrentEntryChangeListener(t){return this.location.subscribe(r=>{r.type==="popstate"&&setTimeout(()=>{t(r.url,r.state,"popstate")})})}handleRouterEvent(t,r){t instanceof Lt?this.updateStateMemento():t instanceof Ye?this.commitTransition(r):t instanceof So?this.urlUpdateStrategy==="eager"&&(r.extras.skipLocationChange||this.setBrowserUrl(this.createBrowserPath(r),r)):t instanceof Mo?(this.commitTransition(r),this.urlUpdateStrategy==="deferred"&&!r.extras.skipLocationChange&&this.setBrowserUrl(this.createBrowserPath(r),r)):t instanceof We&&t.code!==de.SupersededByNewNavigation&&t.code!==de.Redirect?this.restoreHistory(r):t instanceof hr?this.restoreHistory(r,!0):t instanceof Be&&(this.lastSuccessfulId=t.id,this.currentPageId=this.browserPageId)}setBrowserUrl(t,{extras:r,id:o}){let{replaceUrl:i,state:s}=r;if(this.location.isCurrentPathEqualTo(t)||i){let a=this.browserPageId,c=g(g({},s),this.generateNgRouterState(o,a));this.location.replaceState(t,"",c)}else{let a=g(g({},s),this.generateNgRouterState(o,this.browserPageId+1));this.location.go(t,"",a)}}restoreHistory(t,r=!1){if(this.canceledNavigationResolution==="computed"){let o=this.browserPageId,i=this.currentPageId-o;i!==0?this.location.historyGo(i):this.getCurrentUrlTree()===t.finalUrl&&i===0&&(this.resetInternalState(t),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(r&&this.resetInternalState(t),this.resetUrlToCurrentUrlTree())}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.getRawUrlTree()),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(t,r){return this.canceledNavigationResolution==="computed"?{navigationId:t,\u0275routerPageId:r}:{navigationId:t}}static \u0275fac=(()=>{let t;return function(o){return(t||(t=Ji(e)))(o||e)}})();static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function ta(e,n){e.events.pipe(oe(t=>t instanceof Be||t instanceof We||t instanceof hr||t instanceof Ye),R(t=>t instanceof Be||t instanceof Ye?0:(t instanceof We?t.code===de.Redirect||t.code===de.SupersededByNewNavigation:!1)?2:1),oe(t=>t!==2),Je(1)).subscribe(()=>{n()})}var ZC={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},YC={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},gt=(()=>{class e{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}disposed=!1;nonRouterCurrentEntryChangeSubscription;console=p(gu);stateManager=p(Dg);options=p(In,{optional:!0})||{};pendingTasks=p($e);urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred";navigationTransitions=p(ea);urlSerializer=p(Dn);location=p(Ot);urlHandlingStrategy=p(Xs);injector=p($);_events=new K;get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}navigated=!1;routeReuseStrategy=p(vg);onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore";config=p(Cn,{optional:!0})?.flat()??[];componentInputBindingEnabled=!!p(Fo,{optional:!0});currentNavigation=this.navigationTransitions.currentNavigation.asReadonly();constructor(){this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this).subscribe({error:t=>{this.console.warn(t)}}),this.subscribeToNavigationEvents()}eventsSubscription=new G;subscribeToNavigationEvents(){let t=this.navigationTransitions.events.subscribe(r=>{try{let o=this.navigationTransitions.currentTransition,i=Fe(this.navigationTransitions.currentNavigation);if(o!==null&&i!==null){if(this.stateManager.handleRouterEvent(r,i),r instanceof We&&r.code!==de.Redirect&&r.code!==de.SupersededByNewNavigation)this.navigated=!0;else if(r instanceof Be)this.navigated=!0;else if(r instanceof mr){let s=r.navigationBehaviorOptions,a=this.urlHandlingStrategy.merge(r.url,o.currentRawUrl),c=g({browserUrl:o.extras.browserUrl,info:o.extras.info,skipLocationChange:o.extras.skipLocationChange,replaceUrl:o.extras.replaceUrl||this.urlUpdateStrategy==="eager"||GC(o.source)},s);this.scheduleNavigation(a,lr,null,c,{resolve:o.resolve,reject:o.reject,promise:o.promise})}}WI(r)&&this._events.next(r)}catch(o){this.navigationTransitions.transitionAbortWithErrorSubject.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),lr,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((t,r,o)=>{this.navigateToSyncWithBrowser(t,o,r)})}navigateToSyncWithBrowser(t,r,o){let i={replaceUrl:!0},s=o?.navigationId?o:null;if(o){let c=g({},o);delete c.navigationId,delete c.\u0275routerPageId,Object.keys(c).length!==0&&(i.state=c)}let a=this.parseUrl(t);this.scheduleNavigation(a,r,s,i).catch(c=>{this.disposed||this.injector.get(ye)(c)})}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return Fe(this.navigationTransitions.currentNavigation)}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(t){this.config=t.map(ml),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this._events.unsubscribe(),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:i,fragment:s,queryParamsHandling:a,preserveFragment:c}=r,u=c?this.currentUrlTree.fragment:s,l=null;switch(a??this.options.defaultQueryParamsHandling){case"merge":l=g(g({},this.currentUrlTree.queryParams),i);break;case"preserve":l=this.currentUrlTree.queryParams;break;default:l=i||null}l!==null&&(l=this.removeEmptyProps(l));let d;try{let h=o?o.snapshot:this.routerState.snapshot.root;d=Kh(h)}catch{(typeof t[0]!="string"||t[0][0]!=="/")&&(t=[]),d=this.currentUrlTree.root}return Jh(d,t,l,u??null)}navigateByUrl(t,r={skipLocationChange:!1}){let o=fr(t)?t:this.parseUrl(t),i=this.urlHandlingStrategy.merge(o,this.rawUrlTree);return this.scheduleNavigation(i,lr,null,r)}navigate(t,r={skipLocationChange:!1}){return QC(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.console.warn(nt(4018,!1)),this.urlSerializer.parse("/")}}isActive(t,r){let o;if(r===!0?o=g({},ZC):r===!1?o=g({},YC):o=r,fr(t))return xh(this.currentUrlTree,t,o);let i=this.parseUrl(t);return xh(this.currentUrlTree,i,o)}removeEmptyProps(t){return Object.entries(t).reduce((r,[o,i])=>(i!=null&&(r[o]=i),r),{})}scheduleNavigation(t,r,o,i,s){if(this.disposed)return Promise.resolve(!1);let a,c,u;s?(a=s.resolve,c=s.reject,u=s.promise):u=new Promise((d,h)=>{a=d,c=h});let l=this.pendingTasks.add();return ta(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(l))}),this.navigationTransitions.handleNavigationRequest({source:r,restoredState:o,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:t,extras:i,resolve:a,reject:c,promise:u,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),u.catch(d=>Promise.reject(d))}static \u0275fac=function(r){return new(r||e)};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();function QC(e){for(let n=0;n{class e{router;injector;preloadingStrategy;loader;subscription;constructor(t,r,o,i){this.router=t,this.injector=r,this.preloadingStrategy=o,this.loader=i}setUpPreloading(){this.subscription=this.router.events.pipe(oe(t=>t instanceof Be),Ve(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(t,r){let o=[];for(let i of r){i.providers&&!i._injector&&(i._injector=Jn(i.providers,t,`Route: ${i.path}`));let s=i._injector??t,a=i._loadedInjector??s;(i.loadChildren&&!i._loadedRoutes&&i.canLoad===void 0||i.loadComponent&&!i._loadedComponent)&&o.push(this.preloadConfig(s,i)),(i.children||i._loadedRoutes)&&o.push(this.processRoutes(a,i.children??i._loadedRoutes))}return U(o).pipe(kn())}preloadConfig(t,r){return this.preloadingStrategy.preload(r,()=>{let o;r.loadChildren&&r.canLoad===void 0?o=this.loader.loadChildren(t,r):o=w(null);let i=o.pipe(H(s=>s===null?w(void 0):(r._loadedRoutes=s.routes,r._loadedInjector=s.injector,this.processRoutes(s.injector??t,s.routes))));if(r.loadComponent&&!r._loadedComponent){let s=this.loader.loadComponent(t,r);return U([i,s]).pipe(kn())}else return i})}static \u0275fac=function(r){return new(r||e)(E(gt),E($),E(jo),E(Js))};static \u0275prov=y({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),Ig=new v(""),KC=(()=>{class e{urlSerializer;transitions;viewportScroller;zone;options;routerEventsSubscription;scrollEventsSubscription;lastId=0;lastSource=lr;restoredId=0;store={};constructor(t,r,o,i,s={}){this.urlSerializer=t,this.transitions=r,this.viewportScroller=o,this.zone=i,this.options=s,s.scrollPositionRestoration||="disabled",s.anchorScrolling||="disabled"}init(){this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(t=>{t instanceof Lt?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=t.navigationTrigger,this.restoredId=t.restoredState?t.restoredState.navigationId:0):t instanceof Be?(this.lastId=t.id,this.scheduleScrollEvent(t,this.urlSerializer.parse(t.urlAfterRedirects).fragment)):t instanceof Ye&&t.code===pr.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(t,this.urlSerializer.parse(t.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(t=>{if(!(t instanceof gr))return;let r={behavior:"instant"};t.position?this.options.scrollPositionRestoration==="top"?this.viewportScroller.scrollToPosition([0,0],r):this.options.scrollPositionRestoration==="enabled"&&this.viewportScroller.scrollToPosition(t.position,r):t.anchor&&this.options.anchorScrolling==="enabled"?this.viewportScroller.scrollToAnchor(t.anchor):this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.scrollToPosition([0,0])})}scheduleScrollEvent(t,r){this.zone.runOutsideAngular(()=>wn(this,null,function*(){yield new Promise(o=>{setTimeout(o),typeof requestAnimationFrame<"u"&&requestAnimationFrame(o)}),this.zone.run(()=>{this.transitions.events.next(new gr(t,this.lastSource==="popstate"?this.store[this.restoredId]:null,r))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static \u0275fac=function(r){pu()};static \u0275prov=y({token:e,factory:e.\u0275fac})}return e})();function Cl(e,...n){return Yt([{provide:Cn,multi:!0,useValue:e},[],{provide:pt,useFactory:Cg,deps:[gt]},{provide:io,multi:!0,useFactory:wg},n.map(t=>t.\u0275providers)])}function Cg(e){return e.routerState.root}function Bo(e,n){return{\u0275kind:e,\u0275providers:n}}function wg(){let e=p(Ee);return n=>{let t=e.get(pn);if(n!==t.components[0])return;let r=e.get(gt),o=e.get(bg);e.get(wl)===1&&r.initialNavigation(),e.get(_g,null,{optional:!0})?.setUpPreloading(),e.get(Ig,null,{optional:!0})?.init(),r.resetRootComponentType(t.componentTypes[0]),o.closed||(o.next(),o.complete(),o.unsubscribe())}}var bg=new v("",{factory:()=>new K}),wl=new v("",{providedIn:"root",factory:()=>1});function na(){let e=[{provide:Yc,useValue:!0},{provide:wl,useValue:0},us(()=>{let n=p(Ee);return n.get(Su,Promise.resolve()).then(()=>new Promise(r=>{let o=n.get(gt),i=n.get(bg);ta(o,()=>{r(!0)}),n.get(ea).afterPreactivation=()=>(r(!0),i.closed?w(void 0):i),o.initialNavigation()}))})];return Bo(2,e)}function Tg(){let e=[us(()=>{p(gt).setUpLocationChangeListener()}),{provide:wl,useValue:2}];return Bo(3,e)}var _g=new v("");function Sg(e){return Bo(0,[{provide:_g,useExisting:Eg},{provide:jo,useExisting:e}])}function Mg(){return Bo(8,[hl,{provide:Fo,useExisting:hl}])}function Ng(e){ut("NgRouterViewTransitions");let n=[{provide:vl,useValue:yg},{provide:Dl,useValue:g({skipNextTransition:!!e?.skipInitialTransition},e)}];return Bo(9,n)}var Rg=[Ot,{provide:Dn,useClass:Ft},gt,En,{provide:pt,useFactory:Cg,deps:[gt]},Js,[]],bl=(()=>{class e{constructor(){}static forRoot(t,r){return{ngModule:e,providers:[Rg,[],{provide:Cn,multi:!0,useValue:t},[],r?.errorHandler?{provide:El,useValue:r.errorHandler}:[],{provide:In,useValue:r||{}},r?.useHash?XC():ew(),JC(),r?.preloadingStrategy?Sg(r.preloadingStrategy).\u0275providers:[],r?.initialNavigation?tw(r):[],r?.bindToComponentInputs?Mg().\u0275providers:[],r?.enableViewTransitions?Ng().\u0275providers:[],nw()]}}static forChild(t){return{ngModule:e,providers:[{provide:Cn,multi:!0,useValue:t}]}}static \u0275fac=function(r){return new(r||e)};static \u0275mod=Rt({type:e});static \u0275inj=rt({})}return e})();function JC(){return{provide:Ig,useFactory:()=>{let e=p(uh),n=p(z),t=p(In),r=p(ea),o=p(Dn);return t.scrollOffset&&e.setOffset(t.scrollOffset),new KC(o,r,e,n,t)}}}function XC(){return{provide:dt,useClass:Ru}}function ew(){return{provide:dt,useClass:ms}}function tw(e){return[e.initialNavigation==="disabled"?Tg().\u0275providers:[],e.initialNavigation==="enabledBlocking"?na().\u0275providers:[]]}var Il=new v("");function nw(){return[{provide:Il,useFactory:wg},{provide:io,multi:!0,useExisting:Il}]}var Ag=[];var iw=document.querySelector('meta[name="CSP_NONCE"]')?.content,xg={providers:[Cl(Ag,na()),Wu(Zu([Ah])),{provide:Yn,useValue:iw}]};function sw(e,n){if(e&1){let t=Iu();se(0,"div")(1,"button",1),co("click",function(){zr(t);let o=uo(2);return Gr(o.getDirectApiData())}),ve(2,"get data from API direct"),ae(),se(3,"button",1),co("click",function(){zr(t);let o=uo(2);return Gr(o.getGraphApiDataUsingApi())}),ve(4," get Graph data using API "),ae(),se(5,"form",2)(6,"button",3),ve(7,"Sign out"),ae()()()}}function aw(e,n){e&1&&(se(0,"a",0),ve(1,"Log in"),ae())}function cw(e,n){if(e&1&&(ls(0,sw,8,0,"div")(1,aw,2,0,"a",0),er(2,"hr"),se(3,"h2"),ve(4,"User profile:"),ae(),se(5,"pre"),ve(6),At(7,"json"),ae(),er(8,"hr"),se(9,"h2"),ve(10,"get direct data using API:"),ae(),se(11,"pre"),ve(12),At(13,"async"),At(14,"json"),ae(),er(15,"hr"),se(16,"h2"),ve(17,"get Microsoft Graph data using API:"),ae(),se(18,"pre"),ve(19),At(20,"async"),At(21,"json"),ae()),e&2){let t=n,r=uo();ds(t!=null&&t.isAuthenticated?0:1),Qn(6),tr(xt(7,4,t)),Qn(6),tr(xt(14,8,xt(13,6,r.dataFromAzureProtectedApi$))),Qn(7),tr(xt(21,12,xt(20,10,r.dataGraphApiCalls$)))}}function uw(e,n){e&1&&(se(0,"a",0),ve(1,"Log in"),ae())}var ra=class e{httpClient=p(Ss);dataFromAzureProtectedApi$;dataGraphApiCalls$;userProfileClaims$;ngOnInit(){console.info("home component"),this.getUserProfile()}getUserProfile(){this.userProfileClaims$=this.httpClient.get(`${this.getCurrentHost()}/api/User`)}getDirectApiData(){this.dataFromAzureProtectedApi$=this.httpClient.get(`${this.getCurrentHost()}/api/DirectApi`)}getGraphApiDataUsingApi(){this.dataGraphApiCalls$=this.httpClient.get(`${this.getCurrentHost()}/api/GraphApiData`)}getCurrentHost(){let n=window.location.host;return`${window.location.protocol}//${n}`}static \u0275fac=function(t){return new(t||e)};static \u0275cmp=dn({type:e,selectors:[["app-home"]],decls:5,vars:3,consts:[["href","api/Account/Login",1,"btn","btn-link"],[3,"click"],["method","post","action","api/Account/Logout"],["type","submit",1,"btn","btn-link"]],template:function(t,r){if(t&1&&(se(0,"h2"),ve(1,"BFF Security architecture with Angular nx"),ae(),ls(2,cw,22,14),At(3,"async"),so(4,uw,2,0,"a",0)),t&2){let o;Qn(2),ds((o=xt(3,1,r.userProfileClaims$))?2:4,o)}},dependencies:[ys,Au,xu],encapsulation:2})};var oa=class e{title="ui";static \u0275fac=function(t){return new(t||e)};static \u0275cmp=dn({type:e,selectors:[["app-root"]],decls:2,vars:0,template:function(t,r){t&1&&Xn(0,"app-home")(1,"router-outlet")},dependencies:[ra,bl,ko],encapsulation:2})};Hu(oa,xg).catch(e=>console.error(e)); diff --git a/server/wwwroot/polyfills-5CFQRCPP.js b/server/wwwroot/polyfills-5CFQRCPP.js deleted file mode 100644 index b237b5e..0000000 --- a/server/wwwroot/polyfills-5CFQRCPP.js +++ /dev/null @@ -1,2 +0,0 @@ -var ce=globalThis;function te(t){return(ce.__Zone_symbol_prefix||"__zone_symbol__")+t}function ht(){let t=ce.performance;function n(I){t&&t.mark&&t.mark(I)}function a(I,s){t&&t.measure&&t.measure(I,s)}n("Zone");class e{static __symbol__=te;static assertZonePatched(){if(ce.Promise!==S.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 s=e.current;for(;s.parent;)s=s.parent;return s}static get current(){return b.zone}static get currentTask(){return D}static __load_patch(s,i,r=!1){if(S.hasOwnProperty(s)){let E=ce[te("forceDuplicateZoneCheck")]===!0;if(!r&&E)throw Error("Already loaded patch: "+s)}else if(!ce["__Zone_disable_"+s]){let E="Zone:"+s;n(E),S[s]=i(ce,e,R),a(E,E)}}get parent(){return this._parent}get name(){return this._name}_parent;_name;_properties;_zoneDelegate;constructor(s,i){this._parent=s,this._name=i?i.name||"unnamed":"",this._properties=i&&i.properties||{},this._zoneDelegate=new f(this,this._parent&&this._parent._zoneDelegate,i)}get(s){let i=this.getZoneWith(s);if(i)return i._properties[s]}getZoneWith(s){let i=this;for(;i;){if(i._properties.hasOwnProperty(s))return i;i=i._parent}return null}fork(s){if(!s)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,s)}wrap(s,i){if(typeof s!="function")throw new Error("Expecting function got: "+s);let r=this._zoneDelegate.intercept(this,s,i),E=this;return function(){return E.runGuarded(r,this,arguments,i)}}run(s,i,r,E){b={parent:b,zone:this};try{return this._zoneDelegate.invoke(this,s,i,r,E)}finally{b=b.parent}}runGuarded(s,i=null,r,E){b={parent:b,zone:this};try{try{return this._zoneDelegate.invoke(this,s,i,r,E)}catch(x){if(this._zoneDelegate.handleError(this,x))throw x}}finally{b=b.parent}}runTask(s,i,r){if(s.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(s.zone||J).name+"; Execution: "+this.name+")");let E=s,{type:x,data:{isPeriodic:ee=!1,isRefreshable:M=!1}={}}=s;if(s.state===q&&(x===U||x===k))return;let he=s.state!=A;he&&E._transitionTo(A,d);let _e=D;D=E,b={parent:b,zone:this};try{x==k&&s.data&&!ee&&!M&&(s.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,E,i,r)}catch(Q){if(this._zoneDelegate.handleError(this,Q))throw Q}}finally{let Q=s.state;if(Q!==q&&Q!==X)if(x==U||ee||M&&Q===p)he&&E._transitionTo(d,A,p);else{let Te=E._zoneDelegates;this._updateTaskCount(E,-1),he&&E._transitionTo(q,A,q),M&&(E._zoneDelegates=Te)}b=b.parent,D=_e}}scheduleTask(s){if(s.zone&&s.zone!==this){let r=this;for(;r;){if(r===s.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${s.zone.name}`);r=r.parent}}s._transitionTo(p,q);let i=[];s._zoneDelegates=i,s._zone=this;try{s=this._zoneDelegate.scheduleTask(this,s)}catch(r){throw s._transitionTo(X,p,q),this._zoneDelegate.handleError(this,r),r}return s._zoneDelegates===i&&this._updateTaskCount(s,1),s.state==p&&s._transitionTo(d,p),s}scheduleMicroTask(s,i,r,E){return this.scheduleTask(new g(F,s,i,r,E,void 0))}scheduleMacroTask(s,i,r,E,x){return this.scheduleTask(new g(k,s,i,r,E,x))}scheduleEventTask(s,i,r,E,x){return this.scheduleTask(new g(U,s,i,r,E,x))}cancelTask(s){if(s.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(s.zone||J).name+"; Execution: "+this.name+")");if(!(s.state!==d&&s.state!==A)){s._transitionTo(V,d,A);try{this._zoneDelegate.cancelTask(this,s)}catch(i){throw s._transitionTo(X,V),this._zoneDelegate.handleError(this,i),i}return this._updateTaskCount(s,-1),s._transitionTo(q,V),s.runCount=-1,s}}_updateTaskCount(s,i){let r=s._zoneDelegates;i==-1&&(s._zoneDelegates=null);for(let E=0;EI.hasTask(i,r),onScheduleTask:(I,s,i,r)=>I.scheduleTask(i,r),onInvokeTask:(I,s,i,r,E,x)=>I.invokeTask(i,r,E,x),onCancelTask:(I,s,i,r)=>I.cancelTask(i,r)};class f{get zone(){return this._zone}_zone;_taskCounts={microTask:0,macroTask:0,eventTask:0};_parentDelegate;_forkDlgt;_forkZS;_forkCurrZone;_interceptDlgt;_interceptZS;_interceptCurrZone;_invokeDlgt;_invokeZS;_invokeCurrZone;_handleErrorDlgt;_handleErrorZS;_handleErrorCurrZone;_scheduleTaskDlgt;_scheduleTaskZS;_scheduleTaskCurrZone;_invokeTaskDlgt;_invokeTaskZS;_invokeTaskCurrZone;_cancelTaskDlgt;_cancelTaskZS;_cancelTaskCurrZone;_hasTaskDlgt;_hasTaskDlgtOwner;_hasTaskZS;_hasTaskCurrZone;constructor(s,i,r){this._zone=s,this._parentDelegate=i,this._forkZS=r&&(r&&r.onFork?r:i._forkZS),this._forkDlgt=r&&(r.onFork?i:i._forkDlgt),this._forkCurrZone=r&&(r.onFork?this._zone:i._forkCurrZone),this._interceptZS=r&&(r.onIntercept?r:i._interceptZS),this._interceptDlgt=r&&(r.onIntercept?i:i._interceptDlgt),this._interceptCurrZone=r&&(r.onIntercept?this._zone:i._interceptCurrZone),this._invokeZS=r&&(r.onInvoke?r:i._invokeZS),this._invokeDlgt=r&&(r.onInvoke?i:i._invokeDlgt),this._invokeCurrZone=r&&(r.onInvoke?this._zone:i._invokeCurrZone),this._handleErrorZS=r&&(r.onHandleError?r:i._handleErrorZS),this._handleErrorDlgt=r&&(r.onHandleError?i:i._handleErrorDlgt),this._handleErrorCurrZone=r&&(r.onHandleError?this._zone:i._handleErrorCurrZone),this._scheduleTaskZS=r&&(r.onScheduleTask?r:i._scheduleTaskZS),this._scheduleTaskDlgt=r&&(r.onScheduleTask?i:i._scheduleTaskDlgt),this._scheduleTaskCurrZone=r&&(r.onScheduleTask?this._zone:i._scheduleTaskCurrZone),this._invokeTaskZS=r&&(r.onInvokeTask?r:i._invokeTaskZS),this._invokeTaskDlgt=r&&(r.onInvokeTask?i:i._invokeTaskDlgt),this._invokeTaskCurrZone=r&&(r.onInvokeTask?this._zone:i._invokeTaskCurrZone),this._cancelTaskZS=r&&(r.onCancelTask?r:i._cancelTaskZS),this._cancelTaskDlgt=r&&(r.onCancelTask?i:i._cancelTaskDlgt),this._cancelTaskCurrZone=r&&(r.onCancelTask?this._zone:i._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let E=r&&r.onHasTask,x=i&&i._hasTaskZS;(E||x)&&(this._hasTaskZS=E?r:c,this._hasTaskDlgt=i,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,r.onScheduleTask||(this._scheduleTaskZS=c,this._scheduleTaskDlgt=i,this._scheduleTaskCurrZone=this._zone),r.onInvokeTask||(this._invokeTaskZS=c,this._invokeTaskDlgt=i,this._invokeTaskCurrZone=this._zone),r.onCancelTask||(this._cancelTaskZS=c,this._cancelTaskDlgt=i,this._cancelTaskCurrZone=this._zone))}fork(s,i){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,s,i):new e(s,i)}intercept(s,i,r){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,s,i,r):i}invoke(s,i,r,E,x){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,s,i,r,E,x):i.apply(r,E)}handleError(s,i){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,s,i):!0}scheduleTask(s,i){let r=i;if(this._scheduleTaskZS)this._hasTaskZS&&r._zoneDelegates.push(this._hasTaskDlgtOwner),r=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,s,i),r||(r=i);else if(i.scheduleFn)i.scheduleFn(i);else if(i.type==F)z(i);else throw new Error("Task is missing scheduleFn.");return r}invokeTask(s,i,r,E){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,s,i,r,E):i.callback.apply(r,E)}cancelTask(s,i){let r;if(this._cancelTaskZS)r=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,s,i);else{if(!i.cancelFn)throw Error("Task is not cancelable");r=i.cancelFn(i)}return r}hasTask(s,i){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,s,i)}catch(r){this.handleError(s,r)}}_updateTaskCount(s,i){let r=this._taskCounts,E=r[s],x=r[s]=E+i;if(x<0)throw new Error("More tasks executed then were scheduled.");if(E==0||x==0){let ee={microTask:r.microTask>0,macroTask:r.macroTask>0,eventTask:r.eventTask>0,change:s};this.hasTask(this._zone,ee)}}}class g{type;source;invoke;callback;data;scheduleFn;cancelFn;_zone=null;runCount=0;_zoneDelegates=null;_state="notScheduled";constructor(s,i,r,E,x,ee){if(this.type=s,this.source=i,this.data=E,this.scheduleFn=x,this.cancelFn=ee,!r)throw new Error("callback is not defined");this.callback=r;let M=this;s===U&&E&&E.useG?this.invoke=g.invokeTask:this.invoke=function(){return g.invokeTask.call(ce,M,this,arguments)}}static invokeTask(s,i,r){s||(s=this),K++;try{return s.runCount++,s.zone.runTask(s,i,r)}finally{K==1&&$(),K--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(q,p)}_transitionTo(s,i,r){if(this._state===i||this._state===r)this._state=s,s==q&&(this._zoneDelegates=null);else throw new Error(`${this.type} '${this.source}': can not transition to '${s}', expecting state '${i}'${r?" or '"+r+"'":""}, 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 T=te("setTimeout"),y=te("Promise"),w=te("then"),_=[],P=!1,L;function H(I){if(L||ce[y]&&(L=ce[y].resolve(0)),L){let s=L[w];s||(s=L.then),s.call(L,I)}else ce[T](I,0)}function z(I){K===0&&_.length===0&&H($),I&&_.push(I)}function $(){if(!P){for(P=!0;_.length;){let I=_;_=[];for(let s=0;sb,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:z,showUncaughtError:()=>!e[te("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:H},b={parent:null,zone:new e(null,null)},D=null,K=0;function W(){}return a("Zone","Zone"),e}function dt(){let t=globalThis,n=t[te("forceDuplicateZoneCheck")]===!0;if(t.Zone&&(n||typeof t.Zone.__symbol__!="function"))throw new Error("Zone already loaded.");return t.Zone??=ht(),t.Zone}var pe=Object.getOwnPropertyDescriptor,Me=Object.defineProperty,Ae=Object.getPrototypeOf,_t=Object.create,Tt=Array.prototype.slice,je="addEventListener",He="removeEventListener",Ne=te(je),Ze=te(He),ae="true",le="false",ve=te("");function Ve(t,n){return Zone.current.wrap(t,n)}function xe(t,n,a,e,c){return Zone.current.scheduleMacroTask(t,n,a,e,c)}var j=te,we=typeof window<"u",be=we?window:void 0,Y=we&&be||globalThis,Et="removeAttribute";function Fe(t,n){for(let a=t.length-1;a>=0;a--)typeof t[a]=="function"&&(t[a]=Ve(t[a],n+"_"+a));return t}function gt(t,n){let a=t.constructor.name;for(let e=0;e{let y=function(){return T.apply(this,Fe(arguments,a+"."+c))};return fe(y,T),y})(f)}}}function et(t){return t?t.writable===!1?!1:!(typeof t.get=="function"&&typeof t.set>"u"):!0}var tt=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,De=!("nw"in Y)&&typeof Y.process<"u"&&Y.process.toString()==="[object process]",Ge=!De&&!tt&&!!(we&&be.HTMLElement),nt=typeof Y.process<"u"&&Y.process.toString()==="[object process]"&&!tt&&!!(we&&be.HTMLElement),Ce={},kt=j("enable_beforeunload"),Xe=function(t){if(t=t||Y.event,!t)return;let n=Ce[t.type];n||(n=Ce[t.type]=j("ON_PROPERTY"+t.type));let a=this||t.target||Y,e=a[n],c;if(Ge&&a===be&&t.type==="error"){let f=t;c=e&&e.call(this,f.message,f.filename,f.lineno,f.colno,f.error),c===!0&&t.preventDefault()}else c=e&&e.apply(this,arguments),t.type==="beforeunload"&&Y[kt]&&typeof c=="string"?t.returnValue=c:c!=null&&!c&&t.preventDefault();return c};function Ye(t,n,a){let e=pe(t,n);if(!e&&a&&pe(a,n)&&(e={enumerable:!0,configurable:!0}),!e||!e.configurable)return;let c=j("on"+n+"patched");if(t.hasOwnProperty(c)&&t[c])return;delete e.writable,delete e.value;let f=e.get,g=e.set,T=n.slice(2),y=Ce[T];y||(y=Ce[T]=j("ON_PROPERTY"+T)),e.set=function(w){let _=this;if(!_&&t===Y&&(_=Y),!_)return;typeof _[y]=="function"&&_.removeEventListener(T,Xe),g?.call(_,null),_[y]=w,typeof w=="function"&&_.addEventListener(T,Xe,!1)},e.get=function(){let w=this;if(!w&&t===Y&&(w=Y),!w)return null;let _=w[y];if(_)return _;if(f){let P=f.call(this);if(P)return e.set.call(this,P),typeof w[Et]=="function"&&w.removeAttribute(n),P}return null},Me(t,n,e),t[c]=!0}function rt(t,n,a){if(n)for(let e=0;efunction(g,T){let y=a(g,T);return y.cbIdx>=0&&typeof T[y.cbIdx]=="function"?xe(y.name,T[y.cbIdx],y,c):f.apply(g,T)})}function fe(t,n){t[j("OriginalDelegate")]=n}var $e=!1,Le=!1;function yt(){if($e)return Le;$e=!0;try{let t=be.navigator.userAgent;(t.indexOf("MSIE ")!==-1||t.indexOf("Trident/")!==-1||t.indexOf("Edge/")!==-1)&&(Le=!0)}catch{}return Le}function Je(t){return typeof t=="function"}function Ke(t){return typeof t=="number"}var pt={useG:!0},ne={},ot={},st=new RegExp("^"+ve+"(\\w+)(true|false)$"),it=j("propagationStopped");function ct(t,n){let a=(n?n(t):t)+le,e=(n?n(t):t)+ae,c=ve+a,f=ve+e;ne[t]={},ne[t][le]=c,ne[t][ae]=f}function vt(t,n,a,e){let c=e&&e.add||je,f=e&&e.rm||He,g=e&&e.listeners||"eventListeners",T=e&&e.rmAll||"removeAllListeners",y=j(c),w="."+c+":",_="prependListener",P="."+_+":",L=function(p,d,A){if(p.isRemoved)return;let V=p.callback;typeof V=="object"&&V.handleEvent&&(p.callback=k=>V.handleEvent(k),p.originalDelegate=V);let X;try{p.invoke(p,d,[A])}catch(k){X=k}let F=p.options;if(F&&typeof F=="object"&&F.once){let k=p.originalDelegate?p.originalDelegate:p.callback;d[f].call(d,A.type,k,F)}return X};function H(p,d,A){if(d=d||t.event,!d)return;let V=p||d.target||t,X=V[ne[d.type][A?ae:le]];if(X){let F=[];if(X.length===1){let k=L(X[0],V,d);k&&F.push(k)}else{let k=X.slice();for(let U=0;U{throw U})}}}let z=function(p){return H(this,p,!1)},$=function(p){return H(this,p,!0)};function J(p,d){if(!p)return!1;let A=!0;d&&d.useG!==void 0&&(A=d.useG);let V=d&&d.vh,X=!0;d&&d.chkDup!==void 0&&(X=d.chkDup);let F=!1;d&&d.rt!==void 0&&(F=d.rt);let k=p;for(;k&&!k.hasOwnProperty(c);)k=Ae(k);if(!k&&p[c]&&(k=p),!k||k[y])return!1;let U=d&&d.eventNameToString,S={},R=k[y]=k[c],b=k[j(f)]=k[f],D=k[j(g)]=k[g],K=k[j(T)]=k[T],W;d&&d.prepend&&(W=k[j(d.prepend)]=k[d.prepend]);function I(o,u){return u?typeof o=="boolean"?{capture:o,passive:!0}:o?typeof o=="object"&&o.passive!==!1?{...o,passive:!0}:o:{passive:!0}:o}let s=function(o){if(!S.isExisting)return R.call(S.target,S.eventName,S.capture?$:z,S.options)},i=function(o){if(!o.isRemoved){let u=ne[o.eventName],v;u&&(v=u[o.capture?ae:le]);let C=v&&o.target[v];if(C){for(let m=0;mre.zone.cancelTask(re);o.call(Ee,"abort",ie,{once:!0}),re.removeAbortListener=()=>Ee.removeEventListener("abort",ie)}if(S.target=null,me&&(me.taskData=null),Be&&(S.options.once=!0),typeof re.options!="boolean"&&(re.options=se),re.target=N,re.capture=Se,re.eventName=Z,B&&(re.originalDelegate=G),O?ge.unshift(re):ge.push(re),m)return N}};return k[c]=l(R,w,ee,M,F),W&&(k[_]=l(W,P,E,M,F,!0)),k[f]=function(){let o=this||t,u=arguments[0];d&&d.transferEventName&&(u=d.transferEventName(u));let v=arguments[2],C=v?typeof v=="boolean"?!0:v.capture:!1,m=arguments[1];if(!m)return b.apply(this,arguments);if(V&&!V(b,m,o,arguments))return;let O=ne[u],N;O&&(N=O[C?ae:le]);let Z=N&&o[N];if(Z)for(let G=0;Gfunction(c,f){c[it]=!0,e&&e.apply(c,f)})}function Pt(t,n){n.patchMethod(t,"queueMicrotask",a=>function(e,c){Zone.current.scheduleMicroTask("queueMicrotask",c[0])})}var Re=j("zoneTask");function ke(t,n,a,e){let c=null,f=null;n+=e,a+=e;let g={};function T(w){let _=w.data;_.args[0]=function(){return w.invoke.apply(this,arguments)};let P=c.apply(t,_.args);return Ke(P)?_.handleId=P:(_.handle=P,_.isRefreshable=Je(P.refresh)),w}function y(w){let{handle:_,handleId:P}=w.data;return f.call(t,_??P)}c=ue(t,n,w=>function(_,P){if(Je(P[0])){let L={isRefreshable:!1,isPeriodic:e==="Interval",delay:e==="Timeout"||e==="Interval"?P[1]||0:void 0,args:P},H=P[0];P[0]=function(){try{return H.apply(this,arguments)}finally{let{handle:A,handleId:V,isPeriodic:X,isRefreshable:F}=L;!X&&!F&&(V?delete g[V]:A&&(A[Re]=null))}};let z=xe(n,P[0],L,T,y);if(!z)return z;let{handleId:$,handle:J,isRefreshable:q,isPeriodic:p}=z.data;if($)g[$]=z;else if(J&&(J[Re]=z,q&&!p)){let d=J.refresh;J.refresh=function(){let{zone:A,state:V}=z;return V==="notScheduled"?(z._state="scheduled",A._updateTaskCount(z,1)):V==="running"&&(z._state="scheduling"),d.call(this)}}return J??$??z}else return w.apply(t,P)}),f=ue(t,a,w=>function(_,P){let L=P[0],H;Ke(L)?(H=g[L],delete g[L]):(H=L?.[Re],H?L[Re]=null:H=L),H?.type?H.cancelFn&&H.zone.cancelTask(H):w.apply(t,P)})}function Rt(t,n){let{isBrowser:a,isMix:e}=n.getGlobalObjects();if(!a&&!e||!t.customElements||!("customElements"in t))return;let c=["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"];n.patchCallbacks(n,t.customElements,"customElements","define",c)}function Ct(t,n){if(Zone[n.symbol("patchEventTarget")])return;let{eventNames:a,zoneSymbolEventNames:e,TRUE_STR:c,FALSE_STR:f,ZONE_SYMBOL_PREFIX:g}=n.getGlobalObjects();for(let y=0;yf.target===t);if(e.length===0)return n;let c=e[0].ignoreProperties;return n.filter(f=>c.indexOf(f)===-1)}function Qe(t,n,a,e){if(!t)return;let c=lt(t,n,a);rt(t,c,e)}function Ie(t){return Object.getOwnPropertyNames(t).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}function Dt(t,n){if(De&&!nt||Zone[t.symbol("patchEvents")])return;let a=n.__Zone_ignore_on_properties,e=[];if(Ge){let c=window;e=e.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);let f=[];Qe(c,Ie(c),a&&a.concat(f),Ae(c))}e=e.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{let a=n[t.__symbol__("legacyPatch")];a&&a()}),t.__load_patch("timers",n=>{let e="clear";ke(n,"set",e,"Timeout"),ke(n,"set",e,"Interval"),ke(n,"set",e,"Immediate")}),t.__load_patch("requestAnimationFrame",n=>{ke(n,"request","cancel","AnimationFrame"),ke(n,"mozRequest","mozCancel","AnimationFrame"),ke(n,"webkitRequest","webkitCancel","AnimationFrame")}),t.__load_patch("blocking",(n,a)=>{let e=["alert","prompt","confirm"];for(let c=0;cfunction(w,_){return a.current.run(g,n,_,y)})}}),t.__load_patch("EventTarget",(n,a,e)=>{wt(n,e),Ct(n,e);let c=n.XMLHttpRequestEventTarget;c&&c.prototype&&e.patchEventTarget(n,e,[c.prototype])}),t.__load_patch("MutationObserver",(n,a,e)=>{ye("MutationObserver"),ye("WebKitMutationObserver")}),t.__load_patch("IntersectionObserver",(n,a,e)=>{ye("IntersectionObserver")}),t.__load_patch("FileReader",(n,a,e)=>{ye("FileReader")}),t.__load_patch("on_property",(n,a,e)=>{Dt(e,n)}),t.__load_patch("customElements",(n,a,e)=>{Rt(n,e)}),t.__load_patch("XHR",(n,a)=>{w(n);let e=j("xhrTask"),c=j("xhrSync"),f=j("xhrListener"),g=j("xhrScheduled"),T=j("xhrURL"),y=j("xhrErrorBeforeScheduled");function w(_){let P=_.XMLHttpRequest;if(!P)return;let L=P.prototype;function H(R){return R[e]}let z=L[Ne],$=L[Ze];if(!z){let R=_.XMLHttpRequestEventTarget;if(R){let b=R.prototype;z=b[Ne],$=b[Ze]}}let J="readystatechange",q="scheduled";function p(R){let b=R.data,D=b.target;D[g]=!1,D[y]=!1;let K=D[f];z||(z=D[Ne],$=D[Ze]),K&&$.call(D,J,K);let W=D[f]=()=>{if(D.readyState===D.DONE)if(!b.aborted&&D[g]&&R.state===q){let s=D[a.__symbol__("loadfalse")];if(D.status!==0&&s&&s.length>0){let i=R.invoke;R.invoke=function(){let r=D[a.__symbol__("loadfalse")];for(let E=0;Efunction(R,b){return R[c]=b[2]==!1,R[T]=b[1],V.apply(R,b)}),X="XMLHttpRequest.send",F=j("fetchTaskAborting"),k=j("fetchTaskScheduling"),U=ue(L,"send",()=>function(R,b){if(a.current[k]===!0||R[c])return U.apply(R,b);{let D={target:R,url:R[T],isPeriodic:!1,args:b,aborted:!1},K=xe(X,d,D,p,A);R&&R[y]===!0&&!D.aborted&&K.state===q&&K.invoke()}}),S=ue(L,"abort",()=>function(R,b){let D=H(R);if(D&&typeof D.type=="string"){if(D.cancelFn==null||D.data&&D.data.aborted)return;D.zone.cancelTask(D)}else if(a.current[F]===!0)return S.apply(R,b)})}}),t.__load_patch("geolocation",n=>{n.navigator&&n.navigator.geolocation&>(n.navigator.geolocation,["getCurrentPosition","watchPosition"])}),t.__load_patch("PromiseRejectionEvent",(n,a)=>{function e(c){return function(f){at(n,c).forEach(T=>{let y=n.PromiseRejectionEvent;if(y){let w=new y(c,{promise:f.promise,reason:f.rejection});T.invoke(w)}})}}n.PromiseRejectionEvent&&(a[j("unhandledPromiseRejectionHandler")]=e("unhandledrejection"),a[j("rejectionHandledHandler")]=e("rejectionhandled"))}),t.__load_patch("queueMicrotask",(n,a,e)=>{Pt(n,e)})}function Ot(t){t.__load_patch("ZoneAwarePromise",(n,a,e)=>{let c=Object.getOwnPropertyDescriptor,f=Object.defineProperty;function g(h){if(h&&h.toString===Object.prototype.toString){let l=h.constructor&&h.constructor.name;return(l||"")+": "+JSON.stringify(h)}return h?h.toString():Object.prototype.toString.call(h)}let T=e.symbol,y=[],w=n[T("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")]!==!1,_=T("Promise"),P=T("then"),L="__creationTrace__";e.onUnhandledError=h=>{if(e.showUncaughtError()){let l=h&&h.rejection;l?console.error("Unhandled Promise rejection:",l instanceof Error?l.message:l,"; Zone:",h.zone.name,"; Task:",h.task&&h.task.source,"; Value:",l,l instanceof Error?l.stack:void 0):console.error(h)}},e.microtaskDrainDone=()=>{for(;y.length;){let h=y.shift();try{h.zone.runGuarded(()=>{throw h.throwOriginal?h.rejection:h})}catch(l){z(l)}}};let H=T("unhandledPromiseRejectionHandler");function z(h){e.onUnhandledError(h);try{let l=a[H];typeof l=="function"&&l.call(this,h)}catch{}}function $(h){return h&&typeof h.then=="function"}function J(h){return h}function q(h){return M.reject(h)}let p=T("state"),d=T("value"),A=T("finally"),V=T("parentPromiseValue"),X=T("parentPromiseState"),F="Promise.then",k=null,U=!0,S=!1,R=0;function b(h,l){return o=>{try{I(h,l,o)}catch(u){I(h,!1,u)}}}let D=function(){let h=!1;return function(o){return function(){h||(h=!0,o.apply(null,arguments))}}},K="Promise resolved with itself",W=T("currentTaskTrace");function I(h,l,o){let u=D();if(h===o)throw new TypeError(K);if(h[p]===k){let v=null;try{(typeof o=="object"||typeof o=="function")&&(v=o&&o.then)}catch(C){return u(()=>{I(h,!1,C)})(),h}if(l!==S&&o instanceof M&&o.hasOwnProperty(p)&&o.hasOwnProperty(d)&&o[p]!==k)i(o),I(h,o[p],o[d]);else if(l!==S&&typeof v=="function")try{v.call(o,u(b(h,l)),u(b(h,!1)))}catch(C){u(()=>{I(h,!1,C)})()}else{h[p]=l;let C=h[d];if(h[d]=o,h[A]===A&&l===U&&(h[p]=h[X],h[d]=h[V]),l===S&&o instanceof Error){let m=a.currentTask&&a.currentTask.data&&a.currentTask.data[L];m&&f(o,W,{configurable:!0,enumerable:!1,writable:!0,value:m})}for(let m=0;m{try{let O=h[d],N=!!o&&A===o[A];N&&(o[V]=O,o[X]=C);let Z=l.run(m,void 0,N&&m!==q&&m!==J?[]:[O]);I(o,!0,Z)}catch(O){I(o,!1,O)}},o)}let E="function ZoneAwarePromise() { [native code] }",x=function(){},ee=n.AggregateError;class M{static toString(){return E}static resolve(l){return l instanceof M?l:I(new this(null),U,l)}static reject(l){return I(new this(null),S,l)}static withResolvers(){let l={};return l.promise=new M((o,u)=>{l.resolve=o,l.reject=u}),l}static any(l){if(!l||typeof l[Symbol.iterator]!="function")return Promise.reject(new ee([],"All promises were rejected"));let o=[],u=0;try{for(let m of l)u++,o.push(M.resolve(m))}catch{return Promise.reject(new ee([],"All promises were rejected"))}if(u===0)return Promise.reject(new ee([],"All promises were rejected"));let v=!1,C=[];return new M((m,O)=>{for(let N=0;N{v||(v=!0,m(Z))},Z=>{C.push(Z),u--,u===0&&(v=!0,O(new ee(C,"All promises were rejected")))})})}static race(l){let o,u,v=new this((O,N)=>{o=O,u=N});function C(O){o(O)}function m(O){u(O)}for(let O of l)$(O)||(O=this.resolve(O)),O.then(C,m);return v}static all(l){return M.allWithCallback(l)}static allSettled(l){return(this&&this.prototype instanceof M?this:M).allWithCallback(l,{thenCallback:u=>({status:"fulfilled",value:u}),errorCallback:u=>({status:"rejected",reason:u})})}static allWithCallback(l,o){let u,v,C=new this((Z,G)=>{u=Z,v=G}),m=2,O=0,N=[];for(let Z of l){$(Z)||(Z=this.resolve(Z));let G=O;try{Z.then(B=>{N[G]=o?o.thenCallback(B):B,m--,m===0&&u(N)},B=>{o?(N[G]=o.errorCallback(B),m--,m===0&&u(N)):v(B)})}catch(B){v(B)}m++,O++}return m-=2,m===0&&u(N),C}constructor(l){let o=this;if(!(o instanceof M))throw new Error("Must be an instanceof Promise.");o[p]=k,o[d]=[];try{let u=D();l&&l(u(b(o,U)),u(b(o,S)))}catch(u){I(o,!1,u)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return M}then(l,o){let u=this.constructor?.[Symbol.species];(!u||typeof u!="function")&&(u=this.constructor||M);let v=new u(x),C=a.current;return this[p]==k?this[d].push(C,v,l,o):r(this,C,v,l,o),v}catch(l){return this.then(null,l)}finally(l){let o=this.constructor?.[Symbol.species];(!o||typeof o!="function")&&(o=M);let u=new o(x);u[A]=A;let v=a.current;return this[p]==k?this[d].push(v,u,l,l):r(this,v,u,l,l),u}}M.resolve=M.resolve,M.reject=M.reject,M.race=M.race,M.all=M.all;let he=n[_]=n.Promise;n.Promise=M;let _e=T("thenPatched");function Q(h){let l=h.prototype,o=c(l,"then");if(o&&(o.writable===!1||!o.configurable))return;let u=l.then;l[P]=u,h.prototype.then=function(v,C){return new M((O,N)=>{u.call(this,O,N)}).then(v,C)},h[_e]=!0}e.patchThen=Q;function Te(h){return function(l,o){let u=h.apply(l,o);if(u instanceof M)return u;let v=u.constructor;return v[_e]||Q(v),u}}return he&&(Q(he),ue(n,"fetch",h=>Te(h))),Promise[a.__symbol__("uncaughtPromiseErrors")]=y,M})}function Nt(t){t.__load_patch("toString",n=>{let a=Function.prototype.toString,e=j("OriginalDelegate"),c=j("Promise"),f=j("Error"),g=function(){if(typeof this=="function"){let _=this[e];if(_)return typeof _=="function"?a.call(_):Object.prototype.toString.call(_);if(this===Promise){let P=n[c];if(P)return a.call(P)}if(this===Error){let P=n[f];if(P)return a.call(P)}}return a.call(this)};g[e]=a,Function.prototype.toString=g;let T=Object.prototype.toString,y="[object Promise]";Object.prototype.toString=function(){return typeof Promise=="function"&&this instanceof Promise?y:T.call(this)}})}function Zt(t,n,a,e,c){let f=Zone.__symbol__(e);if(n[f])return;let g=n[f]=n[e];n[e]=function(T,y,w){return y&&y.prototype&&c.forEach(function(_){let P=`${a}.${e}::`+_,L=y.prototype;try{if(L.hasOwnProperty(_)){let H=t.ObjectGetOwnPropertyDescriptor(L,_);H&&H.value?(H.value=t.wrapWithCurrentZone(H.value,P),t._redefineProperty(y.prototype,_,H)):L[_]&&(L[_]=t.wrapWithCurrentZone(L[_],P))}else L[_]&&(L[_]=t.wrapWithCurrentZone(L[_],P))}catch{}}),g.call(n,T,y,w)},t.attachOriginToPatched(n[e],g)}function Lt(t){t.__load_patch("util",(n,a,e)=>{let c=Ie(n);e.patchOnProperties=rt,e.patchMethod=ue,e.bindArguments=Fe,e.patchMacroTask=mt;let f=a.__symbol__("BLACK_LISTED_EVENTS"),g=a.__symbol__("UNPATCHED_EVENTS");n[g]&&(n[f]=n[g]),n[f]&&(a[f]=a[g]=n[f]),e.patchEventPrototype=bt,e.patchEventTarget=vt,e.isIEOrEdge=yt,e.ObjectDefineProperty=Me,e.ObjectGetOwnPropertyDescriptor=pe,e.ObjectCreate=_t,e.ArraySlice=Tt,e.patchClass=ye,e.wrapWithCurrentZone=Ve,e.filterProperties=lt,e.attachOriginToPatched=fe,e._redefineProperty=Object.defineProperty,e.patchCallbacks=Zt,e.getGlobalObjects=()=>({globalSources:ot,zoneSymbolEventNames:ne,eventNames:c,isBrowser:Ge,isMix:nt,isNode:De,TRUE_STR:ae,FALSE_STR:le,ZONE_SYMBOL_PREFIX:ve,ADD_EVENT_LISTENER_STR:je,REMOVE_EVENT_LISTENER_STR:He})})}function It(t){Ot(t),Nt(t),Lt(t)}var ut=dt();It(ut);St(ut); diff --git a/server/wwwroot/prerendered-routes.json b/server/wwwroot/prerendered-routes.json deleted file mode 100644 index 3226541..0000000 --- a/server/wwwroot/prerendered-routes.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "routes": {} -} \ No newline at end of file diff --git a/server/wwwroot/styles-5INURTSO.css b/server/wwwroot/styles-5INURTSO.css deleted file mode 100644 index e69de29..0000000 From e2d19a1c1dff23a71f1584fd663a96635cea4ae2 Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 09:39:42 +0100 Subject: [PATCH 04/15] ignore wwwroot --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 8a30d25..beb5095 100644 --- a/.gitignore +++ b/.gitignore @@ -396,3 +396,6 @@ FodyWeavers.xsd # JetBrains Rider *.sln.iml + +# wwwroot (as it gets recreated on every npm run build) +**/wwwroot/* From 1824bbf5f576381cec2522a24ed330d40eb00365 Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 09:48:22 +0100 Subject: [PATCH 05/15] Add include-hidden-files in azure-webapps-dotnet-core.yml + formatting --- .github/workflows/azure-webapps-dotnet-core.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/azure-webapps-dotnet-core.yml b/.github/workflows/azure-webapps-dotnet-core.yml index 3d977eb..a0eed38 100644 --- a/.github/workflows/azure-webapps-dotnet-core.yml +++ b/.github/workflows/azure-webapps-dotnet-core.yml @@ -1,14 +1,13 @@ - name: Build and deploy to Azure Web App env: - AZURE_WEBAPP_NAME: bff-angular-aspnetcore # set this to the name of your Azure Web App - AZURE_WEBAPP_PACKAGE_PATH: '.' # set this to the path to your web app project, defaults to the repository root - DOTNET_VERSION: '9.0' # set this to the .NET Core version to use + AZURE_WEBAPP_NAME: bff-angular-aspnetcore # set this to the name of your Azure Web App + AZURE_WEBAPP_PACKAGE_PATH: "." # set this to the path to your web app project, defaults to the repository root + DOTNET_VERSION: "9.0" # set this to the .NET Core version to use on: push: - branches: [ "deploy" ] + branches: ["deploy"] workflow_dispatch: permissions: @@ -56,6 +55,7 @@ jobs: with: name: .net-app path: ${{env.DOTNET_ROOT}}/myapp + include-hidden-files: true # otherwise .well-known folder is not included deploy: permissions: @@ -63,7 +63,7 @@ jobs: runs-on: ubuntu-latest needs: build environment: - name: 'Development' + name: "Development" url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} steps: From d38971e2e4c43bf977c5b9061e70ba78abdeea81 Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 09:55:42 +0100 Subject: [PATCH 06/15] minor --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e1005e0..5a57bff 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,9 @@ Configure the YARP reverse proxy to match the Angular CLI URL. This is only requ > In a real Angular project, the additional dev routes need to be added so that the **dev refresh** works! ```json - "UiDevServerUrl": "https://localhost:4201", -"ReverseProxy": { +{ + "UiDevServerUrl": "https://localhost:4201", + "ReverseProxy": { "Routes": { "assets": { "ClusterId": "cluster1", @@ -84,9 +85,7 @@ Configure the YARP reverse proxy to match the Angular CLI URL. This is only requ "Clusters": { "cluster1": { "HttpClient": { - "SslProtocols": [ - "Tls12" - ] + "SslProtocols": ["Tls12"] }, "Destinations": { "cluster1/destination1": { @@ -96,6 +95,7 @@ Configure the YARP reverse proxy to match the Angular CLI URL. This is only requ } } } +} ``` ## Setup Angular CLI From e3572014dbe84d64223a90d9ec5c14f58cd8c10e Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 09:55:57 +0100 Subject: [PATCH 07/15] minor --- server/appsettings.Development.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/server/appsettings.Development.json b/server/appsettings.Development.json index b5075b4..c29184b 100644 --- a/server/appsettings.Development.json +++ b/server/appsettings.Development.json @@ -73,9 +73,7 @@ "Clusters": { "cluster1": { "HttpClient": { - "SslProtocols": [ - "Tls12" - ] + "SslProtocols": ["Tls12"] }, "Destinations": { "cluster1/destination1": { From cbabae51352f6933ba4bef79400789afcafcef4b Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 09:56:13 +0100 Subject: [PATCH 08/15] Fix SonarQube Cloud finding --- server/Pages/Error.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/Pages/Error.cshtml b/server/Pages/Error.cshtml index f3b1bf9..43586d1 100644 --- a/server/Pages/Error.cshtml +++ b/server/Pages/Error.cshtml @@ -6,7 +6,7 @@ - + Error From f098835feeb50e8a17fd1d8410e94ae1d9ee6215 Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 09:58:12 +0100 Subject: [PATCH 09/15] Update UI README --- ui/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/README.md b/ui/README.md index 8e20fe2..1bed2b8 100644 --- a/ui/README.md +++ b/ui/README.md @@ -1,4 +1,4 @@ -# Ui +# UI This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.3.8. From 3d89f64dad5e1c1c6e398de7cb4ccef0a18a4bdc Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 10:39:38 +0100 Subject: [PATCH 10/15] Add security.txt --- README.md | 6 ++++++ ui/public/.well-known/security.txt | 4 ++++ 2 files changed, 10 insertions(+) create mode 100644 ui/public/.well-known/security.txt diff --git a/README.md b/README.md index 5a57bff..f88f006 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,12 @@ Configure the YARP reverse proxy to match the Angular CLI URL. This is only requ "Match": { "Path": "/{nomatterwhat}.js.map" } + }, + "wellknown": { + "ClusterId": "cluster1", + "Match": { + "Path": ".well-known/{**catch-all}" + } } }, "Clusters": { diff --git a/ui/public/.well-known/security.txt b/ui/public/.well-known/security.txt new file mode 100644 index 0000000..51dc22a --- /dev/null +++ b/ui/public/.well-known/security.txt @@ -0,0 +1,4 @@ +Contact: mailto:test@example.com +Expires: 2026-12-31T22:59:00.000Z + +For more details about security.txt, see https://securitytxt.org \ No newline at end of file From 2ae64d4a72a503fe0376c4ace74d81f1279122bd Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 10:39:56 +0100 Subject: [PATCH 11/15] Add security.txt --- server/appsettings.Development.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/server/appsettings.Development.json b/server/appsettings.Development.json index c29184b..8edf4f8 100644 --- a/server/appsettings.Development.json +++ b/server/appsettings.Development.json @@ -68,6 +68,12 @@ "Match": { "Path": "/{nomatterwhat}.js.map" } + }, + "wellknown": { + "ClusterId": "cluster1", + "Match": { + "Path": ".well-known/{**catch-all}" + } } }, "Clusters": { From c31354956e53eee64e153e09a48b335c5e362b4e Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 10:41:10 +0100 Subject: [PATCH 12/15] Add OpenAPI --- server/BffMicrosoftEntraID.Server.csproj | 1 + server/Program.cs | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/server/BffMicrosoftEntraID.Server.csproj b/server/BffMicrosoftEntraID.Server.csproj index af08e3c..696613b 100644 --- a/server/BffMicrosoftEntraID.Server.csproj +++ b/server/BffMicrosoftEntraID.Server.csproj @@ -10,6 +10,7 @@ + diff --git a/server/Program.cs b/server/Program.cs index 79c101c..74bbb47 100644 --- a/server/Program.cs +++ b/server/Program.cs @@ -7,6 +7,8 @@ serverOptions.AddServerHeader = false; }); +builder.Services.AddOpenApi(); + var services = builder.Services; var configuration = builder.Configuration; @@ -49,8 +51,8 @@ // If you use persistent cache, you do not require this. // You can also return the 403 with the required scopes, this needs special handling for ajax calls // The check is only for single scopes -services.Configure(CookieAuthenticationDefaults.AuthenticationScheme, - options => options.Events = new RejectSessionCookieWhenAccountNotInCacheEvents(initialScopes)); +services.Configure(CookieAuthenticationDefaults.AuthenticationScheme, + options => options.Events = new RejectSessionCookieWhenAccountNotInCacheEvents(initialScopes)); services.AddControllersWithViews(options => options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute())); @@ -74,6 +76,7 @@ app.UseDeveloperExceptionPage(); app.UseWebAssemblyDebugging(); + app.MapOpenApi(); } else { From f219c67f69739c893874b7a7064d017e145d5022 Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 10:43:06 +0100 Subject: [PATCH 13/15] Add bootstrap and fix CSRF --- server/Controllers/AccountController.cs | 1 - ui/angular.json | 9 +- ui/package.json | 6 +- ui/src/app/getCookie.ts | 8 +- ui/src/app/home.component.html | 104 ++++++++++++++++++------ ui/src/app/home.component.ts | 9 +- ui/src/app/secure-api.interceptor.ts | 4 +- ui/src/index.html | 2 +- ui/src/main.ts | 2 + ui/tsconfig.app.json | 4 +- 10 files changed, 109 insertions(+), 40 deletions(-) diff --git a/server/Controllers/AccountController.cs b/server/Controllers/AccountController.cs index 2d3c3d3..0b09bcf 100644 --- a/server/Controllers/AccountController.cs +++ b/server/Controllers/AccountController.cs @@ -23,7 +23,6 @@ public ActionResult Login(string? returnUrl, string? claimsChallenge) } // [ValidateAntiForgeryToken] // not needed explicitly due the the Auto global definition. - [IgnoreAntiforgeryToken] // need to apply this to the form post request [Authorize] [HttpPost("Logout")] public IActionResult Logout() diff --git a/ui/angular.json b/ui/angular.json index d8e019a..38b41fe 100644 --- a/ui/angular.json +++ b/ui/angular.json @@ -18,7 +18,7 @@ "browser": "" }, "browser": "src/main.ts", - "polyfills": ["zone.js"], + "polyfills": ["zone.js", "@angular/localize/init"], "tsConfig": "tsconfig.app.json", "assets": [ { @@ -26,7 +26,7 @@ "input": "public" } ], - "styles": ["src/styles.css"] + "styles": ["node_modules/bootstrap/dist/css/bootstrap.min.css", "src/styles.css"] }, "configurations": { "production": { @@ -75,7 +75,7 @@ "test": { "builder": "@angular/build:karma", "options": { - "polyfills": ["zone.js", "zone.js/testing"], + "polyfills": ["zone.js", "zone.js/testing", "@angular/localize/init"], "tsConfig": "tsconfig.spec.json", "assets": [ { @@ -88,5 +88,8 @@ } } } + }, + "cli": { + "analytics": false } } diff --git a/ui/package.json b/ui/package.json index 83a256f..999b05f 100644 --- a/ui/package.json +++ b/ui/package.json @@ -28,6 +28,9 @@ "@angular/forms": "^20.3.0", "@angular/platform-browser": "^20.3.0", "@angular/router": "^20.3.0", + "@ng-bootstrap/ng-bootstrap": "^19.0.1", + "@popperjs/core": "^2.11.8", + "bootstrap": "^5.3.6", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" @@ -36,6 +39,7 @@ "@angular/build": "^20.3.8", "@angular/cli": "^20.3.8", "@angular/compiler-cli": "^20.3.0", + "@angular/localize": "^20.3.0", "@types/jasmine": "~5.1.0", "jasmine-core": "~5.9.0", "karma": "~6.4.0", @@ -45,4 +49,4 @@ "karma-jasmine-html-reporter": "~2.1.0", "typescript": "~5.9.2" } -} \ No newline at end of file +} diff --git a/ui/src/app/getCookie.ts b/ui/src/app/getCookie.ts index dcd53f5..306de87 100644 --- a/ui/src/app/getCookie.ts +++ b/ui/src/app/getCookie.ts @@ -2,12 +2,12 @@ export const getCookie = (cookieName: string) => { const name = `${cookieName}=`; const decodedCookie = decodeURIComponent(document.cookie); const ca = decodedCookie.split(";"); - for (let i = 0; i < ca.length; i += 1) { - let c = ca[i]; - while (c.charAt(0) === " ") { + for (let i of ca) { + let c = i; + while (c.startsWith(" ")) { c = c.substring(1); } - if (c.indexOf(name) === 0) { + if (c.startsWith(name)) { return c.substring(name.length, c.length); } } diff --git a/ui/src/app/home.component.html b/ui/src/app/home.component.html index 97f93cb..62f7735 100644 --- a/ui/src/app/home.component.html +++ b/ui/src/app/home.component.html @@ -1,29 +1,83 @@ -

BFF Security architecture with Angular CLI

- -@if (userProfileClaims$ | async; as userProfileClaims) { - @if (userProfileClaims?.isAuthenticated) { -
- - + + +
BFF Security Architecture with Angular CLI
+ +
+
+
+
+
+
User Profile
+
{{ userProfileClaims$ | async | json }}
+        
+ Security TXT +
+
+
+
+
+
+
Direct data using API
+
{{ dataFromAzureProtectedApi$ | async | json }}
+        
+ @if (userProfileClaims$ | async; as userProfileClaims) { @if + (userProfileClaims?.isAuthenticated) { + + }} +
+
+
+
+
+
+
Microsoft Graph data using API
+
{{ dataGraphApiCalls$ | async | json }}
+        
+ @if (userProfileClaims$ | async; as userProfileClaims) { @if + (userProfileClaims?.isAuthenticated) { + + }} +
+
+
+
diff --git a/ui/src/app/home.component.ts b/ui/src/app/home.component.ts index d6f8c3d..c661ef4 100644 --- a/ui/src/app/home.component.ts +++ b/ui/src/app/home.component.ts @@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common'; import { HttpClient } from '@angular/common/http'; import { Component, OnInit, inject } from '@angular/core'; import { Observable } from 'rxjs'; +import { getCookie } from './getCookie'; interface Claim { type: string; @@ -31,6 +32,10 @@ export class HomeComponent implements OnInit { this.getUserProfile(); } + getXsrfToken(): string { + return getCookie('XSRF-RequestToken'); + } + getUserProfile() { this.userProfileClaims$ = this.httpClient.get( `${this.getCurrentHost()}/api/User` @@ -50,8 +55,8 @@ export class HomeComponent implements OnInit { } private getCurrentHost() { - const host = window.location.host; - const url = `${window.location.protocol}//${host}`; + const host = globalThis.location.host; + const url = `${globalThis.location.protocol}//${host}`; return url; } diff --git a/ui/src/app/secure-api.interceptor.ts b/ui/src/app/secure-api.interceptor.ts index 01c9b94..e6bd9c8 100644 --- a/ui/src/app/secure-api.interceptor.ts +++ b/ui/src/app/secure-api.interceptor.ts @@ -28,7 +28,7 @@ function getApiUrl() { } function getCurrentHost() { - const host = window.location.host; - const url = `${window.location.protocol}//${host}`; + const host = globalThis.location.host; + const url = `${globalThis.location.protocol}//${host}`; return url; } diff --git a/ui/src/index.html b/ui/src/index.html index f730a22..7414820 100644 --- a/ui/src/index.html +++ b/ui/src/index.html @@ -3,7 +3,7 @@ - ui + UI diff --git a/ui/src/main.ts b/ui/src/main.ts index 514c89a..60fe609 100644 --- a/ui/src/main.ts +++ b/ui/src/main.ts @@ -1,3 +1,5 @@ +/// + import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; diff --git a/ui/tsconfig.app.json b/ui/tsconfig.app.json index 264f459..81af780 100644 --- a/ui/tsconfig.app.json +++ b/ui/tsconfig.app.json @@ -4,7 +4,9 @@ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/app", - "types": [] + "types": [ + "@angular/localize" + ] }, "include": [ "src/**/*.ts" From 020a7bd5b3cab8fc45834a9bf6e3ac19198cfca4 Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 10:46:43 +0100 Subject: [PATCH 14/15] minor --- ui/package-lock.json | 229 +++++++++++++++++++++++++++++-------------- 1 file changed, 153 insertions(+), 76 deletions(-) diff --git a/ui/package-lock.json b/ui/package-lock.json index 995ca16..25e819f 100644 --- a/ui/package-lock.json +++ b/ui/package-lock.json @@ -14,6 +14,9 @@ "@angular/forms": "^20.3.0", "@angular/platform-browser": "^20.3.0", "@angular/router": "^20.3.0", + "@ng-bootstrap/ng-bootstrap": "^19.0.1", + "@popperjs/core": "^2.11.8", + "bootstrap": "^5.3.6", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" @@ -22,6 +25,7 @@ "@angular/build": "^20.3.8", "@angular/cli": "^20.3.8", "@angular/compiler-cli": "^20.3.0", + "@angular/localize": "^20.3.0", "@types/jasmine": "~5.1.0", "jasmine-core": "~5.9.0", "karma": "~6.4.0", @@ -231,7 +235,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -436,6 +439,7 @@ "version": "20.3.9", "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.9.tgz", "integrity": "sha512-PgKEnv30TxvpfTJ3d4h5LEjUHpKSYcs3Rc4OvK7p5A7waBkXzfqCBmy54nomzfcf4dlEjb6wSoXxlJbR7Y34Iw==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -451,6 +455,7 @@ "version": "20.3.9", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.9.tgz", "integrity": "sha512-nfzR/JpI77Yr4opRimnnTys//taZiibEco1ihV1C02eM4FDCQMOEp8WB+DT/yUESb6MRBlZe1MjeelwSfHlB7g==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -462,7 +467,7 @@ "version": "20.3.9", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.9.tgz", "integrity": "sha512-Fe7MIg2NWXoK+M4GtclxaYNoTdZX2U8f/Fd3N8zxtEMcRsvliJOnJ4oQtpx5kqMAuZVO4zY3wuIY1wAGXYCUbQ==", - "dev": true, + "peer": true, "dependencies": { "@babel/core": "7.28.3", "@jridgewell/sourcemap-codec": "^1.4.14", @@ -494,6 +499,7 @@ "version": "20.3.9", "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.9.tgz", "integrity": "sha512-zZb7wUexBIIUojr1helzXsL25ilAoASm8aPOjBNHPLYr4ndDjMD/wogmH/dA7EzuCdmZf30ZmZZpuX149WdrpA==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -518,6 +524,7 @@ "version": "20.3.9", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.9.tgz", "integrity": "sha512-jSlhU1IyuxxSYNN5Gg3oBb0nAqIl5Mwf1hywtkbyMay+3sENYGvBRseWp00R308isKe+n8bKi6hF54A1lhozzg==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -531,10 +538,36 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, + "node_modules/@angular/localize": { + "version": "20.3.9", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-20.3.9.tgz", + "integrity": "sha512-YtjsOIOUChGCb1XUNb0CLQQVFTQjxgAR8ihLVHQb0M1pJhhkTJGWJAvf3Qr1+1aLJjyAC4wve+zkj5Z9eR9A1A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/core": "7.28.3", + "@types/babel__core": "7.20.5", + "tinyglobby": "^0.2.12", + "yargs": "^18.0.0" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@angular/compiler": "20.3.9", + "@angular/compiler-cli": "20.3.9" + } + }, "node_modules/@angular/platform-browser": { "version": "20.3.9", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.9.tgz", "integrity": "sha512-q9uyNIKto3PmIh3q9/OX0HYN/SMYqCJ7MyQHBuF9Rel0vXi0gWyk2dgsWAl/tSTLlqHWtGZZ3rvJyxYQmxFo4w==", + "peer": true, "dependencies": { "tslib": "^2.3.0" }, @@ -573,7 +606,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", @@ -587,7 +619,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -596,7 +627,7 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", - "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -625,14 +656,12 @@ "node_modules/@babel/core/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -641,7 +670,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", - "dev": true, "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", @@ -669,7 +697,6 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", @@ -685,7 +712,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -694,7 +720,6 @@ "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -703,7 +728,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" @@ -716,7 +740,6 @@ "version": "7.28.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", @@ -745,7 +768,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -754,7 +776,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -763,7 +784,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -772,7 +792,6 @@ "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "dev": true, "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" @@ -785,7 +804,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", - "dev": true, "dependencies": { "@babel/types": "^7.28.5" }, @@ -800,7 +818,6 @@ "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", @@ -814,7 +831,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -832,7 +848,6 @@ "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", - "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" @@ -1490,6 +1505,7 @@ "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.2.tgz", "integrity": "sha512-nqhDw2ZcAUrKNPwhjinJny903bRhI0rQhiDz1LksjeRxqa36i3l75+4iXbOy0rlDpLJGxqtgoPavQjmmyS5UJw==", "dev": true, + "peer": true, "dependencies": { "@inquirer/checkbox": "^4.2.1", "@inquirer/confirm": "^5.1.14", @@ -1703,7 +1719,6 @@ "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" @@ -1713,7 +1728,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -1721,14 +1735,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2269,6 +2281,23 @@ "node": ">= 10" } }, + "node_modules/@ng-bootstrap/ng-bootstrap": { + "version": "19.0.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-19.0.1.tgz", + "integrity": "sha512-1lErAkwh0F+gWkzpiddViY4GfA9LVXkwLpgBsV9Mb3IC0zo6WNkY8WxCC+LqajirBTu20DCkZSqeRzrwaVLpZw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^20.0.0", + "@angular/core": "^20.0.0", + "@angular/forms": "^20.0.0", + "@angular/localize": "^20.0.0", + "@popperjs/core": "^2.11.8", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, "node_modules/@npmcli/agent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", @@ -2869,6 +2898,17 @@ "node": ">=14" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.52.3", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.3.tgz", @@ -3297,6 +3337,47 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, "node_modules/@types/cors": { "version": "2.8.19", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", @@ -3323,6 +3404,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.2.tgz", "integrity": "sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==", "dev": true, + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -3453,7 +3535,6 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, "engines": { "node": ">=12" }, @@ -3465,7 +3546,6 @@ "version": "6.2.3", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, "engines": { "node": ">=12" }, @@ -3517,7 +3597,6 @@ "version": "2.8.21", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.21.tgz", "integrity": "sha512-JU0h5APyQNsHOlAM7HnQnPToSDQoEBZqzu/YBlqDnEeymPnZDREeXJA3KBMQee+dKteAxZ2AtvQEvVYdZf241Q==", - "dev": true, "bin": { "baseline-browser-mapping": "dist/cli.js" } @@ -3591,6 +3670,25 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, + "node_modules/bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, "node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -3617,7 +3715,6 @@ "version": "4.27.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.27.0.tgz", "integrity": "sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==", - "dev": true, "funding": [ { "type": "opencollective", @@ -3632,6 +3729,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.19", "caniuse-lite": "^1.0.30001751", @@ -3801,7 +3899,6 @@ "version": "1.0.30001751", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001751.tgz", "integrity": "sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==", - "dev": true, "funding": [ { "type": "opencollective", @@ -3839,7 +3936,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, "dependencies": { "readdirp": "^4.0.1" }, @@ -3915,7 +4011,6 @@ "version": "9.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", - "dev": true, "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", @@ -3929,7 +4024,6 @@ "version": "9.0.2", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "dev": true, "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", @@ -4074,8 +4168,7 @@ "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/cookie": { "version": "0.7.2", @@ -4169,7 +4262,6 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, "dependencies": { "ms": "^2.1.3" }, @@ -4313,14 +4405,12 @@ "node_modules/electron-to-chromium": { "version": "1.5.243", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.243.tgz", - "integrity": "sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g==", - "dev": true + "integrity": "sha512-ZCphxFW3Q1TVhcgS9blfut1PX8lusVi2SvXQgmEEnK4TCmE1JhH2JkjJN+DNt0pJJwfBri5AROBnz2b/C+YU9g==" }, "node_modules/emoji-regex": { "version": "10.6.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==" }, "node_modules/encodeurl": { "version": "2.0.0", @@ -4572,7 +4662,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, "engines": { "node": ">=6" } @@ -4630,6 +4719,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "dev": true, + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", @@ -4720,7 +4810,6 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, "engines": { "node": ">=12.0.0" }, @@ -4881,7 +4970,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -4890,7 +4978,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -4899,7 +4986,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", - "dev": true, "engines": { "node": ">=18" }, @@ -5509,19 +5595,18 @@ "version": "5.9.0", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.9.0.tgz", "integrity": "sha512-OMUvF1iI6+gSRYOhMrH4QYothVLN9C3EJ6wm4g7zLJlnaTl8zbaPOr0bTw70l7QxkoM7sVFOWo83u9B2Fe2Zng==", - "dev": true + "dev": true, + "peer": true }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -5548,7 +5633,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -5585,6 +5669,7 @@ "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, + "peer": true, "dependencies": { "@colors/colors": "1.5.0", "body-parser": "^1.19.0", @@ -6019,6 +6104,7 @@ "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.1.tgz", "integrity": "sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==", "dev": true, + "peer": true, "dependencies": { "cli-truncate": "^4.0.0", "colorette": "^2.0.20", @@ -6202,7 +6288,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -6540,8 +6625,7 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/msgpackr": { "version": "1.11.5", @@ -6718,8 +6802,7 @@ "node_modules/node-releases": { "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "dev": true + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==" }, "node_modules/nopt": { "version": "8.1.0", @@ -7226,14 +7309,12 @@ "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, "engines": { "node": ">=12" }, @@ -7389,7 +7470,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, "engines": { "node": ">= 14.18.0" }, @@ -7401,8 +7481,7 @@ "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "dev": true + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" }, "node_modules/require-directory": { "version": "2.1.1", @@ -7556,6 +7635,7 @@ "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -7608,6 +7688,7 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", "dev": true, + "peer": true, "dependencies": { "chokidar": "^4.0.0", "immutable": "^5.0.2", @@ -7627,7 +7708,6 @@ "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, "bin": { "semver": "bin/semver.js" }, @@ -8109,7 +8189,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -8177,7 +8256,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", - "dev": true, "dependencies": { "ansi-regex": "^6.0.1" }, @@ -8331,7 +8409,6 @@ "version": "0.2.14", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "dev": true, "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" @@ -8376,7 +8453,8 @@ "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "peer": true }, "node_modules/tuf-js": { "version": "3.1.0", @@ -8410,7 +8488,8 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, + "devOptional": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -8497,7 +8576,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", - "dev": true, "funding": [ { "type": "opencollective", @@ -8583,6 +8661,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.11.tgz", "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", "dev": true, + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -8905,7 +8984,6 @@ "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "engines": { "node": ">=10" } @@ -8913,14 +8991,12 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yargs": { "version": "18.0.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", - "dev": true, "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", @@ -8937,7 +9013,6 @@ "version": "22.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", - "dev": true, "engines": { "node": "^20.19.0 || ^22.12.0 || >=23" } @@ -8959,6 +9034,7 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "dev": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -8975,7 +9051,8 @@ "node_modules/zone.js": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", - "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==" + "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==", + "peer": true } } } From 8ac1d39b2f02fdfe0b8dba0f367b6c5b3c8b738d Mon Sep 17 00:00:00 2001 From: Marc Rufer Date: Mon, 3 Nov 2025 11:10:35 +0100 Subject: [PATCH 15/15] Update server/Pages/Error.cshtml --- server/Pages/Error.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/Pages/Error.cshtml b/server/Pages/Error.cshtml index 43586d1..a6fb78a 100644 --- a/server/Pages/Error.cshtml +++ b/server/Pages/Error.cshtml @@ -6,7 +6,7 @@ - + Error