diff --git a/README.md b/README.md index 564d8775ac3f97ae39246d81cc4ab269ceae9602..c8f1b2503fd347b06d142dd48d8e19c2c278cc91 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ colorFrom: blue colorTo: purple sdk: static app_file: dist/gramm-ai/browser/index.html -app_build_command: "npm ci && npm run build -- --configuration=production" + pinned: false --- diff --git a/dist/gramm-ai/3rdpartylicenses.txt b/dist/gramm-ai/3rdpartylicenses.txt new file mode 100644 index 0000000000000000000000000000000000000000..cbbaf951caf84a29012bbf47f6e871fd650d5bc9 --- /dev/null +++ b/dist/gramm-ai/3rdpartylicenses.txt @@ -0,0 +1,557 @@ + +-------------------------------------------------------------------------------- +Package: @angular/core +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: rxjs +License: "Apache-2.0" + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +-------------------------------------------------------------------------------- +Package: tslib +License: "0BSD" + +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +-------------------------------------------------------------------------------- +Package: @angular/common +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/platform-browser +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/forms +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/router +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: @angular/cdk +License: "MIT" + +The MIT License + +Copyright (c) 2024 Google LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @angular/material +License: "MIT" + +The MIT License + +Copyright (c) 2024 Google LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @angular/animations +License: "MIT" + + +-------------------------------------------------------------------------------- +Package: wavesurfer.js +License: "BSD-3-Clause" + +BSD 3-Clause License + +Copyright (c) 2012-2023, katspaugh and contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +-------------------------------------------------------------------------------- +Package: canvas-confetti +License: "ISC" + +ISC License + +Copyright (c) 2020, Kiril Vatev + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +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: zone.js +License: "MIT" + +The MIT License + +Copyright (c) 2010-2024 Google LLC. https://angular.io/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +-------------------------------------------------------------------------------- +Package: @fortawesome/fontawesome-free +License: "(CC-BY-4.0 AND OFL-1.1 AND MIT)" + +Fonticons, Inc. (https://fontawesome.com) + +-------------------------------------------------------------------------------- + +Font Awesome Free License + +Font Awesome Free is free, open source, and GPL friendly. You can use it for +commercial projects, open source projects, or really almost whatever you want. +Full Font Awesome Free license: https://fontawesome.com/license/free. + +-------------------------------------------------------------------------------- + +# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) + +The Font Awesome Free download is licensed under a Creative Commons +Attribution 4.0 International License and applies to all icons packaged +as SVG and JS file types. + +-------------------------------------------------------------------------------- + +# Fonts: SIL OFL 1.1 License + +In the Font Awesome Free download, the SIL OFL license applies to all icons +packaged as web and desktop font files. + +Copyright (c) 2024 Fonticons, Inc. (https://fontawesome.com) +with Reserved Font Name: "Font Awesome". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +SIL OPEN FONT LICENSE +Version 1.1 - 26 February 2007 + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting — in part or in whole — any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +-------------------------------------------------------------------------------- + +# Code: MIT License (https://opensource.org/licenses/MIT) + +In the Font Awesome Free download, the MIT license applies to all non-font and +non-icon files. + +Copyright 2024 Fonticons, Inc. + +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. + +-------------------------------------------------------------------------------- + +# Attribution + +Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font +Awesome Free files already contain embedded comments with sufficient +attribution, so you shouldn't need to do anything additional when using these +files normally. + +We've kept attribution comments terse, so we ask that you do not actively work +to remove them from files, especially code. They're a great way for folks to +learn about Font Awesome. + +-------------------------------------------------------------------------------- + +# Brand Icons + +All brand icons are trademarks of their respective owners. The use of these +trademarks does not indicate endorsement of the trademark holder by Font +Awesome, nor vice versa. **Please do not use brand logos for any purpose except +to represent the company, product, or service to which they refer.** + +-------------------------------------------------------------------------------- diff --git a/dist/gramm-ai/browser/assets/audio/apple.mp3 b/dist/gramm-ai/browser/assets/audio/apple.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..45f4de88a7d0322609c341b1005c3d4b6d40fe89 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/apple.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36b263be26c27afa3d24960fc53ce9d6b5363714dda95e22b230ce8eb8c607c9 +size 12408 diff --git a/dist/gramm-ai/browser/assets/audio/ball.mp3 b/dist/gramm-ai/browser/assets/audio/ball.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..26fdca27583deb2a3256358383aec3cbcf41af10 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/ball.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e04526715ad4a8ec31f85eed6db1c377bf669e00a9bd2d551d19daec5460418f +size 10392 diff --git a/dist/gramm-ai/browser/assets/audio/cat.mp3 b/dist/gramm-ai/browser/assets/audio/cat.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..cce3f4f4c9f43595fba58dc5f80c5f93fdaa9e14 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/cat.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f28d8a06857382b8e7cd0b51712696ecb17d9fcdfd2a6928afb7b199b081e23e +size 12912 diff --git a/dist/gramm-ai/browser/assets/audio/dog.mp3 b/dist/gramm-ai/browser/assets/audio/dog.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8972e2e76c564eaf21cc5c3130d43367bf09dc25 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/dog.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:988790d50de59b4422a425aa3ee3bc0b38e5e03ec14354d525a57cd313f6a23a +size 11184 diff --git a/dist/gramm-ai/browser/assets/audio/egg.mp3 b/dist/gramm-ai/browser/assets/audio/egg.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e51e423e4a836604867d212a3f794561c07e53fb --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/egg.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f50aecc9e38956f68572510ee93c00223f4a3f684125b4580635f13963ebaa8f +size 9936 diff --git a/dist/gramm-ai/browser/assets/audio/fish.mp3 b/dist/gramm-ai/browser/assets/audio/fish.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..434b8db0b51c52112c57293efdbf188d65c6b487 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/fish.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bb0887b2bc028a2d454e6bd9bf4f3c80a5dc6bccfd9ea1417b3693f3424da24 +size 9456 diff --git a/dist/gramm-ai/browser/assets/audio/grapes.mp3 b/dist/gramm-ai/browser/assets/audio/grapes.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..29a73b432c2f70c16316992bc1b4b9c584bc81e3 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/grapes.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa8a75e85c457f948c0b810c16665667c99c095c71224c267f222b5dceabdb2f +size 13008 diff --git a/dist/gramm-ai/browser/assets/audio/hat.mp3 b/dist/gramm-ai/browser/assets/audio/hat.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6fbab27690bed5e014a227b893dc2841d0cfbd72 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/hat.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2a6e1d6d94fdbfdf3615e352715c652d72bc104fa3ff5ce7eb20b987b1a5468 +size 10800 diff --git a/dist/gramm-ai/browser/assets/audio/ice_cream.mp3 b/dist/gramm-ai/browser/assets/audio/ice_cream.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a7c52aef9acf54fe15f1cf8e76132ed7ad99443c --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/ice_cream.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33cf0de8e2225a9eddfc0083c9a50e1f3ad5cf78a1b937d04694a250ed62ac83 +size 14784 diff --git a/dist/gramm-ai/browser/assets/audio/jar.mp3 b/dist/gramm-ai/browser/assets/audio/jar.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1b1e291dfec1072f8bc527630f608f0725741075 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/jar.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cbb5f8dcc21cc4c78a3e2c61a6bb1a8f16eb2ed6e656a2b5b5c606a577d68cf +size 12432 diff --git a/dist/gramm-ai/browser/assets/audio/kite.mp3 b/dist/gramm-ai/browser/assets/audio/kite.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..394fff4882ad8349e9dd48a3a76ab6b1aaee0c0c --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/kite.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a1f086fbe0b46c4281d49cfdc4497259322f37c35aebee88e7ecba8bc507d47 +size 12216 diff --git a/dist/gramm-ai/browser/assets/audio/lion.mp3 b/dist/gramm-ai/browser/assets/audio/lion.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..bdba5c6b5651e9516617e3d77131d590d9e2ac01 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/lion.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97e8dfeb933de825ddccb7ab23616f0544fb1bf13dfbe7174d79dcd5769c3493 +size 14112 diff --git a/dist/gramm-ai/browser/assets/audio/moon.mp3 b/dist/gramm-ai/browser/assets/audio/moon.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5b9ed229e8d72988fbe2948bb7d9a46da7d1c6b9 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/moon.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08b408ab5d8d19c22a4ff80da95e954553473ace618347e67a65525a1296743d +size 11016 diff --git a/dist/gramm-ai/browser/assets/audio/nest.mp3 b/dist/gramm-ai/browser/assets/audio/nest.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f3e0d0eec3c9661d93f9c2249097c593fd76022f --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/nest.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a6d84024ed543fc47619bce66d258cc9d89ed86d0960c6b02b3ff984947d2cf +size 11376 diff --git a/dist/gramm-ai/browser/assets/audio/orange.mp3 b/dist/gramm-ai/browser/assets/audio/orange.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f9cb6d233dee82e2aedc0282b4c048f6ba3d0cdb --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/orange.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28e970be8938cdae9ba382519ad8df8f59006474ae0dccc3a1026537b6916f6a +size 15408 diff --git a/dist/gramm-ai/browser/assets/audio/pig.mp3 b/dist/gramm-ai/browser/assets/audio/pig.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fa446d1a2666e159f60f9cae9a95950b98b321c2 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/pig.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b73eb1b22b1e2615a6336c813a974ddc71e6e9e047453a92b5ab7c1714318007 +size 9504 diff --git a/dist/gramm-ai/browser/assets/audio/queen.mp3 b/dist/gramm-ai/browser/assets/audio/queen.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..dbdea523b86fdb986bf7df00d385b27aac52be0e --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/queen.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f822d6e09e355dd10e6ec9a86567da8c8865a4e9207711dc6c6f91fe73a0fae4 +size 11568 diff --git a/dist/gramm-ai/browser/assets/audio/rabbit.mp3 b/dist/gramm-ai/browser/assets/audio/rabbit.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..21ab33c7e1703f027a91ae68fd912a2dc6113e76 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/rabbit.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fce73c31d372c8e310bc5d3e47bb973b203410a3b599bb6322ecdf2fd096672 +size 10776 diff --git a/dist/gramm-ai/browser/assets/audio/sun.mp3 b/dist/gramm-ai/browser/assets/audio/sun.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..2ba4393869090be4df53d76d5b50efd512ab8307 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/sun.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4e405e94eb7a7a9ce89b7b69fca109ccceac1b41c01fc165d882a8a9f1e7a8e +size 11904 diff --git a/dist/gramm-ai/browser/assets/audio/tree.mp3 b/dist/gramm-ai/browser/assets/audio/tree.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..653a769b0cfea077ed8a90cd36c9b97c96a4abe2 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/tree.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9159be7faa03940ac783d589827efbf9666d3daf15e67a5953b7af8db2ac9703 +size 13008 diff --git a/dist/gramm-ai/browser/assets/audio/umbrella.mp3 b/dist/gramm-ai/browser/assets/audio/umbrella.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..e40e144c52608102dfebf4fb8e511535a77a771c --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/umbrella.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec6c59c06372515022b65731f2f22804b469d342e8d477d1b7c13a030ec33650 +size 14472 diff --git a/dist/gramm-ai/browser/assets/audio/van.mp3 b/dist/gramm-ai/browser/assets/audio/van.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..24918820ba67b8b4ffd8ea8af098c9761bf143eb --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/van.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c480b9dccbe19e3476b6eb2bd146de00d497c9a791f15ce9115536eb740f915 +size 10920 diff --git a/dist/gramm-ai/browser/assets/audio/watch.mp3 b/dist/gramm-ai/browser/assets/audio/watch.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..0ce2e8868365e4638cfd3eafc87868dfcaba4177 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/watch.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ce263f5a14dc765359bd7190d1c1c08e865cc0d8a7c731246a5c012753a4ed4 +size 14256 diff --git a/dist/gramm-ai/browser/assets/audio/xylophone.mp3 b/dist/gramm-ai/browser/assets/audio/xylophone.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..31ccf2d08a1dea161bd87958b7e58323505064ca --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/xylophone.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:153cccd194813d091e9982995deb4531c3a8c1fc231f18426c6582a6b38dac93 +size 17904 diff --git a/dist/gramm-ai/browser/assets/audio/yarn.mp3 b/dist/gramm-ai/browser/assets/audio/yarn.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1dcdc128f095460402e9a72203401f735e6d4aba --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/yarn.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c42885de2f656500a16c9b72ee84558470df5a05237e3d5304b27075c7a2bcbf +size 13392 diff --git a/dist/gramm-ai/browser/assets/audio/zebra.mp3 b/dist/gramm-ai/browser/assets/audio/zebra.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..2c4f3ba964341aaaa70a49e386488488035063d5 --- /dev/null +++ b/dist/gramm-ai/browser/assets/audio/zebra.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eecafd487e7f1c96e5a86e1f41430ff7d32e96cd26aecbfd4454b47969cf3292 +size 15096 diff --git a/dist/gramm-ai/browser/assets/favicon.png b/dist/gramm-ai/browser/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..17d374e17b9161140969ccb89c9597eb6244aa99 --- /dev/null +++ b/dist/gramm-ai/browser/assets/favicon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2391d89651c3aed49cd5dc5f6cf851cf8fafebe4aa3197c878f48d72a310c117 +size 2489 diff --git a/dist/gramm-ai/browser/assets/font/Amonk_Outline.ttf b/dist/gramm-ai/browser/assets/font/Amonk_Outline.ttf new file mode 100644 index 0000000000000000000000000000000000000000..99bc3494b38bf7640dad65a2e01c3ed2b23b7a1a --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/Amonk_Outline.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5571a943a81cc61f13c85608828f4e831dc971999b14cc31d4888b6a5f1c98ba +size 140868 diff --git a/dist/gramm-ai/browser/assets/font/AzoSans2_Bold.otf b/dist/gramm-ai/browser/assets/font/AzoSans2_Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..922133b5f049b1a5d93a54fc2e37189272c882ec Binary files /dev/null and b/dist/gramm-ai/browser/assets/font/AzoSans2_Bold.otf differ diff --git a/dist/gramm-ai/browser/assets/font/Extra Beige.jpg b/dist/gramm-ai/browser/assets/font/Extra Beige.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d8cabbcfa7dd3471c81125944a297d2fd24b88fc --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/Extra Beige.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6126485cf8051ce840be5e0dc54b22274cf578ba455e25cb6d0090a9196f86a +size 259709 diff --git a/dist/gramm-ai/browser/assets/font/Extra Beige.otf b/dist/gramm-ai/browser/assets/font/Extra Beige.otf new file mode 100644 index 0000000000000000000000000000000000000000..9c93e5520d6f757cf6788c9c2701f82abac3ae70 Binary files /dev/null and b/dist/gramm-ai/browser/assets/font/Extra Beige.otf differ diff --git a/dist/gramm-ai/browser/assets/font/Extra Beige.ttf b/dist/gramm-ai/browser/assets/font/Extra Beige.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4a80f84078029e8e15413d5edb3818146a646ec4 --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/Extra Beige.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9115ed503458351b44bad6beff89db65ee3e11e7f09c2f59aef6fb9338192167 +size 30784 diff --git a/dist/gramm-ai/browser/assets/font/More Info.txt b/dist/gramm-ai/browser/assets/font/More Info.txt new file mode 100644 index 0000000000000000000000000000000000000000..43fadac9649881b4382fcea86281d286638dfe21 --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/More Info.txt @@ -0,0 +1,20 @@ +If you want the full version and license for commercial use, +you can purchase here : + +https://fontkong.com/product/amonk/ + +File Font Version : + +1. Amonk.otf +2. Amonk.ttf +3. Amonk.woff +4. Amonk Blood.otf +5. Amonk Blood.ttf +6. Amonk Blood.woff +7. Amonk Outline.otf +8. Amonk Outline.ttf +9. Amonk Outline.woff +10. Amonk Ice-SVG.otf +11. Amonk Ice-SVG.ttf +12. Amonk Ice-SVG.woff + diff --git a/dist/gramm-ai/browser/assets/font/Raleway.ttf b/dist/gramm-ai/browser/assets/font/Raleway.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c931f3f964a404451633c81bb63c22778033ee54 --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/Raleway.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d92beb04211a805e375a09623508986cb000846ae120c3c8b817480dc0f7e8f1 +size 98472 diff --git a/dist/gramm-ai/browser/assets/font/Raleway.woff2 b/dist/gramm-ai/browser/assets/font/Raleway.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..189015b9e6449d6294b9b8133ca0c2378e3411c5 --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/Raleway.woff2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47d477915fa5912616e2dc5df8c5780f9202671678cf275472bd39f3381c0098 +size 48336 diff --git a/dist/gramm-ai/browser/assets/font/RetroSigned.ttf b/dist/gramm-ai/browser/assets/font/RetroSigned.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1a68a31a2e08f8e37496401aa0229b60deaf310d --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/RetroSigned.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a98bc74eb06b8c519d11125c601199d60594e51ba148c0c86c5511a4547f123 +size 726760 diff --git a/dist/gramm-ai/browser/assets/font/Super Cartoon.ttf b/dist/gramm-ai/browser/assets/font/Super Cartoon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..eb802fdb4cd8980c8d0b9b05278c05e663e21e8b --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/Super Cartoon.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7dfd44abf83aa6b91004efe681d5464093fe438d36ef1045741a514b8f53e71 +size 80436 diff --git a/dist/gramm-ai/browser/assets/font/TrueNorthTexturesW01-Rg.ttf b/dist/gramm-ai/browser/assets/font/TrueNorthTexturesW01-Rg.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ca6e75650ca7e87a93e4a2ee97214652f049284c --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/TrueNorthTexturesW01-Rg.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2a73849017a4d63dd8e6d43ef207c41250ebf641ec953ec5d0226cde42334c8 +size 671984 diff --git a/dist/gramm-ai/browser/assets/font/info.txt b/dist/gramm-ai/browser/assets/font/info.txt new file mode 100644 index 0000000000000000000000000000000000000000..6e6b3fe2cc777d6bcb066b3c9e94a8a2c537eb79 --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/info.txt @@ -0,0 +1,2 @@ +license: Freeware, Non-Commercial +link: https://www.fontspace.com/retro-signed-font-f113376 \ No newline at end of file diff --git a/dist/gramm-ai/browser/assets/font/retro-signed-font.zip b/dist/gramm-ai/browser/assets/font/retro-signed-font.zip new file mode 100644 index 0000000000000000000000000000000000000000..039c97c99125a009c8275875d9d10c8665f647de --- /dev/null +++ b/dist/gramm-ai/browser/assets/font/retro-signed-font.zip @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab5345df325959724c3c33bf6c5a249bb411481009b5ce05f7d08dd518454109 +size 199002 diff --git a/dist/gramm-ai/browser/assets/images/back.png b/dist/gramm-ai/browser/assets/images/back.png new file mode 100644 index 0000000000000000000000000000000000000000..8c31da4c08984b08b8a475b32d473ce9f4b1fb65 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/back.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8749a225d6220db8f5f1c986aa293de98ee58e29eadc55ffbe6715775aa6c7be +size 1369808 diff --git a/dist/gramm-ai/browser/assets/images/chat/breadcrumbs.png b/dist/gramm-ai/browser/assets/images/chat/breadcrumbs.png new file mode 100644 index 0000000000000000000000000000000000000000..632acfe323e3ef176e5534fc2041126f1df655bc --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/breadcrumbs.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a6f8d6f807010d905ec8d48c58d349da74fa1ab6208d26cd13de16a9b8e7956 +size 4739 diff --git a/dist/gramm-ai/browser/assets/images/chat/chatbg.png b/dist/gramm-ai/browser/assets/images/chat/chatbg.png new file mode 100644 index 0000000000000000000000000000000000000000..6b24d90d14b89e40ac6033743e5d1b081bb8173d --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/chatbg.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d0d8dcc2946d0203c57342145c90b74a5a7188a30a4d01c191784b2cfe73cff +size 520542 diff --git a/dist/gramm-ai/browser/assets/images/chat/control.png b/dist/gramm-ai/browser/assets/images/chat/control.png new file mode 100644 index 0000000000000000000000000000000000000000..40d032a345a53c986d1c2230244cad7de05230ea --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/control.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d37166a1708f4d6e27babc1b9bc408c505e5b79e27a7a81ef0ef29f1680ac65 +size 5889 diff --git a/dist/gramm-ai/browser/assets/images/chat/copy-white.png b/dist/gramm-ai/browser/assets/images/chat/copy-white.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9115aa79f4bb7408e29a83a1bc3006804324e0 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/copy-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbd673ef5209ac3475954a0d80ca3596880ce2b0057ae322b5a6b3f66f1ab41c +size 6957 diff --git a/dist/gramm-ai/browser/assets/images/chat/copy.png b/dist/gramm-ai/browser/assets/images/chat/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..9318cbce815ed1562ce80f9352908d06e6436bb4 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/copy.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77fe27a1e952d832e094cde1044070d694963b2540256fbbe2af036ceaa526b6 +size 6500 diff --git a/dist/gramm-ai/browser/assets/images/chat/cross.png b/dist/gramm-ai/browser/assets/images/chat/cross.png new file mode 100644 index 0000000000000000000000000000000000000000..787bd2cc7ee633e52c8ec1e3d5ceaa902d3515de --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/cross.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14fe82ba4882f3914c1c27f056184306e9d00b977e41cdc6787358323575d9af +size 7863 diff --git a/dist/gramm-ai/browser/assets/images/chat/info.png b/dist/gramm-ai/browser/assets/images/chat/info.png new file mode 100644 index 0000000000000000000000000000000000000000..d6a0f082cb60f62c149e5386ca24753f27245228 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/info.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:188eeae8bcbdd76f6b6228accd608bc675e22ba6d0dbb69d216f9462aa672603 +size 28799 diff --git a/dist/gramm-ai/browser/assets/images/chat/internet.png b/dist/gramm-ai/browser/assets/images/chat/internet.png new file mode 100644 index 0000000000000000000000000000000000000000..a94629a929ac173cdc121d0da42b7c0f6045e845 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/internet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fc57c564528efd124c6655bae9ed601f27d6a09ce651e666ab9c697d77c1f4d +size 35193 diff --git a/dist/gramm-ai/browser/assets/images/chat/lion.png b/dist/gramm-ai/browser/assets/images/chat/lion.png new file mode 100644 index 0000000000000000000000000000000000000000..bda3a2bc53bac52bff9f155823be997ec538b04e --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/lion.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd8aa4627ea6c6b89d20f5ccb87f0431f61ac71faef8ab71a2c17d7e19bffe58 +size 141854 diff --git a/dist/gramm-ai/browser/assets/images/chat/loading-spinner.gif b/dist/gramm-ai/browser/assets/images/chat/loading-spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc84bbb1e8d937d0ead25b3146f19c512f5824b7 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/loading-spinner.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdf995f1947cc28fd9d8f86d71d223b9b7e08657cff8b155917e3d31a435a28f +size 19705 diff --git a/dist/gramm-ai/browser/assets/images/chat/mic.png b/dist/gramm-ai/browser/assets/images/chat/mic.png new file mode 100644 index 0000000000000000000000000000000000000000..1e2d88b76f33fbab8b06d74b4862e20f6da9767f --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/mic.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9508a2126b6376388877e634f853716ddaa88ec3f5911ca3445a9163ad7ea2e3 +size 34421 diff --git a/dist/gramm-ai/browser/assets/images/chat/microphone-icon.png b/dist/gramm-ai/browser/assets/images/chat/microphone-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..aa5eb93e48c8b79a4453206d352ddbd8f85caf0b --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/microphone-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a38d8a8216a3c391fd1bdc983ec0e2bee95d9dc230e7e531262b5f0a95ebd161 +size 21779 diff --git a/dist/gramm-ai/browser/assets/images/chat/natasha.png b/dist/gramm-ai/browser/assets/images/chat/natasha.png new file mode 100644 index 0000000000000000000000000000000000000000..ffea6a57188dab4680d3022c4ad4fc01bd1248e6 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/natasha.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5a65b6e8ba0d5914b1d240d2b48018805f39ca7ce65010943fbae775c551c14 +size 1290646 diff --git a/dist/gramm-ai/browser/assets/images/chat/no-video-white.png b/dist/gramm-ai/browser/assets/images/chat/no-video-white.png new file mode 100644 index 0000000000000000000000000000000000000000..e547d54add8e9736bc8e05a312456b747f662831 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/no-video-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aee3178627b652f1e34b01c34249efe1a156cdc5944f88a71e4ff13d6395185d +size 7841 diff --git a/dist/gramm-ai/browser/assets/images/chat/no-video.png b/dist/gramm-ai/browser/assets/images/chat/no-video.png new file mode 100644 index 0000000000000000000000000000000000000000..665d6fd32ff2663ab25f9190c05ff3f986722b62 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/no-video.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6433c0dedb7dee13adf3e3cc08a87c4ba1d7cc0b9406a44c448bdf8dac90cac +size 7603 diff --git a/dist/gramm-ai/browser/assets/images/chat/pause-icon.png b/dist/gramm-ai/browser/assets/images/chat/pause-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c94897b4b8bb2be320e7a50e91977fb5cf3dfb94 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/pause-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c97de4a30ed36a3e9fe5185cdcf5ffaa02c00effbcaa2c1569432c21e10addfc +size 4585 diff --git a/dist/gramm-ai/browser/assets/images/chat/rabbit.png b/dist/gramm-ai/browser/assets/images/chat/rabbit.png new file mode 100644 index 0000000000000000000000000000000000000000..8030dde5cf39fed5e143f98f0fd96a5003fefa07 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/rabbit.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2f6c2a5907c2fc15e8b807b793d1e6222d2b305c4d7b754933cb923de827da7 +size 188584 diff --git a/dist/gramm-ai/browser/assets/images/chat/resume-icon.png b/dist/gramm-ai/browser/assets/images/chat/resume-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f9214b2c804abe51dfcd4c4a9bf0bba388ecc36b --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/resume-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d4edfeac774bb9881fd1c02b145465d240a04666ec2fd282a3cee4c889dd730 +size 6372 diff --git a/dist/gramm-ai/browser/assets/images/chat/send-icon.png b/dist/gramm-ai/browser/assets/images/chat/send-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..21c97b19a7c0d5f44e561231e916d14fd189b2e0 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/send-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae307ee408cf741b95f48c3527472fdabab691d932d00da8f7e4f736a4573527 +size 10572 diff --git a/dist/gramm-ai/browser/assets/images/chat/speaker (6).png b/dist/gramm-ai/browser/assets/images/chat/speaker (6).png new file mode 100644 index 0000000000000000000000000000000000000000..2ec8ba06b1535f2d7f8738228f993080b5072ea6 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/speaker (6).png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1186f27f0381f972bdcd57bfd0c308ebddbaf19dc8540fb6d05a218de61b0242 +size 16094 diff --git a/dist/gramm-ai/browser/assets/images/chat/speaker-white.png b/dist/gramm-ai/browser/assets/images/chat/speaker-white.png new file mode 100644 index 0000000000000000000000000000000000000000..1022bd71e76b1eb2a70a9d3ae8c45f45561593da --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/speaker-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dfd106d9da5f207e09d6027e1f775984e855803da5979913780b3dd6a439ff0 +size 12424 diff --git a/dist/gramm-ai/browser/assets/images/chat/speaker.png b/dist/gramm-ai/browser/assets/images/chat/speaker.png new file mode 100644 index 0000000000000000000000000000000000000000..39858352c3b16e10452ac901bcd2c73da697ddc7 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/speaker.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f92d1a3c1230c6c69cf94c5016d9bd9a4e244eaf351135a3d36abfa39a24cf0 +size 13518 diff --git a/dist/gramm-ai/browser/assets/images/chat/stop-button-white.png b/dist/gramm-ai/browser/assets/images/chat/stop-button-white.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c87251efbb894b50c8db8684f696507dbaf8e0 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/stop-button-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3d5fd071211a1a44208c9f66bf1c956a61ecb12241e5cf0c3d5828d8e1b6831 +size 4184 diff --git a/dist/gramm-ai/browser/assets/images/chat/stop-button.png b/dist/gramm-ai/browser/assets/images/chat/stop-button.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd86bc90cfee75fb316b33061d81769495b0dd2 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/stop-button.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a01d5cf4aa76de7da282c98decad20b19a4fe37076ec9f195e850966cdae8389 +size 4083 diff --git a/dist/gramm-ai/browser/assets/images/chat/stop.png b/dist/gramm-ai/browser/assets/images/chat/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0bc552dea11c212c42166fcedf9c51b06f3886 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/stop.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c10275efe01a0421881c8a70652110158155578243833c1434472f6cbad805f +size 31720 diff --git a/dist/gramm-ai/browser/assets/images/chat/syllabus.png b/dist/gramm-ai/browser/assets/images/chat/syllabus.png new file mode 100644 index 0000000000000000000000000000000000000000..52499b540ba1508a9a0d31ab636e33286fa4f643 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/syllabus.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63054ff3a070dfa6b6d390f53b2e981cec690ebc400058cb630ccacf20862ddb +size 22991 diff --git a/dist/gramm-ai/browser/assets/images/chat/teacher.png b/dist/gramm-ai/browser/assets/images/chat/teacher.png new file mode 100644 index 0000000000000000000000000000000000000000..188a246ad10211fa35e33ac8e3f9c87cb84e7795 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/teacher.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15980253b89516a136cfee9a11e368dd80d1af34b8001818e87a5a129eef1a04 +size 124392 diff --git a/dist/gramm-ai/browser/assets/images/chat/unmute.png b/dist/gramm-ai/browser/assets/images/chat/unmute.png new file mode 100644 index 0000000000000000000000000000000000000000..d6da38d1e6491ccf46748d0be64acce989986f57 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/unmute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3e506a2dc11e498c62054898fde99ce0f2258a313ec86b874c0154796579e70 +size 11474 diff --git a/dist/gramm-ai/browser/assets/images/chat/video-white.png b/dist/gramm-ai/browser/assets/images/chat/video-white.png new file mode 100644 index 0000000000000000000000000000000000000000..bffc4fb5ea1c7f31bc711e86f96b753219d3883e --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/video-white.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12c544b4d9b0dd4216af7cea6c8b7773e8438a911f44f3018e48c26957a903b5 +size 8040 diff --git a/dist/gramm-ai/browser/assets/images/chat/video.png b/dist/gramm-ai/browser/assets/images/chat/video.png new file mode 100644 index 0000000000000000000000000000000000000000..fc625eec23111aedec045e83c2c709ab600d2bcd --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/video.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd2bc1a030a6085a75c857576813677021afe5dee9cdb29cb3c65698b47ed188 +size 8830 diff --git a/dist/gramm-ai/browser/assets/images/chat/volume-mute.png b/dist/gramm-ai/browser/assets/images/chat/volume-mute.png new file mode 100644 index 0000000000000000000000000000000000000000..812883323f81fa401fda74adcf16645b2cd27cd7 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/volume-mute.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25dbbdfa78820b253560df982379956c330ff93386202d8e8c962ea0e3b35725 +size 7963 diff --git a/dist/gramm-ai/browser/assets/images/chat/volume.png b/dist/gramm-ai/browser/assets/images/chat/volume.png new file mode 100644 index 0000000000000000000000000000000000000000..fb80bc102d037b4365a2409e7f70cdc5c8416817 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/volume.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:369febb58fa91bc0fdc55504181c6cca3107401216baf73f4a0db53c63ad2c88 +size 11470 diff --git a/dist/gramm-ai/browser/assets/images/chat/y.png b/dist/gramm-ai/browser/assets/images/chat/y.png new file mode 100644 index 0000000000000000000000000000000000000000..c0dda5965f416e7050c3c927013d2e9e7db2ceb1 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/chat/y.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f6300a89d2f783f878f877256590ab5f51ed2f7c55d07ff324e7813e4e05006 +size 1962 diff --git a/dist/gramm-ai/browser/assets/images/find_word/1.png b/dist/gramm-ai/browser/assets/images/find_word/1.png new file mode 100644 index 0000000000000000000000000000000000000000..80565e37308a5e02f2393091ccf878fa299026c3 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e728fde29bec82a9c9969bfff37d7e1abae37ceb4178d8e1b0f8bd11901f43c4 +size 2993022 diff --git a/dist/gramm-ai/browser/assets/images/find_word/2.png b/dist/gramm-ai/browser/assets/images/find_word/2.png new file mode 100644 index 0000000000000000000000000000000000000000..2089baabd49bcdd3111e6ec98fc602873ed748ad --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2928906fd2bde793f7106ac8f984ff64ee737b3edd5f36f043a8d411c3896473 +size 1829918 diff --git a/dist/gramm-ai/browser/assets/images/find_word/3.png b/dist/gramm-ai/browser/assets/images/find_word/3.png new file mode 100644 index 0000000000000000000000000000000000000000..66d6ebb2f9b4c507fb78a68a7f9a605c07f7437d --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b9338d21cf8a97f03e571e8234806a7b19dcd84f1cf650e9b194c42bed0d271 +size 2466898 diff --git a/dist/gramm-ai/browser/assets/images/find_word/4.png b/dist/gramm-ai/browser/assets/images/find_word/4.png new file mode 100644 index 0000000000000000000000000000000000000000..00458f61a33fc09549be25955c57f004ba5ba80a --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86c9b75cf2642651d7daedcccb53e88aa69338570c717d0db0ea438770a0d80b +size 2943325 diff --git a/dist/gramm-ai/browser/assets/images/find_word/6.png b/dist/gramm-ai/browser/assets/images/find_word/6.png new file mode 100644 index 0000000000000000000000000000000000000000..1637af8cddceebdd1df93edb95d4e0f2fb0a8eee --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7a870c46a4fa58a67ce7cb990b49a1b8642798c6e1d2d7f7084afc216fa8f5a +size 1545686 diff --git a/dist/gramm-ai/browser/assets/images/find_word/ChatGPT Image May 22, 2025, 11_57_21 AM.png b/dist/gramm-ai/browser/assets/images/find_word/ChatGPT Image May 22, 2025, 11_57_21 AM.png new file mode 100644 index 0000000000000000000000000000000000000000..9d6569f8777b2087acc8d7f9d0cb6f2f0977795d --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/ChatGPT Image May 22, 2025, 11_57_21 AM.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a592d94a4fad031c912413bcc860b14a8e224b337dd90f931d635b1a4b4c1097 +size 1759975 diff --git a/dist/gramm-ai/browser/assets/images/find_word/audio.png b/dist/gramm-ai/browser/assets/images/find_word/audio.png new file mode 100644 index 0000000000000000000000000000000000000000..348b6d0a7652e505df7125ab7fe365109c66dbbe --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/audio.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:018efe018714be2511b6d3d809e2c7e8fdcf6707edc40154469aa6ae2cda9507 +size 167567 diff --git a/dist/gramm-ai/browser/assets/images/find_word/audio_no_bg.png b/dist/gramm-ai/browser/assets/images/find_word/audio_no_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b62ee0351ada6a5d4485caea2aaae3950999a27d --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/audio_no_bg.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76b488fba19f7f37f203841a3fcf285325d4576b20f39a014553f409500b1b9e +size 2650092 diff --git a/dist/gramm-ai/browser/assets/images/find_word/back-arrow.png b/dist/gramm-ai/browser/assets/images/find_word/back-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..1f301cfe84e291c4be0414835fa2645871ba877f --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/back-arrow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bf85ceebd0a2d7b12f9a63159186aabf850380949ed7d57c8c53e3c3e759e18 +size 418 diff --git a/dist/gramm-ai/browser/assets/images/find_word/back.png b/dist/gramm-ai/browser/assets/images/find_word/back.png new file mode 100644 index 0000000000000000000000000000000000000000..8c31da4c08984b08b8a475b32d473ce9f4b1fb65 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/back.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8749a225d6220db8f5f1c986aa293de98ee58e29eadc55ffbe6715775aa6c7be +size 1369808 diff --git a/dist/gramm-ai/browser/assets/images/find_word/find_word.png b/dist/gramm-ai/browser/assets/images/find_word/find_word.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f1cfed163b5186ef8676e9303eca6dfd51b488 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/find_word.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f25de4a84b0b453113f1d8b3adc9cd20f82a81f99aaff9c150af4bdef3b518a4 +size 60898 diff --git a/dist/gramm-ai/browser/assets/images/find_word/listen.png b/dist/gramm-ai/browser/assets/images/find_word/listen.png new file mode 100644 index 0000000000000000000000000000000000000000..552f3ca423e2fa8e2c0152005eed2f889ad92962 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/find_word/listen.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc0e66b5b931c104d9f70373348d77a741877c37751ac2b013701caffaac9d63 +size 1988158 diff --git a/dist/gramm-ai/browser/assets/images/google-logo.svg b/dist/gramm-ai/browser/assets/images/google-logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..d6d0d9f66d798092961fd60d069688092d63ad82 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/google-logo.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92965efec0c4d979aa06400f5789b3b769ff51494a071df0cec68ee4d68da5cf +size 784 diff --git a/dist/gramm-ai/browser/assets/images/grammar-bg.png b/dist/gramm-ai/browser/assets/images/grammar-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..341ccc3acbdb1c667323088c0262b64ea2a9fb80 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/grammar-bg.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebf0a0f8ac6bec6e03b9814cdfc360f27a591c46753b62587474f06767526cb8 +size 665154 diff --git a/dist/gramm-ai/browser/assets/images/home.png b/dist/gramm-ai/browser/assets/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..be1538142c4fa5c8efc89877f88bf4c868264f33 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aeee1e9a7ff006a98e8a27045b6dbf92f58265ec7d7b60aa005b112d61507b5f +size 1215 diff --git a/dist/gramm-ai/browser/assets/images/home/Grammar_chat.png b/dist/gramm-ai/browser/assets/images/home/Grammar_chat.png new file mode 100644 index 0000000000000000000000000000000000000000..75b5377870019f7f40a259027fe4a89954b2b84f --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/Grammar_chat.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d96eb91f30a33917767f54a4d87a2935959053aba0f3e7bc385d8849aac2ff41 +size 125036 diff --git a/dist/gramm-ai/browser/assets/images/home/Listening.png b/dist/gramm-ai/browser/assets/images/home/Listening.png new file mode 100644 index 0000000000000000000000000000000000000000..9b274ba5cef6081f15cbd85e4375288cb2bb4687 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/Listening.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e185e88afedd89c410aea903b4df2752f28db0191095decd53c27c533fd502f5 +size 479376 diff --git a/dist/gramm-ai/browser/assets/images/home/Reading.png b/dist/gramm-ai/browser/assets/images/home/Reading.png new file mode 100644 index 0000000000000000000000000000000000000000..e31eaf533b21b96c3f15e132efdadb64ba317fa4 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/Reading.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc1d39e8a7b01de3dfc9f9a1e68f0ca06455b5ed948bc3daeb5b74bca1846b55 +size 690521 diff --git a/dist/gramm-ai/browser/assets/images/home/background.png b/dist/gramm-ai/browser/assets/images/home/background.png new file mode 100644 index 0000000000000000000000000000000000000000..2722be642fdc9ba65e59e1c303189fa728639cf7 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/background.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cc7e74b375c0a9becd5f0e7fdbfcfac815e2aeb5214986dd3b6496e88feaf29 +size 1001439 diff --git a/dist/gramm-ai/browser/assets/images/home/chat.png b/dist/gramm-ai/browser/assets/images/home/chat.png new file mode 100644 index 0000000000000000000000000000000000000000..1f9bc00d981b0f08b11e0dc1c235404f8ca09d30 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/chat.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c86336a33afad67cae4a2d6f135e05cfeebbbcb7e778559b3f031706f6cab5c8 +size 127018 diff --git a/dist/gramm-ai/browser/assets/images/home/find_word.png b/dist/gramm-ai/browser/assets/images/home/find_word.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f1cfed163b5186ef8676e9303eca6dfd51b488 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/find_word.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f25de4a84b0b453113f1d8b3adc9cd20f82a81f99aaff9c150af4bdef3b518a4 +size 60898 diff --git a/dist/gramm-ai/browser/assets/images/home/linkedin-icon.png b/dist/gramm-ai/browser/assets/images/home/linkedin-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..65a17901d84b043f029ac42da0cc86e05994afe8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/linkedin-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dcbc6147b5ba1f1da63566505a0bee3a7c044fc9c9ab8935f8298eb6b231340 +size 11481 diff --git a/dist/gramm-ai/browser/assets/images/home/quiz.png b/dist/gramm-ai/browser/assets/images/home/quiz.png new file mode 100644 index 0000000000000000000000000000000000000000..78cdfa7d0060f3f8156f67aff7946b003c04fce0 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/quiz.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a33d8f9c687fb7ffb3f78b9dacf6cfbcaab5713474070d6a6f09ade55b637cbb +size 80955 diff --git a/dist/gramm-ai/browser/assets/images/home/vocabulary.png b/dist/gramm-ai/browser/assets/images/home/vocabulary.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ffc10f55febb839f36f763db5585131a44a534 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/vocabulary.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d10fdad3807d15949fbe88676ad581242373f9e72c40d45122be18ce27edbfe +size 93328 diff --git a/dist/gramm-ai/browser/assets/images/home/voice.png b/dist/gramm-ai/browser/assets/images/home/voice.png new file mode 100644 index 0000000000000000000000000000000000000000..64a87fbec99ddb7e95f7aab0d14b89b96ee9909e --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/voice.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3fdd30f776503a2f218ea129c28d6de61600e6cc8b3e2d82aeefe1610483ed7 +size 59994 diff --git a/dist/gramm-ai/browser/assets/images/home/writting.png b/dist/gramm-ai/browser/assets/images/home/writting.png new file mode 100644 index 0000000000000000000000000000000000000000..adc2ce412909361771871b62bf4e97729a40ba12 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/writting.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddfe8c7e9afb8a730cc4925f17b8a924d68733da74a7d7057e86853eab50afd5 +size 1608258 diff --git a/dist/gramm-ai/browser/assets/images/home/youtube-icon.png b/dist/gramm-ai/browser/assets/images/home/youtube-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1d1098e5fdb891652d2e5d77830a19e3b1a340b2 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/home/youtube-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:487d295d1b180682f13e25fdbd18c659f76abdda651afc1363fc701400eb7910 +size 16602 diff --git a/dist/gramm-ai/browser/assets/images/listen.png b/dist/gramm-ai/browser/assets/images/listen.png new file mode 100644 index 0000000000000000000000000000000000000000..29c23841f7cca5dc65ce652c589728ca130c23b0 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37e9b673090823e9efdbd4d6c4074d6d689acfd12ad02e1bc7937728ddc890e0 +size 813782 diff --git a/dist/gramm-ai/browser/assets/images/listen/1.png b/dist/gramm-ai/browser/assets/images/listen/1.png new file mode 100644 index 0000000000000000000000000000000000000000..ea91733654594d2b0d7ec36d1ba552928ea0a196 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e22ab8915b94cf373395b789f6622c42c38ee560d2ecaf4271cb143248ecb9fa +size 2022880 diff --git a/dist/gramm-ai/browser/assets/images/listen/2.png b/dist/gramm-ai/browser/assets/images/listen/2.png new file mode 100644 index 0000000000000000000000000000000000000000..c994196dd75c292ed12b10e7fc5cc5d0cb8b098e --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7285601a8ff3800ee9720ae60dbfa3125e071debd480ee5ab7162747b4b8877 +size 2599368 diff --git a/dist/gramm-ai/browser/assets/images/listen/3.png b/dist/gramm-ai/browser/assets/images/listen/3.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6af0d8e6180387b9be9949cf051f7509bb580c --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1913d5c6fdbc09c59b1d69281ccf774930d1f62576765c44eb1dd5959e54ebbd +size 2691282 diff --git a/dist/gramm-ai/browser/assets/images/listen/3girl.png b/dist/gramm-ai/browser/assets/images/listen/3girl.png new file mode 100644 index 0000000000000000000000000000000000000000..cf0789138e23d3027e53476bda7390886f5a605f --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/3girl.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ab553af72d37463a905d40a894d213ba77894b5e17bb8b9c3acce0ee0ad4219 +size 3263348 diff --git a/dist/gramm-ai/browser/assets/images/listen/Excited.png b/dist/gramm-ai/browser/assets/images/listen/Excited.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd9d1ca46fc10b3d0f0926a9dd7e7e6f7671fa0 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/Excited.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f97bbb28d9bc31dc6fc18c7600b81a5eeae88ba8869721b89c249f8b744a5e92 +size 2660787 diff --git a/dist/gramm-ai/browser/assets/images/listen/a.png b/dist/gramm-ai/browser/assets/images/listen/a.png new file mode 100644 index 0000000000000000000000000000000000000000..c5a2a0868acbb350d880795cc54b7c9842fd7f21 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/a.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:525d6174374c4ab0f820dfe72ba8cbc66538f10e91e56da79210fa8c13be623a +size 2371422 diff --git a/dist/gramm-ai/browser/assets/images/listen/a1.png b/dist/gramm-ai/browser/assets/images/listen/a1.png new file mode 100644 index 0000000000000000000000000000000000000000..d839ac515d2b2eefba3befbeaf16d61e41bcde87 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/a1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c60232f8847eb817f59ee867a924fa911c3caff34b394cd0e257d160ea9a2ba +size 2187249 diff --git a/dist/gramm-ai/browser/assets/images/listen/back-arrow.png b/dist/gramm-ai/browser/assets/images/listen/back-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..1f301cfe84e291c4be0414835fa2645871ba877f --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/back-arrow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bf85ceebd0a2d7b12f9a63159186aabf850380949ed7d57c8c53e3c3e759e18 +size 418 diff --git a/dist/gramm-ai/browser/assets/images/listen/confeti.png b/dist/gramm-ai/browser/assets/images/listen/confeti.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f86b62caa4dcf635dae9a61779dc33b9b09526 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/confeti.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ec0a297ac3e87d82f0c51b01f22e0e2bd33422b85b776baf471177ede675bf7 +size 3142104 diff --git a/dist/gramm-ai/browser/assets/images/listen/confetti.png b/dist/gramm-ai/browser/assets/images/listen/confetti.png new file mode 100644 index 0000000000000000000000000000000000000000..6d46d0ff7937f6b2b45d28d69e80376fe1b3ea33 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/confetti.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7da7a9e523a7abb09a409f174013daff44a501050e571f03effe719cd2a2e88e +size 313562 diff --git a/dist/gramm-ai/browser/assets/images/listen/default.png b/dist/gramm-ai/browser/assets/images/listen/default.png new file mode 100644 index 0000000000000000000000000000000000000000..eb08723a89b6f5516faa152ebe0e7e4680b98211 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/default.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06a00d98cf193b34a28a33dba0deaea397c45074be849b71c78b6c2314bf26ac +size 1890301 diff --git a/dist/gramm-ai/browser/assets/images/listen/group.png b/dist/gramm-ai/browser/assets/images/listen/group.png new file mode 100644 index 0000000000000000000000000000000000000000..c805be07dd9e4e878e0f2033b63c19db0c3c66ea --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/group.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:323413509f2c904497875ef21f4b02f909e7e3a3e9df66ed790f9480c69a5e51 +size 2951047 diff --git a/dist/gramm-ai/browser/assets/images/listen/happy.png b/dist/gramm-ai/browser/assets/images/listen/happy.png new file mode 100644 index 0000000000000000000000000000000000000000..9a55f8b324d4494f32daae225729cb03e3bdeae8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/happy.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9318d1a9967d3f41d1a46081f16ce31acf61bc195b49b9cbb411a0faff6fe421 +size 2679982 diff --git a/dist/gramm-ai/browser/assets/images/listen/j.png b/dist/gramm-ai/browser/assets/images/listen/j.png new file mode 100644 index 0000000000000000000000000000000000000000..f9df909c05907b7607b93416ec726b299b449cb6 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/j.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1f2e52e871c52e5bbaadc87ffb95e872d668258c42c019cda733b75b720d7c6 +size 2904069 diff --git a/dist/gramm-ai/browser/assets/images/listen/lamp.png b/dist/gramm-ai/browser/assets/images/listen/lamp.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1dd83450f484de290d59886539b16e89f5a934 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/lamp.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3cbc34f5bea1acdbb77198466bdaaf5687e5785ecc02c33cf505c3ac7b51283 +size 2382536 diff --git a/dist/gramm-ai/browser/assets/images/listen/listen.png b/dist/gramm-ai/browser/assets/images/listen/listen.png new file mode 100644 index 0000000000000000000000000000000000000000..552f3ca423e2fa8e2c0152005eed2f889ad92962 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/listen.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc0e66b5b931c104d9f70373348d77a741877c37751ac2b013701caffaac9d63 +size 1988158 diff --git a/dist/gramm-ai/browser/assets/images/listen/listen1.png b/dist/gramm-ai/browser/assets/images/listen/listen1.png new file mode 100644 index 0000000000000000000000000000000000000000..55317c50b42bca10aacbaa079041342aa77b1878 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/listen1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7563ab7b5ce2e4596e3ef7e969e3635f3e76f249ab087f070bc54dd5357bea6f +size 2538293 diff --git a/dist/gramm-ai/browser/assets/images/listen/listen2.png b/dist/gramm-ai/browser/assets/images/listen/listen2.png new file mode 100644 index 0000000000000000000000000000000000000000..a364d71be2b6fcc4bd72076d2285c36490fa3c0c --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/listen2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4422d509555bafe424e89a6b38acbf147b5620fd13955ab3e130dc82e2fc0f9 +size 1751903 diff --git a/dist/gramm-ai/browser/assets/images/listen/listen3.png b/dist/gramm-ai/browser/assets/images/listen/listen3.png new file mode 100644 index 0000000000000000000000000000000000000000..d91fed60704ad45064299c10dc391d9c0a2d23de --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/listen3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62c1810d4bb552686aa3035eb21104df346b2f714e33281a39b953bdf98d6100 +size 2572443 diff --git a/dist/gramm-ai/browser/assets/images/listen/s.png b/dist/gramm-ai/browser/assets/images/listen/s.png new file mode 100644 index 0000000000000000000000000000000000000000..83c12d77f71f4bd75021ebba044f1664bf21cc6f --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/s.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:377335e96c5b0ee1c0dea3853f68ef38d732896c05e83de39723fbd5c48ce596 +size 3197970 diff --git a/dist/gramm-ai/browser/assets/images/listen/sad.png b/dist/gramm-ai/browser/assets/images/listen/sad.png new file mode 100644 index 0000000000000000000000000000000000000000..7f09e864c1bbe32609310c92d5537473721578aa --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/sad.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0283e601dbce9b53efb8e021ace66a53e8407a01914143ad7821eb157a2c2ba3 +size 2758561 diff --git a/dist/gramm-ai/browser/assets/images/listen/surprised.png b/dist/gramm-ai/browser/assets/images/listen/surprised.png new file mode 100644 index 0000000000000000000000000000000000000000..cfda5bde886e2192d7c29e523d213d0eece59117 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/surprised.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57f7e1cd4ef6811262e0ebf83f48dbe56af34fc152776779be4cf7008854980c +size 3048253 diff --git a/dist/gramm-ai/browser/assets/images/listen/thinking.png b/dist/gramm-ai/browser/assets/images/listen/thinking.png new file mode 100644 index 0000000000000000000000000000000000000000..9a091ef38fdd6b75fb0f395cc1309bd87b1f2726 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/thinking.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11202f54fd746aee6eeeae5f49d72c431a6d2cf0d8d975dd1f387ccd68883d53 +size 2777143 diff --git a/dist/gramm-ai/browser/assets/images/listen/thinkingwith book.png b/dist/gramm-ai/browser/assets/images/listen/thinkingwith book.png new file mode 100644 index 0000000000000000000000000000000000000000..b65ac615496d796a3b76628124ae6f86516f2f3c --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/thinkingwith book.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bdf5c4b3e47475a83f532fec895db340b93f8ddcd8772cbeb4043a9eff6af81 +size 489 diff --git a/dist/gramm-ai/browser/assets/images/listen/winning .png b/dist/gramm-ai/browser/assets/images/listen/winning .png new file mode 100644 index 0000000000000000000000000000000000000000..ad4b3cc046953bf68ec16b9c3d46d501aa4a7da7 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/listen/winning .png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00948b27032ea9ad20363f7fa42f512222363847091dabddd45972ccd8bf8463 +size 489 diff --git a/dist/gramm-ai/browser/assets/images/login/linkedin-icon.png b/dist/gramm-ai/browser/assets/images/login/linkedin-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..65a17901d84b043f029ac42da0cc86e05994afe8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/login/linkedin-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dcbc6147b5ba1f1da63566505a0bee3a7c044fc9c9ab8935f8298eb6b231340 +size 11481 diff --git a/dist/gramm-ai/browser/assets/images/login/lion.png b/dist/gramm-ai/browser/assets/images/login/lion.png new file mode 100644 index 0000000000000000000000000000000000000000..138e989fe567199c052affb05eaef7e0a9f1a52c --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/login/lion.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b10cc8bd4e0c9e68158575d2ade0186474235a359c85cf5c8033efd1fbdd9431 +size 335878 diff --git a/dist/gramm-ai/browser/assets/images/login/youtube-icon.png b/dist/gramm-ai/browser/assets/images/login/youtube-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1d1098e5fdb891652d2e5d77830a19e3b1a340b2 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/login/youtube-icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:487d295d1b180682f13e25fdbd18c659f76abdda651afc1363fc701400eb7910 +size 16602 diff --git a/dist/gramm-ai/browser/assets/images/majema-logo.png b/dist/gramm-ai/browser/assets/images/majema-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d73281e5cbeb29c50a24709f54374e4094441548 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/majema-logo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35f2d665d28978a0c24b69454abd7b6dcc633566812df227c70a2242417c5750 +size 1480919 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-a.png b/dist/gramm-ai/browser/assets/images/pron/letter-a.png new file mode 100644 index 0000000000000000000000000000000000000000..477eb9aa95f962afd15855d35b61246d69f72f4f --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-a.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f790c68b9f0d1bae06f4612f567f8b78a029e9421e475c8f53432e5bb2098d9e +size 13578 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-b.png b/dist/gramm-ai/browser/assets/images/pron/letter-b.png new file mode 100644 index 0000000000000000000000000000000000000000..536fadc152d716d2d7a5fa2d8defa98f27a48aa8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-b.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:423a262c8ad73902ae214a0fee6cfe348822a6e3b8eb41a68dea453fea45eef7 +size 13311 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-c.png b/dist/gramm-ai/browser/assets/images/pron/letter-c.png new file mode 100644 index 0000000000000000000000000000000000000000..b249f2899fcf3d08e2ae78200a9c0b8ddb34fb40 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-c.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6fcfc131492bf96c55e557aabfdc9ff0e5ee890ff68b04aec680e1522bf8b68 +size 21354 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-d.png b/dist/gramm-ai/browser/assets/images/pron/letter-d.png new file mode 100644 index 0000000000000000000000000000000000000000..809b9f9e74115c42552435055f81fbc9cb146270 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-d.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2a19db476be06387abaebfd85a134a0f8ed26f6f9820d26cb4e3e0fe38cc12f +size 20084 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-e.png b/dist/gramm-ai/browser/assets/images/pron/letter-e.png new file mode 100644 index 0000000000000000000000000000000000000000..7d43602d573e6802b2e740915640f68219c73464 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-e.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ef617eaf64e16789cdf0b4879ac7432e02fe019df9e65e5676e6e3e6bd8e193 +size 8235 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-f.png b/dist/gramm-ai/browser/assets/images/pron/letter-f.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b23d2207b4878a5a8256aadc5c35856ef1183b --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-f.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62e5915743c5169eecf864e5e2153e65e33dd839dbbd110f6d28a3a073b7f8e0 +size 20699 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-g.png b/dist/gramm-ai/browser/assets/images/pron/letter-g.png new file mode 100644 index 0000000000000000000000000000000000000000..5a58f2ecd168b976751a06d4e10efd4b52cee836 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-g.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a9a377f7c72ca904f4991ad897a457c70d05824c27f39a7d3ef817cbf2b29dd +size 22563 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-h.png b/dist/gramm-ai/browser/assets/images/pron/letter-h.png new file mode 100644 index 0000000000000000000000000000000000000000..21da5a0d66e33297f60ddd70580c4542f775a59e --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-h.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b20f9eb6b6497d41e544fdef43e10098c6d7f077609361030932cefb35c36d4f +size 11104 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-i.png b/dist/gramm-ai/browser/assets/images/pron/letter-i.png new file mode 100644 index 0000000000000000000000000000000000000000..3e89c200864c2940b9006a75cf2e55a543ed8637 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-i.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78c3ffbd755f5f56c6028f4ebf510950e2a022d896dbfb1532f2900821c28b7b +size 14136 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-j.png b/dist/gramm-ai/browser/assets/images/pron/letter-j.png new file mode 100644 index 0000000000000000000000000000000000000000..891ac5404ed0998b83bfeb1d80d98feb841ba426 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-j.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:980dc50fbc8b2f0a26866bdc8c6be73905d7ec57366313efadfbb502b567c3ac +size 14295 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-k.png b/dist/gramm-ai/browser/assets/images/pron/letter-k.png new file mode 100644 index 0000000000000000000000000000000000000000..a5badde23815e3b167960038648ea3338003b73b --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-k.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d75464dda76a26c5cacceb20aad6df27d4426c46e00e050e5aa82017d50532 +size 14163 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-l.png b/dist/gramm-ai/browser/assets/images/pron/letter-l.png new file mode 100644 index 0000000000000000000000000000000000000000..a10fc942c3b210a2340ff8df41c2bfae85143543 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-l.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57b59951920ea3c48d6659d4fe17e1da70c0c6b9acad98dfca3c05bbd287f16a +size 25628 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-m.png b/dist/gramm-ai/browser/assets/images/pron/letter-m.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b5dcc8fdf196479a04f76bd6bad3dc8bf1c61f --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-m.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b5710ecc0fa780e7656877dbf87b18b2e0b369438cd1fe4e20cc2eee74d8d1a +size 10173 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-n.png b/dist/gramm-ai/browser/assets/images/pron/letter-n.png new file mode 100644 index 0000000000000000000000000000000000000000..266b179d96422925d1fbf6d00a6ebf915f5e2d95 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-n.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e151a2548c8daaefc63a25f83bbc88da42915d9867d433bf9f902e62a6fe3d9c +size 22624 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-o.png b/dist/gramm-ai/browser/assets/images/pron/letter-o.png new file mode 100644 index 0000000000000000000000000000000000000000..b45b0895c86b51ca6abb368712340d0e2f74ef70 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-o.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9a9da5a17485145179390f2906408e7f5d24a49decffc5dcf0f067f323d9ccc +size 13263 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-p.png b/dist/gramm-ai/browser/assets/images/pron/letter-p.png new file mode 100644 index 0000000000000000000000000000000000000000..76fb558e5c99412ea015d7a9a1f6d4d4b06c95f8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-p.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1dffcc45af095810e27a71a5f524eab38e2f9d20462675ec0b007a2f1db5a66 +size 19269 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-q.png b/dist/gramm-ai/browser/assets/images/pron/letter-q.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c7c0a6c4c2dcbda54ca06b55dde712c36ce5c1 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-q.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7f97cc36d44e71699a7c4ed795403009783d42d0d6fe72253837b015094d948 +size 14269 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-r.png b/dist/gramm-ai/browser/assets/images/pron/letter-r.png new file mode 100644 index 0000000000000000000000000000000000000000..f8133036d3adfd55c51eff6b315b66252bd36c2f --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-r.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85abad4880b96ff8a9c23da12b8c4ceac7ec0147ff927c4c686d41247246b3d2 +size 14984 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-s.png b/dist/gramm-ai/browser/assets/images/pron/letter-s.png new file mode 100644 index 0000000000000000000000000000000000000000..891bf316e2933c7023c3c40da2eae7a6a072c4d8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-s.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e4ad004f95d05a45439c51e8119eed4555222b75ffb005907698b158a1da077 +size 15201 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-t.png b/dist/gramm-ai/browser/assets/images/pron/letter-t.png new file mode 100644 index 0000000000000000000000000000000000000000..f1f1d8338fdc414fb93b2276a37cb1c065f42232 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-t.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48b86130aef6315b3bfb2f1dfa40c67150c96d22c9ac868845658cd75a0b7dc1 +size 14296 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-u.png b/dist/gramm-ai/browser/assets/images/pron/letter-u.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ce5ff220c8de15f1df5a22f8fa9cbab0ae5556 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-u.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91df53d354313ceddce76cc740ec95c79ef9992d2d681edb9ec6cd5e5c9d5917 +size 12350 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-v.png b/dist/gramm-ai/browser/assets/images/pron/letter-v.png new file mode 100644 index 0000000000000000000000000000000000000000..cd47fe7dca883bf5d9c4369d04776a95f4941663 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-v.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15b0603c8624b94aa4626d8fbc9ff85b50d68018c6e192e69e9c83087e708f67 +size 23930 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-w.png b/dist/gramm-ai/browser/assets/images/pron/letter-w.png new file mode 100644 index 0000000000000000000000000000000000000000..9dd0c0b744b9e2f3af91098a121dfa8dd6ded031 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-w.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de317f48dccd54b5155481de08a5016cae068928088ef5fe46497c6e384a72fe +size 19948 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-x.png b/dist/gramm-ai/browser/assets/images/pron/letter-x.png new file mode 100644 index 0000000000000000000000000000000000000000..232c92ec0f3d9203080e0951ab9c22662354a0bb --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-x.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de8369de0f648f168efd08fa5a081b20cdbc734a4bbd5bd81f09b16e7c8b305b +size 20232 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-y.png b/dist/gramm-ai/browser/assets/images/pron/letter-y.png new file mode 100644 index 0000000000000000000000000000000000000000..89ce0f8549fc488c7fe926c3b195496844681247 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-y.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b0a55b15800d26bfcc6060f22922f9579ed04caf7fd59449c334a216518ca66 +size 32497 diff --git a/dist/gramm-ai/browser/assets/images/pron/letter-z.png b/dist/gramm-ai/browser/assets/images/pron/letter-z.png new file mode 100644 index 0000000000000000000000000000000000000000..6a10e5e444809886d2d684aa56bcce146a44bbd3 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/letter-z.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a76c5d2c61fe44817ba0fac6b2e45bd5a1605273efe016661190901e47f72b67 +size 21392 diff --git a/dist/gramm-ai/browser/assets/images/pron/student.png b/dist/gramm-ai/browser/assets/images/pron/student.png new file mode 100644 index 0000000000000000000000000000000000000000..79a5405a5f459853f397b4e1df2633edb41584c3 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pron/student.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:699fafe6b578b7c587752a7e531d550eb2f7041a78a930c018fe1856183c8056 +size 23600 diff --git a/dist/gramm-ai/browser/assets/images/pykara-logo.png b/dist/gramm-ai/browser/assets/images/pykara-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d69712677ca0333c5e0a5899bb74e23f943349df --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/pykara-logo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c34280718b6c881c750fcd05cd59bdf86d8797df991b3fff0f1d8dd02f24382 +size 30704 diff --git a/dist/gramm-ai/browser/assets/images/reading/back.png b/dist/gramm-ai/browser/assets/images/reading/back.png new file mode 100644 index 0000000000000000000000000000000000000000..8c31da4c08984b08b8a475b32d473ce9f4b1fb65 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/reading/back.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8749a225d6220db8f5f1c986aa293de98ee58e29eadc55ffbe6715775aa6c7be +size 1369808 diff --git a/dist/gramm-ai/browser/assets/images/reading/teacher.png b/dist/gramm-ai/browser/assets/images/reading/teacher.png new file mode 100644 index 0000000000000000000000000000000000000000..4fba36d6203041dddeb7dd0d004fdff7924a7903 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/reading/teacher.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8b29c808bb73f02a4761764b18a1d6375f96e261826c6dce32c9c4330f9f063 +size 332605 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/1.png b/dist/gramm-ai/browser/assets/images/vocabulary/1.png new file mode 100644 index 0000000000000000000000000000000000000000..47e9e75323a96a24c58ca5558afa2d4624c45480 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45a91aa3fa7140098dc432a0d9b74f5aab53cb5930f78d25c7e83d604018e0c4 +size 2669105 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/2.png b/dist/gramm-ai/browser/assets/images/vocabulary/2.png new file mode 100644 index 0000000000000000000000000000000000000000..2089baabd49bcdd3111e6ec98fc602873ed748ad --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2928906fd2bde793f7106ac8f984ff64ee737b3edd5f36f043a8d411c3896473 +size 1829918 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/3.png b/dist/gramm-ai/browser/assets/images/vocabulary/3.png new file mode 100644 index 0000000000000000000000000000000000000000..604bd06bdad0310c423a7de7871b953a713af8cd --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19973fd120a36e2f33386daf12ef171dd2e1533f82d095bc3fd3a1becaae552d +size 1846354 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/4.png b/dist/gramm-ai/browser/assets/images/vocabulary/4.png new file mode 100644 index 0000000000000000000000000000000000000000..4d5b8aa932bed38d26319faa082acf7e399273bf --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fe1591678783390fe14c28a1280bd02d663701f2e54cc8ba420417343e6681e +size 2680769 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/5.png b/dist/gramm-ai/browser/assets/images/vocabulary/5.png new file mode 100644 index 0000000000000000000000000000000000000000..ddff48b11b7adef113d0206148ac7b5342007145 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:160e17f51466cbb76af737852d3e3fbd4ed5b66495012397f8291c81f14a2c9d +size 1926984 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/6.png b/dist/gramm-ai/browser/assets/images/vocabulary/6.png new file mode 100644 index 0000000000000000000000000000000000000000..1637af8cddceebdd1df93edb95d4e0f2fb0a8eee --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7a870c46a4fa58a67ce7cb990b49a1b8642798c6e1d2d7f7084afc216fa8f5a +size 1545686 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/ChatGPT Image May 21, 2025, 10_51_08 AM.png b/dist/gramm-ai/browser/assets/images/vocabulary/ChatGPT Image May 21, 2025, 10_51_08 AM.png new file mode 100644 index 0000000000000000000000000000000000000000..581ae37561b8a6c7fdb9da0eb19023a67ebbb156 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/ChatGPT Image May 21, 2025, 10_51_08 AM.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:793a6954c17a5291ab3c59135d204f575084cf8572a3057ab6a67b3293566de4 +size 902259 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/back.png b/dist/gramm-ai/browser/assets/images/vocabulary/back.png new file mode 100644 index 0000000000000000000000000000000000000000..8c31da4c08984b08b8a475b32d473ce9f4b1fb65 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/back.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8749a225d6220db8f5f1c986aa293de98ee58e29eadc55ffbe6715775aa6c7be +size 1369808 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/learning.png b/dist/gramm-ai/browser/assets/images/vocabulary/learning.png new file mode 100644 index 0000000000000000000000000000000000000000..2fc0b83a046db14dd6f7399cbad2f39448e10718 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/learning.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fc46c7b4e457e15c8c8273721777ecb520223e33ae9108b0793176b6ac4cb16 +size 3094855 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/learning1.png b/dist/gramm-ai/browser/assets/images/vocabulary/learning1.png new file mode 100644 index 0000000000000000000000000000000000000000..9d63c2f16d927c1380cf112488e93706ecb309a4 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/learning1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccdc54d8c9fc7342111ffca808f6e221a46a632d56aa204dfdb01257b77ac727 +size 2880344 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/next.png b/dist/gramm-ai/browser/assets/images/vocabulary/next.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b2f9eced51da827d1bab0ccecc30e62ba721fa --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/next.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30aa3164fb81aead347862ce98d00f78882b4b42368b08e0aa0d185e3e60d99e +size 1094404 diff --git a/dist/gramm-ai/browser/assets/images/vocabulary/vocabulary.png b/dist/gramm-ai/browser/assets/images/vocabulary/vocabulary.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ffc10f55febb839f36f763db5585131a44a534 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/vocabulary/vocabulary.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d10fdad3807d15949fbe88676ad581242373f9e72c40d45122be18ce27edbfe +size 93328 diff --git a/dist/gramm-ai/browser/assets/images/writing.png b/dist/gramm-ai/browser/assets/images/writing.png new file mode 100644 index 0000000000000000000000000000000000000000..27005737b8bf8c29c920de75459acd58c123a660 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ff7efe0932d4613f5dceac9750516836e0a30a7ccca40432271863e126f7da0 +size 652558 diff --git a/dist/gramm-ai/browser/assets/images/writing/1.png b/dist/gramm-ai/browser/assets/images/writing/1.png new file mode 100644 index 0000000000000000000000000000000000000000..1d95b7bf02dbd85f91c965e88e7885e3a4eaac4c --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e529544696a1de7db78f4fd95c6cbbf1c70721ec2cf0838aae379c88178be137 +size 1426179 diff --git a/dist/gramm-ai/browser/assets/images/writing/2.png b/dist/gramm-ai/browser/assets/images/writing/2.png new file mode 100644 index 0000000000000000000000000000000000000000..69e6b0bfe321cc2a8eadd1a466c42a9f0df0ed2a --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29211b400668074072b42320cbeac6caf40e01b391e686495d026a58275d724a +size 1898944 diff --git a/dist/gramm-ai/browser/assets/images/writing/3.png b/dist/gramm-ai/browser/assets/images/writing/3.png new file mode 100644 index 0000000000000000000000000000000000000000..137b1e0c38271360017bb14684205ca6bbe5a173 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83569ff3dd9b2ef8604b1845b38a87aea773ea95920a7533ae2e71e074fb7f18 +size 1742800 diff --git a/dist/gramm-ai/browser/assets/images/writing/4.png b/dist/gramm-ai/browser/assets/images/writing/4.png new file mode 100644 index 0000000000000000000000000000000000000000..bb446b2a76b4515b57833ea504ab9847fb729627 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4af2314b3c1a3d45ffcce6a794aedfd473e39564fc96f7e0aba9fbac2904f49 +size 949240 diff --git a/dist/gramm-ai/browser/assets/images/writing/ChatGPT Image Jul 14, 2025, 12_26_53 PM.png b/dist/gramm-ai/browser/assets/images/writing/ChatGPT Image Jul 14, 2025, 12_26_53 PM.png new file mode 100644 index 0000000000000000000000000000000000000000..5782d29b6b1c8127e8b5fe09ccb8ee77109b8ab8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/ChatGPT Image Jul 14, 2025, 12_26_53 PM.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca189374822e22dbef02d5729f79c84d6f5a4ae8c96b2e0f32ed0ee4351e206b +size 1828221 diff --git a/dist/gramm-ai/browser/assets/images/writing/back-arrow.png b/dist/gramm-ai/browser/assets/images/writing/back-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..1f301cfe84e291c4be0414835fa2645871ba877f --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/back-arrow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bf85ceebd0a2d7b12f9a63159186aabf850380949ed7d57c8c53e3c3e759e18 +size 418 diff --git a/dist/gramm-ai/browser/assets/images/writing/back.png b/dist/gramm-ai/browser/assets/images/writing/back.png new file mode 100644 index 0000000000000000000000000000000000000000..8c31da4c08984b08b8a475b32d473ce9f4b1fb65 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/back.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8749a225d6220db8f5f1c986aa293de98ee58e29eadc55ffbe6715775aa6c7be +size 1369808 diff --git a/dist/gramm-ai/browser/assets/images/writing/border.png b/dist/gramm-ai/browser/assets/images/writing/border.png new file mode 100644 index 0000000000000000000000000000000000000000..0a1a06de672ba3acd27d7851733830e5fd85938c --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/border.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d86911891f91800b69dbbe991aadba1701599f96f5e93672c28f6360dacfb434 +size 2036 diff --git a/dist/gramm-ai/browser/assets/images/writing/cloud1.png b/dist/gramm-ai/browser/assets/images/writing/cloud1.png new file mode 100644 index 0000000000000000000000000000000000000000..8c04fca0ffa0f35c481021800389e529fc98b5d3 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/cloud1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5409810da008d782ea7996868d398b5754961944328acb00771a2423d0aefed +size 28116 diff --git a/dist/gramm-ai/browser/assets/images/writing/cloud3.png b/dist/gramm-ai/browser/assets/images/writing/cloud3.png new file mode 100644 index 0000000000000000000000000000000000000000..5db8e225291473c85557f7c9e228392a9dfd87ff --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/cloud3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab711c55b26abfc76cd22a192bb1451be88e87963edc2bdb7bbed14718ed7e85 +size 1466225 diff --git a/dist/gramm-ai/browser/assets/images/writing/feedback.png b/dist/gramm-ai/browser/assets/images/writing/feedback.png new file mode 100644 index 0000000000000000000000000000000000000000..4fba36d6203041dddeb7dd0d004fdff7924a7903 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/feedback.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8b29c808bb73f02a4761764b18a1d6375f96e261826c6dce32c9c4330f9f063 +size 332605 diff --git a/dist/gramm-ai/browser/assets/images/writing/group.png b/dist/gramm-ai/browser/assets/images/writing/group.png new file mode 100644 index 0000000000000000000000000000000000000000..06f97f614027e4eb8732f03ab3998d919c326e82 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/group.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d3bfe9f7659921aaf81586c653f20bfe4fe62e8802266549cdca120e3b6c315 +size 2433570 diff --git a/dist/gramm-ai/browser/assets/images/writing/pencil-character.jpg b/dist/gramm-ai/browser/assets/images/writing/pencil-character.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7d18fa5c4829b51a8c8e926c50716c5dfe757492 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/pencil-character.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2da6a8dd47f84f92c7540f91d98a92328d462914ca17f7468594152cef6385b8 +size 44081 diff --git a/dist/gramm-ai/browser/assets/images/writing/pencil-character.png b/dist/gramm-ai/browser/assets/images/writing/pencil-character.png new file mode 100644 index 0000000000000000000000000000000000000000..a555e68e2dbfc894ff1ddc98a71eea404c739906 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/pencil-character.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8da988ee0a264eace84de9d96c6e74e837330aba23024d65006abaa6d46abb60 +size 214498 diff --git a/dist/gramm-ai/browser/assets/images/writing/pencil.png b/dist/gramm-ai/browser/assets/images/writing/pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..b93f60e1fdd84ee75432ab2238d30bc74f1d6d6b --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/pencil.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0eae6dadeae62fb26cdfc312f8ddc6aef202c8b0e8755809a0cb4a34265340d +size 131624 diff --git a/dist/gramm-ai/browser/assets/images/writing/rabbit.png b/dist/gramm-ai/browser/assets/images/writing/rabbit.png new file mode 100644 index 0000000000000000000000000000000000000000..06a0e03961c9d8ab373192c7a708a490c6e34c64 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/rabbit.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f3b34936742d4abc408f519bf4d82f7608c11c229c9efb0f7e36e348e0b1ea8 +size 993708 diff --git a/dist/gramm-ai/browser/assets/images/writing/rabbitwithpencil.png b/dist/gramm-ai/browser/assets/images/writing/rabbitwithpencil.png new file mode 100644 index 0000000000000000000000000000000000000000..8da5571796d800400a4782ad26045cbdf5f3ae82 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/rabbitwithpencil.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f05d50d3c56ebbab7e23f585804adb688a2304983f58b973dadfb413db8c274 +size 1126444 diff --git a/dist/gramm-ai/browser/assets/images/writing/sun.png b/dist/gramm-ai/browser/assets/images/writing/sun.png new file mode 100644 index 0000000000000000000000000000000000000000..d92f0163d152637c37a14ee86a650fbc5fa686b0 --- /dev/null +++ b/dist/gramm-ai/browser/assets/images/writing/sun.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6263dfbc55ed42705ab865edcd1ee91b927d4c868c9b3d05b3194c272033839e +size 1038842 diff --git a/dist/gramm-ai/browser/assets/majema-favicon.png b/dist/gramm-ai/browser/assets/majema-favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..547e93f9cb062e75850b2f944d2276b0b9c64395 --- /dev/null +++ b/dist/gramm-ai/browser/assets/majema-favicon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3921d919e2feba4c61910c98303be14c8bc33f4c88a0e6ba6dfbdb4263d854f +size 3455 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/apple.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/apple.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..accbee83c95016738375f637fd86aa6b881bf712 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/apple.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:158222ad1b07188440d77474f9cdc6002973e5ed9213a234e603ff66adaa37ca +size 5790714 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/ball.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/ball.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..69c633123ad729bc2b5c0101c7d38418e0eebb63 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/ball.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbf6c21e57ebb0f34acf11dfc57eca9a6ceb944708b1dd573e0bb4f082efe7d7 +size 5634357 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/cat.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/cat.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..7b56c73ad8da9a0765173f0975a27e0430ed46ae --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/cat.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a4e400917eb73e7b2481b5e89799f4c877f860b96fef49e61f1a6fee2db718d +size 5360080 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/dog.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/dog.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..e02de555f77a80fb57348cd6d465a657df2b55b8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/dog.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aced7cd298f418f1d7ac6952c99df14d6030bd56a22ac17d08352bf283b1e0de +size 5342277 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/egg.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/egg.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..0923e93428ae270b21614aaeeb6f03aa4cb70c12 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/egg.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea0b1500966539eee652962355c20c380a903ee79bd79ef57e3c730302525382 +size 4935460 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/fish.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/fish.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..d689fc58aecd0bcab9ea600a33a60d8220b2079d --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/fish.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c724abc31b32d058b69c2142093c24504fa863dc5f7e7fb78310e6c78295013 +size 4907809 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/grapes.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/grapes.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..682419e2847c82ba6f62fafc5cb3f4ffeeac45dc --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/grapes.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8e26b650686a72c010852f336982b188f779af5938d554bf86f755a5fcdf9b6 +size 9053666 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/hat.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/hat.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..79c9440a33af6949dd334e4e92343e62b2348a62 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/hat.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a435204cb5e26fb7dda794b0b1ae482445841bd8643a3bd8eb4dbca2fa69921 +size 7203469 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/icecream.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/icecream.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..540d39188aa90b99359ded3ca6b46dcc5a288709 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/icecream.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89530e185f406945a71b19300c5a00711ada88641af6dcb6c59ab5dc5c5835c4 +size 6187864 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/jar.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/jar.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..0448e646bc083a3c9a6783d52b52a148b10893aa --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/jar.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85e954d6f782f5d17da42cf60c2a061d114068396285fd5d14602ca88f975d5d +size 9213510 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/kite.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/kite.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..8b65ed2c5573345bdbdf65ae22919530f4d27c69 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/kite.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba84336efc7cb4e687eee64ed861cd753fe99781cc6c5bebe3cefe1b4b5ca4e7 +size 1843752 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/lion.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/lion.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..cd8340605e47f0a1785aac0a2720cb94a8f2db85 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/lion.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eef94bc7cd6806e735254fdd077c3c211ca6cb1b5eefff27e125a7723ca3b305 +size 6097806 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/moon.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/moon.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..74532eb0ac2a9cd0d9310a02269ad8ce565bb44a --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/moon.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:147b9e565116439983091812d786a55752e4e44511d7bf61fa218ac9a0805464 +size 4901274 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/nest.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/nest.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..0e3f953158541c1731303bc4a711e0fa4f1819ec --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/nest.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:820d37c3b5b153753a58532c914e011d5cdbc90df30d1bd3c5788834bfbe6d84 +size 7650498 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/orange.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/orange.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..8465478c61c1e172de62a70b790daae5d84ca73e --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/orange.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9e3c0daecbcf4c8c26c2ec43a0bc68531922bd621117849624a88f01e1eb5b4 +size 6440257 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/pig.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/pig.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..45dbef2091f161428d583c5e3ebee013b25a5906 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/pig.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6db18186b1ac3e735eda91d9d73522f900a7414b83985fc063aa7b537be133e +size 6421810 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/queen.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/queen.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..7f7b9639773f7a5564537ea4b6106b1ba5729cdd --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/queen.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2e153fd06d061dc8f44595c3b5cccf1c11a2b4a3676c0d411f3586a4e965bd3 +size 2724148 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/rabbit.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/rabbit.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..cf1182245b30d9402db93d62d509f60dd8371a30 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/rabbit.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bfb9ec3714cc6dcd7cae3be5594e53a2267a26da0eb82770a60ea5c91bba6b8 +size 7266712 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/sun.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/sun.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..6b0361d5f9d21e26c345cc27cf7ab53e763e9609 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/sun.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85cb830b40c979014ed19ace95229fd8d806db3be52a87a3a387a20a017a6110 +size 1269242 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/tree.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/tree.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..f5596c9f0559ad934145b664a79d40394c873f53 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/tree.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6a80995e8b2ab65495d769ca18250c2a979d0b0a2865f8ea6bfcb6e70106a70 +size 12132430 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/umbrella.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/umbrella.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..f4db7e548f197fbdc742f6358b66fba26ba29d06 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/umbrella.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6df6d94e25ac51f98d33f3a452a937bb81c8d6000172fd51564bc8b43f925678 +size 2489346 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/van.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/van.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..cd919042a114c061221e5721a991496fe1c4b7f9 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/van.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86c3bdd636d07bb59384b530c66cc6518ac251a5cdae3c02ca70818c8c69ae04 +size 10097663 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/watch.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/watch.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..4831b31f8bccf50906ab06a61b4ba3c0f0a63676 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/watch.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ed42674319ae37c38f5d1e1b27c7deb7ade849e91a53e7e105c0fbed36f9701 +size 8078945 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/xylophone.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/xylophone.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..36e862e849dad94c247e4f40750cc3dcb06f70c4 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/xylophone.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fa2d40bc1f9f0bc96f147b0696000b33607ad9662ca5dd319b2f429d6bcfaa6 +size 2050298 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/yarn.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/yarn.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..aaef79e3b48d7937da710fd4db0f3ed34fd98b8a --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/yarn.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:742ba761ac8f917629fde9c560598fb2258131bb625d2d5c55f77c8440cf9e08 +size 3490049 diff --git a/dist/gramm-ai/browser/assets/pronvideo/animvideo/zebra.mp4 b/dist/gramm-ai/browser/assets/pronvideo/animvideo/zebra.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..a1e4c4541f9a6837a167165f17b04d6733c0d23b --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/animvideo/zebra.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1144f6b4892b7ed3b31d6895dd692b40428b8e985e41c0f7306087ad4a5a37fc +size 7161675 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio.png b/dist/gramm-ai/browser/assets/pronvideo/audio.png new file mode 100644 index 0000000000000000000000000000000000000000..d61fc08ba9444f02a57463640de4517418edbc37 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21066ffba9cccf98ff08e440f64e16328124c88e428aefc46e4131f4021d2aa5 +size 6159 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/apple.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/apple.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..7303312c0abbc8aab78c048fdf02d8a7e645c957 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/apple.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd3749451facc8a9736f5ec3c16ab71c1c0a44e23c88bc2faaaba86676cfd930 +size 13560 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/ball.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/ball.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..18f83ace12a0c02785725f9b526d176e22b36e40 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/ball.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eae7be3c52cf56a513aa701d71b1fbc93db1db23d5f15cb7a34b6b3f3cfa320f +size 12792 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/cat.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/cat.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..30f0dac1a040d4d9eb7d59d133c202e565a80cc6 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/cat.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5f8746b9ea52ac6f34f449603c8d24dac05bdf1463e7b2217ed3dfb36e877a9 +size 12912 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/dog.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/dog.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9c2f49f9b14ff1400b9bd13df213996a0344c6af --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/dog.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8198fcb9e7ef7ff2eb4a2a57f5bad61bb5de4896750e4004917c8a51c82ce0cb +size 11592 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/egg.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/egg.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..56323026e43cd7fe6f1a3fe67bb505e625e032c8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/egg.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b72a200ec8e163f9615b89599b4e6cc034c93d49e9d05580ea96c5fa5a94ec45 +size 9312 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/fish.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/fish.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..d89dbbba3fba3c74fc1082fe1a83f8dacc194c45 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/fish.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f1c7898a6fe74acf4a509755dbcd5a14961622ab212bd9e13ce2dd423d1077a +size 8976 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/grapes.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/grapes.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..56f5db67120e6710688686867bb329a527da0387 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/grapes.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cda848a9e69ea6f80a617d1f6f718820f86667e468087bdd89a388629e147057 +size 12264 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/hat.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/hat.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a0044c13cceb576e93175d1c8ba2e479b99fe2a8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/hat.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09df5945baf67d5d6f3b9337dc65b768a458b70e7046e2441218e1037fe7fdb1 +size 9672 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/icecream.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/icecream.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6d0e6d1ccedfbb2f77718f8e50514fdff0e773e8 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/icecream.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60a2a41f57a2fdadce831e6b18582cfcdfe4a87b80256effb5d832a429d784d2 +size 13200 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/jar.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/jar.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..439f3e637e73de2d79434b3ad542d242bdcb791f --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/jar.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c96580ccebde2b23c3b23399aa1d1956c7f290a8235ec3dd4881f250c6f4c0c1 +size 11616 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/kite.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/kite.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a0079a4f573ce8d68ae8df186f4452d2e6a3265d --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/kite.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27a9dee3aaa483d21ac7cf45ab11208f1c2541481d38900a2eeb0912a7d1eafe +size 10896 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/lion.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/lion.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..37352bc55d1c0c35e0a946d9fcc7ec67597b51c2 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/lion.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c4c156b7f55749be6d0a81045fadc7fed907d7ad4ffe338ba2c60140f861ff1 +size 10680 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/moon.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/moon.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..296ee06a41efa23ff38df19726d1ad1c29ddd245 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/moon.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2595f31a5d53a3f48535975f196807d4e5b01d50a895b462e7de2b0fc84ab2aa +size 9960 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/nest.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/nest.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8011de04820ba1db9d06bb66b358ca44492633b0 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/nest.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:530beb8d1ebd6b89cce0187d8a3cb401b0c237eb5f656e430caf1fe96b67c9a1 +size 12024 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/orange.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/orange.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..82296a46d630193932087b19cb0486f38dea23ca --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/orange.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c96726c87265cadcdf3f392190fd8b66964451da60add484d39dcb5db4226879 +size 9792 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/pig.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/pig.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..3ce1ae9cd458fe5b7cf7a13ac7b638a71bfda1be --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/pig.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48c66e98d9b044cfde83397ae699c6a90c3c396e747dc2d71f1290820082bf43 +size 8544 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/queen.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/queen.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..632a234e72fc3f1ef3308e0f3287a8abef0c47fc --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/queen.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b7fc5588e5bada0d30e696253c0c47829d5a374ec8dc17de8c7b3df5200c5aa +size 9216 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/rabbit.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/rabbit.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..429db03bfbabf174b8c68cf89d8dbda15eb93527 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/rabbit.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b22661ed72eaff38af8cccc055a2ac91200e213cad78371ee50db8023a0078f0 +size 10848 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/sun.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/sun.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..bb0ff47ef56a60efc79a92d792f60fc28026841a --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/sun.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:170d1bf45ca7c8f1dc268b4a1a5f19a986faae55780a834ecb5470509ac5ceff +size 11184 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/tree.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/tree.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..89e75cf2ee260c3888905f8e3864ac574768659d --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/tree.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab5cf4ad1e05e45125bab5f1ed611402e2c16c1175827e1d4fffd80cb7c45c11 +size 9288 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/umbrella.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/umbrella.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6aaee8c737cbc199e94d8255f0e51f6ff31539e9 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/umbrella.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa1bf35b7f8f9ef437639cc80c9a2b231fae5096327f7069c176bde84efc216d +size 11640 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/van.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/van.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a056aad4db828052dfbeeeae5e13768049297e67 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/van.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:249632f20e354aa4c41ecd60ef9e8cc8ee55601f72eb66b4a3a07bc7a2bb92af +size 9624 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/watch.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/watch.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..90a1e901c8768b61020fbfbfde4a50f2ea913c06 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/watch.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:629b00cae653b2aedb022391b6c9b4e0e869145f3c348fda674f206ffb635101 +size 11568 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/xylophone.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/xylophone.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..a79ff38ed555edbc53b12461faa6d12878b2f2df --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/xylophone.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b8f2764c762e59440f4bfcc40dfcdc516e86a437fbf7fc5623aa130f6dbec25 +size 15744 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/yarn.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/yarn.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f10745dfeeb4ebb73240cbd8942748f18c4b9825 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/yarn.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8e6f8aa4e3b7e44aa3faafe13f113fb2704fc7fbcd0378e74006f9b0ebc1684 +size 9504 diff --git a/dist/gramm-ai/browser/assets/pronvideo/audio/zebra.mp3 b/dist/gramm-ai/browser/assets/pronvideo/audio/zebra.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..6f69bdd64a720043dd24ca93cf77138d2a8fc656 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/audio/zebra.mp3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2873545095c089d763fd6d9185ffc868629041e7c0965d0fbbb1223d7c1a1730 +size 12984 diff --git a/dist/gramm-ai/browser/assets/pronvideo/feedback/consonant.mp4 b/dist/gramm-ai/browser/assets/pronvideo/feedback/consonant.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..2deed8d0182bc71a6da686c083ae194350841c61 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/feedback/consonant.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eae0c82c7556e573bd3d4c0e9b4b885430641885fe4a445e0425f6d90a04589a +size 5481531 diff --git a/dist/gramm-ai/browser/assets/pronvideo/feedback/ending.mp4 b/dist/gramm-ai/browser/assets/pronvideo/feedback/ending.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..654025470b5aaebf889ad554d2dd19f55831e047 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/feedback/ending.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1bbfff2a733efd22b952ae4e32f686b06ada31b247208b81c8cb187e818695f +size 4184262 diff --git a/dist/gramm-ai/browser/assets/pronvideo/feedback/multipleword.mp4 b/dist/gramm-ai/browser/assets/pronvideo/feedback/multipleword.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..ed31f0a02daa43121ff0644cce5bfc0126238a6f --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/feedback/multipleword.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7da6fc60d82f728164d12cb57acae93af3d7092be447f3b884ba262cf5533a1d +size 2252316 diff --git a/dist/gramm-ai/browser/assets/pronvideo/feedback/silence.mp4 b/dist/gramm-ai/browser/assets/pronvideo/feedback/silence.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..3ab7995c40eb2b1e5d2866aa9d760486c59941d4 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/feedback/silence.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b31c9c9bf22c6ebcf0ab84e23398ae019f613d5cfc494ea3d01c4541e16a56b0 +size 5405291 diff --git a/dist/gramm-ai/browser/assets/pronvideo/feedback/stress.mp4 b/dist/gramm-ai/browser/assets/pronvideo/feedback/stress.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..e74a63ad35124ce3219bc74ced3585d81042fd1c --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/feedback/stress.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67cbdef5635080cf0d38afbd1e4c5a0c79051363dd6fc138c7f3a1632ce47d7b +size 5214043 diff --git a/dist/gramm-ai/browser/assets/pronvideo/feedback/success.mp4 b/dist/gramm-ai/browser/assets/pronvideo/feedback/success.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..36b2ecca9751dc34e356ec0ff5a003fb0c071112 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/feedback/success.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7065eb4444fff7033ffae8183901123ce45bca47114d8307652523006ca4b7b9 +size 7149268 diff --git a/dist/gramm-ai/browser/assets/pronvideo/feedback/syllable.mp4 b/dist/gramm-ai/browser/assets/pronvideo/feedback/syllable.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..f6c7cdc2e2390152e9d8bf3313fa1db1baf8cce7 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/feedback/syllable.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01c7ecb44cc4eee9fb9cb32ec7f363e367c17479c0ae91883d902f428e3db9c9 +size 3955318 diff --git a/dist/gramm-ai/browser/assets/pronvideo/feedback/vowels.mp4 b/dist/gramm-ai/browser/assets/pronvideo/feedback/vowels.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..3bb0cf3ec75077a7c824d073209f4fd1f5300c80 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/feedback/vowels.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd9a3f4ddfdadb90b0aaadbfa0a00c5aa80342f4b133543836d2b21592eb3443 +size 5837969 diff --git a/dist/gramm-ai/browser/assets/pronvideo/feedback/wrongword.mp4 b/dist/gramm-ai/browser/assets/pronvideo/feedback/wrongword.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..198eb7ab19d9034c2aaa8325a8da3905aa23d25a --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/feedback/wrongword.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0a32e7b4ed1f4355aa0eca1bd48c5ed4030e3deb7f2e5a412cb6a3fc3d06df1 +size 5194285 diff --git a/dist/gramm-ai/browser/assets/pronvideo/listening.mp4 b/dist/gramm-ai/browser/assets/pronvideo/listening.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..415a5fee2694f8efe711df9014d70305eb1a8781 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/listening.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26c028bad47e42b3b89e05b2e603d90309b82d53193d7e2be0c88686c5dc57ea +size 3569866 diff --git a/dist/gramm-ai/browser/assets/pronvideo/pause.png b/dist/gramm-ai/browser/assets/pronvideo/pause.png new file mode 100644 index 0000000000000000000000000000000000000000..74f6fae2b84605c0e01643fc3645ea1892fba70e --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/pause.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9efce36e388aaccad1b743e590ff1e6ff53e27260c6b48b28f46db0187d6b1db +size 10788 diff --git a/dist/gramm-ai/browser/assets/pronvideo/play.png b/dist/gramm-ai/browser/assets/pronvideo/play.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e515f3b886cc860c20f5a62715198cdb9cd54e --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/play.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5b587892782a79de9117ba4259158866d80f56b97aa764121cff189b135fb4e +size 3112 diff --git a/dist/gramm-ai/browser/assets/pronvideo/slate.png b/dist/gramm-ai/browser/assets/pronvideo/slate.png new file mode 100644 index 0000000000000000000000000000000000000000..3024388173d61ed43aaeedc6387a50adc32bbd30 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/slate.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c43b888d1dd64f1d0c93917dbe7813353d454b271eb0ae3315d70a3d24a52b76 +size 21422 diff --git a/dist/gramm-ai/browser/assets/pronvideo/teacher-nod.mp4 b/dist/gramm-ai/browser/assets/pronvideo/teacher-nod.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..a2064498c93a886c334609324a8c8b4c7f5a9200 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/teacher-nod.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f85a86632a64280579167285cfe71bd32d556797ec8e58e2fc14cf8285e1fb3 +size 117067 diff --git a/dist/gramm-ai/browser/assets/pronvideo/teacher.png b/dist/gramm-ai/browser/assets/pronvideo/teacher.png new file mode 100644 index 0000000000000000000000000000000000000000..9de44aedc768dbe31b98022cb6fb7d219b781c10 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/teacher.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5e6f6e2ef93ec59d4b47f41af45bc73a229c4225d2337c506ba7113ec72357c +size 293505 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/apple.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/apple.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..b76a10925148eadc912f124b9c18d6bd80c49979 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/apple.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dc1cd633647903a950c33999a221db9444b4ecffa94461344055b6727af6e7f +size 7134565 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/ball.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/ball.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..4c25d6602333b68079e9c12ac9489cd5421f3215 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/ball.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a508e9d7a8d0efe88d8f4d3633832266090793136f06b2e59c87e8ee694fbeda +size 7606207 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/cat.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/cat.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..a9c85eb3bc54973c77436a94c444a6922ff08578 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/cat.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f171b0200d6662ee0cb94fc36c98a65ca1daf8053e98bcd5d4a91eb883cbc294 +size 7805298 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/dog.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/dog.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..e85061401593cc32964cf0006991fba3d4b436cd --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/dog.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58140b73777fc39ebed3d282f215573b3ffb8f9c05d74b68c938ab2aefddb31e +size 7150587 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/egg.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/egg.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..043af61e02c4d6e341b4ecb6f48668dc62d85902 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/egg.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:522a425054b0d16f1bb87ace5ed9bddb6f366d0bfc4fdd91907c38db18602035 +size 6383313 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/fish.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/fish.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..772c7e933d9b59da0232e2cb78a6f31e7556d2eb --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/fish.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d81deb2735fdb7f41c5514f505fb75d050ca769fe308df665a533b42821374e +size 7276274 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/grapes.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/grapes.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..8daba3b4f407b8c17d26f29cdc52451fe5142602 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/grapes.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f4542c920fe022d427d69b8fa9bc7668c78c149eb79c42bd96776472f5d94d5 +size 6988222 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/hat.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/hat.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c3366c1fa65c8d1fe52945aaf6b53c0b324c0a78 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/hat.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7ad6c5f8ffa23b57e85ae36b4b2c60ac58fcf4a7c5bc086cfd74a22cb2ef92b +size 7053688 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/ice-cream.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/ice-cream.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..95de063d1a737a7f562cfffcffb000f44504db90 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/ice-cream.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb339a511694db8051ab8e331f91a6a112b3ce8de939ce6e398204d86c298650 +size 8151667 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/jar.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/jar.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c292f7c88902e2b11b92cee05e94fb769b6e8f3b --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/jar.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45b6d886b970282b375031b20c3007443417fa4d7ab4147f624bcde08fef5905 +size 7558106 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/kite.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/kite.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..60bb639caabbd02f3d628df9025a2a21929a1497 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/kite.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:396d670691bc4c714789c3ba4d8a080ffd210e6ca398d3869c04e9eeeda9516c +size 7384715 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/lion-old.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/lion-old.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..937d9a72f1fbc6094dfc7507dfb199cf3b9acb18 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/lion-old.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca2d4e211b05380e1152ede6052e0751d29e46da96c78431d7bd22a83f301e94 +size 5431178 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/lion.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/lion.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..7127f16bac9391750a0c05a1fa8f888bd2417389 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/lion.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:952c1a94530ce8e620851326e7d6d368be370b42709a3677aace687e925303f8 +size 5127880 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/moon.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/moon.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..e809ab291db8ed3dcd92c3745e17811e9472f578 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/moon.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:790afab95dd4a4a94d96b7edc525fa37dc8ebb3ae0752df4db4a4e655760f7bb +size 4255165 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/nest.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/nest.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..cd184c4c01d7ca4f0f3540da9c67dcfc38276194 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/nest.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0335f6a7ad4bb94dd6ce4bb9efcaade16bac270b7d5d2f43bad8fa8a331a484 +size 4301304 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/orange.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/orange.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..edab062c65348212e3fb4307fbaf4b41c03e7214 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/orange.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9778f3a81f2d925d552b8b03431468aac03b89f5713ee5b9776d388e58d8fd8 +size 5016720 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/pig.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/pig.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..0cbf865784dc48c0778ef940dfabbb154c8bfaf5 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/pig.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72d4ae305e0a4db38bf0b794baefb6f81834416de57187549eab3f7ad3c8a561 +size 4072009 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/queen.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/queen.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..ad2328797a2e87b0860bf51d44df796d1af33941 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/queen.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07256cdf96e4e603a8604688f6d1c42667319128c5874281b8f5e29a83197884 +size 4707339 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/rabbit-old.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/rabbit-old.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..3017062045b1bda7d37a4ac7ae67ee322953471f --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/rabbit-old.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c3b59991ee348ba0a9117ad5648fbf0ea03fc69298b4d3f8863d45dd94194ee +size 4932831 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/rabbit.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/rabbit.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..7dbe3b14f3ab083454214eb308c4af084b23ccae --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/rabbit.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cebe3f87a003315b40ef9ceaa62ac7ed47f05b5e37858d891c413b5dd01626a2 +size 4795049 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/sun.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/sun.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..026824bbe5b14945c96e041afd4ede3844ed27ee --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/sun.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec104e7db0534360ef9eebeae09472b0e19267f3555d0acc5bb66c996cb049a6 +size 4805357 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/tree.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/tree.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..afc883ebef165c27e0b0e1b1f11202ecb522a182 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/tree.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54073d3b56747c9b34ab2edb7777875f2c63549a212dcd367623921400f15e07 +size 5155482 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/umbrella.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/umbrella.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..8bd529488484ed51144e83df6c46dea06858059b --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/umbrella.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c4a22ead24864c9a1966147fd0cf6f1e248313841fd98ceb702682825d3073d +size 5174794 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/van-old.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/van-old.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..dd3da1ea204bff27922c15cb2e04c26842f9d16d --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/van-old.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4724e2cab20be89b9148c699a33c2a433e239611a7787c45487942ba7ef9d981 +size 4462232 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/van.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/van.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..2115947f2a099a518fea4c31eead5f62bde38640 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/van.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19ef3b0027192a8d08ebd3069d0bbc09a3dbfdf2c10262ba0c756db54517d57b +size 4232804 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/watch.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/watch.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..2917d8c0cb3c2fe2038cf8d4cd7393deceabab92 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/watch.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e4f27454697987ebb17c25fb86e88a2196873b040c222d5970da05b568f91db +size 4960176 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/xylophone-old.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/xylophone-old.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..1076eb925a1913061ed7d9368bff3b9477fc594a --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/xylophone-old.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93fc9aef9f9419f344a0ba97ff3b5d1c0743ad121956f462e504e31388893164 +size 5199424 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/xylophone.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/xylophone.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..9157201e0c3148518f00d79ead1efa9c105499cc --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/xylophone.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfc61e0844b3df40b4ec74694fd048c3811ba2dd5fd16b48ac48a2619aa4d3a6 +size 18925813 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/yarn-old.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/yarn-old.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..bb1fc165d47b459bd6edd28f53c3fea9ebbcbd4c --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/yarn-old.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fc19acd88c47a3f7c33d750ef0f77c2dce6272d51e9e532576c2d00bda52413 +size 5095081 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/yarn.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/yarn.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..d3caf901cd898f92aa95965393209c3116d146ef --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/yarn.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:640cb94a1c14d8b733556a81f765319b3eea544b26022f5eece33530523c2b95 +size 15318745 diff --git a/dist/gramm-ai/browser/assets/pronvideo/videos/zebra-old.mp4 b/dist/gramm-ai/browser/assets/pronvideo/videos/zebra-old.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..fad180098b2b4f46357210f27c9e3e8c40cde5e0 --- /dev/null +++ b/dist/gramm-ai/browser/assets/pronvideo/videos/zebra-old.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60b31a107a1ea872150219c4f5c5b903ddaab3cf07671e5960494f90f9b20074 +size 4569058 diff --git a/dist/gramm-ai/browser/assets/sample.mp4 b/dist/gramm-ai/browser/assets/sample.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..c9f43a452a7652f3274c23f8f48a3a31ed99a60d --- /dev/null +++ b/dist/gramm-ai/browser/assets/sample.mp4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbbbb00678ca04a944d57c39391e5671c87db6ee40374032a49c716514bf9c95 +size 3131876 diff --git a/dist/gramm-ai/browser/index.html b/dist/gramm-ai/browser/index.html new file mode 100644 index 0000000000000000000000000000000000000000..8c990ac8e9a7e5932de40816f2f8483eb40153de --- /dev/null +++ b/dist/gramm-ai/browser/index.html @@ -0,0 +1,20 @@ + + + + + Py-Learn + + + + + + + + + + + + + + diff --git a/dist/gramm-ai/browser/main-64X64OOI.js b/dist/gramm-ai/browser/main-64X64OOI.js new file mode 100644 index 0000000000000000000000000000000000000000..ad1cb09e6f3d49ddc6923251501f723b289d4695 --- /dev/null +++ b/dist/gramm-ai/browser/main-64X64OOI.js @@ -0,0 +1,92 @@ +var $w=Object.defineProperty,Ww=Object.defineProperties;var qw=Object.getOwnPropertyDescriptors;var dm=Object.getOwnPropertySymbols;var Gw=Object.prototype.hasOwnProperty,Qw=Object.prototype.propertyIsEnumerable;var um=(t,n,e)=>n in t?$w(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e,A=(t,n)=>{for(var e in n||={})Gw.call(n,e)&&um(t,e,n[e]);if(dm)for(var e of dm(n))Qw.call(n,e)&&um(t,e,n[e]);return t},ke=(t,n)=>Ww(t,qw(n));var it=(t,n,e)=>new Promise((i,r)=>{var o=u=>{try{d(e.next(u))}catch(h){r(h)}},s=u=>{try{d(e.throw(u))}catch(h){r(h)}},d=u=>u.done?i(u.value):Promise.resolve(u.value).then(o,s);d((e=e.apply(t,n)).next())});var hm=null;var Td=1,Ad=Symbol("SIGNAL");function Te(t){let n=hm;return hm=t,n}var pm={version:0,lastCleanEpoch:0,dirty:!1,producerNode:void 0,producerLastReadVersion:void 0,producerIndexOfThis:void 0,nextProducerIndex:0,liveConsumerNode:void 0,liveConsumerIndexOfThis:void 0,consumerAllowSignalWrites:!1,consumerIsAlwaysLive:!1,producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Yw(t){if(!(Nd(t)&&!t.dirty)&&!(!t.dirty&&t.lastCleanEpoch===Td)){if(!t.producerMustRecompute(t)&&!Rd(t)){t.dirty=!1,t.lastCleanEpoch=Td;return}t.producerRecomputeValue(t),t.dirty=!1,t.lastCleanEpoch=Td}}function fm(t){return t&&(t.nextProducerIndex=0),Te(t)}function mm(t,n){if(Te(n),!(!t||t.producerNode===void 0||t.producerIndexOfThis===void 0||t.producerLastReadVersion===void 0)){if(Nd(t))for(let e=t.nextProducerIndex;et.nextProducerIndex;)t.producerNode.pop(),t.producerLastReadVersion.pop(),t.producerIndexOfThis.pop()}}function Rd(t){ya(t);for(let n=0;n0}function ya(t){t.producerNode??=[],t.producerIndexOfThis??=[],t.producerLastReadVersion??=[]}function Zw(t){t.liveConsumerNode??=[],t.liveConsumerIndexOfThis??=[]}function Xw(){throw new Error}var Kw=Xw;function vm(t){Kw=t}function Q(t){return typeof t=="function"}function Lr(t){let e=t(i=>{Error.call(i),i.stack=new Error().stack});return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var wa=Lr(t=>function(e){t(this),this.message=e?`${e.length} errors occurred during unsubscription: +${e.map((i,r)=>`${r+1}) ${i.toString()}`).join(` + `)}`:"",this.name="UnsubscriptionError",this.errors=e});function Ji(t,n){if(t){let e=t.indexOf(n);0<=e&&t.splice(e,1)}}var qe=class t{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:e}=this;if(e)if(this._parentage=null,Array.isArray(e))for(let o of e)o.remove(this);else e.remove(this);let{initialTeardown:i}=this;if(Q(i))try{i()}catch(o){n=o instanceof wa?o.errors:[o]}let{_finalizers:r}=this;if(r){this._finalizers=null;for(let o of r)try{_m(o)}catch(s){n=n??[],s instanceof wa?n=[...n,...s.errors]:n.push(s)}}if(n)throw new wa(n)}}add(n){var e;if(n&&n!==this)if(this.closed)_m(n);else{if(n instanceof t){if(n.closed||n._hasParent(this))return;n._addParent(this)}(this._finalizers=(e=this._finalizers)!==null&&e!==void 0?e:[]).push(n)}}_hasParent(n){let{_parentage:e}=this;return e===n||Array.isArray(e)&&e.includes(n)}_addParent(n){let{_parentage:e}=this;this._parentage=Array.isArray(e)?(e.push(n),e):e?[e,n]:n}_removeParent(n){let{_parentage:e}=this;e===n?this._parentage=null:Array.isArray(e)&&Ji(e,n)}remove(n){let{_finalizers:e}=this;e&&Ji(e,n),n instanceof t&&n._removeParent(this)}};qe.EMPTY=(()=>{let t=new qe;return t.closed=!0,t})();var Ld=qe.EMPTY;function xa(t){return t instanceof qe||t&&"closed"in t&&Q(t.remove)&&Q(t.add)&&Q(t.unsubscribe)}function _m(t){Q(t)?t():t.unsubscribe()}var In={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Vr={setTimeout(t,n,...e){let{delegate:i}=Vr;return i?.setTimeout?i.setTimeout(t,n,...e):setTimeout(t,n,...e)},clearTimeout(t){let{delegate:n}=Vr;return(n?.clearTimeout||clearTimeout)(t)},delegate:void 0};function Ca(t){Vr.setTimeout(()=>{let{onUnhandledError:n}=In;if(n)n(t);else throw t})}function Uo(){}var bm=Vd("C",void 0,void 0);function ym(t){return Vd("E",void 0,t)}function wm(t){return Vd("N",t,void 0)}function Vd(t,n,e){return{kind:t,value:n,error:e}}var er=null;function jr(t){if(In.useDeprecatedSynchronousErrorHandling){let n=!er;if(n&&(er={errorThrown:!1,error:null}),t(),n){let{errorThrown:e,error:i}=er;if(er=null,e)throw i}}else t()}function xm(t){In.useDeprecatedSynchronousErrorHandling&&er&&(er.errorThrown=!0,er.error=t)}var tr=class extends qe{constructor(n){super(),this.isStopped=!1,n?(this.destination=n,xa(n)&&n.add(this)):this.destination=tx}static create(n,e,i){return new Br(n,e,i)}next(n){this.isStopped?Bd(wm(n),this):this._next(n)}error(n){this.isStopped?Bd(ym(n),this):(this.isStopped=!0,this._error(n))}complete(){this.isStopped?Bd(bm,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()}}},Jw=Function.prototype.bind;function jd(t,n){return Jw.call(t,n)}var Ud=class{constructor(n){this.partialObserver=n}next(n){let{partialObserver:e}=this;if(e.next)try{e.next(n)}catch(i){Sa(i)}}error(n){let{partialObserver:e}=this;if(e.error)try{e.error(n)}catch(i){Sa(i)}else Sa(n)}complete(){let{partialObserver:n}=this;if(n.complete)try{n.complete()}catch(e){Sa(e)}}},Br=class extends tr{constructor(n,e,i){super();let r;if(Q(n)||!n)r={next:n??void 0,error:e??void 0,complete:i??void 0};else{let o;this&&In.useDeprecatedNextContext?(o=Object.create(n),o.unsubscribe=()=>this.unsubscribe(),r={next:n.next&&jd(n.next,o),error:n.error&&jd(n.error,o),complete:n.complete&&jd(n.complete,o)}):r=n}this.destination=new Ud(r)}};function Sa(t){In.useDeprecatedSynchronousErrorHandling?xm(t):Ca(t)}function ex(t){throw t}function Bd(t,n){let{onStoppedNotification:e}=In;e&&Vr.setTimeout(()=>e(t,n))}var tx={closed:!0,next:Uo,error:ex,complete:Uo};var Ur=typeof Symbol=="function"&&Symbol.observable||"@@observable";function Bt(t){return t}function zd(...t){return Hd(t)}function Hd(t){return t.length===0?Bt:t.length===1?t[0]:function(e){return t.reduce((i,r)=>r(i),e)}}var oe=(()=>{class t{constructor(e){e&&(this._subscribe=e)}lift(e){let i=new t;return i.source=this,i.operator=e,i}subscribe(e,i,r){let o=ix(e)?e:new Br(e,i,r);return jr(()=>{let{operator:s,source:d}=this;o.add(s?s.call(o,d):d?this._subscribe(o):this._trySubscribe(o))}),o}_trySubscribe(e){try{return this._subscribe(e)}catch(i){e.error(i)}}forEach(e,i){return i=Cm(i),new i((r,o)=>{let s=new Br({next:d=>{try{e(d)}catch(u){o(u),s.unsubscribe()}},error:o,complete:r});this.subscribe(s)})}_subscribe(e){var i;return(i=this.source)===null||i===void 0?void 0:i.subscribe(e)}[Ur](){return this}pipe(...e){return Hd(e)(this)}toPromise(e){return e=Cm(e),new e((i,r)=>{let o;this.subscribe(s=>o=s,s=>r(s),()=>i(o))})}}return t.create=n=>new t(n),t})();function Cm(t){var n;return(n=t??In.Promise)!==null&&n!==void 0?n:Promise}function nx(t){return t&&Q(t.next)&&Q(t.error)&&Q(t.complete)}function ix(t){return t&&t instanceof tr||nx(t)&&xa(t)}function $d(t){return Q(t?.lift)}function ge(t){return n=>{if($d(n))return n.lift(function(e){try{return t(e,this)}catch(i){this.error(i)}});throw new TypeError("Unable to lift unknown Observable type")}}function ce(t,n,e,i,r){return new Wd(t,n,e,i,r)}var Wd=class extends tr{constructor(n,e,i,r,o,s){super(n),this.onFinalize=o,this.shouldUnsubscribe=s,this._next=e?function(d){try{e(d)}catch(u){n.error(u)}}:super._next,this._error=r?function(d){try{r(d)}catch(u){n.error(u)}finally{this.unsubscribe()}}:super._error,this._complete=i?function(){try{i()}catch(d){n.error(d)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var n;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:e}=this;super.unsubscribe(),!e&&((n=this.onFinalize)===null||n===void 0||n.call(this))}}};function zr(){return ge((t,n)=>{let e=null;t._refCount++;let i=ce(n,void 0,void 0,void 0,()=>{if(!t||t._refCount<=0||0<--t._refCount){e=null;return}let r=t._connection,o=e;e=null,r&&(!o||r===o)&&r.unsubscribe(),n.unsubscribe()});t.subscribe(i),i.closed||(e=t.connect())})}var Hr=class extends oe{constructor(n,e){super(),this.source=n,this.subjectFactory=e,this._subject=null,this._refCount=0,this._connection=null,$d(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 qe;let e=this.getSubject();n.add(this.source.subscribe(ce(e,void 0,()=>{this._teardown(),e.complete()},i=>{this._teardown(),e.error(i)},()=>this._teardown()))),n.closed&&(this._connection=null,n=qe.EMPTY)}return n}refCount(){return zr()(this)}};var Sm=Lr(t=>function(){t(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var ue=(()=>{class t extends oe{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){let i=new Ea(this,this);return i.operator=e,i}_throwIfClosed(){if(this.closed)throw new Sm}next(e){jr(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let i of this.currentObservers)i.next(e)}})}error(e){jr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;let{observers:i}=this;for(;i.length;)i.shift().error(e)}})}complete(){jr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return((e=this.observers)===null||e===void 0?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){let{hasError:i,isStopped:r,observers:o}=this;return i||r?Ld:(this.currentObservers=null,o.push(e),new qe(()=>{this.currentObservers=null,Ji(o,e)}))}_checkFinalizedStatuses(e){let{hasError:i,thrownError:r,isStopped:o}=this;i?e.error(r):o&&e.complete()}asObservable(){let e=new oe;return e.source=this,e}}return t.create=(n,e)=>new Ea(n,e),t})(),Ea=class extends ue{constructor(n,e){super(),this.destination=n,this.source=e}next(n){var e,i;(i=(e=this.destination)===null||e===void 0?void 0:e.next)===null||i===void 0||i.call(e,n)}error(n){var e,i;(i=(e=this.destination)===null||e===void 0?void 0:e.error)===null||i===void 0||i.call(e,n)}complete(){var n,e;(e=(n=this.destination)===null||n===void 0?void 0:n.complete)===null||e===void 0||e.call(n)}_subscribe(n){var e,i;return(i=(e=this.source)===null||e===void 0?void 0:e.subscribe(n))!==null&&i!==void 0?i:Ld}};var Ge=class extends ue{constructor(n){super(),this._value=n}get value(){return this.getValue()}_subscribe(n){let e=super._subscribe(n);return!e.closed&&n.next(this._value),e}getValue(){let{hasError:n,thrownError:e,_value:i}=this;if(n)throw e;return this._throwIfClosed(),i}next(n){super.next(this._value=n)}};var qd={now(){return(qd.delegate||Date).now()},delegate:void 0};var Ma=class extends qe{constructor(n,e){super()}schedule(n,e=0){return this}};var zo={setInterval(t,n,...e){let{delegate:i}=zo;return i?.setInterval?i.setInterval(t,n,...e):setInterval(t,n,...e)},clearInterval(t){let{delegate:n}=zo;return(n?.clearInterval||clearInterval)(t)},delegate:void 0};var Ia=class extends Ma{constructor(n,e){super(n,e),this.scheduler=n,this.work=e,this.pending=!1}schedule(n,e=0){var i;if(this.closed)return this;this.state=n;let r=this.id,o=this.scheduler;return r!=null&&(this.id=this.recycleAsyncId(o,r,e)),this.pending=!0,this.delay=e,this.id=(i=this.id)!==null&&i!==void 0?i:this.requestAsyncId(o,this.id,e),this}requestAsyncId(n,e,i=0){return zo.setInterval(n.flush.bind(n,this),i)}recycleAsyncId(n,e,i=0){if(i!=null&&this.delay===i&&this.pending===!1)return e;e!=null&&zo.clearInterval(e)}execute(n,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;let i=this._execute(n,e);if(i)return i;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(n,e){let i=!1,r;try{this.work(n)}catch(o){i=!0,r=o||new Error("Scheduled action threw falsy error")}if(i)return this.unsubscribe(),r}unsubscribe(){if(!this.closed){let{id:n,scheduler:e}=this,{actions:i}=e;this.work=this.state=this.scheduler=null,this.pending=!1,Ji(i,this),n!=null&&(this.id=this.recycleAsyncId(e,n,null)),this.delay=null,super.unsubscribe()}}};var $r=class t{constructor(n,e=t.now){this.schedulerActionCtor=n,this.now=e}schedule(n,e=0,i){return new this.schedulerActionCtor(this,n).schedule(i,e)}};$r.now=qd.now;var Da=class extends $r{constructor(n,e=$r.now){super(n,e),this.actions=[],this._active=!1}flush(n){let{actions:e}=this;if(this._active){e.push(n);return}let i;this._active=!0;do if(i=n.execute(n.state,n.delay))break;while(n=e.shift());if(this._active=!1,i){for(;n=e.shift();)n.unsubscribe();throw i}}};var Ho=new Da(Ia),Em=Ho;var Ut=new oe(t=>t.complete());function Pa(t){return t&&Q(t.schedule)}function Gd(t){return t[t.length-1]}function ka(t){return Q(Gd(t))?t.pop():void 0}function $n(t){return Pa(Gd(t))?t.pop():void 0}function Mm(t,n){return typeof Gd(t)=="number"?t.pop():n}function Dm(t,n,e,i){function r(o){return o instanceof e?o:new e(function(s){s(o)})}return new(e||(e=Promise))(function(o,s){function d(p){try{h(i.next(p))}catch(m){s(m)}}function u(p){try{h(i.throw(p))}catch(m){s(m)}}function h(p){p.done?o(p.value):r(p.value).then(d,u)}h((i=i.apply(t,n||[])).next())})}function Im(t){var n=typeof Symbol=="function"&&Symbol.iterator,e=n&&t[n],i=0;if(e)return e.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}function nr(t){return this instanceof nr?(this.v=t,this):new nr(t)}function Pm(t,n,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=e.apply(t,n||[]),r,o=[];return r=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),d("next"),d("throw"),d("return",s),r[Symbol.asyncIterator]=function(){return this},r;function s(w){return function(S){return Promise.resolve(S).then(w,m)}}function d(w,S){i[w]&&(r[w]=function(D){return new Promise(function(O,L){o.push([w,D,O,L])>1||u(w,D)})},S&&(r[w]=S(r[w])))}function u(w,S){try{h(i[w](S))}catch(D){b(o[0][3],D)}}function h(w){w.value instanceof nr?Promise.resolve(w.value.v).then(p,m):b(o[0][2],w)}function p(w){u("next",w)}function m(w){u("throw",w)}function b(w,S){w(S),o.shift(),o.length&&u(o[0][0],o[0][1])}}function km(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=t[Symbol.asyncIterator],e;return n?n.call(t):(t=typeof Im=="function"?Im(t):t[Symbol.iterator](),e={},i("next"),i("throw"),i("return"),e[Symbol.asyncIterator]=function(){return this},e);function i(o){e[o]=t[o]&&function(s){return new Promise(function(d,u){s=t[o](s),r(d,u,s.done,s.value)})}}function r(o,s,d,u){Promise.resolve(u).then(function(h){o({value:h,done:d})},s)}}var Wr=t=>t&&typeof t.length=="number"&&typeof t!="function";function Oa(t){return Q(t?.then)}function Ta(t){return Q(t[Ur])}function Aa(t){return Symbol.asyncIterator&&Q(t?.[Symbol.asyncIterator])}function Ra(t){return new TypeError(`You provided ${t!==null&&typeof t=="object"?"an invalid object":`'${t}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function rx(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Fa=rx();function Na(t){return Q(t?.[Fa])}function La(t){return Pm(this,arguments,function*(){let e=t.getReader();try{for(;;){let{value:i,done:r}=yield nr(e.read());if(r)return yield nr(void 0);yield yield nr(i)}}finally{e.releaseLock()}})}function Va(t){return Q(t?.getReader)}function Qe(t){if(t instanceof oe)return t;if(t!=null){if(Ta(t))return ox(t);if(Wr(t))return sx(t);if(Oa(t))return ax(t);if(Aa(t))return Om(t);if(Na(t))return lx(t);if(Va(t))return cx(t)}throw Ra(t)}function ox(t){return new oe(n=>{let e=t[Ur]();if(Q(e.subscribe))return e.subscribe(n);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function sx(t){return new oe(n=>{for(let e=0;e{t.then(e=>{n.closed||(n.next(e),n.complete())},e=>n.error(e)).then(null,Ca)})}function lx(t){return new oe(n=>{for(let e of t)if(n.next(e),n.closed)return;n.complete()})}function Om(t){return new oe(n=>{dx(t,n).catch(e=>n.error(e))})}function cx(t){return Om(La(t))}function dx(t,n){var e,i,r,o;return Dm(this,void 0,void 0,function*(){try{for(e=km(t);i=yield e.next(),!i.done;){let s=i.value;if(n.next(s),n.closed)return}}catch(s){r={error:s}}finally{try{i&&!i.done&&(o=e.return)&&(yield o.call(e))}finally{if(r)throw r.error}}n.complete()})}function Gt(t,n,e,i=0,r=!1){let o=n.schedule(function(){e(),r?t.add(this.schedule(null,i)):this.unsubscribe()},i);if(t.add(o),!r)return o}function ja(t,n=0){return ge((e,i)=>{e.subscribe(ce(i,r=>Gt(i,t,()=>i.next(r),n),()=>Gt(i,t,()=>i.complete(),n),r=>Gt(i,t,()=>i.error(r),n)))})}function Ba(t,n=0){return ge((e,i)=>{i.add(t.schedule(()=>e.subscribe(i),n))})}function Tm(t,n){return Qe(t).pipe(Ba(n),ja(n))}function Am(t,n){return Qe(t).pipe(Ba(n),ja(n))}function Rm(t,n){return new oe(e=>{let i=0;return n.schedule(function(){i===t.length?e.complete():(e.next(t[i++]),e.closed||this.schedule())})})}function Fm(t,n){return new oe(e=>{let i;return Gt(e,n,()=>{i=t[Fa](),Gt(e,n,()=>{let r,o;try{({value:r,done:o}=i.next())}catch(s){e.error(s);return}o?e.complete():e.next(r)},0,!0)}),()=>Q(i?.return)&&i.return()})}function Ua(t,n){if(!t)throw new Error("Iterable cannot be null");return new oe(e=>{Gt(e,n,()=>{let i=t[Symbol.asyncIterator]();Gt(e,n,()=>{i.next().then(r=>{r.done?e.complete():e.next(r.value)})},0,!0)})})}function Nm(t,n){return Ua(La(t),n)}function Lm(t,n){if(t!=null){if(Ta(t))return Tm(t,n);if(Wr(t))return Rm(t,n);if(Oa(t))return Am(t,n);if(Aa(t))return Ua(t,n);if(Na(t))return Fm(t,n);if(Va(t))return Nm(t,n)}throw Ra(t)}function Ue(t,n){return n?Lm(t,n):Qe(t)}function j(...t){let n=$n(t);return Ue(t,n)}function xt(t,n){let e=Q(t)?t:()=>t,i=r=>r.error(e());return new oe(n?r=>n.schedule(i,0,r):i)}function za(t){return!!t&&(t instanceof oe||Q(t.lift)&&Q(t.subscribe))}var Dn=Lr(t=>function(){t(this),this.name="EmptyError",this.message="no elements in sequence"});function Qd(t,n){let e=typeof n=="object";return new Promise((i,r)=>{let o=!1,s;t.subscribe({next:d=>{s=d,o=!0},error:r,complete:()=>{o?i(s):e?i(n.defaultValue):r(new Dn)}})})}function Vm(t){return t instanceof Date&&!isNaN(t)}function Y(t,n){return ge((e,i)=>{let r=0;e.subscribe(ce(i,o=>{i.next(t.call(n,o,r++))}))})}var{isArray:ux}=Array;function hx(t,n){return ux(n)?t(...n):t(n)}function qr(t){return Y(n=>hx(t,n))}var{isArray:px}=Array,{getPrototypeOf:fx,prototype:mx,keys:gx}=Object;function Ha(t){if(t.length===1){let n=t[0];if(px(n))return{args:n,keys:null};if(vx(n)){let e=gx(n);return{args:e.map(i=>n[i]),keys:e}}}return{args:t,keys:null}}function vx(t){return t&&typeof t=="object"&&fx(t)===mx}function $a(t,n){return t.reduce((e,i,r)=>(e[i]=n[r],e),{})}function ir(...t){let n=$n(t),e=ka(t),{args:i,keys:r}=Ha(t);if(i.length===0)return Ue([],n);let o=new oe(_x(i,n,r?s=>$a(r,s):Bt));return e?o.pipe(qr(e)):o}function _x(t,n,e=Bt){return i=>{jm(n,()=>{let{length:r}=t,o=new Array(r),s=r,d=r;for(let u=0;u{let h=Ue(t[u],n),p=!1;h.subscribe(ce(i,m=>{o[u]=m,p||(p=!0,d--),d||i.next(e(o.slice()))},()=>{--s||i.complete()}))},i)},i)}}function jm(t,n,e){t?Gt(e,t,n):n()}function Bm(t,n,e,i,r,o,s,d){let u=[],h=0,p=0,m=!1,b=()=>{m&&!u.length&&!h&&n.complete()},w=D=>h{o&&n.next(D),h++;let O=!1;Qe(e(D,p++)).subscribe(ce(n,L=>{r?.(L),o?w(L):n.next(L)},()=>{O=!0},void 0,()=>{if(O)try{for(h--;u.length&&hS(L)):S(L)}b()}catch(L){n.error(L)}}))};return t.subscribe(ce(n,w,()=>{m=!0,b()})),()=>{d?.()}}function rt(t,n,e=1/0){return Q(n)?rt((i,r)=>Y((o,s)=>n(i,o,r,s))(Qe(t(i,r))),e):(typeof n=="number"&&(e=n),ge((i,r)=>Bm(i,r,t,e)))}function Wn(t=1/0){return rt(Bt,t)}function Um(){return Wn(1)}function xi(...t){return Um()(Ue(t,$n(t)))}function Ci(t){return new oe(n=>{Qe(t()).subscribe(n)})}function Yd(...t){let n=ka(t),{args:e,keys:i}=Ha(t),r=new oe(o=>{let{length:s}=e;if(!s){o.complete();return}let d=new Array(s),u=s,h=s;for(let p=0;p{m||(m=!0,h--),d[p]=b},()=>u--,void 0,()=>{(!u||!m)&&(h||o.next(i?$a(i,d):d),o.complete())}))}});return n?r.pipe(qr(n)):r}var bx=["addListener","removeListener"],yx=["addEventListener","removeEventListener"],wx=["on","off"];function $o(t,n,e,i){if(Q(e)&&(i=e,e=void 0),i)return $o(t,n,e).pipe(qr(i));let[r,o]=Sx(t)?yx.map(s=>d=>t[s](n,d,e)):xx(t)?bx.map(zm(t,n)):Cx(t)?wx.map(zm(t,n)):[];if(!r&&Wr(t))return rt(s=>$o(s,n,e))(Qe(t));if(!r)throw new TypeError("Invalid event target");return new oe(s=>{let d=(...u)=>s.next(1o(d)})}function zm(t,n){return e=>i=>t[e](n,i)}function xx(t){return Q(t.addListener)&&Q(t.removeListener)}function Cx(t){return Q(t.on)&&Q(t.off)}function Sx(t){return Q(t.addEventListener)&&Q(t.removeEventListener)}function Hm(t=0,n,e=Em){let i=-1;return n!=null&&(Pa(n)?e=n:i=n),new oe(r=>{let o=Vm(t)?+t-e.now():t;o<0&&(o=0);let s=0;return e.schedule(function(){r.closed||(r.next(s++),0<=i?this.schedule(void 0,i):r.complete())},o)})}function Wo(...t){let n=$n(t),e=Mm(t,1/0),i=t;return i.length?i.length===1?Qe(i[0]):Wn(e)(Ue(i,n)):Ut}function Ye(t,n){return ge((e,i)=>{let r=0;e.subscribe(ce(i,o=>t.call(n,o,r++)&&i.next(o)))})}function $m(t){return ge((n,e)=>{let i=!1,r=null,o=null,s=!1,d=()=>{if(o?.unsubscribe(),o=null,i){i=!1;let h=r;r=null,e.next(h)}s&&e.complete()},u=()=>{o=null,s&&e.complete()};n.subscribe(ce(e,h=>{i=!0,r=h,o||Qe(t(h)).subscribe(o=ce(e,d,u))},()=>{s=!0,(!i||!o||o.closed)&&e.complete()}))})}function Wa(t,n=Ho){return $m(()=>Hm(t,n))}function Ke(t){return ge((n,e)=>{let i=null,r=!1,o;i=n.subscribe(ce(e,void 0,void 0,s=>{o=Qe(t(s,Ke(t)(n))),i?(i.unsubscribe(),i=null,o.subscribe(e)):r=!0})),r&&(i.unsubscribe(),i=null,o.subscribe(e))})}function Wm(t,n,e,i,r){return(o,s)=>{let d=e,u=n,h=0;o.subscribe(ce(s,p=>{let m=h++;u=d?t(u,p,m):(d=!0,p),i&&s.next(u)},r&&(()=>{d&&s.next(u),s.complete()})))}}function ri(t,n){return Q(n)?rt(t,n,1):rt(t,1)}function qa(t,n=Ho){return ge((e,i)=>{let r=null,o=null,s=null,d=()=>{if(r){r.unsubscribe(),r=null;let h=o;o=null,i.next(h)}};function u(){let h=s+t,p=n.now();if(p{o=h,s=n.now(),r||(r=n.schedule(u,t),i.add(r))},()=>{d(),i.complete()},void 0,()=>{o=r=null}))})}function Si(t){return ge((n,e)=>{let i=!1;n.subscribe(ce(e,r=>{i=!0,e.next(r)},()=>{i||e.next(t),e.complete()}))})}function ht(t){return t<=0?()=>Ut:ge((n,e)=>{let i=0;n.subscribe(ce(e,r=>{++i<=t&&(e.next(r),t<=i&&e.complete())}))})}function Zd(t){return Y(()=>t)}function Ga(t,n=Bt){return t=t??Ex,ge((e,i)=>{let r,o=!0;e.subscribe(ce(i,s=>{let d=n(s);(o||!t(r,d))&&(o=!1,r=d,i.next(s))}))})}function Ex(t,n){return t===n}function Qa(t=Mx){return ge((n,e)=>{let i=!1;n.subscribe(ce(e,r=>{i=!0,e.next(r)},()=>i?e.complete():e.error(t())))})}function Mx(){return new Dn}function At(t){return ge((n,e)=>{try{n.subscribe(e)}finally{e.add(t)}})}function qn(t,n){let e=arguments.length>=2;return i=>i.pipe(t?Ye((r,o)=>t(r,o,i)):Bt,ht(1),e?Si(n):Qa(()=>new Dn))}function Gr(t){return t<=0?()=>Ut:ge((n,e)=>{let i=[];n.subscribe(ce(e,r=>{i.push(r),t{for(let r of i)e.next(r);e.complete()},void 0,()=>{i=null}))})}function Xd(t,n){let e=arguments.length>=2;return i=>i.pipe(t?Ye((r,o)=>t(r,o,i)):Bt,Gr(1),e?Si(n):Qa(()=>new Dn))}function Kd(t,n){return ge(Wm(t,n,arguments.length>=2,!0))}function qo(t){return Ye((n,e)=>t<=e)}function Gn(...t){let n=$n(t);return ge((e,i)=>{(n?xi(t,e,n):xi(t,e)).subscribe(i)})}function Ct(t,n){return ge((e,i)=>{let r=null,o=0,s=!1,d=()=>s&&!r&&i.complete();e.subscribe(ce(i,u=>{r?.unsubscribe();let h=0,p=o++;Qe(t(u,p)).subscribe(r=ce(i,m=>i.next(n?n(u,m,p,h++):m),()=>{r=null,d()}))},()=>{s=!0,d()}))})}function fn(t){return ge((n,e)=>{Qe(t).subscribe(ce(e,()=>e.complete(),Uo)),!e.closed&&n.subscribe(e)})}function Le(t,n,e){let i=Q(t)||n||e?{next:t,error:n,complete:e}:t;return i?ge((r,o)=>{var s;(s=i.subscribe)===null||s===void 0||s.call(i);let d=!0;r.subscribe(ce(o,u=>{var h;(h=i.next)===null||h===void 0||h.call(i,u),o.next(u)},()=>{var u;d=!1,(u=i.complete)===null||u===void 0||u.call(i),o.complete()},u=>{var h;d=!1,(h=i.error)===null||h===void 0||h.call(i,u),o.error(u)},()=>{var u,h;d&&((u=i.unsubscribe)===null||u===void 0||u.call(i)),(h=i.finalize)===null||h===void 0||h.call(i)}))}):Bt}var Tg="https://g.co/ng/security#xss",B=class extends Error{constructor(n,e){super(Al(n,e)),this.code=n}};function Al(t,n){return`${`NG0${Math.abs(t)}`}${n?": "+n:""}`}function as(t){return{toString:t}.toString()}var Ya="__parameters__";function Ix(t){return function(...e){if(t){let i=t(...e);for(let r in i)this[r]=i[r]}}}function Ag(t,n,e){return as(()=>{let i=Ix(n);function r(...o){if(this instanceof r)return i.apply(this,o),this;let s=new r(...o);return d.annotation=s,d;function d(u,h,p){let m=u.hasOwnProperty(Ya)?u[Ya]:Object.defineProperty(u,Ya,{value:[]})[Ya];for(;m.length<=p;)m.push(null);return(m[p]=m[p]||[]).push(s),u}}return e&&(r.prototype=Object.create(e.prototype)),r.prototype.ngMetadataName=t,r.annotationCls=r,r})}var at=globalThis;function He(t){for(let n in t)if(t[n]===He)return n;throw Error("Could not find renamed property on target object.")}function Dx(t,n){for(let e in n)n.hasOwnProperty(e)&&!t.hasOwnProperty(e)&&(t[e]=n[e])}function Ht(t){if(typeof t=="string")return t;if(Array.isArray(t))return"["+t.map(Ht).join(", ")+"]";if(t==null)return""+t;if(t.overriddenName)return`${t.overriddenName}`;if(t.name)return`${t.name}`;let n=t.toString();if(n==null)return""+n;let e=n.indexOf(` +`);return e===-1?n:n.substring(0,e)}function fu(t,n){return t==null||t===""?n===null?"":n:n==null||n===""?t:t+" "+n}var Px=He({__forward_ref__:He});function Xt(t){return t.__forward_ref__=Xt,t.toString=function(){return Ht(this())},t}function zt(t){return Rg(t)?t():t}function Rg(t){return typeof t=="function"&&t.hasOwnProperty(Px)&&t.__forward_ref__===Xt}function T(t){return{token:t.token,providedIn:t.providedIn||null,factory:t.factory,value:void 0}}function se(t){return{providers:t.providers||[],imports:t.imports||[]}}function Rl(t){return qm(t,Ng)||qm(t,Lg)}function Fg(t){return Rl(t)!==null}function qm(t,n){return t.hasOwnProperty(n)?t[n]:null}function kx(t){let n=t&&(t[Ng]||t[Lg]);return n||null}function Gm(t){return t&&(t.hasOwnProperty(Qm)||t.hasOwnProperty(Ox))?t[Qm]:null}var Ng=He({\u0275prov:He}),Qm=He({\u0275inj:He}),Lg=He({ngInjectableDef:He}),Ox=He({ngInjectorDef:He}),N=class{constructor(n,e){this._desc=n,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,typeof e=="number"?this.__NG_ELEMENT_ID__=e:e!==void 0&&(this.\u0275prov=T({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function Vg(t){return t&&!!t.\u0275providers}var Tx=He({\u0275cmp:He}),Ax=He({\u0275dir:He}),Rx=He({\u0275pipe:He}),Fx=He({\u0275mod:He}),ll=He({\u0275fac:He}),Go=He({__NG_ELEMENT_ID__:He}),Ym=He({__NG_ENV_ID__:He});function ar(t){return typeof t=="string"?t:t==null?"":String(t)}function Nx(t){return typeof t=="function"?t.name||t.toString():typeof t=="object"&&t!=null&&typeof t.type=="function"?t.type.name||t.type.toString():ar(t)}function Lx(t,n){let e=n?`. Dependency path: ${n.join(" > ")} > ${t}`:"";throw new B(-200,t)}function uh(t,n){throw new B(-201,!1)}var xe=function(t){return t[t.Default=0]="Default",t[t.Host=1]="Host",t[t.Self=2]="Self",t[t.SkipSelf=4]="SkipSelf",t[t.Optional=8]="Optional",t}(xe||{}),mu;function jg(){return mu}function Qt(t){let n=mu;return mu=t,n}function Bg(t,n,e){let i=Rl(t);if(i&&i.providedIn=="root")return i.value===void 0?i.value=i.factory():i.value;if(e&xe.Optional)return null;if(n!==void 0)return n;uh(t,"Injector")}var Vx={},Yo=Vx,gu="__NG_DI_FLAG__",cl="ngTempTokenPath",jx="ngTokenPath",Bx=/\n/gm,Ux="\u0275",Zm="__source",Kr;function zx(){return Kr}function Ei(t){let n=Kr;return Kr=t,n}function Hx(t,n=xe.Default){if(Kr===void 0)throw new B(-203,!1);return Kr===null?Bg(t,void 0,n):Kr.get(t,n&xe.Optional?null:void 0,n)}function I(t,n=xe.Default){return(jg()||Hx)(zt(t),n)}function R(t,n=xe.Default){return I(t,Fl(n))}function Fl(t){return typeof t>"u"||typeof t=="number"?t:0|(t.optional&&8)|(t.host&&1)|(t.self&&2)|(t.skipSelf&&4)}function vu(t){let n=[];for(let e=0;e ");else if(typeof n=="object"){let o=[];for(let s in n)if(n.hasOwnProperty(s)){let d=n[s];o.push(s+":"+(typeof d=="string"?JSON.stringify(d):Ht(d)))}r=`{${o.join(", ")}}`}return`${e}${i?"("+i+")":""}[${r}]: ${t.replace(Bx,` + `)}`}var Nl=Ug(Ag("Optional"),8);var hh=Ug(Ag("SkipSelf"),4);function lr(t,n){let e=t.hasOwnProperty(ll);return e?t[ll]:null}function Gx(t,n,e){if(t.length!==n.length)return!1;for(let i=0;iArray.isArray(e)?ph(e,n):n(e))}function zg(t,n,e){n>=t.length?t.push(e):t.splice(n,0,e)}function dl(t,n){return n>=t.length-1?t.pop():t.splice(n,1)[0]}function Yx(t,n){let e=[];for(let i=0;in;){let o=r-2;t[r]=t[o],r--}t[n]=e,t[n+1]=i}}function fh(t,n,e){let i=ls(t,n);return i>=0?t[i|1]=e:(i=~i,Zx(t,i,n,e)),i}function Jd(t,n){let e=ls(t,n);if(e>=0)return t[e|1]}function ls(t,n){return Xx(t,n,1)}function Xx(t,n,e){let i=0,r=t.length>>e;for(;r!==i;){let o=i+(r-i>>1),s=t[o<n?r=o:i=o+1}return~(r<n){s=o-1;break}}}for(;o-1){let o;for(;++ro?m="":m=r[p+1].toLowerCase(),i&2&&h!==m){if(Pn(i))return!1;s=!0}}}}return Pn(i)||s}function Pn(t){return(t&1)===0}function iC(t,n,e,i){if(n===null)return-1;let r=0;if(i||!e){let o=!1;for(;r-1)for(e++;e0?'="'+d+'"':"")+"]"}else i&8?r+="."+s:i&4&&(r+=" "+s);else r!==""&&!Pn(s)&&(n+=Km(o,r),r=""),i=s,o=o||!Pn(i);e++}return r!==""&&(n+=Km(o,r)),n}function cC(t){return t.map(lC).join(",")}function dC(t){let n=[],e=[],i=1,r=2;for(;i{let n=Jg(t),e=ke(A({},n),{decls:t.decls,vars:t.vars,template:t.template,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,onPush:t.changeDetection===Wg.OnPush,directiveDefs:null,pipeDefs:null,dependencies:n.standalone&&t.dependencies||null,getStandaloneInjector:null,signals:t.signals??!1,data:t.data||{},encapsulation:t.encapsulation||Zn.Emulated,styles:t.styles||Yt,_:null,schemas:t.schemas||null,tView:null,id:""});e0(e);let i=t.dependencies;return e.directiveDefs=eg(i,!1),e.pipeDefs=eg(i,!0),e.id=pC(e),e})}function uC(t){return Ii(t)||Yg(t)}function hC(t){return t!==null}function ae(t){return as(()=>({type:t.type,bootstrap:t.bootstrap||Yt,declarations:t.declarations||Yt,imports:t.imports||Yt,exports:t.exports||Yt,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null}))}function Jm(t,n){if(t==null)return eo;let e={};for(let i in t)if(t.hasOwnProperty(i)){let r=t[i],o,s,d=ee.None;Array.isArray(r)?(d=r[0],o=r[1],s=r[2]??o):(o=r,s=r),n?(e[o]=d!==ee.None?[i,d]:i,n[o]=s):e[o]=i}return e}function ve(t){return as(()=>{let n=Jg(t);return e0(n),n})}function Ll(t){return{type:t.type,name:t.name,factory:null,pure:t.pure!==!1,standalone:t.standalone===!0,onDestroy:t.type.prototype.ngOnDestroy||null}}function Ii(t){return t[Tx]||null}function Yg(t){return t[Ax]||null}function Zg(t){return t[Rx]||null}function Xg(t){let n=Ii(t)||Yg(t)||Zg(t);return n!==null?n.standalone:!1}function Kg(t,n){let e=t[Fx]||null;if(!e&&n===!0)throw new Error(`Type ${Ht(t)} does not have '\u0275mod' property.`);return e}function Jg(t){let n={};return{type:t.type,providersResolver:null,factory:null,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:n,inputTransforms:null,inputConfig:t.inputs||eo,exportAs:t.exportAs||null,standalone:t.standalone===!0,signals:t.signals===!0,selectors:t.selectors||Yt,viewQuery:t.viewQuery||null,features:t.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Jm(t.inputs,n),outputs:Jm(t.outputs),debugInfo:null}}function e0(t){t.features?.forEach(n=>n(t))}function eg(t,n){if(!t)return null;let e=n?Zg:uC;return()=>(typeof t=="function"?t():t).map(i=>e(i)).filter(hC)}function pC(t){let n=0,e=[t.selectors,t.ngContentSelectors,t.hostVars,t.hostAttrs,t.consts,t.vars,t.decls,t.encapsulation,t.standalone,t.signals,t.exportAs,JSON.stringify(t.inputs),JSON.stringify(t.outputs),Object.getOwnPropertyNames(t.type.prototype),!!t.contentQueries,!!t.viewQuery].join("|");for(let r of e)n=Math.imul(31,n)+r.charCodeAt(0)<<0;return n+=2147483648,"c"+n}function Vl(t){return{\u0275providers:t}}function fC(...t){return{\u0275providers:t0(!0,t),\u0275fromNgModule:!0}}function t0(t,...n){let e=[],i=new Set,r,o=s=>{e.push(s)};return ph(n,s=>{let d=s;bu(d,o,[],i)&&(r||=[],r.push(d))}),r!==void 0&&n0(r,o),e}function n0(t,n){for(let e=0;e{n(o,i)})}}function bu(t,n,e,i){if(t=zt(t),!t)return!1;let r=null,o=Gm(t),s=!o&&Ii(t);if(!o&&!s){let u=t.ngModule;if(o=Gm(u),o)r=u;else return!1}else{if(s&&!s.standalone)return!1;r=t}let d=i.has(r);if(s){if(d)return!1;if(i.add(r),s.dependencies){let u=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let h of u)bu(h,n,e,i)}}else if(o){if(o.imports!=null&&!d){i.add(r);let h;try{ph(o.imports,p=>{bu(p,n,e,i)&&(h||=[],h.push(p))})}finally{}h!==void 0&&n0(h,n)}if(!d){let h=lr(r)||(()=>new r);n({provide:r,useFactory:h,deps:Yt},r),n({provide:$g,useValue:r,multi:!0},r),n({provide:to,useValue:()=>I(r),multi:!0},r)}let u=o.providers;if(u!=null&&!d){let h=t;gh(u,p=>{n(p,h)})}}else return!1;return r!==t&&t.providers!==void 0}function gh(t,n){for(let e of t)Vg(e)&&(e=e.\u0275providers),Array.isArray(e)?gh(e,n):n(e)}var mC=He({provide:String,useValue:He});function i0(t){return t!==null&&typeof t=="object"&&mC in t}function gC(t){return!!(t&&t.useExisting)}function vC(t){return!!(t&&t.useFactory)}function no(t){return typeof t=="function"}function _C(t){return!!t.useClass}var jl=new N(""),nl={},bC={},eu;function vh(){return eu===void 0&&(eu=new ul),eu}var Rt=class{},Xo=class extends Rt{get destroyed(){return this._destroyed}constructor(n,e,i,r){super(),this.parent=e,this.source=i,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,wu(n,s=>this.processProvider(s)),this.records.set(Hg,Qr(void 0,this)),r.has("environment")&&this.records.set(Rt,Qr(void 0,this));let o=this.records.get(jl);o!=null&&typeof o.value=="string"&&this.scopes.add(o.value),this.injectorDefTypes=new Set(this.get($g,Yt,xe.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;let n=Te(null);try{for(let i of this._ngOnDestroyHooks)i.ngOnDestroy();let e=this._onDestroyHooks;this._onDestroyHooks=[];for(let i of e)i()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),Te(n)}}onDestroy(n){return this.assertNotDestroyed(),this._onDestroyHooks.push(n),()=>this.removeOnDestroy(n)}runInContext(n){this.assertNotDestroyed();let e=Ei(this),i=Qt(void 0),r;try{return n()}finally{Ei(e),Qt(i)}}get(n,e=Yo,i=xe.Default){if(this.assertNotDestroyed(),n.hasOwnProperty(Ym))return n[Ym](this);i=Fl(i);let r,o=Ei(this),s=Qt(void 0);try{if(!(i&xe.SkipSelf)){let u=this.records.get(n);if(u===void 0){let h=SC(n)&&Rl(n);h&&this.injectableDefInScope(h)?u=Qr(yu(n),nl):u=null,this.records.set(n,u)}if(u!=null)return this.hydrate(n,u)}let d=i&xe.Self?vh():this.parent;return e=i&xe.Optional&&e===Yo?null:e,d.get(n,e)}catch(d){if(d.name==="NullInjectorError"){if((d[cl]=d[cl]||[]).unshift(Ht(n)),o)throw d;return Wx(d,n,"R3InjectorError",this.source)}else throw d}finally{Qt(s),Ei(o)}}resolveInjectorInitializers(){let n=Te(null),e=Ei(this),i=Qt(void 0),r;try{let o=this.get(to,Yt,xe.Self);for(let s of o)s()}finally{Ei(e),Qt(i),Te(n)}}toString(){let n=[],e=this.records;for(let i of e.keys())n.push(Ht(i));return`R3Injector[${n.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new B(205,!1)}processProvider(n){n=zt(n);let e=no(n)?n:zt(n&&n.provide),i=wC(n);if(!no(n)&&n.multi===!0){let r=this.records.get(e);r||(r=Qr(void 0,nl,!0),r.factory=()=>vu(r.multi),this.records.set(e,r)),e=n,r.multi.push(n)}this.records.set(e,i)}hydrate(n,e){let i=Te(null);try{return e.value===nl&&(e.value=bC,e.value=e.factory()),typeof e.value=="object"&&e.value&&CC(e.value)&&this._ngOnDestroyHooks.add(e.value),e.value}finally{Te(i)}}injectableDefInScope(n){if(!n.providedIn)return!1;let e=zt(n.providedIn);return typeof e=="string"?e==="any"||this.scopes.has(e):this.injectorDefTypes.has(e)}removeOnDestroy(n){let e=this._onDestroyHooks.indexOf(n);e!==-1&&this._onDestroyHooks.splice(e,1)}};function yu(t){let n=Rl(t),e=n!==null?n.factory:lr(t);if(e!==null)return e;if(t instanceof N)throw new B(204,!1);if(t instanceof Function)return yC(t);throw new B(204,!1)}function yC(t){if(t.length>0)throw new B(204,!1);let e=kx(t);return e!==null?()=>e.factory(t):()=>new t}function wC(t){if(i0(t))return Qr(void 0,t.useValue);{let n=r0(t);return Qr(n,nl)}}function r0(t,n,e){let i;if(no(t)){let r=zt(t);return lr(r)||yu(r)}else if(i0(t))i=()=>zt(t.useValue);else if(vC(t))i=()=>t.useFactory(...vu(t.deps||[]));else if(gC(t))i=()=>I(zt(t.useExisting));else{let r=zt(t&&(t.useClass||t.provide));if(xC(t))i=()=>new r(...vu(t.deps));else return lr(r)||yu(r)}return i}function Qr(t,n,e=!1){return{factory:t,value:n,multi:e?[]:void 0}}function xC(t){return!!t.deps}function CC(t){return t!==null&&typeof t=="object"&&typeof t.ngOnDestroy=="function"}function SC(t){return typeof t=="function"||typeof t=="object"&&t instanceof N}function wu(t,n){for(let e of t)Array.isArray(e)?wu(e,n):e&&Vg(e)?wu(e.\u0275providers,n):n(e)}function Fn(t,n){t instanceof Xo&&t.assertNotDestroyed();let e,i=Ei(t),r=Qt(void 0);try{return n()}finally{Ei(i),Qt(r)}}function o0(){return jg()!==void 0||zx()!=null}function EC(t){if(!o0())throw new B(-203,!1)}function MC(t){let n=at.ng;if(n&&n.\u0275compilerFacade)return n.\u0275compilerFacade;throw new Error("JIT compiler unavailable")}function IC(t){return typeof t=="function"}var ai=0,he=1,J=2,St=3,On=4,on=5,Ko=6,Jo=7,mn=8,io=9,Tn=10,Je=11,es=12,tg=13,lo=14,An=15,cs=16,Yr=17,oi=18,Bl=19,s0=20,Mi=21,tu=22,cr=23,Et=25,a0=1;var dr=7,hl=8,ro=9,Zt=10,_h=function(t){return t[t.None=0]="None",t[t.HasTransplantedViews=2]="HasTransplantedViews",t}(_h||{});function or(t){return Array.isArray(t)&&typeof t[a0]=="object"}function li(t){return Array.isArray(t)&&t[a0]===!0}function bh(t){return(t.flags&4)!==0}function Ul(t){return t.componentOffset>-1}function zl(t){return(t.flags&1)===1}function Di(t){return!!t.template}function DC(t){return(t[J]&512)!==0}var xu=class{constructor(n,e,i){this.previousValue=n,this.currentValue=e,this.firstChange=i}isFirstChange(){return this.firstChange}};function l0(t,n,e,i){n!==null?n.applyValueToInputSignal(n,i):t[e]=i}function Mt(){return c0}function c0(t){return t.type.prototype.ngOnChanges&&(t.setInput=kC),PC}Mt.ngInherit=!0;function PC(){let t=u0(this),n=t?.current;if(n){let e=t.previous;if(e===eo)t.previous=n;else for(let i in n)e[i]=n[i];t.current=null,this.ngOnChanges(n)}}function kC(t,n,e,i,r){let o=this.declaredInputs[i],s=u0(t)||OC(t,{previous:eo,current:null}),d=s.current||(s.current={}),u=s.previous,h=u[o];d[o]=new xu(h&&h.currentValue,e,u===eo),l0(t,n,r,e)}var d0="__ngSimpleChanges__";function u0(t){return t[d0]||null}function OC(t,n){return t[d0]=n}var ng=null;var Qn=function(t,n,e){ng?.(t,n,e)},h0="svg",TC="math",AC=!1;function RC(){return AC}function Xn(t){for(;Array.isArray(t);)t=t[ai];return t}function p0(t,n){return Xn(n[t])}function vn(t,n){return Xn(n[t.index])}function yh(t,n){return t.data[n]}function Hl(t,n){return t[n]}function Oi(t,n){let e=n[t];return or(e)?e:e[ai]}function FC(t){return(t[J]&4)===4}function wh(t){return(t[J]&128)===128}function NC(t){return li(t[St])}function oo(t,n){return n==null?null:t[n]}function f0(t){t[Yr]=0}function LC(t){t[J]&1024||(t[J]|=1024,wh(t)&&ts(t))}function VC(t,n){for(;t>0;)n=n[lo],t--;return n}function xh(t){return!!(t[J]&9216||t[cr]?.dirty)}function Cu(t){t[Tn].changeDetectionScheduler?.notify(1),xh(t)?ts(t):t[J]&64&&(RC()?(t[J]|=1024,ts(t)):t[Tn].changeDetectionScheduler?.notify())}function ts(t){t[Tn].changeDetectionScheduler?.notify();let n=ns(t);for(;n!==null&&!(n[J]&8192||(n[J]|=8192,!wh(n)));)n=ns(n)}function m0(t,n){if((t[J]&256)===256)throw new B(911,!1);t[Mi]===null&&(t[Mi]=[]),t[Mi].push(n)}function jC(t,n){if(t[Mi]===null)return;let e=t[Mi].indexOf(n);e!==-1&&t[Mi].splice(e,1)}function ns(t){let n=t[St];return li(n)?n[St]:n}var pe={lFrame:x0(null),bindingsEnabled:!0,skipHydrationRootTNode:null};function BC(){return pe.lFrame.elementDepthCount}function UC(){pe.lFrame.elementDepthCount++}function zC(){pe.lFrame.elementDepthCount--}function g0(){return pe.bindingsEnabled}function v0(){return pe.skipHydrationRootTNode!==null}function HC(t){return pe.skipHydrationRootTNode===t}function $C(){pe.skipHydrationRootTNode=null}function te(){return pe.lFrame.lView}function et(){return pe.lFrame.tView}function x(t){return pe.lFrame.contextLView=t,t[mn]}function C(t){return pe.lFrame.contextLView=null,t}function Ft(){let t=_0();for(;t!==null&&t.type===64;)t=t.parent;return t}function _0(){return pe.lFrame.currentTNode}function WC(){let t=pe.lFrame,n=t.currentTNode;return t.isParent?n:n.parent}function gr(t,n){let e=pe.lFrame;e.currentTNode=t,e.isParent=n}function Ch(){return pe.lFrame.isParent}function Sh(){pe.lFrame.isParent=!1}function qC(){return pe.lFrame.contextLView}function Ti(){let t=pe.lFrame,n=t.bindingRootIndex;return n===-1&&(n=t.bindingRootIndex=t.tView.bindingStartIndex),n}function GC(){return pe.lFrame.bindingIndex}function QC(t){return pe.lFrame.bindingIndex=t}function co(){return pe.lFrame.bindingIndex++}function Eh(t){let n=pe.lFrame,e=n.bindingIndex;return n.bindingIndex=n.bindingIndex+t,e}function YC(){return pe.lFrame.inI18n}function ZC(t,n){let e=pe.lFrame;e.bindingIndex=e.bindingRootIndex=t,Su(n)}function XC(){return pe.lFrame.currentDirectiveIndex}function Su(t){pe.lFrame.currentDirectiveIndex=t}function KC(t){let n=pe.lFrame.currentDirectiveIndex;return n===-1?null:t[n]}function b0(){return pe.lFrame.currentQueryIndex}function Mh(t){pe.lFrame.currentQueryIndex=t}function JC(t){let n=t[he];return n.type===2?n.declTNode:n.type===1?t[on]:null}function y0(t,n,e){if(e&xe.SkipSelf){let r=n,o=t;for(;r=r.parent,r===null&&!(e&xe.Host);)if(r=JC(o),r===null||(o=o[lo],r.type&10))break;if(r===null)return!1;n=r,t=o}let i=pe.lFrame=w0();return i.currentTNode=n,i.lView=t,!0}function Ih(t){let n=w0(),e=t[he];pe.lFrame=n,n.currentTNode=e.firstChild,n.lView=t,n.tView=e,n.contextLView=t,n.bindingIndex=e.bindingStartIndex,n.inI18n=!1}function w0(){let t=pe.lFrame,n=t===null?null:t.child;return n===null?x0(t):n}function x0(t){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:t,child:null,inI18n:!1};return t!==null&&(t.child=n),n}function C0(){let t=pe.lFrame;return pe.lFrame=t.parent,t.currentTNode=null,t.lView=null,t}var S0=C0;function Dh(){let t=C0();t.isParent=!0,t.tView=null,t.selectedIndex=-1,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function e1(t){return(pe.lFrame.contextLView=VC(t,pe.lFrame.contextLView))[mn]}function Ai(){return pe.lFrame.selectedIndex}function ur(t){pe.lFrame.selectedIndex=t}function ds(){let t=pe.lFrame;return yh(t.tView,t.selectedIndex)}function It(){pe.lFrame.currentNamespace=h0}function ci(){t1()}function t1(){pe.lFrame.currentNamespace=null}function n1(){return pe.lFrame.currentNamespace}var E0=!0;function $l(){return E0}function Wl(t){E0=t}function i1(t,n,e){let{ngOnChanges:i,ngOnInit:r,ngDoCheck:o}=n.type.prototype;if(i){let s=c0(n);(e.preOrderHooks??=[]).push(t,s),(e.preOrderCheckHooks??=[]).push(t,s)}r&&(e.preOrderHooks??=[]).push(0-t,r),o&&((e.preOrderHooks??=[]).push(t,o),(e.preOrderCheckHooks??=[]).push(t,o))}function ql(t,n){for(let e=n.directiveStart,i=n.directiveEnd;e=i)break}else n[u]<0&&(t[Yr]+=65536),(d>14>16&&(t[J]&3)===n&&(t[J]+=16384,ig(d,o)):ig(d,o)}var Jr=-1,hr=class{constructor(n,e,i){this.factory=n,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=i}};function o1(t){return t instanceof hr}function s1(t){return(t.flags&8)!==0}function a1(t){return(t.flags&16)!==0}function I0(t){return t!==Jr}function pl(t){return t&32767}function l1(t){return t>>16}function fl(t,n){let e=l1(t),i=n;for(;e>0;)i=i[lo],e--;return i}var Eu=!0;function ml(t){let n=Eu;return Eu=t,n}var c1=256,D0=c1-1,P0=5,d1=0,Yn={};function u1(t,n,e){let i;typeof e=="string"?i=e.charCodeAt(0)||0:e.hasOwnProperty(Go)&&(i=e[Go]),i==null&&(i=e[Go]=d1++);let r=i&D0,o=1<>P0)]|=o}function gl(t,n){let e=k0(t,n);if(e!==-1)return e;let i=n[he];i.firstCreatePass&&(t.injectorIndex=n.length,iu(i.data,t),iu(n,null),iu(i.blueprint,null));let r=Ph(t,n),o=t.injectorIndex;if(I0(r)){let s=pl(r),d=fl(r,n),u=d[he].data;for(let h=0;h<8;h++)n[o+h]=d[s+h]|u[s+h]}return n[o+8]=r,o}function iu(t,n){t.push(0,0,0,0,0,0,0,0,n)}function k0(t,n){return t.injectorIndex===-1||t.parent&&t.parent.injectorIndex===t.injectorIndex||n[t.injectorIndex+8]===null?-1:t.injectorIndex}function Ph(t,n){if(t.parent&&t.parent.injectorIndex!==-1)return t.parent.injectorIndex;let e=0,i=null,r=n;for(;r!==null;){if(i=F0(r),i===null)return Jr;if(e++,r=r[lo],i.injectorIndex!==-1)return i.injectorIndex|e<<16}return Jr}function Mu(t,n,e){u1(t,n,e)}function h1(t,n){if(n==="class")return t.classes;if(n==="style")return t.styles;let e=t.attrs;if(e){let i=e.length,r=0;for(;r>20,m=i?d:d+p,b=r?d+p:h;for(let w=m;w=u&&S.type===e)return w}if(r){let w=s[u];if(w&&Di(w)&&w.type===e)return u}return null}function pr(t,n,e,i){let r=t[e],o=n.data;if(o1(r)){let s=r;s.resolving&&Lx(Nx(o[e]));let d=ml(s.canSeeViewProviders);s.resolving=!0;let u,h=s.injectImpl?Qt(s.injectImpl):null,p=y0(t,i,xe.Default);try{r=t[e]=s.factory(void 0,o,t,i),n.firstCreatePass&&e>=i.directiveStart&&i1(e,o[e],n)}finally{h!==null&&Qt(h),ml(d),s.resolving=!1,S0()}}return r}function f1(t){if(typeof t=="string")return t.charCodeAt(0)||0;let n=t.hasOwnProperty(Go)?t[Go]:void 0;return typeof n=="number"?n>=0?n&D0:m1:n}function rg(t,n,e){let i=1<>P0)]&i)}function og(t,n){return!(t&xe.Self)&&!(t&xe.Host&&n)}var sr=class{constructor(n,e){this._tNode=n,this._lView=e}get(n,e,i){return A0(this._tNode,this._lView,n,Fl(i),e)}};function m1(){return new sr(Ft(),te())}function sn(t){return as(()=>{let n=t.prototype.constructor,e=n[ll]||Iu(n),i=Object.prototype,r=Object.getPrototypeOf(t.prototype).constructor;for(;r&&r!==i;){let o=r[ll]||Iu(r);if(o&&o!==e)return o;r=Object.getPrototypeOf(r)}return o=>new o})}function Iu(t){return Rg(t)?()=>{let n=Iu(zt(t));return n&&n()}:lr(t)}function g1(t,n,e,i,r){let o=t,s=n;for(;o!==null&&s!==null&&s[J]&2048&&!(s[J]&512);){let d=R0(o,s,e,i|xe.Self,Yn);if(d!==Yn)return d;let u=o.parent;if(!u){let h=s[s0];if(h){let p=h.get(e,Yn,i);if(p!==Yn)return p}u=F0(s),s=s[lo]}o=u}return r}function F0(t){let n=t[he],e=n.type;return e===2?n.declTNode:e===1?t[on]:null}function uo(t){return h1(Ft(),t)}function sg(t,n=null,e=null,i){let r=N0(t,n,e,i);return r.resolveInjectorInitializers(),r}function N0(t,n=null,e=null,i,r=new Set){let o=[e||Yt,fC(t)];return i=i||(typeof t=="object"?void 0:Ht(t)),new Xo(o,n||vh(),i||null,r)}var ot=(()=>{class t{static{this.THROW_IF_NOT_FOUND=Yo}static{this.NULL=new ul}static create(e,i){if(Array.isArray(e))return sg({name:""},i,e,"");{let r=e.name??"";return sg({name:r},e.parent,e.providers,r)}}static{this.\u0275prov=T({token:t,providedIn:"any",factory:()=>I(Hg)})}static{this.__NG_ELEMENT_ID__=-1}}return t})();var v1="ngOriginalError";function ru(t){return t[v1]}var Rn=class{constructor(){this._console=console}handleError(n){let e=this._findOriginalError(n);this._console.error("ERROR",n),e&&this._console.error("ORIGINAL ERROR",e)}_findOriginalError(n){let e=n&&ru(n);for(;e&&ru(e);)e=ru(e);return e||null}},L0=new N("",{providedIn:"root",factory:()=>R(Rn).handleError.bind(void 0)}),kh=(()=>{class t{static{this.__NG_ELEMENT_ID__=_1}static{this.__NG_ENV_ID__=e=>e}}return t})(),Du=class extends kh{constructor(n){super(),this._lView=n}onDestroy(n){return m0(this._lView,n),()=>jC(this._lView,n)}};function _1(){return new Du(te())}function b1(){return ho(Ft(),te())}function ho(t,n){return new be(vn(t,n))}var be=(()=>{class t{constructor(e){this.nativeElement=e}static{this.__NG_ELEMENT_ID__=b1}}return t})();function y1(t){return t instanceof be?t.nativeElement:t}var Pu=class extends ue{constructor(n=!1){super(),this.destroyRef=void 0,this.__isAsync=n,o0()&&(this.destroyRef=R(kh,{optional:!0})??void 0)}emit(n){let e=Te(null);try{super.next(n)}finally{Te(e)}}subscribe(n,e,i){let r=n,o=e||(()=>null),s=i;if(n&&typeof n=="object"){let u=n;r=u.next?.bind(u),o=u.error?.bind(u),s=u.complete?.bind(u)}this.__isAsync&&(o=ou(o),r&&(r=ou(r)),s&&(s=ou(s)));let d=super.subscribe({next:r,error:o,complete:s});return n instanceof qe&&n.add(d),d}};function ou(t){return n=>{setTimeout(t,void 0,n)}}var de=Pu;function w1(){return this._results[Symbol.iterator]()}var vl=class t{get changes(){return this._changes??=new de}constructor(n=!1){this._emitDistinctChangesOnly=n,this.dirty=!0,this._onDirty=void 0,this._results=[],this._changesDetected=!1,this._changes=void 0,this.length=0,this.first=void 0,this.last=void 0;let e=t.prototype;e[Symbol.iterator]||(e[Symbol.iterator]=w1)}get(n){return this._results[n]}map(n){return this._results.map(n)}filter(n){return this._results.filter(n)}find(n){return this._results.find(n)}reduce(n,e){return this._results.reduce(n,e)}forEach(n){this._results.forEach(n)}some(n){return this._results.some(n)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(n,e){this.dirty=!1;let i=Qx(n);(this._changesDetected=!Gx(this._results,i,e))&&(this._results=i,this.length=i.length,this.last=i[this.length-1],this.first=i[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.emit(this)}onDirty(n){this._onDirty=n}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}};function V0(t){return(t.flags&128)===128}var j0=new Map,x1=0;function C1(){return x1++}function S1(t){j0.set(t[Bl],t)}function E1(t){j0.delete(t[Bl])}var ag="__ngContext__";function Pi(t,n){or(n)?(t[ag]=n[Bl],S1(n)):t[ag]=n}function B0(t){return z0(t[es])}function U0(t){return z0(t[On])}function z0(t){for(;t!==null&&!li(t);)t=t[On];return t}var ku;function H0(t){ku=t}function $0(){if(ku!==void 0)return ku;if(typeof document<"u")return document;throw new B(210,!1)}var us=new N("",{providedIn:"root",factory:()=>M1}),M1="ng",Oh=new N(""),Kt=new N("",{providedIn:"platform",factory:()=>"unknown"});var di=new N(""),hs=new N("",{providedIn:"root",factory:()=>$0().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});var I1="h",D1="b";var P1=()=>null;function Th(t,n,e=!1){return P1(t,n,e)}var W0=!1,k1=new N("",{providedIn:"root",factory:()=>W0});var Za;function O1(){if(Za===void 0&&(Za=null,at.trustedTypes))try{Za=at.trustedTypes.createPolicy("angular",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Za}function Gl(t){return O1()?.createHTML(t)||t}var Xa;function q0(){if(Xa===void 0&&(Xa=null,at.trustedTypes))try{Xa=at.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:t=>t,createScript:t=>t,createScriptURL:t=>t})}catch{}return Xa}function lg(t){return q0()?.createHTML(t)||t}function cg(t){return q0()?.createScriptURL(t)||t}var _l=class{constructor(n){this.changingThisBreaksApplicationSecurity=n}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${Tg})`}};function vr(t){return t instanceof _l?t.changingThisBreaksApplicationSecurity:t}function Ql(t,n){let e=T1(t);if(e!=null&&e!==n){if(e==="ResourceURL"&&n==="URL")return!0;throw new Error(`Required a safe ${n}, got a ${e} (see ${Tg})`)}return e===n}function T1(t){return t instanceof _l&&t.getTypeName()||null}function A1(t){let n=new Tu(t);return R1()?new Ou(n):n}var Ou=class{constructor(n){this.inertDocumentHelper=n}getInertBodyElement(n){n=""+n;try{let e=new window.DOMParser().parseFromString(Gl(n),"text/html").body;return e===null?this.inertDocumentHelper.getInertBodyElement(n):(e.removeChild(e.firstChild),e)}catch{return null}}},Tu=class{constructor(n){this.defaultDoc=n,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(n){let e=this.inertDocument.createElement("template");return e.innerHTML=Gl(n),e}};function R1(){try{return!!new window.DOMParser().parseFromString(Gl(""),"text/html")}catch{return!1}}var F1=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Ah(t){return t=String(t),t.match(F1)?t:"unsafe:"+t}function ui(t){let n={};for(let e of t.split(","))n[e]=!0;return n}function ps(...t){let n={};for(let e of t)for(let i in e)e.hasOwnProperty(i)&&(n[i]=!0);return n}var G0=ui("area,br,col,hr,img,wbr"),Q0=ui("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Y0=ui("rp,rt"),N1=ps(Y0,Q0),L1=ps(Q0,ui("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),V1=ps(Y0,ui("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),dg=ps(G0,L1,V1,N1),Z0=ui("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),j1=ui("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),B1=ui("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext"),U1=ps(Z0,j1,B1),z1=ui("script,style,template"),Au=class{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(n){let e=n.firstChild,i=!0,r=[];for(;e;){if(e.nodeType===Node.ELEMENT_NODE?i=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,i&&e.firstChild){r.push(e),e=W1(e);continue}for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let o=$1(e);if(o){e=o;break}e=r.pop()}}return this.buf.join("")}startElement(n){let e=ug(n).toLowerCase();if(!dg.hasOwnProperty(e))return this.sanitizedSomething=!0,!z1.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);let i=n.attributes;for(let r=0;r"),!0}endElement(n){let e=ug(n).toLowerCase();dg.hasOwnProperty(e)&&!G0.hasOwnProperty(e)&&(this.buf.push(""))}chars(n){this.buf.push(hg(n))}};function H1(t,n){return(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}function $1(t){let n=t.nextSibling;if(n&&t!==n.previousSibling)throw X0(n);return n}function W1(t){let n=t.firstChild;if(n&&H1(t,n))throw X0(n);return n}function ug(t){let n=t.nodeName;return typeof n=="string"?n:"FORM"}function X0(t){return new Error(`Failed to sanitize html because the element is clobbered: ${t.outerHTML}`)}var q1=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,G1=/([^\#-~ |!])/g;function hg(t){return t.replace(/&/g,"&").replace(q1,function(n){let e=n.charCodeAt(0),i=n.charCodeAt(1);return"&#"+((e-55296)*1024+(i-56320)+65536)+";"}).replace(G1,function(n){return"&#"+n.charCodeAt(0)+";"}).replace(//g,">")}var Ka;function K0(t,n){let e=null;try{Ka=Ka||A1(t);let i=n?String(n):"";e=Ka.getInertBodyElement(i);let r=5,o=i;do{if(r===0)throw new Error("Failed to sanitize html because the input is unstable");r--,i=o,o=e.innerHTML,e=Ka.getInertBodyElement(i)}while(i!==o);let d=new Au().sanitizeChildren(pg(e)||e);return Gl(d)}finally{if(e){let i=pg(e)||e;for(;i.firstChild;)i.removeChild(i.firstChild)}}}function pg(t){return"content"in t&&Q1(t)?t.content:null}function Q1(t){return t.nodeType===Node.ELEMENT_NODE&&t.nodeName==="TEMPLATE"}var fs=function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t}(fs||{});function Ri(t){let n=Rh();return n?lg(n.sanitize(fs.HTML,t)||""):Ql(t,"HTML")?lg(vr(t)):K0($0(),ar(t))}function H(t){let n=Rh();return n?n.sanitize(fs.URL,t)||"":Ql(t,"URL")?vr(t):Ah(ar(t))}function Y1(t){let n=Rh();if(n)return cg(n.sanitize(fs.RESOURCE_URL,t)||"");if(Ql(t,"ResourceURL"))return cg(vr(t));throw new B(904,!1)}function Z1(t,n){return n==="src"&&(t==="embed"||t==="frame"||t==="iframe"||t==="media"||t==="script")||n==="href"&&(t==="base"||t==="link")?Y1:H}function J0(t,n,e){return Z1(n,e)(t)}function Rh(){let t=te();return t&&t[Tn].sanitizer}var X1=/^>|^->||--!>|)/g,J1="\u200B$1\u200B";function eS(t){return t.replace(X1,n=>n.replace(K1,J1))}function Yl(t){return t.ownerDocument}function ev(t){return t instanceof Function?t():t}function tS(t){return(t??R(ot)).get(Kt)==="browser"}var si=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}(si||{}),nS;function Fh(t,n){return nS(t,n)}function Zr(t,n,e,i,r){if(i!=null){let o,s=!1;li(i)?o=i:or(i)&&(s=!0,i=i[ai]);let d=Xn(i);t===0&&e!==null?r==null?ov(n,e,d):yl(n,e,d,r||null,!0):t===1&&e!==null?yl(n,e,d,r||null,!0):t===2?_S(n,d,s):t===3&&n.destroyNode(d),o!=null&&yS(n,t,o,e,r)}}function iS(t,n){return t.createText(n)}function rS(t,n,e){t.setValue(n,e)}function oS(t,n){return t.createComment(eS(n))}function tv(t,n,e){return t.createElement(n,e)}function sS(t,n){nv(t,n),n[ai]=null,n[on]=null}function aS(t,n,e,i,r,o){i[ai]=r,i[on]=n,Xl(t,i,e,1,r,o)}function nv(t,n){n[Tn].changeDetectionScheduler?.notify(1),Xl(t,n,n[Je],2,null,null)}function lS(t){let n=t[es];if(!n)return su(t[he],t);for(;n;){let e=null;if(or(n))e=n[es];else{let i=n[Zt];i&&(e=i)}if(!e){for(;n&&!n[On]&&n!==t;)or(n)&&su(n[he],n),n=n[St];n===null&&(n=t),or(n)&&su(n[he],n),e=n&&n[On]}n=e}}function cS(t,n,e,i){let r=Zt+i,o=e.length;i>0&&(e[r-1][On]=n),i0&&(t[e-1][On]=i[On]);let o=dl(t,Zt+n);sS(i[he],i);let s=o[oi];s!==null&&s.detachView(o[he]),i[St]=null,i[On]=null,i[J]&=-129}return i}function Nh(t,n){if(!(n[J]&256)){let e=n[Je];e.destroyNode&&Xl(t,n,e,3,null,null),lS(n)}}function su(t,n){if(n[J]&256)return;let e=Te(null);try{n[J]&=-129,n[J]|=256,n[cr]&&gm(n[cr]),hS(t,n),uS(t,n),n[he].type===1&&n[Je].destroy();let i=n[cs];if(i!==null&&li(n[St])){i!==n[St]&&iv(i,n);let r=n[oi];r!==null&&r.detachView(t)}E1(n)}finally{Te(e)}}function uS(t,n){let e=t.cleanup,i=n[Jo];if(e!==null)for(let o=0;o=0?i[s]():i[-s].unsubscribe(),o+=2}else{let s=i[e[o+1]];e[o].call(s)}i!==null&&(n[Jo]=null);let r=n[Mi];if(r!==null){n[Mi]=null;for(let o=0;o-1){let{encapsulation:o}=t.data[i.directiveStart+r];if(o===Zn.None||o===Zn.Emulated)return null}return vn(i,e)}}function yl(t,n,e,i,r){t.insertBefore(n,e,i,r)}function ov(t,n,e){t.appendChild(n,e)}function fg(t,n,e,i,r){i!==null?yl(t,n,e,i,r):ov(t,n,e)}function fS(t,n,e,i){t.removeChild(n,e,i)}function Lh(t,n){return t.parentNode(n)}function mS(t,n){return t.nextSibling(n)}function sv(t,n,e){return vS(t,n,e)}function gS(t,n,e){return t.type&40?vn(t,e):null}var vS=gS,mg;function Zl(t,n,e,i){let r=rv(t,i,n),o=n[Je],s=i.parent||n[on],d=sv(s,i,n);if(r!=null)if(Array.isArray(e))for(let u=0;uEt&&uv(t,n,Et,!1),Qn(s?2:0,r),e(i,r)}finally{ur(o),Qn(s?3:1,r)}}function jh(t,n,e){if(bh(n)){let i=Te(null);try{let r=n.directiveStart,o=n.directiveEnd;for(let s=r;snull;function PS(t,n,e,i){let r=wv(n);r.push(e),t.firstCreatePass&&xv(t).push(i,r.length-1)}function kS(t,n,e,i,r,o){let s=n?n.injectorIndex:-1,d=0;return v0()&&(d|=128),{type:e,index:i,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:d,providerIndexes:0,value:r,attrs:o,mergedAttrs:null,localNames:null,initialInputs:void 0,inputs:null,outputs:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:n,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}function gg(t,n,e,i,r){for(let o in n){if(!n.hasOwnProperty(o))continue;let s=n[o];if(s===void 0)continue;i??={};let d,u=ee.None;Array.isArray(s)?(d=s[0],u=s[1]):d=s;let h=o;if(r!==null){if(!r.hasOwnProperty(o))continue;h=r[o]}t===0?vg(i,e,h,d,u):vg(i,e,h,d)}return i}function vg(t,n,e,i,r){let o;t.hasOwnProperty(e)?(o=t[e]).push(n,i):o=t[e]=[n,i],r!==void 0&&o.push(r)}function OS(t,n,e){let i=n.directiveStart,r=n.directiveEnd,o=t.data,s=n.attrs,d=[],u=null,h=null;for(let p=i;p0;){let e=t[--n];if(typeof e=="number"&&e<0)return e}return 0}function NS(t,n,e,i){let r=e.directiveStart,o=e.directiveEnd;Ul(e)&&HS(n,e,t.data[r+e.componentOffset]),t.firstCreatePass||gl(e,n),Pi(i,n);let s=e.initialInputs;for(let d=r;d{ts(t.lView)},consumerOnSignalRead(){this.lView[cr]=this}}),Dv=100;function Pv(t,n=!0,e=0){let i=t[Tn],r=i.rendererFactory,o=!1;o||r.begin?.();try{rE(t,e)}catch(s){throw n&&Cv(t,s),s}finally{o||(r.end?.(),i.inlineEffectRunner?.flush())}}function rE(t,n){Vu(t,n);let e=0;for(;xh(t);){if(e===Dv)throw new B(103,!1);e++,Vu(t,1)}}function oE(t,n,e,i){let r=n[J];if((r&256)===256)return;let o=!1;!o&&n[Tn].inlineEffectRunner?.flush(),Ih(n);let s=null,d=null;!o&&sE(t)&&(d=eE(n),s=fm(d));try{f0(n),QC(t.bindingStartIndex),e!==null&&mv(t,n,e,2,i);let u=(r&3)===3;if(!o)if(u){let m=t.preOrderCheckHooks;m!==null&&il(n,m,null)}else{let m=t.preOrderHooks;m!==null&&rl(n,m,0,null),nu(n,0)}if(aE(n),kv(n,0),t.contentQueries!==null&&yv(t,n),!o)if(u){let m=t.contentCheckHooks;m!==null&&il(n,m)}else{let m=t.contentHooks;m!==null&&rl(n,m,1),nu(n,1)}CS(t,n);let h=t.components;h!==null&&Tv(n,h,0);let p=t.viewQuery;if(p!==null&&Nu(2,p,i),!o)if(u){let m=t.viewCheckHooks;m!==null&&il(n,m)}else{let m=t.viewHooks;m!==null&&rl(n,m,2),nu(n,2)}if(t.firstUpdatePass===!0&&(t.firstUpdatePass=!1),n[tu]){for(let m of n[tu])m();n[tu]=null}o||(n[J]&=-73)}catch(u){throw ts(n),u}finally{d!==null&&(mm(d,s),nE(d)),Dh()}}function sE(t){return t.type!==2}function kv(t,n){for(let e=B0(t);e!==null;e=U0(e))for(let i=Zt;i-1&&(bl(n,i),dl(e,i))}this._attachedToViewContainer=!1}Nh(this._lView[he],this._lView)}onDestroy(n){m0(this._lView,n)}markForCheck(){qh(this._cdRefInjectingView||this._lView)}detach(){this._lView[J]&=-129}reattach(){Cu(this._lView),this._lView[J]|=128}detectChanges(){this._lView[J]|=1024,Pv(this._lView,this.notifyErrorHandler)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new B(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,nv(this._lView[he],this._lView)}attachToAppRef(n){if(this._attachedToViewContainer)throw new B(902,!1);this._appRef=n,Cu(this._lView)}},rn=(()=>{class t{static{this.__NG_ELEMENT_ID__=uE}}return t})(),cE=rn,dE=class extends cE{constructor(n,e,i){super(),this._declarationLView=n,this._declarationTContainer=e,this.elementRef=i}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(n,e){return this.createEmbeddedViewImpl(n,e)}createEmbeddedViewImpl(n,e,i){let r=Ev(this._declarationLView,this._declarationTContainer,n,{embeddedViewInjector:e,dehydratedView:i});return new fr(r)}};function uE(){return tc(Ft(),te())}function tc(t,n){return t.type&4?new dE(n,t,ho(t,n)):null}var X4=new RegExp(`^(\\d+)*(${D1}|${I1})*(.*)`);var hE=()=>null;function ju(t,n){return hE(t,n)}var xl=class{},Bu=class{},Cl=class{};function pE(t){let n=Error(`No component factory found for ${Ht(t)}.`);return n[fE]=t,n}var fE="ngComponent";var Uu=class{resolveComponentFactory(n){throw pE(n)}},Fi=(()=>{class t{static{this.NULL=new Uu}}return t})(),is=class{},ln=(()=>{class t{constructor(){this.destroyNode=null}static{this.__NG_ELEMENT_ID__=()=>mE()}}return t})();function mE(){let t=te(),n=Ft(),e=Oi(n.index,t);return(or(e)?e:t)[Je]}var gE=(()=>{class t{static{this.\u0275prov=T({token:t,providedIn:"root",factory:()=>null})}}return t})(),au={};var _g=new Set;function ms(t){_g.has(t)||(_g.add(t),performance?.mark?.("mark_feature_usage",{detail:{feature:t}}))}function bg(...t){}function vE(){let t=typeof at.requestAnimationFrame=="function",n=at[t?"requestAnimationFrame":"setTimeout"],e=at[t?"cancelAnimationFrame":"clearTimeout"];if(typeof Zone<"u"&&n&&e){let i=n[Zone.__symbol__("OriginalDelegate")];i&&(n=i);let r=e[Zone.__symbol__("OriginalDelegate")];r&&(e=r)}return{nativeRequestAnimationFrame:n,nativeCancelAnimationFrame:e}}var Z=class t{constructor({enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:e=!1,shouldCoalesceRunChangeDetection:i=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new de(!1),this.onMicrotaskEmpty=new de(!1),this.onStable=new de(!1),this.onError=new de(!1),typeof Zone>"u")throw new B(908,!1);Zone.assertZonePatched();let r=this;r._nesting=0,r._outer=r._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!i&&e,r.shouldCoalesceRunChangeDetection=i,r.lastRequestAnimationFrameId=-1,r.nativeRequestAnimationFrame=vE().nativeRequestAnimationFrame,yE(r)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get("isAngularZone")===!0}static assertInAngularZone(){if(!t.isInAngularZone())throw new B(909,!1)}static assertNotInAngularZone(){if(t.isInAngularZone())throw new B(909,!1)}run(n,e,i){return this._inner.run(n,e,i)}runTask(n,e,i,r){let o=this._inner,s=o.scheduleEventTask("NgZoneEvent: "+r,n,_E,bg,bg);try{return o.runTask(s,e,i)}finally{o.cancelTask(s)}}runGuarded(n,e,i){return this._inner.runGuarded(n,e,i)}runOutsideAngular(n){return this._outer.run(n)}},_E={};function Gh(t){if(t._nesting==0&&!t.hasPendingMicrotasks&&!t.isStable)try{t._nesting++,t.onMicrotaskEmpty.emit(null)}finally{if(t._nesting--,!t.hasPendingMicrotasks)try{t.runOutsideAngular(()=>t.onStable.emit(null))}finally{t.isStable=!0}}}function bE(t){t.isCheckStableRunning||t.lastRequestAnimationFrameId!==-1||(t.lastRequestAnimationFrameId=t.nativeRequestAnimationFrame.call(at,()=>{t.fakeTopEventTask||(t.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{t.lastRequestAnimationFrameId=-1,zu(t),t.isCheckStableRunning=!0,Gh(t),t.isCheckStableRunning=!1},void 0,()=>{},()=>{})),t.fakeTopEventTask.invoke()}),zu(t))}function yE(t){let n=()=>{bE(t)};t._inner=t._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(e,i,r,o,s,d)=>{if(wE(d))return e.invokeTask(r,o,s,d);try{return yg(t),e.invokeTask(r,o,s,d)}finally{(t.shouldCoalesceEventChangeDetection&&o.type==="eventTask"||t.shouldCoalesceRunChangeDetection)&&n(),wg(t)}},onInvoke:(e,i,r,o,s,d,u)=>{try{return yg(t),e.invoke(r,o,s,d,u)}finally{t.shouldCoalesceRunChangeDetection&&n(),wg(t)}},onHasTask:(e,i,r,o)=>{e.hasTask(r,o),i===r&&(o.change=="microTask"?(t._hasPendingMicrotasks=o.microTask,zu(t),Gh(t)):o.change=="macroTask"&&(t.hasPendingMacrotasks=o.macroTask))},onHandleError:(e,i,r,o)=>(e.handleError(r,o),t.runOutsideAngular(()=>t.onError.emit(o)),!1)})}function zu(t){t._hasPendingMicrotasks||(t.shouldCoalesceEventChangeDetection||t.shouldCoalesceRunChangeDetection)&&t.lastRequestAnimationFrameId!==-1?t.hasPendingMicrotasks=!0:t.hasPendingMicrotasks=!1}function yg(t){t._nesting++,t.isStable&&(t.isStable=!1,t.onUnstable.emit(null))}function wg(t){t._nesting--,Gh(t)}var Hu=class{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new de,this.onMicrotaskEmpty=new de,this.onStable=new de,this.onError=new de}run(n,e,i){return n.apply(e,i)}runGuarded(n,e,i){return n.apply(e,i)}runOutsideAngular(n){return n()}runTask(n,e,i,r){return n.apply(e,i)}};function wE(t){return!Array.isArray(t)||t.length!==1?!1:t[0].data?.__ignore_ng_zone__===!0}function xE(t="zone.js",n){return t==="noop"?new Hu:t==="zone.js"?new Z(n):t}var Xr=function(t){return t[t.EarlyRead=0]="EarlyRead",t[t.Write=1]="Write",t[t.MixedReadWrite=2]="MixedReadWrite",t[t.Read=3]="Read",t}(Xr||{}),CE={destroy(){}};function nc(t,n){!n&&EC(nc);let e=n?.injector??R(ot);if(!tS(e))return CE;ms("NgAfterNextRender");let i=e.get(Qh),r=i.handler??=new Wu,o=n?.phase??Xr.MixedReadWrite,s=()=>{r.unregister(u),d()},d=e.get(kh).onDestroy(s),u=Fn(e,()=>new $u(o,()=>{s(),t()}));return r.register(u),{destroy:s}}var $u=class{constructor(n,e){this.phase=n,this.callbackFn=e,this.zone=R(Z),this.errorHandler=R(Rn,{optional:!0}),R(xl,{optional:!0})?.notify(1)}invoke(){try{this.zone.runOutsideAngular(this.callbackFn)}catch(n){this.errorHandler?.handleError(n)}}},Wu=class{constructor(){this.executingCallbacks=!1,this.buckets={[Xr.EarlyRead]:new Set,[Xr.Write]:new Set,[Xr.MixedReadWrite]:new Set,[Xr.Read]:new Set},this.deferredCallbacks=new Set}register(n){(this.executingCallbacks?this.deferredCallbacks:this.buckets[n.phase]).add(n)}unregister(n){this.buckets[n.phase].delete(n),this.deferredCallbacks.delete(n)}execute(){this.executingCallbacks=!0;for(let n of Object.values(this.buckets))for(let e of n)e.invoke();this.executingCallbacks=!1;for(let n of this.deferredCallbacks)this.buckets[n.phase].add(n);this.deferredCallbacks.clear()}destroy(){for(let n of Object.values(this.buckets))n.clear();this.deferredCallbacks.clear()}},Qh=(()=>{class t{constructor(){this.handler=null,this.internalCallbacks=[]}execute(){this.executeInternalCallbacks(),this.handler?.execute()}executeInternalCallbacks(){let e=[...this.internalCallbacks];this.internalCallbacks.length=0;for(let i of e)i()}ngOnDestroy(){this.handler?.destroy(),this.handler=null,this.internalCallbacks.length=0}static{this.\u0275prov=T({token:t,providedIn:"root",factory:()=>new t})}}return t})();function Sl(t,n,e){let i=e?t.styles:null,r=e?t.classes:null,o=0;if(n!==null)for(let s=0;s0&&cv(t,e,o.join(" "))}}function kE(t,n,e){let i=t.projection=[];for(let r=0;r{class t{static{this.__NG_ELEMENT_ID__=TE}}return t})();function TE(){let t=Ft();return Rv(t,te())}var AE=cn,Av=class extends AE{constructor(n,e,i){super(),this._lContainer=n,this._hostTNode=e,this._hostLView=i}get element(){return ho(this._hostTNode,this._hostLView)}get injector(){return new sr(this._hostTNode,this._hostLView)}get parentInjector(){let n=Ph(this._hostTNode,this._hostLView);if(I0(n)){let e=fl(n,this._hostLView),i=pl(n),r=e[he].data[i+8];return new sr(r,e)}else return new sr(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(n){let e=Cg(this._lContainer);return e!==null&&e[n]||null}get length(){return this._lContainer.length-Zt}createEmbeddedView(n,e,i){let r,o;typeof i=="number"?r=i:i!=null&&(r=i.index,o=i.injector);let s=ju(this._lContainer,n.ssrId),d=n.createEmbeddedViewImpl(e||{},o,s);return this.insertImpl(d,r,Lu(this._hostTNode,s)),d}createComponent(n,e,i,r,o){let s=n&&!IC(n),d;if(s)d=e;else{let S=e||{};d=S.index,i=S.injector,r=S.projectableNodes,o=S.environmentInjector||S.ngModuleRef}let u=s?n:new so(Ii(n)),h=i||this.parentInjector;if(!o&&u.ngModule==null){let D=(s?h:this.parentInjector).get(Rt,null);D&&(o=D)}let p=Ii(u.componentType??{}),m=ju(this._lContainer,p?.id??null),b=m?.firstChild??null,w=u.create(h,r,b,o);return this.insertImpl(w.hostView,d,Lu(this._hostTNode,m)),w}insert(n,e){return this.insertImpl(n,e,!0)}insertImpl(n,e,i){let r=n._lView;if(NC(r)){let d=this.indexOf(n);if(d!==-1)this.detach(d);else{let u=r[St],h=new Av(u,u[on],u[St]);h.detach(h.indexOf(n))}}let o=this._adjustIndex(e),s=this._lContainer;return Mv(s,r,o,i),n.attachToViewContainerRef(),zg(lu(s),o,n),n}move(n,e){return this.insert(n,e)}indexOf(n){let e=Cg(this._lContainer);return e!==null?e.indexOf(n):-1}remove(n){let e=this._adjustIndex(n,-1),i=bl(this._lContainer,e);i&&(dl(lu(this._lContainer),e),Nh(i[he],i))}detach(n){let e=this._adjustIndex(n,-1),i=bl(this._lContainer,e);return i&&dl(lu(this._lContainer),e)!=null?new fr(i):null}_adjustIndex(n,e=0){return n??this.length+e}};function Cg(t){return t[hl]}function lu(t){return t[hl]||(t[hl]=[])}function Rv(t,n){let e,i=n[t.index];return li(i)?e=i:(e=bv(i,n,null,t),n[t.index]=e,ec(n,e)),FE(e,n,t,i),new Av(e,t,n)}function RE(t,n){let e=t[Je],i=e.createComment(""),r=vn(n,t),o=Lh(e,r);return yl(e,o,i,mS(e,r),!1),i}var FE=VE,NE=()=>!1;function LE(t,n,e){return NE(t,n,e)}function VE(t,n,e,i){if(t[dr])return;let r;e.type&8?r=Xn(i):r=RE(n,e),t[dr]=r}var Qu=class t{constructor(n){this.queryList=n,this.matches=null}clone(){return new t(this.queryList)}setDirty(){this.queryList.setDirty()}},Yu=class t{constructor(n=[]){this.queries=n}createEmbeddedView(n){let e=n.queries;if(e!==null){let i=n.contentQueries!==null?n.contentQueries[0]:e.length,r=[];for(let o=0;o0)i.push(s[d/2]);else{let h=o[d+1],p=n[-u];for(let m=Zt;mn.trim())}function Lv(t,n,e){t.queries===null&&(t.queries=new Zu),t.queries.track(new Xu(n,e))}function GE(t,n){let e=t.contentQueries||(t.contentQueries=[]),i=e.length?e[e.length-1]:-1;n!==i&&e.push(t.queries.length-1,n)}function Yh(t,n){return t.queries.getByIndex(n)}function QE(t,n){let e=t[he],i=Yh(e,n);return i.crossesNgTemplate?Ku(e,t,n,[]):Fv(e,t,i,n)}function Vv(t){return typeof t=="function"&&t[Ad]!==void 0}function jv(t){return Vv(t)&&typeof t.set=="function"}function YE(t){let n=[],e=new Map;function i(r){let o=e.get(r);if(!o){let s=t(r);e.set(r,o=s.then(JE))}return o}return Il.forEach((r,o)=>{let s=[];r.templateUrl&&s.push(i(r.templateUrl).then(h=>{r.template=h}));let d=typeof r.styles=="string"?[r.styles]:r.styles||[];if(r.styles=d,r.styleUrl&&r.styleUrls?.length)throw new Error("@Component cannot define both `styleUrl` and `styleUrls`. Use `styleUrl` if the component has one stylesheet, or `styleUrls` if it has multiple");if(r.styleUrls?.length){let h=r.styles.length,p=r.styleUrls;r.styleUrls.forEach((m,b)=>{d.push(""),s.push(i(m).then(w=>{d[h+b]=w,p.splice(p.indexOf(m),1),p.length==0&&(r.styleUrls=void 0)}))})}else r.styleUrl&&s.push(i(r.styleUrl).then(h=>{d.push(h),r.styleUrl=void 0}));let u=Promise.all(s).then(()=>eM(o));n.push(u)}),XE(),Promise.all(n).then(()=>{})}var Il=new Map,ZE=new Set;function XE(){let t=Il;return Il=new Map,t}function KE(){return Il.size===0}function JE(t){return typeof t=="string"?t:t.text()}function eM(t){ZE.delete(t)}function tM(t){return Object.getPrototypeOf(t.prototype).constructor}function st(t){let n=tM(t.type),e=!0,i=[t];for(;n;){let r;if(Di(t))r=n.\u0275cmp||n.\u0275dir;else{if(n.\u0275cmp)throw new B(903,!1);r=n.\u0275dir}if(r){if(e){i.push(r);let s=t;s.inputs=Ja(t.inputs),s.inputTransforms=Ja(t.inputTransforms),s.declaredInputs=Ja(t.declaredInputs),s.outputs=Ja(t.outputs);let d=r.hostBindings;d&&sM(t,d);let u=r.viewQuery,h=r.contentQueries;if(u&&rM(t,u),h&&oM(t,h),nM(t,r),Dx(t.outputs,r.outputs),Di(r)&&r.data.animation){let p=t.data;p.animation=(p.animation||[]).concat(r.data.animation)}}let o=r.features;if(o)for(let s=0;s=0;i--){let r=t[i];r.hostVars=n+=r.hostVars,r.hostAttrs=Zo(r.hostAttrs,e=Zo(e,r.hostAttrs))}}function Ja(t){return t===eo?{}:t===Yt?[]:t}function rM(t,n){let e=t.viewQuery;e?t.viewQuery=(i,r)=>{n(i,r),e(i,r)}:t.viewQuery=n}function oM(t,n){let e=t.contentQueries;e?t.contentQueries=(i,r,o)=>{n(i,r,o),e(i,r,o)}:t.contentQueries=n}function sM(t,n){let e=t.hostBindings;e?t.hostBindings=(i,r)=>{n(i,r),e(i,r)}:t.hostBindings=n}function Nn(t){let n=t.inputConfig,e={};for(let i in n)if(n.hasOwnProperty(i)){let r=n[i];Array.isArray(r)&&r[3]&&(e[i]=r[3])}t.inputTransforms=e}var ki=class{},rs=class{};var Dl=class extends ki{constructor(n,e,i){super(),this._parent=e,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new El(this);let r=Kg(n);this._bootstrapComponents=ev(r.bootstrap),this._r3Injector=N0(n,e,[{provide:ki,useValue:this},{provide:Fi,useValue:this.componentFactoryResolver},...i],Ht(n),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(n)}get injector(){return this._r3Injector}destroy(){let n=this._r3Injector;!n.destroyed&&n.destroy(),this.destroyCbs.forEach(e=>e()),this.destroyCbs=null}onDestroy(n){this.destroyCbs.push(n)}},Pl=class extends rs{constructor(n){super(),this.moduleType=n}create(n){return new Dl(this.moduleType,n,[])}};function aM(t,n,e){return new Dl(t,n,e)}var Ju=class extends ki{constructor(n){super(),this.componentFactoryResolver=new El(this),this.instance=null;let e=new Xo([...n.providers,{provide:ki,useValue:this},{provide:Fi,useValue:this.componentFactoryResolver}],n.parent||vh(),n.debugName,new Set(["environment"]));this.injector=e,n.runEnvironmentInitializers&&e.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(n){this.injector.onDestroy(n)}};function ic(t,n,e=null){return new Ju({providers:t,parent:n,debugName:e,runEnvironmentInitializers:!0}).injector}var _r=(()=>{class t{constructor(){this.taskId=0,this.pendingTasks=new Set,this.hasPendingTasks=new Ge(!1)}get _hasPendingTasks(){return this.hasPendingTasks.value}add(){this._hasPendingTasks||this.hasPendingTasks.next(!0);let e=this.taskId++;return this.pendingTasks.add(e),e}remove(e){this.pendingTasks.delete(e),this.pendingTasks.size===0&&this._hasPendingTasks&&this.hasPendingTasks.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this._hasPendingTasks&&this.hasPendingTasks.next(!1)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function Bv(t){return cM(t)?Array.isArray(t)||!(t instanceof Map)&&Symbol.iterator in t:!1}function lM(t,n){if(Array.isArray(t))for(let e=0;e>17&32767}function _M(t){return(t&2)==2}function bM(t,n){return t&131071|n<<17}function eh(t){return t|2}function ao(t){return(t&131068)>>2}function cu(t,n){return t&-131069|n<<2}function yM(t){return(t&1)===1}function th(t){return t|1}function wM(t,n,e,i,r,o){let s=o?n.classBindings:n.styleBindings,d=mr(s),u=ao(s);t[i]=e;let h=!1,p;if(Array.isArray(e)){let m=e;p=m[1],(p===null||ls(m,p)>0)&&(h=!0)}else p=e;if(r)if(u!==0){let b=mr(t[d+1]);t[i+1]=el(b,d),b!==0&&(t[b+1]=cu(t[b+1],i)),t[d+1]=bM(t[d+1],i)}else t[i+1]=el(d,0),d!==0&&(t[d+1]=cu(t[d+1],i)),d=i;else t[i+1]=el(u,0),d===0?d=i:t[u+1]=cu(t[u+1],i),u=i;h&&(t[i+1]=eh(t[i+1])),Sg(t,p,i,!0),Sg(t,p,i,!1),xM(n,p,t,i,o),s=el(d,u),o?n.classBindings=s:n.styleBindings=s}function xM(t,n,e,i,r){let o=r?t.residualClasses:t.residualStyles;o!=null&&typeof n=="string"&&ls(o,n)>=0&&(e[i+1]=th(e[i+1]))}function Sg(t,n,e,i){let r=t[e+1],o=n===null,s=i?mr(r):ao(r),d=!1;for(;s!==0&&(d===!1||o);){let u=t[s],h=t[s+1];CM(u,n)&&(d=!0,t[s+1]=i?th(h):eh(h)),s=i?mr(h):ao(h)}d&&(t[e+1]=i?eh(r):th(r))}function CM(t,n){return t===null||n==null||(Array.isArray(t)?t[1]:t)===n?!0:Array.isArray(t)&&typeof n=="string"?ls(t,n)>=0:!1}var kn={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function SM(t){return t.substring(kn.key,kn.keyEnd)}function EM(t){return MM(t),zv(t,Hv(t,0,kn.textEnd))}function zv(t,n){let e=kn.textEnd;return e===n?-1:(n=kn.keyEnd=IM(t,kn.key=n,e),Hv(t,n,e))}function MM(t){kn.key=0,kn.keyEnd=0,kn.value=0,kn.valueEnd=0,kn.textEnd=t.length}function Hv(t,n,e){for(;n32;)n++;return n}function g(t,n,e){let i=te(),r=co();if(gn(i,r,n)){let o=et(),s=ds();Jl(o,s,i,t,n,i[Je],e,!1)}return g}function nh(t,n,e,i,r){let o=n.inputs,s=r?"class":"style";$h(t,e,o[s],s,i)}function Nt(t,n,e){return $v(t,n,e,!1),Nt}function W(t,n){return $v(t,n,null,!0),W}function Zh(t){PM(FM,DM,t,!0)}function DM(t,n){for(let e=EM(n);e>=0;e=zv(n,e))fh(t,SM(n),!0)}function $v(t,n,e,i){let r=te(),o=et(),s=Eh(2);if(o.firstUpdatePass&&qv(o,t,s,i),n!==an&&gn(r,s,n)){let d=o.data[Ai()];Gv(o,d,r,r[Je],t,r[s+1]=LM(n,e),i,s)}}function PM(t,n,e,i){let r=et(),o=Eh(2);r.firstUpdatePass&&qv(r,null,o,i);let s=te();if(e!==an&&gn(s,o,e)){let d=r.data[Ai()];if(Qv(d,i)&&!Wv(r,o)){let u=i?d.classesWithoutHost:d.stylesWithoutHost;u!==null&&(e=fu(u,e||"")),nh(r,d,s,e,i)}else NM(r,d,s,s[Je],s[o+1],s[o+1]=RM(t,n,e),i,o)}}function Wv(t,n){return n>=t.expandoStartIndex}function qv(t,n,e,i){let r=t.data;if(r[e+1]===null){let o=r[Ai()],s=Wv(t,e);Qv(o,i)&&n===null&&!s&&(n=!1),n=kM(r,o,n,i),wM(r,o,n,e,s,i)}}function kM(t,n,e,i){let r=KC(t),o=i?n.residualClasses:n.residualStyles;if(r===null)(i?n.classBindings:n.styleBindings)===0&&(e=du(null,t,n,e,i),e=ss(e,n.attrs,i),o=null);else{let s=n.directiveStylingLast;if(s===-1||t[s]!==r)if(e=du(r,t,n,e,i),o===null){let u=OM(t,n,i);u!==void 0&&Array.isArray(u)&&(u=du(null,t,n,u[1],i),u=ss(u,n.attrs,i),TM(t,n,i,u))}else o=AM(t,n,i)}return o!==void 0&&(i?n.residualClasses=o:n.residualStyles=o),e}function OM(t,n,e){let i=e?n.classBindings:n.styleBindings;if(ao(i)!==0)return t[mr(i)]}function TM(t,n,e,i){let r=e?n.classBindings:n.styleBindings;t[mr(r)]=i}function AM(t,n,e){let i,r=n.directiveEnd;for(let o=1+n.directiveStylingLast;o0;){let u=t[r],h=Array.isArray(u),p=h?u[1]:u,m=p===null,b=e[r+1];b===an&&(b=m?Yt:void 0);let w=m?Jd(b,i):p===i?b:void 0;if(h&&!kl(w)&&(w=Jd(u,i)),kl(w)&&(d=w,s))return d;let S=t[r+1];r=s?mr(S):ao(S)}if(n!==null){let u=o?n.residualClasses:n.residualStyles;u!=null&&(d=Jd(u,i))}return d}function kl(t){return t!==void 0}function LM(t,n){return t==null||t===""||(typeof n=="string"?t=t+n:typeof t=="object"&&(t=Ht(vr(t)))),t}function Qv(t,n){return(t.flags&(n?8:16))!==0}function Xh(t,n,e){ms("NgControlFlow");let i=te(),r=co(),o=VM(i,Et+t),s=0;if(gn(i,r,n)){let d=Te(null);try{if(KS(o,s),n!==-1){let u=jM(i[he],Et+n),h=ju(o,u.tView.ssrId),p=Ev(i,u,e,{dehydratedView:h});Mv(o,p,s,Lu(u,h))}}finally{Te(d)}}else{let d=XS(o,s);d!==void 0&&(d[mn]=e)}}function VM(t,n){return t[n]}function jM(t,n){return yh(t,n)}function BM(t,n,e,i,r,o){let s=n.consts,d=oo(s,r),u=po(n,t,2,i,d);return Hh(n,e,u,oo(s,o)),u.attrs!==null&&Sl(u,u.attrs,!1),u.mergedAttrs!==null&&Sl(u,u.mergedAttrs,!0),n.queries!==null&&n.queries.elementStart(n,u),u}function c(t,n,e,i){let r=te(),o=et(),s=Et+t,d=r[Je],u=o.firstCreatePass?BM(s,o,r,n,e,i):o.data[s],h=UM(o,r,u,d,n,t);r[s]=h;let p=zl(u);return gr(u,!0),dv(d,h,u),!pM(u)&&$l()&&Zl(o,r,h,u),BC()===0&&Pi(h,r),UC(),p&&(Bh(o,r,u),jh(o,u,r)),i!==null&&Uh(r,u),c}function a(){let t=Ft();Ch()?Sh():(t=t.parent,gr(t,!1));let n=t;HC(n)&&$C(),zC();let e=et();return e.firstCreatePass&&(ql(e,t),bh(t)&&e.queries.elementEnd(t)),n.classesWithoutHost!=null&&s1(n)&&nh(e,n,te(),n.classesWithoutHost,!0),n.stylesWithoutHost!=null&&a1(n)&&nh(e,n,te(),n.stylesWithoutHost,!1),a}function v(t,n,e,i){return c(t,n,e,i),a(),v}var UM=(t,n,e,i,r,o)=>(Wl(!0),tv(i,r,n1()));function zM(t,n,e,i,r){let o=n.consts,s=oo(o,i),d=po(n,t,8,"ng-container",s);s!==null&&Sl(d,s,!0);let u=oo(o,r);return Hh(n,e,d,u),n.queries!==null&&n.queries.elementStart(n,d),d}function Me(t,n,e){let i=te(),r=et(),o=t+Et,s=r.firstCreatePass?zM(o,r,i,n,e):r.data[o];gr(s,!0);let d=HM(r,i,s,t);return i[o]=d,$l()&&Zl(r,i,d,s),Pi(d,i),zl(s)&&(Bh(r,i,s),jh(r,s,i)),e!=null&&Uh(i,s),Me}function Ie(){let t=Ft(),n=et();return Ch()?Sh():(t=t.parent,gr(t,!1)),n.firstCreatePass&&(ql(n,t),bh(t)&&n.queries.elementEnd(t)),Ie}var HM=(t,n,e,i)=>(Wl(!0),oS(n[Je],""));function F(){return te()}function fo(t,n,e){let i=te(),r=co();if(gn(i,r,n)){let o=et(),s=ds();Jl(o,s,i,t,n,i[Je],e,!0)}return fo}var rr=void 0;function $M(t){let n=t,e=Math.floor(Math.abs(t)),i=t.toString().replace(/^[^.]*\.?/,"").length;return e===1&&i===0?1:5}var WM=["en",[["a","p"],["AM","PM"],rr],[["AM","PM"],rr,rr],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],rr,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],rr,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",rr,"{1} 'at' {0}",rr],[".",",",";","%","+","-","E","\xD7","\u2030","\u221E","NaN",":"],["#,##0.###","#,##0%","\xA4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",$M],uu={};function Kh(t){let n=qM(t),e=Mg(n);if(e)return e;let i=n.split("-")[0];if(e=Mg(i),e)return e;if(i==="en")return WM;throw new B(701,!1)}function Mg(t){return t in uu||(uu[t]=at.ng&&at.ng.common&&at.ng.common.locales&&at.ng.common.locales[t]),uu[t]}var mo=function(t){return t[t.LocaleId=0]="LocaleId",t[t.DayPeriodsFormat=1]="DayPeriodsFormat",t[t.DayPeriodsStandalone=2]="DayPeriodsStandalone",t[t.DaysFormat=3]="DaysFormat",t[t.DaysStandalone=4]="DaysStandalone",t[t.MonthsFormat=5]="MonthsFormat",t[t.MonthsStandalone=6]="MonthsStandalone",t[t.Eras=7]="Eras",t[t.FirstDayOfWeek=8]="FirstDayOfWeek",t[t.WeekendRange=9]="WeekendRange",t[t.DateFormat=10]="DateFormat",t[t.TimeFormat=11]="TimeFormat",t[t.DateTimeFormat=12]="DateTimeFormat",t[t.NumberSymbols=13]="NumberSymbols",t[t.NumberFormats=14]="NumberFormats",t[t.CurrencyCode=15]="CurrencyCode",t[t.CurrencySymbol=16]="CurrencySymbol",t[t.CurrencyName=17]="CurrencyName",t[t.Currencies=18]="Currencies",t[t.Directionality=19]="Directionality",t[t.PluralCase=20]="PluralCase",t[t.ExtraData=21]="ExtraData",t}(mo||{});function qM(t){return t.toLowerCase().replace(/_/g,"-")}var Ol="en-US";var GM=Ol;function QM(t){typeof t=="string"&&(GM=t.toLowerCase().replace(/_/g,"-"))}function y(t,n,e,i){let r=te(),o=et(),s=Ft();return Yv(o,r,r[Je],s,t,n,i),y}function YM(t,n,e,i){let r=t.cleanup;if(r!=null)for(let o=0;ou?d[u]:null}typeof s=="string"&&(o+=2)}return null}function Yv(t,n,e,i,r,o,s){let d=zl(i),h=t.firstCreatePass&&xv(t),p=n[mn],m=wv(n),b=!0;if(i.type&3||s){let D=vn(i,n),O=s?s(D):D,L=m.length,X=s?ie=>s(Xn(ie[i.index])):i.index,V=null;if(!s&&d&&(V=YM(t,n,r,i.index)),V!==null){let ie=V.__ngLastListenerFn__||V;ie.__ngNextListenerFn__=o,V.__ngLastListenerFn__=o,b=!1}else{o=Dg(i,n,p,o,!1);let ie=e.listen(O,r,o);m.push(o,ie),h&&h.push(r,X,L,L+1)}}else o=Dg(i,n,p,o,!1);let w=i.outputs,S;if(b&&w!==null&&(S=w[r])){let D=S.length;if(D)for(let O=0;O-1?Oi(t.index,n):n;qh(d);let u=Ig(n,e,i,s),h=o.__ngNextListenerFn__;for(;h;)u=Ig(n,e,h,s)&&u,h=h.__ngNextListenerFn__;return r&&u===!1&&s.preventDefault(),u}}function _(t=1){return e1(t)}function ZM(t,n){let e=null,i=rC(t);for(let r=0;r=t.data.length&&(t.data[e]=null,t.blueprint[e]=null),n[e]=i}function Dt(t){let n=qC();return Hl(n,Et+t)}function l(t,n=""){let e=te(),i=et(),r=t+Et,o=i.firstCreatePass?po(i,r,1,n,null):i.data[r],s=KM(i,e,o,n,t);e[r]=s,$l()&&Zl(i,e,s,o),gr(o,!1)}var KM=(t,n,e,i,r)=>(Wl(!0),iS(n[Je],i));function U(t){return ne("",t,""),U}function ne(t,n,e){let i=te(),r=Uv(i,t,n,e);return r!==an&&Sv(i,Ai(),r),ne}function Kn(t,n,e,i,r){let o=te(),s=vM(o,t,n,e,i,r);return s!==an&&Sv(o,Ai(),s),Kn}function mt(t,n,e){jv(n)&&(n=n());let i=te(),r=co();if(gn(i,r,n)){let o=et(),s=ds();Jl(o,s,i,t,n,i[Je],e,!1)}return mt}function Pt(t,n){let e=jv(t);return e&&t.set(n),e}function gt(t,n){let e=te(),i=et(),r=Ft();return Yv(i,e,e[Je],r,t,n),gt}function JM(t,n,e){let i=et();if(i.firstCreatePass){let r=Di(t);ih(e,i.data,i.blueprint,r,!0),ih(n,i.data,i.blueprint,r,!1)}}function ih(t,n,e,i,r){if(t=zt(t),Array.isArray(t))for(let o=0;o>20;if(no(t)||!t.multi){let w=new hr(h,r,M),S=pu(u,n,r?p:p+b,m);S===-1?(Mu(gl(d,s),o,u),hu(o,t,n.length),n.push(u),d.directiveStart++,d.directiveEnd++,r&&(d.providerIndexes+=1048576),e.push(w),s.push(w)):(e[S]=w,s[S]=w)}else{let w=pu(u,n,p+b,m),S=pu(u,n,p,p+b),D=w>=0&&e[w],O=S>=0&&e[S];if(r&&!O||!r&&!D){Mu(gl(d,s),o,u);let L=nI(r?tI:eI,e.length,r,i,h);!r&&O&&(e[S].providerFactory=L),hu(o,t,n.length,0),n.push(u),d.directiveStart++,d.directiveEnd++,r&&(d.providerIndexes+=1048576),e.push(L),s.push(L)}else{let L=Xv(e[r?S:w],h,!r&&i);hu(o,t,w>-1?w:S,L)}!r&&i&&O&&e[S].componentProviders++}}}function hu(t,n,e,i){let r=no(n),o=_C(n);if(r||o){let u=(o?zt(n.useClass):n).prototype.ngOnDestroy;if(u){let h=t.destroyHooks||(t.destroyHooks=[]);if(!r&&n.multi){let p=h.indexOf(e);p===-1?h.push(e,[i,u]):h[p+1].push(i,u)}else h.push(e,u)}}}function Xv(t,n,e){return e&&t.componentProviders++,t.multi.push(n)-1}function pu(t,n,e,i){for(let r=e;r{e.providersResolver=(i,r)=>JM(i,r?r(t):t,n)}}var iI=(()=>{class t{constructor(e){this._injector=e,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e)){let i=t0(!1,e.type),r=i.length>0?ic([i],this._injector,`Standalone[${e.type.name}]`):null;this.cachedInjectors.set(e,r)}return this.cachedInjectors.get(e)}ngOnDestroy(){try{for(let e of this.cachedInjectors.values())e!==null&&e.destroy()}finally{this.cachedInjectors.clear()}}static{this.\u0275prov=T({token:t,providedIn:"environment",factory:()=>new t(I(Rt))})}}return t})();function ye(t){ms("NgStandalone"),t.getStandaloneInjector=n=>n.get(iI).getOrCreateStandaloneInjector(t)}function Kv(t,n,e){let i=Ti()+t,r=te();return r[i]===an?gs(r,i,e?n.call(e):n()):dM(r,i)}function vs(t,n,e,i){return e_(te(),Ti(),t,n,e,i)}function rc(t,n,e,i,r){return t_(te(),Ti(),t,n,e,i,r)}function oc(t,n,e,i,r,o){return n_(te(),Ti(),t,n,e,i,r,o)}function Jv(t,n,e,i,r,o,s){return rI(te(),Ti(),t,n,e,i,r,o,s)}function sc(t,n){let e=t[n];return e===an?void 0:e}function e_(t,n,e,i,r,o){let s=n+e;return gn(t,s,r)?gs(t,s+1,o?i.call(o,r):i(r)):sc(t,s+1)}function t_(t,n,e,i,r,o,s){let d=n+e;return os(t,d,r,o)?gs(t,d+2,s?i.call(s,r,o):i(r,o)):sc(t,d+2)}function n_(t,n,e,i,r,o,s,d){let u=n+e;return uM(t,u,r,o,s)?gs(t,u+3,d?i.call(d,r,o,s):i(r,o,s)):sc(t,u+3)}function rI(t,n,e,i,r,o,s,d,u){let h=n+e;return hM(t,h,r,o,s,d)?gs(t,h+4,u?i.call(u,r,o,s,d):i(r,o,s,d)):sc(t,h+4)}function Ni(t,n){let e=et(),i,r=t+Et;e.firstCreatePass?(i=oI(n,e.pipeRegistry),e.data[r]=i,i.onDestroy&&(e.destroyHooks??=[]).push(r,i.onDestroy)):i=e.data[r];let o=i.factory||(i.factory=lr(i.type,!0)),s,d=Qt(M);try{let u=ml(!1),h=o();return ml(u),XM(e,te(),r,h),h}finally{Qt(d)}}function oI(t,n){if(n)for(let e=n.length-1;e>=0;e--){let i=n[e];if(t===i.name)return i}}function _s(t,n,e){let i=t+Et,r=te(),o=Hl(r,i);return Jh(r,i)?e_(r,Ti(),n,o.transform,e,o):o.transform(e)}function i_(t,n,e,i){let r=t+Et,o=te(),s=Hl(o,r);return Jh(o,r)?t_(o,Ti(),n,s.transform,e,i,s):s.transform(e,i)}function r_(t,n,e,i,r){let o=t+Et,s=te(),d=Hl(s,o);return Jh(s,o)?n_(s,Ti(),n,d.transform,e,i,r,d):d.transform(e,i,r)}function Jh(t,n){return t[he].data[n].pure}function dn(t,n){return tc(t,n)}var tl=null;function sI(t){tl!==null&&(t.defaultEncapsulation!==tl.defaultEncapsulation||t.preserveWhitespaces!==tl.preserveWhitespaces)||(tl=t)}var ac=(()=>{class t{log(e){console.log(e)}warn(e){console.warn(e)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"platform"})}}return t})();var ep=new N(""),bs=new N(""),lc=(()=>{class t{constructor(e,i,r){this._ngZone=e,this.registry=i,this._pendingCount=0,this._isZoneStable=!0,this._callbacks=[],this.taskTrackingZone=null,tp||(aI(r),r.addToWindow(i)),this._watchAngularEvents(),e.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Z.assertNotInAngularZone(),queueMicrotask(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&this._pendingCount===0&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())queueMicrotask(()=>{for(;this._callbacks.length!==0;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb()}});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>i.updateCb&&i.updateCb(e)?(clearTimeout(i.timeoutId),!1):!0)}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,i,r){let o=-1;i&&i>0&&(o=setTimeout(()=>{this._callbacks=this._callbacks.filter(s=>s.timeoutId!==o),e()},i)),this._callbacks.push({doneCb:e,timeoutId:o,updateCb:r})}whenStable(e,i,r){if(r&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,i,r),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,i,r){return[]}static{this.\u0275fac=function(i){return new(i||t)(I(Z),I(cc),I(bs))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})(),cc=(()=>{class t{constructor(){this._applications=new Map}registerApplication(e,i){this._applications.set(e,i)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,i=!0){return tp?.findTestabilityInTree(this,e,i)??null}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"platform"})}}return t})();function aI(t){tp=t}var tp;function yr(t){return!!t&&typeof t.then=="function"}function o_(t){return!!t&&typeof t.subscribe=="function"}var dc=new N(""),s_=(()=>{class t{constructor(){this.initialized=!1,this.done=!1,this.donePromise=new Promise((e,i)=>{this.resolve=e,this.reject=i}),this.appInits=R(dc,{optional:!0})??[]}runInitializers(){if(this.initialized)return;let e=[];for(let r of this.appInits){let o=r();if(yr(o))e.push(o);else if(o_(o)){let s=new Promise((d,u)=>{o.subscribe({complete:d,error:u})});e.push(s)}}let i=()=>{this.done=!0,this.resolve()};Promise.all(e).then(()=>{i()}).catch(r=>{this.reject(r)}),e.length===0&&i(),this.initialized=!0}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),uc=new N("");function lI(){vm(()=>{throw new B(600,!1)})}function cI(t){return t.isBoundToModule}function dI(t,n,e){try{let i=e();return yr(i)?i.catch(r=>{throw n.runOutsideAngular(()=>t.handleError(r)),r}):i}catch(i){throw n.runOutsideAngular(()=>t.handleError(i)),i}}function a_(t,n){return Array.isArray(n)?n.reduce(a_,t):A(A({},t),n)}var hi=(()=>{class t{constructor(){this._bootstrapListeners=[],this._runningTick=!1,this._destroyed=!1,this._destroyListeners=[],this._views=[],this.internalErrorHandler=R(L0),this.afterRenderEffectManager=R(Qh),this.externalTestViews=new Set,this.beforeRender=new ue,this.afterTick=new ue,this.componentTypes=[],this.components=[],this.isStable=R(_r).hasPendingTasks.pipe(Y(e=>!e)),this._injector=R(Rt)}get destroyed(){return this._destroyed}get injector(){return this._injector}bootstrap(e,i){let r=e instanceof Cl;if(!this._injector.get(s_).done){let b=!r&&Xg(e),w=!1;throw new B(405,w)}let s;r?s=e:s=this._injector.get(Fi).resolveComponentFactory(e),this.componentTypes.push(s.componentType);let d=cI(s)?void 0:this._injector.get(ki),u=i||s.selector,h=s.create(ot.NULL,[],u,d),p=h.location.nativeElement,m=h.injector.get(ep,null);return m?.registerApplication(p),h.onDestroy(()=>{this.detachView(h.hostView),al(this.components,h),m?.unregisterApplication(p)}),this._loadComponent(h),h}tick(){this._tick(!0)}_tick(e){if(this._runningTick)throw new B(101,!1);let i=Te(null);try{this._runningTick=!0,this.detectChangesInAttachedViews(e)}catch(r){this.internalErrorHandler(r)}finally{this.afterTick.next(),this._runningTick=!1,Te(i)}}detectChangesInAttachedViews(e){let i=0,r=this.afterRenderEffectManager;for(;;){if(i===Dv)throw new B(103,!1);if(e){let o=i===0;this.beforeRender.next(o);for(let{_lView:s,notifyErrorHandler:d}of this._views)uI(s,o,d)}if(i++,r.executeInternalCallbacks(),![...this.externalTestViews.keys(),...this._views].some(({_lView:o})=>oh(o))&&(r.execute(),![...this.externalTestViews.keys(),...this._views].some(({_lView:o})=>oh(o))))break}}attachView(e){let i=e;this._views.push(i),i.attachToAppRef(this)}detachView(e){let i=e;al(this._views,i),i.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView),this.tick(),this.components.push(e);let i=this._injector.get(uc,[]);[...this._bootstrapListeners,...i].forEach(r=>r(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy())}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>al(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new B(406,!1);let e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function al(t,n){let e=t.indexOf(n);e>-1&&t.splice(e,1)}function uI(t,n,e){!n&&!oh(t)||hI(t,e,n)}function oh(t){return xh(t)}function hI(t,n,e){let i;e?(i=0,t[J]|=1024):t[J]&64?i=0:i=1,Pv(t,n,i)}var sh=class{constructor(n,e){this.ngModuleFactory=n,this.componentFactories=e}},hc=(()=>{class t{compileModuleSync(e){return new Pl(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){let i=this.compileModuleSync(e),r=Kg(e),o=ev(r.declarations).reduce((s,d)=>{let u=Ii(d);return u&&s.push(new so(u)),s},[]);return new sh(i,o)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),pI=new N("");function fI(t,n,e){let i=new Pl(e);return Promise.resolve(i)}function Pg(t){for(let n=t.length-1;n>=0;n--)if(t[n]!==void 0)return t[n]}var mI=(()=>{class t{constructor(){this.zone=R(Z),this.applicationRef=R(hi)}initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmptySubscription=this.zone.onMicrotaskEmpty.subscribe({next:()=>{this.zone.run(()=>{this.applicationRef.tick()})}}))}ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function gI(t){return[{provide:Z,useFactory:t},{provide:to,multi:!0,useFactory:()=>{let n=R(mI,{optional:!0});return()=>n.initialize()}},{provide:to,multi:!0,useFactory:()=>{let n=R(bI);return()=>{n.initialize()}}},{provide:L0,useFactory:vI}]}function vI(){let t=R(Z),n=R(Rn);return e=>t.runOutsideAngular(()=>n.handleError(e))}function _I(t){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:t?.eventCoalescing??!1,shouldCoalesceRunChangeDetection:t?.runCoalescing??!1}}var bI=(()=>{class t{constructor(){this.subscription=new qe,this.initialized=!1,this.zone=R(Z),this.pendingTasks=R(_r)}initialize(){if(this.initialized)return;this.initialized=!0;let e=null;!this.zone.isStable&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(e=this.pendingTasks.add()),this.zone.runOutsideAngular(()=>{this.subscription.add(this.zone.onStable.subscribe(()=>{Z.assertNotInAngularZone(),queueMicrotask(()=>{e!==null&&!this.zone.hasPendingMacrotasks&&!this.zone.hasPendingMicrotasks&&(this.pendingTasks.remove(e),e=null)})}))}),this.subscription.add(this.zone.onUnstable.subscribe(()=>{Z.assertInAngularZone(),e??=this.pendingTasks.add()}))}ngOnDestroy(){this.subscription.unsubscribe()}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function yI(){return typeof $localize<"u"&&$localize.locale||Ol}var ys=new N("",{providedIn:"root",factory:()=>R(ys,xe.Optional|xe.SkipSelf)||yI()});var l_=new N(""),c_=(()=>{class t{constructor(e){this._injector=e,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(e,i){let r=xE(i?.ngZone,_I({eventCoalescing:i?.ngZoneEventCoalescing,runCoalescing:i?.ngZoneRunCoalescing}));return r.run(()=>{let o=aM(e.moduleType,this.injector,gI(()=>r)),s=o.injector.get(Rn,null);return r.runOutsideAngular(()=>{let d=r.onError.subscribe({next:u=>{s.handleError(u)}});o.onDestroy(()=>{al(this._modules,o),d.unsubscribe()})}),dI(s,r,()=>{let d=o.injector.get(s_);return d.runInitializers(),d.donePromise.then(()=>{let u=o.injector.get(ys,Ol);return QM(u||Ol),this._moduleDoBootstrap(o),o})})})}bootstrapModule(e,i=[]){let r=a_({},i);return fI(this.injector,r,e).then(o=>this.bootstrapModuleFactory(o,r))}_moduleDoBootstrap(e){let i=e.injector.get(hi);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(r=>i.bootstrap(r));else if(e.instance.ngDoBootstrap)e.instance.ngDoBootstrap(i);else throw new B(-403,!1);this._modules.push(e)}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new B(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());let e=this._injector.get(l_,null);e&&(e.forEach(i=>i()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}static{this.\u0275fac=function(i){return new(i||t)(I(ot))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"platform"})}}return t})(),Qo=null,d_=new N("");function wI(t){if(Qo&&!Qo.get(d_,!1))throw new B(400,!1);lI(),Qo=t;let n=t.get(c_);return SI(t),n}function np(t,n,e=[]){let i=`Platform: ${n}`,r=new N(i);return(o=[])=>{let s=u_();if(!s||s.injector.get(d_,!1)){let d=[...e,...o,{provide:r,useValue:!0}];t?t(d):wI(xI(d,i))}return CI(r)}}function xI(t=[],n){return ot.create({name:n,providers:[{provide:jl,useValue:"platform"},{provide:l_,useValue:new Set([()=>Qo=null])},...t]})}function CI(t){let n=u_();if(!n)throw new B(401,!1);return n}function u_(){return Qo?.get(c_)??null}function SI(t){t.get(Oh,null)?.forEach(e=>e())}var Re=(()=>{class t{static{this.__NG_ELEMENT_ID__=EI}}return t})();function EI(t){return MI(Ft(),te(),(t&16)===16)}function MI(t,n,e){if(Ul(t)&&!e){let i=Oi(t.index,n);return new fr(i,i)}else if(t.type&47){let i=n[An];return new fr(i,n)}return null}var ah=class{constructor(){}supports(n){return Bv(n)}create(n){return new lh(n)}},II=(t,n)=>n,lh=class{constructor(n){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=n||II}forEachItem(n){let e;for(e=this._itHead;e!==null;e=e._next)n(e)}forEachOperation(n){let e=this._itHead,i=this._removalsHead,r=0,o=null;for(;e||i;){let s=!i||e&&e.currentIndex{s=this._trackByFn(r,d),e===null||!Object.is(e.trackById,s)?(e=this._mismatch(e,d,s,r),i=!0):(i&&(e=this._verifyReinsertion(e,d,s,r)),Object.is(e.item,d)||this._addIdentityChange(e,d)),e=e._next,r++}),this.length=r;return this._truncate(e),this.collection=n,this.isDirty}get isDirty(){return this._additionsHead!==null||this._movesHead!==null||this._removalsHead!==null||this._identityChangesHead!==null}_reset(){if(this.isDirty){let n;for(n=this._previousItHead=this._itHead;n!==null;n=n._next)n._nextPrevious=n._next;for(n=this._additionsHead;n!==null;n=n._nextAdded)n.previousIndex=n.currentIndex;for(this._additionsHead=this._additionsTail=null,n=this._movesHead;n!==null;n=n._nextMoved)n.previousIndex=n.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(n,e,i,r){let o;return n===null?o=this._itTail:(o=n._prev,this._remove(n)),n=this._unlinkedRecords===null?null:this._unlinkedRecords.get(i,null),n!==null?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._reinsertAfter(n,o,r)):(n=this._linkedRecords===null?null:this._linkedRecords.get(i,r),n!==null?(Object.is(n.item,e)||this._addIdentityChange(n,e),this._moveAfter(n,o,r)):n=this._addAfter(new ch(e,i),o,r)),n}_verifyReinsertion(n,e,i,r){let o=this._unlinkedRecords===null?null:this._unlinkedRecords.get(i,null);return o!==null?n=this._reinsertAfter(o,n._prev,r):n.currentIndex!=r&&(n.currentIndex=r,this._addToMoves(n,r)),n}_truncate(n){for(;n!==null;){let e=n._next;this._addToRemovals(this._unlink(n)),n=e}this._unlinkedRecords!==null&&this._unlinkedRecords.clear(),this._additionsTail!==null&&(this._additionsTail._nextAdded=null),this._movesTail!==null&&(this._movesTail._nextMoved=null),this._itTail!==null&&(this._itTail._next=null),this._removalsTail!==null&&(this._removalsTail._nextRemoved=null),this._identityChangesTail!==null&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(n,e,i){this._unlinkedRecords!==null&&this._unlinkedRecords.remove(n);let r=n._prevRemoved,o=n._nextRemoved;return r===null?this._removalsHead=o:r._nextRemoved=o,o===null?this._removalsTail=r:o._prevRemoved=r,this._insertAfter(n,e,i),this._addToMoves(n,i),n}_moveAfter(n,e,i){return this._unlink(n),this._insertAfter(n,e,i),this._addToMoves(n,i),n}_addAfter(n,e,i){return this._insertAfter(n,e,i),this._additionsTail===null?this._additionsTail=this._additionsHead=n:this._additionsTail=this._additionsTail._nextAdded=n,n}_insertAfter(n,e,i){let r=e===null?this._itHead:e._next;return n._next=r,n._prev=e,r===null?this._itTail=n:r._prev=n,e===null?this._itHead=n:e._next=n,this._linkedRecords===null&&(this._linkedRecords=new Tl),this._linkedRecords.put(n),n.currentIndex=i,n}_remove(n){return this._addToRemovals(this._unlink(n))}_unlink(n){this._linkedRecords!==null&&this._linkedRecords.remove(n);let e=n._prev,i=n._next;return e===null?this._itHead=i:e._next=i,i===null?this._itTail=e:i._prev=e,n}_addToMoves(n,e){return n.previousIndex===e||(this._movesTail===null?this._movesTail=this._movesHead=n:this._movesTail=this._movesTail._nextMoved=n),n}_addToRemovals(n){return this._unlinkedRecords===null&&(this._unlinkedRecords=new Tl),this._unlinkedRecords.put(n),n.currentIndex=null,n._nextRemoved=null,this._removalsTail===null?(this._removalsTail=this._removalsHead=n,n._prevRemoved=null):(n._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=n),n}_addIdentityChange(n,e){return n.item=e,this._identityChangesTail===null?this._identityChangesTail=this._identityChangesHead=n:this._identityChangesTail=this._identityChangesTail._nextIdentityChange=n,n}},ch=class{constructor(n,e){this.item=n,this.trackById=e,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}},dh=class{constructor(){this._head=null,this._tail=null}add(n){this._head===null?(this._head=this._tail=n,n._nextDup=null,n._prevDup=null):(this._tail._nextDup=n,n._prevDup=this._tail,n._nextDup=null,this._tail=n)}get(n,e){let i;for(i=this._head;i!==null;i=i._nextDup)if((e===null||e<=i.currentIndex)&&Object.is(i.trackById,n))return i;return null}remove(n){let e=n._prevDup,i=n._nextDup;return e===null?this._head=i:e._nextDup=i,i===null?this._tail=e:i._prevDup=e,this._head===null}},Tl=class{constructor(){this.map=new Map}put(n){let e=n.trackById,i=this.map.get(e);i||(i=new dh,this.map.set(e,i)),i.add(n)}get(n,e){let i=n,r=this.map.get(i);return r?r.get(n,e):null}remove(n){let e=n.trackById;return this.map.get(e).remove(n)&&this.map.delete(e),n}get isEmpty(){return this.map.size===0}clear(){this.map.clear()}};function kg(t,n,e){let i=t.previousIndex;if(i===null)return i;let r=0;return e&&i{class t{static{this.\u0275prov=T({token:t,providedIn:"root",factory:Og})}constructor(e){this.factories=e}static create(e,i){if(i!=null){let r=i.factories.slice();e=e.concat(r)}return new t(e)}static extend(e){return{provide:t,useFactory:i=>t.create(e,i||Og()),deps:[[t,new hh,new Nl]]}}find(e){let i=this.factories.find(r=>r.supports(e));if(i!=null)return i;throw new B(901,!1)}}return t})();var h_=np(null,"core",[]),p_=(()=>{class t{constructor(e){}static{this.\u0275fac=function(i){return new(i||t)(I(hi))}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({})}}return t})();function kt(t){return typeof t=="boolean"?t:t!=null&&t!=="false"}function ip(t,n=NaN){return!isNaN(parseFloat(t))&&!isNaN(Number(t))?Number(t):n}function f_(t){let n=Ii(t);if(!n)return null;let e=new so(n);return{get selector(){return e.selector},get type(){return e.componentType},get inputs(){return e.inputs},get outputs(){return e.outputs},get ngContentSelectors(){return e.ngContentSelectors},get isStandalone(){return n.standalone},get isSignal(){return n.signals}}}var w_=null;function Jn(){return w_}function x_(t){w_??=t}var fc=class{};var le=new N(""),hp=(()=>{class t{historyGo(e){throw new Error("")}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:()=>R(DI),providedIn:"platform"})}}return t})(),C_=new N(""),DI=(()=>{class t extends hp{constructor(){super(),this._doc=R(le),this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Jn().getBaseHref(this._doc)}onPopState(e){let i=Jn().getGlobalEventTarget(this._doc,"window");return i.addEventListener("popstate",e,!1),()=>i.removeEventListener("popstate",e)}onHashChange(e){let i=Jn().getGlobalEventTarget(this._doc,"window");return i.addEventListener("hashchange",e,!1),()=>i.removeEventListener("hashchange",e)}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(e){this._location.pathname=e}pushState(e,i,r){this._history.pushState(e,i,r)}replaceState(e,i,r){this._history.replaceState(e,i,r)}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:()=>new t,providedIn:"platform"})}}return t})();function pp(t,n){if(t.length==0)return n;if(n.length==0)return t;let e=0;return t.endsWith("/")&&e++,n.startsWith("/")&&e++,e==2?t+n.substring(1):e==1?t+n:t+"/"+n}function m_(t){let n=t.match(/#|\?|$/),e=n&&n.index||t.length,i=e-(t[e-1]==="/"?1:0);return t.slice(0,i)+t.slice(e)}function pi(t){return t&&t[0]!=="?"?"?"+t:t}var mi=(()=>{class t{historyGo(e){throw new Error("")}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:()=>R(fp),providedIn:"root"})}}return t})(),S_=new N(""),fp=(()=>{class t extends mi{constructor(e,i){super(),this._platformLocation=e,this._removeListenerFns=[],this._baseHref=i??this._platformLocation.getBaseHrefFromDOM()??R(le).location?.origin??""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return pp(this._baseHref,e)}path(e=!1){let i=this._platformLocation.pathname+pi(this._platformLocation.search),r=this._platformLocation.hash;return r&&e?`${i}${r}`:i}pushState(e,i,r,o){let s=this.prepareExternalUrl(r+pi(o));this._platformLocation.pushState(e,i,s)}replaceState(e,i,r,o){let s=this.prepareExternalUrl(r+pi(o));this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static{this.\u0275fac=function(i){return new(i||t)(I(hp),I(S_,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),E_=(()=>{class t extends mi{constructor(e,i){super(),this._platformLocation=e,this._baseHref="",this._removeListenerFns=[],i!=null&&(this._baseHref=i)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){let i=this._platformLocation.hash??"#";return i.length>0?i.substring(1):i}prepareExternalUrl(e){let i=pp(this._baseHref,e);return i.length>0?"#"+i:i}pushState(e,i,r,o){let s=this.prepareExternalUrl(r+pi(o));s.length==0&&(s=this._platformLocation.pathname),this._platformLocation.pushState(e,i,s)}replaceState(e,i,r,o){let s=this.prepareExternalUrl(r+pi(o));s.length==0&&(s=this._platformLocation.pathname),this._platformLocation.replaceState(e,i,s)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){this._platformLocation.historyGo?.(e)}static{this.\u0275fac=function(i){return new(i||t)(I(hp),I(S_,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})(),ei=(()=>{class t{constructor(e){this._subject=new de,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=e;let i=this._locationStrategy.getBaseHref();this._basePath=OI(m_(g_(i))),this._locationStrategy.onPopState(r=>{this._subject.emit({url:this.path(!0),pop:!0,state:r.state,type:r.type})})}ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,i=""){return this.path()==this.normalize(e+pi(i))}normalize(e){return t.stripTrailingSlash(kI(this._basePath,g_(e)))}prepareExternalUrl(e){return e&&e[0]!=="/"&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,i="",r=null){this._locationStrategy.pushState(r,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+pi(i)),r)}replaceState(e,i="",r=null){this._locationStrategy.replaceState(r,"",e,i),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+pi(i)),r)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){this._locationStrategy.historyGo?.(e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription??=this.subscribe(i=>{this._notifyUrlChangeListeners(i.url,i.state)}),()=>{let i=this._urlChangeListeners.indexOf(e);this._urlChangeListeners.splice(i,1),this._urlChangeListeners.length===0&&(this._urlChangeSubscription?.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",i){this._urlChangeListeners.forEach(r=>r(e,i))}subscribe(e,i,r){return this._subject.subscribe({next:e,error:i,complete:r})}static{this.normalizeQueryParams=pi}static{this.joinWithSlash=pp}static{this.stripTrailingSlash=m_}static{this.\u0275fac=function(i){return new(i||t)(I(mi))}}static{this.\u0275prov=T({token:t,factory:()=>PI(),providedIn:"root"})}}return t})();function PI(){return new ei(I(mi))}function kI(t,n){if(!t||!n.startsWith(t))return n;let e=n.substring(t.length);return e===""||["/",";","?","#"].includes(e[0])?e:n}function g_(t){return t.replace(/\/index.html$/,"")}function OI(t){if(new RegExp("^(https?:)?//").test(t)){let[,e]=t.split(/\/\/[^\/]+/);return e}return t}var M_=function(t){return t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific",t}(M_||{});var fi={Decimal:0,Group:1,List:2,PercentSign:3,PlusSign:4,MinusSign:5,Exponential:6,SuperscriptingExponent:7,PerMille:8,Infinity:9,NaN:10,TimeSeparator:11,CurrencyDecimal:12,CurrencyGroup:13};function ws(t,n){let e=Kh(t),i=e[mo.NumberSymbols][n];if(typeof i>"u"){if(n===fi.CurrencyDecimal)return e[mo.NumberSymbols][fi.Decimal];if(n===fi.CurrencyGroup)return e[mo.NumberSymbols][fi.Group]}return i}function TI(t,n){return Kh(t)[mo.NumberFormats][n]}var AI=/^(\d+)?\.((\d+)(-(\d+))?)?$/,v_=22,mc=".",xs="0",RI=";",FI=",",rp="#";function NI(t,n,e,i,r,o,s=!1){let d="",u=!1;if(!isFinite(t))d=ws(e,fi.Infinity);else{let h=BI(t);s&&(h=jI(h));let p=n.minInt,m=n.minFrac,b=n.maxFrac;if(o){let X=o.match(AI);if(X===null)throw new Error(`${o} is not a valid digit info`);let V=X[1],ie=X[3],Ce=X[5];V!=null&&(p=op(V)),ie!=null&&(m=op(ie)),Ce!=null?b=op(Ce):ie!=null&&m>b&&(b=m)}UI(h,m,b);let w=h.digits,S=h.integerLen,D=h.exponent,O=[];for(u=w.every(X=>!X);S0?O=w.splice(S,w.length):(O=w,w=[0]);let L=[];for(w.length>=n.lgSize&&L.unshift(w.splice(-n.lgSize,w.length).join(""));w.length>n.gSize;)L.unshift(w.splice(-n.gSize,w.length).join(""));w.length&&L.unshift(w.join("")),d=L.join(ws(e,i)),O.length&&(d+=ws(e,r)+O.join("")),D&&(d+=ws(e,fi.Exponential)+"+"+D)}return t<0&&!u?d=n.negPre+d+n.negSuf:d=n.posPre+d+n.posSuf,d}function LI(t,n,e){let i=TI(n,M_.Decimal),r=VI(i,ws(n,fi.MinusSign));return NI(t,r,n,fi.Group,fi.Decimal,e)}function VI(t,n="-"){let e={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},i=t.split(RI),r=i[0],o=i[1],s=r.indexOf(mc)!==-1?r.split(mc):[r.substring(0,r.lastIndexOf(xs)+1),r.substring(r.lastIndexOf(xs)+1)],d=s[0],u=s[1]||"";e.posPre=d.substring(0,d.indexOf(rp));for(let p=0;p-1&&(n=n.replace(mc,"")),(o=n.search(/e/i))>0?(r<0&&(r=o),r+=+n.slice(o+1),n=n.substring(0,o)):r<0&&(r=n.length),o=0;n.charAt(o)===xs;o++);if(o===(d=n.length))i=[0],r=1;else{for(d--;n.charAt(d)===xs;)d--;for(r-=o,i=[],s=0;o<=d;o++,s++)i[s]=Number(n.charAt(o))}return r>v_&&(i=i.splice(0,v_-1),e=r-1,r=1),{digits:i,exponent:e,integerLen:r}}function UI(t,n,e){if(n>e)throw new Error(`The minimum number of digits after fraction (${n}) is higher than the maximum (${e}).`);let i=t.digits,r=i.length-t.integerLen,o=Math.min(Math.max(n,r),e),s=o+t.integerLen,d=i[s];if(s>0){i.splice(Math.max(t.integerLen,s));for(let m=s;m=5)if(s-1<0){for(let m=0;m>s;m--)i.unshift(0),t.integerLen++;i.unshift(1),t.integerLen++}else i[s-1]++;for(;r=h?S.pop():u=!1),b>=10?1:0},0);p&&(i.unshift(p),t.integerLen++)}function op(t){let n=parseInt(t);if(isNaN(n))throw new Error("Invalid integer literal when parsing "+t);return n}function vc(t,n){n=encodeURIComponent(n);for(let e of t.split(";")){let i=e.indexOf("="),[r,o]=i==-1?[e,""]:[e.slice(0,i),e.slice(i+1)];if(r.trim()===n)return decodeURIComponent(o)}return null}var sp=/\s+/,__=[],Jt=(()=>{class t{constructor(e,i){this._ngEl=e,this._renderer=i,this.initialClasses=__,this.stateMap=new Map}set klass(e){this.initialClasses=e!=null?e.trim().split(sp):__}set ngClass(e){this.rawClass=typeof e=="string"?e.trim().split(sp):e}ngDoCheck(){for(let i of this.initialClasses)this._updateState(i,!0);let e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(let i of e)this._updateState(i,!0);else if(e!=null)for(let i of Object.keys(e))this._updateState(i,!!e[i]);this._applyStateDiff()}_updateState(e,i){let r=this.stateMap.get(e);r!==void 0?(r.enabled!==i&&(r.changed=!0,r.enabled=i),r.touched=!0):this.stateMap.set(e,{enabled:i,changed:!0,touched:!0})}_applyStateDiff(){for(let e of this.stateMap){let i=e[0],r=e[1];r.changed?(this._toggleClass(i,r.enabled),r.changed=!1):r.touched||(r.enabled&&this._toggleClass(i,!1),this.stateMap.delete(i)),r.touched=!1}}_toggleClass(e,i){e=e.trim(),e.length>0&&e.split(sp).forEach(r=>{i?this._renderer.addClass(this._ngEl.nativeElement,r):this._renderer.removeClass(this._ngEl.nativeElement,r)})}static{this.\u0275fac=function(i){return new(i||t)(M(be),M(ln))}}static{this.\u0275dir=ve({type:t,selectors:[["","ngClass",""]],inputs:{klass:[ee.None,"class","klass"],ngClass:"ngClass"},standalone:!0})}}return t})();var ap=class{constructor(n,e,i,r){this.$implicit=n,this.ngForOf=e,this.index=i,this.count=r}get first(){return this.index===0}get last(){return this.index===this.count-1}get even(){return this.index%2===0}get odd(){return!this.even}},vt=(()=>{class t{set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}constructor(e,i,r){this._viewContainer=e,this._template=i,this._differs=r,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;let e=this._ngForOf;if(!this._differ&&e)if(0)try{}catch{}else this._differ=this._differs.find(e).create(this.ngForTrackBy)}if(this._differ){let e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){let i=this._viewContainer;e.forEachOperation((r,o,s)=>{if(r.previousIndex==null)i.createEmbeddedView(this._template,new ap(r.item,this._ngForOf,-1,-1),s===null?void 0:s);else if(s==null)i.remove(o===null?void 0:o);else if(o!==null){let d=i.get(o);i.move(d,s),b_(d,r)}});for(let r=0,o=i.length;r{let o=i.get(r.currentIndex);b_(o,r)})}static ngTemplateContextGuard(e,i){return!0}static{this.\u0275fac=function(i){return new(i||t)(M(cn),M(rn),M(pc))}}static{this.\u0275dir=ve({type:t,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0})}}return t})();function b_(t,n){t.context.$implicit=n.item}var Fe=(()=>{class t{constructor(e,i){this._viewContainer=e,this._context=new lp,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=i}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){y_("ngIfThen",e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){y_("ngIfElse",e),this._elseTemplateRef=e,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(e,i){return!0}static{this.\u0275fac=function(i){return new(i||t)(M(cn),M(rn))}}static{this.\u0275dir=ve({type:t,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0})}}return t})(),lp=class{constructor(){this.$implicit=null,this.ngIf=null}};function y_(t,n){if(!!!(!n||n.createEmbeddedView))throw new Error(`${t} must be a TemplateRef, but received '${Ht(n)}'.`)}var zI=!0,cp=class{constructor(n,e){this._viewContainerRef=n,this._templateRef=e,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(n){n&&!this._created?this.create():!n&&this._created&&this.destroy()}},Cs=(()=>{class t{constructor(){this._defaultViews=[],this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(e){this._ngSwitch=e,this._caseCount===0&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(e){this._defaultViews.push(e)}_matchCase(e){let i=zI?e===this._ngSwitch:e==this._ngSwitch;return this._lastCasesMatched||=i,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),i}_updateDefaultCases(e){if(this._defaultViews.length>0&&e!==this._defaultUsed){this._defaultUsed=e;for(let i of this._defaultViews)i.enforceState(e)}}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275dir=ve({type:t,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"},standalone:!0})}}return t})(),_c=(()=>{class t{constructor(e,i,r){this.ngSwitch=r,r._addCase(),this._view=new cp(e,i)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}static{this.\u0275fac=function(i){return new(i||t)(M(cn),M(rn),M(Cs,9))}}static{this.\u0275dir=ve({type:t,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"},standalone:!0})}}return t})();function mp(t,n){return new B(2100,!1)}var HI=/(?:[0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])\S*/g,bc=(()=>{class t{transform(e){if(e==null)return null;if(typeof e!="string")throw mp(t,e);return e.replace(HI,i=>i[0].toUpperCase()+i.slice(1).toLowerCase())}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275pipe=Ll({name:"titlecase",type:t,pure:!0,standalone:!0})}}return t})();var I_=(()=>{class t{constructor(e){this._locale=e}transform(e,i,r){if(!$I(e))return null;r||=this._locale;try{let o=WI(e);return LI(o,r,i)}catch(o){throw mp(t,o.message)}}static{this.\u0275fac=function(i){return new(i||t)(M(ys,16))}}static{this.\u0275pipe=Ll({name:"number",type:t,pure:!0,standalone:!0})}}return t})();function $I(t){return!(t==null||t===""||t!==t)}function WI(t){if(typeof t=="string"&&!isNaN(Number(t)-parseFloat(t)))return Number(t);if(typeof t!="number")throw new Error(`${t} is not a number`);return t}var D_=(()=>{class t{transform(e,i,r){if(e==null)return null;if(!this.supports(e))throw mp(t,e);return e.slice(i,r)}supports(e){return typeof e=="string"||Array.isArray(e)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275pipe=Ll({name:"slice",type:t,pure:!1,standalone:!0})}}return t})();var ze=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({})}}return t})(),gp="browser",qI="server";function gi(t){return t===gp}function yc(t){return t===qI}var P_=(()=>{class t{static{this.\u0275prov=T({token:t,providedIn:"root",factory:()=>gi(R(Kt))?new dp(R(le),window):new up})}}return t})(),dp=class{constructor(n,e){this.document=n,this.window=e,this.offset=()=>[0,0]}setOffset(n){Array.isArray(n)?this.offset=()=>n:this.offset=n}getScrollPosition(){return[this.window.scrollX,this.window.scrollY]}scrollToPosition(n){this.window.scrollTo(n[0],n[1])}scrollToAnchor(n){let e=GI(this.document,n);e&&(this.scrollToElement(e),e.focus())}setHistoryScrollRestoration(n){this.window.history.scrollRestoration=n}scrollToElement(n){let e=n.getBoundingClientRect(),i=e.left+this.window.pageXOffset,r=e.top+this.window.pageYOffset,o=this.offset();this.window.scrollTo(i-o[0],r-o[1])}};function GI(t,n){let e=t.getElementById(n)||t.getElementsByName(n)[0];if(e)return e;if(typeof t.createTreeWalker=="function"&&t.body&&typeof t.body.attachShadow=="function"){let i=t.createTreeWalker(t.body,NodeFilter.SHOW_ELEMENT),r=i.currentNode;for(;r;){let o=r.shadowRoot;if(o){let s=o.getElementById(n)||o.querySelector(`[name="${n}"]`);if(s)return s}r=i.nextNode()}}return null}var up=class{setOffset(n){}getScrollPosition(){return[0,0]}scrollToPosition(n){}scrollToAnchor(n){}setHistoryScrollRestoration(n){}},go=class{};var Es=class{},xc=class{},en=class t{constructor(n){this.normalizedNames=new Map,this.lazyUpdate=null,n?typeof n=="string"?this.lazyInit=()=>{this.headers=new Map,n.split(` +`).forEach(e=>{let i=e.indexOf(":");if(i>0){let r=e.slice(0,i),o=r.toLowerCase(),s=e.slice(i+1).trim();this.maybeSetNormalizedName(r,o),this.headers.has(o)?this.headers.get(o).push(s):this.headers.set(o,[s])}})}:typeof Headers<"u"&&n instanceof Headers?(this.headers=new Map,n.forEach((e,i)=>{this.setHeaderEntries(i,e)})):this.lazyInit=()=>{this.headers=new Map,Object.entries(n).forEach(([e,i])=>{this.setHeaderEntries(e,i)})}:this.headers=new Map}has(n){return this.init(),this.headers.has(n.toLowerCase())}get(n){this.init();let e=this.headers.get(n.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(n){return this.init(),this.headers.get(n.toLowerCase())||null}append(n,e){return this.clone({name:n,value:e,op:"a"})}set(n,e){return this.clone({name:n,value:e,op:"s"})}delete(n,e){return this.clone({name:n,value:e,op:"d"})}maybeSetNormalizedName(n,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,n)}init(){this.lazyInit&&(this.lazyInit instanceof t?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(e=>{this.headers.set(e,n.headers.get(e)),this.normalizedNames.set(e,n.normalizedNames.get(e))})}clone(n){let e=new t;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof t?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([n]),e}applyUpdate(n){let e=n.name.toLowerCase();switch(n.op){case"a":case"s":let i=n.value;if(typeof i=="string"&&(i=[i]),i.length===0)return;this.maybeSetNormalizedName(n.name,e);let r=(n.op==="a"?this.headers.get(e):void 0)||[];r.push(...i),this.headers.set(e,r);break;case"d":let o=n.value;if(!o)this.headers.delete(e),this.normalizedNames.delete(e);else{let s=this.headers.get(e);if(!s)return;s=s.filter(d=>o.indexOf(d)===-1),s.length===0?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,s)}break}}setHeaderEntries(n,e){let i=(Array.isArray(e)?e:[e]).map(o=>o.toString()),r=n.toLowerCase();this.headers.set(r,i),this.maybeSetNormalizedName(n,r)}forEach(n){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>n(this.normalizedNames.get(e),this.headers.get(e)))}};var _p=class{encodeKey(n){return k_(n)}encodeValue(n){return k_(n)}decodeKey(n){return decodeURIComponent(n)}decodeValue(n){return decodeURIComponent(n)}};function ZI(t,n){let e=new Map;return t.length>0&&t.replace(/^\?/,"").split("&").forEach(r=>{let o=r.indexOf("="),[s,d]=o==-1?[n.decodeKey(r),""]:[n.decodeKey(r.slice(0,o)),n.decodeValue(r.slice(o+1))],u=e.get(s)||[];u.push(d),e.set(s,u)}),e}var XI=/%(\d[a-f0-9])/gi,KI={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function k_(t){return encodeURIComponent(t).replace(XI,(n,e)=>KI[e]??n)}function wc(t){return`${t}`}var Li=class t{constructor(n={}){if(this.updates=null,this.cloneFrom=null,this.encoder=n.encoder||new _p,n.fromString){if(n.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=ZI(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach(e=>{let i=n.fromObject[e],r=Array.isArray(i)?i.map(wc):[wc(i)];this.map.set(e,r)})):this.map=null}has(n){return this.init(),this.map.has(n)}get(n){this.init();let e=this.map.get(n);return e?e[0]:null}getAll(n){return this.init(),this.map.get(n)||null}keys(){return this.init(),Array.from(this.map.keys())}append(n,e){return this.clone({param:n,value:e,op:"a"})}appendAll(n){let e=[];return Object.keys(n).forEach(i=>{let r=n[i];Array.isArray(r)?r.forEach(o=>{e.push({param:i,value:o,op:"a"})}):e.push({param:i,value:r,op:"a"})}),this.clone(e)}set(n,e){return this.clone({param:n,value:e,op:"s"})}delete(n,e){return this.clone({param:n,value:e,op:"d"})}toString(){return this.init(),this.keys().map(n=>{let e=this.encoder.encodeKey(n);return this.map.get(n).map(i=>e+"="+this.encoder.encodeValue(i)).join("&")}).filter(n=>n!=="").join("&")}clone(n){let e=new t({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(n),e}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 e=(n.op==="a"?this.map.get(n.param):void 0)||[];e.push(wc(n.value)),this.map.set(n.param,e);break;case"d":if(n.value!==void 0){let i=this.map.get(n.param)||[],r=i.indexOf(wc(n.value));r!==-1&&i.splice(r,1),i.length>0?this.map.set(n.param,i):this.map.delete(n.param)}else{this.map.delete(n.param);break}}}),this.cloneFrom=this.updates=null)}};var bp=class{constructor(){this.map=new Map}set(n,e){return this.map.set(n,e),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 JI(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}function O_(t){return typeof ArrayBuffer<"u"&&t instanceof ArrayBuffer}function T_(t){return typeof Blob<"u"&&t instanceof Blob}function A_(t){return typeof FormData<"u"&&t instanceof FormData}function eD(t){return typeof URLSearchParams<"u"&&t instanceof URLSearchParams}var Ss=class t{constructor(n,e,i,r){this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=n.toUpperCase();let o;if(JI(this.method)||r?(this.body=i!==void 0?i:null,o=r):o=i,o&&(this.reportProgress=!!o.reportProgress,this.withCredentials=!!o.withCredentials,o.responseType&&(this.responseType=o.responseType),o.headers&&(this.headers=o.headers),o.context&&(this.context=o.context),o.params&&(this.params=o.params),this.transferCache=o.transferCache),this.headers??=new en,this.context??=new bp,!this.params)this.params=new Li,this.urlWithParams=e;else{let s=this.params.toString();if(s.length===0)this.urlWithParams=e;else{let d=e.indexOf("?"),u=d===-1?"?":db.set(w,n.setHeaders[w]),h)),n.setParams&&(p=Object.keys(n.setParams).reduce((b,w)=>b.set(w,n.setParams[w]),p)),new t(e,i,s,{params:p,headers:h,context:m,reportProgress:u,responseType:r,withCredentials:d,transferCache:o})}},vo=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}(vo||{}),Ms=class{constructor(n,e=Ec.Ok,i="OK"){this.headers=n.headers||new en,this.status=n.status!==void 0?n.status:e,this.statusText=n.statusText||i,this.url=n.url||null,this.ok=this.status>=200&&this.status<300}},yp=class t extends Ms{constructor(n={}){super(n),this.type=vo.ResponseHeader}clone(n={}){return new t({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})}},Cc=class t extends Ms{constructor(n={}){super(n),this.type=vo.Response,this.body=n.body!==void 0?n.body:null}clone(n={}){return new t({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})}},Sc=class extends Ms{constructor(n){super(n,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,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}},Ec=function(t){return t[t.Continue=100]="Continue",t[t.SwitchingProtocols=101]="SwitchingProtocols",t[t.Processing=102]="Processing",t[t.EarlyHints=103]="EarlyHints",t[t.Ok=200]="Ok",t[t.Created=201]="Created",t[t.Accepted=202]="Accepted",t[t.NonAuthoritativeInformation=203]="NonAuthoritativeInformation",t[t.NoContent=204]="NoContent",t[t.ResetContent=205]="ResetContent",t[t.PartialContent=206]="PartialContent",t[t.MultiStatus=207]="MultiStatus",t[t.AlreadyReported=208]="AlreadyReported",t[t.ImUsed=226]="ImUsed",t[t.MultipleChoices=300]="MultipleChoices",t[t.MovedPermanently=301]="MovedPermanently",t[t.Found=302]="Found",t[t.SeeOther=303]="SeeOther",t[t.NotModified=304]="NotModified",t[t.UseProxy=305]="UseProxy",t[t.Unused=306]="Unused",t[t.TemporaryRedirect=307]="TemporaryRedirect",t[t.PermanentRedirect=308]="PermanentRedirect",t[t.BadRequest=400]="BadRequest",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.ProxyAuthenticationRequired=407]="ProxyAuthenticationRequired",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Gone=410]="Gone",t[t.LengthRequired=411]="LengthRequired",t[t.PreconditionFailed=412]="PreconditionFailed",t[t.PayloadTooLarge=413]="PayloadTooLarge",t[t.UriTooLong=414]="UriTooLong",t[t.UnsupportedMediaType=415]="UnsupportedMediaType",t[t.RangeNotSatisfiable=416]="RangeNotSatisfiable",t[t.ExpectationFailed=417]="ExpectationFailed",t[t.ImATeapot=418]="ImATeapot",t[t.MisdirectedRequest=421]="MisdirectedRequest",t[t.UnprocessableEntity=422]="UnprocessableEntity",t[t.Locked=423]="Locked",t[t.FailedDependency=424]="FailedDependency",t[t.TooEarly=425]="TooEarly",t[t.UpgradeRequired=426]="UpgradeRequired",t[t.PreconditionRequired=428]="PreconditionRequired",t[t.TooManyRequests=429]="TooManyRequests",t[t.RequestHeaderFieldsTooLarge=431]="RequestHeaderFieldsTooLarge",t[t.UnavailableForLegalReasons=451]="UnavailableForLegalReasons",t[t.InternalServerError=500]="InternalServerError",t[t.NotImplemented=501]="NotImplemented",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout",t[t.HttpVersionNotSupported=505]="HttpVersionNotSupported",t[t.VariantAlsoNegotiates=506]="VariantAlsoNegotiates",t[t.InsufficientStorage=507]="InsufficientStorage",t[t.LoopDetected=508]="LoopDetected",t[t.NotExtended=510]="NotExtended",t[t.NetworkAuthenticationRequired=511]="NetworkAuthenticationRequired",t}(Ec||{});function vp(t,n){return{body:n,headers:t.headers,context:t.context,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials,transferCache:t.transferCache}}var De=(()=>{class t{constructor(e){this.handler=e}request(e,i,r={}){let o;if(e instanceof Ss)o=e;else{let u;r.headers instanceof en?u=r.headers:u=new en(r.headers);let h;r.params&&(r.params instanceof Li?h=r.params:h=new Li({fromObject:r.params})),o=new Ss(e,i,r.body!==void 0?r.body:null,{headers:u,context:r.context,params:h,reportProgress:r.reportProgress,responseType:r.responseType||"json",withCredentials:r.withCredentials,transferCache:r.transferCache})}let s=j(o).pipe(ri(u=>this.handler.handle(u)));if(e instanceof Ss||r.observe==="events")return s;let d=s.pipe(Ye(u=>u instanceof Cc));switch(r.observe||"body"){case"body":switch(o.responseType){case"arraybuffer":return d.pipe(Y(u=>{if(u.body!==null&&!(u.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return u.body}));case"blob":return d.pipe(Y(u=>{if(u.body!==null&&!(u.body instanceof Blob))throw new Error("Response is not a Blob.");return u.body}));case"text":return d.pipe(Y(u=>{if(u.body!==null&&typeof u.body!="string")throw new Error("Response is not a string.");return u.body}));case"json":default:return d.pipe(Y(u=>u.body))}case"response":return d;default:throw new Error(`Unreachable: unhandled observe type ${r.observe}}`)}}delete(e,i={}){return this.request("DELETE",e,i)}get(e,i={}){return this.request("GET",e,i)}head(e,i={}){return this.request("HEAD",e,i)}jsonp(e,i){return this.request("JSONP",e,{params:new Li().append(i,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,i={}){return this.request("OPTIONS",e,i)}patch(e,i,r={}){return this.request("PATCH",e,vp(r,i))}post(e,i,r={}){return this.request("POST",e,vp(r,i))}put(e,i,r={}){return this.request("PUT",e,vp(r,i))}static{this.\u0275fac=function(i){return new(i||t)(I(Es))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})();function L_(t,n){return n(t)}function tD(t,n){return(e,i)=>n.intercept(e,{handle:r=>t(r,i)})}function nD(t,n,e){return(i,r)=>Fn(e,()=>n(i,o=>t(o,r)))}var iD=new N(""),wp=new N(""),rD=new N(""),oD=new N("");function sD(){let t=null;return(n,e)=>{t===null&&(t=(R(iD,{optional:!0})??[]).reduceRight(tD,L_));let i=R(_r),r=i.add();return t(n,e).pipe(At(()=>i.remove(r)))}}var R_=(()=>{class t extends Es{constructor(e,i){super(),this.backend=e,this.injector=i,this.chain=null,this.pendingTasks=R(_r);let r=R(oD,{optional:!0});this.backend=r??e}handle(e){if(this.chain===null){let r=Array.from(new Set([...this.injector.get(wp),...this.injector.get(rD,[])]));this.chain=r.reduceRight((o,s)=>nD(o,s,this.injector),L_)}let i=this.pendingTasks.add();return this.chain(e,r=>this.backend.handle(r)).pipe(At(()=>this.pendingTasks.remove(i)))}static{this.\u0275fac=function(i){return new(i||t)(I(xc),I(Rt))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})();var aD=/^\)\]\}',?\n/;function lD(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}var F_=(()=>{class t{constructor(e){this.xhrFactory=e}handle(e){if(e.method==="JSONP")throw new B(-2800,!1);let i=this.xhrFactory;return(i.\u0275loadImpl?Ue(i.\u0275loadImpl()):j(null)).pipe(Ct(()=>new oe(o=>{let s=i.build();if(s.open(e.method,e.urlWithParams),e.withCredentials&&(s.withCredentials=!0),e.headers.forEach((D,O)=>s.setRequestHeader(D,O.join(","))),e.headers.has("Accept")||s.setRequestHeader("Accept","application/json, text/plain, */*"),!e.headers.has("Content-Type")){let D=e.detectContentTypeHeader();D!==null&&s.setRequestHeader("Content-Type",D)}if(e.responseType){let D=e.responseType.toLowerCase();s.responseType=D!=="json"?D:"text"}let d=e.serializeBody(),u=null,h=()=>{if(u!==null)return u;let D=s.statusText||"OK",O=new en(s.getAllResponseHeaders()),L=lD(s)||e.url;return u=new yp({headers:O,status:s.status,statusText:D,url:L}),u},p=()=>{let{headers:D,status:O,statusText:L,url:X}=h(),V=null;O!==Ec.NoContent&&(V=typeof s.response>"u"?s.responseText:s.response),O===0&&(O=V?Ec.Ok:0);let ie=O>=200&&O<300;if(e.responseType==="json"&&typeof V=="string"){let Ce=V;V=V.replace(aD,"");try{V=V!==""?JSON.parse(V):null}catch(me){V=Ce,ie&&(ie=!1,V={error:me,text:V})}}ie?(o.next(new Cc({body:V,headers:D,status:O,statusText:L,url:X||void 0})),o.complete()):o.error(new Sc({error:V,headers:D,status:O,statusText:L,url:X||void 0}))},m=D=>{let{url:O}=h(),L=new Sc({error:D,status:s.status||0,statusText:s.statusText||"Unknown Error",url:O||void 0});o.error(L)},b=!1,w=D=>{b||(o.next(h()),b=!0);let O={type:vo.DownloadProgress,loaded:D.loaded};D.lengthComputable&&(O.total=D.total),e.responseType==="text"&&s.responseText&&(O.partialText=s.responseText),o.next(O)},S=D=>{let O={type:vo.UploadProgress,loaded:D.loaded};D.lengthComputable&&(O.total=D.total),o.next(O)};return s.addEventListener("load",p),s.addEventListener("error",m),s.addEventListener("timeout",m),s.addEventListener("abort",m),e.reportProgress&&(s.addEventListener("progress",w),d!==null&&s.upload&&s.upload.addEventListener("progress",S)),s.send(d),o.next({type:vo.Sent}),()=>{s.removeEventListener("error",m),s.removeEventListener("abort",m),s.removeEventListener("load",p),s.removeEventListener("timeout",m),e.reportProgress&&(s.removeEventListener("progress",w),d!==null&&s.upload&&s.upload.removeEventListener("progress",S)),s.readyState!==s.DONE&&s.abort()}})))}static{this.\u0275fac=function(i){return new(i||t)(I(go))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})(),V_=new N(""),cD="XSRF-TOKEN",dD=new N("",{providedIn:"root",factory:()=>cD}),uD="X-XSRF-TOKEN",hD=new N("",{providedIn:"root",factory:()=>uD}),Mc=class{},pD=(()=>{class t{constructor(e,i,r){this.doc=e,this.platform=i,this.cookieName=r,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if(this.platform==="server")return null;let e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=vc(e,this.cookieName),this.lastCookieString=e),this.lastToken}static{this.\u0275fac=function(i){return new(i||t)(I(le),I(Kt),I(dD))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})();function fD(t,n){let e=t.url.toLowerCase();if(!R(V_)||t.method==="GET"||t.method==="HEAD"||e.startsWith("http://")||e.startsWith("https://"))return n(t);let i=R(Mc).getToken(),r=R(hD);return i!=null&&!t.headers.has(r)&&(t=t.clone({headers:t.headers.set(r,i)})),n(t)}var j_=function(t){return t[t.Interceptors=0]="Interceptors",t[t.LegacyInterceptors=1]="LegacyInterceptors",t[t.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",t[t.NoXsrfProtection=3]="NoXsrfProtection",t[t.JsonpSupport=4]="JsonpSupport",t[t.RequestsMadeViaParent=5]="RequestsMadeViaParent",t[t.Fetch=6]="Fetch",t}(j_||{});function mD(t,n){return{\u0275kind:t,\u0275providers:n}}function gD(...t){let n=[De,F_,R_,{provide:Es,useExisting:R_},{provide:xc,useExisting:F_},{provide:wp,useValue:fD,multi:!0},{provide:V_,useValue:!0},{provide:Mc,useClass:pD}];for(let e of t)n.push(...e.\u0275providers);return Vl(n)}var N_=new N("");function vD(){return mD(j_.LegacyInterceptors,[{provide:N_,useFactory:sD},{provide:wp,useExisting:N_,multi:!0}])}var B_=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({providers:[gD(vD())]})}}return t})();var Sp=class extends fc{constructor(){super(...arguments),this.supportsDOMEvents=!0}},Ep=class t extends Sp{static makeCurrent(){x_(new t)}onAndCancel(n,e,i){return n.addEventListener(e,i),()=>{n.removeEventListener(e,i)}}dispatchEvent(n,e){n.dispatchEvent(e)}remove(n){n.parentNode&&n.parentNode.removeChild(n)}createElement(n,e){return e=e||this.getDefaultDocument(),e.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,e){return e==="window"?window:e==="document"?n:e==="body"?n.body:null}getBaseHref(n){let e=_D();return e==null?null:bD(e)}resetBaseElement(){Is=null}getUserAgent(){return window.navigator.userAgent}getCookie(n){return vc(document.cookie,n)}},Is=null;function _D(){return Is=Is||document.querySelector("base"),Is?Is.getAttribute("href"):null}function bD(t){return new URL(t,document.baseURI).pathname}var Mp=class{addToWindow(n){at.getAngularTestability=(i,r=!0)=>{let o=n.findTestabilityInTree(i,r);if(o==null)throw new B(5103,!1);return o},at.getAllAngularTestabilities=()=>n.getAllTestabilities(),at.getAllAngularRootElements=()=>n.getAllRootElements();let e=i=>{let r=at.getAllAngularTestabilities(),o=r.length,s=function(){o--,o==0&&i()};r.forEach(d=>{d.whenStable(s)})};at.frameworkStabilizers||(at.frameworkStabilizers=[]),at.frameworkStabilizers.push(e)}findTestabilityInTree(n,e,i){if(e==null)return null;let r=n.getTestability(e);return r??(i?Jn().isShadowRoot(e)?this.findTestabilityInTree(n,e.host,!0):this.findTestabilityInTree(n,e.parentElement,!0):null)}},yD=(()=>{class t{build(){return new XMLHttpRequest}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})(),Ip=new N(""),$_=(()=>{class t{constructor(e,i){this._zone=i,this._eventNameToPlugin=new Map,e.forEach(r=>{r.manager=this}),this._plugins=e.slice().reverse()}addEventListener(e,i,r){return this._findPluginFor(i).addEventListener(e,i,r)}getZone(){return this._zone}_findPluginFor(e){let i=this._eventNameToPlugin.get(e);if(i)return i;if(i=this._plugins.find(o=>o.supports(e)),!i)throw new B(5101,!1);return this._eventNameToPlugin.set(e,i),i}static{this.\u0275fac=function(i){return new(i||t)(I(Ip),I(Z))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})(),Ic=class{constructor(n){this._doc=n}},xp="ng-app-id",W_=(()=>{class t{constructor(e,i,r,o={}){this.doc=e,this.appId=i,this.nonce=r,this.platformId=o,this.styleRef=new Map,this.hostNodes=new Set,this.styleNodesInDOM=this.collectServerRenderedStyles(),this.platformIsServer=yc(o),this.resetHostNodes()}addStyles(e){for(let i of e)this.changeUsageCount(i,1)===1&&this.onStyleAdded(i)}removeStyles(e){for(let i of e)this.changeUsageCount(i,-1)<=0&&this.onStyleRemoved(i)}ngOnDestroy(){let e=this.styleNodesInDOM;e&&(e.forEach(i=>i.remove()),e.clear());for(let i of this.getAllStyles())this.onStyleRemoved(i);this.resetHostNodes()}addHost(e){this.hostNodes.add(e);for(let i of this.getAllStyles())this.addStyleToHost(e,i)}removeHost(e){this.hostNodes.delete(e)}getAllStyles(){return this.styleRef.keys()}onStyleAdded(e){for(let i of this.hostNodes)this.addStyleToHost(i,e)}onStyleRemoved(e){let i=this.styleRef;i.get(e)?.elements?.forEach(r=>r.remove()),i.delete(e)}collectServerRenderedStyles(){let e=this.doc.head?.querySelectorAll(`style[${xp}="${this.appId}"]`);if(e?.length){let i=new Map;return e.forEach(r=>{r.textContent!=null&&i.set(r.textContent,r)}),i}return null}changeUsageCount(e,i){let r=this.styleRef;if(r.has(e)){let o=r.get(e);return o.usage+=i,o.usage}return r.set(e,{usage:i,elements:[]}),i}getStyleElement(e,i){let r=this.styleNodesInDOM,o=r?.get(i);if(o?.parentNode===e)return r.delete(i),o.removeAttribute(xp),o;{let s=this.doc.createElement("style");return this.nonce&&s.setAttribute("nonce",this.nonce),s.textContent=i,this.platformIsServer&&s.setAttribute(xp,this.appId),e.appendChild(s),s}}addStyleToHost(e,i){let r=this.getStyleElement(e,i),o=this.styleRef,s=o.get(i)?.elements;s?s.push(r):o.set(i,{elements:[r],usage:1})}resetHostNodes(){let e=this.hostNodes;e.clear(),e.add(this.doc.head)}static{this.\u0275fac=function(i){return new(i||t)(I(le),I(us),I(hs,8),I(Kt))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})(),Cp={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},Pp=/%COMP%/g,q_="%COMP%",wD=`_nghost-${q_}`,xD=`_ngcontent-${q_}`,CD=!0,SD=new N("",{providedIn:"root",factory:()=>CD});function ED(t){return xD.replace(Pp,t)}function MD(t){return wD.replace(Pp,t)}function G_(t,n){return n.map(e=>e.replace(Pp,t))}var U_=(()=>{class t{constructor(e,i,r,o,s,d,u,h=null){this.eventManager=e,this.sharedStylesHost=i,this.appId=r,this.removeStylesOnCompDestroy=o,this.doc=s,this.platformId=d,this.ngZone=u,this.nonce=h,this.rendererByCompId=new Map,this.platformIsServer=yc(d),this.defaultRenderer=new Ds(e,s,u,this.platformIsServer)}createRenderer(e,i){if(!e||!i)return this.defaultRenderer;this.platformIsServer&&i.encapsulation===Zn.ShadowDom&&(i=ke(A({},i),{encapsulation:Zn.Emulated}));let r=this.getOrCreateRenderer(e,i);return r instanceof Dc?r.applyToHost(e):r instanceof Ps&&r.applyStyles(),r}getOrCreateRenderer(e,i){let r=this.rendererByCompId,o=r.get(i.id);if(!o){let s=this.doc,d=this.ngZone,u=this.eventManager,h=this.sharedStylesHost,p=this.removeStylesOnCompDestroy,m=this.platformIsServer;switch(i.encapsulation){case Zn.Emulated:o=new Dc(u,h,i,this.appId,p,s,d,m);break;case Zn.ShadowDom:return new Dp(u,h,e,i,s,d,this.nonce,m);default:o=new Ps(u,h,i,p,s,d,m);break}r.set(i.id,o)}return o}ngOnDestroy(){this.rendererByCompId.clear()}static{this.\u0275fac=function(i){return new(i||t)(I($_),I(W_),I(us),I(SD),I(le),I(Kt),I(Z),I(hs))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})(),Ds=class{constructor(n,e,i,r){this.eventManager=n,this.doc=e,this.ngZone=i,this.platformIsServer=r,this.data=Object.create(null),this.throwOnSyntheticProps=!0,this.destroyNode=null}destroy(){}createElement(n,e){return e?this.doc.createElementNS(Cp[e]||e,n):this.doc.createElement(n)}createComment(n){return this.doc.createComment(n)}createText(n){return this.doc.createTextNode(n)}appendChild(n,e){(z_(n)?n.content:n).appendChild(e)}insertBefore(n,e,i){n&&(z_(n)?n.content:n).insertBefore(e,i)}removeChild(n,e){n&&n.removeChild(e)}selectRootElement(n,e){let i=typeof n=="string"?this.doc.querySelector(n):n;if(!i)throw new B(-5104,!1);return e||(i.textContent=""),i}parentNode(n){return n.parentNode}nextSibling(n){return n.nextSibling}setAttribute(n,e,i,r){if(r){e=r+":"+e;let o=Cp[r];o?n.setAttributeNS(o,e,i):n.setAttribute(e,i)}else n.setAttribute(e,i)}removeAttribute(n,e,i){if(i){let r=Cp[i];r?n.removeAttributeNS(r,e):n.removeAttribute(`${i}:${e}`)}else n.removeAttribute(e)}addClass(n,e){n.classList.add(e)}removeClass(n,e){n.classList.remove(e)}setStyle(n,e,i,r){r&(si.DashCase|si.Important)?n.style.setProperty(e,i,r&si.Important?"important":""):n.style[e]=i}removeStyle(n,e,i){i&si.DashCase?n.style.removeProperty(e):n.style[e]=""}setProperty(n,e,i){n!=null&&(n[e]=i)}setValue(n,e){n.nodeValue=e}listen(n,e,i){if(typeof n=="string"&&(n=Jn().getGlobalEventTarget(this.doc,n),!n))throw new Error(`Unsupported event target ${n} for event ${e}`);return this.eventManager.addEventListener(n,e,this.decoratePreventDefault(i))}decoratePreventDefault(n){return e=>{if(e==="__ngUnwrap__")return n;(this.platformIsServer?this.ngZone.runGuarded(()=>n(e)):n(e))===!1&&e.preventDefault()}}};function z_(t){return t.tagName==="TEMPLATE"&&t.content!==void 0}var Dp=class extends Ds{constructor(n,e,i,r,o,s,d,u){super(n,o,s,u),this.sharedStylesHost=e,this.hostEl=i,this.shadowRoot=i.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);let h=G_(r.id,r.styles);for(let p of h){let m=document.createElement("style");d&&m.setAttribute("nonce",d),m.textContent=p,this.shadowRoot.appendChild(m)}}nodeOrShadowRoot(n){return n===this.hostEl?this.shadowRoot:n}appendChild(n,e){return super.appendChild(this.nodeOrShadowRoot(n),e)}insertBefore(n,e,i){return super.insertBefore(this.nodeOrShadowRoot(n),e,i)}removeChild(n,e){return super.removeChild(this.nodeOrShadowRoot(n),e)}parentNode(n){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(n)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}},Ps=class extends Ds{constructor(n,e,i,r,o,s,d,u){super(n,o,s,d),this.sharedStylesHost=e,this.removeStylesOnCompDestroy=r,this.styles=u?G_(u,i.styles):i.styles}applyStyles(){this.sharedStylesHost.addStyles(this.styles)}destroy(){this.removeStylesOnCompDestroy&&this.sharedStylesHost.removeStyles(this.styles)}},Dc=class extends Ps{constructor(n,e,i,r,o,s,d,u){let h=r+"-"+i.id;super(n,e,i,o,s,d,u,h),this.contentAttr=ED(h),this.hostAttr=MD(h)}applyToHost(n){this.applyStyles(),this.setAttribute(n,this.hostAttr,"")}createElement(n,e){let i=super.createElement(n,e);return super.setAttribute(i,this.contentAttr,""),i}},ID=(()=>{class t extends Ic{constructor(e){super(e)}supports(e){return!0}addEventListener(e,i,r){return e.addEventListener(i,r,!1),()=>this.removeEventListener(e,i,r)}removeEventListener(e,i,r){return e.removeEventListener(i,r)}static{this.\u0275fac=function(i){return new(i||t)(I(le))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})(),H_=["alt","control","meta","shift"],DD={"\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"},PD={alt:t=>t.altKey,control:t=>t.ctrlKey,meta:t=>t.metaKey,shift:t=>t.shiftKey},kD=(()=>{class t extends Ic{constructor(e){super(e)}supports(e){return t.parseEventName(e)!=null}addEventListener(e,i,r){let o=t.parseEventName(i),s=t.eventCallback(o.fullKey,r,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Jn().onAndCancel(e,o.domEventName,s))}static parseEventName(e){let i=e.toLowerCase().split("."),r=i.shift();if(i.length===0||!(r==="keydown"||r==="keyup"))return null;let o=t._normalizeKey(i.pop()),s="",d=i.indexOf("code");if(d>-1&&(i.splice(d,1),s="code."),H_.forEach(h=>{let p=i.indexOf(h);p>-1&&(i.splice(p,1),s+=h+".")}),s+=o,i.length!=0||o.length===0)return null;let u={};return u.domEventName=r,u.fullKey=s,u}static matchEventFullKeyCode(e,i){let r=DD[e.key]||e.key,o="";return i.indexOf("code.")>-1&&(r=e.code,o="code."),r==null||!r?!1:(r=r.toLowerCase(),r===" "?r="space":r==="."&&(r="dot"),H_.forEach(s=>{if(s!==r){let d=PD[s];d(e)&&(o+=s+".")}}),o+=r,o===i)}static eventCallback(e,i,r){return o=>{t.matchEventFullKeyCode(o,e)&&r.runGuarded(()=>i(o))}}static _normalizeKey(e){return e==="esc"?"escape":e}static{this.\u0275fac=function(i){return new(i||t)(I(le))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})();function OD(){Ep.makeCurrent()}function TD(){return new Rn}function AD(){return H0(document),document}var RD=[{provide:Kt,useValue:gp},{provide:Oh,useValue:OD,multi:!0},{provide:le,useFactory:AD,deps:[]}],Q_=np(h_,"browser",RD),FD=new N(""),ND=[{provide:bs,useClass:Mp,deps:[]},{provide:ep,useClass:lc,deps:[Z,cc,bs]},{provide:lc,useClass:lc,deps:[Z,cc,bs]}],LD=[{provide:jl,useValue:"root"},{provide:Rn,useFactory:TD,deps:[]},{provide:Ip,useClass:ID,multi:!0,deps:[le,Z,Kt]},{provide:Ip,useClass:kD,multi:!0,deps:[le]},U_,W_,$_,{provide:is,useExisting:U_},{provide:go,useClass:yD,deps:[]},[]],Y_=(()=>{class t{constructor(e){}static withServerTransition(e){return{ngModule:t,providers:[{provide:us,useValue:e.appId}]}}static{this.\u0275fac=function(i){return new(i||t)(I(FD,12))}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({providers:[...LD,...ND],imports:[ze,p_]})}}return t})();var Pc=(()=>{class t{constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}static{this.\u0275fac=function(i){return new(i||t)(I(le))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var ob=(()=>{class t{constructor(e,i){this._renderer=e,this._elementRef=i,this.onChange=r=>{},this.onTouched=()=>{}}setProperty(e,i){this._renderer.setProperty(this._elementRef.nativeElement,e,i)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}static{this.\u0275fac=function(i){return new(i||t)(M(ln),M(be))}}static{this.\u0275dir=ve({type:t})}}return t})(),Vc=(()=>{class t extends ob{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=sn(t)))(r||t)}})()}static{this.\u0275dir=ve({type:t,features:[st]})}}return t})(),ji=new N(""),VD={provide:ji,useExisting:Xt(()=>Fp),multi:!0},Fp=(()=>{class t extends Vc{writeValue(e){this.setProperty("checked",e)}static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=sn(t)))(r||t)}})()}static{this.\u0275dir=ve({type:t,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(i,r){i&1&&y("change",function(s){return r.onChange(s.target.checked)})("blur",function(){return r.onTouched()})},features:[Lt([VD]),st]})}}return t})(),jD={provide:ji,useExisting:Xt(()=>_t),multi:!0};function BD(){let t=Jn()?Jn().getUserAgent():"";return/android (\d+)/.test(t.toLowerCase())}var UD=new N(""),_t=(()=>{class t extends ob{constructor(e,i,r){super(e,i),this._compositionMode=r,this._composing=!1,this._compositionMode==null&&(this._compositionMode=!BD())}writeValue(e){let i=e??"";this.setProperty("value",i)}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}static{this.\u0275fac=function(i){return new(i||t)(M(ln),M(be),M(UD,8))}}static{this.\u0275dir=ve({type:t,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(i,r){i&1&&y("input",function(s){return r._handleInput(s.target.value)})("blur",function(){return r.onTouched()})("compositionstart",function(){return r._compositionStart()})("compositionend",function(s){return r._compositionEnd(s.target.value)})},features:[Lt([jD]),st]})}}return t})();function Vi(t){return t==null||(typeof t=="string"||Array.isArray(t))&&t.length===0}function sb(t){return t!=null&&typeof t.length=="number"}var Cr=new N(""),Np=new N(""),zD=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,Tt=class{static min(n){return HD(n)}static max(n){return $D(n)}static required(n){return ab(n)}static requiredTrue(n){return WD(n)}static email(n){return qD(n)}static minLength(n){return GD(n)}static maxLength(n){return QD(n)}static pattern(n){return lb(n)}static nullValidator(n){return Oc(n)}static compose(n){return fb(n)}static composeAsync(n){return gb(n)}};function HD(t){return n=>{if(Vi(n.value)||Vi(t))return null;let e=parseFloat(n.value);return!isNaN(e)&&e{if(Vi(n.value)||Vi(t))return null;let e=parseFloat(n.value);return!isNaN(e)&&e>t?{max:{max:t,actual:n.value}}:null}}function ab(t){return Vi(t.value)?{required:!0}:null}function WD(t){return t.value===!0?null:{required:!0}}function qD(t){return Vi(t.value)||zD.test(t.value)?null:{email:!0}}function GD(t){return n=>Vi(n.value)||!sb(n.value)?null:n.value.lengthsb(n.value)&&n.value.length>t?{maxlength:{requiredLength:t,actualLength:n.value.length}}:null}function lb(t){if(!t)return Oc;let n,e;return typeof t=="string"?(e="",t.charAt(0)!=="^"&&(e+="^"),e+=t,t.charAt(t.length-1)!=="$"&&(e+="$"),n=new RegExp(e)):(e=t.toString(),n=t),i=>{if(Vi(i.value))return null;let r=i.value;return n.test(r)?null:{pattern:{requiredPattern:e,actualValue:r}}}}function Oc(t){return null}function cb(t){return t!=null}function db(t){return yr(t)?Ue(t):t}function ub(t){let n={};return t.forEach(e=>{n=e!=null?A(A({},n),e):n}),Object.keys(n).length===0?null:n}function hb(t,n){return n.map(e=>e(t))}function YD(t){return!t.validate}function pb(t){return t.map(n=>YD(n)?n:e=>n.validate(e))}function fb(t){if(!t)return null;let n=t.filter(cb);return n.length==0?null:function(e){return ub(hb(e,n))}}function mb(t){return t!=null?fb(pb(t)):null}function gb(t){if(!t)return null;let n=t.filter(cb);return n.length==0?null:function(e){let i=hb(e,n).map(db);return Yd(i).pipe(Y(ub))}}function vb(t){return t!=null?gb(pb(t)):null}function Z_(t,n){return t===null?[n]:Array.isArray(t)?[...t,n]:[t,n]}function _b(t){return t._rawValidators}function bb(t){return t._rawAsyncValidators}function Op(t){return t?Array.isArray(t)?t:[t]:[]}function Tc(t,n){return Array.isArray(t)?t.includes(n):t===n}function X_(t,n){let e=Op(n);return Op(t).forEach(r=>{Tc(e,r)||e.push(r)}),e}function K_(t,n){return Op(n).filter(e=>!Tc(t,e))}var Ac=class{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(n){this._rawValidators=n||[],this._composedValidatorFn=mb(this._rawValidators)}_setAsyncValidators(n){this._rawAsyncValidators=n||[],this._composedAsyncValidatorFn=vb(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(n){this._onDestroyCallbacks.push(n)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(n=>n()),this._onDestroyCallbacks=[]}reset(n=void 0){this.control&&this.control.reset(n)}hasError(n,e){return this.control?this.control.hasError(n,e):!1}getError(n,e){return this.control?this.control.getError(n,e):null}},wr=class extends Ac{get formDirective(){return null}get path(){return null}},xr=class extends Ac{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}},Rc=class{constructor(n){this._cd=n}get isTouched(){return!!this._cd?.control?.touched}get isUntouched(){return!!this._cd?.control?.untouched}get isPristine(){return!!this._cd?.control?.pristine}get isDirty(){return!!this._cd?.control?.dirty}get isValid(){return!!this._cd?.control?.valid}get isInvalid(){return!!this._cd?.control?.invalid}get isPending(){return!!this._cd?.control?.pending}get isSubmitted(){return!!this._cd?.submitted}},ZD={"[class.ng-untouched]":"isUntouched","[class.ng-touched]":"isTouched","[class.ng-pristine]":"isPristine","[class.ng-dirty]":"isDirty","[class.ng-valid]":"isValid","[class.ng-invalid]":"isInvalid","[class.ng-pending]":"isPending"},c6=ke(A({},ZD),{"[class.ng-submitted]":"isSubmitted"}),Vt=(()=>{class t extends Rc{constructor(e){super(e)}static{this.\u0275fac=function(i){return new(i||t)(M(xr,2))}}static{this.\u0275dir=ve({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(i,r){i&2&&W("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)},features:[st]})}}return t})(),jc=(()=>{class t extends Rc{constructor(e){super(e)}static{this.\u0275fac=function(i){return new(i||t)(M(wr,10))}}static{this.\u0275dir=ve({type:t,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(i,r){i&2&&W("ng-untouched",r.isUntouched)("ng-touched",r.isTouched)("ng-pristine",r.isPristine)("ng-dirty",r.isDirty)("ng-valid",r.isValid)("ng-invalid",r.isInvalid)("ng-pending",r.isPending)("ng-submitted",r.isSubmitted)},features:[st]})}}return t})();var ks="VALID",kc="INVALID",_o="PENDING",Os="DISABLED";function Lp(t){return(Bc(t)?t.validators:t)||null}function XD(t){return Array.isArray(t)?mb(t):t||null}function Vp(t,n){return(Bc(n)?n.asyncValidators:t)||null}function KD(t){return Array.isArray(t)?vb(t):t||null}function Bc(t){return t!=null&&!Array.isArray(t)&&typeof t=="object"}function yb(t,n,e){let i=t.controls;if(!(n?Object.keys(i):i).length)throw new B(1e3,"");if(!i[e])throw new B(1001,"")}function wb(t,n,e){t._forEachChild((i,r)=>{if(e[r]===void 0)throw new B(1002,"")})}var bo=class{constructor(n,e){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(n),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(n){this._rawValidators=this._composedValidatorFn=n}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(n){this._rawAsyncValidators=this._composedAsyncValidatorFn=n}get parent(){return this._parent}get valid(){return this.status===ks}get invalid(){return this.status===kc}get pending(){return this.status==_o}get disabled(){return this.status===Os}get enabled(){return this.status!==Os}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(n){this._assignValidators(n)}setAsyncValidators(n){this._assignAsyncValidators(n)}addValidators(n){this.setValidators(X_(n,this._rawValidators))}addAsyncValidators(n){this.setAsyncValidators(X_(n,this._rawAsyncValidators))}removeValidators(n){this.setValidators(K_(n,this._rawValidators))}removeAsyncValidators(n){this.setAsyncValidators(K_(n,this._rawAsyncValidators))}hasValidator(n){return Tc(this._rawValidators,n)}hasAsyncValidator(n){return Tc(this._rawAsyncValidators,n)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(n={}){this.touched=!0,this._parent&&!n.onlySelf&&this._parent.markAsTouched(n)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(n=>n.markAllAsTouched())}markAsUntouched(n={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(e=>{e.markAsUntouched({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}markAsDirty(n={}){this.pristine=!1,this._parent&&!n.onlySelf&&this._parent.markAsDirty(n)}markAsPristine(n={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(e=>{e.markAsPristine({onlySelf:!0})}),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}markAsPending(n={}){this.status=_o,n.emitEvent!==!1&&this.statusChanges.emit(this.status),this._parent&&!n.onlySelf&&this._parent.markAsPending(n)}disable(n={}){let e=this._parentMarkedDirty(n.onlySelf);this.status=Os,this.errors=null,this._forEachChild(i=>{i.disable(ke(A({},n),{onlySelf:!0}))}),this._updateValue(),n.emitEvent!==!1&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(ke(A({},n),{skipPristineCheck:e})),this._onDisabledChange.forEach(i=>i(!0))}enable(n={}){let e=this._parentMarkedDirty(n.onlySelf);this.status=ks,this._forEachChild(i=>{i.enable(ke(A({},n),{onlySelf:!0}))}),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent}),this._updateAncestors(ke(A({},n),{skipPristineCheck:e})),this._onDisabledChange.forEach(i=>i(!1))}_updateAncestors(n){this._parent&&!n.onlySelf&&(this._parent.updateValueAndValidity(n),n.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(n){this._parent=n}getRawValue(){return this.value}updateValueAndValidity(n={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===ks||this.status===_o)&&this._runAsyncValidator(n.emitEvent)),n.emitEvent!==!1&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!n.onlySelf&&this._parent.updateValueAndValidity(n)}_updateTreeValidity(n={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(n)),this.updateValueAndValidity({onlySelf:!0,emitEvent:n.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Os:ks}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(n){if(this.asyncValidator){this.status=_o,this._hasOwnPendingAsyncValidator=!0;let e=db(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(i=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(i,{emitEvent:n})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(n,e={}){this.errors=n,this._updateControlsErrors(e.emitEvent!==!1)}get(n){let e=n;return e==null||(Array.isArray(e)||(e=e.split(".")),e.length===0)?null:e.reduce((i,r)=>i&&i._find(r),this)}getError(n,e){let i=e?this.get(e):this;return i&&i.errors?i.errors[n]:null}hasError(n,e){return!!this.getError(n,e)}get root(){let n=this;for(;n._parent;)n=n._parent;return n}_updateControlsErrors(n){this.status=this._calculateStatus(),n&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(n)}_initObservables(){this.valueChanges=new de,this.statusChanges=new de}_calculateStatus(){return this._allControlsDisabled()?Os:this.errors?kc:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(_o)?_o:this._anyControlsHaveStatus(kc)?kc:ks}_anyControlsHaveStatus(n){return this._anyControls(e=>e.status===n)}_anyControlsDirty(){return this._anyControls(n=>n.dirty)}_anyControlsTouched(){return this._anyControls(n=>n.touched)}_updatePristine(n={}){this.pristine=!this._anyControlsDirty(),this._parent&&!n.onlySelf&&this._parent._updatePristine(n)}_updateTouched(n={}){this.touched=this._anyControlsTouched(),this._parent&&!n.onlySelf&&this._parent._updateTouched(n)}_registerOnCollectionChange(n){this._onCollectionChange=n}_setUpdateStrategy(n){Bc(n)&&n.updateOn!=null&&(this._updateOn=n.updateOn)}_parentMarkedDirty(n){let e=this._parent&&this._parent.dirty;return!n&&!!e&&!this._parent._anyControlsDirty()}_find(n){return null}_assignValidators(n){this._rawValidators=Array.isArray(n)?n.slice():n,this._composedValidatorFn=XD(this._rawValidators)}_assignAsyncValidators(n){this._rawAsyncValidators=Array.isArray(n)?n.slice():n,this._composedAsyncValidatorFn=KD(this._rawAsyncValidators)}},Fc=class extends bo{constructor(n,e,i){super(Lp(e),Vp(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(n,e){return this.controls[n]?this.controls[n]:(this.controls[n]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(n,e,i={}){this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}removeControl(n,e={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(n,e,i={}){this.controls[n]&&this.controls[n]._registerOnCollectionChange(()=>{}),delete this.controls[n],e&&this.registerControl(n,e),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}contains(n){return this.controls.hasOwnProperty(n)&&this.controls[n].enabled}setValue(n,e={}){wb(this,!0,n),Object.keys(n).forEach(i=>{yb(this,!0,i),this.controls[i].setValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){n!=null&&(Object.keys(n).forEach(i=>{let r=this.controls[i];r&&r.patchValue(n[i],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n={},e={}){this._forEachChild((i,r)=>{i.reset(n?n[r]:null,{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(n,e,i)=>(n[i]=e.getRawValue(),n))}_syncPendingControls(){let n=this._reduceChildren(!1,(e,i)=>i._syncPendingControls()?!0:e);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){Object.keys(this.controls).forEach(e=>{let i=this.controls[e];i&&n(i,e)})}_setUpControls(){this._forEachChild(n=>{n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(n){for(let[e,i]of Object.entries(this.controls))if(this.contains(e)&&n(i))return!0;return!1}_reduceValue(){let n={};return this._reduceChildren(n,(e,i,r)=>((i.enabled||this.disabled)&&(e[r]=i.value),e))}_reduceChildren(n,e){let i=n;return this._forEachChild((r,o)=>{i=e(i,r,o)}),i}_allControlsDisabled(){for(let n of Object.keys(this.controls))if(this.controls[n].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(n){return this.controls.hasOwnProperty(n)?this.controls[n]:null}};var Tp=class extends Fc{};var Uc=new N("CallSetDisabledState",{providedIn:"root",factory:()=>zc}),zc="always";function xb(t,n){return[...n.path,t]}function Ap(t,n,e=zc){jp(t,n),n.valueAccessor.writeValue(t.value),(t.disabled||e==="always")&&n.valueAccessor.setDisabledState?.(t.disabled),e2(t,n),n2(t,n),t2(t,n),JD(t,n)}function J_(t,n,e=!0){let i=()=>{};n.valueAccessor&&(n.valueAccessor.registerOnChange(i),n.valueAccessor.registerOnTouched(i)),Lc(t,n),t&&(n._invokeOnDestroyCallbacks(),t._registerOnCollectionChange(()=>{}))}function Nc(t,n){t.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(n)})}function JD(t,n){if(n.valueAccessor.setDisabledState){let e=i=>{n.valueAccessor.setDisabledState(i)};t.registerOnDisabledChange(e),n._registerOnDestroy(()=>{t._unregisterOnDisabledChange(e)})}}function jp(t,n){let e=_b(t);n.validator!==null?t.setValidators(Z_(e,n.validator)):typeof e=="function"&&t.setValidators([e]);let i=bb(t);n.asyncValidator!==null?t.setAsyncValidators(Z_(i,n.asyncValidator)):typeof i=="function"&&t.setAsyncValidators([i]);let r=()=>t.updateValueAndValidity();Nc(n._rawValidators,r),Nc(n._rawAsyncValidators,r)}function Lc(t,n){let e=!1;if(t!==null){if(n.validator!==null){let r=_b(t);if(Array.isArray(r)&&r.length>0){let o=r.filter(s=>s!==n.validator);o.length!==r.length&&(e=!0,t.setValidators(o))}}if(n.asyncValidator!==null){let r=bb(t);if(Array.isArray(r)&&r.length>0){let o=r.filter(s=>s!==n.asyncValidator);o.length!==r.length&&(e=!0,t.setAsyncValidators(o))}}}let i=()=>{};return Nc(n._rawValidators,i),Nc(n._rawAsyncValidators,i),e}function e2(t,n){n.valueAccessor.registerOnChange(e=>{t._pendingValue=e,t._pendingChange=!0,t._pendingDirty=!0,t.updateOn==="change"&&Cb(t,n)})}function t2(t,n){n.valueAccessor.registerOnTouched(()=>{t._pendingTouched=!0,t.updateOn==="blur"&&t._pendingChange&&Cb(t,n),t.updateOn!=="submit"&&t.markAsTouched()})}function Cb(t,n){t._pendingDirty&&t.markAsDirty(),t.setValue(t._pendingValue,{emitModelToViewChange:!1}),n.viewToModelUpdate(t._pendingValue),t._pendingChange=!1}function n2(t,n){let e=(i,r)=>{n.valueAccessor.writeValue(i),r&&n.viewToModelUpdate(i)};t.registerOnChange(e),n._registerOnDestroy(()=>{t._unregisterOnChange(e)})}function i2(t,n){t==null,jp(t,n)}function r2(t,n){return Lc(t,n)}function Sb(t,n){if(!t.hasOwnProperty("model"))return!1;let e=t.model;return e.isFirstChange()?!0:!Object.is(n,e.currentValue)}function o2(t){return Object.getPrototypeOf(t.constructor)===Vc}function s2(t,n){t._syncPendingControls(),n.forEach(e=>{let i=e.control;i.updateOn==="submit"&&i._pendingChange&&(e.viewToModelUpdate(i._pendingValue),i._pendingChange=!1)})}function Eb(t,n){if(!n)return null;Array.isArray(n);let e,i,r;return n.forEach(o=>{o.constructor===_t?e=o:o2(o)?i=o:r=o}),r||i||e||null}function a2(t,n){let e=t.indexOf(n);e>-1&&t.splice(e,1)}function eb(t,n){let e=t.indexOf(n);e>-1&&t.splice(e,1)}function tb(t){return typeof t=="object"&&t!==null&&Object.keys(t).length===2&&"value"in t&&"disabled"in t}var Ts=class extends bo{constructor(n=null,e,i){super(Lp(e),Vp(i,e)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(n),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),Bc(e)&&(e.nonNullable||e.initialValueIsDefault)&&(tb(n)?this.defaultValue=n.value:this.defaultValue=n)}setValue(n,e={}){this.value=this._pendingValue=n,this._onChange.length&&e.emitModelToViewChange!==!1&&this._onChange.forEach(i=>i(this.value,e.emitViewToModelChange!==!1)),this.updateValueAndValidity(e)}patchValue(n,e={}){this.setValue(n,e)}reset(n=this.defaultValue,e={}){this._applyFormState(n),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(n){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(n){this._onChange.push(n)}_unregisterOnChange(n){eb(this._onChange,n)}registerOnDisabledChange(n){this._onDisabledChange.push(n)}_unregisterOnDisabledChange(n){eb(this._onDisabledChange,n)}_forEachChild(n){}_syncPendingControls(){return this.updateOn==="submit"&&(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),this._pendingChange)?(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),!0):!1}_applyFormState(n){tb(n)?(this.value=this._pendingValue=n.value,n.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=n}};var l2=t=>t instanceof Ts;var c2={provide:xr,useExisting:Xt(()=>$t)},nb=Promise.resolve(),$t=(()=>{class t extends xr{constructor(e,i,r,o,s,d){super(),this._changeDetectorRef=s,this.callSetDisabledState=d,this.control=new Ts,this._registered=!1,this.name="",this.update=new de,this._parent=e,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=Eb(this,o)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){let i=e.name.previousValue;this.formDirective.removeControl({name:i,path:this._getPath(i)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),Sb(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&this.options.updateOn!=null&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!!(this.options&&this.options.standalone)}_setUpStandalone(){Ap(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),!this._isStandalone()&&this.name}_updateValue(e){nb.then(()=>{this.control.setValue(e,{emitViewToModelChange:!1}),this._changeDetectorRef?.markForCheck()})}_updateDisabled(e){let i=e.isDisabled.currentValue,r=i!==0&&kt(i);nb.then(()=>{r&&!this.control.disabled?this.control.disable():!r&&this.control.disabled&&this.control.enable(),this._changeDetectorRef?.markForCheck()})}_getPath(e){return this._parent?xb(e,this._parent):[e]}static{this.\u0275fac=function(i){return new(i||t)(M(wr,9),M(Cr,10),M(Np,10),M(ji,10),M(Re,8),M(Uc,8))}}static{this.\u0275dir=ve({type:t,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:[ee.None,"disabled","isDisabled"],model:[ee.None,"ngModel","model"],options:[ee.None,"ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[Lt([c2]),st,Mt]})}}return t})(),Hc=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275dir=ve({type:t,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]})}}return t})();var Mb=new N("");var d2={provide:wr,useExisting:Xt(()=>As)},As=(()=>{class t extends wr{constructor(e,i,r){super(),this.callSetDisabledState=r,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new de,this._setValidators(e),this._setAsyncValidators(i)}ngOnChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(Lc(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){let i=this.form.get(e.path);return Ap(i,e,this.callSetDisabledState),i.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),i}getControl(e){return this.form.get(e.path)}removeControl(e){J_(e.control||null,e,!1),a2(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,i){this.form.get(e.path).setValue(i)}onSubmit(e){return this.submitted=!0,s2(this.form,this.directives),this.ngSubmit.emit(e),e?.target?.method==="dialog"}onReset(){this.resetForm()}resetForm(e=void 0){this.form.reset(e),this.submitted=!1}_updateDomValue(){this.directives.forEach(e=>{let i=e.control,r=this.form.get(e.path);i!==r&&(J_(i||null,e),l2(r)&&(Ap(r,e,this.callSetDisabledState),e.control=r))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){let i=this.form.get(e.path);i2(i,e),i.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){let i=this.form.get(e.path);i&&r2(i,e)&&i.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){jp(this.form,this),this._oldForm&&Lc(this._oldForm,this)}_checkFormPresent(){this.form}static{this.\u0275fac=function(i){return new(i||t)(M(Cr,10),M(Np,10),M(Uc,8))}}static{this.\u0275dir=ve({type:t,selectors:[["","formGroup",""]],hostBindings:function(i,r){i&1&&y("submit",function(s){return r.onSubmit(s)})("reset",function(){return r.onReset()})},inputs:{form:[ee.None,"formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Lt([d2]),st,Mt]})}}return t})();var u2={provide:xr,useExisting:Xt(()=>Rs)},Rs=(()=>{class t extends xr{set isDisabled(e){}static{this._ngModelWarningSentOnce=!1}constructor(e,i,r,o,s){super(),this._ngModelWarningConfig=s,this._added=!1,this.name=null,this.update=new de,this._ngModelWarningSent=!1,this._parent=e,this._setValidators(i),this._setAsyncValidators(r),this.valueAccessor=Eb(this,o)}ngOnChanges(e){this._added||this._setUpControl(),Sb(e,this.viewModel)&&(this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}get path(){return xb(this.name==null?this.name:this.name.toString(),this._parent)}get formDirective(){return this._parent?this._parent.formDirective:null}_checkParentType(){}_setUpControl(){this._checkParentType(),this.control=this.formDirective.addControl(this),this._added=!0}static{this.\u0275fac=function(i){return new(i||t)(M(wr,13),M(Cr,10),M(Np,10),M(ji,10),M(Mb,8))}}static{this.\u0275dir=ve({type:t,selectors:[["","formControlName",""]],inputs:{name:[ee.None,"formControlName","name"],isDisabled:[ee.None,"disabled","isDisabled"],model:[ee.None,"ngModel","model"]},outputs:{update:"ngModelChange"},features:[Lt([u2]),st,Mt]})}}return t})(),h2={provide:ji,useExisting:Xt(()=>Bi),multi:!0};function Ib(t,n){return t==null?`${n}`:(n&&typeof n=="object"&&(n="Object"),`${t}: ${n}`.slice(0,50))}function p2(t){return t.split(":")[0]}var Bi=(()=>{class t extends Vc{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(e){this._compareWith=e}writeValue(e){this.value=e;let i=this._getOptionId(e),r=Ib(i,e);this.setProperty("value",r)}registerOnChange(e){this.onChange=i=>{this.value=this._getOptionValue(i),e(this.value)}}_registerOption(){return(this._idCounter++).toString()}_getOptionId(e){for(let i of this._optionMap.keys())if(this._compareWith(this._optionMap.get(i),e))return i;return null}_getOptionValue(e){let i=p2(e);return this._optionMap.has(i)?this._optionMap.get(i):e}static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=sn(t)))(r||t)}})()}static{this.\u0275dir=ve({type:t,selectors:[["select","formControlName","",3,"multiple",""],["select","formControl","",3,"multiple",""],["select","ngModel","",3,"multiple",""]],hostBindings:function(i,r){i&1&&y("change",function(s){return r.onChange(s.target.value)})("blur",function(){return r.onTouched()})},inputs:{compareWith:"compareWith"},features:[Lt([h2]),st]})}}return t})(),Ui=(()=>{class t{constructor(e,i,r){this._element=e,this._renderer=i,this._select=r,this._select&&(this.id=this._select._registerOption())}set ngValue(e){this._select!=null&&(this._select._optionMap.set(this.id,e),this._setElementValue(Ib(this.id,e)),this._select.writeValue(this._select.value))}set value(e){this._setElementValue(e),this._select&&this._select.writeValue(this._select.value)}_setElementValue(e){this._renderer.setProperty(this._element.nativeElement,"value",e)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}static{this.\u0275fac=function(i){return new(i||t)(M(be),M(ln),M(Bi,9))}}static{this.\u0275dir=ve({type:t,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}})}}return t})(),f2={provide:ji,useExisting:Xt(()=>Db),multi:!0};function ib(t,n){return t==null?`${n}`:(typeof n=="string"&&(n=`'${n}'`),n&&typeof n=="object"&&(n="Object"),`${t}: ${n}`.slice(0,50))}function m2(t){return t.split(":")[0]}var Db=(()=>{class t extends Vc{constructor(){super(...arguments),this._optionMap=new Map,this._idCounter=0,this._compareWith=Object.is}set compareWith(e){this._compareWith=e}writeValue(e){this.value=e;let i;if(Array.isArray(e)){let r=e.map(o=>this._getOptionId(o));i=(o,s)=>{o._setSelected(r.indexOf(s.toString())>-1)}}else i=(r,o)=>{r._setSelected(!1)};this._optionMap.forEach(i)}registerOnChange(e){this.onChange=i=>{let r=[],o=i.selectedOptions;if(o!==void 0){let s=o;for(let d=0;d{let e;return function(r){return(e||(e=sn(t)))(r||t)}})()}static{this.\u0275dir=ve({type:t,selectors:[["select","multiple","","formControlName",""],["select","multiple","","formControl",""],["select","multiple","","ngModel",""]],hostBindings:function(i,r){i&1&&y("change",function(s){return r.onChange(s.target)})("blur",function(){return r.onTouched()})},inputs:{compareWith:"compareWith"},features:[Lt([f2]),st]})}}return t})(),zi=(()=>{class t{constructor(e,i,r){this._element=e,this._renderer=i,this._select=r,this._select&&(this.id=this._select._registerOption(this))}set ngValue(e){this._select!=null&&(this._value=e,this._setElementValue(ib(this.id,e)),this._select.writeValue(this._select.value))}set value(e){this._select?(this._value=e,this._setElementValue(ib(this.id,e)),this._select.writeValue(this._select.value)):this._setElementValue(e)}_setElementValue(e){this._renderer.setProperty(this._element.nativeElement,"value",e)}_setSelected(e){this._renderer.setProperty(this._element.nativeElement,"selected",e)}ngOnDestroy(){this._select&&(this._select._optionMap.delete(this.id),this._select.writeValue(this._select.value))}static{this.\u0275fac=function(i){return new(i||t)(M(be),M(ln),M(Db,9))}}static{this.\u0275dir=ve({type:t,selectors:[["option"]],inputs:{ngValue:"ngValue",value:"value"}})}}return t})();var Pb=(()=>{class t{constructor(){this._validator=Oc}ngOnChanges(e){if(this.inputName in e){let i=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(i),this._validator=this._enabled?this.createValidator(i):Oc,this._onChange&&this._onChange()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return e!=null}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275dir=ve({type:t,features:[Mt]})}}return t})();var g2={provide:Cr,useExisting:Xt(()=>Bp),multi:!0};var Bp=(()=>{class t extends Pb{constructor(){super(...arguments),this.inputName="required",this.normalizeInput=kt,this.createValidator=e=>ab}enabled(e){return e}static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=sn(t)))(r||t)}})()}static{this.\u0275dir=ve({type:t,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(i,r){i&2&&z("required",r._enabled?"":null)},inputs:{required:"required"},features:[Lt([g2]),st]})}}return t})();var v2={provide:Cr,useExisting:Xt(()=>Up),multi:!0},Up=(()=>{class t extends Pb{constructor(){super(...arguments),this.inputName="pattern",this.normalizeInput=e=>e,this.createValidator=e=>lb(e)}static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=sn(t)))(r||t)}})()}static{this.\u0275dir=ve({type:t,selectors:[["","pattern","","formControlName",""],["","pattern","","formControl",""],["","pattern","","ngModel",""]],hostVars:1,hostBindings:function(i,r){i&2&&z("pattern",r._enabled?r.pattern:null)},inputs:{pattern:"pattern"},features:[Lt([v2]),st]})}}return t})();var kb=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({})}}return t})(),Rp=class extends bo{constructor(n,e,i){super(Lp(e),Vp(i,e)),this.controls=n,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}at(n){return this.controls[this._adjustIndex(n)]}push(n,e={}){this.controls.push(n),this._registerControl(n),this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}insert(n,e,i={}){this.controls.splice(n,0,e),this._registerControl(e),this.updateValueAndValidity({emitEvent:i.emitEvent})}removeAt(n,e={}){let i=this._adjustIndex(n);i<0&&(i=0),this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),this.controls.splice(i,1),this.updateValueAndValidity({emitEvent:e.emitEvent})}setControl(n,e,i={}){let r=this._adjustIndex(n);r<0&&(r=0),this.controls[r]&&this.controls[r]._registerOnCollectionChange(()=>{}),this.controls.splice(r,1),e&&(this.controls.splice(r,0,e),this._registerControl(e)),this.updateValueAndValidity({emitEvent:i.emitEvent}),this._onCollectionChange()}get length(){return this.controls.length}setValue(n,e={}){wb(this,!1,n),n.forEach((i,r)=>{yb(this,!1,r),this.at(r).setValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(n,e={}){n!=null&&(n.forEach((i,r)=>{this.at(r)&&this.at(r).patchValue(i,{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(n=[],e={}){this._forEachChild((i,r)=>{i.reset(n[r],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this.controls.map(n=>n.getRawValue())}clear(n={}){this.controls.length<1||(this._forEachChild(e=>e._registerOnCollectionChange(()=>{})),this.controls.splice(0),this.updateValueAndValidity({emitEvent:n.emitEvent}))}_adjustIndex(n){return n<0?n+this.length:n}_syncPendingControls(){let n=this.controls.reduce((e,i)=>i._syncPendingControls()?!0:e,!1);return n&&this.updateValueAndValidity({onlySelf:!0}),n}_forEachChild(n){this.controls.forEach((e,i)=>{n(e,i)})}_updateValue(){this.value=this.controls.filter(n=>n.enabled||this.disabled).map(n=>n.value)}_anyControls(n){return this.controls.some(e=>e.enabled&&n(e))}_setUpControls(){this._forEachChild(n=>this._registerControl(n))}_allControlsDisabled(){for(let n of this.controls)if(n.enabled)return!1;return this.controls.length>0||this.disabled}_registerControl(n){n.setParent(this),n._registerOnCollectionChange(this._onCollectionChange)}_find(n){return this.at(n)??null}};function rb(t){return!!t&&(t.asyncValidators!==void 0||t.validators!==void 0||t.updateOn!==void 0)}var $c=(()=>{class t{constructor(){this.useNonNullable=!1}get nonNullable(){let e=new t;return e.useNonNullable=!0,e}group(e,i=null){let r=this._reduceControls(e),o={};return rb(i)?o=i:i!==null&&(o.validators=i.validator,o.asyncValidators=i.asyncValidator),new Fc(r,o)}record(e,i=null){let r=this._reduceControls(e);return new Tp(r,i)}control(e,i,r){let o={};return this.useNonNullable?(rb(i)?o=i:(o.validators=i,o.asyncValidators=r),new Ts(e,ke(A({},o),{nonNullable:!0}))):new Ts(e,i,r)}array(e,i,r){let o=e.map(s=>this._createControl(s));return new Rp(o,i,r)}_reduceControls(e){let i={};return Object.keys(e).forEach(r=>{i[r]=this._createControl(e[r])}),i}_createControl(e){if(e instanceof Ts)return e;if(e instanceof bo)return e;if(Array.isArray(e)){let i=e[0],r=e.length>1?e[1]:null,o=e.length>2?e[2]:null;return this.control(i,r,o)}else return this.control(e)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var jt=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:Uc,useValue:e.callSetDisabledState??zc}]}}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({imports:[kb]})}}return t})(),Wc=(()=>{class t{static withConfig(e){return{ngModule:t,providers:[{provide:Mb,useValue:e.warnOnNgModelWithFormControl??"always"},{provide:Uc,useValue:e.callSetDisabledState??zc}]}}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({imports:[kb]})}}return t})();var fe="primary",Ys=Symbol("RouteTitle"),qp=class{constructor(n){this.params=n||{}}has(n){return Object.prototype.hasOwnProperty.call(this.params,n)}get(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e[0]:e}return null}getAll(n){if(this.has(n)){let e=this.params[n];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}};function So(t){return new qp(t)}function _2(t,n,e){let i=e.path.split("/");if(i.length>t.length||e.pathMatch==="full"&&(n.hasChildren()||i.lengthi[o]===r)}else return t===n}function Bb(t){return t.length>0?t[t.length-1]:null}function Gi(t){return za(t)?t:yr(t)?Ue(Promise.resolve(t)):j(t)}var y2={exact:zb,subset:Hb},Ub={exact:w2,subset:x2,ignored:()=>!0};function Ob(t,n,e){return y2[e.paths](t.root,n.root,e.matrixParams)&&Ub[e.queryParams](t.queryParams,n.queryParams)&&!(e.fragment==="exact"&&t.fragment!==n.fragment)}function w2(t,n){return ti(t,n)}function zb(t,n,e){if(!Er(t.segments,n.segments)||!Qc(t.segments,n.segments,e)||t.numberOfChildren!==n.numberOfChildren)return!1;for(let i in n.children)if(!t.children[i]||!zb(t.children[i],n.children[i],e))return!1;return!0}function x2(t,n){return Object.keys(n).length<=Object.keys(t).length&&Object.keys(n).every(e=>jb(t[e],n[e]))}function Hb(t,n,e){return $b(t,n,n.segments,e)}function $b(t,n,e,i){if(t.segments.length>e.length){let r=t.segments.slice(0,e.length);return!(!Er(r,e)||n.hasChildren()||!Qc(r,e,i))}else if(t.segments.length===e.length){if(!Er(t.segments,e)||!Qc(t.segments,e,i))return!1;for(let r in n.children)if(!t.children[r]||!Hb(t.children[r],n.children[r],i))return!1;return!0}else{let r=e.slice(0,t.segments.length),o=e.slice(t.segments.length);return!Er(t.segments,r)||!Qc(t.segments,r,i)||!t.children[fe]?!1:$b(t.children[fe],n,o,i)}}function Qc(t,n,e){return n.every((i,r)=>Ub[e](t[r].parameters,i.parameters))}var Hi=class{constructor(n=new Ve([],{}),e={},i=null){this.root=n,this.queryParams=e,this.fragment=i}get queryParamMap(){return this._queryParamMap??=So(this.queryParams),this._queryParamMap}toString(){return E2.serialize(this)}},Ve=class{constructor(n,e){this.segments=n,this.children=e,this.parent=null,Object.values(e).forEach(i=>i.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Yc(this)}},Sr=class{constructor(n,e){this.path=n,this.parameters=e}get parameterMap(){return this._parameterMap??=So(this.parameters),this._parameterMap}toString(){return qb(this)}};function C2(t,n){return Er(t,n)&&t.every((e,i)=>ti(e.parameters,n[i].parameters))}function Er(t,n){return t.length!==n.length?!1:t.every((e,i)=>e.path===n[i].path)}function S2(t,n){let e=[];return Object.entries(t.children).forEach(([i,r])=>{i===fe&&(e=e.concat(n(r,i)))}),Object.entries(t.children).forEach(([i,r])=>{i!==fe&&(e=e.concat(n(r,i)))}),e}var Zs=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:()=>new Us,providedIn:"root"})}}return t})(),Us=class{parse(n){let e=new Yp(n);return new Hi(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(n){let e=`/${Fs(n.root,!0)}`,i=D2(n.queryParams),r=typeof n.fragment=="string"?`#${M2(n.fragment)}`:"";return`${e}${i}${r}`}},E2=new Us;function Yc(t){return t.segments.map(n=>qb(n)).join("/")}function Fs(t,n){if(!t.hasChildren())return Yc(t);if(n){let e=t.children[fe]?Fs(t.children[fe],!1):"",i=[];return Object.entries(t.children).forEach(([r,o])=>{r!==fe&&i.push(`${r}:${Fs(o,!1)}`)}),i.length>0?`${e}(${i.join("//")})`:e}else{let e=S2(t,(i,r)=>r===fe?[Fs(t.children[fe],!1)]:[`${r}:${Fs(i,!1)}`]);return Object.keys(t.children).length===1&&t.children[fe]!=null?`${Yc(t)}/${e[0]}`:`${Yc(t)}/(${e.join("//")})`}}function Wb(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function qc(t){return Wb(t).replace(/%3B/gi,";")}function M2(t){return encodeURI(t)}function Qp(t){return Wb(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Zc(t){return decodeURIComponent(t)}function Tb(t){return Zc(t.replace(/\+/g,"%20"))}function qb(t){return`${Qp(t.path)}${I2(t.parameters)}`}function I2(t){return Object.entries(t).map(([n,e])=>`;${Qp(n)}=${Qp(e)}`).join("")}function D2(t){let n=Object.entries(t).map(([e,i])=>Array.isArray(i)?i.map(r=>`${qc(e)}=${qc(r)}`).join("&"):`${qc(e)}=${qc(i)}`).filter(e=>e);return n.length?`?${n.join("&")}`:""}var P2=/^[^\/()?;#]+/;function zp(t){let n=t.match(P2);return n?n[0]:""}var k2=/^[^\/()?;=#]+/;function O2(t){let n=t.match(k2);return n?n[0]:""}var T2=/^[^=?&#]+/;function A2(t){let n=t.match(T2);return n?n[0]:""}var R2=/^[^&#]+/;function F2(t){let n=t.match(R2);return n?n[0]:""}var Yp=class{constructor(n){this.url=n,this.remaining=n}parseRootSegment(){return this.consumeOptional("/"),this.remaining===""||this.peekStartsWith("?")||this.peekStartsWith("#")?new Ve([],{}):new Ve([],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 e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let i={};return this.peekStartsWith("(")&&(i=this.parseParens(!1)),(n.length>0||Object.keys(e).length>0)&&(i[fe]=new Ve(n,e)),i}parseSegment(){let n=zp(this.remaining);if(n===""&&this.peekStartsWith(";"))throw new B(4009,!1);return this.capture(n),new Sr(Zc(n),this.parseMatrixParams())}parseMatrixParams(){let n={};for(;this.consumeOptional(";");)this.parseParam(n);return n}parseParam(n){let e=O2(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){let r=zp(this.remaining);r&&(i=r,this.capture(i))}n[Zc(e)]=Zc(i)}parseQueryParam(n){let e=A2(this.remaining);if(!e)return;this.capture(e);let i="";if(this.consumeOptional("=")){let s=F2(this.remaining);s&&(i=s,this.capture(i))}let r=Tb(e),o=Tb(i);if(n.hasOwnProperty(r)){let s=n[r];Array.isArray(s)||(s=[s],n[r]=s),s.push(o)}else n[r]=o}parseParens(n){let e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){let i=zp(this.remaining),r=this.remaining[i.length];if(r!=="/"&&r!==")"&&r!==";")throw new B(4010,!1);let o;i.indexOf(":")>-1?(o=i.slice(0,i.indexOf(":")),this.capture(o),this.capture(":")):n&&(o=fe);let s=this.parseChildren();e[o]=Object.keys(s).length===1?s[fe]:new Ve([],s),this.consumeOptional("//")}return e}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 B(4011,!1)}};function Gb(t){return t.segments.length>0?new Ve([],{[fe]:t}):t}function Qb(t){let n={};for(let[i,r]of Object.entries(t.children)){let o=Qb(r);if(i===fe&&o.segments.length===0&&o.hasChildren())for(let[s,d]of Object.entries(o.children))n[s]=d;else(o.segments.length>0||o.hasChildren())&&(n[i]=o)}let e=new Ve(t.segments,n);return N2(e)}function N2(t){if(t.numberOfChildren===1&&t.children[fe]){let n=t.children[fe];return new Ve(t.segments.concat(n.segments),n.children)}return t}function Eo(t){return t instanceof Hi}function L2(t,n,e=null,i=null){let r=Yb(t);return Zb(r,n,e,i)}function Yb(t){let n;function e(o){let s={};for(let u of o.children){let h=e(u);s[u.outlet]=h}let d=new Ve(o.url,s);return o===t&&(n=d),d}let i=e(t.root),r=Gb(i);return n??r}function Zb(t,n,e,i){let r=t;for(;r.parent;)r=r.parent;if(n.length===0)return Hp(r,r,r,e,i);let o=V2(n);if(o.toRoot())return Hp(r,r,new Ve([],{}),e,i);let s=j2(o,r,t),d=s.processChildren?Vs(s.segmentGroup,s.index,o.commands):Kb(s.segmentGroup,s.index,o.commands);return Hp(r,s.segmentGroup,d,e,i)}function Xc(t){return typeof t=="object"&&t!=null&&!t.outlets&&!t.segmentPath}function zs(t){return typeof t=="object"&&t!=null&&t.outlets}function Hp(t,n,e,i,r){let o={};i&&Object.entries(i).forEach(([u,h])=>{o[u]=Array.isArray(h)?h.map(p=>`${p}`):`${h}`});let s;t===n?s=e:s=Xb(t,n,e);let d=Gb(Qb(s));return new Hi(d,o,r)}function Xb(t,n,e){let i={};return Object.entries(t.children).forEach(([r,o])=>{o===n?i[r]=e:i[r]=Xb(o,n,e)}),new Ve(t.segments,i)}var Kc=class{constructor(n,e,i){if(this.isAbsolute=n,this.numberOfDoubleDots=e,this.commands=i,n&&i.length>0&&Xc(i[0]))throw new B(4003,!1);let r=i.find(zs);if(r&&r!==Bb(i))throw new B(4004,!1)}toRoot(){return this.isAbsolute&&this.commands.length===1&&this.commands[0]=="/"}};function V2(t){if(typeof t[0]=="string"&&t.length===1&&t[0]==="/")return new Kc(!0,0,t);let n=0,e=!1,i=t.reduce((r,o,s)=>{if(typeof o=="object"&&o!=null){if(o.outlets){let d={};return Object.entries(o.outlets).forEach(([u,h])=>{d[u]=typeof h=="string"?h.split("/"):h}),[...r,{outlets:d}]}if(o.segmentPath)return[...r,o.segmentPath]}return typeof o!="string"?[...r,o]:s===0?(o.split("/").forEach((d,u)=>{u==0&&d==="."||(u==0&&d===""?e=!0:d===".."?n++:d!=""&&r.push(d))}),r):[...r,o]},[]);return new Kc(e,n,i)}var xo=class{constructor(n,e,i){this.segmentGroup=n,this.processChildren=e,this.index=i}};function j2(t,n,e){if(t.isAbsolute)return new xo(n,!0,0);if(!e)return new xo(n,!1,NaN);if(e.parent===null)return new xo(e,!0,0);let i=Xc(t.commands[0])?0:1,r=e.segments.length-1+i;return B2(e,r,t.numberOfDoubleDots)}function B2(t,n,e){let i=t,r=n,o=e;for(;o>r;){if(o-=r,i=i.parent,!i)throw new B(4005,!1);r=i.segments.length}return new xo(i,!1,r-o)}function U2(t){return zs(t[0])?t[0].outlets:{[fe]:t}}function Kb(t,n,e){if(t??=new Ve([],{}),t.segments.length===0&&t.hasChildren())return Vs(t,n,e);let i=z2(t,n,e),r=e.slice(i.commandIndex);if(i.match&&i.pathIndexo!==fe)&&t.children[fe]&&t.numberOfChildren===1&&t.children[fe].segments.length===0){let o=Vs(t.children[fe],n,e);return new Ve(t.segments,o.children)}return Object.entries(i).forEach(([o,s])=>{typeof s=="string"&&(s=[s]),s!==null&&(r[o]=Kb(t.children[o],n,s))}),Object.entries(t.children).forEach(([o,s])=>{i[o]===void 0&&(r[o]=s)}),new Ve(t.segments,r)}}function z2(t,n,e){let i=0,r=n,o={match:!1,pathIndex:0,commandIndex:0};for(;r=e.length)return o;let s=t.segments[r],d=e[i];if(zs(d))break;let u=`${d}`,h=i0&&u===void 0)break;if(u&&h&&typeof h=="object"&&h.outlets===void 0){if(!Rb(u,h,s))return o;i+=2}else{if(!Rb(u,{},s))return o;i++}r++}return{match:!0,pathIndex:r,commandIndex:i}}function Zp(t,n,e){let i=t.segments.slice(0,n),r=0;for(;r{typeof i=="string"&&(i=[i]),i!==null&&(n[e]=Zp(new Ve([],{}),0,i))}),n}function Ab(t){let n={};return Object.entries(t).forEach(([e,i])=>n[e]=`${i}`),n}function Rb(t,n,e){return t==e.path&&ti(n,e.parameters)}var js="imperative",bt=function(t){return t[t.NavigationStart=0]="NavigationStart",t[t.NavigationEnd=1]="NavigationEnd",t[t.NavigationCancel=2]="NavigationCancel",t[t.NavigationError=3]="NavigationError",t[t.RoutesRecognized=4]="RoutesRecognized",t[t.ResolveStart=5]="ResolveStart",t[t.ResolveEnd=6]="ResolveEnd",t[t.GuardsCheckStart=7]="GuardsCheckStart",t[t.GuardsCheckEnd=8]="GuardsCheckEnd",t[t.RouteConfigLoadStart=9]="RouteConfigLoadStart",t[t.RouteConfigLoadEnd=10]="RouteConfigLoadEnd",t[t.ChildActivationStart=11]="ChildActivationStart",t[t.ChildActivationEnd=12]="ChildActivationEnd",t[t.ActivationStart=13]="ActivationStart",t[t.ActivationEnd=14]="ActivationEnd",t[t.Scroll=15]="Scroll",t[t.NavigationSkipped=16]="NavigationSkipped",t}(bt||{}),_n=class{constructor(n,e){this.id=n,this.url=e}},Mo=class extends _n{constructor(n,e,i="imperative",r=null){super(n,e),this.type=bt.NavigationStart,this.navigationTrigger=i,this.restoredState=r}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}},jn=class extends _n{constructor(n,e,i){super(n,e),this.urlAfterRedirects=i,this.type=bt.NavigationEnd}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}},hn=function(t){return t[t.Redirect=0]="Redirect",t[t.SupersededByNewNavigation=1]="SupersededByNewNavigation",t[t.NoDataFromResolver=2]="NoDataFromResolver",t[t.GuardRejected=3]="GuardRejected",t}(hn||{}),Jc=function(t){return t[t.IgnoredSameUrlNavigation=0]="IgnoredSameUrlNavigation",t[t.IgnoredByUrlHandlingStrategy=1]="IgnoredByUrlHandlingStrategy",t}(Jc||{}),$i=class extends _n{constructor(n,e,i,r){super(n,e),this.reason=i,this.code=r,this.type=bt.NavigationCancel}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}},Wi=class extends _n{constructor(n,e,i,r){super(n,e),this.reason=i,this.code=r,this.type=bt.NavigationSkipped}},Hs=class extends _n{constructor(n,e,i,r){super(n,e),this.error=i,this.target=r,this.type=bt.NavigationError}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}},ed=class extends _n{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=bt.RoutesRecognized}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Xp=class extends _n{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=bt.GuardsCheckStart}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},Kp=class extends _n{constructor(n,e,i,r,o){super(n,e),this.urlAfterRedirects=i,this.state=r,this.shouldActivate=o,this.type=bt.GuardsCheckEnd}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}},Jp=class extends _n{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=bt.ResolveStart}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},ef=class extends _n{constructor(n,e,i,r){super(n,e),this.urlAfterRedirects=i,this.state=r,this.type=bt.ResolveEnd}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}},tf=class{constructor(n){this.route=n,this.type=bt.RouteConfigLoadStart}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}},nf=class{constructor(n){this.route=n,this.type=bt.RouteConfigLoadEnd}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}},rf=class{constructor(n){this.snapshot=n,this.type=bt.ChildActivationStart}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},of=class{constructor(n){this.snapshot=n,this.type=bt.ChildActivationEnd}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},sf=class{constructor(n){this.snapshot=n,this.type=bt.ActivationStart}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},af=class{constructor(n){this.snapshot=n,this.type=bt.ActivationEnd}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}},td=class{constructor(n,e,i){this.routerEvent=n,this.position=e,this.anchor=i,this.type=bt.Scroll}toString(){let n=this.position?`${this.position[0]}, ${this.position[1]}`:null;return`Scroll(anchor: '${this.anchor}', position: '${n}')`}},$s=class{},Ws=class{constructor(n){this.url=n}};var lf=class{constructor(){this.outlet=null,this.route=null,this.injector=null,this.children=new Xs,this.attachRef=null}},Xs=(()=>{class t{constructor(){this.contexts=new Map}onChildOutletCreated(e,i){let r=this.getOrCreateContext(e);r.outlet=i,this.contexts.set(e,r)}onChildOutletDestroyed(e){let i=this.getContext(e);i&&(i.outlet=null,i.attachRef=null)}onOutletDeactivated(){let e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let i=this.getContext(e);return i||(i=new lf,this.contexts.set(e,i)),i}getContext(e){return this.contexts.get(e)||null}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),nd=class{constructor(n){this._root=n}get root(){return this._root.value}parent(n){let e=this.pathFromRoot(n);return e.length>1?e[e.length-2]:null}children(n){let e=cf(n,this._root);return e?e.children.map(i=>i.value):[]}firstChild(n){let e=cf(n,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(n){let e=df(n,this._root);return e.length<2?[]:e[e.length-2].children.map(r=>r.value).filter(r=>r!==n)}pathFromRoot(n){return df(n,this._root).map(e=>e.value)}};function cf(t,n){if(t===n.value)return n;for(let e of n.children){let i=cf(t,e);if(i)return i}return null}function df(t,n){if(t===n.value)return[n];for(let e of n.children){let i=df(t,e);if(i.length)return i.unshift(n),i}return[]}var un=class{constructor(n,e){this.value=n,this.children=e}toString(){return`TreeNode(${this.value})`}};function wo(t){let n={};return t&&t.children.forEach(e=>n[e.value.outlet]=e),n}var id=class extends nd{constructor(n,e){super(n),this.snapshot=e,yf(this,n)}toString(){return this.snapshot.toString()}};function Jb(t){let n=$2(t),e=new Ge([new Sr("",{})]),i=new Ge({}),r=new Ge({}),o=new Ge({}),s=new Ge(""),d=new Mr(e,i,o,s,r,fe,t,n.root);return d.snapshot=n.root,new id(new un(d,[]),n)}function $2(t){let n={},e={},i={},r="",o=new qs([],n,i,r,e,fe,t,null,{});return new rd("",new un(o,[]))}var Mr=class{constructor(n,e,i,r,o,s,d,u){this.urlSubject=n,this.paramsSubject=e,this.queryParamsSubject=i,this.fragmentSubject=r,this.dataSubject=o,this.outlet=s,this.component=d,this._futureSnapshot=u,this.title=this.dataSubject?.pipe(Y(h=>h[Ys]))??j(void 0),this.url=n,this.params=e,this.queryParams=i,this.fragment=r,this.data=o}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap??=this.params.pipe(Y(n=>So(n))),this._paramMap}get queryParamMap(){return this._queryParamMap??=this.queryParams.pipe(Y(n=>So(n))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}};function bf(t,n,e="emptyOnly"){let i,{routeConfig:r}=t;return n!==null&&(e==="always"||r?.path===""||!n.component&&!n.routeConfig?.loadComponent)?i={params:A(A({},n.params),t.params),data:A(A({},n.data),t.data),resolve:A(A(A(A({},t.data),n.data),r?.data),t._resolvedData)}:i={params:A({},t.params),data:A({},t.data),resolve:A(A({},t.data),t._resolvedData??{})},r&&ty(r)&&(i.resolve[Ys]=r.title),i}var qs=class{get title(){return this.data?.[Ys]}constructor(n,e,i,r,o,s,d,u,h){this.url=n,this.params=e,this.queryParams=i,this.fragment=r,this.data=o,this.outlet=s,this.component=d,this.routeConfig=u,this._resolve=h}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??=So(this.params),this._paramMap}get queryParamMap(){return this._queryParamMap??=So(this.queryParams),this._queryParamMap}toString(){let n=this.url.map(i=>i.toString()).join("/"),e=this.routeConfig?this.routeConfig.path:"";return`Route(url:'${n}', path:'${e}')`}},rd=class extends nd{constructor(n,e){super(e),this.url=n,yf(this,e)}toString(){return ey(this._root)}};function yf(t,n){n.value._routerState=t,n.children.forEach(e=>yf(t,e))}function ey(t){let n=t.children.length>0?` { ${t.children.map(ey).join(", ")} } `:"";return`${t.value}${n}`}function $p(t){if(t.snapshot){let n=t.snapshot,e=t._futureSnapshot;t.snapshot=e,ti(n.queryParams,e.queryParams)||t.queryParamsSubject.next(e.queryParams),n.fragment!==e.fragment&&t.fragmentSubject.next(e.fragment),ti(n.params,e.params)||t.paramsSubject.next(e.params),b2(n.url,e.url)||t.urlSubject.next(e.url),ti(n.data,e.data)||t.dataSubject.next(e.data)}else t.snapshot=t._futureSnapshot,t.dataSubject.next(t._futureSnapshot.data)}function uf(t,n){let e=ti(t.params,n.params)&&C2(t.url,n.url),i=!t.parent!=!n.parent;return e&&!i&&(!t.parent||uf(t.parent,n.parent))}function ty(t){return typeof t.title=="string"||t.title===null}var wf=(()=>{class t{constructor(){this.activated=null,this._activatedRoute=null,this.name=fe,this.activateEvents=new de,this.deactivateEvents=new de,this.attachEvents=new de,this.detachEvents=new de,this.parentContexts=R(Xs),this.location=R(cn),this.changeDetector=R(Re),this.environmentInjector=R(Rt),this.inputBinder=R(cd,{optional:!0}),this.supportsBindingToComponentInputs=!0}get activatedComponentRef(){return this.activated}ngOnChanges(e){if(e.name){let{firstChange:i,previousValue:r}=e.name;if(i)return;this.isTrackedInParentContexts(r)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(r)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name),this.inputBinder?.unsubscribeFromRouteData(this)}isTrackedInParentContexts(e){return this.parentContexts.getContext(e)?.outlet===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;let e=this.parentContexts.getContext(this.name);e?.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new B(4012,!1);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new B(4012,!1);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new B(4012,!1);this.location.detach();let e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,i){this.activated=e,this._activatedRoute=i,this.location.insert(e.hostView),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){let e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,i){if(this.isActivated)throw new B(4013,!1);this._activatedRoute=e;let r=this.location,s=e.snapshot.component,d=this.parentContexts.getOrCreateContext(this.name).children,u=new hf(e,d,r.injector);this.activated=r.createComponent(s,{index:r.length,injector:u,environmentInjector:i??this.environmentInjector}),this.changeDetector.markForCheck(),this.inputBinder?.bindActivatedRouteToOutletComponent(this),this.activateEvents.emit(this.activated.instance)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275dir=ve({type:t,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[Mt]})}}return t})(),hf=class t{__ngOutletInjector(n){return new t(this.route,this.childContexts,n)}constructor(n,e,i){this.route=n,this.childContexts=e,this.parent=i}get(n,e){return n===Mr?this.route:n===Xs?this.childContexts:this.parent.get(n,e)}},cd=new N(""),Fb=(()=>{class t{constructor(){this.outletDataSubscriptions=new Map}bindActivatedRouteToOutletComponent(e){this.unsubscribeFromRouteData(e),this.subscribeToRouteData(e)}unsubscribeFromRouteData(e){this.outletDataSubscriptions.get(e)?.unsubscribe(),this.outletDataSubscriptions.delete(e)}subscribeToRouteData(e){let{activatedRoute:i}=e,r=ir([i.queryParams,i.params,i.data]).pipe(Ct(([o,s,d],u)=>(d=A(A(A({},o),s),d),u===0?j(d):Promise.resolve(d)))).subscribe(o=>{if(!e.isActivated||!e.activatedComponentRef||e.activatedRoute!==i||i.component===null){this.unsubscribeFromRouteData(e);return}let s=f_(i.component);if(!s){this.unsubscribeFromRouteData(e);return}for(let{templateName:d}of s.inputs)e.activatedComponentRef.setInput(d,o[d])});this.outletDataSubscriptions.set(e,r)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})();function W2(t,n,e){let i=Gs(t,n._root,e?e._root:void 0);return new id(i,n)}function Gs(t,n,e){if(e&&t.shouldReuseRoute(n.value,e.value.snapshot)){let i=e.value;i._futureSnapshot=n.value;let r=q2(t,n,e);return new un(i,r)}else{if(t.shouldAttach(n.value)){let o=t.retrieve(n.value);if(o!==null){let s=o.route;return s.value._futureSnapshot=n.value,s.children=n.children.map(d=>Gs(t,d)),s}}let i=G2(n.value),r=n.children.map(o=>Gs(t,o));return new un(i,r)}}function q2(t,n,e){return n.children.map(i=>{for(let r of e.children)if(t.shouldReuseRoute(i.value,r.value.snapshot))return Gs(t,i,r);return Gs(t,i)})}function G2(t){return new Mr(new Ge(t.url),new Ge(t.params),new Ge(t.queryParams),new Ge(t.fragment),new Ge(t.data),t.outlet,t.component,t)}var ny="ngNavigationCancelingError";function iy(t,n){let{redirectTo:e,navigationBehaviorOptions:i}=Eo(n)?{redirectTo:n,navigationBehaviorOptions:void 0}:n,r=ry(!1,hn.Redirect);return r.url=e,r.navigationBehaviorOptions=i,r}function ry(t,n){let e=new Error(`NavigationCancelingError: ${t||""}`);return e[ny]=!0,e.cancellationCode=n,e}function Q2(t){return oy(t)&&Eo(t.url)}function oy(t){return!!t&&t[ny]}var Y2=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=$({type:t,selectors:[["ng-component"]],standalone:!0,features:[ye],decls:1,vars:0,template:function(i,r){i&1&&v(0,"router-outlet")},dependencies:[wf],encapsulation:2})}}return t})();function Z2(t,n){return t.providers&&!t._injector&&(t._injector=ic(t.providers,n,`Route: ${t.path}`)),t._injector??n}function xf(t){let n=t.children&&t.children.map(xf),e=n?ke(A({},t),{children:n}):A({},t);return!e.component&&!e.loadComponent&&(n||e.loadChildren)&&e.outlet&&e.outlet!==fe&&(e.component=Y2),e}function ni(t){return t.outlet||fe}function X2(t,n){let e=t.filter(i=>ni(i)===n);return e.push(...t.filter(i=>ni(i)!==n)),e}function Ks(t){if(!t)return null;if(t.routeConfig?._injector)return t.routeConfig._injector;for(let n=t.parent;n;n=n.parent){let e=n.routeConfig;if(e?._loadedInjector)return e._loadedInjector;if(e?._injector)return e._injector}return null}var K2=(t,n,e,i)=>Y(r=>(new pf(n,r.targetRouterState,r.currentRouterState,e,i).activate(t),r)),pf=class{constructor(n,e,i,r,o){this.routeReuseStrategy=n,this.futureState=e,this.currState=i,this.forwardEvent=r,this.inputBindingEnabled=o}activate(n){let e=this.futureState._root,i=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,i,n),$p(this.futureState.root),this.activateChildRoutes(e,i,n)}deactivateChildRoutes(n,e,i){let r=wo(e);n.children.forEach(o=>{let s=o.value.outlet;this.deactivateRoutes(o,r[s],i),delete r[s]}),Object.values(r).forEach(o=>{this.deactivateRouteAndItsChildren(o,i)})}deactivateRoutes(n,e,i){let r=n.value,o=e?e.value:null;if(r===o)if(r.component){let s=i.getContext(r.outlet);s&&this.deactivateChildRoutes(n,e,s.children)}else this.deactivateChildRoutes(n,e,i);else o&&this.deactivateRouteAndItsChildren(e,i)}deactivateRouteAndItsChildren(n,e){n.value.component&&this.routeReuseStrategy.shouldDetach(n.value.snapshot)?this.detachAndStoreRouteSubtree(n,e):this.deactivateRouteAndOutlet(n,e)}detachAndStoreRouteSubtree(n,e){let i=e.getContext(n.value.outlet),r=i&&n.value.component?i.children:e,o=wo(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,r);if(i&&i.outlet){let s=i.outlet.detach(),d=i.children.onOutletDeactivated();this.routeReuseStrategy.store(n.value.snapshot,{componentRef:s,route:n,contexts:d})}}deactivateRouteAndOutlet(n,e){let i=e.getContext(n.value.outlet),r=i&&n.value.component?i.children:e,o=wo(n);for(let s of Object.values(o))this.deactivateRouteAndItsChildren(s,r);i&&(i.outlet&&(i.outlet.deactivate(),i.children.onOutletDeactivated()),i.attachRef=null,i.route=null)}activateChildRoutes(n,e,i){let r=wo(e);n.children.forEach(o=>{this.activateRoutes(o,r[o.value.outlet],i),this.forwardEvent(new af(o.value.snapshot))}),n.children.length&&this.forwardEvent(new of(n.value.snapshot))}activateRoutes(n,e,i){let r=n.value,o=e?e.value:null;if($p(r),r===o)if(r.component){let s=i.getOrCreateContext(r.outlet);this.activateChildRoutes(n,e,s.children)}else this.activateChildRoutes(n,e,i);else if(r.component){let s=i.getOrCreateContext(r.outlet);if(this.routeReuseStrategy.shouldAttach(r.snapshot)){let d=this.routeReuseStrategy.retrieve(r.snapshot);this.routeReuseStrategy.store(r.snapshot,null),s.children.onOutletReAttached(d.contexts),s.attachRef=d.componentRef,s.route=d.route.value,s.outlet&&s.outlet.attach(d.componentRef,d.route.value),$p(d.route.value),this.activateChildRoutes(n,null,s.children)}else{let d=Ks(r.snapshot);s.attachRef=null,s.route=r,s.injector=d,s.outlet&&s.outlet.activateWith(r,s.injector),this.activateChildRoutes(n,null,s.children)}}else this.activateChildRoutes(n,null,i)}},od=class{constructor(n){this.path=n,this.route=this.path[this.path.length-1]}},Co=class{constructor(n,e){this.component=n,this.route=e}};function J2(t,n,e){let i=t._root,r=n?n._root:null;return Ns(i,r,e,[i.value])}function eP(t){let n=t.routeConfig?t.routeConfig.canActivateChild:null;return!n||n.length===0?null:{node:t,guards:n}}function Do(t,n){let e=Symbol(),i=n.get(t,e);return i===e?typeof t=="function"&&!Fg(t)?t:n.get(t):i}function Ns(t,n,e,i,r={canDeactivateChecks:[],canActivateChecks:[]}){let o=wo(n);return t.children.forEach(s=>{tP(s,o[s.value.outlet],e,i.concat([s.value]),r),delete o[s.value.outlet]}),Object.entries(o).forEach(([s,d])=>Bs(d,e.getContext(s),r)),r}function tP(t,n,e,i,r={canDeactivateChecks:[],canActivateChecks:[]}){let o=t.value,s=n?n.value:null,d=e?e.getContext(t.value.outlet):null;if(s&&o.routeConfig===s.routeConfig){let u=nP(s,o,o.routeConfig.runGuardsAndResolvers);u?r.canActivateChecks.push(new od(i)):(o.data=s.data,o._resolvedData=s._resolvedData),o.component?Ns(t,n,d?d.children:null,i,r):Ns(t,n,e,i,r),u&&d&&d.outlet&&d.outlet.isActivated&&r.canDeactivateChecks.push(new Co(d.outlet.component,s))}else s&&Bs(n,d,r),r.canActivateChecks.push(new od(i)),o.component?Ns(t,null,d?d.children:null,i,r):Ns(t,null,e,i,r);return r}function nP(t,n,e){if(typeof e=="function")return e(t,n);switch(e){case"pathParamsChange":return!Er(t.url,n.url);case"pathParamsOrQueryParamsChange":return!Er(t.url,n.url)||!ti(t.queryParams,n.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!uf(t,n)||!ti(t.queryParams,n.queryParams);case"paramsChange":default:return!uf(t,n)}}function Bs(t,n,e){let i=wo(t),r=t.value;Object.entries(i).forEach(([o,s])=>{r.component?n?Bs(s,n.children.getContext(o),e):Bs(s,null,e):Bs(s,n,e)}),r.component?n&&n.outlet&&n.outlet.isActivated?e.canDeactivateChecks.push(new Co(n.outlet.component,r)):e.canDeactivateChecks.push(new Co(null,r)):e.canDeactivateChecks.push(new Co(null,r))}function Js(t){return typeof t=="function"}function iP(t){return typeof t=="boolean"}function rP(t){return t&&Js(t.canLoad)}function oP(t){return t&&Js(t.canActivate)}function sP(t){return t&&Js(t.canActivateChild)}function aP(t){return t&&Js(t.canDeactivate)}function lP(t){return t&&Js(t.canMatch)}function sy(t){return t instanceof Dn||t?.name==="EmptyError"}var Gc=Symbol("INITIAL_VALUE");function Io(){return Ct(t=>ir(t.map(n=>n.pipe(ht(1),Gn(Gc)))).pipe(Y(n=>{for(let e of n)if(e!==!0){if(e===Gc)return Gc;if(e===!1||e instanceof Hi)return e}return!0}),Ye(n=>n!==Gc),ht(1)))}function cP(t,n){return rt(e=>{let{targetSnapshot:i,currentSnapshot:r,guards:{canActivateChecks:o,canDeactivateChecks:s}}=e;return s.length===0&&o.length===0?j(ke(A({},e),{guardsResult:!0})):dP(s,i,r,t).pipe(rt(d=>d&&iP(d)?uP(i,o,t,n):j(d)),Y(d=>ke(A({},e),{guardsResult:d})))})}function dP(t,n,e,i){return Ue(t).pipe(rt(r=>gP(r.component,r.route,e,n,i)),qn(r=>r!==!0,!0))}function uP(t,n,e,i){return Ue(n).pipe(ri(r=>xi(pP(r.route.parent,i),hP(r.route,i),mP(t,r.path,e),fP(t,r.route,e))),qn(r=>r!==!0,!0))}function hP(t,n){return t!==null&&n&&n(new sf(t)),j(!0)}function pP(t,n){return t!==null&&n&&n(new rf(t)),j(!0)}function fP(t,n,e){let i=n.routeConfig?n.routeConfig.canActivate:null;if(!i||i.length===0)return j(!0);let r=i.map(o=>Ci(()=>{let s=Ks(n)??e,d=Do(o,s),u=oP(d)?d.canActivate(n,t):Fn(s,()=>d(n,t));return Gi(u).pipe(qn())}));return j(r).pipe(Io())}function mP(t,n,e){let i=n[n.length-1],o=n.slice(0,n.length-1).reverse().map(s=>eP(s)).filter(s=>s!==null).map(s=>Ci(()=>{let d=s.guards.map(u=>{let h=Ks(s.node)??e,p=Do(u,h),m=sP(p)?p.canActivateChild(i,t):Fn(h,()=>p(i,t));return Gi(m).pipe(qn())});return j(d).pipe(Io())}));return j(o).pipe(Io())}function gP(t,n,e,i,r){let o=n&&n.routeConfig?n.routeConfig.canDeactivate:null;if(!o||o.length===0)return j(!0);let s=o.map(d=>{let u=Ks(n)??r,h=Do(d,u),p=aP(h)?h.canDeactivate(t,n,e,i):Fn(u,()=>h(t,n,e,i));return Gi(p).pipe(qn())});return j(s).pipe(Io())}function vP(t,n,e,i){let r=n.canLoad;if(r===void 0||r.length===0)return j(!0);let o=r.map(s=>{let d=Do(s,t),u=rP(d)?d.canLoad(n,e):Fn(t,()=>d(n,e));return Gi(u)});return j(o).pipe(Io(),ay(i))}function ay(t){return zd(Le(n=>{if(Eo(n))throw iy(t,n)}),Y(n=>n===!0))}function _P(t,n,e,i){let r=n.canMatch;if(!r||r.length===0)return j(!0);let o=r.map(s=>{let d=Do(s,t),u=lP(d)?d.canMatch(n,e):Fn(t,()=>d(n,e));return Gi(u)});return j(o).pipe(Io(),ay(i))}var Qs=class{constructor(n){this.segmentGroup=n||null}},sd=class extends Error{constructor(n){super(),this.urlTree=n}};function yo(t){return xt(new Qs(t))}function bP(t){return xt(new B(4e3,!1))}function yP(t){return xt(ry(!1,hn.GuardRejected))}var ff=class{constructor(n,e){this.urlSerializer=n,this.urlTree=e}lineralizeSegments(n,e){let i=[],r=e.root;for(;;){if(i=i.concat(r.segments),r.numberOfChildren===0)return j(i);if(r.numberOfChildren>1||!r.children[fe])return bP(n.redirectTo);r=r.children[fe]}}applyRedirectCommands(n,e,i){let r=this.applyRedirectCreateUrlTree(e,this.urlSerializer.parse(e),n,i);if(e.startsWith("/"))throw new sd(r);return r}applyRedirectCreateUrlTree(n,e,i,r){let o=this.createSegmentGroup(n,e.root,i,r);return new Hi(o,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(n,e){let i={};return Object.entries(n).forEach(([r,o])=>{if(typeof o=="string"&&o.startsWith(":")){let d=o.substring(1);i[r]=e[d]}else i[r]=o}),i}createSegmentGroup(n,e,i,r){let o=this.createSegments(n,e.segments,i,r),s={};return Object.entries(e.children).forEach(([d,u])=>{s[d]=this.createSegmentGroup(n,u,i,r)}),new Ve(o,s)}createSegments(n,e,i,r){return e.map(o=>o.path.startsWith(":")?this.findPosParam(n,o,r):this.findOrReturn(o,i))}findPosParam(n,e,i){let r=i[e.path.substring(1)];if(!r)throw new B(4001,!1);return r}findOrReturn(n,e){let i=0;for(let r of e){if(r.path===n.path)return e.splice(i),r;i++}return n}},mf={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function wP(t,n,e,i,r){let o=Cf(t,n,e);return o.matched?(i=Z2(n,i),_P(i,n,e,r).pipe(Y(s=>s===!0?o:A({},mf)))):j(o)}function Cf(t,n,e){if(n.path==="**")return xP(e);if(n.path==="")return n.pathMatch==="full"&&(t.hasChildren()||e.length>0)?A({},mf):{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};let r=(n.matcher||_2)(e,t,n);if(!r)return A({},mf);let o={};Object.entries(r.posParams??{}).forEach(([d,u])=>{o[d]=u.path});let s=r.consumed.length>0?A(A({},o),r.consumed[r.consumed.length-1].parameters):o;return{matched:!0,consumedSegments:r.consumed,remainingSegments:e.slice(r.consumed.length),parameters:s,positionalParamSegments:r.posParams??{}}}function xP(t){return{matched:!0,parameters:t.length>0?Bb(t).parameters:{},consumedSegments:t,remainingSegments:[],positionalParamSegments:{}}}function Nb(t,n,e,i){return e.length>0&&EP(t,e,i)?{segmentGroup:new Ve(n,SP(i,new Ve(e,t.children))),slicedSegments:[]}:e.length===0&&MP(t,e,i)?{segmentGroup:new Ve(t.segments,CP(t,e,i,t.children)),slicedSegments:e}:{segmentGroup:new Ve(t.segments,t.children),slicedSegments:e}}function CP(t,n,e,i){let r={};for(let o of e)if(dd(t,n,o)&&!i[ni(o)]){let s=new Ve([],{});r[ni(o)]=s}return A(A({},i),r)}function SP(t,n){let e={};e[fe]=n;for(let i of t)if(i.path===""&&ni(i)!==fe){let r=new Ve([],{});e[ni(i)]=r}return e}function EP(t,n,e){return e.some(i=>dd(t,n,i)&&ni(i)!==fe)}function MP(t,n,e){return e.some(i=>dd(t,n,i))}function dd(t,n,e){return(t.hasChildren()||n.length>0)&&e.pathMatch==="full"?!1:e.path===""}function IP(t,n,e,i){return ni(t)!==i&&(i===fe||!dd(n,e,t))?!1:Cf(n,t,e).matched}function DP(t,n,e){return n.length===0&&!t.children[e]}var gf=class{};function PP(t,n,e,i,r,o,s="emptyOnly"){return new vf(t,n,e,i,r,s,o).recognize()}var kP=31,vf=class{constructor(n,e,i,r,o,s,d){this.injector=n,this.configLoader=e,this.rootComponentType=i,this.config=r,this.urlTree=o,this.paramsInheritanceStrategy=s,this.urlSerializer=d,this.applyRedirects=new ff(this.urlSerializer,this.urlTree),this.absoluteRedirectCount=0,this.allowRedirects=!0}noMatchError(n){return new B(4002,`'${n.segmentGroup}'`)}recognize(){let n=Nb(this.urlTree.root,[],[],this.config).segmentGroup;return this.match(n).pipe(Y(e=>{let i=new qs([],Object.freeze({}),Object.freeze(A({},this.urlTree.queryParams)),this.urlTree.fragment,{},fe,this.rootComponentType,null,{}),r=new un(i,e),o=new rd("",r),s=L2(i,[],this.urlTree.queryParams,this.urlTree.fragment);return s.queryParams=this.urlTree.queryParams,o.url=this.urlSerializer.serialize(s),this.inheritParamsAndData(o._root,null),{state:o,tree:s}}))}match(n){return this.processSegmentGroup(this.injector,this.config,n,fe).pipe(Ke(i=>{if(i instanceof sd)return this.urlTree=i.urlTree,this.match(i.urlTree.root);throw i instanceof Qs?this.noMatchError(i):i}))}inheritParamsAndData(n,e){let i=n.value,r=bf(i,e,this.paramsInheritanceStrategy);i.params=Object.freeze(r.params),i.data=Object.freeze(r.data),n.children.forEach(o=>this.inheritParamsAndData(o,i))}processSegmentGroup(n,e,i,r){return i.segments.length===0&&i.hasChildren()?this.processChildren(n,e,i):this.processSegment(n,e,i,i.segments,r,!0).pipe(Y(o=>o instanceof un?[o]:[]))}processChildren(n,e,i){let r=[];for(let o of Object.keys(i.children))o==="primary"?r.unshift(o):r.push(o);return Ue(r).pipe(ri(o=>{let s=i.children[o],d=X2(e,o);return this.processSegmentGroup(n,d,s,o)}),Kd((o,s)=>(o.push(...s),o)),Si(null),Xd(),rt(o=>{if(o===null)return yo(i);let s=ly(o);return OP(s),j(s)}))}processSegment(n,e,i,r,o,s){return Ue(e).pipe(ri(d=>this.processSegmentAgainstRoute(d._injector??n,e,d,i,r,o,s).pipe(Ke(u=>{if(u instanceof Qs)return j(null);throw u}))),qn(d=>!!d),Ke(d=>{if(sy(d))return DP(i,r,o)?j(new gf):yo(i);throw d}))}processSegmentAgainstRoute(n,e,i,r,o,s,d){return IP(i,r,o,s)?i.redirectTo===void 0?this.matchSegmentAgainstRoute(n,r,i,o,s):this.allowRedirects&&d?this.expandSegmentAgainstRouteUsingRedirect(n,r,e,i,o,s):yo(r):yo(r)}expandSegmentAgainstRouteUsingRedirect(n,e,i,r,o,s){let{matched:d,consumedSegments:u,positionalParamSegments:h,remainingSegments:p}=Cf(e,r,o);if(!d)return yo(e);r.redirectTo.startsWith("/")&&(this.absoluteRedirectCount++,this.absoluteRedirectCount>kP&&(this.allowRedirects=!1));let m=this.applyRedirects.applyRedirectCommands(u,r.redirectTo,h);return this.applyRedirects.lineralizeSegments(r,m).pipe(rt(b=>this.processSegment(n,i,e,b.concat(p),s,!1)))}matchSegmentAgainstRoute(n,e,i,r,o){let s=wP(e,i,r,n,this.urlSerializer);return i.path==="**"&&(e.children={}),s.pipe(Ct(d=>d.matched?(n=i._injector??n,this.getChildConfig(n,i,r).pipe(Ct(({routes:u})=>{let h=i._loadedInjector??n,{consumedSegments:p,remainingSegments:m,parameters:b}=d,w=new qs(p,b,Object.freeze(A({},this.urlTree.queryParams)),this.urlTree.fragment,AP(i),ni(i),i.component??i._loadedComponent??null,i,RP(i)),{segmentGroup:S,slicedSegments:D}=Nb(e,p,m,u);if(D.length===0&&S.hasChildren())return this.processChildren(h,u,S).pipe(Y(L=>L===null?null:new un(w,L)));if(u.length===0&&D.length===0)return j(new un(w,[]));let O=ni(i)===o;return this.processSegment(h,u,S,D,O?fe:o,!0).pipe(Y(L=>new un(w,L instanceof un?[L]:[])))}))):yo(e)))}getChildConfig(n,e,i){return e.children?j({routes:e.children,injector:n}):e.loadChildren?e._loadedRoutes!==void 0?j({routes:e._loadedRoutes,injector:e._loadedInjector}):vP(n,e,i,this.urlSerializer).pipe(rt(r=>r?this.configLoader.loadChildren(n,e).pipe(Le(o=>{e._loadedRoutes=o.routes,e._loadedInjector=o.injector})):yP(e))):j({routes:[],injector:n})}};function OP(t){t.sort((n,e)=>n.value.outlet===fe?-1:e.value.outlet===fe?1:n.value.outlet.localeCompare(e.value.outlet))}function TP(t){let n=t.value.routeConfig;return n&&n.path===""}function ly(t){let n=[],e=new Set;for(let i of t){if(!TP(i)){n.push(i);continue}let r=n.find(o=>i.value.routeConfig===o.value.routeConfig);r!==void 0?(r.children.push(...i.children),e.add(r)):n.push(i)}for(let i of e){let r=ly(i.children);n.push(new un(i.value,r))}return n.filter(i=>!e.has(i))}function AP(t){return t.data||{}}function RP(t){return t.resolve||{}}function FP(t,n,e,i,r,o){return rt(s=>PP(t,n,e,i,s.extractedUrl,r,o).pipe(Y(({state:d,tree:u})=>ke(A({},s),{targetSnapshot:d,urlAfterRedirects:u}))))}function NP(t,n){return rt(e=>{let{targetSnapshot:i,guards:{canActivateChecks:r}}=e;if(!r.length)return j(e);let o=new Set(r.map(u=>u.route)),s=new Set;for(let u of o)if(!s.has(u))for(let h of cy(u))s.add(h);let d=0;return Ue(s).pipe(ri(u=>o.has(u)?LP(u,i,t,n):(u.data=bf(u,u.parent,t).resolve,j(void 0))),Le(()=>d++),Gr(1),rt(u=>d===s.size?j(e):Ut))})}function cy(t){let n=t.children.map(e=>cy(e)).flat();return[t,...n]}function LP(t,n,e,i){let r=t.routeConfig,o=t._resolve;return r?.title!==void 0&&!ty(r)&&(o[Ys]=r.title),VP(o,t,n,i).pipe(Y(s=>(t._resolvedData=s,t.data=bf(t,t.parent,e).resolve,null)))}function VP(t,n,e,i){let r=Gp(t);if(r.length===0)return j({});let o={};return Ue(r).pipe(rt(s=>jP(t[s],n,e,i).pipe(qn(),Le(d=>{o[s]=d}))),Gr(1),Zd(o),Ke(s=>sy(s)?Ut:xt(s)))}function jP(t,n,e,i){let r=Ks(n)??i,o=Do(t,r),s=o.resolve?o.resolve(n,e):Fn(r,()=>o(n,e));return Gi(s)}function Wp(t){return Ct(n=>{let e=t(n);return e?Ue(e).pipe(Y(()=>n)):j(n)})}var dy=(()=>{class t{buildTitle(e){let i,r=e.root;for(;r!==void 0;)i=this.getResolvedTitleForRoute(r)??i,r=r.children.find(o=>o.outlet===fe);return i}getResolvedTitleForRoute(e){return e.data[Ys]}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:()=>R(BP),providedIn:"root"})}}return t})(),BP=(()=>{class t extends dy{constructor(e){super(),this.title=e}updateTitle(e){let i=this.buildTitle(e);i!==void 0&&this.title.setTitle(i)}static{this.\u0275fac=function(i){return new(i||t)(I(Pc))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),ea=new N("",{providedIn:"root",factory:()=>({})}),ad=new N(""),Sf=(()=>{class t{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=R(hc)}loadComponent(e){if(this.componentLoaders.get(e))return this.componentLoaders.get(e);if(e._loadedComponent)return j(e._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(e);let i=Gi(e.loadComponent()).pipe(Y(uy),Le(o=>{this.onLoadEndListener&&this.onLoadEndListener(e),e._loadedComponent=o}),At(()=>{this.componentLoaders.delete(e)})),r=new Hr(i,()=>new ue).pipe(zr());return this.componentLoaders.set(e,r),r}loadChildren(e,i){if(this.childrenLoaders.get(i))return this.childrenLoaders.get(i);if(i._loadedRoutes)return j({routes:i._loadedRoutes,injector:i._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(i);let o=UP(i,this.compiler,e,this.onLoadEndListener).pipe(At(()=>{this.childrenLoaders.delete(i)})),s=new Hr(o,()=>new ue).pipe(zr());return this.childrenLoaders.set(i,s),s}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function UP(t,n,e,i){return Gi(t.loadChildren()).pipe(Y(uy),rt(r=>r instanceof rs||Array.isArray(r)?j(r):Ue(n.compileModuleAsync(r))),Y(r=>{i&&i(t);let o,s,d=!1;return Array.isArray(r)?(s=r,d=!0):(o=r.create(e).injector,s=o.get(ad,[],{optional:!0,self:!0}).flat()),{routes:s.map(xf),injector:o}}))}function zP(t){return t&&typeof t=="object"&&"default"in t}function uy(t){return zP(t)?t.default:t}var Ef=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:()=>R(HP),providedIn:"root"})}}return t})(),HP=(()=>{class t{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,i){return e}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),hy=new N(""),py=new N("");function $P(t,n,e){let i=t.get(py),r=t.get(le);return t.get(Z).runOutsideAngular(()=>{if(!r.startViewTransition||i.skipNextTransition)return i.skipNextTransition=!1,new Promise(h=>setTimeout(h));let o,s=new Promise(h=>{o=h}),d=r.startViewTransition(()=>(o(),WP(t))),{onViewTransitionCreated:u}=i;return u&&Fn(t,()=>u({transition:d,from:n,to:e})),s})}function WP(t){return new Promise(n=>{nc(n,{injector:t})})}var Mf=(()=>{class t{get hasRequestedNavigation(){return this.navigationId!==0}constructor(){this.currentNavigation=null,this.currentTransition=null,this.lastSuccessfulNavigation=null,this.events=new ue,this.transitionAbortSubject=new ue,this.configLoader=R(Sf),this.environmentInjector=R(Rt),this.urlSerializer=R(Zs),this.rootContexts=R(Xs),this.location=R(ei),this.inputBindingEnabled=R(cd,{optional:!0})!==null,this.titleStrategy=R(dy),this.options=R(ea,{optional:!0})||{},this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlHandlingStrategy=R(Ef),this.createViewTransition=R(hy,{optional:!0}),this.navigationId=0,this.afterPreactivation=()=>j(void 0),this.rootComponentType=null;let e=r=>this.events.next(new tf(r)),i=r=>this.events.next(new nf(r));this.configLoader.onLoadEndListener=i,this.configLoader.onLoadStartListener=e}complete(){this.transitions?.complete()}handleNavigationRequest(e){let i=++this.navigationId;this.transitions?.next(ke(A(A({},this.transitions.value),e),{id:i}))}setupNavigations(e,i,r){return this.transitions=new Ge({id:0,currentUrlTree:i,currentRawUrl:i,extractedUrl:this.urlHandlingStrategy.extract(i),urlAfterRedirects:this.urlHandlingStrategy.extract(i),rawUrl:i,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:js,restoredState:null,currentSnapshot:r.snapshot,targetSnapshot:null,currentRouterState:r,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(Ye(o=>o.id!==0),Y(o=>ke(A({},o),{extractedUrl:this.urlHandlingStrategy.extract(o.rawUrl)})),Ct(o=>{let s=!1,d=!1;return j(o).pipe(Ct(u=>{if(this.navigationId>o.id)return this.cancelNavigationTransition(o,"",hn.SupersededByNewNavigation),Ut;this.currentTransition=o,this.currentNavigation={id:u.id,initialUrl:u.rawUrl,extractedUrl:u.extractedUrl,trigger:u.source,extras:u.extras,previousNavigation:this.lastSuccessfulNavigation?ke(A({},this.lastSuccessfulNavigation),{previousNavigation:null}):null};let h=!e.navigated||this.isUpdatingInternalState()||this.isUpdatedBrowserUrl(),p=u.extras.onSameUrlNavigation??e.onSameUrlNavigation;if(!h&&p!=="reload"){let m="";return this.events.next(new Wi(u.id,this.urlSerializer.serialize(u.rawUrl),m,Jc.IgnoredSameUrlNavigation)),u.resolve(null),Ut}if(this.urlHandlingStrategy.shouldProcessUrl(u.rawUrl))return j(u).pipe(Ct(m=>{let b=this.transitions?.getValue();return this.events.next(new Mo(m.id,this.urlSerializer.serialize(m.extractedUrl),m.source,m.restoredState)),b!==this.transitions?.getValue()?Ut:Promise.resolve(m)}),FP(this.environmentInjector,this.configLoader,this.rootComponentType,e.config,this.urlSerializer,this.paramsInheritanceStrategy),Le(m=>{o.targetSnapshot=m.targetSnapshot,o.urlAfterRedirects=m.urlAfterRedirects,this.currentNavigation=ke(A({},this.currentNavigation),{finalUrl:m.urlAfterRedirects});let b=new ed(m.id,this.urlSerializer.serialize(m.extractedUrl),this.urlSerializer.serialize(m.urlAfterRedirects),m.targetSnapshot);this.events.next(b)}));if(h&&this.urlHandlingStrategy.shouldProcessUrl(u.currentRawUrl)){let{id:m,extractedUrl:b,source:w,restoredState:S,extras:D}=u,O=new Mo(m,this.urlSerializer.serialize(b),w,S);this.events.next(O);let L=Jb(this.rootComponentType).snapshot;return this.currentTransition=o=ke(A({},u),{targetSnapshot:L,urlAfterRedirects:b,extras:ke(A({},D),{skipLocationChange:!1,replaceUrl:!1})}),this.currentNavigation.finalUrl=b,j(o)}else{let m="";return this.events.next(new Wi(u.id,this.urlSerializer.serialize(u.extractedUrl),m,Jc.IgnoredByUrlHandlingStrategy)),u.resolve(null),Ut}}),Le(u=>{let h=new Xp(u.id,this.urlSerializer.serialize(u.extractedUrl),this.urlSerializer.serialize(u.urlAfterRedirects),u.targetSnapshot);this.events.next(h)}),Y(u=>(this.currentTransition=o=ke(A({},u),{guards:J2(u.targetSnapshot,u.currentSnapshot,this.rootContexts)}),o)),cP(this.environmentInjector,u=>this.events.next(u)),Le(u=>{if(o.guardsResult=u.guardsResult,Eo(u.guardsResult))throw iy(this.urlSerializer,u.guardsResult);let h=new Kp(u.id,this.urlSerializer.serialize(u.extractedUrl),this.urlSerializer.serialize(u.urlAfterRedirects),u.targetSnapshot,!!u.guardsResult);this.events.next(h)}),Ye(u=>u.guardsResult?!0:(this.cancelNavigationTransition(u,"",hn.GuardRejected),!1)),Wp(u=>{if(u.guards.canActivateChecks.length)return j(u).pipe(Le(h=>{let p=new Jp(h.id,this.urlSerializer.serialize(h.extractedUrl),this.urlSerializer.serialize(h.urlAfterRedirects),h.targetSnapshot);this.events.next(p)}),Ct(h=>{let p=!1;return j(h).pipe(NP(this.paramsInheritanceStrategy,this.environmentInjector),Le({next:()=>p=!0,complete:()=>{p||this.cancelNavigationTransition(h,"",hn.NoDataFromResolver)}}))}),Le(h=>{let p=new ef(h.id,this.urlSerializer.serialize(h.extractedUrl),this.urlSerializer.serialize(h.urlAfterRedirects),h.targetSnapshot);this.events.next(p)}))}),Wp(u=>{let h=p=>{let m=[];p.routeConfig?.loadComponent&&!p.routeConfig._loadedComponent&&m.push(this.configLoader.loadComponent(p.routeConfig).pipe(Le(b=>{p.component=b}),Y(()=>{})));for(let b of p.children)m.push(...h(b));return m};return ir(h(u.targetSnapshot.root)).pipe(Si(null),ht(1))}),Wp(()=>this.afterPreactivation()),Ct(()=>{let{currentSnapshot:u,targetSnapshot:h}=o,p=this.createViewTransition?.(this.environmentInjector,u.root,h.root);return p?Ue(p).pipe(Y(()=>o)):j(o)}),Y(u=>{let h=W2(e.routeReuseStrategy,u.targetSnapshot,u.currentRouterState);return this.currentTransition=o=ke(A({},u),{targetRouterState:h}),this.currentNavigation.targetRouterState=h,o}),Le(()=>{this.events.next(new $s)}),K2(this.rootContexts,e.routeReuseStrategy,u=>this.events.next(u),this.inputBindingEnabled),ht(1),Le({next:u=>{s=!0,this.lastSuccessfulNavigation=this.currentNavigation,this.events.next(new jn(u.id,this.urlSerializer.serialize(u.extractedUrl),this.urlSerializer.serialize(u.urlAfterRedirects))),this.titleStrategy?.updateTitle(u.targetRouterState.snapshot),u.resolve(!0)},complete:()=>{s=!0}}),fn(this.transitionAbortSubject.pipe(Le(u=>{throw u}))),At(()=>{!s&&!d&&this.cancelNavigationTransition(o,"",hn.SupersededByNewNavigation),this.currentTransition?.id===o.id&&(this.currentNavigation=null,this.currentTransition=null)}),Ke(u=>{if(d=!0,oy(u))this.events.next(new $i(o.id,this.urlSerializer.serialize(o.extractedUrl),u.message,u.cancellationCode)),Q2(u)?this.events.next(new Ws(u.url)):o.resolve(!1);else{this.events.next(new Hs(o.id,this.urlSerializer.serialize(o.extractedUrl),u,o.targetSnapshot??void 0));try{o.resolve(e.errorHandler(u))}catch(h){this.options.resolveNavigationPromiseOnError?o.resolve(!1):o.reject(h)}}return Ut}))}))}cancelNavigationTransition(e,i,r){let o=new $i(e.id,this.urlSerializer.serialize(e.extractedUrl),i,r);this.events.next(o),e.resolve(!1)}isUpdatingInternalState(){return this.currentTransition?.extractedUrl.toString()!==this.currentTransition?.currentUrlTree.toString()}isUpdatedBrowserUrl(){return this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(!0))).toString()!==this.currentTransition?.extractedUrl.toString()&&!this.currentTransition?.extras.skipLocationChange}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function qP(t){return t!==js}var GP=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:()=>R(QP),providedIn:"root"})}}return t})(),_f=class{shouldDetach(n){return!1}store(n,e){}shouldAttach(n){return!1}retrieve(n){return null}shouldReuseRoute(n,e){return n.routeConfig===e.routeConfig}},QP=(()=>{class t extends _f{static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=sn(t)))(r||t)}})()}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),fy=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:()=>R(YP),providedIn:"root"})}}return t})(),YP=(()=>{class t extends fy{constructor(){super(...arguments),this.location=R(ei),this.urlSerializer=R(Zs),this.options=R(ea,{optional:!0})||{},this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.urlHandlingStrategy=R(Ef),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.currentUrlTree=new Hi,this.rawUrlTree=this.currentUrlTree,this.currentPageId=0,this.lastSuccessfulId=-1,this.routerState=Jb(null),this.stateMemento=this.createStateMemento()}getCurrentUrlTree(){return this.currentUrlTree}getRawUrlTree(){return this.rawUrlTree}restoredState(){return this.location.getState()}get browserPageId(){return this.canceledNavigationResolution!=="computed"?this.currentPageId:this.restoredState()?.\u0275routerPageId??this.currentPageId}getRouterState(){return this.routerState}createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:this.currentUrlTree,routerState:this.routerState}}registerNonRouterCurrentEntryChangeListener(e){return this.location.subscribe(i=>{i.type==="popstate"&&e(i.url,i.state)})}handleRouterEvent(e,i){if(e instanceof Mo)this.stateMemento=this.createStateMemento();else if(e instanceof Wi)this.rawUrlTree=i.initialUrl;else if(e instanceof ed){if(this.urlUpdateStrategy==="eager"&&!i.extras.skipLocationChange){let r=this.urlHandlingStrategy.merge(i.finalUrl,i.initialUrl);this.setBrowserUrl(r,i)}}else e instanceof $s?(this.currentUrlTree=i.finalUrl,this.rawUrlTree=this.urlHandlingStrategy.merge(i.finalUrl,i.initialUrl),this.routerState=i.targetRouterState,this.urlUpdateStrategy==="deferred"&&(i.extras.skipLocationChange||this.setBrowserUrl(this.rawUrlTree,i))):e instanceof $i&&(e.code===hn.GuardRejected||e.code===hn.NoDataFromResolver)?this.restoreHistory(i):e instanceof Hs?this.restoreHistory(i,!0):e instanceof jn&&(this.lastSuccessfulId=e.id,this.currentPageId=this.browserPageId)}setBrowserUrl(e,i){let r=this.urlSerializer.serialize(e);if(this.location.isCurrentPathEqualTo(r)||i.extras.replaceUrl){let o=this.browserPageId,s=A(A({},i.extras.state),this.generateNgRouterState(i.id,o));this.location.replaceState(r,"",s)}else{let o=A(A({},i.extras.state),this.generateNgRouterState(i.id,this.browserPageId+1));this.location.go(r,"",o)}}restoreHistory(e,i=!1){if(this.canceledNavigationResolution==="computed"){let r=this.browserPageId,o=this.currentPageId-r;o!==0?this.location.historyGo(o):this.currentUrlTree===e.finalUrl&&o===0&&(this.resetState(e),this.resetUrlToCurrentUrlTree())}else this.canceledNavigationResolution==="replace"&&(i&&this.resetState(e),this.resetUrlToCurrentUrlTree())}resetState(e){this.routerState=this.stateMemento.routerState,this.currentUrlTree=this.stateMemento.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e.finalUrl??this.rawUrlTree)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,i){return this.canceledNavigationResolution==="computed"?{navigationId:e,\u0275routerPageId:i}:{navigationId:e}}static{this.\u0275fac=(()=>{let e;return function(r){return(e||(e=sn(t)))(r||t)}})()}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),Ls=function(t){return t[t.COMPLETE=0]="COMPLETE",t[t.FAILED=1]="FAILED",t[t.REDIRECTING=2]="REDIRECTING",t}(Ls||{});function my(t,n){t.events.pipe(Ye(e=>e instanceof jn||e instanceof $i||e instanceof Hs||e instanceof Wi),Y(e=>e instanceof jn||e instanceof Wi?Ls.COMPLETE:(e instanceof $i?e.code===hn.Redirect||e.code===hn.SupersededByNewNavigation:!1)?Ls.REDIRECTING:Ls.FAILED),Ye(e=>e!==Ls.REDIRECTING),ht(1)).subscribe(()=>{n()})}function ZP(t){throw t}var XP={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},KP={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"},Pe=(()=>{class t{get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}get rawUrlTree(){return this.stateManager.getRawUrlTree()}get events(){return this._events}get routerState(){return this.stateManager.getRouterState()}constructor(){this.disposed=!1,this.isNgZoneEnabled=!1,this.console=R(ac),this.stateManager=R(fy),this.options=R(ea,{optional:!0})||{},this.pendingTasks=R(_r),this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.navigationTransitions=R(Mf),this.urlSerializer=R(Zs),this.location=R(ei),this.urlHandlingStrategy=R(Ef),this._events=new ue,this.errorHandler=this.options.errorHandler||ZP,this.navigated=!1,this.routeReuseStrategy=R(GP),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.config=R(ad,{optional:!0})?.flat()??[],this.componentInputBindingEnabled=!!R(cd,{optional:!0}),this.eventsSubscription=new qe,this.isNgZoneEnabled=R(Z)instanceof Z&&Z.isInAngularZone(),this.resetConfig(this.config),this.navigationTransitions.setupNavigations(this,this.currentUrlTree,this.routerState).subscribe({error:e=>{this.console.warn(e)}}),this.subscribeToNavigationEvents()}subscribeToNavigationEvents(){let e=this.navigationTransitions.events.subscribe(i=>{try{let r=this.navigationTransitions.currentTransition,o=this.navigationTransitions.currentNavigation;if(r!==null&&o!==null){if(this.stateManager.handleRouterEvent(i,o),i instanceof $i&&i.code!==hn.Redirect&&i.code!==hn.SupersededByNewNavigation)this.navigated=!0;else if(i instanceof jn)this.navigated=!0;else if(i instanceof Ws){let s=this.urlHandlingStrategy.merge(i.url,r.currentRawUrl),d={info:r.extras.info,skipLocationChange:r.extras.skipLocationChange,replaceUrl:this.urlUpdateStrategy==="eager"||qP(r.source)};this.scheduleNavigation(s,js,null,d,{resolve:r.resolve,reject:r.reject,promise:r.promise})}}ek(i)&&this._events.next(i)}catch(r){this.navigationTransitions.transitionAbortSubject.next(r)}});this.eventsSubscription.add(e)}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){this.setUpLocationChangeListener(),this.navigationTransitions.hasRequestedNavigation||this.navigateToSyncWithBrowser(this.location.path(!0),js,this.stateManager.restoredState())}setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscription??=this.stateManager.registerNonRouterCurrentEntryChangeListener((e,i)=>{setTimeout(()=>{this.navigateToSyncWithBrowser(e,"popstate",i)},0)})}navigateToSyncWithBrowser(e,i,r){let o={replaceUrl:!0},s=r?.navigationId?r:null;if(r){let u=A({},r);delete u.navigationId,delete u.\u0275routerPageId,Object.keys(u).length!==0&&(o.state=u)}let d=this.parseUrl(e);this.scheduleNavigation(d,i,s,o)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}get lastSuccessfulNavigation(){return this.navigationTransitions.lastSuccessfulNavigation}resetConfig(e){this.config=e.map(xf),this.navigated=!1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.nonRouterCurrentEntryChangeSubscription&&(this.nonRouterCurrentEntryChangeSubscription.unsubscribe(),this.nonRouterCurrentEntryChangeSubscription=void 0),this.disposed=!0,this.eventsSubscription.unsubscribe()}createUrlTree(e,i={}){let{relativeTo:r,queryParams:o,fragment:s,queryParamsHandling:d,preserveFragment:u}=i,h=u?this.currentUrlTree.fragment:s,p=null;switch(d){case"merge":p=A(A({},this.currentUrlTree.queryParams),o);break;case"preserve":p=this.currentUrlTree.queryParams;break;default:p=o||null}p!==null&&(p=this.removeEmptyProps(p));let m;try{let b=r?r.snapshot:this.routerState.snapshot.root;m=Yb(b)}catch{(typeof e[0]!="string"||!e[0].startsWith("/"))&&(e=[]),m=this.currentUrlTree.root}return Zb(m,e,p,h??null)}navigateByUrl(e,i={skipLocationChange:!1}){let r=Eo(e)?e:this.parseUrl(e),o=this.urlHandlingStrategy.merge(r,this.rawUrlTree);return this.scheduleNavigation(o,js,null,i)}navigate(e,i={skipLocationChange:!1}){return JP(e),this.navigateByUrl(this.createUrlTree(e,i),i)}serializeUrl(e){return this.urlSerializer.serialize(e)}parseUrl(e){try{return this.urlSerializer.parse(e)}catch{return this.urlSerializer.parse("/")}}isActive(e,i){let r;if(i===!0?r=A({},XP):i===!1?r=A({},KP):r=i,Eo(e))return Ob(this.currentUrlTree,e,r);let o=this.parseUrl(e);return Ob(this.currentUrlTree,o,r)}removeEmptyProps(e){return Object.entries(e).reduce((i,[r,o])=>(o!=null&&(i[r]=o),i),{})}scheduleNavigation(e,i,r,o,s){if(this.disposed)return Promise.resolve(!1);let d,u,h;s?(d=s.resolve,u=s.reject,h=s.promise):h=new Promise((m,b)=>{d=m,u=b});let p=this.pendingTasks.add();return my(this,()=>{queueMicrotask(()=>this.pendingTasks.remove(p))}),this.navigationTransitions.handleNavigationRequest({source:i,restoredState:r,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:o,resolve:d,reject:u,promise:h,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),h.catch(m=>Promise.reject(m))}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function JP(t){for(let n=0;n{class t{constructor(e,i,r,o,s,d){this.router=e,this.route=i,this.tabIndexAttribute=r,this.renderer=o,this.el=s,this.locationStrategy=d,this.href=null,this.commands=null,this.onChanges=new ue,this.preserveFragment=!1,this.skipLocationChange=!1,this.replaceUrl=!1;let u=s.nativeElement.tagName?.toLowerCase();this.isAnchorElement=u==="a"||u==="area",this.isAnchorElement?this.subscription=e.events.subscribe(h=>{h instanceof jn&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}setTabIndexIfNotOnNativeEl(e){this.tabIndexAttribute!=null||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(e){e!=null?(this.commands=Array.isArray(e)?e:[e],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(e,i,r,o,s){let d=this.urlTree;if(d===null||this.isAnchorElement&&(e!==0||i||r||o||s||typeof this.target=="string"&&this.target!="_self"))return!0;let u={skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state,info:this.info};return this.router.navigateByUrl(d,u),!this.isAnchorElement}ngOnDestroy(){this.subscription?.unsubscribe()}updateHref(){let e=this.urlTree;this.href=e!==null&&this.locationStrategy?this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(e)):null;let i=this.href===null?null:J0(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",i)}applyAttributeValue(e,i){let r=this.renderer,o=this.el.nativeElement;i!==null?r.setAttribute(o,e,i):r.removeAttribute(o,e)}get urlTree(){return this.commands===null?null:this.router.createUrlTree(this.commands,{relativeTo:this.relativeTo!==void 0?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}static{this.\u0275fac=function(i){return new(i||t)(M(Pe),M(Mr),uo("tabindex"),M(ln),M(be),M(mi))}}static{this.\u0275dir=ve({type:t,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(i,r){i&1&&y("click",function(s){return r.onClick(s.button,s.ctrlKey,s.shiftKey,s.altKey,s.metaKey)}),i&2&&z("target",r.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",info:"info",relativeTo:"relativeTo",preserveFragment:[ee.HasDecoratorInputTransform,"preserveFragment","preserveFragment",kt],skipLocationChange:[ee.HasDecoratorInputTransform,"skipLocationChange","skipLocationChange",kt],replaceUrl:[ee.HasDecoratorInputTransform,"replaceUrl","replaceUrl",kt],routerLink:"routerLink"},standalone:!0,features:[Nn,Mt]})}}return t})(),gy=(()=>{class t{get isActive(){return this._isActive}constructor(e,i,r,o,s){this.router=e,this.element=i,this.renderer=r,this.cdr=o,this.link=s,this.classes=[],this._isActive=!1,this.routerLinkActiveOptions={exact:!1},this.isActiveChange=new de,this.routerEventsSubscription=e.events.subscribe(d=>{d instanceof jn&&this.update()})}ngAfterContentInit(){j(this.links.changes,j(null)).pipe(Wn()).subscribe(e=>{this.update(),this.subscribeToEachLinkOnChanges()})}subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsubscribe();let e=[...this.links.toArray(),this.link].filter(i=>!!i).map(i=>i.onChanges);this.linkInputChangesSubscription=Ue(e).pipe(Wn()).subscribe(i=>{this._isActive!==this.isLinkActive(this.router)(i)&&this.update()})}set routerLinkActive(e){let i=Array.isArray(e)?e:e.split(" ");this.classes=i.filter(r=>!!r)}ngOnChanges(e){this.update()}ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInputChangesSubscription?.unsubscribe()}update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let e=this.hasActiveLinks();this.classes.forEach(i=>{e?this.renderer.addClass(this.element.nativeElement,i):this.renderer.removeClass(this.element.nativeElement,i)}),e&&this.ariaCurrentWhenActive!==void 0?this.renderer.setAttribute(this.element.nativeElement,"aria-current",this.ariaCurrentWhenActive.toString()):this.renderer.removeAttribute(this.element.nativeElement,"aria-current"),this._isActive!==e&&(this._isActive=e,this.cdr.markForCheck(),this.isActiveChange.emit(e))})}isLinkActive(e){let i=tk(this.routerLinkActiveOptions)?this.routerLinkActiveOptions:this.routerLinkActiveOptions.exact||!1;return r=>{let o=r.urlTree;return o?e.isActive(o,i):!1}}hasActiveLinks(){let e=this.isLinkActive(this.router);return this.link&&e(this.link)||this.links.some(e)}static{this.\u0275fac=function(i){return new(i||t)(M(Pe),M(be),M(ln),M(Re),M(qi,8))}}static{this.\u0275dir=ve({type:t,selectors:[["","routerLinkActive",""]],contentQueries:function(i,r,o){if(i&1&&Zv(o,qi,5),i&2){let s;je(s=Be())&&(r.links=s)}},inputs:{routerLinkActiveOptions:"routerLinkActiveOptions",ariaCurrentWhenActive:"ariaCurrentWhenActive",routerLinkActive:"routerLinkActive"},outputs:{isActiveChange:"isActiveChange"},exportAs:["routerLinkActive"],standalone:!0,features:[Mt]})}}return t})();function tk(t){return!!t.paths}var ld=class{};var nk=(()=>{class t{constructor(e,i,r,o,s){this.router=e,this.injector=r,this.preloadingStrategy=o,this.loader=s}setUpPreloading(){this.subscription=this.router.events.pipe(Ye(e=>e instanceof jn),ri(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(e,i){let r=[];for(let o of i){o.providers&&!o._injector&&(o._injector=ic(o.providers,e,`Route: ${o.path}`));let s=o._injector??e,d=o._loadedInjector??s;(o.loadChildren&&!o._loadedRoutes&&o.canLoad===void 0||o.loadComponent&&!o._loadedComponent)&&r.push(this.preloadConfig(s,o)),(o.children||o._loadedRoutes)&&r.push(this.processRoutes(d,o.children??o._loadedRoutes))}return Ue(r).pipe(Wn())}preloadConfig(e,i){return this.preloadingStrategy.preload(i,()=>{let r;i.loadChildren&&i.canLoad===void 0?r=this.loader.loadChildren(e,i):r=j(null);let o=r.pipe(rt(s=>s===null?j(void 0):(i._loadedRoutes=s.routes,i._loadedInjector=s.injector,this.processRoutes(s.injector??e,s.routes))));if(i.loadComponent&&!i._loadedComponent){let s=this.loader.loadComponent(i);return Ue([o,s]).pipe(Wn())}else return o})}static{this.\u0275fac=function(i){return new(i||t)(I(Pe),I(hc),I(Rt),I(ld),I(Sf))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),vy=new N(""),ik=(()=>{class t{constructor(e,i,r,o,s={}){this.urlSerializer=e,this.transitions=i,this.viewportScroller=r,this.zone=o,this.options=s,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},this.environmentInjector=R(Rt),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(e=>{e instanceof Mo?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof jn?(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment)):e instanceof Wi&&e.code===Jc.IgnoredSameUrlNavigation&&(this.lastSource=void 0,this.restoredId=0,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.url).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof td&&(e.position?this.options.scrollPositionRestoration==="top"?this.viewportScroller.scrollToPosition([0,0]):this.options.scrollPositionRestoration==="enabled"&&this.viewportScroller.scrollToPosition(e.position):e.anchor&&this.options.anchorScrolling==="enabled"?this.viewportScroller.scrollToAnchor(e.anchor):this.options.scrollPositionRestoration!=="disabled"&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(e,i){this.zone.runOutsideAngular(()=>it(this,null,function*(){yield new Promise(r=>{setTimeout(()=>{r()}),nc(()=>{r()},{injector:this.environmentInjector})}),this.zone.run(()=>{this.transitions.events.next(new td(e,this.lastSource==="popstate"?this.store[this.restoredId]:null,i))})}))}ngOnDestroy(){this.routerEventsSubscription?.unsubscribe(),this.scrollEventsSubscription?.unsubscribe()}static{this.\u0275fac=function(i){hv()}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac})}}return t})();function rk(t){return t.routerState.root}function ta(t,n){return{\u0275kind:t,\u0275providers:n}}function ok(){let t=R(ot);return n=>{let e=t.get(hi);if(n!==e.components[0])return;let i=t.get(Pe),r=t.get(_y);t.get(If)===1&&i.initialNavigation(),t.get(by,null,xe.Optional)?.setUpPreloading(),t.get(vy,null,xe.Optional)?.init(),i.resetRootComponentType(e.componentTypes[0]),r.closed||(r.next(),r.complete(),r.unsubscribe())}}var _y=new N("",{factory:()=>new ue}),If=new N("",{providedIn:"root",factory:()=>1});function sk(){return ta(2,[{provide:If,useValue:0},{provide:dc,multi:!0,deps:[ot],useFactory:n=>{let e=n.get(C_,Promise.resolve());return()=>e.then(()=>new Promise(i=>{let r=n.get(Pe),o=n.get(_y);my(r,()=>{i(!0)}),n.get(Mf).afterPreactivation=()=>(i(!0),o.closed?j(void 0):o),r.initialNavigation()}))}}])}function ak(){return ta(3,[{provide:dc,multi:!0,useFactory:()=>{let n=R(Pe);return()=>{n.setUpLocationChangeListener()}}},{provide:If,useValue:2}])}var by=new N("");function lk(t){return ta(0,[{provide:by,useExisting:nk},{provide:ld,useExisting:t}])}function ck(){return ta(8,[Fb,{provide:cd,useExisting:Fb}])}function dk(t){let n=[{provide:hy,useValue:$P},{provide:py,useValue:A({skipNextTransition:!!t?.skipInitialTransition},t)}];return ta(9,n)}var Lb=new N("ROUTER_FORROOT_GUARD"),uk=[ei,{provide:Zs,useClass:Us},Pe,Xs,{provide:Mr,useFactory:rk,deps:[Pe]},Sf,[]],Ir=(()=>{class t{constructor(e){}static forRoot(e,i){return{ngModule:t,providers:[uk,[],{provide:ad,multi:!0,useValue:e},{provide:Lb,useFactory:mk,deps:[[Pe,new Nl,new hh]]},{provide:ea,useValue:i||{}},i?.useHash?pk():fk(),hk(),i?.preloadingStrategy?lk(i.preloadingStrategy).\u0275providers:[],i?.initialNavigation?gk(i):[],i?.bindToComponentInputs?ck().\u0275providers:[],i?.enableViewTransitions?dk().\u0275providers:[],vk()]}}static forChild(e){return{ngModule:t,providers:[{provide:ad,multi:!0,useValue:e}]}}static{this.\u0275fac=function(i){return new(i||t)(I(Lb,8))}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({})}}return t})();function hk(){return{provide:vy,useFactory:()=>{let t=R(P_),n=R(Z),e=R(ea),i=R(Mf),r=R(Zs);return e.scrollOffset&&t.setOffset(e.scrollOffset),new ik(r,i,t,n,e)}}}function pk(){return{provide:mi,useClass:E_}}function fk(){return{provide:mi,useClass:fp}}function mk(t){return"guarded"}function gk(t){return[t.initialNavigation==="disabled"?ak().\u0275providers:[],t.initialNavigation==="enabledBlocking"?sk().\u0275providers:[]]}var Vb=new N("");function vk(){return[{provide:Vb,useFactory:ok},{provide:uc,multi:!0,useExisting:Vb}]}var bn=(()=>{class t{constructor(){this.showFooter=!0,this.socialLinks={"Py-Learn":{website:"https://pykara.ai",linkedin:"https://www.linkedin.com/in/pykara-technologies",youtube:"https://www.youtube.com/@PykaraTechnologies",facebook:"https://www.facebook.com/people/Pykara/100087653675803",instagram:"https://www.instagram.com/pykaratechnologie"},"MJ-Learn":{website:"https://www.majema.se",linkedin:"https://www.linkedin.com/company/majemaforlaget",youtube:"https://www.youtube.com/@majemaforlaget3014",facebook:"https://www.facebook.com/majemaforlaget",instagram:"https://www.instagram.com/majemaforlaget"}};let e=window.location.href,i="Py-Learn",r="assets/images/pykara-logo.png";e.includes("pykara-py-learn")?(i="Py-Learn",r="assets/images/pykara-logo.png",this.showFooter=!0):e.includes("majemaai-mj-learn")&&(i="MJ-Learn",r="assets/images/majema-logo.png",this.showFooter=!0),this.nameSubject=new Ge(i),this.logoSubject=new Ge(r),this.name$=this.nameSubject.asObservable(),this.logo$=this.logoSubject.asObservable()}get name(){return this.nameSubject.value}get logo(){return this.logoSubject.value}setName(e){this.nameSubject.next(e)}setLogo(e){this.logoSubject.next(e)}get socialLinksCurrent(){return this.socialLinks[this.name]}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var _k=[[["","header-right",""]]],bk=["[header-right]"];function yk(t,n){if(t&1&&(c(0,"div",8)(1,"h1"),l(2),a()()),t&2){let e=_();f(2),U(e.title)}}function wk(t,n){t&1&&(c(0,"div",9)(1,"a",10),v(2,"img",11),a()())}var yt=(()=>{class t{constructor(e){this.brand=e,this.title=null,this.showHome=!0}static{this.\u0275fac=function(i){return new(i||t)(M(bn))}}static{this.\u0275cmp=$({type:t,selectors:[["app-header"]],inputs:{title:"title",showHome:"showHome",logoSrc:"logoSrc",productName:"productName"},standalone:!0,features:[ye],ngContentSelectors:bk,decls:10,vars:5,consts:[[1,"header-container"],[1,"logo"],["routerLink","/home",1,"brand-link"],[3,"src","alt"],[1,"product-name"],["class","header-title",4,"ngIf"],[1,"toggle-buttons-container","modern-toggle"],["class","home-btn",4,"ngIf"],[1,"header-title"],[1,"home-btn"],["routerLink","/home"],["src","assets/images/home.png","alt","Home",1,"home-icon"]],template:function(i,r){i&1&&(Ln(_k),c(0,"div",0)(1,"div",1)(2,"a",2),v(3,"img",3),a(),c(4,"span",4),l(5),a()(),k(6,yk,3,1,"div",5),c(7,"div",6),Vn(8),a(),k(9,wk,3,0,"div",7),a()),i&2&&(f(3),g("src",r.logoSrc||r.brand.logo,H)("alt",(r.productName||r.brand.name)+" Logo"),f(2),U(r.productName||r.brand.name),f(),g("ngIf",r.title),f(3),g("ngIf",r.showHome))},dependencies:[ze,Fe,Ir,qi],styles:["[_nghost-%COMP%]{display:block}.header-container[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;justify-content:space-between;padding:0 2vw;background-color:#009688;box-shadow:0 4px 8px #0003;width:100%;position:sticky;top:0;z-index:1000;overflow-x:clip}.header-container[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%], .header-container[_ngcontent-%COMP%] .home-btn[_ngcontent-%COMP%], .header-container[_ngcontent-%COMP%] .toggle-buttons-container[_ngcontent-%COMP%]{flex:0 0 auto}.header-title[_ngcontent-%COMP%]{flex:1 1 auto;min-width:0;text-align:center}.header-title[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:3vw;color:#fff;margin:0;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.header-container[_ngcontent-%COMP%] .logo[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:5vw;height:auto;background:#fff;border-radius:1vw;margin:.5vw}.home-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:5vw;transition:transform .2s ease}.home-btn[_ngcontent-%COMP%] img[_ngcontent-%COMP%]:hover{transform:scale(1.08)}.logo[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1vw}.brand-link[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.6vw;text-decoration:none}.product-name[_ngcontent-%COMP%]{color:#fff;font-size:2vw;letter-spacing:.5px;font-family:Amonk_Outline;line-height:1}.brand-link[_ngcontent-%COMP%]:hover .product-name[_ngcontent-%COMP%]{opacity:.9}.header-title[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-family:Super Cartoon,cursive}"]})}}return t})();function xk(){return location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space/rag":location.hostname==="localhost"||location.hostname==="127.0.0.1"?"http://localhost:5000/rag":"/rag"}var yy=(()=>{class t{getGrade(){let e=(localStorage.getItem("gradeLevel")||"highergrade").toLowerCase();return e==="lowergrade"||e==="midgrade"||e==="highergrade"?e:"highergrade"}toDbLevel(e){return e==="lowergrade"?"low":e==="midgrade"?"mid":"high"}makeHeaders(e){return new en({"Content-Type":"application/json","X-User":e})}constructor(e){this.http=e,this.baseUrl=xk()}generateOpenQuestions(e){let i=this.getGrade(),r=this.makeHeaders(i),o={qtype:"OPEN",n:e.n??5,topic:e.topic??"",model:"gpt-4o-mini",db_level:this.toDbLevel(i)};return this.http.post(`${this.baseUrl}/generate-questions`,o,{headers:r})}explainGrammar(e){let i=this.getGrade(),r=this.makeHeaders(i),o=typeof e=="string"?{question:e}:A({},e);o.db_level||(o.db_level=this.toDbLevel(i)),o.model||(o.model="gpt-4o-mini");let s=`${this.baseUrl}/explain-grammar`;return this.http.post(s,o,{headers:r})}suggestFollowups(e){let i=this.getGrade(),r=this.makeHeaders(i),o={last_question:e.last_question,last_answer:e.last_answer,n:e.n??5,model:"gpt-4o-mini",db_level:this.toDbLevel(i),source_ids:e.source_ids??[]};return this.http.post(`${this.baseUrl}/suggest-followups`,o,{headers:r})}askQuestion(e,i){return this.explainGrammar(e)}synthesizeAudio(e,i="en",r){let o={text:e,language:i};return r&&(o.reference_files=r),this.http.post(`${this.baseUrl}/synthesize-audio`,o)}synthesizeVideo(e,i="en"){let r={text:e,language:i};return this.http.post(`${this.baseUrl}/synthesize-video`,r)}punctuate(e){let i={"Content-Type":"application/json","X-User":localStorage.getItem("username")||""};return this.http.post(`${this.baseUrl}/punctuate`,{text:e},{headers:i})}static{this.\u0275fac=function(i){return new(i||t)(I(De))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Sk=["waveformCanvas"],Ek=["popupTranscriptEl"],Mk=["chatBox"];function Ik(t,n){if(t&1&&(c(0,"div",36)(1,"div",37),v(2,"img",38),a(),c(3,"div",39),l(4),c(5,"div",40),l(6),a()()()),t&2){let e=_().$implicit;f(4),ne(" ",e.text," "),f(2),U(e.timestamp)}}function Dk(t,n){if(t&1){let e=F();c(0,"button",58),y("click",function(){let r=x(e).$implicit,o=_(4);return C(o.selectHardcodedQuestion(r))}),l(1),a()}if(t&2){let e=n.$implicit;f(),ne(" ",e," ")}}function Pk(t,n){if(t&1&&(c(0,"div",55)(1,"div",56),l(2,"Follow-up suggestions"),a(),k(3,Dk,2,1,"button",57),a()),t&2){let e=_(2).$implicit;f(3),g("ngForOf",e.suggestions)}}function kk(t,n){t&1&&(Me(0),c(1,"span",59),l(2,"\u2713"),a(),Ie())}function Ok(t,n){t&1&&v(0,"img",60)}function Tk(t,n){if(t&1){let e=F();c(0,"button",61),y("click",function(){x(e);let r=_(2).index,o=_();return C(o.playServerAudioForMessage(r))}),v(1,"img",62),a()}}function Ak(t,n){if(t&1){let e=F();c(0,"button",63),y("click",function(){x(e);let r=_(3);return C(r.stopReadAloud())}),v(1,"img",64),a()}}function Rk(t,n){t&1&&(Me(0),v(1,"img",66),Ie())}function Fk(t,n){t&1&&v(0,"img",67)}function Nk(t,n){if(t&1){let e=F();c(0,"button",65),y("click",function(){x(e);let r=_(2).index,o=_();return C(o.synthesizeAudioAndPlay(r))}),k(1,Rk,2,0,"ng-container",47)(2,Fk,1,0,"ng-template",null,2,dn),a()}if(t&2){let e=Dt(3),i=_(2).$implicit;g("disabled",i.isSynthesizing),f(),g("ngIf",!i.isSynthesizing)("ngIfElse",e)}}function Lk(t,n){if(t&1){let e=F();c(0,"button",68),y("click",function(){x(e);let r=_(2).index,o=_();return C(o.synthesizeVideoAndPlay(r))}),v(1,"img",69),a()}}function Vk(t,n){t&1&&(c(0,"button",70),v(1,"img",71),a())}function jk(t,n){if(t&1){let e=F();c(0,"button",72),y("click",function(){x(e);let r=_(2).index,o=_();return C(o.toggleMessageVideo(r))}),v(1,"img",73),a()}if(t&2){let e=_(2).index,i=_();W("active",i.isVideoEnabledIndex[e]),f(),g("src",i.isVideoEnabledIndex[e]?"assets/images/chat/no-video.png":"assets/images/chat/video.png",H)}}function Bk(t,n){if(t&1){let e=F();c(0,"video",74),y("ended",function(){x(e);let r=_(2).index,o=_();return C(o.onMessageVideoEnded(r))}),a()}if(t&2){let e=_(2),i=e.$implicit,r=e.index;br("id","inline-video-",r,""),g("src",i.playingVideoUrl,H)}}function Uk(t,n){if(t&1){let e=F();c(0,"div",41)(1,"div",37),v(2,"img",42),a(),c(3,"div",43),v(4,"div",44),k(5,Pk,4,1,"div",45),c(6,"div",40),l(7),c(8,"button",46),y("click",function(){x(e);let r=_(),o=r.$implicit,s=r.index,d=_();return C(d.copyToClipboard(o.text,s))}),k(9,kk,3,0,"ng-container",47)(10,Ok,1,0,"ng-template",null,1,dn),a(),k(12,Tk,2,0,"button",48)(13,Ak,2,0,"button",49)(14,Nk,4,3,"button",50)(15,Lk,2,0,"button",51)(16,Vk,2,0,"button",52)(17,jk,2,3,"button",53),a(),k(18,Bk,1,3,"video",54),a()()}if(t&2){let e=Dt(11),i=_(),r=i.$implicit,o=i.index,s=_();f(4),g("innerHTML",s.formatStructuredResponse(r.text),Ri),f(),g("ngIf",r.suggestions==null?null:r.suggestions.length),f(2),ne(" ",r.timestamp," "),f(),z("aria-label",s.copySuccessIndex===o?"Copied":"Copy message"),f(),g("ngIf",s.copySuccessIndex===o)("ngIfElse",e),f(3),g("ngIf",r.audioUrl&&s.isReadingIndex!==o),f(),g("ngIf",r.audioUrl&&s.isReadingIndex===o),f(),g("ngIf",!r.audioUrl),f(),g("ngIf",!r.videoUrl&&!r.isVideoSynthesizing),f(),g("ngIf",!r.videoUrl&&r.isVideoSynthesizing),f(),g("ngIf",r.videoUrl),f(),g("ngIf",s.isVideoEnabledIndex[o]&&r.playingVideoUrl)}}function zk(t,n){if(t&1&&(c(0,"div"),k(1,Ik,7,2,"div",34)(2,Uk,19,13,"div",35),a()),t&2){let e=n.$implicit;f(),g("ngIf",e.from==="user"),f(),g("ngIf",e.from==="ai")}}function Hk(t,n){t&1&&(c(0,"div",75),l(1," Tutor's Response "),v(2,"span")(3,"span")(4,"span"),a())}function $k(t,n){t&1&&(c(0,"div",79),l(1,"Loading\u2026"),a())}function Wk(t,n){if(t&1){let e=F();c(0,"button",82),y("mousedown",function(){let r=x(e).$implicit,o=_(4);return C(o.selectHardcodedQuestion(r))}),l(1),a()}if(t&2){let e=n.$implicit,i=_(4);g("disabled",i.isAiResponding),f(),ne(" ",e," ")}}function qk(t,n){if(t&1&&(Me(0),c(1,"div",80),l(2,"Follow-up suggestions"),a(),k(3,Wk,2,2,"button",81),Ie()),t&2){let e=_(3);f(3),g("ngForOf",e.currentFollowups)}}function Gk(t,n){if(t&1){let e=F();c(0,"button",82),y("mousedown",function(){let r=x(e).$implicit,o=_(5);return C(o.selectHardcodedQuestion(r))}),l(1),a()}if(t&2){let e=n.$implicit,i=_(5);g("disabled",i.isAiResponding),f(),ne(" ",e," ")}}function Qk(t,n){if(t&1&&(Me(0),k(1,Gk,2,2,"button",81),Ie()),t&2){let e=_(4);f(),g("ngForOf",e.pdfQuestions)}}function Yk(t,n){t&1&&(c(0,"div",83),l(1,"No grammar questions available."),a())}function Zk(t,n){if(t&1&&(c(0,"div",80),l(1,"Questions from your textbook"),a(),k(2,Qk,2,1,"ng-container",47)(3,Yk,2,0,"ng-template",null,4,dn)),t&2){let e=Dt(4),i=_(3);f(2),g("ngIf",i.pdfQuestions==null?null:i.pdfQuestions.length)("ngIfElse",e)}}function Xk(t,n){if(t&1&&(Me(0),k(1,qk,4,1,"ng-container",47)(2,Zk,5,2,"ng-template",null,3,dn),Ie()),t&2){let e=Dt(3),i=_(2);f(),g("ngIf",i.currentFollowups.length)("ngIfElse",e)}}function Kk(t,n){if(t&1&&(c(0,"div",76),k(1,$k,2,0,"div",77)(2,Xk,4,2,"ng-container",78),a()),t&2){let e=_();f(),g("ngIf",e.pdfLoading),f(),g("ngIf",!e.pdfLoading)}}function Jk(t,n){t&1&&(c(0,"div",99),l(1,"Processing\u2026 please wait"),a())}function eO(t,n){if(t&1&&(c(0,"pre"),l(1),a()),t&2){let e=_(2);f(),U(e.popupTranscript)}}function tO(t,n){t&1&&(c(0,"div",100),l(1,"Speak and click Done when finished"),a())}function nO(t,n){if(t&1&&(c(0,"div",101),l(1),a()),t&2){let e=_(2);f(),U(e.errorMessage)}}function iO(t,n){if(t&1){let e=F();c(0,"div",84)(1,"div",85)(2,"strong"),l(3,"Microphone"),a(),c(4,"button",86),y("click",function(){x(e);let r=_();return C(r.closeMicrophonePopup())}),l(5,"\u2715"),a()(),c(6,"div",87),v(7,"canvas",88,5),c(9,"div",89)(10,"div",90),v(11,"span",91),c(12,"span"),l(13),a()(),c(14,"div",92,6),k(16,Jk,2,0,"div",93)(17,eO,2,1,"pre",78)(18,tO,2,0,"div",94),a(),k(19,nO,2,1,"div",95),a(),c(20,"div",96)(21,"button",97),y("click",function(){x(e);let r=_();return C(r.stopRecording())}),l(22,"Done"),a(),c(23,"button",97),y("click",function(){x(e);let r=_();return C(r.confirmAndSendTranscript())}),l(24,"Send"),a(),c(25,"button",98),y("click",function(){x(e);let r=_();return C(r.closeMicrophonePopup())}),l(26,"Cancel"),a()()()()}if(t&2){let e=_();f(11),W("recording",e.isRecording),f(2),U(e.isRecording?"Recording\u2026":"Ready"),f(3),g("ngIf",e.popupTranscript==="Processing\u2026"),f(),g("ngIf",e.popupTranscript&&e.popupTranscript!=="Processing\u2026"),f(),g("ngIf",!e.popupTranscript),f(),g("ngIf",e.errorMessage),f(2),g("disabled",!e.isRecording),f(2),g("disabled",!e.popupTranscript||e.popupTranscript==="Processing\u2026")}}function rO(t,n){if(t&1){let e=F();c(0,"div",102),y("click",function(){x(e);let r=_();return C(r.closeUserGuide())}),c(1,"div",103),y("click",function(r){return x(e),C(r.stopPropagation())}),c(2,"button",104),y("click",function(){x(e);let r=_();return C(r.closeUserGuide())}),l(3,"\xD7"),a(),c(4,"div",105)(5,"ol",106)(6,"li")(7,"b"),l(8,"Introduction"),a(),v(9,"br"),c(10,"ul",107)(11,"li"),l(12,"The Chat Module is an interactive learning environment designed to assist learners through text and voice-based communication."),a(),c(13,"li"),l(14,"Users can type their question or select from follow-up suggestions, using either the text input or the microphone."),a(),c(15,"li"),l(16,"Predefined questions appear above the input field for quick access."),a(),c(17,"li"),l(18,"This creates an engaging and personalised learning experience similar to interacting with a real tutor."),a()()(),c(19,"li")(20,"b"),l(21,"Starting the Chat"),a(),v(22,"br"),c(23,"ul",107)(24,"li"),l(25,"When learners open the module, they will see a text input box and a microphone icon. They can type a question or activate the microphone to speak."),a(),c(26,"li"),l(27,"While the microphone is active, a listening popup appears with options to mute or stop recording. Once the learner finishes speaking or typing, their question is displayed in the chat area along with a timestamp."),a(),c(28,"li"),l(29,"This simple interface ensures that both typing and speaking interactions are smooth and user-friendly."),a()()(),c(30,"li")(31,"b"),l(32,"Accessing the Syllabus"),a(),v(33,"br"),c(34,"ul",107)(35,"li"),l(36,"Before learners begin, an administrator uploads the syllabus or textbook in digital format."),a(),c(37,"li"),l(38,"The system analyses the document and automatically generates a list of predefined questions based on the uploaded syllabus."),a(),c(39,"li"),l(40,"These predefined questions are displayed above the input field, allowing learners to choose any topic without needing to type."),a(),c(41,"li"),l(42,"When a learner selects a question, the system locates the relevant section from the syllabus and prepares an answer. The response appears instantly in the chat area in a clear and readable format."),a()()(),c(43,"li")(44,"b"),l(45,"Receiving the Response"),a(),v(46,"br"),c(47,"ul",107)(48,"li"),l(49," After a question is sent, the system generates an immediate response that includes: "),c(50,"ul")(51,"li"),l(52,"A text-based explanation"),a(),c(53,"li"),l(54,"An audio narration in the tutor\u2019s real voice"),a(),c(55,"li"),l(56,"A derived video explanation, when applicable"),a()()(),c(57,"li"),l(58,"The response is first produced as text. If the learner chooses to listen, the system plays an audio narration that has been synthetically generated using the real voice of the teacher."),a(),c(59,"li"),l(60,"The voice is not a generic computer voice; it has been trained and modelled on the actual tutor\u2019s speech patterns, ensuring that the tone, pronunciation, and expression closely resemble the teacher\u2019s natural way of speaking."),a(),c(61,"li"),l(62,"Similarly, when a video explanation is requested, the system displays a derived video of the teacher. This video is not a pre-recorded clip or animation, but is generated to resemble the real teacher\u2019s voice and reactions."),a(),c(63,"li"),l(64,"All audio and video responses are created dynamically for each question, providing unique, real-time explanations. Learners can replay or stop the narration at any time, copy text responses, and follow the conversation naturally with the speaking indicator showing when the tutor\u2019s voice is active."),a(),c(65,"li"),l(66,"By default, audio is muted; you can enable it as needed."),a()()(),c(67,"li")(68,"b"),l(69,"Handling Out-of-Syllabus Questions"),a(),v(70,"br"),c(71,"ul",107)(72,"li"),l(73,"If a learner asks a question that is not part of the uploaded syllabus or textbook, the system responds with the message: \u201CThis topic is out of syllabus.\u201D"),a(),c(74,"li"),l(75,"Only administrators can configure whether such questions can be answered using external information sources."),a(),c(76,"li"),l(77,"This ensures that all discussions remain within the approved syllabus unless authorised otherwise."),a()()(),c(78,"li")(79,"b"),l(80,"Follow-Up and Progressive Learning"),a(),v(81,"br"),c(82,"ul",107)(83,"li"),l(84,"After each response, the system displays related or next-level questions below the chat. This feature helps learners progress through topics in a logical sequence."),a(),c(85,"li"),l(86,"A breadcrumb trail is also displayed, showing the topic flow and subtopics covered during the conversation."),a(),c(87,"li"),l(88,"Learners can easily revisit previous points and continue from where they left off."),a()()(),c(89,"li")(90,"b"),l(91,"Audio, Video, and Mode Controls"),a(),v(92,"br"),c(93,"ul",107)(94,"li"),l(95," At the top of the chat interface, four control buttons provide flexibility and accessibility: "),c(96,"ul")(97,"li"),l(98,"Audio Control \u2013 Enable or disable narration."),a(),c(99,"li"),l(100,"Video Control \u2013 Show or hide derived video explanations."),a(),c(101,"li"),l(102,"Syllabus Mode Control \u2013 Keep learning limited to syllabus topics."),a(),c(103,"li"),l(104,"Breadcrumb Control \u2013 Display or hide the topic trail."),a()()(),c(105,"li"),l(106,"Only administrators can modify the syllabus mode to include out-of-syllabus responses."),a()()(),c(107,"li")(108,"b"),l(109,"Interface and Usability"),a(),v(110,"br"),c(111,"ul",107)(112,"li"),l(113,"The chat interface presents a clear, conversational layout between the learner and the tutor. Each message includes a profile icon and timestamp for a natural reading flow."),a(),c(114,"li"),l(115,"Typing indicators appear while the system prepares responses, and a scroll button allows quick access to the most recent messages."),a(),c(116,"li"),l(117,"The design is responsive and adapts to different devices such as desktops, tablets, etc."),a()()(),c(118,"li")(119,"b"),l(120,"Summary"),a(),v(121,"br"),c(122,"ul",107)(123,"li"),l(124,"The Chat Module provides an engaging, syllabus-focused learning experience where learners can type or speak their questions and receive immediate answers through text, real teacher voice, and derived video."),a(),c(125,"li"),l(126,"With predefined questions, real-time explanations, structured progression, and easy-to-use controls, this module offers a complete and intelligent conversational learning environment\u2014all within a single platform."),a(),c(127,"li"),l(128,"Use this feature for summary-guided training."),a()()()()()()()}}function oO(t,n){if(t&1){let e=F();c(0,"video",108),y("ended",function(){x(e);let r=_();return C(r.clearVideoUrl())})("error",function(){x(e);let r=_();return C(r.clearVideoUrl())}),a()}if(t&2){let e=_();g("src",e.videoUrl,H)}}var wy=(()=>{class t{constructor(e,i,r,o,s,d){if(this.apiService=e,this.cdr=i,this.platformId=r,this.http=o,this.router=s,this.renderer=d,this.transcriptConfirmed=new de,this.isRecording=!1,this.showMicPopup=!1,this.popupTranscript="",this.errorMessage="",this.recognition=null,this._recordingFinalBuffer="",this._recordingInterimBuffer="",this.audioContext=null,this.analyser=null,this.dataArray=null,this.mediaStream=null,this.animationFrameId=null,this._recognitionActive=!1,this._restartTimer=null,this._restartAttempts=0,this._maxRestartDelay=1500,this.showQuestions=!1,this.isSubmitting=!1,this.pdfQuestions=[],this.pdfLoading=!1,this.userInput="",this.messages=[],this.isTyping=!1,this.isLoadingSpeech=!1,this.selectedVoice=null,this.speechSynthesisInstance=null,this.isListening=!1,this.isProcessingSpeech=!1,this.isSpeaking=!1,this.isAudioPaused=!1,this.suggestions=[],this.isInputValid=!1,this.lastQuestion=null,this.lastAnswer=null,this.lastSourceIds=[],this.lastAnswerHasContext=!1,this.activeChatIndex=0,this.primaryMessages=[],this.secondaryMessages=[],this.primaryIsVideoEnabledIndex=[],this.secondaryIsVideoEnabledIndex=[],this.primaryLastQuestionContext="",this.secondaryLastQuestionContext="",this.primaryLastAnswerContext="",this.secondaryLastAnswerContext="",this.primaryLastSourceIdsContext=[],this.secondaryLastSourceIdsContext=[],this.primaryCurrentFollowups=[],this.secondaryCurrentFollowups=[],this.primaryPendingAiIndex=null,this.secondaryPendingAiIndex=null,this.primaryServerAudioMessageIndex=null,this.secondaryServerAudioMessageIndex=null,this.primaryIsReadingIndex=null,this.secondaryIsReadingIndex=null,this.primaryIsVideoPlayingIndex=null,this.secondaryIsVideoPlayingIndex=null,this.currentFollowups=[],this.videoUrl="",this.aiResponseInterval=null,this.isAiResponding=!1,this.isVideoEnabledIndex=[],this.currentExplainSub=null,this.currentFollowupsSub=null,this.serverAudio=null,this.serverAudioMessageIndex=null,this.pendingAiIndex=null,this.isMuted=!1,this.showUserGuide=!1,this.openDropdownIndex=null,this.isReadingIndex=null,this.isVideoPlayingIndex=null,this.readAloudUtterance=null,this.lastQuestionContext="",this.lastAnswerContext="",this.lastSourceIdsContext=[],this.popupListeningMode=!1,this._savedRecognitionOnResult=null,this._savedInterimResults=!1,this._suppressDefaultOnResult=!1,this.shouldAutoScroll=!0,this.handleUnload=()=>{window.speechSynthesis&&window.speechSynthesis.cancel()},this.copySuccessIndex=null,this.checkInput=()=>{this.isInputValid=this.userInput.trim().length>0},this.isVoiceEnabled=!1,this.isTutorEnabled=!1,this.isSyllabusEnabled=!0,this.isBreadcrumbEnabled=!1,this.primaryMessages=this.messages,this.secondaryMessages=[],this.primaryIsVideoEnabledIndex=this.isVideoEnabledIndex,this.secondaryIsVideoEnabledIndex=[],this.primaryLastQuestionContext=this.lastQuestionContext,this.primaryLastAnswerContext=this.lastAnswerContext,this.primaryLastSourceIdsContext=this.lastSourceIdsContext.slice(),this.primaryCurrentFollowups=this.currentFollowups.slice(),this.primaryPendingAiIndex=this.pendingAiIndex,this.primaryServerAudioMessageIndex=this.serverAudioMessageIndex,this.primaryIsReadingIndex=this.isReadingIndex,this.primaryIsVideoPlayingIndex=this.isVideoPlayingIndex,!gi(this.platformId))return;let u=window.SpeechRecognition||window.webkitSpeechRecognition;if(!u){console.warn("SpeechRecognition not supported");return}this.recognition=new u,this.recognition.continuous=!0,this.recognition.interimResults=!0,this.recognition.lang="en-US";try{this.recognition.maxAlternatives=1}catch{}this.recognition.onstart=()=>{this._recognitionActive=!0,this._restartAttempts=0},this.recognition.onspeechstart=()=>{this._recognitionActive=!0},this.recognition.onspeechend=()=>{this._recognitionActive=!1},this.recognition.onresult=h=>{if(!this.isRecording)return;let p="",m="";for(let b=h.resultIndex;b{if(console.error("Recognition error",h),h?.error==="not-allowed"?(this.errorMessage="Microphone access denied",this.isRecording=!1):this.errorMessage=`Error: ${h?.error||"unknown"}`,this.isRecording&&(h?.error==="no-speech"||h?.error==="aborted"||h?.error==="network")){this._restartTimer&&clearTimeout(this._restartTimer);let p=Math.min(400*(this._restartAttempts+1),this._maxRestartDelay);this._restartTimer=setTimeout(()=>{try{this.recognition&&!this._recognitionActive&&this.recognition.start()}catch{this._restartAttempts++}},p)}else h?.error!=="not-allowed"&&(this._recognitionActive=!1);this.cdr.detectChanges()},this.recognition.onend=()=>{if(this._recognitionActive=!1,this.isRecording&&this.showMicPopup){this._restartTimer&&clearTimeout(this._restartTimer);let h=Math.min(250+this._restartAttempts*200,this._maxRestartDelay);this._restartTimer=setTimeout(()=>{try{this.recognition&&!this._recognitionActive&&this.recognition.start()}catch{this._restartAttempts++}},h)}},this.recognition.onnomatch=()=>{}}selectHardcodedQuestion(e){try{console.log("[CHAT] default question selected:",e)}catch{}this.showQuestions=!1,this.sendMessage(e),this.userInput=""}ensureGradeLevel(e="lowergrade"){let i=(localStorage.getItem("gradeLevel")||"").toLowerCase();i!=="lowergrade"&&i!=="midgrade"&&i!=="highergrade"?(localStorage.setItem("gradeLevel",e),console.info("[Chat] gradeLevel not set; defaulted to",e)):console.info("[Chat] gradeLevel =",i)}ngOnInit(){this.ensureGradeLevel(),window.speechSynthesis.onvoiceschanged!==void 0&&(window.speechSynthesis.onvoiceschanged=()=>{this.loadVoices()}),this.loadVoices()}ngOnDestroy(){if(this.currentExplainSub&&(this.currentExplainSub.unsubscribe(),this.currentExplainSub=null),this.currentFollowupsSub&&(this.currentFollowupsSub.unsubscribe(),this.currentFollowupsSub=null),gi(this.platformId)){try{window.speechSynthesis?.cancel()}catch{}window.removeEventListener("beforeunload",this.handleUnload)}this.stopServerAudio();try{window.speechSynthesis?.cancel()}catch{}}ngAfterViewInit(){this.chatBox.nativeElement.addEventListener("scroll",()=>{let e=this.chatBox.nativeElement,i=e.scrollHeight-e.clientHeight-e.scrollTop<50;this.shouldAutoScroll=i})}scrollToBottom(){if(this.shouldAutoScroll)try{this.chatBox.nativeElement.scrollTo({top:this.chatBox.nativeElement.scrollHeight,behavior:"smooth"})}catch{}}toggleChat(){let e=1-this.activeChatIndex;this.switchToChat(e)}switchToChat(e){if(e!==this.activeChatIndex){this.stopServerAudio();try{window.speechSynthesis?.cancel()}catch{}this.stopAllVideo(),this.saveCurrentChatState(this.activeChatIndex),this.restoreChatState(e),this.activeChatIndex=e,this.cdr.detectChanges()}}saveCurrentChatState(e){let i=(this.messages||[]).map(r=>ke(A({},r),{isPlaying:!1,playingVideoUrl:""}));e===0?(this.primaryMessages=i,this.primaryIsVideoEnabledIndex=(this.isVideoEnabledIndex||[]).slice(),this.primaryLastQuestionContext=this.lastQuestionContext,this.primaryLastAnswerContext=this.lastAnswerContext,this.primaryLastSourceIdsContext=this.lastSourceIdsContext.slice(),this.primaryCurrentFollowups=this.currentFollowups.slice(),this.primaryPendingAiIndex=this.pendingAiIndex,this.primaryServerAudioMessageIndex=null,this.primaryIsReadingIndex=null,this.primaryIsVideoPlayingIndex=null):(this.secondaryMessages=i,this.secondaryIsVideoEnabledIndex=(this.isVideoEnabledIndex||[]).slice(),this.secondaryLastQuestionContext=this.lastQuestionContext,this.secondaryLastAnswerContext=this.lastAnswerContext,this.secondaryLastSourceIdsContext=this.lastSourceIdsContext.slice(),this.secondaryCurrentFollowups=this.currentFollowups.slice(),this.secondaryPendingAiIndex=this.pendingAiIndex,this.secondaryServerAudioMessageIndex=null,this.secondaryIsReadingIndex=null,this.secondaryIsVideoPlayingIndex=null)}restoreChatState(e){e===0?(this.messages=this.primaryMessages||[],this.isVideoEnabledIndex=this.primaryIsVideoEnabledIndex||[],this.lastQuestionContext=this.primaryLastQuestionContext||"",this.lastAnswerContext=this.primaryLastAnswerContext||"",this.lastSourceIdsContext=(this.primaryLastSourceIdsContext||[]).slice(),this.currentFollowups=(this.primaryCurrentFollowups||[]).slice(),this.pendingAiIndex=this.primaryPendingAiIndex,this.serverAudioMessageIndex=this.primaryServerAudioMessageIndex,this.isReadingIndex=this.primaryIsReadingIndex,this.isVideoPlayingIndex=this.primaryIsVideoPlayingIndex):(this.messages=this.secondaryMessages||[],this.isVideoEnabledIndex=this.secondaryIsVideoEnabledIndex||[],this.lastQuestionContext=this.secondaryLastQuestionContext||"",this.lastAnswerContext=this.secondaryLastAnswerContext||"",this.lastSourceIdsContext=(this.secondaryLastSourceIdsContext||[]).slice(),this.currentFollowups=(this.secondaryCurrentFollowups||[]).slice(),this.pendingAiIndex=this.secondaryPendingAiIndex,this.serverAudioMessageIndex=this.secondaryServerAudioMessageIndex,this.isReadingIndex=this.secondaryIsReadingIndex,this.isVideoPlayingIndex=this.secondaryIsVideoPlayingIndex),this.messages||(this.messages=[]),this.isVideoEnabledIndex||(this.isVideoEnabledIndex=[]),this.currentFollowups||(this.currentFollowups=[])}startFromPopup(){this._suppressDefaultOnResult=!0;try{this.recognition&&typeof this.recognition.stop=="function"&&this.recognition.stop()}catch{}this._restoreRecognitionHandlers(),this.isListening=!1,this.showMicPopup=!1;let e=(this.popupTranscript||"").trim();if(this.popupTranscript="",!e){this.errorMessage="No speech captured. Please try again.",this.cdr.detectChanges();return}this.sendMessage(e)}showHardcodedQuestions(){setTimeout(()=>it(this,null,function*(){this.showQuestions=!0,this.lastAnswer&&this.lastAnswerHasContext?this.fetchFollowupQuestions():this.fetchInitialQuestions()}),100)}hideHardcodedQuestions(){setTimeout(()=>{this.showQuestions=!1},200)}fetchInitialQuestions(e=5){this.pdfLoading=!0,this.pdfQuestions=[],this.apiService.generateOpenQuestions({qtype:"OPEN",n:e,topic:""}).subscribe({next:i=>{let r=Array.isArray(i?.questions)?i.questions:[];this.pdfQuestions=r.map(o=>typeof o=="string"?o:o?.question||"").filter(Boolean),!this.pdfQuestions.length&&i?.note&&console.warn("Question generator note:",i.note),this.pdfLoading=!1,this.cdr.detectChanges()},error:()=>{this.pdfLoading=!1,this.pdfQuestions=[],this.cdr.detectChanges()}})}fetchFollowupQuestions(e=5){if(!this.lastQuestion||!this.lastAnswer||!this.lastAnswerHasContext||!this.lastSourceIds.length){this.fetchInitialQuestions(e);return}this.pdfLoading=!0,this.pdfQuestions=[],this.apiService.suggestFollowups({last_question:this.lastQuestion,last_answer:this.lastAnswer,n:e,source_ids:this.lastSourceIds}).subscribe({next:i=>{let r=Array.isArray(i?.suggestions)?i.suggestions:[];this.pdfQuestions=r.filter(o=>!!o),this.pdfLoading=!1,this.cdr.detectChanges()},error:()=>{this.pdfLoading=!1,this.pdfQuestions=[],this.cdr.detectChanges()}})}selectGeneratedQuestion(e){this.userInput=e,this.showQuestions=!1,setTimeout(()=>{this.sendMessage(),this.userInput=""},80)}getSuggestions(){if(!this.userInput||this.userInput.trim().length<1||this.isSpeaking){this.suggestions=[];return}this.apiService.generateOpenQuestions({qtype:"OPEN",n:5,topic:this.userInput}).subscribe({next:e=>{let i=Array.isArray(e?.questions)?e.questions:[];this.suggestions=i.map(r=>typeof r=="string"?r:r?.question||"").filter(r=>!!r)},error:()=>{this.suggestions=[]}})}selectSuggestion(e){this.userInput=e,this.suggestions=[],this.sendMessage()}sendMessage(e){let i=e?e.trim():this.userInput.trim();if(!i)return;this.isSubmitting=!0;let r=new Date().toLocaleTimeString();this.messages.push({from:"user",text:i,timestamp:r}),this.userInput="",this.isTyping=!0,this.cdr.detectChanges(),this.shouldAutoScroll=!0,this.scrollToBottom(),this.responseSub=this.apiService.explainGrammar({question:i,synthesize_audio:!!this.isVoiceEnabled,synthesize_video:!!this.isTutorEnabled}).pipe(At(()=>{this.isSubmitting=!1})).subscribe({next:o=>{this.isTyping=!1;let s=(o?.answer||o?.response||o?.text||"No explanation available.").trim(),d=Array.isArray(o?.source_ids)?o.source_ids.filter(b=>typeof b=="string"&&b.trim().length>0):[],u=o?.audio_url||o?.audioUrl||"",h=o?.video_url||o?.videoUrl||"";this.lastQuestion=i,this.lastSourceIds=d;let p=/No information available in the provided textbook content/i.test(s),m=!!d.length&&!p;this.streamAiAnswer(s,d,m,u||void 0,h||void 0)},error:o=>{console.error("API Error:",o),this.isTyping=!1,this.streamAiAnswer("Error: Could not get a response from the server.",[],!1)}})}streamAiAnswer(e,i,r,o,s){let d=(e||"").trim()||"No explanation available.",u=new Date().toLocaleTimeString(),h=this.messages.push({from:"ai",text:"",timestamp:u,source_ids:i,pending:!0,audioUrl:o||"",videoUrl:s||"",playingVideoUrl:""})-1;this.isVideoEnabledIndex.length<=h&&(this.isVideoEnabledIndex[h]=!1),this.isAiResponding=!0,this.shouldAutoScroll=!0,this.cdr.detectChanges(),this.animateAiResponse(d,h,()=>{this.lastAnswer=d,this.lastAnswerHasContext=r,this.autoPlayMediaForMessage(h)}),!o&&this.isVoiceEnabled&&this.speakResponse(d)}autoPlayMediaForMessage(e){let i=this.messages[e];if(!i)return;let r=!!(i.videoUrl&&i.videoUrl.trim()),o=!!(i.audioUrl&&i.audioUrl.trim());if(r&&this.isTutorEnabled){try{this.stopServerAudio()}catch{}try{window.speechSynthesis?.cancel()}catch{}this.openMessageVideo(e,!0);return}if(o&&this.isVoiceEnabled){try{this.stopAllVideo()}catch{}this.playServerAudioForMessage(e);return}}displaySource(e){if(!e)return"";let[i,r]=e.split("#p"),o=i.split(/[/\\]/).pop()||i;return r?`${o} p${r}`:o}formatStructuredResponse(e){return e.replace(/\n/g,"
").replace(/(\d+)\.\s/g,"$1. ").replace(/\•\s/g,"\u2714\uFE0F ").replace(/\-\s/g,"\u{1F539} ").replace(/(\*\*)(.*?)\1/g,"$2")}animateAiResponse(e,i,r){if(!e){this.isAiResponding=!1;return}let o=null;if(typeof i=="number"&&this.messages[i]&&this.messages[i].from==="ai")o=i;else for(let p=this.messages.length-1;p>=0;p--)if(this.messages[p].from==="ai"){o=p;break}(o===null||o<0||!this.messages[o])&&(this.messages.push({from:"ai",text:"",timestamp:new Date().toLocaleTimeString()}),o=this.messages.length-1,this.isVideoEnabledIndex.push(!1));let s=this.messages[o];this.aiResponseInterval&&(clearInterval(this.aiResponseInterval),this.aiResponseInterval=null),s.text="",s.pending=!0,this.isAiResponding=!0,this.cdr.detectChanges();let d=e.split(/\s+/).filter(p=>p.length),u=0,h=200;this.aiResponseInterval=setInterval(()=>{uthis.pendingAiIndex&&(this.isVideoEnabledIndex[this.pendingAiIndex]=!1),this.pendingAiIndex=null}else{let e=[...this.messages].reverse().findIndex(i=>i.from==="ai");if(e!==-1){let i=this.messages.length-1-e,r=this.messages[i];r.text="Response cancelled.",r.timestamp=new Date().toLocaleTimeString(),r.suggestions=[],r.audioUrl="",r.videoUrl="",r.playingVideoUrl="",r.pending=!1,this.isVideoEnabledIndex.length>i&&(this.isVideoEnabledIndex[i]=!1)}else this.messages.push({from:"ai",text:"Response cancelled.",timestamp:new Date().toLocaleTimeString()}),this.isVideoEnabledIndex.push(!1)}this.isAiResponding=!1,this.isTyping=!1,this.isSpeaking=!1,this.isReadingIndex=null,this.cdr.detectChanges()}speakResponse(e){if(!e||!this.isVoiceEnabled)return;this.stopAllVideo();let i=new SpeechSynthesisUtterance;i.text=e,i.lang="en-US",i.pitch=1,i.rate=1,this.isSpeaking=!0;let r=window.speechSynthesis.getVoices(),o=["Google UK English Female","Google US English Female","Microsoft Zira - English (United States)","Microsoft Hazel - English (United Kingdom)","Google en-GB Female","Google en-US Female"];for(let s of o){let d=r.find(u=>u.name===s);if(d){i.voice=d;break}}!i.voice&&r.length&&(i.voice=r[0]),i.onend=()=>{this.isSpeaking=!1,this.cdr.detectChanges()};try{window.speechSynthesis.speak(i)}catch{this.isSpeaking=!1}}resumeAudio(){if(this.serverAudio&&this.serverAudio.paused){this.serverAudio.play(),this.isAudioPaused=!1,this.serverAudioMessageIndex!==null&&(this.messages[this.serverAudioMessageIndex].isPlaying=!0),this.cdr.detectChanges();return}window.speechSynthesis&&window.speechSynthesis.paused&&(window.speechSynthesis.resume(),this.isAudioPaused=!1,this.cdr.detectChanges())}playServerAudioForMessage(e){let i=this.messages[e];if(!(!i||!i.audioUrl)){if(this.serverAudio&&this.serverAudioMessageIndex===e){this.serverAudio.paused?(this.serverAudio.play().catch(r=>{console.error("Audio resume failed:",r)}),this.isAudioPaused=!1,i.isPlaying=!0):(this.serverAudio.pause(),this.isAudioPaused=!0,i.isPlaying=!1),this.cdr.detectChanges();return}this.stopAllVideo(),this.stopServerAudio();try{window.speechSynthesis?.cancel()}catch{}this.serverAudio=new Audio(i.audioUrl),this.serverAudioMessageIndex=e;try{this.serverAudio.volume=this.isMuted?0:1}catch{}this.isReadingIndex=e,this.isAudioPaused=!1,i.isPlaying=!0,this.isSpeaking=!0,this.cdr.detectChanges(),this.serverAudio.onended=()=>{try{i.isPlaying=!1}catch{}this.isReadingIndex=null,this.serverAudio=null,this.serverAudioMessageIndex=null,this.isSpeaking=!1,this.cdr.detectChanges()},this.serverAudio.onerror=r=>{console.error("Server audio playback error",r);try{i.isPlaying=!1}catch{}this.isReadingIndex=null,this.serverAudio=null,this.serverAudioMessageIndex=null,this.isSpeaking=!1,this.cdr.detectChanges()},this.serverAudio.play().catch(r=>{console.error("Audio play failed:",r);try{i.isPlaying=!1}catch{}this.isReadingIndex=null,this.serverAudio=null,this.serverAudioMessageIndex=null,this.isSpeaking=!1,this.cdr.detectChanges()})}}stopServerAudio(){if(this.serverAudio){try{this.serverAudio.pause(),this.serverAudio.currentTime=0}catch{}this.serverAudio=null,this.serverAudioMessageIndex!==null&&this.messages[this.serverAudioMessageIndex]&&(this.messages[this.serverAudioMessageIndex].isPlaying=!1),this.serverAudioMessageIndex=null}this.isReadingIndex=null}synthesizeAudioAndPlay(e){let i=this.messages[e];if(!(!i||!i.text)){if(i.audioUrl){this.playServerAudioForMessage(e);return}i.isSynthesizing||(i.isSynthesizing=!0,this.cdr.detectChanges(),this.apiService.synthesizeAudio(i.text).subscribe({next:r=>{i.isSynthesizing=!1,r?.audio_url?(i.audioUrl=r.audio_url,this.playServerAudioForMessage(e)):this.errorMessage="Audio generation failed.",this.cdr.detectChanges()},error:r=>{i.isSynthesizing=!1,this.errorMessage="Audio generation failed.",this.cdr.detectChanges()}}))}}synthesizeVideoAndPlay(e){let i=this.messages[e];if(!(!i||!i.text)){if(i.videoUrl){this.openMessageVideo(e);return}i.isVideoSynthesizing||(i.isVideoSynthesizing=!0,this.cdr.detectChanges(),this.apiService.synthesizeVideo(i.text).subscribe({next:r=>{i.isVideoSynthesizing=!1,r?.video_url?(i.videoUrl=r.video_url,this.openMessageVideo(e)):(console.error("No video_url returned from synth API:",r),this.errorMessage="Video generation failed."),this.cdr.detectChanges()},error:r=>{i.isVideoSynthesizing=!1,console.error("Video synth API error",r),this.errorMessage="Video generation failed. Try again.",this.cdr.detectChanges()}}))}}openMessageVideo(e,i=!1){let r=this.messages[e];if(r?.videoUrl){if(this.isVideoPlayingIndex===e){this.stopInlineVideo(e);return}this.stopServerAudio();try{window.speechSynthesis?.cancel()}catch{}this.stopAllVideo(),r.playingVideoUrl=r.videoUrl,this.isVideoEnabledIndex[e]=!0,this.cdr.detectChanges(),setTimeout(()=>{let o=document.getElementById(`inline-video-${e}`);if(!o){this.isVideoPlayingIndex=null,this.cdr.detectChanges();return}if(i)try{o.muted=!0}catch{}else try{o.muted=!1}catch{}o.onplay=()=>{this.isVideoPlayingIndex=e,this.cdr.detectChanges()},o.onpause=()=>{this.cdr.detectChanges()},o.onended=()=>{this.onMessageVideoEnded(e)},o.play().catch(s=>{console.warn("Inline video play blocked/failed:",s),this.isVideoPlayingIndex=null,r.playingVideoUrl="",this.isVideoEnabledIndex[e]=!1,this.cdr.detectChanges()})},50)}}toggleMessageVideo(e){let i=this.messages[e];!i||!i.videoUrl||(this.isVideoEnabledIndex[e]?this.stopInlineVideo(e):this.openMessageVideo(e))}stopInlineVideo(e){let i=document.getElementById(`inline-video-${e}`);if(i){try{i.pause()}catch{}try{i.currentTime=0}catch{}}let r=this.messages[e];r&&(r.playingVideoUrl=""),this.isVideoEnabledIndex[e]=!1,this.isVideoPlayingIndex===e&&(this.isVideoPlayingIndex=null),this.cdr.detectChanges()}onMessageVideoEnded(e){let i=this.messages[e];i&&(i.playingVideoUrl=""),this.isVideoEnabledIndex[e]=!1,this.isVideoPlayingIndex===e&&(this.isVideoPlayingIndex=null),this.cdr.detectChanges()}loadVoices(){let e=window.speechSynthesis.getVoices();if(!e.length){setTimeout(()=>this.loadVoices(),500);return}let i=["Google UK English Female","Google US English Female","Microsoft Zira - English (United States)","Microsoft Hazel - English (United Kingdom)","Google en-GB Female","Google en-US Female"];for(let r of i){let o=e.find(s=>s.name===r);if(o){this.selectedVoice=o;break}}this.selectedVoice||(this.selectedVoice=e.find(r=>r.name.toLowerCase().includes("female"))||e[0])}pauseAudio(){window.speechSynthesis.speaking&&!window.speechSynthesis.paused&&(window.speechSynthesis.pause(),this.isAudioPaused=!0,this.cdr.detectChanges())}stopListening(){this.isListening=!1,this.recognition&&this.recognition.stop()}toggleAudio(e){this.speechSynthesisInstance&&this.speechSynthesisInstance.text===e.text?e.isPlaying?(window.speechSynthesis.pause(),e.isPlaying=!1):(window.speechSynthesis.resume(),e.isPlaying=!0):(this.speechSynthesisInstance&&window.speechSynthesis.cancel(),this.messages.forEach(i=>i.isPlaying=!1),e.isPlaying=!0,this.speechSynthesisInstance=new SpeechSynthesisUtterance(e.text),this.speechSynthesisInstance.lang="en-US",this.speechSynthesisInstance.pitch=1,this.speechSynthesisInstance.rate=1,this.speechSynthesisInstance.onend=()=>{e.isPlaying=!1,this.speechSynthesisInstance=null},window.speechSynthesis.speak(this.speechSynthesisInstance))}goToHome(){this.router.navigate(["/home"])}copyToClipboard(e,i){navigator.clipboard.writeText(e).then(()=>{this.copySuccessIndex=i,setTimeout(()=>{this.copySuccessIndex=null},2e3)}).catch(r=>console.error("Failed to copy:",r))}handleButtonClick(){if(this.isAiResponding){this.stopAiResponse();return}if(this.userInput.trim().length>0){this.showQuestions=!1;let e=this.userInput;this.userInput="",this.sendMessage(e)}else this.isSpeaking&&!this.serverAudio?this.pauseAudio():this.isAudioPaused?this.resumeAudio():this.openMicrophonePopup()}startListening(){this.isListening=!0,this.isProcessingSpeech=!1,navigator.mediaDevices?.getUserMedia?navigator.mediaDevices.getUserMedia({audio:!0}).then(()=>{this.recognition?(this.recognition.start(),this.recognition.onresult=e=>{if(e.results&&e.results[0]){let i=e.results[0][0].transcript.trim();this.userInput=i,this.userInput.trim()&&this.sendMessage(),this.recognition.stop(),this.isListening=!1}},this.recognition.onnomatch=()=>alert("No speech detected. Please try again."),this.recognition.onend=()=>{this.isListening=!1},this.recognition.onerror=e=>{console.error("Speech Recognition Error:",e),this.isListening=!1,e.error==="not-allowed"&&alert("Microphone permission denied.")}):alert("Speech Recognition not supported in this browser.")}).catch(e=>{console.error("Microphone access denied:",e),this.errorMessage="Please enable microphone access to use this feature.",this.isListening=!0}):alert("Microphone access not supported in this browser.")}stopPopupListening(){try{this.recognition&&typeof this.recognition.stop=="function"&&this.recognition.stop()}catch(e){console.warn("Error stopping popup recognition:",e)}this._restoreRecognitionHandlers(),this.isListening=!1,this.cdr.detectChanges()}startPopupListening(){if(this.isListening=!0,this.isProcessingSpeech=!1,this.popupTranscript="",this.errorMessage="",!this.recognition){this.errorMessage="Speech Recognition not available in this browser.",this.isListening=!1,this.cdr.detectChanges();return}this._savedRecognitionOnResult=this.recognition.onresult,this._savedInterimResults=!!this.recognition.interimResults,this.recognition.interimResults=!0,this.popupListeningMode=!0,navigator.mediaDevices?.getUserMedia?navigator.mediaDevices.getUserMedia({audio:!0}).then(()=>{try{this.recognition.onresult=e=>{let i="",r="";for(let s=e.resultIndex;s{this.errorMessage="No speech detected. Please try again.",this.isListening=!1,this.cdr.detectChanges()},this.recognition.onend=()=>{this.isListening=!1,this.popupListeningMode=!1,this._restoreRecognitionHandlers(),this.cdr.detectChanges()},this.recognition.onerror=e=>{console.error("Popup Speech Recognition Error:",e),this.errorMessage="Speech recognition error.",this.isListening=!1,this.popupListeningMode=!1,this._restoreRecognitionHandlers(),this.cdr.detectChanges()},this.recognition.start()}catch(e){console.error("startPopupListening start error:",e),this.errorMessage="Unable to start speech recognition.",this.isListening=!1,this.popupListeningMode=!1,this._restoreRecognitionHandlers(),this.cdr.detectChanges()}}).catch(e=>{console.error("Microphone access denied for popup:",e),this.errorMessage="Please enable microphone access to use this feature.",this.isListening=!1,this.popupListeningMode=!1,this._restoreRecognitionHandlers(),this.cdr.detectChanges()}):(this.errorMessage="Microphone access not supported in this browser.",this.isListening=!1,this.popupListeningMode=!1,this._restoreRecognitionHandlers(),this.cdr.detectChanges())}_restoreRecognitionHandlers(){try{if(!this.recognition)return;this._savedRecognitionOnResult&&(this.recognition.onresult=this._savedRecognitionOnResult,this._savedRecognitionOnResult=null),this.recognition.interimResults=!!this._savedInterimResults,this._savedInterimResults=!1,this.popupListeningMode=!1}catch(e){console.warn("Error restoring recognition handlers:",e)}}addNewLine(e){e.key==="Enter"&&e.shiftKey&&(e.preventDefault(),this.userInput+=` +`)}adjustTextareaHeight(e){let i=e.target;i.style.height="auto",i.style.height=`${i.scrollHeight}px`}handleEnterPress(e){if(this.isSpeaking&&!this.serverAudio){e.preventDefault();return}e.key==="Enter"&&(e.shiftKey?(e.preventDefault(),this.userInput+=` +`):(e.preventDefault(),this.handleButtonClick()))}toggleVoice(){this.isVoiceEnabled=!this.isVoiceEnabled}toggleTutor(){this.isTutorEnabled=!this.isTutorEnabled}toggleSyllabus(){this.isSyllabusEnabled=!this.isSyllabusEnabled,this.saveToggleStates()}toggleBreadcrumb(){this.isBreadcrumbEnabled=!this.isBreadcrumbEnabled,this.saveToggleStates()}playGlobalVideoFromLatest(){let e=[...this.messages].reverse().findIndex(o=>o.from==="ai"&&o.videoUrl);if(e===-1){this.videoUrl="";return}let i=this.messages.length-1-e,r=this.messages[i];this.videoUrl=r.videoUrl||"",this.cdr.detectChanges()}saveToggleStates(){gi(this.platformId)&&(localStorage.setItem("voiceEnabled",String(this.isVoiceEnabled)),localStorage.setItem("tutorEnabled",String(this.isTutorEnabled)),localStorage.setItem("syllabusEnabled",String(this.isSyllabusEnabled)),localStorage.setItem("breadcrumbEnabled",String(this.isBreadcrumbEnabled)))}loadToggleStates(){gi(this.platformId)&&(this.isVoiceEnabled=localStorage.getItem("voiceEnabled")==="true",this.isTutorEnabled=localStorage.getItem("tutorEnabled")==="true",this.isSyllabusEnabled=localStorage.getItem("syllabusEnabled")!=="false",this.isBreadcrumbEnabled=localStorage.getItem("breadcrumbEnabled")==="true")}stopVoiceOnly(){try{(window.speechSynthesis.speaking||window.speechSynthesis.paused)&&window.speechSynthesis.cancel()}catch{}this.speechSynthesisInstance=null,this.isSpeaking=!1}stopAllAudioAndMute(){this.stopServerAudio();try{(window.speechSynthesis.speaking||window.speechSynthesis.paused)&&window.speechSynthesis.cancel()}catch{}this.isVoiceEnabled=!1,this.isMuted=!0,this.messages.forEach(e=>{e.isPlaying=!1}),this.isReadingIndex=null,this.isSpeaking=!1,this.isAudioPaused=!1,this.cdr.detectChanges()}clearVideoUrl(){this.videoUrl="",this.isTutorEnabled&&(this.isTutorEnabled=!1,this.saveToggleStates()),this.cdr.detectChanges()}stopAllVideo(){this.videoUrl="";try{Array.from(document.querySelectorAll('[id^="inline-video-"]')).forEach(i=>{try{i.pause(),i.currentTime=0}catch{}})}catch{}this.messages.forEach((e,i)=>{e.playingVideoUrl="",this.isVideoEnabledIndex[i]=!1}),this.cdr.detectChanges()}getButtonIcon(){return this.isAiResponding?"assets/images/chat/stop.png":this.serverAudio&&!this.serverAudio.paused?"assets/images/chat/microphone-icon.png":this.userInput.trim().length>0?"assets/images/chat/send-icon.png":this.isSpeaking&&!this.serverAudio?"assets/images/chat/pause-icon.png":this.isAudioPaused?"assets/images/chat/resume-icon.png":"assets/images/chat/microphone-icon.png"}goToHomePageShortcut(){this.router.navigate(["/home"])}openUserGuide(){this.showUserGuide=!0}closeUserGuide(){this.showUserGuide=!1}stopSpeaking(){try{(window.speechSynthesis?.speaking||window.speechSynthesis?.paused)&&window.speechSynthesis.cancel()}catch{}this.speechSynthesisInstance=null;try{this.stopServerAudio()}catch{}this.isSpeaking=!1,this.isAudioPaused=!1,this.aiResponseInterval&&(clearInterval(this.aiResponseInterval),this.aiResponseInterval=null),this.isAiResponding=!1,this.cdr.detectChanges()}muteMicrophone(){try{this.recognition&&typeof this.recognition.stop=="function"&&this.recognition.stop()}catch(e){console.warn("Error stopping recognition:",e)}this.isListening=!1,this.isProcessingSpeech=!1,this.errorMessage="",this.cdr.detectChanges()}openMicrophoneSettings(){let e=navigator.userAgent||"";try{e.includes("Edg")||e.includes("Edge")?window.open("edge://settings/content/microphone","_blank"):e.includes("Chrome")&&!e.includes("Chromium")?window.open("chrome://settings/content/microphone","_blank"):e.includes("Firefox")?window.open("about:preferences#privacy","_blank"):/Safari/.test(e)&&/Macintosh/.test(navigator.platform)?alert("Open Safari \u2192 Settings (or Preferences) \u2192 Websites \u2192 Microphone to enable access."):alert("Please check your browser's settings to enable the microphone.")}catch(i){console.error("openMicrophoneSettings error",i),alert("Unable to open settings automatically. Please check your browser's microphone/privacy settings.")}this.cdr.detectChanges()}_isShortFollowup(e){if(!e)return!1;let i=e.toLowerCase().replace(/[^\w\s?]/g,"").trim();return i?/\b(example|examples|more examples|another example|give example|more)\b/.test(i)?i.split(/\s+/).length<=8:["more","more?","another?","another example?"].includes(i):!1}stopReadAloud(){try{this.stopServerAudio()}catch{}this.isReadingIndex=null,this.isSpeaking=!1,this.cdr.detectChanges()}openMicrophonePopup(){this._recordingFinalBuffer="",this._recordingInterimBuffer="",this.popupTranscript="",this.errorMessage="",this.showMicPopup=!0,setTimeout(()=>this.startRecording(),200)}closeMicrophonePopup(){this.stopRecording(),this.showMicPopup=!1,this.popupTranscript="",this._recordingFinalBuffer="",this._recordingInterimBuffer="",this.errorMessage="",this.cdr.detectChanges()}startRecording(){return it(this,null,function*(){if(!this.recognition){this.errorMessage="Speech recognition not supported.";return}this._recordingFinalBuffer="",this._recordingInterimBuffer="",this.popupTranscript="",this.errorMessage="",this.isRecording=!0;try{this.recognition.interimResults=!0}catch{}try{this.recognition.start()}catch(e){console.warn("Could not start recognition",e),this._recognitionActive||setTimeout(()=>{try{this.recognition.start()}catch{}},300)}try{yield this.startAnalyzer()}catch(e){console.warn("Analyzer failed to start",e)}this.cdr.detectChanges()})}stopRecording(){return it(this,null,function*(){if(this._restartTimer&&(clearTimeout(this._restartTimer),this._restartTimer=null),this.recognition&&this.isRecording)try{this.recognition.stop()}catch{}try{this.stopAnalyzer()}catch{}this.isRecording=!1;let e=(this._recordingFinalBuffer||"").trim(),i=(this._recordingInterimBuffer||"").trim(),r=(e+" "+i).trim();if(!r){this.popupTranscript="",this.cdr.detectChanges();return}this.popupTranscript="Processing\u2026",this.cdr.detectChanges();let o=r;try{console.log("[VOICE] raw transcript:",r),o=yield this.punctuateText(r),console.log("[VOICE] punctuated result:",o)}catch(h){console.warn("Punctuation API failed",h),o=r}let s=this.normalizeTranscript(o);!/[.?!]$/.test(s)&&/^(who|what|when|where|why|how|which|whom|whose|is|are|am|was|were|do|does|did|can|could|would|will|shall|should|have|has|had)\b/i.test(r)&&(s=s+"?"),this.popupTranscript=s,this.cdr.detectChanges()})}extractAssistantContent(e){if(!e)return e;try{let i=/message=ChatCompletionMessage\(\s*content=(['"])((?:\\.|(?!\1).)*)\1/,r=e.match(i);if(r&&r[2])return r[2].replace(/\\'/g,"'").replace(/\\"/g,'"').trim();let o=/ChatCompletionMessage\(\s*content=(['"])((?:\\.|(?!\1).)*)\1/,s=e.match(o);if(s&&s[2])return s[2].replace(/\\'/g,"'").replace(/\\"/g,'"').trim();let d=/content=(['"])((?:\\.|(?!\1).)*)\1/,u=e.match(d);if(u&&u[2])return u[2].replace(/\\'/g,"'").replace(/\\"/g,'"').trim()}catch(i){console.warn("extractAssistantContent error",i)}return e.trim()}punctuateText(e){return it(this,null,function*(){if(!e)return e;try{let i=this.apiService.punctuate(e),r=yield Qd(i);if(r&&typeof r.punctuated=="string"&&r.punctuated.trim().length){let o=r.punctuated.trim();return this.extractAssistantContent(o)||o}}catch(i){console.warn("punctuateText error",i)}return e})}confirmAndSendTranscript(){let e=(this.popupTranscript||"").trim();if(!e){this.errorMessage="No speech captured";return}e=this.normalizeTranscript(e),this.transcriptConfirmed.emit(e);try{this.sendMessage(e)}catch(i){console.warn("Failed to send transcript as message",i)}this._recordingFinalBuffer="",this._recordingInterimBuffer="",this.showMicPopup=!1,this.isRecording=!1,this._restartTimer&&(clearTimeout(this._restartTimer),this._restartTimer=null),this.popupTranscript="",this.cdr.detectChanges()}normalizeTranscript(e){if(!e)return e;let i=e.trim(),r=[[/\b(full stop|period|dot)\b/gi,"."],[/\b(question mark|question)\b/gi,"?"],[/\b(exclamation mark|exclamation|exclaim)\b/gi,"!"],[/\b(comma)\b/gi,","],[/\b(colon)\b/gi,":"],[/\b(semicolon)\b/gi,";"],[/\b(ellipsis|dot dot dot|three dots)\b/gi,"..."],[/\b(new line|newline|new paragraph|line break)\b/gi,` +`],[/\b(open parenthesis|open bracket)\b/gi,"("],[/\b(close parenthesis|close bracket)\b/gi,")"],[/\b(double quote|quote|quotation)\b/gi,'"'],[/\b(single quote|apostrophe)\b/gi,"'"],[/\b(dash|hyphen)\b/gi,"-"],[/\b(percent|percent sign)\b/gi,"%"],[/\b(and sign|ampersand)\b/gi,"&"],[/\b(at sign)\b/gi,"@"],[/\b(forward slash|slash)\b/gi,"/"],[/\b(backslash)\b/gi,"\\\\"]];for(let[o,s]of r)i=i.replace(o,s);return i=i.replace(/\s+([,.:;?!%'\)\]\}])/g,"$1"),i=i.replace(/\s+([\(\[\{"'`])/g,"$1"),i=i.replace(/([.?!:;,%\)\]'"-]{1,3})(?!\s|\n|$)/g,"$1 "),i=i.replace(/[ \t]{2,}/g," "),i=i.split(` +`).map(o=>o.trim()).join(` +`),i=i.replace(/(^|[\n\.!\?]\s+)([a-z])/g,(o,s,d)=>s+d.toUpperCase()),i.trim()}startAnalyzer(){return it(this,null,function*(){if(gi(this.platformId)){if((!this.waveformCanvas||!this.waveformCanvas.nativeElement)&&(yield new Promise(e=>setTimeout(e,80)),!this.waveformCanvas||!this.waveformCanvas.nativeElement)){console.warn("Waveform canvas not available");return}try{if(!this.audioContext||this.audioContext&&this.audioContext.state==="closed")this.audioContext=new(window.AudioContext||window.webkitAudioContext);else if(this.audioContext.state==="suspended")try{yield this.audioContext.resume()}catch{}if(this.mediaStream){try{this.mediaStream.getTracks().forEach(s=>s.stop())}catch{}this.mediaStream=null}let e=yield navigator.mediaDevices.getUserMedia({audio:!0});this.mediaStream=e;let i=this.audioContext.createMediaStreamSource(e);try{if(this.analyser)try{this.analyser.disconnect()}catch{}}catch{}let r=this.audioContext.createAnalyser();r.fftSize=2048,r.smoothingTimeConstant=.85,i.connect(r),this.analyser=r;let o=r.fftSize;this.dataArray=new Uint8Array(o),this.drawWaveform()}catch(e){console.warn("startAnalyzer error",e);try{this.mediaStream&&(this.mediaStream.getTracks().forEach(i=>i.stop()),this.mediaStream=null)}catch{}try{this.analyser&&(this.analyser.disconnect(),this.analyser=null)}catch{}throw this.dataArray=null,e}}})}stopAnalyzer(){try{if(this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null),this.analyser){try{this.analyser.disconnect()}catch{}this.analyser=null}if(this.mediaStream){try{this.mediaStream.getTracks().forEach(e=>e.stop())}catch{}this.mediaStream=null}try{this.audioContext&&typeof this.audioContext.close=="function"?this.audioContext.close().catch(()=>{}).finally(()=>{this.audioContext=null}):this.audioContext=null}catch{this.audioContext=null}if(this.dataArray=null,this.waveformCanvas&&this.waveformCanvas.nativeElement){let e=this.waveformCanvas.nativeElement,i=e.getContext("2d");i&&i.clearRect(0,0,e.width,e.height)}}catch(e){console.warn("stopAnalyzer error",e)}}drawWaveform(){if(!this.waveformCanvas||!this.waveformCanvas.nativeElement||!this.analyser||!this.dataArray)return;let e=this.waveformCanvas.nativeElement,i=e.getContext("2d");if(!i)return;let r=window.devicePixelRatio||1,o=()=>{let d=e.getBoundingClientRect(),u=Math.max(1,Math.floor(d.width*r)),h=Math.max(1,Math.floor(d.height*r));(e.width!==u||e.height!==h)&&(e.width=u,e.height=h)},s=()=>{if(!this.waveformCanvas||!this.waveformCanvas.nativeElement||!this.analyser||!this.dataArray){this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null);return}let d=e.getBoundingClientRect();if(d.width===0||d.height===0||!e.offsetParent){this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null);return}o();try{this.analyser.getByteTimeDomainData(this.dataArray)}catch(V){console.warn("analyser.getByteTimeDomainData failed",V),this.animationFrameId&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null);return}let u=0;for(let V=0;V{class t{constructor(e){this._platformId=e,this.isBrowser=this._platformId?gi(this._platformId):typeof document=="object"&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!!(window.chrome||Pf)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}static{this.\u0275fac=function(i){return new(i||t)(I(Kt))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var ia;function aO(){if(ia==null&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>ia=!0}))}finally{ia=ia||!1}return ia}function Oo(t){return aO()?t:!!t.capture}var Dr;function xy(){if(Dr==null){if(typeof document!="object"||!document||typeof Element!="function"||!Element)return Dr=!1,Dr;if("scrollBehavior"in document.documentElement.style)Dr=!0;else{let t=Element.prototype.scrollTo;t?Dr=!/\{\s*\[native code\]\s*\}/.test(t.toString()):Dr=!1}}return Dr}var Df;function lO(){if(Df==null){let t=typeof document<"u"?document.head:null;Df=!!(t&&(t.createShadowRoot||t.attachShadow))}return Df}function Cy(t){if(lO()){let n=t.getRootNode?t.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&n instanceof ShadowRoot)return n}return null}function ra(){let t=typeof document<"u"&&document?document.activeElement:null;for(;t&&t.shadowRoot;){let n=t.shadowRoot.activeElement;if(n===t)break;t=n}return t}function Bn(t){return t.composedPath?t.composedPath()[0]:t.target}function oa(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}var cO=new N("cdk-dir-doc",{providedIn:"root",factory:dO});function dO(){return R(le)}var uO=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;function hO(t){let n=t?.toLowerCase()||"";return n==="auto"&&typeof navigator<"u"&&navigator?.language?uO.test(navigator.language)?"rtl":"ltr":n==="rtl"?"rtl":"ltr"}var aa=(()=>{class t{constructor(e){if(this.value="ltr",this.change=new de,e){let i=e.body?e.body.dir:null,r=e.documentElement?e.documentElement.dir:null;this.value=hO(i||r||"ltr")}}ngOnDestroy(){this.change.complete()}static{this.\u0275fac=function(i){return new(i||t)(I(cO,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Qi=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({})}}return t})();var fO=20,Ey=(()=>{class t{constructor(e,i,r){this._ngZone=e,this._platform=i,this._scrolled=new ue,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=r}register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){let i=this.scrollContainers.get(e);i&&(i.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=fO){return this._platform.isBrowser?new oe(i=>{this._globalSubscription||this._addGlobalListener();let r=e>0?this._scrolled.pipe(Wa(e)).subscribe(i):this._scrolled.subscribe(i);return this._scrolledCount++,()=>{r.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):j()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((e,i)=>this.deregister(i)),this._scrolled.complete()}ancestorScrolled(e,i){let r=this.getAncestorScrollContainers(e);return this.scrolled(i).pipe(Ye(o=>!o||r.indexOf(o)>-1))}getAncestorScrollContainers(e){let i=[];return this.scrollContainers.forEach((r,o)=>{this._scrollableContainsElement(o,e)&&i.push(o)}),i}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(e,i){let r=_i(i),o=e.getElementRef().nativeElement;do if(r==o)return!0;while(r=r.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>{let e=this._getWindow();return $o(e.document,"scroll").subscribe(()=>this._scrolled.next())})}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}static{this.\u0275fac=function(i){return new(i||t)(I(Z),I(ut),I(le,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var mO=20,kf=(()=>{class t{constructor(e,i,r){this._platform=e,this._change=new ue,this._changeListener=o=>{this._change.next(o)},this._document=r,i.runOutsideAngular(()=>{if(e.isBrowser){let o=this._getWindow();o.addEventListener("resize",this._changeListener),o.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){let e=this._getWindow();e.removeEventListener("resize",this._changeListener),e.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();let e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){let e=this.getViewportScrollPosition(),{width:i,height:r}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+r,right:e.left+i,height:r,width:i}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};let e=this._document,i=this._getWindow(),r=e.documentElement,o=r.getBoundingClientRect(),s=-o.top||e.body.scrollTop||i.scrollY||r.scrollTop||0,d=-o.left||e.body.scrollLeft||i.scrollX||r.scrollLeft||0;return{top:s,left:d}}change(e=mO){return e>0?this._change.pipe(Wa(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){let e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}static{this.\u0275fac=function(i){return new(i||t)(I(ut),I(Z),I(le,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Sy=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({})}}return t})(),Of=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({imports:[Qi,Sy,Qi,Sy]})}}return t})();var la=class{attach(n){return this._attachedHost=n,n.attach(this)}detach(){let n=this._attachedHost;n!=null&&(this._attachedHost=null,n.detach())}get isAttached(){return this._attachedHost!=null}setAttachedHost(n){this._attachedHost=n}},To=class extends la{constructor(n,e,i,r,o){super(),this.component=n,this.viewContainerRef=e,this.injector=i,this.componentFactoryResolver=r,this.projectableNodes=o}},Ao=class extends la{constructor(n,e,i,r){super(),this.templateRef=n,this.viewContainerRef=e,this.context=i,this.injector=r}get origin(){return this.templateRef.elementRef}attach(n,e=this.context){return this.context=e,super.attach(n)}detach(){return this.context=void 0,super.detach()}},Tf=class extends la{constructor(n){super(),this.element=n instanceof be?n.nativeElement:n}},Ro=class{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(n){if(n instanceof To)return this._attachedPortal=n,this.attachComponentPortal(n);if(n instanceof Ao)return this._attachedPortal=n,this.attachTemplatePortal(n);if(this.attachDomPortal&&n instanceof Tf)return this._attachedPortal=n,this.attachDomPortal(n)}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(n){this._disposeFn=n}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}};var ud=class extends Ro{constructor(n,e,i,r,o){super(),this.outletElement=n,this._componentFactoryResolver=e,this._appRef=i,this._defaultInjector=r,this.attachDomPortal=s=>{this._document;let d=s.element;d.parentNode;let u=this._document.createComment("dom-portal");d.parentNode.insertBefore(u,d),this.outletElement.appendChild(d),this._attachedPortal=s,super.setDisposeFn(()=>{u.parentNode&&u.parentNode.replaceChild(d,u)})},this._document=o}attachComponentPortal(n){let i=(n.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(n.component),r;return n.viewContainerRef?(r=n.viewContainerRef.createComponent(i,n.viewContainerRef.length,n.injector||n.viewContainerRef.injector,n.projectableNodes||void 0),this.setDisposeFn(()=>r.destroy())):(r=i.create(n.injector||this._defaultInjector||ot.NULL),this._appRef.attachView(r.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(r.hostView),r.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(r)),this._attachedPortal=n,r}attachTemplatePortal(n){let e=n.viewContainerRef,i=e.createEmbeddedView(n.templateRef,n.context,{injector:n.injector});return i.rootNodes.forEach(r=>this.outletElement.appendChild(r)),i.detectChanges(),this.setDisposeFn(()=>{let r=e.indexOf(i);r!==-1&&e.remove(r)}),this._attachedPortal=n,i}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(n){return n.hostView.rootNodes[0]}};var ca=(()=>{class t extends Ro{constructor(e,i,r){super(),this._componentFactoryResolver=e,this._viewContainerRef=i,this._isInitialized=!1,this.attached=new de,this.attachDomPortal=o=>{this._document;let s=o.element;s.parentNode;let d=this._document.createComment("dom-portal");o.setAttachedHost(this),s.parentNode.insertBefore(d,s),this._getRootNode().appendChild(s),this._attachedPortal=o,super.setDisposeFn(()=>{d.parentNode&&d.parentNode.replaceChild(s,d)})},this._document=r}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);let i=e.viewContainerRef!=null?e.viewContainerRef:this._viewContainerRef,o=(e.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(e.component),s=i.createComponent(o,i.length,e.injector||i.injector,e.projectableNodes||void 0);return i!==this._viewContainerRef&&this._getRootNode().appendChild(s.hostView.rootNodes[0]),super.setDisposeFn(()=>s.destroy()),this._attachedPortal=e,this._attachedRef=s,this.attached.emit(s),s}attachTemplatePortal(e){e.setAttachedHost(this);let i=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=i,this.attached.emit(i),i}_getRootNode(){let e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}static{this.\u0275fac=function(i){return new(i||t)(M(Fi),M(cn),M(le))}}static{this.\u0275dir=ve({type:t,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:[ee.None,"cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],standalone:!0,features:[st]})}}return t})();var Pr=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({})}}return t})();function hd(t,...n){return n.length?n.some(e=>t[e]):t.altKey||t.shiftKey||t.ctrlKey||t.metaKey}var My=xy(),Af=class{constructor(n,e){this._viewportRuler=n,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=e}attach(){}enable(){if(this._canBeEnabled()){let n=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=n.style.left||"",this._previousHTMLStyles.top=n.style.top||"",n.style.left=lt(-this._previousScrollPosition.left),n.style.top=lt(-this._previousScrollPosition.top),n.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){let n=this._document.documentElement,e=this._document.body,i=n.style,r=e.style,o=i.scrollBehavior||"",s=r.scrollBehavior||"";this._isEnabled=!1,i.left=this._previousHTMLStyles.left,i.top=this._previousHTMLStyles.top,n.classList.remove("cdk-global-scrollblock"),My&&(i.scrollBehavior=r.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),My&&(i.scrollBehavior=o,r.scrollBehavior=s)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;let e=this._document.body,i=this._viewportRuler.getViewportSize();return e.scrollHeight>i.height||e.scrollWidth>i.width}};var Rf=class{constructor(n,e,i,r){this._scrollDispatcher=n,this._ngZone=e,this._viewportRuler=i,this._config=r,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(n){this._overlayRef,this._overlayRef=n}enable(){if(this._scrollSubscription)return;let n=this._scrollDispatcher.scrolled(0).pipe(Ye(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=n.subscribe(()=>{let e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=n.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},pd=class{enable(){}disable(){}attach(){}};function Ff(t,n){return n.some(e=>{let i=t.bottome.bottom,o=t.righte.right;return i||r||o||s})}function Iy(t,n){return n.some(e=>{let i=t.tope.bottom,o=t.lefte.right;return i||r||o||s})}var Nf=class{constructor(n,e,i,r){this._scrollDispatcher=n,this._viewportRuler=e,this._ngZone=i,this._config=r,this._scrollSubscription=null}attach(n){this._overlayRef,this._overlayRef=n}enable(){if(!this._scrollSubscription){let n=this._config?this._config.scrollThrottle:0;this._scrollSubscription=this._scrollDispatcher.scrolled(n).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){let e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:i,height:r}=this._viewportRuler.getViewportSize();Ff(e,[{width:i,height:r,bottom:r,right:i,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}})}}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}},vO=(()=>{class t{constructor(e,i,r,o){this._scrollDispatcher=e,this._viewportRuler=i,this._ngZone=r,this.noop=()=>new pd,this.close=s=>new Rf(this._scrollDispatcher,this._ngZone,this._viewportRuler,s),this.block=()=>new Af(this._viewportRuler,this._document),this.reposition=s=>new Nf(this._scrollDispatcher,this._viewportRuler,this._ngZone,s),this._document=o}static{this.\u0275fac=function(i){return new(i||t)(I(Ey),I(kf),I(Z),I(le))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),da=class{constructor(n){if(this.scrollStrategy=new pd,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,n){let e=Object.keys(n);for(let i of e)n[i]!==void 0&&(this[i]=n[i])}}};var Lf=class{constructor(n,e){this.connectionPair=n,this.scrollableViewProperties=e}};var Ty=(()=>{class t{constructor(e){this._attachedOverlays=[],this._document=e}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){let i=this._attachedOverlays.indexOf(e);i>-1&&this._attachedOverlays.splice(i,1),this._attachedOverlays.length===0&&this.detach()}static{this.\u0275fac=function(i){return new(i||t)(I(le))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),_O=(()=>{class t extends Ty{constructor(e,i){super(e),this._ngZone=i,this._keydownListener=r=>{let o=this._attachedOverlays;for(let s=o.length-1;s>-1;s--)if(o[s]._keydownEvents.observers.length>0){let d=o[s]._keydownEvents;this._ngZone?this._ngZone.run(()=>d.next(r)):d.next(r);break}}}add(e){super.add(e),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}static{this.\u0275fac=function(i){return new(i||t)(I(le),I(Z,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),bO=(()=>{class t extends Ty{constructor(e,i,r){super(e),this._platform=i,this._ngZone=r,this._cursorStyleIsSet=!1,this._pointerDownListener=o=>{this._pointerDownEventTarget=Bn(o)},this._clickListener=o=>{let s=Bn(o),d=o.type==="click"&&this._pointerDownEventTarget?this._pointerDownEventTarget:s;this._pointerDownEventTarget=null;let u=this._attachedOverlays.slice();for(let h=u.length-1;h>-1;h--){let p=u[h];if(p._outsidePointerEvents.observers.length<1||!p.hasAttached())continue;if(p.overlayElement.contains(s)||p.overlayElement.contains(d))break;let m=p._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>m.next(o)):m.next(o)}}}add(e){if(super.add(e),!this._isAttached){let i=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(i)):this._addEventListeners(i),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=i.style.cursor,i.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){let e=this._document.body;e.removeEventListener("pointerdown",this._pointerDownListener,!0),e.removeEventListener("click",this._clickListener,!0),e.removeEventListener("auxclick",this._clickListener,!0),e.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(e.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(e){e.addEventListener("pointerdown",this._pointerDownListener,!0),e.addEventListener("click",this._clickListener,!0),e.addEventListener("auxclick",this._clickListener,!0),e.addEventListener("contextmenu",this._clickListener,!0)}static{this.\u0275fac=function(i){return new(i||t)(I(le),I(ut),I(Z,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),Fo=(()=>{class t{constructor(e,i){this._platform=i,this._document=e}ngOnDestroy(){this._containerElement?.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){let e="cdk-overlay-container";if(this._platform.isBrowser||oa()){let r=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let o=0;othis._backdropClick.next(m),this._backdropTransitionendHandler=m=>{this._disposeBackdrop(m.target)},this._keydownEvents=new ue,this._outsidePointerEvents=new ue,r.scrollStrategy&&(this._scrollStrategy=r.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=r.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(n){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);let e=this._portalOutlet.attach(n);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe(ht(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),typeof e?.onDestroy=="function"&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();let n=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),n}dispose(){let n=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),this._host?.remove(),this._previousHostParent=this._pane=this._host=null,n&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(n){n!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=n,this.hasAttached()&&(n.attach(this),this.updatePosition()))}updateSize(n){this._config=A(A({},this._config),n),this._updateElementSize()}setDirection(n){this._config=ke(A({},this._config),{direction:n}),this._updateElementDirection()}addPanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!0)}removePanelClass(n){this._pane&&this._toggleClasses(this._pane,n,!1)}getDirection(){let n=this._config.direction;return n?typeof n=="string"?n:n.value:"ltr"}updateScrollStrategy(n){n!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=n,this.hasAttached()&&(n.attach(this),n.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;let n=this._pane.style;n.width=lt(this._config.width),n.height=lt(this._config.height),n.minWidth=lt(this._config.minWidth),n.minHeight=lt(this._config.minHeight),n.maxWidth=lt(this._config.maxWidth),n.maxHeight=lt(this._config.maxHeight)}_togglePointerEvents(n){this._pane.style.pointerEvents=n?"":"none"}_attachBackdrop(){let n="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(n)})}):this._backdropElement.classList.add(n)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){let n=this._backdropElement;if(n){if(this._animationsDisabled){this._disposeBackdrop(n);return}n.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{n.addEventListener("transitionend",this._backdropTransitionendHandler)}),n.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(n)},500))}}_toggleClasses(n,e,i){let r=ko(e||[]).filter(o=>!!o);r.length&&(i?n.classList.add(...r):n.classList.remove(...r))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{let n=this._ngZone.onStable.pipe(fn(Wo(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||this._pane.children.length===0)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),n.unsubscribe())})})}_disposeScrollStrategy(){let n=this._scrollStrategy;n&&(n.disable(),n.detach&&n.detach())}_disposeBackdrop(n){n&&(n.removeEventListener("click",this._backdropClickHandler),n.removeEventListener("transitionend",this._backdropTransitionendHandler),n.remove(),this._backdropElement===n&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}},Dy="cdk-overlay-connected-position-bounding-box",yO=/([A-Za-z%]+)$/,Vf=class{get positions(){return this._preferredPositions}constructor(n,e,i,r,o){this._viewportRuler=e,this._document=i,this._platform=r,this._overlayContainer=o,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new ue,this._resizeSubscription=qe.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(n)}attach(n){this._overlayRef&&this._overlayRef,this._validatePositions(),n.hostElement.classList.add(Dy),this._overlayRef=n,this._boundingBox=n.hostElement,this._pane=n.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition){this.reapplyLastPosition();return}this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let n=this._originRect,e=this._overlayRect,i=this._viewportRect,r=this._containerRect,o=[],s;for(let d of this._preferredPositions){let u=this._getOriginPoint(n,r,d),h=this._getOverlayPoint(u,e,d),p=this._getOverlayFit(h,e,i,d);if(p.isCompletelyWithinViewport){this._isPushed=!1,this._applyPosition(d,u);return}if(this._canFitWithFlexibleDimensions(p,h,i)){o.push({position:d,origin:u,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(u,d)});continue}(!s||s.overlayFit.visibleAreau&&(u=p,d=h)}this._isPushed=!1,this._applyPosition(d.position,d.origin);return}if(this._canPush){this._isPushed=!0,this._applyPosition(s.position,s.originPoint);return}this._applyPosition(s.position,s.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&kr(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(Dy),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;let n=this._lastPosition;if(n){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();let e=this._getOriginPoint(this._originRect,this._containerRect,n);this._applyPosition(n,e)}else this.apply()}withScrollableContainers(n){return this._scrollables=n,this}withPositions(n){return this._preferredPositions=n,n.indexOf(this._lastPosition)===-1&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(n){return this._viewportMargin=n,this}withFlexibleDimensions(n=!0){return this._hasFlexibleDimensions=n,this}withGrowAfterOpen(n=!0){return this._growAfterOpen=n,this}withPush(n=!0){return this._canPush=n,this}withLockedPosition(n=!0){return this._positionLocked=n,this}setOrigin(n){return this._origin=n,this}withDefaultOffsetX(n){return this._offsetX=n,this}withDefaultOffsetY(n){return this._offsetY=n,this}withTransformOriginOn(n){return this._transformOriginSelector=n,this}_getOriginPoint(n,e,i){let r;if(i.originX=="center")r=n.left+n.width/2;else{let s=this._isRtl()?n.right:n.left,d=this._isRtl()?n.left:n.right;r=i.originX=="start"?s:d}e.left<0&&(r-=e.left);let o;return i.originY=="center"?o=n.top+n.height/2:o=i.originY=="top"?n.top:n.bottom,e.top<0&&(o-=e.top),{x:r,y:o}}_getOverlayPoint(n,e,i){let r;i.overlayX=="center"?r=-e.width/2:i.overlayX==="start"?r=this._isRtl()?-e.width:0:r=this._isRtl()?0:-e.width;let o;return i.overlayY=="center"?o=-e.height/2:o=i.overlayY=="top"?0:-e.height,{x:n.x+r,y:n.y+o}}_getOverlayFit(n,e,i,r){let o=ky(e),{x:s,y:d}=n,u=this._getOffset(r,"x"),h=this._getOffset(r,"y");u&&(s+=u),h&&(d+=h);let p=0-s,m=s+o.width-i.width,b=0-d,w=d+o.height-i.height,S=this._subtractOverflows(o.width,p,m),D=this._subtractOverflows(o.height,b,w),O=S*D;return{visibleArea:O,isCompletelyWithinViewport:o.width*o.height===O,fitsInViewportVertically:D===o.height,fitsInViewportHorizontally:S==o.width}}_canFitWithFlexibleDimensions(n,e,i){if(this._hasFlexibleDimensions){let r=i.bottom-e.y,o=i.right-e.x,s=Py(this._overlayRef.getConfig().minHeight),d=Py(this._overlayRef.getConfig().minWidth),u=n.fitsInViewportVertically||s!=null&&s<=r,h=n.fitsInViewportHorizontally||d!=null&&d<=o;return u&&h}return!1}_pushOverlayOnScreen(n,e,i){if(this._previousPushAmount&&this._positionLocked)return{x:n.x+this._previousPushAmount.x,y:n.y+this._previousPushAmount.y};let r=ky(e),o=this._viewportRect,s=Math.max(n.x+r.width-o.width,0),d=Math.max(n.y+r.height-o.height,0),u=Math.max(o.top-i.top-n.y,0),h=Math.max(o.left-i.left-n.x,0),p=0,m=0;return r.width<=o.width?p=h||-s:p=n.xS&&!this._isInitialRender&&!this._growAfterOpen&&(s=n.y-S/2)}let u=e.overlayX==="start"&&!r||e.overlayX==="end"&&r,h=e.overlayX==="end"&&!r||e.overlayX==="start"&&r,p,m,b;if(h)b=i.width-n.x+this._viewportMargin*2,p=n.x-this._viewportMargin;else if(u)m=n.x,p=i.right-n.x;else{let w=Math.min(i.right-n.x+i.left,n.x),S=this._lastBoundingBoxSize.width;p=w*2,m=n.x-w,p>S&&!this._isInitialRender&&!this._growAfterOpen&&(m=n.x-S/2)}return{top:s,left:m,bottom:d,right:b,width:p,height:o}}_setBoundingBoxStyles(n,e){let i=this._calculateBoundingBoxRect(n,e);!this._isInitialRender&&!this._growAfterOpen&&(i.height=Math.min(i.height,this._lastBoundingBoxSize.height),i.width=Math.min(i.width,this._lastBoundingBoxSize.width));let r={};if(this._hasExactPosition())r.top=r.left="0",r.bottom=r.right=r.maxHeight=r.maxWidth="",r.width=r.height="100%";else{let o=this._overlayRef.getConfig().maxHeight,s=this._overlayRef.getConfig().maxWidth;r.height=lt(i.height),r.top=lt(i.top),r.bottom=lt(i.bottom),r.width=lt(i.width),r.left=lt(i.left),r.right=lt(i.right),e.overlayX==="center"?r.alignItems="center":r.alignItems=e.overlayX==="end"?"flex-end":"flex-start",e.overlayY==="center"?r.justifyContent="center":r.justifyContent=e.overlayY==="bottom"?"flex-end":"flex-start",o&&(r.maxHeight=lt(o)),s&&(r.maxWidth=lt(s))}this._lastBoundingBoxSize=i,kr(this._boundingBox.style,r)}_resetBoundingBoxStyles(){kr(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){kr(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(n,e){let i={},r=this._hasExactPosition(),o=this._hasFlexibleDimensions,s=this._overlayRef.getConfig();if(r){let p=this._viewportRuler.getViewportScrollPosition();kr(i,this._getExactOverlayY(e,n,p)),kr(i,this._getExactOverlayX(e,n,p))}else i.position="static";let d="",u=this._getOffset(e,"x"),h=this._getOffset(e,"y");u&&(d+=`translateX(${u}px) `),h&&(d+=`translateY(${h}px)`),i.transform=d.trim(),s.maxHeight&&(r?i.maxHeight=lt(s.maxHeight):o&&(i.maxHeight="")),s.maxWidth&&(r?i.maxWidth=lt(s.maxWidth):o&&(i.maxWidth="")),kr(this._pane.style,i)}_getExactOverlayY(n,e,i){let r={top:"",bottom:""},o=this._getOverlayPoint(e,this._overlayRect,n);if(this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,i)),n.overlayY==="bottom"){let s=this._document.documentElement.clientHeight;r.bottom=`${s-(o.y+this._overlayRect.height)}px`}else r.top=lt(o.y);return r}_getExactOverlayX(n,e,i){let r={left:"",right:""},o=this._getOverlayPoint(e,this._overlayRect,n);this._isPushed&&(o=this._pushOverlayOnScreen(o,this._overlayRect,i));let s;if(this._isRtl()?s=n.overlayX==="end"?"left":"right":s=n.overlayX==="end"?"right":"left",s==="right"){let d=this._document.documentElement.clientWidth;r.right=`${d-(o.x+this._overlayRect.width)}px`}else r.left=lt(o.x);return r}_getScrollVisibility(){let n=this._getOriginRect(),e=this._pane.getBoundingClientRect(),i=this._scrollables.map(r=>r.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:Iy(n,i),isOriginOutsideView:Ff(n,i),isOverlayClipped:Iy(e,i),isOverlayOutsideView:Ff(e,i)}}_subtractOverflows(n,...e){return e.reduce((i,r)=>i-Math.max(r,0),n)}_getNarrowedViewportRect(){let n=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,i=this._viewportRuler.getViewportScrollPosition();return{top:i.top+this._viewportMargin,left:i.left+this._viewportMargin,right:i.left+n-this._viewportMargin,bottom:i.top+e-this._viewportMargin,width:n-2*this._viewportMargin,height:e-2*this._viewportMargin}}_isRtl(){return this._overlayRef.getDirection()==="rtl"}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(n,e){return e==="x"?n.offsetX==null?this._offsetX:n.offsetX:n.offsetY==null?this._offsetY:n.offsetY}_validatePositions(){}_addPanelClasses(n){this._pane&&ko(n).forEach(e=>{e!==""&&this._appliedPanelClasses.indexOf(e)===-1&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(n=>{this._pane.classList.remove(n)}),this._appliedPanelClasses=[])}_getOriginRect(){let n=this._origin;if(n instanceof be)return n.nativeElement.getBoundingClientRect();if(n instanceof Element)return n.getBoundingClientRect();let e=n.width||0,i=n.height||0;return{top:n.y,bottom:n.y+i,left:n.x,right:n.x+e,height:i,width:e}}};function kr(t,n){for(let e in n)n.hasOwnProperty(e)&&(t[e]=n[e]);return t}function Py(t){if(typeof t!="number"&&t!=null){let[n,e]=t.split(yO);return!e||e==="px"?parseFloat(n):null}return t||null}function ky(t){return{top:Math.floor(t.top),right:Math.floor(t.right),bottom:Math.floor(t.bottom),left:Math.floor(t.left),width:Math.floor(t.width),height:Math.floor(t.height)}}function wO(t,n){return t===n?!0:t.isOriginClipped===n.isOriginClipped&&t.isOriginOutsideView===n.isOriginOutsideView&&t.isOverlayClipped===n.isOverlayClipped&&t.isOverlayOutsideView===n.isOverlayOutsideView}var Oy="cdk-global-overlay-wrapper",jf=class{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(n){let e=n.getConfig();this._overlayRef=n,this._width&&!e.width&&n.updateSize({width:this._width}),this._height&&!e.height&&n.updateSize({height:this._height}),n.hostElement.classList.add(Oy),this._isDisposed=!1}top(n=""){return this._bottomOffset="",this._topOffset=n,this._alignItems="flex-start",this}left(n=""){return this._xOffset=n,this._xPosition="left",this}bottom(n=""){return this._topOffset="",this._bottomOffset=n,this._alignItems="flex-end",this}right(n=""){return this._xOffset=n,this._xPosition="right",this}start(n=""){return this._xOffset=n,this._xPosition="start",this}end(n=""){return this._xOffset=n,this._xPosition="end",this}width(n=""){return this._overlayRef?this._overlayRef.updateSize({width:n}):this._width=n,this}height(n=""){return this._overlayRef?this._overlayRef.updateSize({height:n}):this._height=n,this}centerHorizontally(n=""){return this.left(n),this._xPosition="center",this}centerVertically(n=""){return this.top(n),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;let n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,i=this._overlayRef.getConfig(),{width:r,height:o,maxWidth:s,maxHeight:d}=i,u=(r==="100%"||r==="100vw")&&(!s||s==="100%"||s==="100vw"),h=(o==="100%"||o==="100vh")&&(!d||d==="100%"||d==="100vh"),p=this._xPosition,m=this._xOffset,b=this._overlayRef.getConfig().direction==="rtl",w="",S="",D="";u?D="flex-start":p==="center"?(D="center",b?S=m:w=m):b?p==="left"||p==="end"?(D="flex-end",w=m):(p==="right"||p==="start")&&(D="flex-start",S=m):p==="left"||p==="start"?(D="flex-start",w=m):(p==="right"||p==="end")&&(D="flex-end",S=m),n.position=this._cssPosition,n.marginLeft=u?"0":w,n.marginTop=h?"0":this._topOffset,n.marginBottom=this._bottomOffset,n.marginRight=u?"0":S,e.justifyContent=D,e.alignItems=h?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;let n=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,i=e.style;e.classList.remove(Oy),i.justifyContent=i.alignItems=n.marginTop=n.marginBottom=n.marginLeft=n.marginRight=n.position="",this._overlayRef=null,this._isDisposed=!0}},xO=(()=>{class t{constructor(e,i,r,o){this._viewportRuler=e,this._document=i,this._platform=r,this._overlayContainer=o}global(){return new jf}flexibleConnectedTo(e){return new Vf(e,this._viewportRuler,this._document,this._platform,this._overlayContainer)}static{this.\u0275fac=function(i){return new(i||t)(I(kf),I(le),I(ut),I(Fo))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),CO=0,Un=(()=>{class t{constructor(e,i,r,o,s,d,u,h,p,m,b,w){this.scrollStrategies=e,this._overlayContainer=i,this._componentFactoryResolver=r,this._positionBuilder=o,this._keyboardDispatcher=s,this._injector=d,this._ngZone=u,this._document=h,this._directionality=p,this._location=m,this._outsideClickDispatcher=b,this._animationsModuleType=w}create(e){let i=this._createHostElement(),r=this._createPaneElement(i),o=this._createPortalOutlet(r),s=new da(e);return s.direction=s.direction||this._directionality.value,new bi(o,i,r,s,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,this._animationsModuleType==="NoopAnimations")}position(){return this._positionBuilder}_createPaneElement(e){let i=this._document.createElement("div");return i.id=`cdk-overlay-${CO++}`,i.classList.add("cdk-overlay-pane"),e.appendChild(i),i}_createHostElement(){let e=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(e),e}_createPortalOutlet(e){return this._appRef||(this._appRef=this._injector.get(hi)),new ud(e,this._componentFactoryResolver,this._appRef,this._injector,this._document)}static{this.\u0275fac=function(i){return new(i||t)(I(vO),I(Fo),I(Fi),I(xO),I(_O),I(ot),I(Z),I(le),I(aa),I(ei),I(bO),I(di,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var SO=new N("cdk-connected-overlay-scroll-strategy",{providedIn:"root",factory:()=>{let t=R(Un);return()=>t.scrollStrategies.reposition()}});function EO(t){return()=>t.scrollStrategies.reposition()}var MO={provide:SO,deps:[Un],useFactory:EO},fd=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({providers:[Un,MO],imports:[Qi,Pr,Of,Of]})}}return t})();var IO=(()=>{class t{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Ry=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({providers:[IO]})}}return t})();var Fy=new Set,Or,DO=(()=>{class t{constructor(e,i){this._platform=e,this._nonce=i,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):kO}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&PO(e,this._nonce),this._matchMedia(e)}static{this.\u0275fac=function(i){return new(i||t)(I(ut),I(hs,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function PO(t,n){if(!Fy.has(t))try{Or||(Or=document.createElement("style"),n&&Or.setAttribute("nonce",n),Or.setAttribute("type","text/css"),document.head.appendChild(Or)),Or.sheet&&(Or.sheet.insertRule(`@media ${t} {body{ }}`,0),Fy.add(t))}catch(e){console.error(e)}}function kO(t){return{matches:t==="all"||t==="",media:t,addListener:()=>{},removeListener:()=>{}}}var Ly=(()=>{class t{constructor(e,i){this._mediaMatcher=e,this._zone=i,this._queries=new Map,this._destroySubject=new ue}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return Ny(ko(e)).some(r=>this._registerQuery(r).mql.matches)}observe(e){let r=Ny(ko(e)).map(s=>this._registerQuery(s).observable),o=ir(r);return o=xi(o.pipe(ht(1)),o.pipe(qo(1),qa(0))),o.pipe(Y(s=>{let d={matches:!1,breakpoints:{}};return s.forEach(({matches:u,query:h})=>{d.matches=d.matches||u,d.breakpoints[h]=u}),d}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);let i=this._mediaMatcher.matchMedia(e),o={observable:new oe(s=>{let d=u=>this._zone.run(()=>s.next(u));return i.addListener(d),()=>{i.removeListener(d)}}).pipe(Gn(i),Y(({matches:s})=>({query:e,matches:s})),fn(this._destroySubject)),mql:i};return this._queries.set(e,o),o}static{this.\u0275fac=function(i){return new(i||t)(I(DO),I(Z))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function Ny(t){return t.map(n=>n.split(",")).reduce((n,e)=>n.concat(e)).map(n=>n.trim())}var ua=(()=>{class t{constructor(e){this._platform=e}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return TO(e)&&getComputedStyle(e).visibility==="visible"}isTabbable(e){if(!this._platform.isBrowser)return!1;let i=OO(BO(e));if(i&&(Vy(i)===-1||!this.isVisible(i)))return!1;let r=e.nodeName.toLowerCase(),o=Vy(e);return e.hasAttribute("contenteditable")?o!==-1:r==="iframe"||r==="object"||this._platform.WEBKIT&&this._platform.IOS&&!VO(e)?!1:r==="audio"?e.hasAttribute("controls")?o!==-1:!1:r==="video"?o===-1?!1:o!==null?!0:this._platform.FIREFOX||e.hasAttribute("controls"):e.tabIndex>=0}isFocusable(e,i){return jO(e)&&!this.isDisabled(e)&&(i?.ignoreVisibility||this.isVisible(e))}static{this.\u0275fac=function(i){return new(i||t)(I(ut))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function OO(t){try{return t.frameElement}catch{return null}}function TO(t){return!!(t.offsetWidth||t.offsetHeight||typeof t.getClientRects=="function"&&t.getClientRects().length)}function AO(t){let n=t.nodeName.toLowerCase();return n==="input"||n==="select"||n==="button"||n==="textarea"}function RO(t){return NO(t)&&t.type=="hidden"}function FO(t){return LO(t)&&t.hasAttribute("href")}function NO(t){return t.nodeName.toLowerCase()=="input"}function LO(t){return t.nodeName.toLowerCase()=="a"}function Uy(t){if(!t.hasAttribute("tabindex")||t.tabIndex===void 0)return!1;let n=t.getAttribute("tabindex");return!!(n&&!isNaN(parseInt(n,10)))}function Vy(t){if(!Uy(t))return null;let n=parseInt(t.getAttribute("tabindex")||"",10);return isNaN(n)?-1:n}function VO(t){let n=t.nodeName.toLowerCase(),e=n==="input"&&t.type;return e==="text"||e==="password"||n==="select"||n==="textarea"}function jO(t){return RO(t)?!1:AO(t)||FO(t)||t.hasAttribute("contenteditable")||Uy(t)}function BO(t){return t.ownerDocument&&t.ownerDocument.defaultView||window}var Uf=class{get enabled(){return this._enabled}set enabled(n){this._enabled=n,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}constructor(n,e,i,r,o=!1){this._element=n,this._checker=e,this._ngZone=i,this._document=r,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,o||this.attachAnchors()}destroy(){let n=this._startAnchor,e=this._endAnchor;n&&(n.removeEventListener("focus",this.startAnchorListener),n.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return this._hasAttached?!0:(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(n)))})}focusFirstTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(n)))})}focusLastTabbableElementWhenReady(n){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(n)))})}_getRegionBoundary(n){let e=this._element.querySelectorAll(`[cdk-focus-region-${n}], [cdkFocusRegion${n}], [cdk-focus-${n}]`);return n=="start"?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(n){let e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){let i=this._getFirstTabbableElement(e);return i?.focus(n),!!i}return e.focus(n),!0}return this.focusFirstTabbableElement(n)}focusFirstTabbableElement(n){let e=this._getRegionBoundary("start");return e&&e.focus(n),!!e}focusLastTabbableElement(n){let e=this._getRegionBoundary("end");return e&&e.focus(n),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(n){if(this._checker.isFocusable(n)&&this._checker.isTabbable(n))return n;let e=n.children;for(let i=0;i=0;i--){let r=e[i].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[i]):null;if(r)return r}return null}_createAnchor(){let n=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,n),n.classList.add("cdk-visually-hidden"),n.classList.add("cdk-focus-trap-anchor"),n.setAttribute("aria-hidden","true"),n}_toggleAnchorTabIndex(n,e){n?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(n){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(n,this._startAnchor),this._toggleAnchorTabIndex(n,this._endAnchor))}_executeOnStable(n){this._ngZone.isStable?n():this._ngZone.onStable.pipe(ht(1)).subscribe(n)}},vd=(()=>{class t{constructor(e,i,r){this._checker=e,this._ngZone=i,this._document=r}create(e,i=!1){return new Uf(e,this._checker,this._ngZone,this._document,i)}static{this.\u0275fac=function(i){return new(i||t)(I(ua),I(Z),I(le))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function zf(t){return t.buttons===0||t.detail===0}function Hf(t){let n=t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0];return!!n&&n.identifier===-1&&(n.radiusX==null||n.radiusX===1)&&(n.radiusY==null||n.radiusY===1)}var UO=new N("cdk-input-modality-detector-options"),zO={ignoreKeys:[18,17,224,91,16]},zy=650,No=Oo({passive:!0,capture:!0}),HO=(()=>{class t{get mostRecentModality(){return this._modality.value}constructor(e,i,r,o){this._platform=e,this._mostRecentTarget=null,this._modality=new Ge(null),this._lastTouchMs=0,this._onKeydown=s=>{this._options?.ignoreKeys?.some(d=>d===s.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=Bn(s))},this._onMousedown=s=>{Date.now()-this._lastTouchMs{if(Hf(s)){this._modality.next("keyboard");return}this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=Bn(s)},this._options=A(A({},zO),o),this.modalityDetected=this._modality.pipe(qo(1)),this.modalityChanged=this.modalityDetected.pipe(Ga()),e.isBrowser&&i.runOutsideAngular(()=>{r.addEventListener("keydown",this._onKeydown,No),r.addEventListener("mousedown",this._onMousedown,No),r.addEventListener("touchstart",this._onTouchstart,No)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,No),document.removeEventListener("mousedown",this._onMousedown,No),document.removeEventListener("touchstart",this._onTouchstart,No))}static{this.\u0275fac=function(i){return new(i||t)(I(ut),I(Z),I(le),I(UO,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var gd=function(t){return t[t.IMMEDIATE=0]="IMMEDIATE",t[t.EVENTUAL=1]="EVENTUAL",t}(gd||{}),$O=new N("cdk-focus-monitor-default-options"),md=Oo({passive:!0,capture:!0}),Lo=(()=>{class t{constructor(e,i,r,o,s){this._ngZone=e,this._platform=i,this._inputModalityDetector=r,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new ue,this._rootNodeFocusAndBlurListener=d=>{let u=Bn(d);for(let h=u;h;h=h.parentElement)d.type==="focus"?this._onFocus(d,h):this._onBlur(d,h)},this._document=o,this._detectionMode=s?.detectionMode||gd.IMMEDIATE}monitor(e,i=!1){let r=_i(e);if(!this._platform.isBrowser||r.nodeType!==1)return j();let o=Cy(r)||this._getDocument(),s=this._elementInfo.get(r);if(s)return i&&(s.checkChildren=!0),s.subject;let d={checkChildren:i,subject:new ue,rootNode:o};return this._elementInfo.set(r,d),this._registerGlobalListeners(d),d.subject}stopMonitoring(e){let i=_i(e),r=this._elementInfo.get(i);r&&(r.subject.complete(),this._setClasses(i),this._elementInfo.delete(i),this._removeGlobalListeners(r))}focusVia(e,i,r){let o=_i(e),s=this._getDocument().activeElement;o===s?this._getClosestElementsInfo(o).forEach(([d,u])=>this._originChanged(d,i,u)):(this._setOrigin(i),typeof o.focus=="function"&&o.focus(r))}ngOnDestroy(){this._elementInfo.forEach((e,i)=>this.stopMonitoring(i))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return this._detectionMode===gd.EVENTUAL||!!e?.contains(this._inputModalityDetector._mostRecentTarget)}_setClasses(e,i){e.classList.toggle("cdk-focused",!!i),e.classList.toggle("cdk-touch-focused",i==="touch"),e.classList.toggle("cdk-keyboard-focused",i==="keyboard"),e.classList.toggle("cdk-mouse-focused",i==="mouse"),e.classList.toggle("cdk-program-focused",i==="program")}_setOrigin(e,i=!1){this._ngZone.runOutsideAngular(()=>{if(this._origin=e,this._originFromTouchInteraction=e==="touch"&&i,this._detectionMode===gd.IMMEDIATE){clearTimeout(this._originTimeoutId);let r=this._originFromTouchInteraction?zy:1;this._originTimeoutId=setTimeout(()=>this._origin=null,r)}})}_onFocus(e,i){let r=this._elementInfo.get(i),o=Bn(e);!r||!r.checkChildren&&i!==o||this._originChanged(i,this._getFocusOrigin(o),r)}_onBlur(e,i){let r=this._elementInfo.get(i);!r||r.checkChildren&&e.relatedTarget instanceof Node&&i.contains(e.relatedTarget)||(this._setClasses(i),this._emitOrigin(r,null))}_emitOrigin(e,i){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(i))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;let i=e.rootNode,r=this._rootNodeFocusListenerCount.get(i)||0;r||this._ngZone.runOutsideAngular(()=>{i.addEventListener("focus",this._rootNodeFocusAndBlurListener,md),i.addEventListener("blur",this._rootNodeFocusAndBlurListener,md)}),this._rootNodeFocusListenerCount.set(i,r+1),++this._monitoredElementCount===1&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(fn(this._stopInputModalityDetector)).subscribe(o=>{this._setOrigin(o,!0)}))}_removeGlobalListeners(e){let i=e.rootNode;if(this._rootNodeFocusListenerCount.has(i)){let r=this._rootNodeFocusListenerCount.get(i);r>1?this._rootNodeFocusListenerCount.set(i,r-1):(i.removeEventListener("focus",this._rootNodeFocusAndBlurListener,md),i.removeEventListener("blur",this._rootNodeFocusAndBlurListener,md),this._rootNodeFocusListenerCount.delete(i))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,i,r){this._setClasses(e,i),this._emitOrigin(r,i),this._lastFocusOrigin=i}_getClosestElementsInfo(e){let i=[];return this._elementInfo.forEach((r,o)=>{(o===e||r.checkChildren&&o.contains(e))&&i.push([o,r])}),i}_isLastInteractionFromInputLabel(e){let{_mostRecentTarget:i,mostRecentModality:r}=this._inputModalityDetector;if(r!=="mouse"||!i||i===e||e.nodeName!=="INPUT"&&e.nodeName!=="TEXTAREA"||e.disabled)return!1;let o=e.labels;if(o){for(let s=0;s{class t{constructor(e,i){this._platform=e,this._document=i,this._breakpointSubscription=R(Ly).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return Tr.NONE;let e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);let i=this._document.defaultView||window,r=i&&i.getComputedStyle?i.getComputedStyle(e):null,o=(r&&r.backgroundColor||"").replace(/ /g,"");switch(e.remove(),o){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return Tr.WHITE_ON_BLACK;case"rgb(255,255,255)":case"rgb(255,250,239)":return Tr.BLACK_ON_WHITE}return Tr.NONE}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){let e=this._document.body.classList;e.remove(Bf,jy,By),this._hasCheckedHighContrastMode=!0;let i=this.getHighContrastMode();i===Tr.BLACK_ON_WHITE?e.add(Bf,jy):i===Tr.WHITE_ON_BLACK&&e.add(Bf,By)}}static{this.\u0275fac=function(i){return new(i||t)(I(ut),I(le))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),Hy=(()=>{class t{constructor(e){e._applyBodyHighContrastModeCssClasses()}static{this.\u0275fac=function(i){return new(i||t)(I($f))}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({imports:[Ry]})}}return t})();function WO(t,n){}var Ar=class{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0,this.closeOnOverlayDetachments=!0}};var Gf=(()=>{class t extends Ro{constructor(e,i,r,o,s,d,u,h){super(),this._elementRef=e,this._focusTrapFactory=i,this._config=o,this._interactivityChecker=s,this._ngZone=d,this._overlayRef=u,this._focusMonitor=h,this._platform=R(ut),this._focusTrap=null,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this._ariaLabelledByQueue=[],this._changeDetectorRef=R(Re),this.attachDomPortal=p=>{this._portalOutlet.hasAttached();let m=this._portalOutlet.attachDomPortal(p);return this._contentAttached(),m},this._document=r,this._config.ariaLabelledBy&&this._ariaLabelledByQueue.push(this._config.ariaLabelledBy)}_addAriaLabelledBy(e){this._ariaLabelledByQueue.push(e),this._changeDetectorRef.markForCheck()}_removeAriaLabelledBy(e){let i=this._ariaLabelledByQueue.indexOf(e);i>-1&&(this._ariaLabelledByQueue.splice(i,1),this._changeDetectorRef.markForCheck())}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();let i=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),i}attachTemplatePortal(e){this._portalOutlet.hasAttached();let i=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),i}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,i){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{let r=()=>{e.removeEventListener("blur",r),e.removeEventListener("mousedown",r),e.removeAttribute("tabindex")};e.addEventListener("blur",r),e.addEventListener("mousedown",r)})),e.focus(i)}_focusByCssSelector(e,i){let r=this._elementRef.nativeElement.querySelector(e);r&&this._forceFocus(r,i)}_trapFocus(){let e=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||e.focus();break;case!0:case"first-tabbable":this._focusTrap?.focusInitialElementWhenReady().then(i=>{i||this._focusDialogContainer()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus);break}}_restoreFocus(){let e=this._config.restoreFocus,i=null;if(typeof e=="string"?i=this._document.querySelector(e):typeof e=="boolean"?i=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(i=e),this._config.restoreFocus&&i&&typeof i.focus=="function"){let r=ra(),o=this._elementRef.nativeElement;(!r||r===this._document.body||r===o||o.contains(r))&&(this._focusMonitor?(this._focusMonitor.focusVia(i,this._closeInteractionType),this._closeInteractionType=null):i.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){let e=this._elementRef.nativeElement,i=ra();return e===i||e.contains(i)}_initializeFocusTrap(){this._platform.isBrowser&&(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=ra()))}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}static{this.\u0275fac=function(i){return new(i||t)(M(be),M(vd),M(le,8),M(Ar),M(ua),M(Z),M(bi),M(Lo))}}static{this.\u0275cmp=$({type:t,selectors:[["cdk-dialog-container"]],viewQuery:function(i,r){if(i&1&&$e(ca,7),i&2){let o;je(o=Be())&&(r._portalOutlet=o.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(i,r){i&2&&z("id",r._config.id||null)("role",r._config.role)("aria-modal",r._config.ariaModal)("aria-labelledby",r._config.ariaLabel?null:r._ariaLabelledByQueue[0])("aria-label",r._config.ariaLabel)("aria-describedby",r._config.ariaDescribedBy||null)},standalone:!0,features:[st,ye],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(i,r){i&1&&k(0,WO,0,0,"ng-template",0)},dependencies:[ca],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2})}}return t})(),ha=class{constructor(n,e){this.overlayRef=n,this.config=e,this.closed=new ue,this.disableClose=e.disableClose,this.backdropClick=n.backdropClick(),this.keydownEvents=n.keydownEvents(),this.outsidePointerEvents=n.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(i=>{i.keyCode===27&&!this.disableClose&&!hd(i)&&(i.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})}),this._detachSubscription=n.detachments().subscribe(()=>{e.closeOnOverlayDetachments!==!1&&this.close()})}close(n,e){if(this.containerInstance){let i=this.closed;this.containerInstance._closeInteractionType=e?.focusOrigin||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),i.next(n),i.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(n="",e=""){return this.overlayRef.updateSize({width:n,height:e}),this}addPanelClass(n){return this.overlayRef.addPanelClass(n),this}removePanelClass(n){return this.overlayRef.removePanelClass(n),this}},qO=new N("DialogScrollStrategy",{providedIn:"root",factory:()=>{let t=R(Un);return()=>t.scrollStrategies.block()}}),GO=new N("DialogData"),QO=new N("DefaultDialogConfig");var YO=0,Qf=(()=>{class t{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(e,i,r,o,s,d){this._overlay=e,this._injector=i,this._defaultOptions=r,this._parentDialog=o,this._overlayContainer=s,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new ue,this._afterOpenedAtThisLevel=new ue,this._ariaHiddenElements=new Map,this.afterAllClosed=Ci(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(Gn(void 0))),this._scrollStrategy=d}open(e,i){let r=this._defaultOptions||new Ar;i=A(A({},r),i),i.id=i.id||`cdk-dialog-${YO++}`,i.id&&this.getDialogById(i.id);let o=this._getOverlayConfig(i),s=this._overlay.create(o),d=new ha(s,i),u=this._attachContainer(s,d,i);return d.containerInstance=u,this._attachDialogContent(e,d,u,i),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(d),d.closed.subscribe(()=>this._removeOpenDialog(d,!0)),this.afterOpened.next(d),d}closeAll(){Wf(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){Wf(this._openDialogsAtThisLevel,e=>{e.config.closeOnDestroy===!1&&this._removeOpenDialog(e,!1)}),Wf(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){let i=new da({positionStrategy:e.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation});return e.backdropClass&&(i.backdropClass=e.backdropClass),i}_attachContainer(e,i,r){let o=r.injector||r.viewContainerRef?.injector,s=[{provide:Ar,useValue:r},{provide:ha,useValue:i},{provide:bi,useValue:e}],d;r.container?typeof r.container=="function"?d=r.container:(d=r.container.type,s.push(...r.container.providers(r))):d=Gf;let u=new To(d,r.viewContainerRef,ot.create({parent:o||this._injector,providers:s}),r.componentFactoryResolver);return e.attach(u).instance}_attachDialogContent(e,i,r,o){if(e instanceof rn){let s=this._createInjector(o,i,r,void 0),d={$implicit:o.data,dialogRef:i};o.templateContext&&(d=A(A({},d),typeof o.templateContext=="function"?o.templateContext():o.templateContext)),r.attachTemplatePortal(new Ao(e,null,d,s))}else{let s=this._createInjector(o,i,r,this._injector),d=r.attachComponentPortal(new To(e,o.viewContainerRef,s,o.componentFactoryResolver));i.componentRef=d,i.componentInstance=d.instance}}_createInjector(e,i,r,o){let s=e.injector||e.viewContainerRef?.injector,d=[{provide:GO,useValue:e.data},{provide:ha,useValue:i}];return e.providers&&(typeof e.providers=="function"?d.push(...e.providers(i,e,r)):d.push(...e.providers)),e.direction&&(!s||!s.get(aa,null,{optional:!0}))&&d.push({provide:aa,useValue:{value:e.direction,change:j()}}),ot.create({parent:s||o,providers:d})}_removeOpenDialog(e,i){let r=this.openDialogs.indexOf(e);r>-1&&(this.openDialogs.splice(r,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((o,s)=>{o?s.setAttribute("aria-hidden",o):s.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),i&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){let e=this._overlayContainer.getContainerElement();if(e.parentElement){let i=e.parentElement.children;for(let r=i.length-1;r>-1;r--){let o=i[r];o!==e&&o.nodeName!=="SCRIPT"&&o.nodeName!=="STYLE"&&!o.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(o,o.getAttribute("aria-hidden")),o.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){let e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}static{this.\u0275fac=function(i){return new(i||t)(I(Un),I(ot),I(QO,8),I(t,12),I(Fo),I(qO))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function Wf(t,n){let e=t.length;for(;e--;)n(t[e])}var $y=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({providers:[Qf],imports:[fd,Pr,Hy,Pr]})}}return t})();var ZO=["mat-internal-form-field",""],XO=["*"];function KO(){return!0}var JO=new N("mat-sanity-checks",{providedIn:"root",factory:KO}),wn=(()=>{class t{constructor(e,i,r){this._sanityChecks=i,this._document=r,this._hasDoneGlobalChecks=!1,e._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(e){return oa()?!1:typeof this._sanityChecks=="boolean"?this._sanityChecks:!!this._sanityChecks[e]}static{this.\u0275fac=function(i){return new(i||t)(I($f),I(JO,8),I(le))}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({imports:[Qi,Qi]})}}return t})();var yn=function(t){return t[t.FADING_IN=0]="FADING_IN",t[t.VISIBLE=1]="VISIBLE",t[t.FADING_OUT=2]="FADING_OUT",t[t.HIDDEN=3]="HIDDEN",t}(yn||{}),Yf=class{constructor(n,e,i,r=!1){this._renderer=n,this.element=e,this.config=i,this._animationForciblyDisabledThroughCss=r,this.state=yn.HIDDEN}fadeOut(){this._renderer.fadeOutRipple(this)}},Wy=Oo({passive:!0,capture:!0}),Zf=class{constructor(){this._events=new Map,this._delegateEventHandler=n=>{let e=Bn(n);e&&this._events.get(n.type)?.forEach((i,r)=>{(r===e||r.contains(e))&&i.forEach(o=>o.handleEvent(n))})}}addHandler(n,e,i,r){let o=this._events.get(e);if(o){let s=o.get(i);s?s.add(r):o.set(i,new Set([r]))}else this._events.set(e,new Map([[i,new Set([r])]])),n.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,Wy)})}removeHandler(n,e,i){let r=this._events.get(n);if(!r)return;let o=r.get(e);o&&(o.delete(i),o.size===0&&r.delete(e),r.size===0&&(this._events.delete(n),document.removeEventListener(n,this._delegateEventHandler,Wy)))}},qy={enterDuration:225,exitDuration:150},eT=800,Gy=Oo({passive:!0,capture:!0}),Qy=["mousedown","touchstart"],Yy=["mouseup","mouseleave","touchend","touchcancel"],Xf=class t{static{this._eventManager=new Zf}constructor(n,e,i,r){this._target=n,this._ngZone=e,this._platform=r,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,r.isBrowser&&(this._containerElement=_i(i))}fadeInRipple(n,e,i={}){let r=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),o=A(A({},qy),i.animation);i.centered&&(n=r.left+r.width/2,e=r.top+r.height/2);let s=i.radius||tT(n,e,r),d=n-r.left,u=e-r.top,h=o.enterDuration,p=document.createElement("div");p.classList.add("mat-ripple-element"),p.style.left=`${d-s}px`,p.style.top=`${u-s}px`,p.style.height=`${s*2}px`,p.style.width=`${s*2}px`,i.color!=null&&(p.style.backgroundColor=i.color),p.style.transitionDuration=`${h}ms`,this._containerElement.appendChild(p);let m=window.getComputedStyle(p),b=m.transitionProperty,w=m.transitionDuration,S=b==="none"||w==="0s"||w==="0s, 0s"||r.width===0&&r.height===0,D=new Yf(this,p,i,S);p.style.transform="scale3d(1, 1, 1)",D.state=yn.FADING_IN,i.persistent||(this._mostRecentTransientRipple=D);let O=null;return!S&&(h||o.exitDuration)&&this._ngZone.runOutsideAngular(()=>{let L=()=>this._finishRippleTransition(D),X=()=>this._destroyRipple(D);p.addEventListener("transitionend",L),p.addEventListener("transitioncancel",X),O={onTransitionEnd:L,onTransitionCancel:X}}),this._activeRipples.set(D,O),(S||!h)&&this._finishRippleTransition(D),D}fadeOutRipple(n){if(n.state===yn.FADING_OUT||n.state===yn.HIDDEN)return;let e=n.element,i=A(A({},qy),n.config.animation);e.style.transitionDuration=`${i.exitDuration}ms`,e.style.opacity="0",n.state=yn.FADING_OUT,(n._animationForciblyDisabledThroughCss||!i.exitDuration)&&this._finishRippleTransition(n)}fadeOutAll(){this._getActiveRipples().forEach(n=>n.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(n=>{n.config.persistent||n.fadeOut()})}setupTriggerEvents(n){let e=_i(n);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,Qy.forEach(i=>{t._eventManager.addHandler(this._ngZone,i,e,this)}))}handleEvent(n){n.type==="mousedown"?this._onMousedown(n):n.type==="touchstart"?this._onTouchStart(n):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{Yy.forEach(e=>{this._triggerElement.addEventListener(e,this,Gy)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(n){n.state===yn.FADING_IN?this._startFadeOutTransition(n):n.state===yn.FADING_OUT&&this._destroyRipple(n)}_startFadeOutTransition(n){let e=n===this._mostRecentTransientRipple,{persistent:i}=n.config;n.state=yn.VISIBLE,!i&&(!e||!this._isPointerDown)&&n.fadeOut()}_destroyRipple(n){let e=this._activeRipples.get(n)??null;this._activeRipples.delete(n),this._activeRipples.size||(this._containerRect=null),n===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),n.state=yn.HIDDEN,e!==null&&(n.element.removeEventListener("transitionend",e.onTransitionEnd),n.element.removeEventListener("transitioncancel",e.onTransitionCancel)),n.element.remove()}_onMousedown(n){let e=zf(n),i=this._lastTouchStartEvent&&Date.now(){let e=n.state===yn.VISIBLE||n.config.terminateOnPointerUp&&n.state===yn.FADING_IN;!n.config.persistent&&e&&n.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){let n=this._triggerElement;n&&(Qy.forEach(e=>t._eventManager.removeHandler(e,n,this)),this._pointerUpEventsRegistered&&(Yy.forEach(e=>n.removeEventListener(e,this,Gy)),this._pointerUpEventsRegistered=!1))}};function tT(t,n,e){let i=Math.max(Math.abs(t-e.left),Math.abs(t-e.right)),r=Math.max(Math.abs(n-e.top),Math.abs(n-e.bottom));return Math.sqrt(i*i+r*r)}var nT=new N("mat-ripple-global-options"),Zy=(()=>{class t{get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}constructor(e,i,r,o,s){this._elementRef=e,this._animationMode=s,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=o||{},this._rippleRenderer=new Xf(this,i,e,r)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:A(A(A({},this._globalOptions.animation),this._animationMode==="NoopAnimations"?{enterDuration:0,exitDuration:0}:{}),this.animation),terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,i=0,r){return typeof e=="number"?this._rippleRenderer.fadeInRipple(e,i,A(A({},this.rippleConfig),r)):this._rippleRenderer.fadeInRipple(0,0,A(A({},this.rippleConfig),e))}static{this.\u0275fac=function(i){return new(i||t)(M(be),M(Z),M(ut),M(nT,8),M(di,8))}}static{this.\u0275dir=ve({type:t,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(i,r){i&2&&W("mat-ripple-unbounded",r.unbounded)},inputs:{color:[ee.None,"matRippleColor","color"],unbounded:[ee.None,"matRippleUnbounded","unbounded"],centered:[ee.None,"matRippleCentered","centered"],radius:[ee.None,"matRippleRadius","radius"],animation:[ee.None,"matRippleAnimation","animation"],disabled:[ee.None,"matRippleDisabled","disabled"],trigger:[ee.None,"matRippleTrigger","trigger"]},exportAs:["matRipple"],standalone:!0})}}return t})();var Xy=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=$({type:t,selectors:[["div","mat-internal-form-field",""]],hostAttrs:[1,"mdc-form-field","mat-internal-form-field"],hostVars:2,hostBindings:function(i,r){i&2&&W("mdc-form-field--align-end",r.labelPosition==="before")},inputs:{labelPosition:"labelPosition"},standalone:!0,features:[ye],attrs:ZO,ngContentSelectors:XO,decls:1,vars:0,template:function(i,r){i&1&&(Ln(),Vn(0))},styles:[".mdc-form-field{display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field[hidden]{display:none}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0}.mdc-form-field{font-family:var(--mdc-form-field-label-text-font);line-height:var(--mdc-form-field-label-text-line-height);font-size:var(--mdc-form-field-label-text-size);font-weight:var(--mdc-form-field-label-text-weight);letter-spacing:var(--mdc-form-field-label-text-tracking);color:var(--mdc-form-field-label-text-color)}.mat-internal-form-field{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}"],encapsulation:2,changeDetection:0})}}return t})();var pa=function(t){return t[t.State=0]="State",t[t.Transition=1]="Transition",t[t.Sequence=2]="Sequence",t[t.Group=3]="Group",t[t.Animate=4]="Animate",t[t.Keyframes=5]="Keyframes",t[t.Style=6]="Style",t[t.Trigger=7]="Trigger",t[t.Reference=8]="Reference",t[t.AnimateChild=9]="AnimateChild",t[t.AnimateRef=10]="AnimateRef",t[t.Query=11]="Query",t[t.Stagger=12]="Stagger",t}(pa||{});function bd(t,n){return{type:pa.Trigger,name:t,definitions:n,options:{}}}function Vo(t,n=null){return{type:pa.Animate,styles:n,timings:t}}function Yi(t){return{type:pa.Style,styles:t,offset:null}}function jo(t,n,e=null){return{type:pa.Transition,expr:t,animation:n,options:e}}function iT(t,n){}var fa=class{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}},Kf="mdc-dialog--open",Ky="mdc-dialog--opening",Jy="mdc-dialog--closing",rT=150,oT=75,sT=(()=>{class t extends Gf{constructor(e,i,r,o,s,d,u,h,p){super(e,i,r,o,s,d,u,p),this._animationMode=h,this._animationStateChanged=new de,this._animationsEnabled=this._animationMode!=="NoopAnimations",this._actionSectionCount=0,this._hostElement=this._elementRef.nativeElement,this._enterAnimationDuration=this._animationsEnabled?tw(this._config.enterAnimationDuration)??rT:0,this._exitAnimationDuration=this._animationsEnabled?tw(this._config.exitAnimationDuration)??oT:0,this._animationTimer=null,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._enterAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._exitAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._enterAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(ew,`${this._enterAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(Ky,Kf)),this._waitForAnimationToComplete(this._enterAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(Kf),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._exitAnimationDuration}),this._hostElement.classList.remove(Kf),this._animationsEnabled?(this._hostElement.style.setProperty(ew,`${this._exitAnimationDuration}ms`),this._requestAnimationFrame(()=>this._hostElement.classList.add(Jy)),this._waitForAnimationToComplete(this._exitAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_updateActionSectionCount(e){this._actionSectionCount+=e,this._changeDetectorRef.markForCheck()}_clearAnimationClasses(){this._hostElement.classList.remove(Ky,Jy)}_waitForAnimationToComplete(e,i){this._animationTimer!==null&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(i,e)}_requestAnimationFrame(e){this._ngZone.runOutsideAngular(()=>{typeof requestAnimationFrame=="function"?requestAnimationFrame(e):e()})}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}ngOnDestroy(){super.ngOnDestroy(),this._animationTimer!==null&&clearTimeout(this._animationTimer)}attachComponentPortal(e){let i=super.attachComponentPortal(e);return i.location.nativeElement.classList.add("mat-mdc-dialog-component-host"),i}static{this.\u0275fac=function(i){return new(i||t)(M(be),M(vd),M(le,8),M(fa),M(ua),M(Z),M(bi),M(di,8),M(Lo))}}static{this.\u0275cmp=$({type:t,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:10,hostBindings:function(i,r){i&2&&(fo("id",r._config.id),z("aria-modal",r._config.ariaModal)("role",r._config.role)("aria-labelledby",r._config.ariaLabel?null:r._ariaLabelledByQueue[0])("aria-label",r._config.ariaLabel)("aria-describedby",r._config.ariaDescribedBy||null),W("_mat-animation-noopable",!r._animationsEnabled)("mat-mdc-dialog-container-with-actions",r._actionSectionCount>0))},standalone:!0,features:[st,ye],decls:3,vars:0,consts:[[1,"mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(i,r){i&1&&(c(0,"div",0)(1,"div",1),k(2,iT,0,0,"ng-template",2),a()())},dependencies:[ca],styles:['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto;outline:0;transform:scale(0.8)}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--closing .mdc-dialog__surface{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{opacity:1}.mdc-dialog--open .mdc-dialog__surface{transform:none}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__container .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{width:100%;height:100%}.mat-mdc-dialog-component-host{display:contents}.mat-mdc-dialog-container{--mdc-dialog-container-elevation: var(--mdc-dialog-container-elevation-shadow);outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12))}.mat-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, 4px)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, Roboto, sans-serif);line-height:var(--mdc-dialog-subhead-line-height, 1.5rem);font-size:var(--mdc-dialog-subhead-size, 1rem);font-weight:var(--mdc-dialog-subhead-weight, 400);letter-spacing:var(--mdc-dialog-subhead-tracking, 0.03125em)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, rgba(0, 0, 0, 0.87))}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, Roboto, sans-serif);line-height:var(--mdc-dialog-supporting-text-line-height, 1.5rem);font-size:var(--mdc-dialog-supporting-text-size, 1rem);font-weight:var(--mdc-dialog-supporting-text-weight, 400);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 0.03125em)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, rgba(0, 0, 0, 0.6))}.mat-mdc-dialog-container .mdc-dialog__container{transition:opacity linear var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container .mdc-dialog__surface{transition:transform var(--mat-dialog-transition-duration, 0ms) 0ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container,.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__surface{transition:none}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 80vw);min-width:var(--mat-dialog-container-min-width, 0)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, 80vw)}}.mat-mdc-dialog-title{padding:var(--mat-dialog-headline-padding, 0 24px 9px)}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{padding:var(--mat-dialog-actions-padding, 8px);justify-content:var(--mat-dialog-actions-alignment, start)}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2})}}return t})(),ew="--mat-dialog-transition-duration";function tw(t){return t==null?null:typeof t=="number"?t:t.endsWith("ms")?na(t.substring(0,t.length-2)):t.endsWith("s")?na(t.substring(0,t.length-1))*1e3:t==="0"?0:null}var yd=function(t){return t[t.OPEN=0]="OPEN",t[t.CLOSING=1]="CLOSING",t[t.CLOSED=2]="CLOSED",t}(yd||{}),zn=class{constructor(n,e,i){this._ref=n,this._containerInstance=i,this._afterOpened=new ue,this._beforeClosed=new ue,this._state=yd.OPEN,this.disableClose=e.disableClose,this.id=n.id,n.addPanelClass("mat-mdc-dialog-panel"),i._animationStateChanged.pipe(Ye(r=>r.state==="opened"),ht(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),i._animationStateChanged.pipe(Ye(r=>r.state==="closed"),ht(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),n.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),Wo(this.backdropClick(),this.keydownEvents().pipe(Ye(r=>r.keyCode===27&&!this.disableClose&&!hd(r)))).subscribe(r=>{this.disableClose||(r.preventDefault(),aT(this,r.type==="keydown"?"keyboard":"mouse"))})}close(n){this._result=n,this._containerInstance._animationStateChanged.pipe(Ye(e=>e.state==="closing"),ht(1)).subscribe(e=>{this._beforeClosed.next(n),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),e.totalTime+100)}),this._state=yd.CLOSING,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(n){let e=this._ref.config.positionStrategy;return n&&(n.left||n.right)?n.left?e.left(n.left):e.right(n.right):e.centerHorizontally(),n&&(n.top||n.bottom)?n.top?e.top(n.top):e.bottom(n.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(n="",e=""){return this._ref.updateSize(n,e),this}addPanelClass(n){return this._ref.addPanelClass(n),this}removePanelClass(n){return this._ref.removePanelClass(n),this}getState(){return this._state}_finishDialogClose(){this._state=yd.CLOSED,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}};function aT(t,n,e){return t._closeInteractionType=n,t.close(e)}var yi=new N("MatMdcDialogData"),lT=new N("mat-mdc-dialog-default-options"),cT=new N("mat-mdc-dialog-scroll-strategy",{providedIn:"root",factory:()=>{let t=R(Un);return()=>t.scrollStrategies.block()}});var dT=0,Jf=(()=>{class t{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){let e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(e,i,r,o,s,d,u,h){this._overlay=e,this._defaultOptions=o,this._scrollStrategy=s,this._parentDialog=d,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new ue,this._afterOpenedAtThisLevel=new ue,this.dialogConfigClass=fa,this.afterAllClosed=Ci(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(Gn(void 0))),this._dialog=i.get(Qf),this._dialogRefConstructor=zn,this._dialogContainerType=sT,this._dialogDataToken=yi}open(e,i){let r;i=A(A({},this._defaultOptions||new fa),i),i.id=i.id||`mat-mdc-dialog-${dT++}`,i.scrollStrategy=i.scrollStrategy||this._scrollStrategy();let o=this._dialog.open(e,ke(A({},i),{positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:i},{provide:Ar,useValue:i}]},templateContext:()=>({dialogRef:r}),providers:(s,d,u)=>(r=new this._dialogRefConstructor(s,i,u),r.updatePosition(i?.position),[{provide:this._dialogContainerType,useValue:u},{provide:this._dialogDataToken,useValue:d.data},{provide:this._dialogRefConstructor,useValue:r}])}));return r.componentRef=o.componentRef,r.componentInstance=o.componentInstance,this.openDialogs.push(r),this.afterOpened.next(r),r.afterClosed().subscribe(()=>{let s=this.openDialogs.indexOf(r);s>-1&&(this.openDialogs.splice(s,1),this.openDialogs.length||this._getAfterAllClosed().next())}),r}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(i=>i.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let i=e.length;for(;i--;)e[i].close()}static{this.\u0275fac=function(i){return new(i||t)(I(Un),I(ot),I(ei,8),I(lT,8),I(cT),I(t,12),I(Fo),I(di,8))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var nw=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({providers:[Jf],imports:[$y,fd,Pr,wn,wn]})}}return t})();function Wt(t,n,e,i){return new(e||(e=Promise))(function(r,o){function s(h){try{u(i.next(h))}catch(p){o(p)}}function d(h){try{u(i.throw(h))}catch(p){o(p)}}function u(h){var p;h.done?r(h.value):(p=h.value,p instanceof e?p:new e(function(m){m(p)})).then(s,d)}u((i=i.apply(t,n||[])).next())})}var Fr=class{constructor(){this.listeners={}}on(n,e,i){if(this.listeners[n]||(this.listeners[n]=new Set),i?.once){let r=(...o)=>{this.un(n,r),e(...o)};return this.listeners[n].add(r),()=>this.un(n,r)}return this.listeners[n].add(e),()=>this.un(n,e)}un(n,e){var i;(i=this.listeners[n])===null||i===void 0||i.delete(e)}once(n,e){return this.on(n,e,{once:!0})}unAll(){this.listeners={}}emit(n,...e){this.listeners[n]&&this.listeners[n].forEach(i=>i(...e))}},wd={decode:function(t,n){return Wt(this,void 0,void 0,function*(){let e=new AudioContext({sampleRate:n});try{return yield e.decodeAudioData(t)}finally{e.close()}})},createBuffer:function(t,n){if(!t||t.length===0)throw new Error("channelData must be a non-empty array");if(n<=0)throw new Error("duration must be greater than 0");if(typeof t[0]=="number"&&(t=[t]),!t[0]||t[0].length===0)throw new Error("channelData must contain non-empty channel arrays");(function(i){let r=i[0];if(r.some(o=>o>1||o<-1)){let o=r.length,s=0;for(let d=0;ds&&(s=u)}for(let d of i)for(let u=0;ui instanceof Float32Array?i:Float32Array.from(i));return{duration:n,length:e[0].length,sampleRate:e[0].length/n,numberOfChannels:e.length,getChannelData:i=>{let r=e[i];if(!r)throw new Error(`Channel ${i} not found`);return r},copyFromChannel:AudioBuffer.prototype.copyFromChannel,copyToChannel:AudioBuffer.prototype.copyToChannel}}};function aw(t,n){let e=n.xmlns?document.createElementNS(n.xmlns,t):document.createElement(t);for(let[i,r]of Object.entries(n))if(i==="children"&&r)for(let[o,s]of Object.entries(r))s instanceof Node?e.appendChild(s):typeof s=="string"?e.appendChild(document.createTextNode(s)):e.appendChild(aw(o,s));else i==="style"?Object.assign(e.style,r):i==="textContent"?e.textContent=r:e.setAttribute(i,r.toString());return e}function iw(t,n,e){let i=aw(t,n||{});return e?.appendChild(i),i}var uT=Object.freeze({__proto__:null,createElement:iw,default:iw}),hT={fetchBlob:function(t,n,e){return Wt(this,void 0,void 0,function*(){let i=yield fetch(t,e);if(i.status>=400)throw new Error(`Failed to fetch ${t}: ${i.status} (${i.statusText})`);return function(r,o){Wt(this,void 0,void 0,function*(){if(!r.body||!r.headers)return;let s=r.body.getReader(),d=Number(r.headers.get("Content-Length"))||0,u=0,h=p=>{u+=p?.length||0;let m=Math.round(u/d*100);o(m)};try{for(;;){let p=yield s.read();if(p.done)break;h(p.value)}}catch(p){console.warn("Progress tracking error:",p)}})}(i.clone(),n),i.blob()})}};function ct(t){let n=t,e=new Set;return{get value(){return n},set(i){Object.is(n,i)||(n=i,e.forEach(r=>r(n)))},update(i){this.set(i(n))},subscribe:i=>(e.add(i),()=>e.delete(i))}}function Rr(t,n){let e=ct(t());return n.forEach(i=>i.subscribe(()=>{let r=t();Object.is(e.value,r)||e.set(r)})),{get value(){return e.value},subscribe:i=>e.subscribe(i)}}function Zi(t,n){let e,i=()=>{e&&(e(),e=void 0),e=t()},r=n.map(o=>o.subscribe(i));return i(),()=>{e&&(e(),e=void 0),r.forEach(o=>o())}}var em=class extends Fr{get isPlayingSignal(){return this._isPlaying}get currentTimeSignal(){return this._currentTime}get durationSignal(){return this._duration}get volumeSignal(){return this._volume}get mutedSignal(){return this._muted}get playbackRateSignal(){return this._playbackRate}get seekingSignal(){return this._seeking}constructor(n){super(),this.isExternalMedia=!1,this.reactiveMediaEventCleanups=[],n.media?(this.media=n.media,this.isExternalMedia=!0):this.media=document.createElement("audio"),this._isPlaying=ct(!1),this._currentTime=ct(0),this._duration=ct(0),this._volume=ct(this.media.volume),this._muted=ct(this.media.muted),this._playbackRate=ct(this.media.playbackRate||1),this._seeking=ct(!1),this.setupReactiveMediaEvents(),n.mediaControls&&(this.media.controls=!0),n.autoplay&&(this.media.autoplay=!0),n.playbackRate!=null&&this.onMediaEvent("canplay",()=>{n.playbackRate!=null&&(this.media.playbackRate=n.playbackRate)},{once:!0})}setupReactiveMediaEvents(){this.reactiveMediaEventCleanups.push(this.onMediaEvent("play",()=>{this._isPlaying.set(!0)})),this.reactiveMediaEventCleanups.push(this.onMediaEvent("pause",()=>{this._isPlaying.set(!1)})),this.reactiveMediaEventCleanups.push(this.onMediaEvent("ended",()=>{this._isPlaying.set(!1)})),this.reactiveMediaEventCleanups.push(this.onMediaEvent("timeupdate",()=>{this._currentTime.set(this.media.currentTime)})),this.reactiveMediaEventCleanups.push(this.onMediaEvent("durationchange",()=>{this._duration.set(this.media.duration||0)})),this.reactiveMediaEventCleanups.push(this.onMediaEvent("loadedmetadata",()=>{this._duration.set(this.media.duration||0)})),this.reactiveMediaEventCleanups.push(this.onMediaEvent("seeking",()=>{this._seeking.set(!0)})),this.reactiveMediaEventCleanups.push(this.onMediaEvent("seeked",()=>{this._seeking.set(!1)})),this.reactiveMediaEventCleanups.push(this.onMediaEvent("volumechange",()=>{this._volume.set(this.media.volume),this._muted.set(this.media.muted)})),this.reactiveMediaEventCleanups.push(this.onMediaEvent("ratechange",()=>{this._playbackRate.set(this.media.playbackRate)}))}onMediaEvent(n,e,i){return this.media.addEventListener(n,e,i),()=>this.media.removeEventListener(n,e,i)}getSrc(){return this.media.currentSrc||this.media.src||""}revokeSrc(){let n=this.getSrc();n.startsWith("blob:")&&URL.revokeObjectURL(n)}canPlayType(n){return this.media.canPlayType(n)!==""}setSrc(n,e){let i=this.getSrc();if(n&&i===n)return;this.revokeSrc();let r=e instanceof Blob&&(this.canPlayType(e.type)||!n)?URL.createObjectURL(e):n;if(i&&this.media.removeAttribute("src"),r||n)try{this.media.src=r}catch{this.media.src=n}}destroy(){this.reactiveMediaEventCleanups.forEach(n=>n()),this.reactiveMediaEventCleanups=[],this.isExternalMedia||(this.media.pause(),this.revokeSrc(),this.media.removeAttribute("src"),this.media.load(),this.media.remove())}setMediaElement(n){this.reactiveMediaEventCleanups.forEach(e=>e()),this.reactiveMediaEventCleanups=[],this.media=n,this.setupReactiveMediaEvents()}play(){return Wt(this,void 0,void 0,function*(){try{return yield this.media.play()}catch(n){if(n instanceof DOMException&&n.name==="AbortError")return;throw n}})}pause(){this.media.pause()}isPlaying(){return!this.media.paused&&!this.media.ended}setTime(n){this.media.currentTime=Math.max(0,Math.min(n,this.getDuration()))}getDuration(){return this.media.duration}getCurrentTime(){return this.media.currentTime}getVolume(){return this.media.volume}setVolume(n){this.media.volume=n}getMuted(){return this.media.muted}setMuted(n){this.media.muted=n}getPlaybackRate(){return this.media.playbackRate}isSeeking(){return this.media.seeking}setPlaybackRate(n,e){e!=null&&(this.media.preservesPitch=e),this.media.playbackRate=n}getMediaElement(){return this.media}setSinkId(n){return this.media.setSinkId(n)}};function pT({maxTop:t,maxBottom:n,halfHeight:e,vScale:i,barMinHeight:r=0,barAlign:o}){let s=Math.round(t*e*i),d=s+Math.round(n*e*i)||1;return dfunction(o){let{scrollLeft:s,scrollWidth:d,clientWidth:u}=o;if(d===0)return{startX:0,endX:1};let h=s/d,p=(s+u)/d;return{startX:Math.max(0,Math.min(1,h)),endX:Math.max(0,Math.min(1,p))}}(n.value),[n]),i=Rr(()=>function(o){return{left:o.scrollLeft,right:o.scrollLeft+o.clientWidth}}(n.value),[n]),r=()=>{n.set({scrollLeft:t.scrollLeft,scrollWidth:t.scrollWidth,clientWidth:t.clientWidth})};return t.addEventListener("scroll",r,{passive:!0}),{scrollData:n,percentages:e,bounds:i,cleanup:()=>{t.removeEventListener("scroll",r),cw(n)}}}var tm=class extends Fr{constructor(n,e){super(),this.timeouts=[],this.isScrollable=!1,this.audioData=null,this.resizeObserver=null,this.lastContainerWidth=0,this.isDragging=!1,this.subscriptions=[],this.unsubscribeOnScroll=[],this.dragStream=null,this.scrollStream=null,this.subscriptions=[],this.options=n;let i=this.parentFromOptionsContainer(n.container);this.parent=i;let[r,o]=this.initHtml();i.appendChild(r),this.container=r,this.scrollContainer=o.querySelector(".scroll"),this.wrapper=o.querySelector(".wrapper"),this.canvasWrapper=o.querySelector(".canvases"),this.progressWrapper=o.querySelector(".progress"),this.cursor=o.querySelector(".cursor"),e&&o.appendChild(e),this.initEvents()}parentFromOptionsContainer(n){let e;if(typeof n=="string"?e=document.querySelector(n):n instanceof HTMLElement&&(e=n),!e)throw new Error("Container not found");return e}initEvents(){this.wrapper.addEventListener("click",e=>{let i=this.wrapper.getBoundingClientRect(),[r,o]=rw(i,e.clientX,e.clientY);this.emit("click",r,o)}),this.wrapper.addEventListener("dblclick",e=>{let i=this.wrapper.getBoundingClientRect(),[r,o]=rw(i,e.clientX,e.clientY);this.emit("dblclick",r,o)}),this.options.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.scrollStream=mT(this.scrollContainer);let n=Zi(()=>{let{startX:e,endX:i}=this.scrollStream.percentages.value,{left:r,right:o}=this.scrollStream.bounds.value;this.emit("scroll",e,i,r,o)},[this.scrollStream.percentages,this.scrollStream.bounds]);if(this.subscriptions.push(n),typeof ResizeObserver=="function"){let e=this.createDelay(100);this.resizeObserver=new ResizeObserver(()=>{e().then(()=>this.onContainerResize()).catch(()=>{})}),this.resizeObserver.observe(this.scrollContainer)}}onContainerResize(){let n=this.parent.clientWidth;n===this.lastContainerWidth&&this.options.height!=="auto"||(this.lastContainerWidth=n,this.reRender(),this.emit("resize"))}initDrag(){if(this.dragStream)return;this.dragStream=function(e,i={}){let{threshold:r=3,mouseButton:o=0,touchDelay:s=100}=i,d=ct(null),u=new Map,h=matchMedia("(pointer: coarse)").matches,p=()=>{},m=b=>{if(b.button!==o||(u.set(b.pointerId,b),u.size>1))return;let w=b.clientX,S=b.clientY,D=!1,O=Date.now(),L=e.getBoundingClientRect(),{left:X,top:V}=L,ie=Ne=>{if(Ne.defaultPrevented||u.size>1||h&&Date.now()-Or||Math.abs(Sn)>r)&&(Ne.preventDefault(),Ne.stopPropagation(),D||(d.set({type:"start",x:w-X,y:S-V}),D=!0),d.set({type:"move",x:ft-X,y:nn-V,deltaX:Cn,deltaY:Sn}),w=ft,S=nn)},Ce=Ne=>{if(u.delete(Ne.pointerId),D){let ft=Ne.clientX,nn=Ne.clientY;d.set({type:"end",x:ft-X,y:nn-V})}p()},me=Ne=>{u.delete(Ne.pointerId),Ne.relatedTarget&&Ne.relatedTarget!==document.documentElement||Ce(Ne)},Ze=Ne=>{D&&(Ne.stopPropagation(),Ne.preventDefault())},pt=Ne=>{Ne.defaultPrevented||u.size>1||D&&Ne.preventDefault()};document.addEventListener("pointermove",ie),document.addEventListener("pointerup",Ce),document.addEventListener("pointerout",me),document.addEventListener("pointercancel",me),document.addEventListener("touchmove",pt,{passive:!1}),document.addEventListener("click",Ze,{capture:!0}),p=()=>{document.removeEventListener("pointermove",ie),document.removeEventListener("pointerup",Ce),document.removeEventListener("pointerout",me),document.removeEventListener("pointercancel",me),document.removeEventListener("touchmove",pt),setTimeout(()=>{document.removeEventListener("click",Ze,{capture:!0})},10)}};return e.addEventListener("pointerdown",m),{signal:d,cleanup:()=>{p(),e.removeEventListener("pointerdown",m),u.clear(),cw(d)}}}(this.wrapper);let n=Zi(()=>{let e=this.dragStream.signal.value;if(!e)return;let i=this.wrapper.getBoundingClientRect().width,r=(o=e.x/i)<0?0:o>1?1:o;var o;e.type==="start"?(this.isDragging=!0,this.emit("dragstart",r)):e.type==="move"?this.emit("drag",r):e.type==="end"&&(this.isDragging=!1,this.emit("dragend",r))},[this.dragStream.signal]);this.subscriptions.push(n)}initHtml(){let n=document.createElement("div"),e=n.attachShadow({mode:"open"}),i=this.options.cspNonce&&typeof this.options.cspNonce=="string"?this.options.cspNonce.replace(/"/g,""):"";return e.innerHTML=` + + :host { + user-select: none; + min-width: 1px; + } + :host audio { + display: block; + width: 100%; + } + :host .scroll { + overflow-x: auto; + overflow-y: hidden; + width: 100%; + position: relative; + } + :host .noScrollbar { + scrollbar-color: transparent; + scrollbar-width: none; + } + :host .noScrollbar::-webkit-scrollbar { + display: none; + -webkit-appearance: none; + } + :host .wrapper { + position: relative; + overflow: visible; + z-index: 2; + } + :host .canvases { + min-height: ${this.getHeight(this.options.height,this.options.splitChannels)}px; + pointer-events: none; + } + :host .canvases > div { + position: relative; + } + :host canvas { + display: block; + position: absolute; + top: 0; + image-rendering: pixelated; + } + :host .progress { + pointer-events: none; + position: absolute; + z-index: 2; + top: 0; + left: 0; + width: 0; + height: 100%; + overflow: hidden; + } + :host .progress > div { + position: relative; + } + :host .cursor { + pointer-events: none; + position: absolute; + z-index: 5; + top: 0; + left: 0; + height: 100%; + border-radius: 2px; + } + + +
+
+
+
+
+
+
+ `,[n,e]}setOptions(n){if(this.options.container!==n.container){let e=this.parentFromOptionsContainer(n.container);e.appendChild(this.container),this.parent=e}n.dragToSeek!==!0&&typeof this.options.dragToSeek!="object"||this.initDrag(),this.options=n,this.reRender()}getWrapper(){return this.wrapper}getWidth(){return this.scrollContainer.clientWidth}getScroll(){return this.scrollContainer.scrollLeft}setScroll(n){this.scrollContainer.scrollLeft=n}setScrollPercentage(n){let{scrollWidth:e}=this.scrollContainer,i=e*n;this.setScroll(i)}destroy(){var n;this.subscriptions.forEach(e=>e()),this.container.remove(),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),(n=this.unsubscribeOnScroll)===null||n===void 0||n.forEach(e=>e()),this.unsubscribeOnScroll=[],this.dragStream&&(this.dragStream.cleanup(),this.dragStream=null),this.scrollStream&&(this.scrollStream.cleanup(),this.scrollStream=null)}createDelay(n=10){let e,i,r=()=>{e&&(clearTimeout(e),e=void 0),i&&(i(),i=void 0)};return this.timeouts.push(r),()=>new Promise((o,s)=>{r(),i=s,e=setTimeout(()=>{e=void 0,i=void 0,o()},n)})}getHeight(n,e){var i;let r=((i=this.audioData)===null||i===void 0?void 0:i.numberOfChannels)||1;return function({optionsHeight:o,optionsSplitChannels:s,parentHeight:d,numberOfChannels:u,defaultHeight:h=128}){if(o==null)return h;let p=Number(o);if(!isNaN(p))return p;if(o==="auto"){let m=d||h;return s?.every(b=>!b.overlay)?m/u:m}return h}({optionsHeight:n,optionsSplitChannels:e,parentHeight:this.parent.clientHeight,numberOfChannels:r,defaultHeight:128})}convertColorValues(n,e){return function(i,r,o){if(!Array.isArray(i))return i||"";if(i.length===0)return"#999";if(i.length<2)return i[0]||"";let s=document.createElement("canvas"),d=s.getContext("2d"),u=o??s.height*r,h=d.createLinearGradient(0,0,0,u||r),p=1/(i.length-1);return i.forEach((m,b)=>{h.addColorStop(b*p,m)}),h}(n,this.getPixelRatio(),e?.canvas.height)}getPixelRatio(){return n=window.devicePixelRatio,Math.max(1,n||1);var n}renderBarWaveform(n,e,i,r){let{width:o,height:s}=i.canvas,{halfHeight:d,barWidth:u,barRadius:h,barIndexScale:p,barSpacing:m,barMinHeight:b}=function({width:S,height:D,length:O,options:L,pixelRatio:X}){let V=D/2,ie=L.barWidth?L.barWidth*X:1,Ce=L.barGap?L.barGap*X:L.barWidth?ie/2:0,me=ie+Ce||1;return{halfHeight:V,barWidth:ie,barGap:Ce,barRadius:L.barRadius||0,barMinHeight:L.barMinHeight?L.barMinHeight*X:0,barIndexScale:O>0?S/me/O:0,barSpacing:me}}({width:o,height:s,length:(n[0]||[]).length,options:e,pixelRatio:this.getPixelRatio()}),w=function({channelData:S,barIndexScale:D,barSpacing:O,barWidth:L,halfHeight:X,vScale:V,canvasHeight:ie,barAlign:Ce,barMinHeight:me}){let Ze=S[0]||[],pt=S[1]||Ze,Ne=Ze.length,ft=[],nn=0,Cn=0,Sn=0;for(let Ae=0;Ae<=Ne;Ae++){let pn=Math.round(Ae*D);if(pn>nn){let{topHeight:kd,totalHeight:ba}=pT({maxTop:Cn,maxBottom:Sn,halfHeight:X,vScale:V,barMinHeight:me,barAlign:Ce}),P=fT({barAlign:Ce,halfHeight:X,topHeight:kd,totalHeight:ba,canvasHeight:ie});ft.push({x:nn*O,y:P,width:L,height:ba}),nn=pn,Cn=0,Sn=0}let Bo=Math.abs(Ze[Ae]||0),_a=Math.abs(pt[Ae]||0);Bo>Cn&&(Cn=Bo),_a>Sn&&(Sn=_a)}return ft}({channelData:n,barIndexScale:p,barSpacing:m,barWidth:u,halfHeight:d,vScale:r,canvasHeight:s,barAlign:e.barAlign,barMinHeight:b});i.beginPath();for(let S of w)h&&"roundRect"in i?i.roundRect(S.x,S.y,S.width,S.height,h):i.rect(S.x,S.y,S.width,S.height);i.fill(),i.closePath()}renderLineWaveform(n,e,i,r){let{width:o,height:s}=i.canvas,d=function({channelData:u,width:h,height:p,vScale:m}){let b=p/2,w=u[0]||[];return[w,u[1]||w].map((S,D)=>{let O=S.length,L=O?h/O:0,X=b,V=D===0?-1:1,ie=[{x:0,y:X}],Ce=0,me=0;for(let Ze=0;Ze<=O;Ze++){let pt=Math.round(Ze*L);if(pt>Ce){let ft=X+(Math.round(me*b*m)||1)*V;ie.push({x:Ce,y:ft}),Ce=pt,me=0}let Ne=Math.abs(S[Ze]||0);Ne>me&&(me=Ne)}return ie.push({x:Ce,y:X}),ie})}({channelData:n,width:o,height:s,vScale:r});i.beginPath();for(let u of d)if(u.length){i.moveTo(u[0].x,u[0].y);for(let h=1;hb&&(b=D)}return b?p/b:p}({channelData:n,barHeight:e.barHeight,normalize:e.normalize,maxPeak:e.maxPeak});lw(e)?this.renderBarWaveform(n,e,i,r):this.renderLineWaveform(n,e,i,r)}renderSingleCanvas(n,e,i,r,o,s,d){let u=this.getPixelRatio(),h=document.createElement("canvas");h.width=Math.round(i*u),h.height=Math.round(r*u),h.style.width=`${i}px`,h.style.height=`${r}px`,h.style.left=`${Math.round(o)}px`,s.appendChild(h);let p=h.getContext("2d");if(e.renderFunction?(p.fillStyle=this.convertColorValues(e.waveColor,p),e.renderFunction(n,p)):this.renderWaveform(n,e,p),h.width>0&&h.height>0){let m=h.cloneNode(),b=m.getContext("2d");b.drawImage(h,0,0),b.globalCompositeOperation="source-in",b.fillStyle=this.convertColorValues(e.progressColor,b),b.fillRect(0,0,h.width,h.height),d.appendChild(m)}}renderMultiCanvas(n,e,i,r,o,s){let d=this.getPixelRatio(),{clientWidth:u}=this.scrollContainer,h=i/d,p=function({clientWidth:S,totalWidth:D,options:O}){return ow(Math.min(8e3,S,D),O)}({clientWidth:u,totalWidth:h,options:e}),m={};if(p===0)return;let b=S=>{if(S<0||S>=w||m[S])return;m[S]=!0;let D=S*p,O=Math.min(h-D,p);if(O=ow(O,e),O<=0)return;let L=function({channelData:X,offset:V,clampedWidth:ie,totalWidth:Ce}){return X.map(me=>{let Ze=Math.floor(V/Ce*me.length),pt=Math.floor((V+ie)/Ce*me.length);return me.slice(Ze,pt)})}({channelData:n,offset:D,clampedWidth:O,totalWidth:h});this.renderSingleCanvas(L,e,O,r,D,o,s)},w=Math.ceil(h/p);if(!this.isScrollable){for(let S=0;Sb(S)),w>1){let S=this.on("scroll",()=>{let{scrollLeft:D}=this.scrollContainer;Object.keys(m).length>10&&(o.innerHTML="",s.innerHTML="",m={}),sw({scrollLeft:D,totalWidth:h,numCanvases:w}).forEach(O=>b(O))});this.unsubscribeOnScroll.push(S)}}renderChannel(n,e,i,r){var{overlay:o}=e,s=function(p,m){var b={};for(var w in p)Object.prototype.hasOwnProperty.call(p,w)&&m.indexOf(w)<0&&(b[w]=p[w]);if(p!=null&&typeof Object.getOwnPropertySymbols=="function"){var S=0;for(w=Object.getOwnPropertySymbols(p);S0&&(d.style.marginTop=`-${u}px`),this.canvasWrapper.style.minHeight=`${u}px`,this.canvasWrapper.appendChild(d);let h=d.cloneNode();this.progressWrapper.appendChild(h),this.renderMultiCanvas(n,s,i,u,d,h)}render(n){return Wt(this,void 0,void 0,function*(){var e;this.timeouts.forEach(h=>h()),this.timeouts=[],this.canvasWrapper.innerHTML="",this.progressWrapper.innerHTML="",this.options.width!=null&&(this.scrollContainer.style.width=typeof this.options.width=="number"?`${this.options.width}px`:this.options.width);let i=this.getPixelRatio(),r=this.scrollContainer.clientWidth,{scrollWidth:o,isScrollable:s,useParentWidth:d,width:u}=function({duration:h,minPxPerSec:p=0,parentWidth:m,fillParent:b,pixelRatio:w}){let S=Math.ceil(h*p),D=S>m,O=!!(b&&!D);return{scrollWidth:S,isScrollable:D,useParentWidth:O,width:(O?m:S)*w}}({duration:n.duration,minPxPerSec:this.options.minPxPerSec||0,parentWidth:r,fillParent:this.options.fillParent,pixelRatio:i});if(this.isScrollable=s,this.wrapper.style.width=d?"100%":`${o}px`,this.scrollContainer.style.overflowX=this.isScrollable?"auto":"hidden",this.scrollContainer.classList.toggle("noScrollbar",!!this.options.hideScrollbar),this.cursor.style.backgroundColor=`${this.options.cursorColor||this.options.progressColor}`,this.cursor.style.width=`${this.options.cursorWidth}px`,this.audioData=n,this.emit("render"),this.options.splitChannels)for(let h=0;h1&&h.push(n.getChannelData(1)),this.renderChannel(h,this.options,u,0)}Promise.resolve().then(()=>this.emit("rendered"))})}reRender(){if(this.unsubscribeOnScroll.forEach(i=>i()),this.unsubscribeOnScroll=[],!this.audioData)return;let{scrollWidth:n}=this.scrollContainer,{right:e}=this.progressWrapper.getBoundingClientRect();if(this.render(this.audioData),this.isScrollable&&n!==this.scrollContainer.scrollWidth){let{right:i}=this.progressWrapper.getBoundingClientRect(),r=function(o){let s=2*o;return(s<0?Math.floor(s):Math.ceil(s))/2}(i-e);this.scrollContainer.scrollLeft+=r}}zoom(n){this.options.minPxPerSec=n,this.reRender()}scrollIntoView(n,e=!1){let{scrollLeft:i,scrollWidth:r,clientWidth:o}=this.scrollContainer,s=n*r,d=i,u=i+o,h=o/2;if(this.isDragging)s+30>u?this.scrollContainer.scrollLeft+=30:s-30u)&&(this.scrollContainer.scrollLeft=s-(this.options.autoCenter?h:0));let p=s-i-h;e&&this.options.autoCenter&&p>0&&(this.scrollContainer.scrollLeft+=p)}}renderProgress(n,e){if(isNaN(n))return;let i=100*n;this.canvasWrapper.style.clipPath=`polygon(${i}% 0%, 100% 0%, 100% 100%, ${i}% 100%)`,this.progressWrapper.style.width=`${i}%`,this.cursor.style.left=`${i}%`,this.cursor.style.transform=this.options.cursorWidth?`translateX(-${n*this.options.cursorWidth}px)`:"",this.isScrollable&&this.options.autoScroll&&this.audioData&&this.audioData.duration>0&&this.scrollIntoView(n,e)}exportImage(n,e,i){return Wt(this,void 0,void 0,function*(){let r=this.canvasWrapper.querySelectorAll("canvas");if(!r.length)throw new Error("No waveform data");if(i==="dataURL"){let o=Array.from(r).map(s=>s.toDataURL(n,e));return Promise.resolve(o)}return Promise.all(Array.from(r).map(o=>new Promise((s,d)=>{o.toBlob(u=>{u?s(u):d(new Error("Could not export image"))},n,e)})))})}},nm=class extends Fr{constructor(){super(...arguments),this.animationFrameId=null,this.isRunning=!1}start(){if(this.isRunning)return;this.isRunning=!0;let n=()=>{this.isRunning&&(this.emit("tick"),this.animationFrameId=requestAnimationFrame(n))};n()}stop(){this.isRunning=!1,this.animationFrameId!==null&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null)}destroy(){this.stop()}},ga=class extends Fr{constructor(n=new AudioContext){super(),this.bufferNode=null,this.playStartTime=0,this.playedDuration=0,this._muted=!1,this._playbackRate=1,this._duration=void 0,this.buffer=null,this.currentSrc="",this.paused=!0,this.crossOrigin=null,this.seeking=!1,this.autoplay=!1,this.addEventListener=this.on,this.removeEventListener=this.un,this.audioContext=n,this.gainNode=this.audioContext.createGain(),this.gainNode.connect(this.audioContext.destination)}load(){return Wt(this,void 0,void 0,function*(){})}get src(){return this.currentSrc}set src(n){if(this.currentSrc=n,this._duration=void 0,!n)return this.buffer=null,void this.emit("emptied");fetch(n).then(e=>{if(e.status>=400)throw new Error(`Failed to fetch ${n}: ${e.status} (${e.statusText})`);return e.arrayBuffer()}).then(e=>this.currentSrc!==n?null:this.audioContext.decodeAudioData(e)).then(e=>{this.currentSrc===n&&(this.buffer=e,this.emit("loadedmetadata"),this.emit("canplay"),this.autoplay&&this.play())}).catch(e=>{console.error("WebAudioPlayer load error:",e)})}_play(){if(!this.paused)return;this.paused=!1,this.bufferNode&&(this.bufferNode.onended=null,this.bufferNode.disconnect()),this.bufferNode=this.audioContext.createBufferSource(),this.buffer&&(this.bufferNode.buffer=this.buffer),this.bufferNode.playbackRate.value=this._playbackRate,this.bufferNode.connect(this.gainNode);let n=this.playedDuration*this._playbackRate;(n>=this.duration||n<0)&&(n=0,this.playedDuration=0),this.bufferNode.start(this.audioContext.currentTime,n),this.playStartTime=this.audioContext.currentTime,this.bufferNode.onended=()=>{this.currentTime>=this.duration&&(this.pause(),this.emit("ended"))}}_pause(){var n;this.paused=!0,(n=this.bufferNode)===null||n===void 0||n.stop(),this.playedDuration+=this.audioContext.currentTime-this.playStartTime}play(){return Wt(this,void 0,void 0,function*(){this.paused&&(this._play(),this.emit("play"))})}pause(){this.paused||(this._pause(),this.emit("pause"))}stopAt(n){let e=n-this.currentTime,i=this.bufferNode;i?.stop(this.audioContext.currentTime+e),i?.addEventListener("ended",()=>{i===this.bufferNode&&(this.bufferNode=null,this.pause())},{once:!0})}setSinkId(n){return Wt(this,void 0,void 0,function*(){return this.audioContext.setSinkId(n)})}get playbackRate(){return this._playbackRate}set playbackRate(n){this._playbackRate=n,this.bufferNode&&(this.bufferNode.playbackRate.value=n)}get currentTime(){return(this.paused?this.playedDuration:this.playedDuration+(this.audioContext.currentTime-this.playStartTime))*this._playbackRate}set currentTime(n){let e=!this.paused;e&&this._pause(),this.playedDuration=n/this._playbackRate,e&&this._play(),this.emit("seeking"),this.emit("timeupdate")}get duration(){var n,e;return(n=this._duration)!==null&&n!==void 0?n:((e=this.buffer)===null||e===void 0?void 0:e.duration)||0}set duration(n){this._duration=n}get volume(){return this.gainNode.gain.value}set volume(n){this.gainNode.gain.value=n,this.emit("volumechange")}get muted(){return this._muted}set muted(n){this._muted!==n&&(this._muted=n,this._muted?this.gainNode.disconnect():this.gainNode.connect(this.audioContext.destination))}canPlayType(n){return/^(audio|video)\//.test(n)}getGainNode(){return this.gainNode}getChannelData(){let n=[];if(!this.buffer)return n;let e=this.buffer.numberOfChannels;for(let i=0;i!O.value,[O]),ft=Rr(()=>ie.value!==null,[ie]),nn=Rr(()=>ft.value&&D.value>0,[ft,D]),Cn=Rr(()=>S.value,[S]),Sn=Rr(()=>D.value>0?S.value/D.value:0,[S,D]);return{state:{currentTime:S,duration:D,isPlaying:O,isPaused:Ne,isSeeking:L,volume:X,playbackRate:V,audioBuffer:ie,peaks:Ce,url:me,zoom:Ze,scrollPosition:pt,canPlay:ft,isReady:nn,progress:Cn,progressPercent:Sn},actions:{setCurrentTime:Ae=>{let pn=Math.max(0,Math.min(D.value||1/0,Ae));S.set(pn)},setDuration:Ae=>{D.set(Math.max(0,Ae))},setPlaying:Ae=>{O.set(Ae)},setSeeking:Ae=>{L.set(Ae)},setVolume:Ae=>{let pn=Math.max(0,Math.min(1,Ae));X.set(pn)},setPlaybackRate:Ae=>{let pn=Math.max(.1,Math.min(16,Ae));V.set(pn)},setAudioBuffer:Ae=>{ie.set(Ae),Ae&&D.set(Ae.duration)},setPeaks:Ae=>{Ce.set(Ae)},setUrl:Ae=>{me.set(Ae)},setZoom:Ae=>{Ze.set(Math.max(0,Ae))},setScrollPosition:Ae=>{pt.set(Math.max(0,Ae))}}}}({isPlaying:this.isPlayingSignal,currentTime:this.currentTimeSignal,duration:this.durationSignal,volume:this.volumeSignal,playbackRate:this.playbackRateSignal,isSeeking:this.seekingSignal});this.wavesurferState=i,this.wavesurferActions=r,this.timer=new nm;let o=e?void 0:this.getMediaElement();this.renderer=new tm(this.options,o),this.initPlayerEvents(),this.initRendererEvents(),this.initTimerEvents(),this.initReactiveState(),this.initPlugins();let s=this.options.url||this.getSrc()||"";Promise.resolve().then(()=>{this.emit("init");let{peaks:d,duration:u}=this.options;(s||d&&u)&&this.load(s,d,u).catch(h=>{this.emit("error",h instanceof Error?h:new Error(String(h)))})})}updateProgress(n=this.getCurrentTime()){return this.renderer.renderProgress(n/this.getDuration(),this.isPlaying()),n}initTimerEvents(){this.subscriptions.push(this.timer.on("tick",()=>{if(!this.isSeeking()){let n=this.updateProgress();this.emit("timeupdate",n),this.emit("audioprocess",n),this.stopAtPosition!=null&&this.isPlaying()&&n>=this.stopAtPosition&&this.pause()}}))}initReactiveState(){this.reactiveCleanups.push(function(n,e){let i=[];i.push(Zi(()=>{let s=n.isPlaying.value;e.emit(s?"play":"pause")},[n.isPlaying])),i.push(Zi(()=>{let s=n.currentTime.value;e.emit("timeupdate",s),n.isPlaying.value&&e.emit("audioprocess",s)},[n.currentTime,n.isPlaying])),i.push(Zi(()=>{n.isSeeking.value&&e.emit("seeking",n.currentTime.value)},[n.isSeeking,n.currentTime]));let r=!1;i.push(Zi(()=>{n.isReady.value&&!r&&(r=!0,e.emit("ready",n.duration.value))},[n.isReady,n.duration]));let o=!1;return i.push(Zi(()=>{let s=n.isPlaying.value,d=n.currentTime.value,u=n.duration.value,h=u>0&&d>=u;o&&!s&&h&&e.emit("finish"),o=s&&h},[n.isPlaying,n.currentTime,n.duration])),i.push(Zi(()=>{let s=n.zoom.value;s>0&&e.emit("zoom",s)},[n.zoom])),()=>{i.forEach(s=>s())}}(this.wavesurferState,{emit:this.emit.bind(this)}))}initPlayerEvents(){this.isPlaying()&&(this.emit("play"),this.timer.start()),this.mediaSubscriptions.push(this.onMediaEvent("timeupdate",()=>{let n=this.updateProgress();this.emit("timeupdate",n)}),this.onMediaEvent("play",()=>{this.emit("play"),this.timer.start()}),this.onMediaEvent("pause",()=>{this.emit("pause"),this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("emptied",()=>{this.timer.stop(),this.stopAtPosition=null}),this.onMediaEvent("ended",()=>{this.emit("timeupdate",this.getDuration()),this.emit("finish"),this.stopAtPosition=null}),this.onMediaEvent("seeking",()=>{this.emit("seeking",this.getCurrentTime())}),this.onMediaEvent("error",()=>{var n;this.emit("error",(n=this.getMediaElement().error)!==null&&n!==void 0?n:new Error("Media error")),this.stopAtPosition=null}))}initRendererEvents(){this.subscriptions.push(this.renderer.on("click",(n,e)=>{this.options.interact&&(this.seekTo(n),this.emit("interaction",n*this.getDuration()),this.emit("click",n,e))}),this.renderer.on("dblclick",(n,e)=>{this.emit("dblclick",n,e)}),this.renderer.on("scroll",(n,e,i,r)=>{let o=this.getDuration();this.emit("scroll",n*o,e*o,i,r)}),this.renderer.on("render",()=>{this.emit("redraw")}),this.renderer.on("rendered",()=>{this.emit("redrawcomplete")}),this.renderer.on("dragstart",n=>{this.emit("dragstart",n)}),this.renderer.on("dragend",n=>{this.emit("dragend",n)}),this.renderer.on("resize",()=>{this.emit("resize")}));{let n,e=this.renderer.on("drag",i=>{var r;if(!this.options.interact)return;this.renderer.renderProgress(i),clearTimeout(n);let o=0,s=this.options.dragToSeek;this.isPlaying()?o=0:s===!0?o=200:s&&typeof s=="object"&&(o=(r=s.debounceTime)!==null&&r!==void 0?r:200),n=setTimeout(()=>{this.seekTo(i)},o),this.emit("interaction",i*this.getDuration()),this.emit("drag",i)});this.subscriptions.push(()=>{clearTimeout(n),e()})}}initPlugins(){var n;!((n=this.options.plugins)===null||n===void 0)&&n.length&&this.options.plugins.forEach(e=>{this.registerPlugin(e)})}unsubscribePlayerEvents(){this.mediaSubscriptions.forEach(n=>n()),this.mediaSubscriptions=[]}setOptions(n){this.options=Object.assign({},this.options,n),n.duration&&!n.peaks&&(this.decodedData=wd.createBuffer(this.exportPeaks(),n.duration)),n.peaks&&n.duration&&(this.decodedData=wd.createBuffer(n.peaks,n.duration)),this.renderer.setOptions(this.options),n.audioRate&&this.setPlaybackRate(n.audioRate),n.mediaControls!=null&&(this.getMediaElement().controls=n.mediaControls)}registerPlugin(n){if(this.plugins.includes(n))return n;n._init(this),this.plugins.push(n);let e=n.once("destroy",()=>{this.plugins=this.plugins.filter(i=>i!==n),this.subscriptions=this.subscriptions.filter(i=>i!==e)});return this.subscriptions.push(e),n}unregisterPlugin(n){this.plugins=this.plugins.filter(e=>e!==n),n.destroy()}getWrapper(){return this.renderer.getWrapper()}getWidth(){return this.renderer.getWidth()}getScroll(){return this.renderer.getScroll()}setScroll(n){return this.renderer.setScroll(n)}setScrollTime(n){let e=n/this.getDuration();this.renderer.setScrollPercentage(e)}getActivePlugins(){return this.plugins}loadAudio(n,e,i,r){return Wt(this,void 0,void 0,function*(){var o;if(this.emit("load",n),!this.options.media&&this.isPlaying()&&this.pause(),this.decodedData=null,this.stopAtPosition=null,(o=this.abortController)===null||o===void 0||o.abort(),this.abortController=null,!e&&!i){let d=this.options.fetchParams||{};window.AbortController&&!d.signal&&(this.abortController=new AbortController,d.signal=this.abortController.signal);let u=p=>this.emit("loading",p);e=yield hT.fetchBlob(n,u,d);let h=this.options.blobMimeType;h&&(e=new Blob([e],{type:h}))}this.setSrc(n,e);let s=yield new Promise(d=>{let u=r||this.getDuration();u?d(u):this.mediaSubscriptions.push(this.onMediaEvent("loadedmetadata",()=>d(this.getDuration()),{once:!0}))});if(!n&&!e){let d=this.getMediaElement();d instanceof ga&&(d.duration=s)}if(i)this.decodedData=wd.createBuffer(i,s||0);else if(e){let d=yield e.arrayBuffer();this.decodedData=yield wd.decode(d,this.options.sampleRate)}this.decodedData&&(this.emit("decode",this.getDuration()),this.renderer.render(this.decodedData)),this.emit("ready",this.getDuration())})}load(n,e,i){return Wt(this,void 0,void 0,function*(){try{return yield this.loadAudio(n,void 0,e,i)}catch(r){throw this.emit("error",r),r}})}loadBlob(n,e,i){return Wt(this,void 0,void 0,function*(){try{return yield this.loadAudio("",n,e,i)}catch(r){throw this.emit("error",r),r}})}zoom(n){if(!this.decodedData)throw new Error("No audio loaded");this.renderer.zoom(n),this.emit("zoom",n)}getDecodedData(){return this.decodedData}exportPeaks({channels:n=2,maxLength:e=8e3,precision:i=1e4}={}){if(!this.decodedData)throw new Error("The audio has not been decoded yet");let r=Math.min(n,this.decodedData.numberOfChannels),o=[];for(let s=0;sMath.abs(b)&&(b=S)}u.push(Math.round(b*i)/i)}o.push(u)}return o}getDuration(){let n=super.getDuration()||0;return n!==0&&n!==1/0||!this.decodedData||(n=this.decodedData.duration),n}toggleInteraction(n){this.options.interact=n}setTime(n){this.stopAtPosition=null,super.setTime(n),this.updateProgress(n),this.emit("timeupdate",n)}seekTo(n){let e=this.getDuration()*n;this.setTime(e)}play(n,e){let i=Object.create(null,{play:{get:()=>super.play}});return Wt(this,void 0,void 0,function*(){n!=null&&this.setTime(n);let r=yield i.play.call(this);return e!=null&&(this.media instanceof ga?this.media.stopAt(e):this.stopAtPosition=e),r})}playPause(){return Wt(this,void 0,void 0,function*(){return this.isPlaying()?this.pause():this.play()})}stop(){this.pause(),this.setTime(0)}skip(n){this.setTime(this.getCurrentTime()+n)}empty(){this.load("",[[0]],.001)}setMediaElement(n){this.unsubscribePlayerEvents(),super.setMediaElement(n),this.initPlayerEvents()}exportImage(){return Wt(this,arguments,void 0,function*(n="image/png",e=1,i="dataURL"){return this.renderer.exportImage(n,e,i)})}destroy(){var n;this.emit("destroy"),(n=this.abortController)===null||n===void 0||n.abort(),this.plugins.forEach(e=>e.destroy()),this.subscriptions.forEach(e=>e()),this.unsubscribePlayerEvents(),this.reactiveCleanups.forEach(e=>e()),this.reactiveCleanups=[],this.timer.destroy(),this.renderer.destroy(),super.destroy()}};Nr.BasePlugin=class extends Fr{constructor(t){super(),this.subscriptions=[],this.isDestroyed=!1,this.options=t}onInit(){}_init(t){this.isDestroyed&&(this.subscriptions=[],this.isDestroyed=!1),this.wavesurfer=t,this.onInit()}destroy(){this.emit("destroy"),this.subscriptions.forEach(t=>t()),this.subscriptions=[],this.isDestroyed=!0,this.wavesurfer=void 0}},Nr.dom=uT;var dw=(()=>{class t{constructor(e){this.http=e,this.ragHost=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space":"http://localhost:5000",this.pronBase=`${this.ragHost}/pron`}generateTeacherAudio(e,i){let r=`${this.pronBase}/generate_teacher_audio`,o=new FormData;return o.append("word",e),i&&o.append("reference",i,i.name),this.http.post(r,o).pipe(Y(s=>({audioUrl:`${this.pronBase}/${s.audio_url}`})),Le(s=>console.log("[API] generateTeacherAudio ->",s)),Ke(s=>(console.error("[API] generateTeacherAudio error",s),xt(()=>s))))}generateTeacherAudioStream(e,i){let r=`${this.pronBase}/generate_teacher_audio_stream`,o=new FormData;return o.append("word",e),i&&o.append("reference",i,i.name),this.http.post(r,o,{responseType:"blob"}).pipe(Le(()=>console.log("[API] generateTeacherAudioStream")),Y(s=>s),Ke(s=>(console.error("[API] generateTeacherAudioStream error",s),xt(()=>s))))}generateTeacherAudioBlob(e,i){let r=`${this.pronBase}/generate_teacher_audio`,o=new FormData;return o.append("word",e),i&&o.append("reference",i,i.name),this.http.post(r,o).pipe(Ct(s=>{let d=`${this.pronBase}/${s.audio_url}`;return this.http.get(d,{responseType:"blob"}).pipe(Y(u=>({audioUrl:d,blob:u})),Le(()=>console.log("[API] downloaded teacher audio as blob",d)))}),Ke(s=>(console.error("[API] generateTeacherAudioBlob error",s),xt(()=>s))))}static{this.\u0275fac=function(i){return new(i||t)(I(De))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function _T(t,n){t&1&&(c(0,"span",55),l(1,"Play Teacher"),a())}function bT(t,n){t&1&&(c(0,"span",55),l(1,"Loading..."),a())}function yT(t,n){t&1&&(Me(0),It(),c(1,"svg",56),v(2,"path",57)(3,"path",58)(4,"line",59),a(),ci(),c(5,"span",55),l(6,"Start Recording"),a(),Ie())}function wT(t,n){t&1&&(It(),c(0,"svg",60),v(1,"rect",61),a(),ci(),c(2,"span",55),l(3,"Stop"),a())}function xT(t,n){if(t&1){let e=F();c(0,"button",62),y("click",function(){x(e);let r=_();return C(r.playRecorded())}),It(),c(1,"svg",22),v(2,"polygon",23),a(),ci(),c(3,"span",55),l(4,"Play My Recording"),a()()}}function CT(t,n){t&1&&(c(0,"div",63)(1,"div",64)(2,"div",65),l(3,"Teacher"),a(),v(4,"div",66),a(),c(5,"div",64)(6,"div",65),l(7,"Student"),a(),v(8,"div",67),a()())}function ST(t,n){t&1&&(It(),c(0,"svg",22),v(1,"polyline",68),a())}function ET(t,n){t&1&&(c(0,"span",55),l(1,"Check Pronunciation"),a())}function MT(t,n){t&1&&(c(0,"span",55),l(1,"Checking..."),a())}function IT(t,n){t&1&&(It(),c(0,"svg",25),v(1,"circle",26),a())}function DT(t,n){if(t&1&&(c(0,"div",77)(1,"div",78),l(2),a(),c(3,"div",79)(4,"div",80),l(5),a(),v(6,"div",81),a()()),t&2){let e,i=n.$implicit,r=n.index,o=_(2);f(2),U((e=i.id)!==null&&e!==void 0?e:o.suggestionPage*o.suggestionsPerPage+r+1),f(3),U(i.title),f(),g("innerHTML",i.message,Ri)}}function PT(t,n){if(t&1){let e=F();c(0,"div",69)(1,"h3",70),l(2,"Feedback & Suggestions"),a(),c(3,"div",71)(4,"div",72),k(5,DT,7,3,"div",73),a(),c(6,"div",74)(7,"button",75),y("click",function(){x(e);let r=_();return C(r.prevSuggestion())}),l(8,"\u25C0"),a(),c(9,"div",52),l(10),a(),c(11,"button",76),y("click",function(){x(e);let r=_();return C(r.nextSuggestion())}),l(12,"\u25B6"),a()()()()}if(t&2){let e=_();f(5),g("ngForOf",e.pagedSuggestions),f(2),g("disabled",e.suggestionPage===0),f(3),Kn(" ",e.suggestionPage+1," / ",e.totalSuggestionPages," "),f(),g("disabled",e.suggestionPage>=e.totalSuggestionPages-1)}}function kT(t,n){if(t&1&&(c(0,"div",69)(1,"h3",70),l(2,"Feedback & Suggestions"),a(),c(3,"div",82)(4,"div",83)(5,"p",84),l(6),a()()()()),t&2){let e=_();f(6),U(e.result==null?null:e.result.suggestion)}}var uw=(()=>{class t{constructor(e,i,r,o,s){this.http=e,this.cdr=i,this.dialogRef=r,this.data=o,this.api=s,this.word="Apple",this.phonetics="/\u02C8\xE6p\u0259l/",this.imgsrc="assets/images/pron/letter-a.png",this.questions=[{word:"Apple",imgsrc:"assets/images/pron/letter-a.png",phonetics:"/\u02C8\xE6p\u0259l/"},{word:"Ball",imgsrc:"assets/images/pron/letter-b.png",phonetics:"/b\u0254\u02D0l/"},{word:"Cat",imgsrc:"assets/images/pron/letter-c.png",phonetics:"/k\xE6t/"},{word:"Dog",imgsrc:"assets/images/pron/letter-d.png",phonetics:"/d\u0252\u0261/"},{word:"Egg",imgsrc:"assets/images/pron/letter-e.png",phonetics:"/e\u0261/"},{word:"Fish",imgsrc:"assets/images/pron/letter-f.png",phonetics:"/f\u026A\u0283/"},{word:"Grapes",imgsrc:"assets/images/pron/letter-g.png",phonetics:"/\u0261re\u026Aps/"},{word:"Hat",imgsrc:"assets/images/pron/letter-h.png",phonetics:"/h\xE6t/"},{word:"Ice cream",imgsrc:"assets/images/pron/letter-i.png",phonetics:"/\u02C8a\u026As \u02CCkri\u02D0m/"},{word:"Jar",imgsrc:"assets/images/pron/letter-j.png",phonetics:"/d\u0292\u0251\u02D0r/"},{word:"Kite",imgsrc:"assets/images/pron/letter-k.png",phonetics:"/ka\u026At/"},{word:"Lion",imgsrc:"assets/images/pron/letter-l.png",phonetics:"/\u02C8la\u026A\u0259n/"},{word:"Moon",imgsrc:"assets/images/pron/letter-m.png",phonetics:"/mu\u02D0n/"},{word:"Nest",imgsrc:"assets/images/pron/letter-n.png",phonetics:"/nest/"},{word:"Orange",imgsrc:"assets/images/pron/letter-o.png",phonetics:"/\u02C8\u0252r\u026And\u0292/"},{word:"Pig",imgsrc:"assets/images/pron/letter-p.png",phonetics:"/p\u026A\u0261/"},{word:"Queen",imgsrc:"assets/images/pron/letter-q.png",phonetics:"/kwi\u02D0n/"},{word:"Rabbit",imgsrc:"assets/images/pron/letter-r.png",phonetics:"/\u02C8r\xE6b\u026At/"},{word:"Sun",imgsrc:"assets/images/pron/letter-s.png",phonetics:"/s\u028Cn/"},{word:"Tree",imgsrc:"assets/images/pron/letter-t.png",phonetics:"/tri\u02D0/"},{word:"Umbrella",imgsrc:"assets/images/pron/letter-u.png",phonetics:"/\u028Cm\u02C8brel\u0259/"},{word:"Van",imgsrc:"assets/images/pron/letter-v.png",phonetics:"/v\xE6n/"},{word:"Watch",imgsrc:"assets/images/pron/letter-w.png",phonetics:"/w\u0252t\u0283/"},{word:"Xylophone",imgsrc:"assets/images/pron/letter-x.png",phonetics:"/\u02C8za\u026Al\u0259f\u0259\u028An/"},{word:"Yarn",imgsrc:"assets/images/pron/letter-y.png",phonetics:"/j\u0251\u02D0n/"},{word:"Zebra",imgsrc:"assets/images/pron/letter-z.png",phonetics:"/\u02C8zebr\u0259/"}],this.currentIndex=0,this.backendURL=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space":"http://localhost:5000",this.teacherAudioCache=new Map,this.isTeacherLoading=!1,this.isRecording=!1,this.recordedBlobs=[],this.result=null,this.suggestions=[],this.suggestionPage=0,this.suggestionsPerPage=1,this.audioChunks=[],this.audioBlobUrl=null,this.recordingDuration=0,this.isOriginal=!1,this.recordingStopResolver=null,this.pronMode="phonetics",this.isChecking=!1}ngOnInit(){this.showQuestion(0)}onModeChange(e){let i=(e??"phonetics").toString().trim().toLowerCase();if(console.log("[Pronunciation] onModeChange ->",{raw:e,normalized:i}),this.pronMode=i,i==="waveform"){this.initWaveSurfers();let r=this.teacherAudioCache.get(this.word);if(r&&this.teacherWaveSurfer)try{this.teacherWaveSurfer.load(r)}catch{}if(this.recordedBlobUrl&&this.studentWaveSurfer)try{this.studentWaveSurfer.load(this.recordedBlobUrl)}catch{}}else this.destroyWaveSurfers()}updateSelection(){this.stopTeacherPlayback(),this.teacherAudioCache.clear(),this.cdr.detectChanges()}initWaveSurfers(){if(!this.teacherWaveSurfer)try{this.teacherWaveSurfer=Nr.create({container:"#teacherWaveform",waveColor:"#d0e9ff",progressColor:"#007acc",cursorColor:"#333",height:80})}catch(e){console.warn("could not create teacher WaveSurfer",e)}if(!this.studentWaveSurfer)try{this.studentWaveSurfer=Nr.create({container:"#studentWaveform",waveColor:"#ffdcd0",progressColor:"#ff6b3d",cursorColor:"#333",height:80})}catch(e){console.warn("could not create student WaveSurfer",e)}}destroyWaveSurfers(){try{if(this.teacherWaveSurfer){try{this.teacherWaveSurfer.destroy()}catch{}this.teacherWaveSurfer=void 0}if(this.studentWaveSurfer){try{this.studentWaveSurfer.destroy()}catch{}this.studentWaveSurfer=void 0}}catch{}}getStaticTeacherAudioPath(e){return`assets/audio/${(e||"").toLowerCase().trim().replace(/\s+/g,"_").replace(/[^a-z0-9_]/g,"")}.mp3`}playTeacherAudio(){return it(this,null,function*(){if(!this.isOriginal){let i=this.getStaticTeacherAudioPath(this.word);this.isTeacherLoading=!0;try{if((yield fetch(i,{method:"GET"})).ok){this.teacherAudioCache.set(this.word,i),this.playAudioWithWaveform(i,"teacher"),this.isTeacherLoading=!1;return}}catch(r){console.warn("Static teacher audio check failed, will use generated audio",r)}this.isTeacherLoading=!1}let e=this.teacherAudioCache.get(this.word);if(e){this.isTeacherLoading=!0,this.playAudioWithWaveform(e,"teacher"),this.isTeacherLoading=!1;return}this.isTeacherLoading=!0,this.api.generateTeacherAudioStream(this.word,this.selectedFile).subscribe({next:i=>{try{let r=URL.createObjectURL(i),o=this.teacherAudioCache.get(this.word);if(o&&o.startsWith("blob:"))try{URL.revokeObjectURL(o)}catch{}this.teacherAudioCache.set(this.word,r),this.playAudioWithWaveform(r,"teacher")}finally{this.isTeacherLoading=!1}},error:i=>{console.warn("generateTeacherAudioStream failed, falling back to generateTeacherAudioBlob/url",i),this.api.generateTeacherAudioBlob(this.word,this.selectedFile).subscribe({next:({audioUrl:r,blob:o})=>{let s=URL.createObjectURL(o),d=this.teacherAudioCache.get(this.word);if(d&&d.startsWith("blob:"))try{URL.revokeObjectURL(d)}catch{}this.teacherAudioCache.set(this.word,s),this.playAudioWithWaveform(s,"teacher"),this.isTeacherLoading=!1},error:r=>{console.error("generateTeacherAudioBlob fallback failed",r),this.api.generateTeacherAudio(this.word,this.selectedFile).subscribe({next:({audioUrl:o})=>{this.teacherAudioCache.set(this.word,o),this.playAudioWithWaveform(o,"teacher"),this.isTeacherLoading=!1},error:o=>{console.error("generateTeacherAudio fallback failed",o),this.isTeacherLoading=!1}})}})}})})}playAudioWithWaveform(e,i){if(e){if(this.pronMode==="waveform"){if(this.initWaveSurfers(),i==="teacher")try{this.teacherWaveSurfer?(this.teacherWaveSurfer.load(e),this.teacherWaveSurfer.once("ready",()=>{try{this.teacherWaveSurfer.play()}catch{}})):this.fallbackAudioPlay(e,"teacher")}catch(r){console.warn("WaveSurfer teacher play failed, fallback",r),this.fallbackAudioPlay(e,"teacher")}else try{this.studentWaveSurfer?(this.studentWaveSurfer.load(e),this.studentWaveSurfer.once("ready",()=>{try{this.studentWaveSurfer.play()}catch{}})):this.fallbackAudioPlay(e,"recorded")}catch(r){console.warn("WaveSurfer student play failed, fallback",r),this.fallbackAudioPlay(e,"recorded")}return}if(i==="teacher"){this.stopTeacherPlayback(),this.teacherAudio=new Audio;try{e.startsWith("blob:")||(this.teacherAudio.crossOrigin="anonymous")}catch{}this.teacherAudio.preload="auto",this.teacherAudio.src=e,this.teacherAudio.oncanplay=()=>{this.teacherAudio.play().catch(()=>{})},this.teacherAudio.onended=()=>{};try{this.teacherAudio.load()}catch{}}else{this.stopRecordedPlayback(),this.recordedAudio=new Audio;try{e.startsWith("blob:")||(this.recordedAudio.crossOrigin="anonymous")}catch{}this.recordedAudio.preload="auto",this.recordedAudio.src=e,this.recordedAudio.oncanplay=()=>{this.recordedAudio.play().catch(()=>{})},this.recordedAudio.onended=()=>this.stopRecordedPlayback();try{this.recordedAudio.load()}catch{}}}}fallbackAudioPlay(e,i){if(i==="teacher"){this.stopTeacherPlayback();let r=new Audio(e);try{e.startsWith("blob:")||(r.crossOrigin="anonymous")}catch{}r.play().catch(()=>{}),this.teacherAudio=r}else{this.stopRecordedPlayback();let r=new Audio(e);try{e.startsWith("blob:")||(r.crossOrigin="anonymous")}catch{}r.play().catch(()=>{}),this.recordedAudio=r}}stopTeacherPlayback(){if(this.teacherAudio){try{this.teacherAudio.pause(),this.teacherAudio.onended=null}catch{}this.teacherAudio=void 0}if(this.teacherWaveSurfer)try{this.teacherWaveSurfer.pause()}catch{}}stopRecordedPlayback(){if(this.recordedAudio){try{this.recordedAudio.pause(),this.recordedAudio.onended=null}catch{}this.recordedAudio=void 0}if(this.studentWaveSurfer)try{this.studentWaveSurfer.pause()}catch{}}checkPronunciation(){return it(this,null,function*(){if(this.isRecording&&this.mediaRecorder)try{this.mediaRecorder.stop(),this.recordingStopPromise&&(yield this.recordingStopPromise)}catch(d){console.warn("Error stopping recorder before check:",d)}let e=null;if(this.recordedBlobs&&this.recordedBlobs.length>0){let d=this.recordedBlobs[0]?.type||"audio/webm";e=new Blob(this.recordedBlobs,{type:d})}else if(this.audioBlobUrl)try{e=yield(yield fetch(this.audioBlobUrl)).blob()}catch(d){console.warn("Failed to fetch audioBlob from audioBlobUrl:",d)}if(!e||e.size===0){this.result={score:0,suggestion:"No audio recorded. Please record and try again."},this.suggestions=[{id:1,title:"No Audio",message:"No audio was found. Record again and ensure microphone permissions are allowed."}],this.suggestionPage=0,this.cdr.detectChanges();return}this.isChecking=!0,this.cdr.detectChanges();let i=".webm";try{let d=e.type||"";d.includes("wav")?i=".wav":d.includes("ogg")?i=".ogg":d.includes("webm")?i=".webm":(d.includes("mpeg")||d.includes("mp3"))&&(i=".mp3")}catch{}let r=`${this.word}${i}`,o=new FormData;o.append("audio",e,r),o.append("word",this.word);let s=(this.pronMode??"phonetics").toString().trim().toLowerCase();o.append("mode",s),this.selectedFile&&o.append("reference",this.selectedFile),console.log("[Pronunciation] sending check_pronunciation",{word:this.word,mode:s});try{for(let[d,u]of o.entries())u instanceof File?console.log(" FormData entry:",d,"File name=",u.name,"size=",u.size):console.log(" FormData entry:",d,u)}catch(d){console.warn("Could not enumerate FormData entries for logging",d)}try{let d=yield this.http.post(`${this.backendURL}/pron/check_pronunciation`,o).toPromise();if(d?.mode==="waveform"||typeof d?.waveform_similarity<"u"){let b=Number(d.waveform_similarity??0),w=!!d.waveform_match;if(this.result={score:Math.round(b),suggestion:w?"Audio matches teacher":"Audio does not match teacher",feedbackAudioUrl:void 0,phonemeScore:b,acousticScore:void 0},this.suggestions=[{id:1,title:"Waveform Match",message:`Similarity: ${b}% \u2014 Matched: ${w?"Yes":"No"}`}],this.pronMode==="waveform"){if(this.recordedBlobUrl&&this.studentWaveSurfer)try{this.studentWaveSurfer.load(this.recordedBlobUrl)}catch{}if(d.teacher_audio_url){let S=d.teacher_audio_url.startsWith("http")?d.teacher_audio_url:`${this.backendURL}/${d.teacher_audio_url}`;if(this.teacherAudioCache.set(this.word,S),this.teacherWaveSurfer)try{this.teacherWaveSurfer.load(S)}catch{}}else{let S=this.teacherAudioCache.get(this.word);if(S&&this.teacherWaveSurfer)try{this.teacherWaveSurfer.load(S)}catch{}else this.api.generateTeacherAudio(this.word,this.selectedFile).subscribe({next:({audioUrl:D})=>{if(this.teacherAudioCache.set(this.word,D),this.teacherWaveSurfer)try{this.teacherWaveSurfer.load(D)}catch{}},error:()=>{}})}}this.suggestionPage=0,this.isChecking=!1,this.cdr.detectChanges();return}if(s==="select"||this.pronMode==="select"){if(Array.isArray(d?.suggestion))this.suggestions=d.suggestion.map((b,w)=>{let S=typeof b=="string"?b:b.message??JSON.stringify(b),D=this.sanitizeFeedbackText(S),L=(b&&b.title?this.sanitizeFeedbackText(String(b.title)):"")||this.deriveTitleFromMessage(D,w);return{id:b?.id??w+1,title:L,type:b?.type??"",message:D}});else if(typeof d?.suggestion=="string"&&d.suggestion.trim()){let b=this.sanitizeFeedbackText(d.suggestion);this.suggestions=[{id:1,title:this.deriveTitleFromMessage(b,0),type:"",message:b}]}else this.suggestions=[];this.suggestionPage=0,this.isChecking=!1,this.cdr.detectChanges();return}let h=Number(d?.phoneme_similarity??d?.phonemeSimilarity??0),p=Math.round(Math.max(0,Math.min(1,h))*100),m=Number(d?.acoustic_score??d?.score??d?.score_acoustic??0);if(this.result={score:p,suggestion:typeof d?.suggestion=="string"?d.suggestion:"",feedbackAudioUrl:d?.audio_url?`${this.backendURL}/${d.audio_url}`:void 0,phonemeScore:p,acousticScore:isNaN(m)?void 0:m},Array.isArray(d?.suggestion))this.suggestions=d.suggestion.map((b,w)=>{let S=typeof b=="string"?b:b.message??JSON.stringify(b),D=this.sanitizeFeedbackText(S),L=(b&&b.title?this.sanitizeFeedbackText(String(b.title)):"")||this.deriveTitleFromMessage(D,w);return{id:b?.id??w+1,title:L,type:b?.type??"",message:D}});else if(typeof d?.suggestion=="string"&&d.suggestion.trim()){let b=this.sanitizeFeedbackText(d.suggestion);this.suggestions=[{id:1,title:this.deriveTitleFromMessage(b,0),type:"",message:b}]}else this.suggestions=[];this.suggestionPage=0}catch(d){console.error("check_pronunciation error",d),this.result={score:0,suggestion:"Server error"},this.suggestions=[{id:1,title:"Error",message:"Server error"}],this.suggestionPage=0}finally{this.isChecking=!1,this.cdr.detectChanges()}})}sanitizeFeedbackText(e){return e?e.replace(/^[^A-Za-z0-9]+/,"").trim():""}deriveTitleFromMessage(e,i){if(!e)return`Feedback ${i+1}`;let r=e.toLowerCase();if(r.includes("vowel"))return"Vowel";if(r.includes("consonant"))return"Consonant";if(r.includes("missing")||r.includes("missing sounds")||r.includes("missing sound"))return"Missing Sounds";if(r.includes("filler")||r.startsWith("uh ")||r.startsWith("ah "))return"Extra Sounds";if(r.includes("syllable"))return"Syllables";if(r.includes("stress"))return"Stress";if(r.includes("timing")||r.includes("speed")||r.includes("pace"))return"Timing & Pace";if(r.includes("quiet")||r.includes("soft")||r.includes("loud")||r.includes("volume"))return"Volume";if(r.includes("whisper")||r.includes("system heard")||r.includes("recognized")||r.includes("heard"))return"Word Match";if(r.includes("natural"))return"Naturalness";if(r.includes("clarity")||r.includes("noise")||r.includes("unclear"))return"Clarity";if(r.includes("audio")&&r.includes("noise"))return"Audio Quality";let s=e.split(/\s+/).slice(0,4).map(d=>d.replace(/[^a-zA-Z0-9'-]/g,"")).join(" ");return s||(s=`Feedback ${i+1}`),s=s.split(" ").map(d=>d.charAt(0).toUpperCase()+d.slice(1)).join(" "),s}ngOnDestroy(){if(this.stopTeacherPlayback(),this.stopRecordedPlayback(),this.destroyWaveSurfers(),this.micStream){try{this.micStream.getTracks().forEach(e=>e.stop())}catch{}this.micStream=void 0}}onFileSelected(e){let i=e.target;i.files&&i.files.length&&(this.selectedFile=i.files[0],this.teacherAudioCache.has(this.word)&&this.teacherAudioCache.delete(this.word))}requestTeacherAudio(){let e=this.teacherAudioCache.get(this.word);if(e){if(this.pronMode==="waveform"&&this.teacherWaveSurfer){try{this.teacherWaveSurfer.load(e),this.teacherWaveSurfer.once("ready",()=>this.teacherWaveSurfer.play())}catch{}return}new Audio(e).play().catch(r=>console.warn("play failed",r));return}this.api.generateTeacherAudio(this.word,this.selectedFile).subscribe({next:({audioUrl:i})=>{if(this.teacherAudioCache.set(this.word,i),this.pronMode==="waveform"&&this.teacherWaveSurfer)try{this.teacherWaveSurfer.load(i),this.teacherWaveSurfer.once("ready",()=>this.teacherWaveSurfer.play())}catch{}else new Audio(i).play().catch(o=>console.warn("play failed",o))},error:i=>{console.error("generateTeacherAudio failed",i)}})}startRecording(){return it(this,null,function*(){this.audioBlobUrl=null,this.audioChunks=[],this.recordedBlobs=[],this.isRecording=!0,this.recordingDuration=0,this.recordingStopPromise=new Promise(e=>{this.recordingStopResolver=e}),this.timer=setInterval(()=>{this.recordingDuration++,this.cdr.detectChanges()},1e3);try{let e=yield navigator.mediaDevices.getUserMedia({audio:!0});this.micStream=e,this.mediaRecorder=new MediaRecorder(e),this.mediaRecorder.ondataavailable=i=>{i.data&&i.data.size>0&&(this.audioChunks.push(i.data),this.recordedBlobs.push(i.data))},this.mediaRecorder.onstop=()=>it(this,null,function*(){clearInterval(this.timer);let i=new Blob(this.audioChunks,{type:"audio/webm; codecs=opus"});if(this.audioBlobUrl)try{URL.revokeObjectURL(this.audioBlobUrl)}catch{}if(this.audioBlobUrl=URL.createObjectURL(i),this.recordedBlobUrl=this.audioBlobUrl,this.pronMode==="waveform"&&this.studentWaveSurfer)try{this.studentWaveSurfer.load(this.recordedBlobUrl)}catch{}try{this.micStream&&this.micStream.getTracks().forEach(r=>r.stop())}catch{}if(this.micStream=void 0,this.isRecording=!1,this.cdr.detectChanges(),this.recordingStopResolver){try{this.recordingStopResolver()}catch{}this.recordingStopResolver=null,this.recordingStopPromise=void 0}}),this.mediaRecorder.start()}catch(e){if(this.isRecording=!1,clearInterval(this.timer),console.error("Error accessing microphone:",e),alert("Could not access microphone. Ensure permissions are granted."),this.recordingStopResolver){try{this.recordingStopResolver()}catch{}this.recordingStopResolver=null,this.recordingStopPromise=void 0}}})}stopRecording(){this.mediaRecorder&&this.isRecording?(this.mediaRecorder.stop(),this.isRecording=!1):(clearInterval(this.timer),this.isRecording=!1)}playRecorded(){this.recordedBlobUrl&&this.playAudioWithWaveform(this.recordedBlobUrl,"recorded")}get needleAngle(){return-90+Math.max(0,Math.min(100,Number(this.result?.score??0)))/100*180}get suggestionCount(){return this.suggestions?.length??0}get totalSuggestionPages(){return Math.max(1,Math.ceil(this.suggestionCount/this.suggestionsPerPage))}get pagedSuggestions(){if(!this.suggestions||this.suggestions.length===0)return[];let e=this.suggestionPage*this.suggestionsPerPage;return this.suggestions.slice(e,e+this.suggestionsPerPage)}prevSuggestion(){this.suggestionPage>0&&this.suggestionPage--}nextSuggestion(){this.suggestionPage=0&&e0&&this.showQuestion(this.currentIndex-1)}nextQuestion(){this.currentIndex=this.questions.length)return;if(this.stopTeacherPlayback(),this.stopRecordedPlayback(),this.audioBlobUrl&&this.audioBlobUrl.startsWith("blob:"))try{URL.revokeObjectURL(this.audioBlobUrl)}catch{}this.audioBlobUrl=null,this.recordedBlobUrl=void 0,this.recordedBlobs=[],this.audioChunks=[],this.result=null,this.suggestions=[],this.suggestionPage=0,this.currentIndex=e;let i=this.questions[e];if(this.word=i.word,this.phonetics=i.phonetics??"",this.imgsrc=i.imgsrc??this.imgsrc,this.pronMode==="waveform"&&this.teacherWaveSurfer){let r=this.teacherAudioCache.get(this.word);if(r)try{this.teacherWaveSurfer.load(r)}catch{}}this.cdr.detectChanges()}static{this.\u0275fac=function(i){return new(i||t)(M(De),M(Re),M(zn),M(yi),M(dw))}}static{this.\u0275cmp=$({type:t,selectors:[["app-pronunciation"]],decls:78,vars:37,consts:[["stopTpl",""],[1,"pron-container"],[1,"header"],["aria-hidden","false",1,"dropdown-row"],["for","pronModeSelect",1,"visually-hidden"],["id","pronModeSelect","aria-label","Pronunciation Mode",1,"select-dropdown",3,"change"],["value","phonetics"],["value","waveform"],["value","normaltext","disabled",""],["value","prosody","disabled",""],["value","embedding","disabled",""],[1,"title"],[1,"main-content"],[1,"image-section"],[1,"apple-image",3,"src","alt"],[1,"controls-section"],[1,"word-section"],[1,"word"],[1,"phonetics"],[1,"teacher-section"],["src","assets/images/chat/natasha.png","alt","Teacher",1,"avatar"],["id","playTeacherBtn",1,"btn","btn-primary",3,"click","disabled"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2",1,"icon"],["points","5 3 19 12 5 21 5 3"],["class","btn-text",4,"ngIf"],["viewBox","0 0 24 24",1,"spinner"],["cx","12","cy","12","r","10",1,"spinner-circle"],[1,"voice-selection-container"],[1,"voice-toggle-control"],[1,"voice-label-group","toggle-label-left",3,"click"],[1,"voice-text"],[1,"voice-label-group","toggle-label-right",3,"click"],[1,"student-section"],["src","assets/images/pron/student.png","alt","Student",1,"avatar"],[1,"button-group"],["id","recordBtn",1,"btn","btn-secondary","record-btn",3,"click"],[4,"ngIf","ngIfElse"],["class","btn btn-accent","id","playStudentBtn",3,"click",4,"ngIf"],["class","waveform-row",4,"ngIf"],["id","checkBtn","aria-label","Check pronunciation",1,"btn","btn-success","full-width",3,"click","disabled"],["class","icon","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2",4,"ngIf"],["class","spinner","viewBox","0 0 24 24",4,"ngIf"],["id","resultsSection",1,"results-section"],[1,"gauge-wrapper"],[1,"gauge"],[1,"gauge-arc"],["aria-hidden","true",1,"needle"],[1,"mic-badge"],["aria-live","polite",1,"score-span"],["class","suggestions-section",4,"ngIf"],[1,"nav-buttons"],["aria-label","Previous",1,"btn","btn-outline","btn-nav",3,"click","disabled"],[1,"nav-info"],["aria-label","Next",1,"btn","btn-outline","btn-nav",3,"click","disabled"],["aria-label","Close",1,"user-guide-close-icon",3,"click"],[1,"btn-text"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","width","20","height","20",1,"icon"],["d","M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"],["d","M19 10v2a7 7 0 0 1-14 0v-2"],["x1","12","x2","12","y1","19","y2","22"],["viewBox","0 0 24 24","fill","currentColor","stroke","none","width","18","height","18","aria-hidden","true",1,"icon","stop-icon"],["x","6","y","6","width","12","height","12","rx","2"],["id","playStudentBtn",1,"btn","btn-accent",3,"click"],[1,"waveform-row"],[1,"waveform-block"],[1,"waveform-title"],["id","teacherWaveform",1,"waveform-canvas"],["id","studentWaveform",1,"waveform-canvas"],["points","20 6 9 17 4 12"],[1,"suggestions-section"],[1,"suggestions-title"],[1,"sugg-div"],[1,"suggestions-page"],["class","suggestion-card",4,"ngFor","ngForOf"],[1,"suggestion-nav"],["aria-label","Previous feedback",1,"btn","btn-outline","btn-nav","pagebtn",3,"click","disabled"],["aria-label","Next feedback",1,"btn","btn-outline","btn-nav","pagebtn",3,"click","disabled"],[1,"suggestion-card"],["aria-hidden","true",1,"suggestion-badge"],[1,"suggestion-body"],[1,"suggestion-point"],[1,"suggestion-feedback",3,"innerHTML"],[1,"suggestion-item"],[1,"suggestion-content"],[1,"suggestion-feedback"]],template:function(i,r){if(i&1){let o=F();c(0,"div",1)(1,"div",2)(2,"div",3)(3,"label",4),l(4,"Pronunciation Mode"),a(),c(5,"select",5),y("change",function(d){return x(o),C(r.onModeChange(d.target.value))}),c(6,"option",6),l(7,"Phoneme-Level Accuracy Check"),a(),c(8,"option",7),l(9,"Audio Similarity Check"),a(),c(10,"option",8),l(11,"Speech-to-Text Accuracy Check"),a(),c(12,"option",9),l(13,"Prosody Check"),a(),c(14,"option",10),l(15,"Embedding Similarity Check"),a()()(),c(16,"h2",11),l(17,"Pronunciation Trainer"),a()(),c(18,"div",12)(19,"div",13),v(20,"img",14),a(),c(21,"div",15)(22,"div",16)(23,"h2",17),l(24),a(),c(25,"p",18),l(26),a()(),c(27,"div",19),v(28,"img",20),c(29,"button",21),y("click",function(){return x(o),C(r.playTeacherAudio())}),It(),c(30,"svg",22),v(31,"polygon",23),a(),k(32,_T,2,0,"span",24)(33,bT,2,0,"span",24),c(34,"svg",25),v(35,"circle",26),a()(),ci(),c(36,"div",27)(37,"div",28)(38,"div",29),y("click",function(){return x(o),r.isOriginal=!1,C(r.updateSelection())}),c(39,"span",30),l(40,"Original Voice"),a()(),c(41,"div",31),y("click",function(){return x(o),r.isOriginal=!0,C(r.updateSelection())}),c(42,"span",30),l(43,"Cloned Voice"),a()()()()(),c(44,"div",32),v(45,"img",33),c(46,"div",34)(47,"button",35),y("click",function(){return x(o),C(r.isRecording?r.stopRecording():r.startRecording())}),k(48,yT,7,0,"ng-container",36)(49,wT,4,0,"ng-template",null,0,dn),a(),k(51,xT,5,0,"button",37),a()(),k(52,CT,9,0,"div",38),c(53,"button",39),y("click",function(){return x(o),C(r.checkPronunciation())}),k(54,ST,2,0,"svg",40)(55,ET,2,0,"span",24)(56,MT,2,0,"span",24)(57,IT,2,0,"svg",41),a()(),c(58,"div",42)(59,"div",43)(60,"div",44),v(61,"div",45)(62,"div",46),a(),c(63,"div",47)(64,"span",48),l(65),a()()(),k(66,PT,13,5,"div",49)(67,kT,7,1,"div",49),c(68,"div")(69,"div",50)(70,"button",51),y("click",function(){return x(o),C(r.prevQuestion())}),l(71," \u25C0 Prev "),a(),c(72,"div",52),l(73),a(),c(74,"button",53),y("click",function(){return x(o),C(r.nextQuestion())}),l(75," Next \u25B6 "),a()()()(),c(76,"button",54),y("click",function(){return x(o),C(r.closePopup())}),l(77,"\xD7"),a()()()}if(i&2){let o,s=Dt(50);f(20),g("src",r.imgsrc,H)("alt",r.word),f(4),U(r.word),f(2),U(r.phonetics),f(3),g("disabled",r.isTeacherLoading),z("aria-busy",r.isTeacherLoading),f(3),g("ngIf",!r.isTeacherLoading),f(),g("ngIf",r.isTeacherLoading),f(),W("hidden",!r.isTeacherLoading),f(4),W("active",!r.isOriginal),f(3),W("active",r.isOriginal),f(6),W("recording",r.isRecording),z("aria-pressed",r.isRecording),f(),g("ngIf",!r.isRecording)("ngIfElse",s),f(3),g("ngIf",r.recordedBlobUrl),f(),g("ngIf",r.pronMode==="waveform"),f(),g("disabled",r.isChecking||!r.recordedBlobUrl),z("aria-busy",r.isChecking)("aria-disabled",r.isChecking||!r.recordedBlobUrl),f(),g("ngIf",!r.isChecking),f(),g("ngIf",!r.isChecking),f(),g("ngIf",r.isChecking),f(),g("ngIf",r.isChecking),f(5),Nt("--angle",r.needleAngle+"deg"),f(3),ne("",(o=r.result==null?null:r.result.score)!==null&&o!==void 0?o:0,"%"),f(),g("ngIf",r.suggestions.length>0),f(),g("ngIf",r.pronMode!=="select"&&(!r.suggestions||r.suggestions.length===0)&&(r.result==null?null:r.result.suggestion)),f(3),g("disabled",r.currentIndex===0),f(3),Kn(" ",r.currentIndex+1," / ",r.questions.length," "),f(),g("disabled",r.currentIndex===r.questions.length-1)}},dependencies:[vt,Fe,Ui,zi],styles:['.pron-container[_ngcontent-%COMP%]{display:flex;padding:2vw;font-family:Raleway,Roboto,Helvetica Neue,sans-serif;border:10px solid #009688;height:100%;border-radius:1vw;flex-direction:column}.dropdown-row[_ngcontent-%COMP%]{display:flex;align-items:center}.visually-hidden[_ngcontent-%COMP%]{position:absolute!important;height:1px;width:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap;border:0;padding:0;margin:-1px}.select-dropdown[_ngcontent-%COMP%]{appearance:none;-webkit-appearance:none;-moz-appearance:none;display:inline-block;min-width:180px;height:36px;padding:6px 36px 6px 12px;font-size:14px;line-height:1;color:#111827;background-color:#fff;border:1px solid #d1d5db;border-radius:8px;background-image:linear-gradient(45deg,transparent 50%,#6b7280 50%),linear-gradient(135deg,#6b7280 50%,transparent 50%),linear-gradient(to right,#fff,#fff);background-position:calc(100% - 18px) calc(1em + 2px),calc(100% - 13px) calc(1em + 2px),100% 0;background-size:6px 6px,6px 6px,2.5em 2.5em;background-repeat:no-repeat;cursor:pointer}.select-dropdown[_ngcontent-%COMP%]:hover{border-color:#9ca3af}.select-dropdown[_ngcontent-%COMP%]:focus{outline:none;box-shadow:0 0 0 3px #3b82f624;border-color:#3b82f6}.select-dropdown.small[_ngcontent-%COMP%]{min-width:140px;height:32px;font-size:13px;border-radius:6px}.header[_ngcontent-%COMP%]{display:flex;gap:13vw}.title[_ngcontent-%COMP%]{font-size:2.5vw;color:#006780;margin-bottom:1vw;font-weight:800;font-family:Raleway,Roboto,Helvetica Neue,sans-serif}.main-content[_ngcontent-%COMP%]{display:flex;gap:5vw}.image-section[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:20vw}.apple-image[_ngcontent-%COMP%]{width:20vw;height:20vw;object-fit:contain;filter:drop-shadow(0 25px 25px rgba(0,0,0,.15));animation:_ngcontent-%COMP%_float 3s ease-in-out infinite}@keyframes _ngcontent-%COMP%_float{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}.controls-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:space-evenly;gap:.5vw;width:30vw}.word-section[_ngcontent-%COMP%]{text-align:center;display:flex;flex-direction:column;gap:1vw}.word[_ngcontent-%COMP%]{font-size:3rem;font-weight:700;color:#0f1729;text-transform:capitalize;margin-bottom:.5rem;font-family:Raleway,Roboto,Helvetica Neue,sans-serif}.phonetics[_ngcontent-%COMP%]{font-size:1.5vw;color:#65758b;font-family:Raleway,Roboto,Helvetica Neue,sans-serif}.teacher-section[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;padding:1rem;background:#3c83f61a;border-radius:1rem;border:2px solid hsla(217,91%,60%,.2)}.student-section[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;padding:1rem;background:#16a2491a;border-radius:1rem;border:2px solid hsla(142,76%,36%,.2)}.avatar[_ngcontent-%COMP%]{width:3rem;height:3rem;border-radius:9999px;object-fit:cover}.button-group[_ngcontent-%COMP%]{display:flex;gap:.5rem;flex-wrap:wrap}.btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.8vw;font-size:1rem;font-weight:500;border-radius:.5rem;border:none;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;box-shadow:0 10px 20px -5px #0003;width:11vw}.btn[_ngcontent-%COMP%]:hover{transform:scale(1.05)}.btn[_ngcontent-%COMP%]:active{transform:scale(.95)}.btn[_ngcontent-%COMP%]:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-primary[_ngcontent-%COMP%]{background:#3c83f6;color:#fff}.btn-secondary[_ngcontent-%COMP%]{background:#16a249;color:#fff}.btn-accent[_ngcontent-%COMP%]{background:#c6f;color:#fff}.btn-success[_ngcontent-%COMP%]{background:#16a249;color:#fff}.btn-outline[_ngcontent-%COMP%]{background:transparent;border:2px solid hsl(214,32%,91%);color:#0f1729}.full-width[_ngcontent-%COMP%]{width:100%}.icon[_ngcontent-%COMP%]{width:1.25rem;height:1.25rem}.spinner[_ngcontent-%COMP%]{width:1.25rem;height:1.25rem;animation:_ngcontent-%COMP%_spin 1s linear infinite}.spinner-circle[_ngcontent-%COMP%]{fill:none;stroke:currentColor;stroke-width:3;stroke-dasharray:50;stroke-dashoffset:25}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}.hidden[_ngcontent-%COMP%]{display:none!important}.results-section[_ngcontent-%COMP%]{width:30vw;height:30vw;display:flex;flex-direction:column;align-items:center;justify-content:space-between}.gauge-wrapper[_ngcontent-%COMP%]{position:relative;width:20vw;height:10vw}.gauge[_ngcontent-%COMP%]{position:absolute;left:50%;top:0;transform:translate(-50%);width:100%;height:100%;border-radius:260px 260px 0 0;overflow:hidden;background:#f3f3f3;box-shadow:0 4px 10px #00000040 inset}.gauge-arc[_ngcontent-%COMP%]{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 270deg,#e53935 0deg 45deg,#fb8c00 45deg 90deg,#fbc02d 90deg 135deg,#43a047 135deg 180deg,transparent 180deg 360deg);height:20vw}.needle[_ngcontent-%COMP%]{position:absolute;bottom:0vw;left:50%;width:.7vw;height:8vw;background:#333;transform:translate(-50%) rotate(var(--angle, -90deg));transform-origin:50% 100%;transition:transform .7s cubic-bezier(.2,.9,.2,1);border-radius:10px;box-shadow:0 2px 6px #00000080}.mic-badge[_ngcontent-%COMP%]{position:absolute;bottom:-.3vw;left:50%;transform:translate(-50%,35%);width:3vw;height:3vw;border-radius:50%;background:#000;box-shadow:0 8px 18px #0006;display:flex;align-items:center;justify-content:center}.score-span[_ngcontent-%COMP%]{color:#fff;font-size:1vw;font-weight:700}.nav-buttons[_ngcontent-%COMP%]{position:absolute;right:2rem;bottom:2rem;display:flex;align-items:center;gap:.75rem;z-index:30}.btn-nav[_ngcontent-%COMP%]{padding:.5rem .75rem;font-size:1vw;white-space:nowrap;background:#009688;width:7vw;height:2.5vw;font-weight:700;color:#fff}.nav-info[_ngcontent-%COMP%]{font-weight:600;color:#0f1729;min-width:4.5rem;text-align:center;font-size:1vw}.suggestions-section[_ngcontent-%COMP%]{background-color:azure;box-shadow:0 6px 18px #0000000f;padding:1vw}.suggestions-title[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:600;color:#0f1729;margin-bottom:1rem;font-family:Raleway,Roboto,Helvetica Neue,sans-serif}.suggestions-page[_ngcontent-%COMP%]{display:flex;gap:1vw;flex-direction:column}.suggestion-card[_ngcontent-%COMP%]{display:flex;gap:1rem;align-items:flex-start;background:#fff;border-radius:12px;padding:1rem 1.25rem;box-shadow:0 6px 18px #0a1e3c0f;border:1px solid rgba(0,0,0,.04);transition:transform .15s ease,box-shadow .15s ease}.suggestion-card[_ngcontent-%COMP%]:hover{transform:translateY(-4px);box-shadow:0 10px 30px #0a1e3c14}.suggestion-badge[_ngcontent-%COMP%]{min-width:36px;height:36px;border-radius:999px;background:linear-gradient(180deg,#eaf3ff,#dbeeff);color:#0b57a4;display:flex;align-items:center;justify-content:center;font-weight:700;box-shadow:0 4px 10px #0b57a414;flex-shrink:0;font-size:.95rem}.suggestion-body[_ngcontent-%COMP%]{flex:1}.suggestion-point[_ngcontent-%COMP%]{font-size:1rem;font-weight:700;color:#0f1729;margin-bottom:.25rem}.suggestion-feedback[_ngcontent-%COMP%]{color:#65758b;font-size:.95rem;line-height:1.45}.suggestion-nav[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:1vw}.voice-selection-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-start;gap:12px;margin:.5rem 0}.voice-toggle-control[_ngcontent-%COMP%]{display:flex;align-items:center;border-radius:9999px;border:2px solid #009688;background-color:#f0f8ff;padding:4px}.voice-label-group[_ngcontent-%COMP%]{padding:.5rem 1rem;font-size:.95rem;color:#006780;font-weight:500;cursor:pointer;transition:all .3s ease;white-space:nowrap;-webkit-user-select:none;user-select:none;min-width:6vw;text-align:center}.voice-text[_ngcontent-%COMP%]{font-weight:600;font-size:.9vw}.voice-label-group.active[_ngcontent-%COMP%]{background-color:#006780;color:#fff;font-weight:700;box-shadow:0 4px 10px #0067804d}.toggle-label-left[_ngcontent-%COMP%]{border-radius:9999px 0 0 9999px}.toggle-label-right[_ngcontent-%COMP%]{border-radius:0 9999px 9999px 0}.voice-toggle-slider[_ngcontent-%COMP%]{height:24px;width:4px;background-color:transparent;opacity:1;margin:0 -2px;position:relative;overflow:hidden}.voice-toggle-slider[_ngcontent-%COMP%] .mdc-switch__track[_ngcontent-%COMP%], .voice-toggle-slider[_ngcontent-%COMP%] .mdc-switch__icons[_ngcontent-%COMP%], .voice-toggle-slider[_ngcontent-%COMP%] .mdc-switch__thumb-handle[_ngcontent-%COMP%], .voice-toggle-slider[_ngcontent-%COMP%] .mat-mdc-slide-toggle-ripple[_ngcontent-%COMP%], .voice-toggle-slider[_ngcontent-%COMP%] .mat-mdc-slide-toggle-focus-ring[_ngcontent-%COMP%], .voice-toggle-slider[_ngcontent-%COMP%] .mdc-switch__handle[_ngcontent-%COMP%]{width:0!important;height:0!important;padding:0!important;margin:0!important;opacity:0!important;visibility:hidden!important;display:none!important}.voice-toggle-slider[_ngcontent-%COMP%]:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:80%;background-color:#00968866;border-radius:1px}span[_ngcontent-%COMP%]{font-weight:700;font-size:1vw}.voice-label-group[_ngcontent-%COMP%]{font-size:1rem;color:#006780;transition:all .3s;font-weight:500;line-height:1;display:flex;align-items:center;justify-content:center}.record-btn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:8px}.record-btn.recording[_ngcontent-%COMP%]{background-color:#e53935;border-color:#d32f2f;color:#fff;box-shadow:0 2px 6px #e539353d}.record-btn.recording[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%], .record-btn.recording[_ngcontent-%COMP%] .stop-icon[_ngcontent-%COMP%]{color:#fff;fill:#fff;stroke:none}.stop-icon[_ngcontent-%COMP%]{width:18px;height:18px;display:inline-block;vertical-align:middle}.user-guide-close-icon[_ngcontent-%COMP%]{position:fixed;top:3vw;right:4vw;background:#009688;border:none;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2vw;color:#000;cursor:pointer;z-index:2010;box-shadow:0 2px 8px #5d91c32e;transition:background .2s,color .2s}@media (max-width: 768px){.title[_ngcontent-%COMP%]{font-size:1.75rem}.word[_ngcontent-%COMP%]{font-size:2rem}.phonetics[_ngcontent-%COMP%]{font-size:1.25rem}.apple-image[_ngcontent-%COMP%]{width:12rem;height:12rem}.btn[_ngcontent-%COMP%]{padding:.625rem 1.25rem;font-size:.875rem}}span[_ngcontent-%COMP%]{font-weight:700;font-size:.8vw}']})}}return t})();var OT=["videoEl"];function TT(t,n){t&1&&v(0,"img",35)}function AT(t,n){if(t&1){let e=F();c(0,"video",36,0),y("ended",function(){x(e);let r=_();return C(r.onVideoEnded())}),l(2," Your browser does not support the video tag. "),a()}if(t&2){let e=_();g("src",e.videoSrc,H)}}var hw=(()=>{class t{get current(){return this.items[this.index]}constructor(e,i,r,o){this.http=e,this.dialogRef=i,this.data=r,this.cdr=o,this.showVideo=!1,this.videoSrc="",this.isPlayingVideo=!1,this.playIconDataUrl="",this.pauseIconDataUrl="",this.API_BASE=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space":"http://localhost:5000",this.SCORE_ENDPOINT=`${this.API_BASE}/pronvideo/score`,this.preferredMimeTypes=["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus","audio/ogg"],this.items=[{letter:"A",word:"Apple",phonetics:"/\u02C8\xE6p\u0259l/",imgSrc:"assets/images/pron/letter-a.png",audioSrc:"assets/pronvideo/audio/apple.mp3"},{letter:"B",word:"Ball",phonetics:"/b\u0254\u02D0l/",imgSrc:"assets/images/pron/letter-b.png",audioSrc:"assets/pronvideo/audio/ball.mp3"},{letter:"C",word:"Cat",phonetics:"/k\xE6t/",imgSrc:"assets/images/pron/letter-c.png",audioSrc:"assets/pronvideo/audio/cat.mp3"},{letter:"D",word:"Dog",phonetics:"/d\u0252\u0261/",imgSrc:"assets/images/pron/letter-d.png",audioSrc:"assets/pronvideo/audio/dog.mp3"},{letter:"E",word:"Egg",phonetics:"/e\u0261/",imgSrc:"assets/images/pron/letter-e.png",audioSrc:"assets/pronvideo/audio/egg.mp3"},{letter:"F",word:"Fish",phonetics:"/f\u026A\u0283/",imgSrc:"assets/images/pron/letter-f.png",audioSrc:"assets/pronvideo/audio/fish.mp3"},{letter:"G",word:"Grapes",phonetics:"/\u0261re\u026Aps/",imgSrc:"assets/images/pron/letter-g.png",audioSrc:"assets/pronvideo/audio/grapes.mp3"},{letter:"H",word:"Hat",phonetics:"/h\xE6t/",imgSrc:"assets/images/pron/letter-h.png",audioSrc:"assets/pronvideo/audio/hat.mp3"},{letter:"I",word:"Ice cream",phonetics:"/\u02C8a\u026As \u02CCkri\u02D0m/",imgSrc:"assets/images/pron/letter-i.png",audioSrc:"assets/pronvideo/audio/icecream.mp3"},{letter:"J",word:"Jar",phonetics:"/d\u0292\u0251\u02D0r/",imgSrc:"assets/images/pron/letter-j.png",audioSrc:"assets/pronvideo/audio/jar.mp3"},{letter:"K",word:"Kite",phonetics:"/ka\u026At/",imgSrc:"assets/images/pron/letter-k.png",audioSrc:"assets/pronvideo/audio/kite.mp3"},{letter:"L",word:"Lion",phonetics:"/\u02C8la\u026A\u0259n/",imgSrc:"assets/images/pron/letter-l.png",audioSrc:"assets/pronvideo/audio/lion.mp3"},{letter:"M",word:"Moon",phonetics:"/mu\u02D0n/",imgSrc:"assets/images/pron/letter-m.png",audioSrc:"assets/pronvideo/audio/moon.mp3"},{letter:"N",word:"Nest",phonetics:"/nest/",imgSrc:"assets/images/pron/letter-n.png",audioSrc:"assets/pronvideo/audio/nest.mp3"},{letter:"O",word:"Orange",phonetics:"/\u02C8\u0252r\u026And\u0292/",imgSrc:"assets/images/pron/letter-o.png",audioSrc:"assets/pronvideo/audio/orange.mp3"},{letter:"P",word:"Pig",phonetics:"/p\u026A\u0261/",imgSrc:"assets/images/pron/letter-p.png",audioSrc:"assets/pronvideo/audio/pig.mp3"},{letter:"Q",word:"Queen",phonetics:"/kwi\u02D0n/",imgSrc:"assets/images/pron/letter-q.png",audioSrc:"assets/pronvideo/audio/queen.mp3"},{letter:"R",word:"Rabbit",phonetics:"/\u02C8r\xE6b\u026At/",imgSrc:"assets/images/pron/letter-r.png",audioSrc:"assets/pronvideo/audio/rabbit.mp3"},{letter:"S",word:"Sun",phonetics:"/s\u028Cn/",imgSrc:"assets/images/pron/letter-s.png",audioSrc:"assets/pronvideo/audio/sun.mp3"},{letter:"T",word:"Tree",phonetics:"/tri\u02D0/",imgSrc:"assets/images/pron/letter-t.png",audioSrc:"assets/pronvideo/audio/tree.mp3"},{letter:"U",word:"Umbrella",phonetics:"/\u028Cm\u02C8brel\u0259/",imgSrc:"assets/images/pron/letter-u.png",audioSrc:"assets/pronvideo/audio/umbrella.mp3"},{letter:"V",word:"Van",phonetics:"/v\xE6n/",imgSrc:"assets/images/pron/letter-v.png",audioSrc:"assets/pronvideo/audio/van.mp3"},{letter:"W",word:"Watch",phonetics:"/w\u0252t\u0283/",imgSrc:"assets/images/pron/letter-w.png",audioSrc:"assets/pronvideo/audio/watch.mp3"},{letter:"X",word:"Xylophone",phonetics:"/\u02C8za\u026Al\u0259f\u0259\u028An/",imgSrc:"assets/images/pron/letter-x.png",audioSrc:"assets/pronvideo/audio/xylophone.mp3"},{letter:"Y",word:"Yarn",phonetics:"/j\u0251\u02D0n/",imgSrc:"assets/images/pron/letter-y.png",audioSrc:"assets/pronvideo/audio/yarn.mp3"},{letter:"Z",word:"Zebra",phonetics:"/\u02C8zebr\u0259/",imgSrc:"assets/images/pron/letter-z.png",audioSrc:"assets/pronvideo/audio/zebra.mp3"}],this.index=0,this.wordAudio=new Audio,this.isRecording=!1,this.isScoring=!1,this.isOscillating=!1,this.chunks=[],this.currentMimeType="audio/webm",this.recordedAudioUrl=null,this.lastRecordedBlob=null,this.pendingVideoUrl=null,this.showResult=!1,this.score=0,this.stars=0,this.feedbackLines=[],this.feedbackHint="",this.videoUrl=""}ngOnInit(){this.resetResult(),this.setupBestMimeType(),this.playIconDataUrl="assets/pronvideo/play.png",this.pauseIconDataUrl="assets/pronvideo/pause.png"}ngOnDestroy(){if(this.cleanupRecordingUrl(),this.stopTracks(),this.safeStopRecorder(),this.wordAudio.pause(),this.wordAudio.src="",this.resetVideo(),this.pendingGestureListener){try{document.body.removeEventListener("click",this.pendingGestureListener,!0)}catch{}this.pendingGestureListener=void 0,this.pendingVideoUrl=null}}startRecording(e){return it(this,null,function*(){if(e?.preventDefault(),!(this.isRecording||this.isScoring)){this.resetResult(),this.cleanupRecordingUrl(),this.lastRecordedBlob=null;try{this.mediaStream=yield navigator.mediaDevices.getUserMedia({audio:!0});let i={};this.currentMimeType&&(i.mimeType=this.currentMimeType),this.mediaRecorder=new MediaRecorder(this.mediaStream,i),this.chunks=[],this.mediaRecorder.ondataavailable=r=>{r.data&&r.data.size>0&&this.chunks.push(r.data)},this.mediaRecorder.onstop=()=>{this.onRecordingStopped()},this.mediaRecorder.start(),this.isRecording=!0}catch{this.isRecording=!1,this.stopTracks()}}})}stopRecording(e){e?.preventDefault(),this.isRecording&&(this.isRecording=!1,this.isOscillating=!0,this.safeStopRecorder(),this.stopTracks())}safeStopRecorder(){try{this.mediaRecorder&&this.mediaRecorder.state!=="inactive"&&this.mediaRecorder.stop()}catch{}}onRecordingStopped(){try{let e=new Blob(this.chunks,{type:this.currentMimeType||"audio/webm"});this.lastRecordedBlob=e,this.recordedAudioUrl=URL.createObjectURL(e),this.sendForScoring(e,this.current.word)}catch{this.isOscillating=!1,this.showResult=!1}finally{this.chunks=[]}}playUserRecording(){if(this.recordedAudioUrl)try{new Audio(this.recordedAudioUrl).play().catch(()=>{})}catch{}}sendForScoring(e,i){if(!e||!i){this.isOscillating=!1;return}let r=new FormData,o=this.currentMimeType.includes("ogg")?"ogg":"webm";r.append("audio",e,`student.${o}`),r.append("word",i),this.isScoring=!0,this.http.post(this.SCORE_ENDPOINT,r).pipe(At(()=>{this.isScoring=!1,this.isOscillating=!1,this.cdr.detectChanges()})).subscribe({next:s=>{let d=this.normalizeScore(s?.score);this.score=d,this.feedbackHint=s.hint||"",this.videoUrl=s.videoUrl||"",this.stars=this.mapStars(d),this.feedbackLines=this.buildFeedbackFromScore(d),this.showResult=!0,this.videoUrl&&this.tryPlayFeedbackVideo(d,this.videoUrl)},error:()=>{this.score=0,this.stars=1,this.feedbackLines=this.buildFeedbackFromScore(0),this.showResult=!0,this.cdr.detectChanges()}})}normalizeScore(e){let i=Number(e);return Number.isNaN(i)||i<0?0:i>100?100:Math.round(i)}resetResult(){this.showResult=!1,this.score=0,this.stars=0,this.feedbackLines=[],this.isPlayingVideo=!1,this.isOscillating=!1}resetSpeakometer(){this.score=0,this.stars=0,this.feedbackLines=[],this.feedbackHint="",this.showResult=!1,this.isOscillating=!1}mapStars(e){return e>=90?5:e>=80?4:e>=70?3:e>=60?2:1}buildFeedbackFromScore(e){return e>=90?["Excellent pronunciation.","Very clear vowel and ending sound.","Keep the same speed."]:e>=80?["Very good attempt.","Slightly improve the main vowel.","Ending sound is almost perfect."]:e>=70?["Good try.","Listen once more and repeat slowly.","Focus on the first sound."]:e>=50?["Nice effort.","Try a slower pronunciation.","Record again after listening."]:["Try again.","Listen to the model carefully.","Speak clearly and record once more."]}setupBestMimeType(){if(!window.MediaRecorder){this.currentMimeType="audio/webm";return}for(let e of this.preferredMimeTypes)try{if(window.MediaRecorder.isTypeSupported(e)){this.currentMimeType=e;return}}catch{}this.currentMimeType="audio/webm"}stopTracks(){try{this.mediaStream?.getTracks().forEach(e=>e.stop())}catch{}finally{this.mediaStream=void 0}}cleanupRecordingUrl(){if(this.recordedAudioUrl){try{URL.revokeObjectURL(this.recordedAudioUrl)}catch{}this.recordedAudioUrl=null}}prev(){this.index!==0&&(this.index--,this.resetExerciseState())}next(){this.index>=this.items.length-1||(this.index++,this.resetExerciseState())}goTo(e){e<0||e>=this.items.length||(this.index=e,this.resetExerciseState())}resetExerciseState(){this.resetResult(),this.cleanupRecordingUrl(),this.lastRecordedBlob=null,this.isRecording=!1,this.isScoring=!1,this.stopTracks(),this.safeStopRecorder(),this.resetVideo()}resetVideo(){try{let e=this.videoElRef?.nativeElement;if(e){try{e.pause()}catch{}try{e.currentTime=0}catch{}try{e.removeAttribute("src")}catch{}try{e.load()}catch{}}}catch{}finally{this.showVideo=!1,this.videoSrc="",this.isPlayingVideo=!1}}playWordAudio(){this.resetSpeakometer();let e=this.current.audioSrc||this.getAudioSrcFromWord(this.current.word);if(e)try{this.wordAudio.pause(),this.wordAudio.currentTime=0,this.wordAudio.src=e,this.wordAudio.play().catch(()=>{})}catch{}}getAudioSrcFromWord(e){return e?`assets/pronvideo/audio/${e.trim().toLowerCase().replace(/\s+/g,"-")}.mp3`:""}get needleAngle(){return-90+Math.max(0,Math.min(100,Number(this.score??0)))*1.8}closePopup(){this.dialogRef.close()}playWordVideo(){this.resetSpeakometer();let e=this.getVideoSrcFromWord(this.current.word);e&&(this.showVideo=!0,this.videoSrc=e,setTimeout(()=>{try{let i=this.videoElRef?.nativeElement;i&&(i.addEventListener("play",()=>{this.isPlayingVideo=!0,this.resetSpeakometer()}),i.addEventListener("pause",()=>this.isPlayingVideo=!1),i.pause(),i.src=this.videoSrc,i.load(),i.play().then(()=>{this.isPlayingVideo=!0}).catch(()=>{this.isPlayingVideo=!i.paused}))}catch{}},0))}toggleVideoPlay(){try{if(!this.showVideo){this.playWordVideo();return}let e=this.videoElRef?.nativeElement;if(!e){this.videoSrc=this.getVideoSrcFromWord(this.current.word),this.showVideo=!0;return}e.paused?(this.resetSpeakometer(),e.play().then(()=>{this.isPlayingVideo=!0}).catch(()=>{this.isPlayingVideo=!e.paused})):(e.pause(),this.isPlayingVideo=!1)}catch{}}tryPlayFeedbackVideo(e,i){i&&(this.showVideo=!0,this.videoSrc=i,setTimeout(()=>{try{let r=this.videoElRef?.nativeElement;if(!r){this.registerGestureForPendingVideo(i);return}try{r.pause()}catch{}r.src=this.videoSrc,r.load(),r.play().then(()=>{this.isPlayingVideo=!0}).catch(()=>{this.isPlayingVideo=!r.paused,this.registerGestureForPendingVideo(i)})}catch{}},0))}registerGestureForPendingVideo(e){if(this.pendingVideoUrl=e,!this.pendingGestureListener){this.pendingGestureListener=i=>{try{this.showVideo=!0,this.videoSrc=this.pendingVideoUrl||e,setTimeout(()=>{try{let r=this.videoElRef?.nativeElement;r&&(r.src=this.videoSrc,r.load(),r.play().then(()=>{this.isPlayingVideo=!0}).catch(()=>{this.isPlayingVideo=!r.paused}))}catch{}},0)}finally{try{this.pendingGestureListener&&document.body.removeEventListener("click",this.pendingGestureListener,!0)}catch{}this.pendingGestureListener=void 0,this.pendingVideoUrl=null,this.isOscillating=!1}};try{document.body.addEventListener("click",this.pendingGestureListener,!0)}catch{}}}onVideoEnded(){try{let e=this.videoElRef?.nativeElement;if(e){try{e.pause()}catch{}try{e.currentTime=0}catch{}try{e.src=""}catch{}try{e.load()}catch{}}}catch{}finally{if(this.showVideo=!1,this.isPlayingVideo=!1,this.videoSrc="",this.isOscillating=!1,this.pendingGestureListener){try{document.body.removeEventListener("click",this.pendingGestureListener,!0)}catch{}this.pendingGestureListener=void 0,this.pendingVideoUrl=null}try{this.cdr.detectChanges()}catch{}}}getVideoSrcFromWord(e){return e?`assets/pronvideo/videos/${e.trim().toLowerCase().replace(/\s+/g,"-")}.mp4`:""}static{this.\u0275fac=function(i){return new(i||t)(M(De),M(zn),M(yi),M(Re))}}static{this.\u0275cmp=$({type:t,selectors:[["app-pronunciationvideo"]],viewQuery:function(i,r){if(i&1&&$e(OT,5),i&2){let o;je(o=Be())&&(r.videoElRef=o.first)}},decls:45,vars:20,consts:[["videoEl",""],[1,"pp-page"],[1,"pp-header"],[1,"pp-main"],[1,"pp-left"],[1,"word-card"],[1,"word-img-wrap"],[1,"apple-anim",3,"src","alt"],[1,"word-text"],[1,"phonetic-pill"],[1,"image-container"],["src","assets/pronvideo/audio.png","alt","Round Image",1,"round-image",3,"click"],[1,"pp-center"],[1,"word-card",2,"width","30vw!important"],[2,"width","28vw","height","25vw"],["style","height:100%; border-radius:1vw;","src","assets/pronvideo/teacher.png","alt","Teacher",4,"ngIf"],["style","border-radius:1vw; object-fit:cover;","controls","","autoplay","","height","469","width","521",3,"src","ended",4,"ngIf"],[2,"display","flex","margin-top","1.8vw","gap","2vw"],["role","button","tabindex","0",1,"listen-img",3,"click","keydown.enter","keydown.space","src"],[1,"rec-circle",3,"mousedown","mouseup","mouseleave","touchstart","touchend","touchcancel"],[1,"rec-inner"],[1,"mic"],[1,"rec-text"],[1,"pp-right"],[1,"gauge-wrapper"],[1,"gauge"],[1,"gauge-arc"],[1,"needle"],[1,"mic-badge"],[1,"score-span"],[1,"container"],[1,"arrow","left",3,"click","disabled"],[1,"center-text"],[1,"arrow","right",3,"click","disabled"],["aria-label","Close",1,"user-guide-close-icon",3,"click"],["src","assets/pronvideo/teacher.png","alt","Teacher",2,"height","100%","border-radius","1vw"],["controls","","autoplay","","height","469","width","521",2,"border-radius","1vw","object-fit","cover",3,"ended","src"]],template:function(i,r){i&1&&(c(0,"div",1)(1,"div",2)(2,"h1"),l(3,"Pronunciation Practice"),a()(),c(4,"div",3)(5,"div",4)(6,"div",5)(7,"div",6),v(8,"img",7),a(),c(9,"div",8),l(10),a(),c(11,"div",9),l(12),a(),c(13,"div",10)(14,"img",11),y("click",function(){return r.playWordAudio()}),a()()()(),c(15,"div",12)(16,"div",13)(17,"div",14),k(18,TT,1,0,"img",15)(19,AT,3,1,"video",16),a(),c(20,"div",17)(21,"img",18),y("click",function(){return r.toggleVideoPlay()})("keydown.enter",function(){return r.toggleVideoPlay()})("keydown.space",function(s){return r.toggleVideoPlay(),s.preventDefault()}),a(),c(22,"button",19),y("mousedown",function(){return r.startRecording()})("mouseup",function(){return r.stopRecording()})("mouseleave",function(){return r.stopRecording()})("touchstart",function(s){return r.startRecording(s)})("touchend",function(s){return r.stopRecording(s)})("touchcancel",function(s){return r.stopRecording(s)}),c(23,"div",20)(24,"div",21),l(25,"\u{1F3A4}"),a(),c(26,"div",22),l(27,"REC"),a()()()()()(),c(28,"div",23)(29,"div",24)(30,"div",25),v(31,"div",26)(32,"div",27),a(),c(33,"div",28)(34,"span",29),l(35),a()()(),c(36,"div",30)(37,"button",31),y("click",function(){return r.prev()}),l(38,"\u2039"),a(),c(39,"span",32),l(40),a(),c(41,"button",33),y("click",function(){return r.next()}),l(42,"\u203A"),a()()()()(),c(43,"button",34),y("click",function(){return r.closePopup()}),l(44,"\xD7"),a()),i&2&&(f(8),g("src",r.current.imgSrc,H)("alt",r.current.word),f(2),U(r.current.word),f(2),ne(" ",r.current.phonetics," "),f(6),g("ngIf",!r.showVideo),f(),g("ngIf",r.showVideo),f(2),g("src",r.isPlayingVideo?r.pauseIconDataUrl:r.playIconDataUrl,H),z("alt",r.isPlayingVideo?"Pause pronunciation":"Play pronunciation")("aria-label",r.isPlayingVideo?"Pause pronunciation":"Play pronunciation")("aria-pressed",r.isPlayingVideo),f(),W("recording",r.isRecording),f(10),Nt("--angle",r.needleAngle+"deg"),W("oscillate",r.isOscillating),f(3),ne("",r.score,"%"),f(2),g("disabled",r.index===0),f(3),U(r.current.letter),f(),g("disabled",r.index===r.items.length-1))},dependencies:[Fe],styles:["[_nghost-%COMP%]{display:block;font-family:Raleway,Roboto,Helvetica Neue,sans-serif}.pp-page[_ngcontent-%COMP%]{height:85vh;padding:28px 24px 18px;box-sizing:border-box;border:7px solid #3aaea8;border-radius:1vw}.pp-header[_ngcontent-%COMP%]{text-align:center;margin-bottom:18px}.pp-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font-size:42px;font-weight:800;color:#3aaea8;letter-spacing:.3px}.pp-sub[_ngcontent-%COMP%]{margin-top:6px;color:#6b7f7e;font-size:15px;position:relative}.pp-tooltip[_ngcontent-%COMP%]{margin-left:8px;display:inline-block;background:#fff;border:1px solid #d8eeee;color:#2f6f6b;padding:6px 10px;border-radius:14px;font-size:12px;box-shadow:0 6px 14px #0000000f}.pp-main[_ngcontent-%COMP%]{display:flex;gap:1vw;align-items:start;justify-content:space-around}.pp-left[_ngcontent-%COMP%]{display:flex;justify-content:center}.word-card[_ngcontent-%COMP%]{width:22vw;height:34vw;background:#e9f7f6;border-radius:18px;padding:22px 18px 26px;text-align:center;box-shadow:0 12px 26px #00000014;border:3px dashed #3aaea8;gap:.5vw;display:flex;flex-direction:column;align-items:center;justify-content:space-between}.word-img-wrap[_ngcontent-%COMP%]{width:20vw;height:20vw;display:flex;align-items:center;justify-content:center}.word-img-wrap[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:100%;max-height:100%;object-fit:contain;border-radius:1vw}.word-text[_ngcontent-%COMP%]{font-size:3vw;font-weight:800;color:#1f2b2a}.phonetic-pill[_ngcontent-%COMP%]{color:#3aaea8;font-size:1.5vw;font-weight:600}.audio-img[_ngcontent-%COMP%]{width:4.8vw;cursor:pointer}.pp-center[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:14px;position:relative}.teacher-frame[_ngcontent-%COMP%]{width:22vw;height:33vw;background:#e9f7f6;border-radius:18px;padding:22px 18px 26px;text-align:center;box-shadow:0 12px 26px #00000014;border:3px dashed #3aaea8}.teacher-frame[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover;border-radius:12px;background:#fff}.listen-btn[_ngcontent-%COMP%]{border:none;background:#49b6ae;color:#fff;padding:12px 18px;border-radius:12px;font-weight:700;font-size:16px;display:inline-flex;align-items:center;gap:10px;cursor:pointer;box-shadow:0 8px 18px #00000014}.listen-btn[_ngcontent-%COMP%]:active{transform:scale(.99)}.listen-ico[_ngcontent-%COMP%]{font-size:18px}.rec-circle[_ngcontent-%COMP%]{width:92px;height:92px;border-radius:50%;border:none;background:#f07b48;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px #0006;transition:all .3s ease}.rec-circle[_ngcontent-%COMP%]:active{transform:scale(.98)}.rec-circle.recording[_ngcontent-%COMP%]{filter:brightness(.95);animation:_ngcontent-%COMP%_recPulse 1s infinite}@keyframes _ngcontent-%COMP%_recPulse{0%{box-shadow:0 0 #f07b4859}70%{box-shadow:0 0 0 18px #f07b4800}to{box-shadow:0 0 #f07b4800}}.rec-inner[_ngcontent-%COMP%]{text-align:center;line-height:1.1}.mic[_ngcontent-%COMP%]{font-size:22px;margin-bottom:4px}.rec-text[_ngcontent-%COMP%]{font-size:12px;font-weight:800;letter-spacing:.6px}.pp-right[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-direction:column;gap:18vw}.connector[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2vw}.connector[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{width:34px;height:10px;border-radius:999px;background:#98d8d4;opacity:.6}.feedback-card[_ngcontent-%COMP%]{width:15vw;background:#9edfd9;border-radius:16px;padding:22px 22px 24px;box-shadow:0 12px 22px #00000014;height:15vw}.feedback-title[_ngcontent-%COMP%]{font-size:18px;font-weight:800;color:#205f5a;letter-spacing:.6px;margin-bottom:8px}.feedback-body[_ngcontent-%COMP%]{background:transparent}.feedback-muted[_ngcontent-%COMP%]{color:#2c6d68;opacity:.8;font-style:italic;font-size:14px;margin-top:8px}.feedback-result[_ngcontent-%COMP%]{margin-top:8px}.score-row[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:10px}.score-label[_ngcontent-%COMP%]{font-size:12px;color:#1d514d;font-weight:700}.score-value[_ngcontent-%COMP%]{font-size:28px;font-weight:900;color:#103c39}.meter[_ngcontent-%COMP%]{margin-top:10px}.meter-track[_ngcontent-%COMP%]{height:10px;background:#ffffff73;border-radius:999px;overflow:hidden}.meter-fill[_ngcontent-%COMP%]{height:100%;width:0%;background:#2b8f88;transition:width .5s ease}.stars[_ngcontent-%COMP%]{margin-top:10px;font-size:22px;display:flex;gap:4px}.stars[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#ffffff8c}.stars[_ngcontent-%COMP%] span.active[_ngcontent-%COMP%]{color:#ffcc4d;animation:_ngcontent-%COMP%_starPop .3s ease}@keyframes _ngcontent-%COMP%_starPop{0%{transform:scale(.85)}60%{transform:scale(1.12)}to{transform:scale(1)}}.feedback-lines[_ngcontent-%COMP%]{margin:10px 0 0 18px;color:#114744;font-size:13.5px;font-weight:600}.pp-bottom[_ngcontent-%COMP%]{max-width:1200px;margin:22px auto 0;display:flex;flex-direction:column;align-items:center;gap:14px}.nav-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:3vw}.nav-btn[_ngcontent-%COMP%]{width:7vw;height:7vw;border-radius:50%;border:none;background:#dcefee;color:#1b5551;font-size:7vw;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;padding:0;cursor:pointer;font-weight:700;box-shadow:0 8px 18px #0000000f;transition:transform .08s ease}.nav-btn[_ngcontent-%COMP%]:active{transform:scale(.98)}.nav-btn[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.nav-center[_ngcontent-%COMP%]{display:inline-flex;align-items:baseline;gap:8px}.nav-letter[_ngcontent-%COMP%]{font-size:5vw;font-weight:900;color:#3aaea8}.nav-count[_ngcontent-%COMP%]{font-size:14px;color:#667b79;font-weight:600}@media (max-width: 980px){.nav-btn[_ngcontent-%COMP%]{width:56px;height:56px;font-size:28px}}.alpha-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:900px}.alpha-pill[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:50%;border:none;background:#dfeeee;color:#3a5a58;font-weight:700;cursor:pointer;font-size:13px}.alpha-pill.active[_ngcontent-%COMP%]{background:#49b6ae;color:#fff;box-shadow:0 6px 14px #00000014}@media (max-width: 1100px){.pp-main[_ngcontent-%COMP%]{grid-template-columns:260px 320px 1fr}}@media (max-width: 980px){.pp-main[_ngcontent-%COMP%]{grid-template-columns:1fr}.pp-left[_ngcontent-%COMP%], .pp-center[_ngcontent-%COMP%], .pp-right[_ngcontent-%COMP%]{justify-content:center}.connector[_ngcontent-%COMP%]{display:none}.feedback-card[_ngcontent-%COMP%]{width:100%;max-width:520px}}.gauge-wrapper[_ngcontent-%COMP%]{position:relative;width:20vw;height:10vw}.gauge[_ngcontent-%COMP%]{position:absolute;left:50%;top:0;transform:translate(-50%);width:100%;height:100%;border-radius:260px 260px 0 0;overflow:hidden;background:#f3f3f3;box-shadow:0 4px 10px #00000040 inset}.gauge-arc[_ngcontent-%COMP%]{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 270deg,#e53935 0deg 45deg,#fb8c00 45deg 90deg,#fbc02d 90deg 135deg,#43a047 135deg 180deg,transparent 180deg 360deg);height:20vw}.mic-badge[_ngcontent-%COMP%]{position:absolute;bottom:-.3vw;left:50%;transform:translate(-50%,35%);width:3vw;height:3vw;border-radius:50%;background:#000;box-shadow:0 8px 18px #0006;display:flex;align-items:center;justify-content:center}.score-span[_ngcontent-%COMP%]{color:#fff;font-size:1vw;font-weight:700}.notepad[_ngcontent-%COMP%]{display:flex;align-items:center}.user-guide-close-icon[_ngcontent-%COMP%]{position:fixed;top:3vw;right:4vw;background:#009688;border:none;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2vw;color:#000;cursor:pointer;z-index:2010;box-shadow:0 2px 8px #5d91c32e;transition:background .2s,color .2s}.teacher-media[_ngcontent-%COMP%]{width:20vw;max-width:260px;min-width:140px;aspect-ratio:3 / 4;position:relative;overflow:hidden;display:block}.teacher-media__img[_ngcontent-%COMP%], .teacher-media__video[_ngcontent-%COMP%]{width:100%;height:100%;display:block;border-radius:1vw;border:2px solid #ccc;object-fit:cover}.teacher-media__video[_ngcontent-%COMP%]{background-color:#000}.listen-img[_ngcontent-%COMP%]{width:92px;height:92px;border-radius:50%;display:inline-block;object-fit:contain;cursor:pointer;-webkit-user-select:none;user-select:none;margin-right:1vw;box-shadow:0 10px 30px #0006;transition:all .3s ease;border:none}.listen-img[_ngcontent-%COMP%]:active{transform:scale(.98)}.listen-img.playing[_ngcontent-%COMP%], .listen-img[aria-pressed=true][_ngcontent-%COMP%]{filter:brightness(.95);box-shadow:0 18px 30px #00000029}.listen-img[_ngcontent-%COMP%]:focus{outline:3px solid rgba(58,174,168,.18);outline-offset:3px}@media (max-width: 980px){.listen-img[_ngcontent-%COMP%]{width:72px;height:72px;padding:14px}}@keyframes _ngcontent-%COMP%_needleOscillate{0%{transform:translate(-50%) rotate(-70deg)}25%{transform:translate(-50%) rotate(-20deg)}50%{transform:translate(-50%) rotate(60deg)}75%{transform:translate(-50%) rotate(-10deg)}to{transform:translate(-50%) rotate(-70deg)}}.needle[_ngcontent-%COMP%]{position:absolute;bottom:0vw;left:50%;width:.7vw;height:8vw;background:#333;transform:translate(-50%) rotate(var(--angle, -90deg));transform-origin:50% 100%;transition:transform .7s cubic-bezier(.2,.9,.2,1);border-radius:10px;box-shadow:0 2px 6px #00000080}.needle.oscillate[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_needleOscillate 1.2s ease-in-out infinite;transition:none}.container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;gap:40px}.arrow[_ngcontent-%COMP%]{font-size:4rem;background-color:#e0f7fa;border:none;width:92px;height:92px;border-radius:50%;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:4px 4px 15px #0003;color:#00796b;transition:background-color .3s,color .3s}.arrow[_ngcontent-%COMP%]:disabled{background-color:#cfd8dc;color:#90a4ae;cursor:not-allowed;box-shadow:none}.center-text[_ngcontent-%COMP%]{font-size:5rem;font-weight:700;color:#00796b;width:4vw;text-align:center}.image-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;height:100vh}.round-image[_ngcontent-%COMP%]{width:4.8vw;height:4.8vw;border-radius:50%;box-shadow:0 10px 30px #0006;transition:all .3s ease;cursor:pointer}.round-image[_ngcontent-%COMP%]:active{transform:scale(1.1)}.apple-anim[_ngcontent-%COMP%]{transform-origin:50% 50%;animation:_ngcontent-%COMP%_appleZoom 2.8s ease-in-out infinite alternate;will-change:transform}@keyframes _ngcontent-%COMP%_appleZoom{0%{transform:scale(.8)}to{transform:scale(1.06)}}@media (prefers-reduced-motion: reduce){.apple-anim[_ngcontent-%COMP%]{animation:none;transform:none}}"]})}}return t})();var RT=["videoEl"];function FT(t,n){t&1&&v(0,"img",35)}function NT(t,n){if(t&1){let e=F();c(0,"video",36,0),y("ended",function(){x(e);let r=_();return C(r.onVideoEnded())}),l(2," Your browser does not support the video tag. "),a()}if(t&2){let e=_();g("src",e.videoSrc,H)}}var pw=(()=>{class t{get current(){return this.items[this.index]}constructor(e,i,r,o){this.http=e,this.dialogRef=i,this.data=r,this.cdr=o,this.showVideo=!1,this.videoSrc="",this.isPlayingVideo=!1,this.playIconDataUrl="",this.pauseIconDataUrl="",this.API_BASE=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space":"http://localhost:5000",this.SCORE_ENDPOINT=`${this.API_BASE}/pronragg/score`,this.preferredMimeTypes=["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus","audio/ogg"],this.items=[{letter:"A",word:"Apple",phonetics:"/\u02C8\xE6p\u0259l/",imgSrc:"assets/images/pron/letter-a.png",audioSrc:"assets/pronvideo/audio/apple.mp3"},{letter:"B",word:"Ball",phonetics:"/b\u0254\u02D0l/",imgSrc:"assets/images/pron/letter-b.png",audioSrc:"assets/pronvideo/audio/ball.mp3"},{letter:"C",word:"Cat",phonetics:"/k\xE6t/",imgSrc:"assets/images/pron/letter-c.png",audioSrc:"assets/pronvideo/audio/cat.mp3"},{letter:"D",word:"Dog",phonetics:"/d\u0252\u0261/",imgSrc:"assets/images/pron/letter-d.png",audioSrc:"assets/pronvideo/audio/dog.mp3"},{letter:"E",word:"Egg",phonetics:"/e\u0261/",imgSrc:"assets/images/pron/letter-e.png",audioSrc:"assets/pronvideo/audio/egg.mp3"},{letter:"F",word:"Fish",phonetics:"/f\u026A\u0283/",imgSrc:"assets/images/pron/letter-f.png",audioSrc:"assets/pronvideo/audio/fish.mp3"},{letter:"G",word:"Grapes",phonetics:"/\u0261re\u026Aps/",imgSrc:"assets/images/pron/letter-g.png",audioSrc:"assets/pronvideo/audio/grapes.mp3"},{letter:"H",word:"Hat",phonetics:"/h\xE6t/",imgSrc:"assets/images/pron/letter-h.png",audioSrc:"assets/pronvideo/audio/hat.mp3"},{letter:"I",word:"Ice cream",phonetics:"/\u02C8a\u026As \u02CCkri\u02D0m/",imgSrc:"assets/images/pron/letter-i.png",audioSrc:"assets/pronvideo/audio/icecream.mp3"},{letter:"J",word:"Jar",phonetics:"/d\u0292\u0251\u02D0r/",imgSrc:"assets/images/pron/letter-j.png",audioSrc:"assets/pronvideo/audio/jar.mp3"},{letter:"K",word:"Kite",phonetics:"/ka\u026At/",imgSrc:"assets/images/pron/letter-k.png",audioSrc:"assets/pronvideo/audio/kite.mp3"},{letter:"L",word:"Lion",phonetics:"/\u02C8la\u026A\u0259n/",imgSrc:"assets/images/pron/letter-l.png",audioSrc:"assets/pronvideo/audio/lion.mp3"},{letter:"M",word:"Moon",phonetics:"/mu\u02D0n/",imgSrc:"assets/images/pron/letter-m.png",audioSrc:"assets/pronvideo/audio/moon.mp3"},{letter:"N",word:"Nest",phonetics:"/nest/",imgSrc:"assets/images/pron/letter-n.png",audioSrc:"assets/pronvideo/audio/nest.mp3"},{letter:"O",word:"Orange",phonetics:"/\u02C8\u0252r\u026And\u0292/",imgSrc:"assets/images/pron/letter-o.png",audioSrc:"assets/pronvideo/audio/orange.mp3"},{letter:"P",word:"Pig",phonetics:"/p\u026A\u0261/",imgSrc:"assets/images/pron/letter-p.png",audioSrc:"assets/pronvideo/audio/pig.mp3"},{letter:"Q",word:"Queen",phonetics:"/kwi\u02D0n/",imgSrc:"assets/images/pron/letter-q.png",audioSrc:"assets/pronvideo/audio/queen.mp3"},{letter:"R",word:"Rabbit",phonetics:"/\u02C8r\xE6b\u026At/",imgSrc:"assets/images/pron/letter-r.png",audioSrc:"assets/pronvideo/audio/rabbit.mp3"},{letter:"S",word:"Sun",phonetics:"/s\u028Cn/",imgSrc:"assets/images/pron/letter-s.png",audioSrc:"assets/pronvideo/audio/sun.mp3"},{letter:"T",word:"Tree",phonetics:"/tri\u02D0/",imgSrc:"assets/images/pron/letter-t.png",audioSrc:"assets/pronvideo/audio/tree.mp3"},{letter:"U",word:"Umbrella",phonetics:"/\u028Cm\u02C8brel\u0259/",imgSrc:"assets/images/pron/letter-u.png",audioSrc:"assets/pronvideo/audio/umbrella.mp3"},{letter:"V",word:"Van",phonetics:"/v\xE6n/",imgSrc:"assets/images/pron/letter-v.png",audioSrc:"assets/pronvideo/audio/van.mp3"},{letter:"W",word:"Watch",phonetics:"/w\u0252t\u0283/",imgSrc:"assets/images/pron/letter-w.png",audioSrc:"assets/pronvideo/audio/watch.mp3"},{letter:"X",word:"Xylophone",phonetics:"/\u02C8za\u026Al\u0259f\u0259\u028An/",imgSrc:"assets/images/pron/letter-x.png",audioSrc:"assets/pronvideo/audio/xylophone.mp3"},{letter:"Y",word:"Yarn",phonetics:"/j\u0251\u02D0n/",imgSrc:"assets/images/pron/letter-y.png",audioSrc:"assets/pronvideo/audio/yarn.mp3"},{letter:"Z",word:"Zebra",phonetics:"/\u02C8zebr\u0259/",imgSrc:"assets/images/pron/letter-z.png",audioSrc:"assets/pronvideo/audio/zebra.mp3"}],this.index=0,this.wordAudio=new Audio,this.isRecording=!1,this.isScoring=!1,this.isOscillating=!1,this.chunks=[],this.currentMimeType="audio/webm",this.recordedAudioUrl=null,this.lastRecordedBlob=null,this.pendingVideoUrl=null,this.lastVideoBlobUrl=null,this.showResult=!1,this.score=0,this.stars=0,this.feedbackLines=[],this.feedbackHint="",this.videoUrl=""}ngOnInit(){this.resetResult(),this.setupBestMimeType(),this.playIconDataUrl="assets/pronvideo/play.png",this.pauseIconDataUrl="assets/pronvideo/pause.png"}ngOnDestroy(){if(this.cleanupRecordingUrl(),this.stopTracks(),this.safeStopRecorder(),this.wordAudio.pause(),this.wordAudio.src="",this.resetVideo(),this.lastVideoBlobUrl){try{URL.revokeObjectURL(this.lastVideoBlobUrl)}catch{}this.lastVideoBlobUrl=null}if(this.pendingGestureListener){try{document.body.removeEventListener("click",this.pendingGestureListener,!0)}catch{}this.pendingGestureListener=void 0,this.pendingVideoUrl=null}}startRecording(e){return it(this,null,function*(){if(e?.preventDefault(),!(this.isRecording||this.isScoring)){this.resetResult(),this.cleanupRecordingUrl(),this.lastRecordedBlob=null;try{this.mediaStream=yield navigator.mediaDevices.getUserMedia({audio:!0});let i={};this.currentMimeType&&(i.mimeType=this.currentMimeType),this.mediaRecorder=new MediaRecorder(this.mediaStream,i),this.chunks=[],this.mediaRecorder.ondataavailable=r=>{r.data&&r.data.size>0&&this.chunks.push(r.data)},this.mediaRecorder.onstop=()=>{this.onRecordingStopped()},this.mediaRecorder.start(),this.isRecording=!0}catch{this.isRecording=!1,this.stopTracks()}}})}stopRecording(e){e?.preventDefault(),this.isRecording&&(this.isRecording=!1,this.isOscillating=!0,this.safeStopRecorder(),this.stopTracks())}safeStopRecorder(){try{this.mediaRecorder&&this.mediaRecorder.state!=="inactive"&&this.mediaRecorder.stop()}catch{}}onRecordingStopped(){try{let e=new Blob(this.chunks,{type:this.currentMimeType||"audio/webm"});this.lastRecordedBlob=e,this.recordedAudioUrl=URL.createObjectURL(e),this.sendForScoring(e,this.current.word)}catch{this.isOscillating=!1,this.showResult=!1}finally{this.chunks=[]}}playUserRecording(){if(this.recordedAudioUrl)try{new Audio(this.recordedAudioUrl).play().catch(()=>{})}catch{}}sendForScoring(e,i){if(!e||!i){this.isOscillating=!1;return}let r=new FormData,o=this.currentMimeType.includes("ogg")?"ogg":"webm";r.append("audio",e,`student.${o}`),r.append("word",i),r.append("return_segment_base64","1"),this.isScoring=!0,this.http.post(this.SCORE_ENDPOINT,r).pipe(At(()=>{this.isScoring=!1,this.isOscillating=!1,this.cdr.detectChanges()})).subscribe({next:s=>{let d=this.normalizeScore(s?.score);if(this.score=d,this.feedbackHint=s.hint||"",s?.videoBlobBase64){if(this.lastVideoBlobUrl){try{URL.revokeObjectURL(this.lastVideoBlobUrl)}catch{}this.lastVideoBlobUrl=null}try{let u=atob(s.videoBlobBase64),h=u.length,p=new Uint8Array(h);for(let w=0;w{this.score=0,this.stars=1,this.feedbackLines=this.buildFeedbackFromScore(0),this.showResult=!0,this.cdr.detectChanges()}})}normalizeScore(e){let i=Number(e);return Number.isNaN(i)||i<0?0:i>100?100:Math.round(i)}resetResult(){this.showResult=!1,this.score=0,this.stars=0,this.feedbackLines=[],this.isPlayingVideo=!1,this.isOscillating=!1}resetSpeakometer(){this.score=0,this.stars=0,this.feedbackLines=[],this.feedbackHint="",this.showResult=!1,this.isOscillating=!1}mapStars(e){return e>=90?5:e>=80?4:e>=70?3:e>=60?2:1}buildFeedbackFromScore(e){return e>=90?["Excellent pronunciation.","Very clear vowel and ending sound.","Keep the same speed."]:e>=80?["Very good attempt.","Slightly improve the main vowel.","Ending sound is almost perfect."]:e>=70?["Good try.","Listen once more and repeat slowly.","Focus on the first sound."]:e>=50?["Nice effort.","Try a slower pronunciation.","Record again after listening."]:["Try again.","Listen to the model carefully.","Speak clearly and record once more."]}setupBestMimeType(){if(!window.MediaRecorder){this.currentMimeType="audio/webm";return}for(let e of this.preferredMimeTypes)try{if(window.MediaRecorder.isTypeSupported(e)){this.currentMimeType=e;return}}catch{}this.currentMimeType="audio/webm"}stopTracks(){try{this.mediaStream?.getTracks().forEach(e=>e.stop())}catch{}finally{this.mediaStream=void 0}}cleanupRecordingUrl(){if(this.recordedAudioUrl){try{URL.revokeObjectURL(this.recordedAudioUrl)}catch{}this.recordedAudioUrl=null}}prev(){this.index!==0&&(this.index--,this.resetExerciseState())}next(){this.index>=this.items.length-1||(this.index++,this.resetExerciseState())}goTo(e){e<0||e>=this.items.length||(this.index=e,this.resetExerciseState())}resetExerciseState(){this.resetResult(),this.cleanupRecordingUrl(),this.lastRecordedBlob=null,this.isRecording=!1,this.isScoring=!1,this.stopTracks(),this.safeStopRecorder(),this.resetVideo()}resetVideo(){try{let e=this.videoElRef?.nativeElement;if(e){try{e.pause()}catch{}try{e.currentTime=0}catch{}try{e.removeAttribute("src")}catch{}try{e.load()}catch{}}}catch{}finally{if(this.lastVideoBlobUrl){try{URL.revokeObjectURL(this.lastVideoBlobUrl)}catch{}this.lastVideoBlobUrl=null}this.showVideo=!1,this.videoSrc="",this.isPlayingVideo=!1}}playWordAudio(){this.resetSpeakometer();let e=this.current.audioSrc||this.getAudioSrcFromWord(this.current.word);if(e)try{this.wordAudio.pause(),this.wordAudio.currentTime=0,this.wordAudio.src=e,this.wordAudio.play().catch(()=>{})}catch{}}getAudioSrcFromWord(e){return e?`assets/pronvideo/audio/${e.trim().toLowerCase().replace(/\s+/g,"-")}.mp3`:""}get needleAngle(){return-90+Math.max(0,Math.min(100,Number(this.score??0)))*1.8}closePopup(){this.dialogRef.close()}playWordVideo(){this.resetSpeakometer();let e=this.getVideoSrcFromWord(this.current.word);e&&(this.showVideo=!0,this.videoSrc=e,setTimeout(()=>{try{let i=this.videoElRef?.nativeElement;i&&(i.addEventListener("play",()=>{this.isPlayingVideo=!0,this.resetSpeakometer()}),i.addEventListener("pause",()=>this.isPlayingVideo=!1),i.pause(),i.src=this.videoSrc,i.load(),i.play().then(()=>{this.isPlayingVideo=!0}).catch(()=>{this.isPlayingVideo=!i.paused}))}catch{}},0))}toggleVideoPlay(){try{if(!this.showVideo){this.playWordVideo();return}let e=this.videoElRef?.nativeElement;if(!e){this.videoSrc=this.getVideoSrcFromWord(this.current.word),this.showVideo=!0;return}e.paused?(this.resetSpeakometer(),e.play().then(()=>{this.isPlayingVideo=!0}).catch(()=>{this.isPlayingVideo=!e.paused})):(e.pause(),this.isPlayingVideo=!1)}catch{}}tryPlayFeedbackVideo(e,i){i&&(this.showVideo=!0,this.videoSrc=i,setTimeout(()=>{try{let r=this.videoElRef?.nativeElement;if(!r){this.registerGestureForPendingVideo(i);return}try{r.pause()}catch{}r.src=this.videoSrc,r.load(),r.play().then(()=>{this.isPlayingVideo=!0}).catch(()=>{this.isPlayingVideo=!r.paused,this.registerGestureForPendingVideo(i)})}catch{}},0))}registerGestureForPendingVideo(e){if(this.pendingVideoUrl=e,!this.pendingGestureListener){this.pendingGestureListener=i=>{try{this.showVideo=!0,this.videoSrc=this.pendingVideoUrl||e,setTimeout(()=>{try{let r=this.videoElRef?.nativeElement;r&&(r.src=this.videoSrc,r.load(),r.play().then(()=>{this.isPlayingVideo=!0}).catch(()=>{this.isPlayingVideo=!r.paused}))}catch{}},0)}finally{try{this.pendingGestureListener&&document.body.removeEventListener("click",this.pendingGestureListener,!0)}catch{}this.pendingGestureListener=void 0,this.pendingVideoUrl=null,this.isOscillating=!1}};try{document.body.addEventListener("click",this.pendingGestureListener,!0)}catch{}}}onVideoEnded(){try{let e=this.videoElRef?.nativeElement;if(e){try{e.pause()}catch{}try{e.currentTime=0}catch{}try{e.src=""}catch{}try{e.load()}catch{}}}catch{}finally{if(this.showVideo=!1,this.isPlayingVideo=!1,this.videoSrc="",this.isOscillating=!1,this.pendingGestureListener){try{document.body.removeEventListener("click",this.pendingGestureListener,!0)}catch{}this.pendingGestureListener=void 0,this.pendingVideoUrl=null}try{this.cdr.detectChanges()}catch{}}}getVideoSrcFromWord(e){return e?`assets/pronvideo/videos/${e.trim().toLowerCase().replace(/\s+/g,"-")}.mp4`:""}static{this.\u0275fac=function(i){return new(i||t)(M(De),M(zn),M(yi),M(Re))}}static{this.\u0275cmp=$({type:t,selectors:[["app-pronunciationragg"]],viewQuery:function(i,r){if(i&1&&$e(RT,5),i&2){let o;je(o=Be())&&(r.videoElRef=o.first)}},decls:45,vars:20,consts:[["videoEl",""],[1,"pp-page"],[1,"pp-header"],[1,"pp-main"],[1,"pp-left"],[1,"word-card"],[1,"word-img-wrap"],[1,"apple-anim",3,"src","alt"],[1,"word-text"],[1,"phonetic-pill"],[1,"image-container"],["src","assets/pronvideo/audio.png","alt","Round Image",1,"round-image",3,"click"],[1,"pp-center"],[1,"word-card",2,"width","30vw!important"],[2,"width","28vw","height","25vw"],["style","height:100%; border-radius:1vw;","src","assets/pronvideo/teacher.png","alt","Teacher",4,"ngIf"],["style","border-radius:1vw; object-fit:cover;","controls","","autoplay","","height","469","width","521",3,"src","ended",4,"ngIf"],[2,"display","flex","margin-top","1.8vw","gap","2vw"],["role","button","tabindex","0",1,"listen-img",3,"click","keydown.enter","keydown.space","src"],[1,"rec-circle",3,"mousedown","mouseup","mouseleave","touchstart","touchend","touchcancel"],[1,"rec-inner"],[1,"mic"],[1,"rec-text"],[1,"pp-right"],[1,"gauge-wrapper"],[1,"gauge"],[1,"gauge-arc"],[1,"needle"],[1,"mic-badge"],[1,"score-span"],[1,"container"],[1,"arrow","left",3,"click","disabled"],[1,"center-text"],[1,"arrow","right",3,"click","disabled"],["aria-label","Close",1,"user-guide-close-icon",3,"click"],["src","assets/pronvideo/teacher.png","alt","Teacher",2,"height","100%","border-radius","1vw"],["controls","","autoplay","","height","469","width","521",2,"border-radius","1vw","object-fit","cover",3,"ended","src"]],template:function(i,r){i&1&&(c(0,"div",1)(1,"div",2)(2,"h1"),l(3,"Pronunciation Practice"),a()(),c(4,"div",3)(5,"div",4)(6,"div",5)(7,"div",6),v(8,"img",7),a(),c(9,"div",8),l(10),a(),c(11,"div",9),l(12),a(),c(13,"div",10)(14,"img",11),y("click",function(){return r.playWordAudio()}),a()()()(),c(15,"div",12)(16,"div",13)(17,"div",14),k(18,FT,1,0,"img",15)(19,NT,3,1,"video",16),a(),c(20,"div",17)(21,"img",18),y("click",function(){return r.toggleVideoPlay()})("keydown.enter",function(){return r.toggleVideoPlay()})("keydown.space",function(s){return r.toggleVideoPlay(),s.preventDefault()}),a(),c(22,"button",19),y("mousedown",function(){return r.startRecording()})("mouseup",function(){return r.stopRecording()})("mouseleave",function(){return r.stopRecording()})("touchstart",function(s){return r.startRecording(s)})("touchend",function(s){return r.stopRecording(s)})("touchcancel",function(s){return r.stopRecording(s)}),c(23,"div",20)(24,"div",21),l(25,"\u{1F3A4}"),a(),c(26,"div",22),l(27,"REC"),a()()()()()(),c(28,"div",23)(29,"div",24)(30,"div",25),v(31,"div",26)(32,"div",27),a(),c(33,"div",28)(34,"span",29),l(35),a()()(),c(36,"div",30)(37,"button",31),y("click",function(){return r.prev()}),l(38,"\u2039"),a(),c(39,"span",32),l(40),a(),c(41,"button",33),y("click",function(){return r.next()}),l(42,"\u203A"),a()()()()(),c(43,"button",34),y("click",function(){return r.closePopup()}),l(44,"\xD7"),a()),i&2&&(f(8),g("src",r.current.imgSrc,H)("alt",r.current.word),f(2),U(r.current.word),f(2),ne(" ",r.current.phonetics," "),f(6),g("ngIf",!r.showVideo),f(),g("ngIf",r.showVideo),f(2),g("src",r.isPlayingVideo?r.pauseIconDataUrl:r.playIconDataUrl,H),z("alt",r.isPlayingVideo?"Pause pronunciation":"Play pronunciation")("aria-label",r.isPlayingVideo?"Pause pronunciation":"Play pronunciation")("aria-pressed",r.isPlayingVideo),f(),W("recording",r.isRecording),f(10),Nt("--angle",r.needleAngle+"deg"),W("oscillate",r.isOscillating),f(3),ne("",r.score,"%"),f(2),g("disabled",r.index===0),f(3),U(r.current.letter),f(),g("disabled",r.index===r.items.length-1))},dependencies:[Fe],styles:["[_nghost-%COMP%]{display:block;font-family:Raleway,Roboto,Helvetica Neue,sans-serif}.pp-page[_ngcontent-%COMP%]{height:85vh;padding:28px 24px 18px;box-sizing:border-box;border:7px solid #3aaea8;border-radius:1vw}.pp-header[_ngcontent-%COMP%]{text-align:center;margin-bottom:18px}.pp-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font-size:42px;font-weight:800;color:#3aaea8;letter-spacing:.3px}.pp-sub[_ngcontent-%COMP%]{margin-top:6px;color:#6b7f7e;font-size:15px;position:relative}.pp-tooltip[_ngcontent-%COMP%]{margin-left:8px;display:inline-block;background:#fff;border:1px solid #d8eeee;color:#2f6f6b;padding:6px 10px;border-radius:14px;font-size:12px;box-shadow:0 6px 14px #0000000f}.pp-main[_ngcontent-%COMP%]{display:flex;gap:1vw;align-items:start;justify-content:space-around}.pp-left[_ngcontent-%COMP%]{display:flex;justify-content:center}.word-card[_ngcontent-%COMP%]{width:22vw;height:34vw;background:#e9f7f6;border-radius:18px;padding:22px 18px 26px;text-align:center;box-shadow:0 12px 26px #00000014;border:3px dashed #3aaea8;gap:.5vw;display:flex;flex-direction:column;align-items:center;justify-content:space-between}.word-img-wrap[_ngcontent-%COMP%]{width:20vw;height:20vw;display:flex;align-items:center;justify-content:center}.word-img-wrap[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:100%;max-height:100%;object-fit:contain;border-radius:1vw}.word-text[_ngcontent-%COMP%]{font-size:3vw;font-weight:800;color:#1f2b2a}.phonetic-pill[_ngcontent-%COMP%]{color:#3aaea8;font-size:1.5vw;font-weight:600}.audio-img[_ngcontent-%COMP%]{width:4.8vw;cursor:pointer}.pp-center[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:14px;position:relative}.teacher-frame[_ngcontent-%COMP%]{width:22vw;height:33vw;background:#e9f7f6;border-radius:18px;padding:22px 18px 26px;text-align:center;box-shadow:0 12px 26px #00000014;border:3px dashed #3aaea8}.teacher-frame[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover;border-radius:12px;background:#fff}.listen-btn[_ngcontent-%COMP%]{border:none;background:#49b6ae;color:#fff;padding:12px 18px;border-radius:12px;font-weight:700;font-size:16px;display:inline-flex;align-items:center;gap:10px;cursor:pointer;box-shadow:0 8px 18px #00000014}.listen-btn[_ngcontent-%COMP%]:active{transform:scale(.99)}.listen-ico[_ngcontent-%COMP%]{font-size:18px}.rec-circle[_ngcontent-%COMP%]{width:92px;height:92px;border-radius:50%;border:none;background:#f07b48;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px #0006;transition:all .3s ease}.rec-circle[_ngcontent-%COMP%]:active{transform:scale(.98)}.rec-circle.recording[_ngcontent-%COMP%]{filter:brightness(.95);animation:_ngcontent-%COMP%_recPulse 1s infinite}@keyframes _ngcontent-%COMP%_recPulse{0%{box-shadow:0 0 #f07b4859}70%{box-shadow:0 0 0 18px #f07b4800}to{box-shadow:0 0 #f07b4800}}.rec-inner[_ngcontent-%COMP%]{text-align:center;line-height:1.1}.mic[_ngcontent-%COMP%]{font-size:22px;margin-bottom:4px}.rec-text[_ngcontent-%COMP%]{font-size:12px;font-weight:800;letter-spacing:.6px}.pp-right[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-direction:column;gap:18vw}.connector[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2vw}.connector[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{width:34px;height:10px;border-radius:999px;background:#98d8d4;opacity:.6}.feedback-card[_ngcontent-%COMP%]{width:15vw;background:#9edfd9;border-radius:16px;padding:22px 22px 24px;box-shadow:0 12px 22px #00000014;height:15vw}.feedback-title[_ngcontent-%COMP%]{font-size:18px;font-weight:800;color:#205f5a;letter-spacing:.6px;margin-bottom:8px}.feedback-body[_ngcontent-%COMP%]{background:transparent}.feedback-muted[_ngcontent-%COMP%]{color:#2c6d68;opacity:.8;font-style:italic;font-size:14px;margin-top:8px}.feedback-result[_ngcontent-%COMP%]{margin-top:8px}.score-row[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:10px}.score-label[_ngcontent-%COMP%]{font-size:12px;color:#1d514d;font-weight:700}.score-value[_ngcontent-%COMP%]{font-size:28px;font-weight:900;color:#103c39}.meter[_ngcontent-%COMP%]{margin-top:10px}.meter-track[_ngcontent-%COMP%]{height:10px;background:#ffffff73;border-radius:999px;overflow:hidden}.meter-fill[_ngcontent-%COMP%]{height:100%;width:0%;background:#2b8f88;transition:width .5s ease}.stars[_ngcontent-%COMP%]{margin-top:10px;font-size:22px;display:flex;gap:4px}.stars[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#ffffff8c}.stars[_ngcontent-%COMP%] span.active[_ngcontent-%COMP%]{color:#ffcc4d;animation:_ngcontent-%COMP%_starPop .3s ease}@keyframes _ngcontent-%COMP%_starPop{0%{transform:scale(.85)}60%{transform:scale(1.12)}to{transform:scale(1)}}.feedback-lines[_ngcontent-%COMP%]{margin:10px 0 0 18px;color:#114744;font-size:13.5px;font-weight:600}.pp-bottom[_ngcontent-%COMP%]{max-width:1200px;margin:22px auto 0;display:flex;flex-direction:column;align-items:center;gap:14px}.nav-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:3vw}.nav-btn[_ngcontent-%COMP%]{width:7vw;height:7vw;border-radius:50%;border:none;background:#dcefee;color:#1b5551;font-size:7vw;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;padding:0;cursor:pointer;font-weight:700;box-shadow:0 8px 18px #0000000f;transition:transform .08s ease}.nav-btn[_ngcontent-%COMP%]:active{transform:scale(.98)}.nav-btn[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.nav-center[_ngcontent-%COMP%]{display:inline-flex;align-items:baseline;gap:8px}.nav-letter[_ngcontent-%COMP%]{font-size:5vw;font-weight:900;color:#3aaea8}.nav-count[_ngcontent-%COMP%]{font-size:14px;color:#667b79;font-weight:600}@media (max-width: 980px){.nav-btn[_ngcontent-%COMP%]{width:56px;height:56px;font-size:28px}}.alpha-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:900px}.alpha-pill[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:50%;border:none;background:#dfeeee;color:#3a5a58;font-weight:700;cursor:pointer;font-size:13px}.alpha-pill.active[_ngcontent-%COMP%]{background:#49b6ae;color:#fff;box-shadow:0 6px 14px #00000014}@media (max-width: 1100px){.pp-main[_ngcontent-%COMP%]{grid-template-columns:260px 320px 1fr}}@media (max-width: 980px){.pp-main[_ngcontent-%COMP%]{grid-template-columns:1fr}.pp-left[_ngcontent-%COMP%], .pp-center[_ngcontent-%COMP%], .pp-right[_ngcontent-%COMP%]{justify-content:center}.connector[_ngcontent-%COMP%]{display:none}.feedback-card[_ngcontent-%COMP%]{width:100%;max-width:520px}}.gauge-wrapper[_ngcontent-%COMP%]{position:relative;width:20vw;height:10vw}.gauge[_ngcontent-%COMP%]{position:absolute;left:50%;top:0;transform:translate(-50%);width:100%;height:100%;border-radius:260px 260px 0 0;overflow:hidden;background:#f3f3f3;box-shadow:0 4px 10px #00000040 inset}.gauge-arc[_ngcontent-%COMP%]{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 270deg,#e53935 0deg 45deg,#fb8c00 45deg 90deg,#fbc02d 90deg 135deg,#43a047 135deg 180deg,transparent 180deg 360deg);height:20vw}.mic-badge[_ngcontent-%COMP%]{position:absolute;bottom:-.3vw;left:50%;transform:translate(-50%,35%);width:3vw;height:3vw;border-radius:50%;background:#000;box-shadow:0 8px 18px #0006;display:flex;align-items:center;justify-content:center}.score-span[_ngcontent-%COMP%]{color:#fff;font-size:1vw;font-weight:700}.notepad[_ngcontent-%COMP%]{display:flex;align-items:center}.user-guide-close-icon[_ngcontent-%COMP%]{position:fixed;top:3vw;right:4vw;background:#009688;border:none;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2vw;color:#000;cursor:pointer;z-index:2010;box-shadow:0 2px 8px #5d91c32e;transition:background .2s,color .2s}.teacher-media[_ngcontent-%COMP%]{width:20vw;max-width:260px;min-width:140px;aspect-ratio:3 / 4;position:relative;overflow:hidden;display:block}.teacher-media__img[_ngcontent-%COMP%], .teacher-media__video[_ngcontent-%COMP%]{width:100%;height:100%;display:block;border-radius:1vw;border:2px solid #ccc;object-fit:cover}.teacher-media__video[_ngcontent-%COMP%]{background-color:#000}.listen-img[_ngcontent-%COMP%]{width:92px;height:92px;border-radius:50%;display:inline-block;object-fit:contain;cursor:pointer;-webkit-user-select:none;user-select:none;margin-right:1vw;box-shadow:0 10px 30px #0006;transition:all .3s ease;border:none}.listen-img[_ngcontent-%COMP%]:active{transform:scale(.98)}.listen-img.playing[_ngcontent-%COMP%], .listen-img[aria-pressed=true][_ngcontent-%COMP%]{filter:brightness(.95);box-shadow:0 18px 30px #00000029}.listen-img[_ngcontent-%COMP%]:focus{outline:3px solid rgba(58,174,168,.18);outline-offset:3px}@media (max-width: 980px){.listen-img[_ngcontent-%COMP%]{width:72px;height:72px;padding:14px}}@keyframes _ngcontent-%COMP%_needleOscillate{0%{transform:translate(-50%) rotate(-70deg)}25%{transform:translate(-50%) rotate(-20deg)}50%{transform:translate(-50%) rotate(60deg)}75%{transform:translate(-50%) rotate(-10deg)}to{transform:translate(-50%) rotate(-70deg)}}.needle[_ngcontent-%COMP%]{position:absolute;bottom:0vw;left:50%;width:.7vw;height:8vw;background:#333;transform:translate(-50%) rotate(var(--angle, -90deg));transform-origin:50% 100%;transition:transform .7s cubic-bezier(.2,.9,.2,1);border-radius:10px;box-shadow:0 2px 6px #00000080}.needle.oscillate[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_needleOscillate 1.2s ease-in-out infinite;transition:none}.container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;gap:40px}.arrow[_ngcontent-%COMP%]{font-size:4rem;background-color:#e0f7fa;border:none;width:92px;height:92px;border-radius:50%;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:4px 4px 15px #0003;color:#00796b;transition:background-color .3s,color .3s}.arrow[_ngcontent-%COMP%]:disabled{background-color:#cfd8dc;color:#90a4ae;cursor:not-allowed;box-shadow:none}.center-text[_ngcontent-%COMP%]{font-size:5rem;font-weight:700;color:#00796b;width:4vw;text-align:center}.image-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;height:100vh}.round-image[_ngcontent-%COMP%]{width:4.8vw;height:4.8vw;border-radius:50%;box-shadow:0 10px 30px #0006;transition:all .3s ease;cursor:pointer}.round-image[_ngcontent-%COMP%]:active{transform:scale(1.1)}.apple-anim[_ngcontent-%COMP%]{transform-origin:50% 50%;animation:_ngcontent-%COMP%_appleZoom 2.8s ease-in-out infinite alternate;will-change:transform}@keyframes _ngcontent-%COMP%_appleZoom{0%{transform:scale(.8)}to{transform:scale(1.06)}}@media (prefers-reduced-motion: reduce){.apple-anim[_ngcontent-%COMP%]{animation:none;transform:none}}"]})}}return t})();var LT=["videoEl"];function VT(t,n){if(t&1){let e=F();c(0,"video",42),y("ended",function(){x(e);let r=_();return C(r.onVideoEnded())}),l(1," Your browser does not support the video tag. "),a()}}function jT(t,n){if(t&1){let e=F();c(0,"video",43,0),y("play",function(){x(e);let r=_();return C(r.onVideoPlay())})("pause",function(){x(e);let r=_();return C(r.onVideoPause())})("ended",function(){x(e);let r=_();return C(r.onVideoEnded())}),l(2," Your browser does not support the video tag. "),a()}if(t&2){let e=_();g("src",e.videoSrc,H)}}function BT(t,n){t&1&&(c(0,"span",44),l(1,"\u{1F399}\uFE0F"),a())}function UT(t,n){t&1&&(c(0,"span",44),l(1,"\u{1F3A4}"),a())}function zT(t,n){if(t&1&&(c(0,"span",45),l(1),Ni(2,"number"),a()),t&2){let e=_();f(),U(i_(2,1,e.timeLeft,"1.0-0"))}}var fw=(()=>{class t{get current(){return this.items[this.index]}constructor(e,i,r,o){this.http=e,this.dialogRef=i,this.data=r,this.cdr=o,this.API_BASE=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space":"http://localhost:5000",this.SCORE_ENDPOINT=`${this.API_BASE}/pronragupgrade/score`,this.preferredMimeTypes=["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus","audio/ogg"],this.showVideo=!1,this.videoSrc="",this.isPlayingVideo=!1,this.playIconDataUrl="assets/pronvideo/play.png",this.pauseIconDataUrl="assets/pronvideo/pause.png",this.items=[{letter:"A",word:"Apple",phonetics:"/\u02C8\xE6p\u0259l/",imgSrc:"assets/pronvideo/animvideo/apple.mp4",audioSrc:"assets/pronvideo/audio/apple.mp3"},{letter:"B",word:"Ball",phonetics:"/b\u0254\u02D0l/",imgSrc:"assets/pronvideo/animvideo/ball.mp4",audioSrc:"assets/pronvideo/audio/ball.mp3"},{letter:"C",word:"Cat",phonetics:"/k\xE6t/",imgSrc:"assets/pronvideo/animvideo/cat.mp4",audioSrc:"assets/pronvideo/audio/cat.mp3"},{letter:"D",word:"Dog",phonetics:"/d\u0252\u0261/",imgSrc:"assets/pronvideo/animvideo/dog.mp4",audioSrc:"assets/pronvideo/audio/dog.mp3"},{letter:"E",word:"Egg",phonetics:"/e\u0261/",imgSrc:"assets/pronvideo/animvideo/egg.mp4",audioSrc:"assets/pronvideo/audio/egg.mp3"},{letter:"F",word:"Fish",phonetics:"/f\u026A\u0283/",imgSrc:"assets/pronvideo/animvideo/fish.mp4",audioSrc:"assets/pronvideo/audio/fish.mp3"},{letter:"G",word:"Grapes",phonetics:"/\u0261re\u026Aps/",imgSrc:"assets/pronvideo/animvideo/grapes.mp4",audioSrc:"assets/pronvideo/audio/grapes.mp3"},{letter:"H",word:"Hat",phonetics:"/h\xE6t/",imgSrc:"assets/pronvideo/animvideo/hat.mp4",audioSrc:"assets/pronvideo/audio/hat.mp3"},{letter:"I",word:"Ice cream",phonetics:"/\u02C8a\u026As \u02CCkri\u02D0m/",imgSrc:"assets/pronvideo/animvideo/icecream.mp4",audioSrc:"assets/pronvideo/audio/icecream.mp3"},{letter:"J",word:"Jar",phonetics:"/d\u0292\u0251\u02D0r/",imgSrc:"assets/pronvideo/animvideo/jar.mp4",audioSrc:"assets/pronvideo/audio/jar.mp3"},{letter:"K",word:"Kite",phonetics:"/ka\u026At/",imgSrc:"assets/pronvideo/animvideo/kite.mp4",audioSrc:"assets/pronvideo/audio/kite.mp3"},{letter:"L",word:"Lion",phonetics:"/\u02C8la\u026A\u0259n/",imgSrc:"assets/pronvideo/animvideo/lion.mp4",audioSrc:"assets/pronvideo/audio/lion.mp3"},{letter:"M",word:"Moon",phonetics:"/mu\u02D0n/",imgSrc:"assets/pronvideo/animvideo/moon.mp4",audioSrc:"assets/pronvideo/audio/moon.mp3"},{letter:"N",word:"Nest",phonetics:"/nest/",imgSrc:"assets/pronvideo/animvideo/nest.mp4",audioSrc:"assets/pronvideo/audio/nest.mp3"},{letter:"O",word:"Orange",phonetics:"/\u02C8\u0252r\u026And\u0292/",imgSrc:"assets/pronvideo/animvideo/orange.mp4",audioSrc:"assets/pronvideo/audio/orange.mp3"},{letter:"P",word:"Pig",phonetics:"/p\u026A\u0261/",imgSrc:"assets/pronvideo/animvideo/pig.mp4",audioSrc:"assets/pronvideo/audio/pig.mp3"},{letter:"Q",word:"Queen",phonetics:"/kwi\u02D0n/",imgSrc:"assets/pronvideo/animvideo/queen.mp4",audioSrc:"assets/pronvideo/audio/queen.mp3"},{letter:"R",word:"Rabbit",phonetics:"/\u02C8r\xE6b\u026At/",imgSrc:"assets/pronvideo/animvideo/rabbit.mp4",audioSrc:"assets/pronvideo/audio/rabbit.mp3"},{letter:"S",word:"Sun",phonetics:"/s\u028Cn/",imgSrc:"assets/pronvideo/animvideo/sun.mp4",audioSrc:"assets/pronvideo/audio/sun.mp3"},{letter:"T",word:"Tree",phonetics:"/tri\u02D0/",imgSrc:"assets/pronvideo/animvideo/tree.mp4",audioSrc:"assets/pronvideo/audio/tree.mp3"},{letter:"U",word:"Umbrella",phonetics:"/\u028Cm\u02C8brel\u0259/",imgSrc:"assets/pronvideo/animvideo/umbrella.mp4",audioSrc:"assets/pronvideo/audio/umbrella.mp3"},{letter:"V",word:"Van",phonetics:"/v\xE6n/",imgSrc:"assets/pronvideo/animvideo/van.mp4",audioSrc:"assets/pronvideo/audio/van.mp3"},{letter:"W",word:"Watch",phonetics:"/w\u0252t\u0283/",imgSrc:"assets/pronvideo/animvideo/watch.mp4",audioSrc:"assets/pronvideo/audio/watch.mp3"},{letter:"X",word:"Xylophone",phonetics:"/\u02C8za\u026Al\u0259f\u0259\u028An/",imgSrc:"assets/pronvideo/animvideo/xylophone.mp4",audioSrc:"assets/pronvideo/audio/xylophone.mp3"},{letter:"Y",word:"Yarn",phonetics:"/j\u0251\u02D0n/",imgSrc:"assets/pronvideo/animvideo/yarn.mp4",audioSrc:"assets/pronvideo/audio/yarn.mp3"},{letter:"Z",word:"Zebra",phonetics:"/\u02C8zebr\u0259/",imgSrc:"assets/pronvideo/animvideo/zebra.mp4",audioSrc:"assets/pronvideo/audio/zebra.mp3"}],this.index=0,this.isRecording=!1,this.isScoring=!1,this.isOscillating=!1,this.chunks=[],this.currentMimeType="audio/webm",this.recordedAudioUrl=null,this.lastRecordedBlob=null,this.lastSpeechAt=0,this.recordingStartedAt=0,this.hasSpoken=!1,this.silenceMs=5e3,this.startSilenceMs=5e3,this.silenceThreshold=.01,this.duration=3,this.isCountingDown=!1,this.timeLeft=this.duration,this.radius=38,this.circumference=2*Math.PI*this.radius,this.strokeDashoffset=this.circumference,this.showResult=!1,this.score=0,this.stars=0,this.feedbackLines=[],this.videoUrl="",this.lastVideoBlobUrl=null,this.shortfeedback="",this.cancelScoring$=new ue,this.recordRunId=0}ngOnInit(){this.setupBestMimeType(),this.resetResult()}ngOnDestroy(){if(this.cancelScoring$.next(),this.cancelScoring$.complete(),this.stopTracks(),this.safeStopRecorder(),this.teardownAudioGraph(),this.lastVideoBlobUrl){try{URL.revokeObjectURL(this.lastVideoBlobUrl)}catch{}this.lastVideoBlobUrl=null}}toggleRecording(){return it(this,null,function*(){if(this.isRecording){this.stopRecording(!1);return}this.startPreRecordCountdown()})}startPreRecordCountdown(){if(this.score=0,this.shortfeedback="",this.isCountingDown||this.isRecording)return;this.cancelScoring$.next(),this.isScoring=!1,this.isOscillating=!1,this.isCountingDown=!0,this.timeLeft=this.duration;let e=this.duration*1e3,i=performance.now();this.strokeDashoffset=this.circumference,this.preRecordIntervalId=window.setInterval(()=>{let r=performance.now()-i,o=Math.min(1,r/e);if(this.strokeDashoffset=this.circumference*(1-o),this.timeLeft=Math.ceil((e-r)/1e3),r>=e){if(this.preRecordIntervalId){try{clearInterval(this.preRecordIntervalId)}catch{}this.preRecordIntervalId=void 0}this.startRecordingInternal()}try{this.cdr.detectChanges()}catch{}},100)}startRecordingInternal(){return it(this,null,function*(){this.isCountingDown=!1;let e=++this.recordRunId;this.mediaStream=yield navigator.mediaDevices.getUserMedia({audio:!0}),this.mediaRecorder=new MediaRecorder(this.mediaStream,{mimeType:this.currentMimeType}),this.chunks=[],this.mediaRecorder.ondataavailable=i=>i.data.size&&this.chunks.push(i.data),this.mediaRecorder.onstop=()=>{e===this.recordRunId&&this.onRecordingStopped(e)},this.isRecording=!0,this.setupSilenceDetection(this.mediaStream),this.mediaRecorder.start();try{this.cdr.detectChanges()}catch{}})}stopRecording(e=!1){if(this.isRecording){if(this.preRecordIntervalId){try{clearInterval(this.preRecordIntervalId)}catch{}this.preRecordIntervalId=void 0}this.isCountingDown=!1,this.isRecording=!1,this.safeStopRecorder(),this.stopTracks(),this.teardownAudioGraph();try{this.cdr.detectChanges()}catch{}}}safeStopRecorder(){try{this.mediaRecorder&&this.mediaRecorder.state!=="inactive"&&this.mediaRecorder.stop()}catch{}}onRecordingStopped(e){if(e!==this.recordRunId)return;let i=new Blob(this.chunks,{type:this.currentMimeType});if(this.chunks=[],!i||i.size<2e3){this.isOscillating=!1,this.isScoring=!1,this.shortfeedback="No voice detected. Please try again.",this.showResult=!0;try{this.cdr.detectChanges()}catch{}return}this.lastRecordedBlob=i,this.isOscillating=!0;try{this.cdr.detectChanges()}catch{}this.sendForScoring(i,this.current.word,e)}setupSilenceDetection(e){this.teardownAudioGraph(),this.audioCtx=new AudioContext,this.analyser=this.audioCtx.createAnalyser(),this.analyser.fftSize=2048,this.micSource=this.audioCtx.createMediaStreamSource(e),this.micSource.connect(this.analyser),this.recordingStartedAt=performance.now(),this.lastSpeechAt=this.recordingStartedAt,this.hasSpoken=!1;let i=()=>{if(!this.analyser||!this.isRecording)return;let r=new Float32Array(this.analyser.fftSize);this.analyser.getFloatTimeDomainData(r);let o=0;for(let u=0;uthis.silenceThreshold&&(this.lastSpeechAt=d,this.hasSpoken=!0),!this.hasSpoken&&d-this.recordingStartedAt>this.startSilenceMs){this.stopRecording(!0);return}if(this.hasSpoken&&d-this.lastSpeechAt>this.silenceMs){this.stopRecording(!0);return}this.silenceCheckId=window.setTimeout(i,100)};i()}teardownAudioGraph(){if(this.silenceCheckId){try{clearTimeout(this.silenceCheckId)}catch{}this.silenceCheckId=void 0}try{this.micSource?.disconnect()}catch{}try{this.analyser?.disconnect()}catch{}try{this.audioCtx?.close()}catch{}this.micSource=void 0,this.analyser=void 0,this.audioCtx=void 0}stopTracks(){this.mediaStream?.getTracks().forEach(e=>e.stop()),this.mediaStream=void 0}sendForScoring(e,i,r){if(r!==this.recordRunId)return;let o=new FormData;o.append("audio",e,"student.webm"),o.append("word",i.toLowerCase()),this.isScoring=!0,this.http.post(this.SCORE_ENDPOINT,o).pipe(fn(this.cancelScoring$),At(()=>{this.isScoring=!1,this.isOscillating=!1;try{this.cdr.detectChanges()}catch{}})).subscribe(s=>{if(r===this.recordRunId){if(this.score=this.normalizeScore(s.score),this.stars=this.mapStars(this.score),this.shortfeedback=s.feedback,this.feedbackLines=this.mapFeedbackFromStatus(s.status),this.showResult=!0,s.videoBlobBase64){let d=Uint8Array.from(atob(s.videoBlobBase64),h=>h.charCodeAt(0)),u=new Blob([d],{type:"video/mp4"});if(this.lastVideoBlobUrl)try{URL.revokeObjectURL(this.lastVideoBlobUrl)}catch{}this.videoUrl=URL.createObjectURL(u),this.lastVideoBlobUrl=this.videoUrl,this.tryPlayFeedbackVideo(this.videoUrl)}try{this.cdr.detectChanges()}catch{}}},s=>{if(r===this.recordRunId){this.shortfeedback="Error while scoring. Please try again.",this.showResult=!0;try{this.cdr.detectChanges()}catch{}}})}cancelAllRunningProcesses(){if(this.recordRunId++,this.cancelScoring$.next(),this.isScoring=!1,this.isOscillating=!1,this.preRecordIntervalId){try{clearInterval(this.preRecordIntervalId)}catch{}this.preRecordIntervalId=void 0}this.isCountingDown=!1,this.timeLeft=this.duration,this.strokeDashoffset=this.circumference,this.isRecording=!1,this.safeStopRecorder(),this.stopTracks(),this.teardownAudioGraph(),this.chunks=[],this.resetVideoPlayerState();try{this.cdr.detectChanges()}catch{}}resetVideoPlayerState(){try{let e=this.videoElRef?.nativeElement;e&&(e.pause(),e.currentTime=0,e.removeAttribute("src"),e.load())}catch{}this.showVideo=!1,this.videoSrc="",this.isPlayingVideo=!1}mapFeedbackFromStatus(e){switch(e){case"success":return["Excellent pronunciation.","Very clear sound."];case"vowel_error":return["Check your vowel sound.","Open your mouth clearly."];case"consonant_error":return["Focus on consonant sound.","Try again slowly."];case"ending_error":return["Ending sound missing.","Finish the word properly."];case"stress_error":return["Stress needs correction.","Listen and repeat."];case"wrong_word":return["Wrong word spoken.","Say only the target word."];case"silence":return["No speech detected.","Please try again."];default:return["Good attempt.","Try once more."]}}normalizeScore(e){return e=Number(e),isNaN(e)?0:Math.min(100,Math.max(0,Math.round(e)))}mapStars(e){return e>=90?5:e>=80?4:e>=70?3:e>=60?2:1}tryPlayFeedbackVideo(e){this.showVideo=!0,this.videoSrc=e,setTimeout(()=>{let i=this.videoElRef?.nativeElement;i&&(i.src=e,i.load(),i.play().then(()=>{this.isPlayingVideo=!0;try{this.cdr.detectChanges()}catch{}}).catch(()=>{this.isPlayingVideo=!1;try{this.cdr.detectChanges()}catch{}}))},0)}setupBestMimeType(){for(let e of this.preferredMimeTypes)if(window.MediaRecorder?.isTypeSupported(e)){this.currentMimeType=e;return}}resetResult(){this.showResult=!1,this.score=0,this.stars=0,this.feedbackLines=[],this.showVideo=!1,this.videoSrc="",this.shortfeedback=""}playWordAudio(){let e=this.current?.audioSrc||this.getAudioSrcFromWord(this.current.word);if(e)try{let i=new Audio(e);i.currentTime=0,i.play().catch(()=>{})}catch{}}getAudioSrcFromWord(e){return e?`assets/pronvideo/audio/${e.trim().toLowerCase().replace(/\s+/g,"-")}.mp3`:""}onVideoEnded(){this.resetVideoPlayerState(),this.isOscillating=!1;try{this.cdr.detectChanges()}catch{}}onVideoPlay(){this.isPlayingVideo=!0;try{this.cdr.detectChanges()}catch{}}onVideoPause(){this.isPlayingVideo=!1;try{this.cdr.detectChanges()}catch{}}toggleVideoPlay(){try{let e=this.videoElRef?.nativeElement;if(!this.showVideo){this.videoSrc=this.getVideoSrcFromWord(this.current.word),this.showVideo=!0,setTimeout(()=>{let i=this.videoElRef?.nativeElement;i&&(i.src=this.videoSrc,i.load(),i.play().then(()=>{this.isPlayingVideo=!0;try{this.cdr.detectChanges()}catch{}}).catch(()=>{this.isPlayingVideo=!1;try{this.cdr.detectChanges()}catch{}}))},0);return}if(!e)return;if(e.paused)e.play().then(()=>{this.isPlayingVideo=!0;try{this.cdr.detectChanges()}catch{}}).catch(()=>{this.isPlayingVideo=!1;try{this.cdr.detectChanges()}catch{}});else{e.pause(),this.isPlayingVideo=!1;try{this.cdr.detectChanges()}catch{}}}catch{}}getVideoSrcFromWord(e){return e?`assets/pronvideo/videos/${e.trim().toLowerCase().replace(/\s+/g,"-")}.mp4`:""}get needleAngle(){return-90+Math.max(0,Math.min(100,Number(this.score||0)))*1.8}prev(){this.index<=0||(this.cancelAllRunningProcesses(),this.index--,this.resetAfterNavigation())}next(){this.index>=this.items.length-1||(this.cancelAllRunningProcesses(),this.index++,this.resetAfterNavigation())}resetAfterNavigation(){if(this.cancelAllRunningProcesses(),this.score=0,this.stars=0,this.feedbackLines=[],this.showResult=!1,this.shortfeedback="",this.lastRecordedBlob=null,this.recordedAudioUrl){try{URL.revokeObjectURL(this.recordedAudioUrl)}catch{}this.recordedAudioUrl=null}try{this.cdr.detectChanges()}catch{}}closePopup(){this.cancelAllRunningProcesses(),this.dialogRef.close()}static{this.\u0275fac=function(i){return new(i||t)(M(De),M(zn),M(yi),M(Re))}}static{this.\u0275cmp=$({type:t,selectors:[["app-pronunciationragupgrade"]],viewQuery:function(i,r){if(i&1&&$e(LT,5),i&2){let o;je(o=Be())&&(r.videoElRef=o.first)}},decls:53,vars:26,consts:[["videoEl",""],[1,"pp-page"],[1,"pp-header"],[1,"pp-main"],[1,"pp-left"],[1,"word-card"],[1,"word-img-wrap"],[1,"video-frame","square"],["autoplay","","loop","","muted","","playsinline","",3,"src"],[1,"word-text"],[1,"phonetic-pill"],[1,"image-container"],["src","assets/pronvideo/audio.png","alt","Round Image",1,"round-image",3,"click"],[1,"pp-center"],[1,"word-card",2,"width","30vw!important"],[2,"width","28vw","height","25vw"],["src","assets/pronvideo/listening.mp4","style","border-radius:1vw; object-fit:cover;","autoplay","","loop","","muted","","height","469","width","521",3,"ended",4,"ngIf"],["style","border-radius:1vw; object-fit:cover;","autoplay","","height","469","width","521",3,"src","play","pause","ended",4,"ngIf"],[2,"display","flex","margin-top","1.8vw","gap","2vw"],["role","button","tabindex","0",1,"listen-img",3,"click","keydown.enter","keydown.space","src"],["type","button",1,"progress-btn",3,"click"],["width","85","height","85","viewBox","0 0 90 90","aria-hidden","true",1,"progress-ring"],["stroke","#3aaea8","stroke-width","6","fill","transparent","r","38","cx","45","cy","45",1,"progress-ring__background"],["stroke","#3aaea8","stroke-linecap","round","stroke-width","6","fill","transparent","r","38","cx","45","cy","45",1,"progress-ring__bar"],["aria-hidden","true",1,"label"],["class","action-text",4,"ngIf"],["class","seconds",4,"ngIf"],[1,"pp-right"],[1,"gauge-wrapper"],[1,"gauge"],[1,"gauge-arc"],[1,"needle"],[1,"mic-badge"],[1,"score-span"],[1,"fb-board"],["src","assets/pronvideo/slate.png","alt","Sample Image"],[1,"center-text1"],[1,"container"],[1,"arrow","left",3,"click","disabled"],[1,"center-text"],[1,"arrow","right",3,"click","disabled"],["aria-label","Close",1,"user-guide-close-icon",3,"click"],["src","assets/pronvideo/listening.mp4","autoplay","","loop","","muted","","height","469","width","521",2,"border-radius","1vw","object-fit","cover",3,"ended"],["autoplay","","height","469","width","521",2,"border-radius","1vw","object-fit","cover",3,"play","pause","ended","src"],[1,"action-text"],[1,"seconds"]],template:function(i,r){i&1&&(c(0,"div",1)(1,"div",2)(2,"h1"),l(3,"Pronunciation Practice"),a()(),c(4,"div",3)(5,"div",4)(6,"div",5)(7,"div",6)(8,"div",7)(9,"video",8),l(10," Your browser does not support the video tag. "),a()()(),c(11,"div",9),l(12),a(),c(13,"div",10),l(14),a(),c(15,"div",11)(16,"img",12),y("click",function(){return r.playWordAudio()}),a()()()(),c(17,"div",13)(18,"div",14)(19,"div",15),k(20,VT,2,0,"video",16)(21,jT,3,1,"video",17),a(),c(22,"div",18)(23,"img",19),y("click",function(){return r.toggleVideoPlay()})("keydown.enter",function(){return r.toggleVideoPlay()})("keydown.space",function(s){return r.toggleVideoPlay(),s.preventDefault()}),a(),c(24,"button",20),y("click",function(){return r.toggleRecording()}),It(),c(25,"svg",21),v(26,"circle",22)(27,"circle",23),a(),ci(),c(28,"div",24),k(29,BT,2,0,"span",25)(30,UT,2,0,"span",25)(31,zT,3,4,"span",26),a()()()()(),c(32,"div",27)(33,"div",28)(34,"div",29),v(35,"div",30)(36,"div",31),a(),c(37,"div",32)(38,"span",33),l(39),a()()(),c(40,"div",34),v(41,"img",35),c(42,"div",36),l(43),a()(),c(44,"div",37)(45,"button",38),y("click",function(){return r.prev()}),l(46,"\u2039"),a(),c(47,"span",39),l(48),a(),c(49,"button",40),y("click",function(){return r.next()}),l(50,"\u203A"),a()()()()(),c(51,"button",41),y("click",function(){return r.closePopup()}),l(52,"\xD7"),a()),i&2&&(f(9),g("src",r.current.imgSrc,H),f(3),U(r.current.word),f(2),ne(" ",r.current.phonetics," "),f(6),g("ngIf",!r.showVideo),f(),g("ngIf",r.showVideo),f(2),g("src",r.isPlayingVideo?r.pauseIconDataUrl:r.playIconDataUrl,H),z("alt",r.isPlayingVideo?"Pause pronunciation":"Play pronunciation")("aria-label",r.isPlayingVideo?"Pause pronunciation":"Play pronunciation")("aria-pressed",r.isPlayingVideo),f(),W("recording",r.isRecording),z("aria-pressed",r.isRecording),f(3),z("stroke-dasharray",r.circumference)("stroke-dashoffset",r.strokeDashoffset),f(2),g("ngIf",r.isRecording),f(),g("ngIf",!r.isCountingDown&&!r.isRecording),f(),g("ngIf",r.isCountingDown),f(5),Nt("--angle",r.needleAngle+"deg"),W("oscillate",r.isOscillating),f(3),ne("",r.score,"%"),f(4),ne(" ",r.shortfeedback?r.shortfeedback:"Speak to get feedback"," "),f(2),g("disabled",r.index===0),f(3),U(r.current.letter),f(),g("disabled",r.index===r.items.length-1))},dependencies:[Fe,I_],styles:["[_nghost-%COMP%]{display:block;font-family:Raleway,Roboto,Helvetica Neue,sans-serif}.pp-page[_ngcontent-%COMP%]{height:85vh;padding:28px 24px 18px;box-sizing:border-box;border:7px solid #3aaea8;border-radius:1vw}.pp-header[_ngcontent-%COMP%]{text-align:center;margin-bottom:18px}.pp-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{margin:0;font-size:42px;font-weight:800;color:#3aaea8;letter-spacing:.3px}.pp-sub[_ngcontent-%COMP%]{margin-top:6px;color:#6b7f7e;font-size:15px;position:relative}.pp-tooltip[_ngcontent-%COMP%]{margin-left:8px;display:inline-block;background:#fff;border:1px solid #d8eeee;color:#2f6f6b;padding:6px 10px;border-radius:14px;font-size:12px;box-shadow:0 6px 14px #0000000f}.pp-main[_ngcontent-%COMP%]{display:flex;gap:1vw;align-items:start;justify-content:space-around}.pp-left[_ngcontent-%COMP%]{display:flex;justify-content:center}.word-card[_ngcontent-%COMP%]{width:22vw;height:34vw;background:#e9f7f6;border-radius:18px;padding:22px 18px 26px;text-align:center;box-shadow:0 12px 26px #00000014;border:3px dashed #3aaea8;gap:.5vw;display:flex;flex-direction:column;align-items:center;justify-content:space-between}.word-img-wrap[_ngcontent-%COMP%]{width:20vw;height:20vw;display:flex;align-items:center;justify-content:center}.word-img-wrap[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:100%;max-height:100%;object-fit:contain;border-radius:1vw}.word-text[_ngcontent-%COMP%]{font-size:3vw;font-weight:800;color:#1f2b2a}.phonetic-pill[_ngcontent-%COMP%]{color:#3aaea8;font-size:1.5vw;font-weight:600}.audio-img[_ngcontent-%COMP%]{width:4.8vw;cursor:pointer}.pp-center[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;gap:14px;position:relative}.teacher-frame[_ngcontent-%COMP%]{width:22vw;height:33vw;background:#e9f7f6;border-radius:18px;padding:22px 18px 26px;text-align:center;box-shadow:0 12px 26px #00000014;border:3px dashed #3aaea8}.teacher-frame[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover;border-radius:12px;background:#fff}.listen-btn[_ngcontent-%COMP%]{border:none;background:#49b6ae;color:#fff;padding:12px 18px;border-radius:12px;font-weight:700;font-size:16px;display:inline-flex;align-items:center;gap:10px;cursor:pointer;box-shadow:0 8px 18px #00000014}.listen-btn[_ngcontent-%COMP%]:active{transform:scale(.99)}.listen-ico[_ngcontent-%COMP%]{font-size:18px}.rec-circle[_ngcontent-%COMP%]{width:92px;height:92px;border-radius:50%;border:none;background:#f07b48;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 30px #0006;transition:all .3s ease}.rec-circle[_ngcontent-%COMP%]:active{transform:scale(.98)}.rec-circle.recording[_ngcontent-%COMP%]{filter:brightness(.95);animation:_ngcontent-%COMP%_recPulse 1s infinite}@keyframes _ngcontent-%COMP%_recPulse{0%{box-shadow:0 0 #f07b48}70%{box-shadow:0 0 0 18px #f07b4800}to{box-shadow:0 0 #f07b4800}}.rec-inner[_ngcontent-%COMP%]{text-align:center;line-height:1.1}.mic[_ngcontent-%COMP%]{font-size:22px;margin-bottom:4px}.rec-text[_ngcontent-%COMP%]{font-size:12px;font-weight:800;letter-spacing:.6px}.pp-right[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-direction:column;gap:18vw}.connector[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:2vw}.connector[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{width:34px;height:10px;border-radius:999px;background:#98d8d4;opacity:.6}.feedback-card[_ngcontent-%COMP%]{width:15vw;background:#9edfd9;border-radius:16px;padding:22px 22px 24px;box-shadow:0 12px 22px #00000014;height:15vw}.feedback-title[_ngcontent-%COMP%]{font-size:18px;font-weight:800;color:#205f5a;letter-spacing:.6px;margin-bottom:8px}.feedback-body[_ngcontent-%COMP%]{background:transparent}.feedback-muted[_ngcontent-%COMP%]{color:#2c6d68;opacity:.8;font-style:italic;font-size:14px;margin-top:8px}.feedback-result[_ngcontent-%COMP%]{margin-top:8px}.score-row[_ngcontent-%COMP%]{display:flex;align-items:baseline;gap:10px}.score-label[_ngcontent-%COMP%]{font-size:12px;color:#1d514d;font-weight:700}.score-value[_ngcontent-%COMP%]{font-size:28px;font-weight:900;color:#103c39}.meter[_ngcontent-%COMP%]{margin-top:10px}.meter-track[_ngcontent-%COMP%]{height:10px;background:#ffffff73;border-radius:999px;overflow:hidden}.meter-fill[_ngcontent-%COMP%]{height:100%;width:0%;background:#2b8f88;transition:width .5s ease}.stars[_ngcontent-%COMP%]{margin-top:10px;font-size:22px;display:flex;gap:4px}.stars[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#ffffff8c}.stars[_ngcontent-%COMP%] span.active[_ngcontent-%COMP%]{color:#ffcc4d;animation:_ngcontent-%COMP%_starPop .3s ease}@keyframes _ngcontent-%COMP%_starPop{0%{transform:scale(.85)}60%{transform:scale(1.12)}to{transform:scale(1)}}.feedback-lines[_ngcontent-%COMP%]{margin:10px 0 0 18px;color:#114744;font-size:13.5px;font-weight:600}.pp-bottom[_ngcontent-%COMP%]{max-width:1200px;margin:22px auto 0;display:flex;flex-direction:column;align-items:center;gap:14px}.nav-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:3vw}.nav-btn[_ngcontent-%COMP%]{width:7vw;height:7vw;border-radius:50%;border:none;background:#dcefee;color:#1b5551;font-size:7vw;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1;padding:0;cursor:pointer;font-weight:700;box-shadow:0 8px 18px #0000000f;transition:transform .08s ease}.nav-btn[_ngcontent-%COMP%]:active{transform:scale(.98)}.nav-btn[_ngcontent-%COMP%]:disabled{opacity:.5;cursor:not-allowed}.nav-center[_ngcontent-%COMP%]{display:inline-flex;align-items:baseline;gap:8px}.nav-letter[_ngcontent-%COMP%]{font-size:5vw;font-weight:900;color:#3aaea8}.nav-count[_ngcontent-%COMP%]{font-size:14px;color:#667b79;font-weight:600}@media (max-width: 980px){.nav-btn[_ngcontent-%COMP%]{width:56px;height:56px;font-size:28px}}.alpha-row[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:900px}.alpha-pill[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:50%;border:none;background:#dfeeee;color:#3a5a58;font-weight:700;cursor:pointer;font-size:13px}.alpha-pill.active[_ngcontent-%COMP%]{background:#49b6ae;color:#fff;box-shadow:0 6px 14px #00000014}@media (max-width: 1100px){.pp-main[_ngcontent-%COMP%]{grid-template-columns:260px 320px 1fr}}@media (max-width: 980px){.pp-main[_ngcontent-%COMP%]{grid-template-columns:1fr}.pp-left[_ngcontent-%COMP%], .pp-center[_ngcontent-%COMP%], .pp-right[_ngcontent-%COMP%]{justify-content:center}.connector[_ngcontent-%COMP%]{display:none}.feedback-card[_ngcontent-%COMP%]{width:100%;max-width:520px}}.gauge-wrapper[_ngcontent-%COMP%]{position:relative;width:20vw;height:10vw}.gauge[_ngcontent-%COMP%]{position:absolute;left:50%;top:0;transform:translate(-50%);width:100%;height:100%;border-radius:260px 260px 0 0;overflow:hidden;background:#f3f3f3;box-shadow:0 4px 10px #00000040 inset}.gauge-arc[_ngcontent-%COMP%]{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 270deg,#e53935 0deg 45deg,#fb8c00 45deg 90deg,#fbc02d 90deg 135deg,#43a047 135deg 180deg,transparent 180deg 360deg);height:20vw}.mic-badge[_ngcontent-%COMP%]{position:absolute;bottom:-.3vw;left:50%;transform:translate(-50%,35%);width:3vw;height:3vw;border-radius:50%;background:#000;box-shadow:0 8px 18px #0006;display:flex;align-items:center;justify-content:center}.score-span[_ngcontent-%COMP%]{color:#fff;font-size:1vw;font-weight:700}.notepad[_ngcontent-%COMP%]{display:flex;align-items:center}.user-guide-close-icon[_ngcontent-%COMP%]{position:fixed;top:3vw;right:4vw;background:#009688;border:none;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2vw;color:#000;cursor:pointer;z-index:2010;box-shadow:0 2px 8px #5d91c32e;transition:background .2s,color .2s}.teacher-media[_ngcontent-%COMP%]{width:20vw;max-width:260px;min-width:140px;aspect-ratio:3 / 4;position:relative;overflow:hidden;display:block}.teacher-media__img[_ngcontent-%COMP%], .teacher-media__video[_ngcontent-%COMP%]{width:100%;height:100%;display:block;border-radius:1vw;border:2px solid #ccc;object-fit:cover}.teacher-media__video[_ngcontent-%COMP%]{background-color:#000}.listen-img[_ngcontent-%COMP%]{width:4.8vw;height:4.8vw;border-radius:50%;display:inline-block;object-fit:contain;cursor:pointer;-webkit-user-select:none;user-select:none;margin-right:1vw;box-shadow:0 10px 30px #0006;transition:all .3s ease;border:none}.listen-img[_ngcontent-%COMP%]:active{transform:scale(.98)}.listen-img.playing[_ngcontent-%COMP%], .listen-img[aria-pressed=true][_ngcontent-%COMP%]{filter:brightness(.95);box-shadow:0 18px 30px #00000029}.listen-img[_ngcontent-%COMP%]:focus{outline:3px solid rgba(58,174,168,.18);outline-offset:3px}@media (max-width: 980px){.listen-img[_ngcontent-%COMP%]{width:72px;height:72px;padding:14px}}@keyframes _ngcontent-%COMP%_needleOscillate{0%{transform:translate(-50%) rotate(-70deg)}25%{transform:translate(-50%) rotate(-20deg)}50%{transform:translate(-50%) rotate(60deg)}75%{transform:translate(-50%) rotate(-10deg)}to{transform:translate(-50%) rotate(-70deg)}}.needle[_ngcontent-%COMP%]{position:absolute;bottom:0vw;left:50%;width:.7vw;height:8vw;background:#333;transform:translate(-50%) rotate(var(--angle, -90deg));transform-origin:50% 100%;transition:transform .7s cubic-bezier(.2,.9,.2,1);border-radius:10px;box-shadow:0 2px 6px #00000080}.needle.oscillate[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_needleOscillate 1.2s ease-in-out infinite;transition:none}.container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;gap:40px}.arrow[_ngcontent-%COMP%]{font-size:4rem;background-color:#e0f7fa;border:none;width:92px;height:92px;border-radius:50%;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:4px 4px 15px #0003;color:#00796b;transition:background-color .3s,color .3s}.arrow[_ngcontent-%COMP%]:disabled{background-color:#cfd8dc;color:#90a4ae;cursor:not-allowed;box-shadow:none}.center-text[_ngcontent-%COMP%]{font-size:5rem;font-weight:700;color:#00796b;width:4vw;text-align:center}.image-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;height:100vh}.round-image[_ngcontent-%COMP%]{width:4.8vw;height:4.8vw;border-radius:50%;box-shadow:0 10px 30px #0006;transition:all .3s ease;cursor:pointer}.round-image[_ngcontent-%COMP%]:active{transform:scale(1.1)}.apple-anim[_ngcontent-%COMP%]{transform-origin:50% 50%;animation:_ngcontent-%COMP%_appleZoom 2.8s ease-in-out infinite alternate;will-change:transform}@keyframes _ngcontent-%COMP%_appleZoom{0%{transform:scale(.8)}to{transform:scale(1.06)}}@media (prefers-reduced-motion: reduce){.apple-anim[_ngcontent-%COMP%]{animation:none;transform:none}}.progress-btn[_ngcontent-%COMP%]{width:4.8vw;height:4.8vw;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;padding:0;border:none;background:#f07b48;position:relative;cursor:pointer;box-shadow:0 10px 30px #0006;transition:transform .12s ease,box-shadow .12s ease}.progress-btn[_ngcontent-%COMP%]:active{transform:scale(.98)}.progress-btn.recording[_ngcontent-%COMP%]{filter:brightness(.95);animation:_ngcontent-%COMP%_recPulse 1s infinite}.progress-ring[_ngcontent-%COMP%]{width:100%;height:100%;transform:rotate(-90deg);display:block}.progress-ring__background[_ngcontent-%COMP%]{stroke:#eee;opacity:1}.progress-ring__bar[_ngcontent-%COMP%]{stroke:#3aaea8;transition:stroke-dashoffset .12s linear}.label[_ngcontent-%COMP%]{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;font-weight:700;color:#222;font-size:2.5rem}.seconds[_ngcontent-%COMP%]{color:#fff;padding:4px 8px;border-radius:6px}.finished-dot[_ngcontent-%COMP%]{color:#d32f2f;font-size:1.4rem}.fb-board[_ngcontent-%COMP%]{position:absolute;top:15.3vw;right:3.6vw}.fb-board[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;display:block}.center-text1[_ngcontent-%COMP%]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:20px;font-weight:700;text-align:center;width:14vw}.video-frame[_ngcontent-%COMP%]{width:100%;aspect-ratio:16 / 9;border-radius:1vw;overflow:hidden;background:#000;box-shadow:0 2px 6px #0000002e,0 12px 24px #00000029,0 24px 48px #0000001f}.video-frame.square[_ngcontent-%COMP%]{aspect-ratio:1 / 1}.video-frame[_ngcontent-%COMP%] > video[_ngcontent-%COMP%]{width:100%;height:100%;display:block;object-fit:cover}"]})}}return t})();var Xi=(()=>{class t{constructor(e,i){this.http=e,this.router=i,this.apiUrl=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space":"http://localhost:5000",this.loggedInSubject=new Ge(!1),this.isLoggedIn$=this.loggedInSubject.asObservable()}isLoggedIn(){return this.loggedInSubject.value}setLoggedIn(e){this.loggedInSubject.next(e)}login(e,i){return this.http.post(`${this.apiUrl}/login`,{username:e,password:i},{withCredentials:!0})}startAutoRefresh(){this.refreshIntervalId||(this.refreshIntervalId=setInterval(()=>{this.refreshAccessToken()},12*60*1e3))}clearAutoRefresh(){clearInterval(this.refreshIntervalId),this.refreshIntervalId=null}refreshAccessToken(){this.http.post(`${this.apiUrl}/refresh`,{},{withCredentials:!0}).subscribe(e=>{console.log("\u2705 Access token refreshed:",e.access_token)},e=>{console.error("\u274C Refresh failed:",e),e.status===401&&e.error&&(e.error.message==="Refresh token has expired"||e.error.message==="Invalid refresh token")&&(this.clearTokens(),this.router.navigate(["/auth"]))})}logout(){return console.log("\u{1F527} Sending logout request with credentials"),this.http.post(`${this.apiUrl}/logout`,{},{withCredentials:!0}).pipe(Le(e=>{console.log("\u{1F519} Response from backend:",e),this.clearTokens(),this.clearAutoRefresh(),this.setLoggedIn(!1)}),Ke(e=>(console.error("\u274C Error from backend:",e),this.clearTokens(),this.clearAutoRefresh(),this.setLoggedIn(!1),xt(()=>e))))}clearTokens(){document.cookie="access_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;",document.cookie="refresh_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;",this.clearAutoRefresh()}getAccessToken(){let e=document.cookie.split("; ");for(let i of e)if(i.startsWith("access_token="))return i.split("=")[1];return null}saveTokens(e,i){localStorage.setItem("access_token",e),localStorage.setItem("refresh_token",i)}checkSession(){return this.http.get(`${this.apiUrl}/check-auth`,{withCredentials:!0}).pipe(Le(e=>(console.log("\u2705 Session valid:",e),this.setLoggedIn(!0),this.startAutoRefresh(),!0)),Ke(e=>e.status===401?(console.warn("\u{1F504} Access token expired. Trying to refresh..."),this.http.post(`${this.apiUrl}/refresh`,{},{withCredentials:!0}).pipe(Le(i=>{console.log("\u2705 Token refreshed during checkSession."),this.setLoggedIn(!0),this.startAutoRefresh()}),Ke(i=>(console.error("\u274C Refresh token failed during checkSession.",i),this.setLoggedIn(!1),j(!1))))):(console.error("\u274C Unknown error during checkSession",e),this.setLoggedIn(!1),j(!1))))}static{this.\u0275fac=function(i){return new(i||t)(I(De),I(Pe))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function HT(t,n){if(t&1){let e=F();c(0,"div")(1,"div",19),y("click",function(){x(e);let r=_(3);return C(r.closePrivacyPopup())}),a(),c(2,"div",20)(3,"button",21),y("click",function(){x(e);let r=_(3);return C(r.closePrivacyPopup())}),l(4,"\xD7"),a(),c(5,"ul",22)(6,"li",23)(7,"b"),l(8,"Privacy Policy \u2014 Py-learn"),a(),v(9,"br"),c(10,"ul",24)(11,"li")(12,"b"),l(13,"Last Updated:"),a(),l(14," November 2025"),a(),c(15,"li")(16,"b"),l(17,"Who we are:"),a(),l(18," Py-learn is operated by "),c(19,"b"),l(20,"Pykara Technologies Private Limited"),a(),l(21," (\u201Cwe\u201D, \u201Cus\u201D, \u201Cour\u201D), the data controller for personal data processed through the platform."),a(),c(22,"li")(23,"b"),l(24,"Contact:"),a(),c(25,"a",25),l(26,"info@pykara.ai"),a()()()(),c(27,"li")(28,"b"),l(29,"Overview"),a(),v(30,"br"),c(31,"ul",24)(32,"li"),l(33,"We collect limited personal data to deliver an AI-powered e-learning experience (chatbots, video lessons, quizzes) and to improve learning outcomes."),a(),c(34,"li"),l(35,"We comply with applicable laws, including GDPR where relevant to users in the EEA/UK."),a()()(),c(36,"li")(37,"b"),l(38,"Information We Collect"),a(),v(39,"br"),c(40,"ul",24)(41,"li")(42,"b"),l(43,"Account Data:"),a(),l(44," name, email, password (hashed), profile details."),a(),c(45,"li")(46,"b"),l(47,"Learning Data:"),a(),l(48," enrolled courses, lessons viewed, quiz results, progress analytics, feedback."),a(),c(49,"li")(50,"b"),l(51,"Technical Data:"),a(),l(52," device/browser info, IP address, timestamps, logs, approximate location from IP."),a(),c(53,"li")(54,"b"),l(55,"Cookies & Similar Tech:"),a(),l(56," preferences, session management, analytics (see \u201CCookies\u201D)."),a()()(),c(57,"li")(58,"b"),l(59,"Purposes of Processing"),a(),v(60,"br"),c(61,"ul",24)(62,"li"),l(63,"Provide and secure the service; authenticate users; maintain accounts."),a(),c(64,"li"),l(65,"Personalise content, recommendations, and difficulty levels."),a(),c(66,"li"),l(67,"Measure performance, improve features, and fix issues."),a(),c(68,"li"),l(69,"Send essential service communications (policy changes, security notices)."),a(),c(70,"li"),l(71,"Comply with legal obligations and enforce Terms."),a()()(),c(72,"li")(73,"b"),l(74,"Legal Bases (GDPR)"),a(),v(75,"br"),c(76,"ul",24)(77,"li")(78,"b"),l(79,"Contract necessity:"),a(),l(80," to deliver core features you request."),a(),c(81,"li")(82,"b"),l(83,"Legitimate interests:"),a(),l(84," service improvement, security, fraud prevention (balanced against your rights)."),a(),c(85,"li")(86,"b"),l(87,"Consent:"),a(),l(88," non-essential cookies, optional marketing (you can withdraw at any time)."),a(),c(89,"li")(90,"b"),l(91,"Legal obligation:"),a(),l(92," records, compliance, and requests from authorities where required by law."),a()()(),c(93,"li")(94,"b"),l(95,"Automated Processing & AI"),a(),v(96,"br"),c(97,"ul",24)(98,"li"),l(99,"AI is used to generate explanations, hints, and recommendations. We do not make decisions with legal or similarly significant effects solely by automated means."),a()()(),c(100,"li")(101,"b"),l(102,"Third-Party Processors & Transfers"),a(),v(103,"br"),c(104,"ul",24)(105,"li"),l(106,"We use reputable vendors for AI inference, hosting, analytics, email delivery, and content streaming. They act under contracts and process data only on our instructions."),a(),c(107,"li"),l(108,"Where data is transferred outside your country (including outside the EEA/UK), appropriate safeguards are applied (e.g., Standard Contractual Clauses)."),a()()(),c(109,"li")(110,"b"),l(111,"Data Sharing"),a(),v(112,"br"),c(113,"ul",24)(114,"li"),l(115,"With service providers under confidentiality and security obligations."),a(),c(116,"li"),l(117,"For legal reasons (court orders, to protect users and our rights, prevent fraud or abuse)."),a(),c(118,"li"),l(119,"Business changes (merger, acquisition); we will ensure comparable protections or notify you of material changes."),a()()(),c(120,"li")(121,"b"),l(122,"Data Security & Retention"),a(),v(123,"br"),c(124,"ul",24)(125,"li"),l(126,"We apply technical and organisational measures (encryption at rest/in transit, access controls, monitoring)."),a(),c(127,"li"),l(128,"We retain personal data only as long as needed for the purposes above or as required by law. "),c(129,"b"),l(130,"Inactive accounts may be deleted after 24 months."),a()()()(),c(131,"li")(132,"b"),l(133,"Cookies & Similar Technologies"),a(),v(134,"br"),c(135,"ul",24)(136,"li")(137,"b"),l(138,"Essential:"),a(),l(139," login/session, security, load balancing."),a(),c(140,"li")(141,"b"),l(142,"Preferences:"),a(),l(143," UI settings, language, playback choices."),a(),c(144,"li")(145,"b"),l(146,"Analytics:"),a(),l(147," usage statistics to improve features."),a(),c(148,"li"),l(149,"You may control cookies via your browser. Disabling some cookies may affect functionality."),a()()(),c(150,"li")(151,"b"),l(152,"Children\u2019s Privacy"),a(),v(153,"br"),c(154,"ul",24)(155,"li"),l(156,"The service is intended for users aged 13+. If we learn that data from a child under 13 was collected without appropriate consent, we will delete it."),a()()(),c(157,"li")(158,"b"),l(159,"Your Rights (EEA/UK where applicable)"),a(),v(160,"br"),c(161,"ul",24)(162,"li"),l(163,"Access, rectify, erase, restrict processing, object, and data portability."),a(),c(164,"li"),l(165,"Withdraw consent (for consent-based processing) without affecting prior lawful processing."),a(),c(166,"li"),l(167,"Lodge a complaint with a supervisory authority. We encourage contacting us first at "),c(168,"a",25),l(169,"info@pykara.ai"),a(),l(170,"."),a()()(),c(171,"li")(172,"b"),l(173,"Data Breach Notification"),a(),v(174,"br"),c(175,"ul",24)(176,"li"),l(177,"We will notify affected users and relevant authorities when legally required."),a()()(),c(178,"li")(179,"b"),l(180,"Changes to this Policy"),a(),v(181,"br"),c(182,"ul",24)(183,"li"),l(184,"We may update this policy. The \u201CLast Updated\u201D date reflects the latest version; material changes may be additionally notified in-app or by email."),a()()(),c(185,"li")(186,"b"),l(187,"Contact"),a(),v(188,"br"),c(189,"ul",24)(190,"li"),l(191,"Email: "),c(192,"a",25),l(193,"info@pykara.ai"),a()(),c(194,"li"),l(195,"Registered Office: Pykara Technologies Private Limited, Chennai, Tamil Nadu, India"),a()()()()()()}}function $T(t,n){if(t&1){let e=F();c(0,"div")(1,"div",19),y("click",function(){x(e);let r=_(3);return C(r.closeTermsPopup())}),a(),c(2,"div",26)(3,"button",21),y("click",function(){x(e);let r=_(3);return C(r.closeTermsPopup())}),l(4,"\xD7"),a(),c(5,"ul",22)(6,"li",27)(7,"b"),l(8,"Terms & Conditions \u2014 Py-learn"),a(),v(9,"br"),c(10,"ul",24)(11,"li")(12,"b"),l(13,"Last Updated:"),a(),l(14," November 2025"),a(),c(15,"li"),l(16,"By using Py-learn, you agree to these Terms and our Privacy Policy."),a()()(),c(17,"li")(18,"b"),l(19,"Eligibility & Accounts"),a(),v(20,"br"),c(21,"ul",24)(22,"li"),l(23,"You must be 13+ (or the age of digital consent in your region). Users under 18 require parental/guardian consent."),a(),c(24,"li"),l(25,"You are responsible for the accuracy of your information and for safeguarding your credentials."),a()()(),c(26,"li")(27,"b"),l(28,"Permitted Use & Prohibited Conduct"),a(),v(29,"br"),c(30,"ul",24)(31,"li"),l(32,"Use the service for lawful, educational purposes only."),a(),c(33,"li"),l(34,"Do not attempt unauthorised access, disrupt the service, reverse engineer components, or misuse AI features."),a(),c(35,"li"),l(36,"International users must comply with local laws."),a()()(),c(37,"li")(38,"b"),l(39,"Content & Intellectual Property"),a(),v(40,"br"),c(41,"ul",24)(42,"li"),l(43,"All software, UI, designs, text, graphics, videos, and datasets are owned by Pykara Technologies or its licensors."),a(),c(44,"li"),l(45,"Copying, redistribution, or commercial use requires prior written consent."),a(),c(46,"li"),l(47,"When you submit content (e.g., answers, uploads), you grant us a non-exclusive, royalty-free licence to host and process it to operate and improve the service (including for AI model quality and safety, where allowed by law and your settings)."),a()()(),c(48,"li")(49,"b"),l(50,"AI Outputs & Educational Disclaimer"),a(),v(51,"br"),c(52,"ul",24)(53,"li"),l(54,"AI responses support learning but may contain errors. Verify outputs before relying on them; they are not professional advice."),a()()(),c(55,"li")(56,"b"),l(57,"Fees, Trials & Refunds"),a(),v(58,"br"),c(59,"ul",24)(60,"li"),l(61,"Some features may be paid (subscriptions or one-off fees). Prices and taxes are shown at checkout."),a(),c(62,"li"),l(63,"Payments are processed securely by third-party providers. Unless required by law, payments are non-refundable."),a()()(),c(64,"li")(65,"b"),l(66,"Third-Party Links & Services"),a(),v(67,"br"),c(68,"ul",24)(69,"li"),l(70,"We may link to third-party content or integrate with providers (hosting, analytics, AI). We are not responsible for third-party terms or policies."),a()()(),c(71,"li")(72,"b"),l(73,"Termination & Suspension"),a(),v(74,"br"),c(75,"ul",24)(76,"li"),l(77,"We may suspend or terminate access for violations, fraud, or security risks. You may request account closure at any time."),a()()(),c(78,"li")(79,"b"),l(80,"Warranties & Liability"),a(),v(81,"br"),c(82,"ul",24)(83,"li"),l(84,"The service is provided \u201Cas is\u201D and \u201Cas available\u201D without warranties of any kind."),a(),c(85,"li"),l(86,"To the fullest extent permitted by law, we are not liable for indirect, incidental, special, consequential, or punitive damages."),a()()(),c(87,"li")(88,"b"),l(89,"Indemnity"),a(),v(90,"br"),c(91,"ul",24)(92,"li"),l(93,"You agree to indemnify and hold us harmless from claims arising from your misuse of the service or breach of these Terms."),a()()(),c(94,"li")(95,"b"),l(96,"Changes to the Service or Terms"),a(),v(97,"br"),c(98,"ul",24)(99,"li"),l(100,"We may modify features or these Terms. Continued use after changes indicates acceptance; material updates may be additionally notified in-app or by email."),a()()(),c(101,"li")(102,"b"),l(103,"Governing Law & Disputes"),a(),v(104,"br"),c(105,"ul",24)(106,"li"),l(107,"Governing law: India. Exclusive jurisdiction: courts in Chennai, Tamil Nadu, India."),a()()(),c(108,"li")(109,"b"),l(110,"Contact"),a(),v(111,"br"),c(112,"ul",24)(113,"li"),l(114,"Support & legal queries: "),c(115,"a",25),l(116,"info@pykara.ai"),a()(),c(117,"li"),l(118,"Registered Office: Pykara Technologies Private Limited, Chennai, Tamil Nadu, India"),a()()()()()()}}function WT(t,n){if(t&1){let e=F();Me(0),c(1,"p",3),l(2,"\xA9 2025 Pykara Technologies Pvt. Ltd. All rights reserved."),a(),c(3,"a",4),l(4,"Contact Us"),a(),l(5," | "),c(6,"a",5),y("click",function(r){x(e);let o=_(2);return C(o.openPrivacyPopup(r))}),l(7,"Privacy Policy"),a(),l(8," | "),c(9,"a",5),y("click",function(r){x(e);let o=_(2);return C(o.openTermsPopup(r))}),l(10,"Terms & Conditions"),a(),c(11,"div",6)(12,"a",7),v(13,"i",8),a(),c(14,"a",9),v(15,"i",10),a(),c(16,"a",11),v(17,"i",12),a(),c(18,"a",13),v(19,"i",14),a(),c(20,"a",15),v(21,"i",16),a()(),k(22,HT,196,0,"div",0)(23,$T,119,0,"div",0),c(24,"div",17)(25,"a",18),l(26,"www.pykara.ai"),a()(),Ie()}if(t&2){let e=_(2);f(12),g("href",e.brandService.socialLinksCurrent.linkedin,H),f(2),g("href",e.brandService.socialLinksCurrent.youtube,H),f(2),g("href",e.brandService.socialLinksCurrent.facebook,H),f(2),g("href",e.brandService.socialLinksCurrent.instagram,H),f(2),g("href",e.brandService.socialLinksCurrent.website,H),f(2),g("ngIf",e.showPrivacyPopup),f(),g("ngIf",e.showTermsPopup)}}function qT(t,n){if(t&1){let e=F();c(0,"div")(1,"div",19),y("click",function(){x(e);let r=_(3);return C(r.closePrivacyPopup())}),a(),c(2,"div",20)(3,"button",21),y("click",function(){x(e);let r=_(3);return C(r.closePrivacyPopup())}),l(4,"\xD7"),a(),c(5,"ul",22)(6,"li",23)(7,"b"),l(8,"Privacy Policy \u2014 Majema"),a(),v(9,"br"),c(10,"ul",24)(11,"li")(12,"b"),l(13,"What personal data is collected?"),a(),v(14,"br"),l(15,"Majemaf\xF6rlaget AB processes personal data that you provide to us. Personal data that will be processed includes, for example, name, social security number, school affiliation, role, interests related to teaching, address, e-mail address and telephone number. You provide the personal data yourself in connection with ordering, expressions of interest, by telephone or when visiting teaching material exhibitions, school visits and teacher meetings. On our website we use cookies and save your IP address."),a(),c(16,"li"),l(17,"It is voluntary to provide your personal data, but in some cases we cannot provide you with the service and/or product you have ordered if you do not provide your personal data."),a(),c(18,"li"),l(19,"We do not collect any personal information from third-party companies. Advertising may occur on external websites and then we can obtain statistics that are not personal through cookies."),a(),c(20,"li")(21,"b"),l(22,"Purposes of personal data processing"),a(),v(23,"br"),l(24,"Your personal data will be processed in order for us to fulfill our commitments to you. We may also process your data for the purposes below as well as for our market and customer analyses and statistics in order to provide you with a better offer and better service. We may, unless you have objected to direct marketing in writing, also use your personal data to provide various offers of services and/or products from us. You may unsubscribe from receiving such offers at any time with each marketing message. If we process data for other purposes, we will inform you of this."),a(),c(25,"li")(26,"b"),l(27,"Storage of personal data"),a(),v(28,"br"),l(29,"We may transfer your data to IT service providers and other service providers who then process the data on our behalf. If we transfer your data outside the EU, we ensure that we have a legal basis for such transfer. This can be done through the EU Commission's standard contractual clauses. Majema takes the greatest possible security measures to protect your personal data. All identifiable personal data is subject to access restrictions to prevent unauthorized access, alteration or misuse. We will store your data for as long as necessary to fulfill our obligations to you."),a(),c(30,"li")(31,"b"),l(32,"Our legal basis"),a(),v(33,"br"),l(34,"We process your data based on our legitimate interest or to enable us to fulfill our obligations to you."),a(),c(35,"li")(36,"b"),l(37,"Cookies \u2013 Information collected via www.majema.se"),a(),v(38,"br"),l(39,"www.majema.se is managed by Majemaf\xF6rlaget AB. Majema's website uses cookies to give you access to additional functions, such as previous orders and to simplify logging into your account. You can refuse the use of cookies through your browser settings. Majema uses analysis tools to get a picture of how visitors use our websites, in order to improve the content, navigation and structure of the websites. The analysis tools use JavaScript and cookies and the information generated by these through your use of the website (including your IP address) will be forwarded to the analysis tools' service providers and may be stored on servers outside the EU. The service providers may also transfer this information to third parties if required by law or in cases where a third party processes the information on their behalf. By using Majema's websites without declining third-party cookies, you agree that the service providers process your data in the manner and for the purposes described above. If you do not want your visits to Majema's website to be included in the service providers' statistics, there is an add-on that you can install in your browser."),a(),c(40,"li")(41,"b"),l(42,"Your rights"),a(),v(43,"br"),l(44,'According to applicable data protection legislation, you have the right to request that incorrect personal data be corrected, blocked, restricted or deleted. In addition, you can also object to processing or request that your data be transferred to another data controller, so-called data portability. You also have the right to request written information, a so-called register extract, about the personal data we process about you once a year, free of charge, by sending a written signed application to our address below. Mark the application with "Request for register extract". If you are dissatisfied with our processing, you have the right to file a complaint with the Swedish Data Protection Authority.'),a(),c(45,"li")(46,"b"),l(47,"Contact information"),a(),v(48,"br"),l(49,"Majemaf\xF6rlaget AB, 556414-9135, is the data controller for the processing of your personal data that you provide when filling out contact forms on the website. Address: Majemaf\xF6rlaget AB, Box 4016, 131 04 Nacka"),a()()()()()()}}function GT(t,n){if(t&1){let e=F();c(0,"div")(1,"div",19),y("click",function(){x(e);let r=_(3);return C(r.closeTermsPopup())}),a(),c(2,"div",26)(3,"button",21),y("click",function(){x(e);let r=_(3);return C(r.closeTermsPopup())}),l(4,"\xD7"),a(),c(5,"ul",22)(6,"li",27)(7,"b"),l(8,"Terms & Conditions \u2014 Majema"),a(),v(9,"br"),c(10,"ul",24)(11,"li"),l(12,"By using Majema, you agree to these Terms and our Privacy Policy."),a()()(),c(13,"li")(14,"b"),l(15,"System requirements"),a(),v(16,"br"),c(17,"ul",24)(18,"li"),l(19,"Majema's digital learning materials work on computers, tablets and interactive whiteboards. Our digital learning materials are based on HTML5 and JavaScript. This means that older versions of browsers are not always fully supported. We recommend using an updated version of the Chrome browser to best experience our digital learning materials."),a(),c(20,"li"),l(21,"Here you can download "),c(22,"a",30),l(23,"Google Chrome for free"),a(),l(24,"."),a(),c(25,"li"),l(26," For the best user experience, you should make sure these four points are met: "),c(27,"ol",31)(28,"li"),l(29,"Make sure your browser is set to 100% zoom. This is important for the content to look correct on the screen."),a(),c(30,"li"),l(31,"Update your browser."),a(),c(32,"li"),l(33,"Clear your cache. Select: settings, privacy and security, clear browsing data. (If clearing the cache isn't enough, you can open a new incognito window in Chrome and log in from there.)"),a(),c(34,"li"),l(35,"If you are using a tablet \u2013 update your operating system. This is done under settings."),a()()(),c(36,"li")(37,"b"),l(38,"Web browser"),a(),v(39,"br"),l(40," We recommend that you always update your browser to the latest version."),v(41,"br"),l(42," We test our digital learning materials against the following browsers: Chrome, Edge, Safari and Firefox. "),a(),c(43,"li")(44,"b"),l(45,"License management"),a(),v(46,"br"),l(47," All of our websites are licensed to apply to one teacher and class for one year from the date of activation."),v(48,"br"),l(49," If there is a student website, it is activated at the same time as you activate the teacher website."),v(50,"br"),l(51," To extend a license, you need to make a new purchase, in the webshop, through a retailer or with our customer service."),v(52,"br"),l(53," Should a license need to be transferred from one teacher to another, please contact our customer service and we will help you with this."),v(54,"br"),l(55," You can change your account details yourself under the My Account tab when you are logged in. "),a(),c(56,"li")(57,"b"),l(58,"Operating system"),a(),v(59,"br"),l(60," We recommend that you always update your operating system to the latest version."),v(61,"br"),c(62,"ul",32)(63,"li"),l(64,"Windows 7, 8, 10, 11"),a(),c(65,"li"),l(66,"Chrome OS (Chromebook)"),a(),c(67,"li"),l(68,"Mac OS (11 and later)"),a(),c(69,"li"),l(70,"Android tablet 11 or later (with Chrome browser)"),a(),c(71,"li"),l(72,"iOS 14 and later (iPad operating system)"),a()(),l(73," Majema does not guarantee support for devices and operating systems that are no longer updated by the manufacturer. "),a()()()()()()}}function QT(t,n){if(t&1){let e=F();Me(0),c(1,"p"),l(2,"\xA9 2025 Majemaf\xF6rlaget. All rights reserved."),a(),c(3,"a",28),l(4,"Contact Us"),a(),l(5," | "),c(6,"a",5),y("click",function(r){x(e);let o=_(2);return C(o.openPrivacyPopup(r))}),l(7,"Privacy Policy"),a(),l(8," | "),c(9,"a",5),y("click",function(r){x(e);let o=_(2);return C(o.openTermsPopup(r))}),l(10,"Terms & Conditions"),a(),c(11,"div",6)(12,"a",7),v(13,"i",8),a(),c(14,"a",9),v(15,"i",10),a(),c(16,"a",11),v(17,"i",12),a(),c(18,"a",13),v(19,"i",14),a(),c(20,"a",15),v(21,"i",16),a()(),k(22,qT,50,0,"div",0)(23,GT,74,0,"div",0),c(24,"div",17)(25,"a",29),l(26,"www.majema.se"),a()(),Ie()}if(t&2){let e=_(2);f(12),g("href",e.brandService.socialLinksCurrent.linkedin,H),f(2),g("href",e.brandService.socialLinksCurrent.youtube,H),f(2),g("href",e.brandService.socialLinksCurrent.facebook,H),f(2),g("href",e.brandService.socialLinksCurrent.instagram,H),f(2),g("href",e.brandService.socialLinksCurrent.website,H),f(2),g("ngIf",e.showPrivacyPopup),f(),g("ngIf",e.showTermsPopup)}}function YT(t,n){if(t&1&&(c(0,"footer"),Me(1,1),k(2,WT,27,7,"ng-container",2)(3,QT,27,7,"ng-container",2),Ie(),a()),t&2){let e=_();f(),g("ngSwitch",e.brandService.name),f(),g("ngSwitchCase","Py-Learn"),f(),g("ngSwitchCase","MJ-Learn")}}var xd=(()=>{class t{constructor(e){this.brandService=e,this.showPrivacyPopup=!1,this.showTermsPopup=!1}openPrivacyPopup(e){e.preventDefault(),this.showPrivacyPopup=!0}closePrivacyPopup(){this.showPrivacyPopup=!1}openTermsPopup(e){e.preventDefault(),this.showTermsPopup=!0}closeTermsPopup(){this.showTermsPopup=!1}static{this.\u0275fac=function(i){return new(i||t)(M(bn))}}static{this.\u0275cmp=$({type:t,selectors:[["app-footer"]],standalone:!0,features:[ye],decls:1,vars:1,consts:[[4,"ngIf"],[3,"ngSwitch"],[4,"ngSwitchCase"],[1,"footer"],["href","https://pykara.ai/contact-us/","target","blank"],["href","#",3,"click"],[1,"social-icons"],["target","_blank","aria-label","LinkedIn",1,"social-icon","linkedin",3,"href"],[1,"fab","fa-linkedin-in"],["target","_blank","aria-label","YouTube",1,"social-icon","youtube",3,"href"],[1,"fab","fa-youtube"],["target","_blank","aria-label","Facebook",1,"social-icon","facebook",3,"href"],[1,"fab","fa-facebook-f"],["target","_blank","aria-label","Instagram",1,"social-icon","instagram",3,"href"],[1,"fab","fa-instagram"],["target","_blank","aria-label","Website",1,"social-icon","website",3,"href"],[1,"fas","fa-globe"],[1,"footer-watermark-row"],["href","https://www.pykara.ai","target","_blank",1,"footer-watermark"],[1,"user-guide-overlay",3,"click"],["role","dialog","aria-modal","true","aria-labelledby","privacyTitle",1,"user-guide-modal"],["aria-label","Close",1,"user-guide-close-icon",3,"click"],[2,"text-align","justify","font-size","15px"],["id","privacyTitle"],[2,"list-style","unset","margin-left","1.25rem"],["href","mailto:info@pykara.ai"],["role","dialog","aria-modal","true","aria-labelledby","termsTitle",1,"user-guide-modal"],["id","termsTitle"],["href","https://www.majema.se/pages/kontakta-kundtjanst","target","_blank"],["href","https://www.majema.se","target","_blank",1,"footer-watermark"],["href","https://www.google.com/chrome/","target","_blank"],[2,"margin-left","1.5rem"],[2,"list-style","disc","margin-left","1.5rem"]],template:function(i,r){i&1&&k(0,YT,4,3,"footer",0),i&2&&g("ngIf",r.brandService.showFooter)},dependencies:[ze,Fe,Cs,_c],styles:[".user-guide-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background:#00000059;z-index:2000}.user-guide-modal[_ngcontent-%COMP%]{position:fixed;top:52%;left:50%;transform:translate(-50%,-50%);height:38vw;width:50vw;background:linear-gradient(135deg,#fff 80%,#e3fcec);color:#222;box-shadow:0 12px 40px #5d91c338;border-radius:18px;padding:1vw;z-index:2001;overflow:visible;border:10px solid var(--main-accent-color);box-sizing:border-box;font-weight:lighter}.user-guide-modal[_ngcontent-%COMP%] > ul[_ngcontent-%COMP%], .user-guide-modal[_ngcontent-%COMP%] > ol[_ngcontent-%COMP%]{max-height:34.6vw;overflow-y:auto;padding-right:.5vw;margin:0}.user-guide-close-icon[_ngcontent-%COMP%]{top:-22px;right:-22px}.user-guide-modal[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{line-height:1.7;font-size:1.1vw;background:#5d91c312;padding:.5vw;box-shadow:0 2px 8px #5d91c30f}.user-guide-modal[_ngcontent-%COMP%] li[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{color:#2b6296;font-size:1.15vw}.user-guide-modal[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#137ec4;text-decoration:underline;font-weight:600}.user-guide-modal[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{color:#009688;text-decoration:underline}footer[_ngcontent-%COMP%]{background:linear-gradient(to right,#011022,#01030a);color:#fff;padding:15px 10px;text-align:center;width:100%;position:relative;font-size:18px;font-weight:700;font-family:Inter,Segoe UI,-apple-system,BlinkMacSystemFont,sans-serif}p.footer[_ngcontent-%COMP%]{line-height:1;margin-top:1vw}footer[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#fff;text-decoration:none;margin:0 5px;margin-bottom:.5vw;display:inline-block}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%]{margin-top:.5vw;display:flex;justify-content:center;gap:28px;flex-wrap:wrap}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%] .social-icon[_ngcontent-%COMP%]{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background-color:#fff;color:#38bdf8;font-size:18px;box-shadow:0 0 0 1px #214055,0 4px 14px #0006;transition:background-color .25s,color .25s,transform .25s,box-shadow .25s;text-decoration:none}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%] .social-icon[_ngcontent-%COMP%]:hover{background-color:#38bdf8;color:#fff;transform:translateY(-4px);box-shadow:0 6px 20px #38bdf8aa,0 0 0 2px #38bdf8 inset}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%] .social-icon.facebook[_ngcontent-%COMP%]{color:#1877f2}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%] .social-icon.youtube[_ngcontent-%COMP%]{color:red}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%] .social-icon.linkedin[_ngcontent-%COMP%]{color:#0a66c2}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%] .social-icon.instagram[_ngcontent-%COMP%]{color:#fd5949}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%] .social-icon.facebook[_ngcontent-%COMP%]:hover{background-color:#1877f2;color:#fff}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%] .social-icon.youtube[_ngcontent-%COMP%]:hover{background-color:red;color:#fff}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%] .social-icon.linkedin[_ngcontent-%COMP%]:hover{background-color:#0a66c2;color:#fff}footer[_ngcontent-%COMP%] .social-icons[_ngcontent-%COMP%] .social-icon.instagram[_ngcontent-%COMP%]:hover{background:radial-gradient(circle at 30% 110%,#fdf497,#fd5949 45%,#d6249f 60%,#285aeb 90%);color:#fff;filter:brightness(1.15);box-shadow:0 6px 22px #fd594999}.footer-watermark-row[_ngcontent-%COMP%]{width:100%;text-align:right;margin-top:-40px}.footer-watermark[_ngcontent-%COMP%]{color:#38bdf8;font-weight:700;text-decoration:underline;font-size:1.1em;transition:color .2s}.footer-watermark[_ngcontent-%COMP%]:hover{color:#137ec4}@media (max-width: 600px){.user-guide-modal[_ngcontent-%COMP%]{width:90vw;height:60vw;border-radius:12px;padding:4vw 2vw 2vw}.user-guide-modal[_ngcontent-%COMP%] > ul[_ngcontent-%COMP%], .user-guide-modal[_ngcontent-%COMP%] > ol[_ngcontent-%COMP%]{max-height:52vw;overflow-y:auto;padding-right:1.5vw}.user-guide-close-icon[_ngcontent-%COMP%]{font-size:6vw;top:2vw;right:2vw;width:6vw;height:6vw;display:flex;align-items:center;justify-content:center;line-height:1}.footer-watermark-row[_ngcontent-%COMP%]{text-align:center;margin-top:8px}}"]})}}return t})();function XT(t,n){if(t&1){let e=F();c(0,"div",33),y("mouseleave",function(){x(e);let r=_(2);return C(r.closeAccountMenu())}),c(1,"div",34)(2,"div",35),l(3),a(),c(4,"div",36)(5,"div",37),l(6),a(),c(7,"div",38),l(8),a()()(),c(9,"div",39),y("click",function(){x(e);let r=_(2);return C(r.goToAccount())}),l(10,"My account"),a(),v(11,"hr"),c(12,"div",39),y("click",function(){x(e);let r=_(2);return C(r.logout())}),l(13,"Logout"),a()()}if(t&2){let e=_(2);f(3),U(e.usernameInitial),f(3),U(e.displayName),f(2),U(e.displayEmail)}}function KT(t,n){if(t&1){let e=F();Me(0),c(1,"div",31),y("click",function(){x(e);let r=_();return C(r.toggleAccountMenu())}),l(2),a(),k(3,XT,14,3,"div",32),Ie()}if(t&2){let e=_();f(),z("title",e.usernameInitial),f(),ne(" ",e.usernameInitial," "),f(),g("ngIf",e.showAccountMenu)}}function JT(t,n){t&1&&(c(0,"a",40),v(1,"i",41),a()),t&2&&z("title","Login")}function eA(t,n){if(t&1){let e=F();c(0,"div",42),y("click",function(){let r=x(e).$implicit;return C(r.action())})("keydown.enter",function(){let r=x(e).$implicit;return C(r.action())})("keydown.space",function(){let r=x(e).$implicit;return C(r.action())}),c(1,"div",43),v(2,"img",44),a(),c(3,"div",45)(4,"div",46)(5,"button",47),y("click",function(r){let o=x(e).$implicit,s=_();return r.stopPropagation(),C(s.openGuidePopup(o.title))}),l(6,"Know More"),a()()()()}if(t&2){let e=n.$implicit;f(2),g("src",e.image,H)("alt",e.title)}}function tA(t,n){t&1&&(Me(0),c(1,"ul",53)(2,"li")(3,"b"),l(4,"Introduction"),a(),v(5,"br"),c(6,"ul",54)(7,"li"),l(8,"The Chat Module is an interactive learning environment designed to assist learners through text and voice-based communication."),a(),c(9,"li"),l(10,"Users can type their question or select from follow-up suggestions, using either the text input or the microphone."),a(),c(11,"li"),l(12,"Predefined questions appear above the input field for quick access."),a(),c(13,"li"),l(14,"This creates an engaging and personalised learning experience similar to interacting with a real tutor."),a()()(),c(15,"li")(16,"b"),l(17,"Starting the Chat"),a(),v(18,"br"),c(19,"ul",54)(20,"li"),l(21,"When learners open the module, they will see a text input box and a microphone icon. They can type a question or activate the microphone to speak."),a(),c(22,"li"),l(23,"While the microphone is active, a listening popup appears with options to mute or stop recording. Once the learner finishes speaking or typing, their question is displayed in the chat area along with a timestamp."),a(),c(24,"li"),l(25,"This simple interface ensures that both typing and speaking interactions are smooth and user-friendly."),a()()(),c(26,"li")(27,"b"),l(28,"Accessing the Syllabus"),a(),v(29,"br"),c(30,"ul",54)(31,"li"),l(32,"Before learners begin, an administrator uploads the syllabus or textbook in digital format."),a(),c(33,"li"),l(34,"The system analyses the document and automatically generates a list of predefined questions based on the uploaded syllabus."),a(),c(35,"li"),l(36,"These predefined questions are displayed above the input field, allowing learners to choose any topic without needing to type."),a(),c(37,"li"),l(38,"When a learner selects a question, the system locates the relevant section from the syllabus and prepares an answer. The response appears instantly in the chat area in a clear and readable format."),a()()(),c(39,"li")(40,"b"),l(41,"Receiving the Response"),a(),v(42,"br"),c(43,"ul",54)(44,"li"),l(45," After a question is sent, the system generates an immediate response that includes: "),c(46,"ul")(47,"li"),l(48,"A text-based explanation"),a(),c(49,"li"),l(50,"An audio narration in the tutor\u2019s real voice"),a(),c(51,"li"),l(52,"A derived video explanation, when applicable"),a()()(),c(53,"li"),l(54,"The response is first produced as text. If the learner chooses to listen, the system plays an audio narration that has been synthetically generated using the real voice of the teacher."),a(),c(55,"li"),l(56,"The voice is not a generic computer voice; it has been trained and modelled on the actual tutor\u2019s speech patterns, ensuring that the tone, pronunciation, and expression closely resemble the teacher\u2019s natural way of speaking."),a(),c(57,"li"),l(58,"Similarly, when a video explanation is requested, the system displays a derived video of the teacher. This video is not a pre-recorded clip or animation, but is generated to resemble the real teacher\u2019s voice and reactions."),a(),c(59,"li"),l(60,"All audio and video responses are created dynamically for each question, providing unique, real-time explanations. Learners can replay or stop the narration at any time, copy text responses, and follow the conversation naturally with the speaking indicator showing when the tutor\u2019s voice is active."),a(),c(61,"li"),l(62,"By default, audio is muted; you can enable it as needed."),a()()(),c(63,"li")(64,"b"),l(65,"Handling Out-of-Syllabus Questions"),a(),v(66,"br"),c(67,"ul",54)(68,"li"),l(69,"If a learner asks a question that is not part of the uploaded syllabus or textbook, the system responds with the message: \u201CThis topic is out of syllabus.\u201D"),a(),c(70,"li"),l(71,"Only administrators can configure whether such questions can be answered using external information sources."),a(),c(72,"li"),l(73,"This ensures that all discussions remain within the approved syllabus unless authorised otherwise."),a()()(),c(74,"li")(75,"b"),l(76,"Follow-Up and Progressive Learning"),a(),v(77,"br"),c(78,"ul",54)(79,"li"),l(80,"After each response, the system displays related or next-level questions below the chat. This feature helps learners progress through topics in a logical sequence."),a(),c(81,"li"),l(82,"A breadcrumb trail is also displayed, showing the topic flow and subtopics covered during the conversation."),a(),c(83,"li"),l(84,"Learners can easily revisit previous points and continue from where they left off."),a()()(),c(85,"li")(86,"b"),l(87,"Audio, Video, and Mode Controls"),a(),v(88,"br"),c(89,"ul",54)(90,"li"),l(91," At the top of the chat interface, four control buttons provide flexibility and accessibility: "),c(92,"ul")(93,"li"),l(94,"Audio Control \u2013 Enable or disable narration."),a(),c(95,"li"),l(96,"Video Control \u2013 Show or hide derived video explanations."),a(),c(97,"li"),l(98,"Syllabus Mode Control \u2013 Keep learning limited to syllabus topics."),a(),c(99,"li"),l(100,"Breadcrumb Control \u2013 Display or hide the topic trail."),a()()(),c(101,"li"),l(102,"Only administrators can modify the syllabus mode to include out-of-syllabus responses."),a()()(),c(103,"li")(104,"b"),l(105,"Interface and Usability"),a(),v(106,"br"),c(107,"ul",54)(108,"li"),l(109,"The chat interface presents a clear, conversational layout between the learner and the tutor. Each message includes a profile icon and timestamp for a natural reading flow."),a(),c(110,"li"),l(111,"Typing indicators appear while the system prepares responses, and a scroll button allows quick access to the most recent messages."),a(),c(112,"li"),l(113,"The design is responsive and adapts to different devices such as desktops, tablets, etc."),a()()(),c(114,"li")(115,"b"),l(116,"Summary"),a(),v(117,"br"),c(118,"ul",54)(119,"li"),l(120,"The Chat Module provides an engaging, syllabus-focused learning experience where learners can type or speak their questions and receive immediate answers through text, real teacher voice, and derived video."),a(),c(121,"li"),l(122,"With predefined questions, real-time explanations, structured progression, and easy-to-use controls, this module offers a complete and intelligent conversational learning environment\u2014all within a single platform."),a(),c(123,"li"),l(124,"Use this feature for summary-guided training."),a()()()(),Ie())}function nA(t,n){t&1&&(Me(0),c(1,"ul",53)(2,"li")(3,"b"),l(4,"Introduction"),a(),v(5,"br"),c(6,"ul",54)(7,"li"),l(8,"The "),c(9,"b"),l(10,"Generate Questions"),a(),l(11," module helps children practise English grammar with step-by-step questions, instant feedback, and level-based progression."),a(),c(12,"li"),l(13,"All questions, hints, and follow-ups are drawn from a "),c(14,"b"),l(15,"predefined syllabus"),a(),l(16," prepared by your school or administrator."),a(),c(17,"li"),l(18,"The layout is simple and child-friendly, with clear buttons and readable text."),a()()(),c(19,"li")(20,"b"),l(21,"Syllabus Source"),a(),v(22,"br"),c(23,"ul",54)(24,"li"),l(25,"The module uses a "),c(26,"b"),l(27,"predefined syllabus"),a(),l(28," that includes topics, chapters, sections, and pages."),a(),c(29,"li"),l(30,"Predefined content ensures that practice stays aligned with the lessons taught in class."),a(),c(31,"li"),l(32,"If a topic is not found in the syllabus, the system displays a clear message (see \u201COut-of-Syllabus Control\u201D)."),a()()(),c(33,"li")(34,"b"),l(35,"Choose a Topic"),a(),v(36,"br"),c(37,"ul",54)(38,"li"),l(39,"Type a grammar topic (e.g., "),c(40,"i"),l(41,"verbs"),a(),l(42,", "),c(43,"i"),l(44,"nouns"),a(),l(45,", "),c(46,"i"),l(47,"tenses"),a(),l(48,", "),c(49,"i"),l(50,"subject\u2013verb agreement"),a(),l(51,") or select from the suggestion list."),a(),c(52,"li"),l(53,"Use specific terms (e.g., "),c(54,"i"),l(55,"simple past tense"),a(),l(56,") for better results."),a(),c(57,"li"),l(58,"If the topic is unclear or unrelated to grammar, the system may show: \u201CPlease enter a valid "),c(59,"b"),l(60,"grammar topic"),a(),l(61,", not a general word or unrelated question.\u201D"),a()()(),c(62,"li")(63,"b"),l(64,"Generate Questions"),a(),v(65,"br"),c(66,"ul",54)(67,"li"),l(68,"Click "),c(69,"b"),l(70,"Generate"),a(),l(71," to create a set of questions based on the chosen topic from the predefined syllabus."),a(),c(72,"li"),l(73,"A brief loading screen appears while the questions are prepared."),a(),c(74,"li"),l(75,"To keep the practice consistent, the topic may be locked after generation until you reset the session."),a()()(),c(76,"li")(77,"b"),l(78,"Answer the Questions"),a(),v(79,"br"),c(80,"ul",54)(81,"li"),l(82,"Each "),c(83,"b"),l(84,"question"),a(),l(85," presents a sentence with a "),c(86,"b"),l(87,"blank"),a(),l(88,". The learner may type any suitable "),c(89,"b"),l(90,"answer"),a(),l(91," in the blank."),a(),c(92,"li"),l(93,"All blanks must be filled before you can check answers. The "),c(94,"b"),l(95,"Validate/Check Answers"),a(),l(96," button enables automatically."),a(),c(97,"li"),l(98,"The input fields are designed for easy typing and clear visibility."),a()()(),c(99,"li")(100,"b"),l(101,"Check Your Answers"),a(),v(102,"br"),c(103,"ul",54)(104,"li"),l(105,"Click "),c(106,"b"),l(107,"Check Answers"),a(),l(108," to validate all responses together."),a(),c(109,"li")(110,"b"),l(111,"Color guidance:"),a(),l(112," correct answers are shown in green with the label "),c(113,"b"),l(114,"Correct"),a(),l(115,"; incorrect answers are shown in red with the label "),c(116,"b"),l(117,"Wrong"),a(),l(118,"."),a(),c(119,"li"),l(120,"During validation or timed messages, inputs may be temporarily read-only to prevent accidental edits."),a()()(),c(121,"li")(122,"b"),l(123,"Try Again (First Wrong Attempt)"),a(),v(124,"br"),c(125,"ul",54)(126,"li"),l(127,"For each incorrect "),c(128,"b"),l(129,"answer"),a(),l(130,", a "),c(131,"b"),l(132,"\u201CTry Again\u201D"),a(),l(133," message appears with a short countdown."),a(),c(134,"li"),l(135,"After the countdown, the wrong entry is cleared so the learner can attempt again."),a(),c(136,"li"),l(137,"This encourages self-correction with gentle guidance."),a()()(),c(138,"li")(139,"b"),l(140,"Show Correct Answer (Second Wrong Attempt)"),a(),v(141,"br"),c(142,"ul",54)(143,"li"),l(144,"If a "),c(145,"b"),l(146,"question"),a(),l(147," remains incorrect after the second attempt, another countdown appears."),a(),c(148,"li"),l(149,"When the countdown ends, the "),c(150,"b"),l(151,"correct answer"),a(),l(152," is shown and filled automatically."),a(),c(153,"li"),l(154,"This provides closure and allows the learner to continue smoothly."),a()()(),c(155,"li")(156,"b"),l(157,"Hints and Teacher Coaching"),a(),v(158,"br"),c(159,"ul",54)(160,"li"),l(161,"Click the "),c(162,"b"),l(163,"Hint"),a(),l(164," icon to open helpful hints based on the same syllabus section as the questions."),a(),c(165,"li"),l(166,"When a hint is displayed or when an answer is incorrect, the module can also present the teacher\u2019s voice and a short teacher video that explains the idea in simple words."),a(),c(167,"li"),l(168,"Audio is muted by default; you may enable it. You can play, pause, or close the video at any time."),a()()(),c(169,"li")(170,"b"),l(171,"Breadcrumb and Follow-Up Questions"),a(),v(172,"br"),c(173,"ul",54)(174,"li"),l(175,"The "),c(176,"b"),l(177,"breadcrumb"),a(),l(178," shows the learning path (Topic ? Chapter ? Section ? Page). Clicking a level focuses the practice on that part."),a(),c(179,"li")(180,"b"),l(181,"Predefined follow-up questions"),a(),l(182," appear below the main set. They come from the same syllabus section and guide the next step (e.g., identification, transformation, short explanation)."),a(),c(183,"li"),l(184,"As answers are submitted, the follow-ups adjust to reinforce areas that need more practice."),a()()(),c(185,"li")(186,"b"),l(187,"Out-of-Syllabus Control"),a(),v(188,"br"),c(189,"ul",54)(190,"li"),l(191,"If a learner asks about a topic that is not part of the predefined syllabus, the system shows: \u201CThis topic is out of syllabus.\u201D"),a(),c(192,"li"),l(193,"Only administrators can decide whether such questions may be answered using other sources."),a(),c(194,"li"),l(195,"This keeps practice within approved lessons unless specific permission is given."),a()()(),c(196,"li")(197,"b"),l(198,"Level Progress and Progress Bar"),a(),v(199,"br"),c(200,"ul",54)(201,"li"),l(202,"The module uses three levels: "),c(203,"b"),l(204,"Basic ? Intermediate ? Expert"),a(),l(205,"."),a(),c(206,"li"),l(207,"A "),c(208,"b"),l(209,"progress bar"),a(),l(210," with level markers shows the current level and the remaining path."),a(),c(211,"li"),l(212,"Clear labels and gentle animations help children track progress."),a()()(),c(213,"li")(214,"b"),l(215,"Moving to the Next Level"),a(),v(216,"br"),c(217,"ul",54)(218,"li"),l(219,"When all "),c(220,"b"),l(221,"questions"),a(),l(222," in a level are correct, a message and a short countdown appear."),a(),c(223,"li"),l(224,"The module then advances to the next level and updates the progress bar."),a(),c(225,"li"),l(226,"Difficulty increases gradually to build mastery step by step."),a()()(),c(227,"li")(228,"b"),l(229,"Celebrate Success"),a(),v(230,"br"),c(231,"ul",54)(232,"li"),l(233,"After completing all three levels, a "),c(234,"b"),l(235,"celebration"),a(),l(236," screen appears."),a(),c(237,"li"),l(238,"Learners can click "),c(239,"b"),l(240,"Start Over"),a(),l(241," to practise the same topic again or choose a new topic."),a()()(),c(242,"li")(243,"b"),l(244,"Reset or Change Topic"),a(),v(245,"br"),c(246,"ul",54)(247,"li"),l(248,"Use "),c(249,"b"),l(250,"Reset"),a(),l(251," to clear the current session and unlock the topic field."),a(),c(252,"li"),l(253,"Enter a new topic or select another suggestion to begin a new practice set."),a()()(),c(254,"li")(255,"b"),l(256,"Accessibility and Layout"),a(),v(257,"br"),c(258,"ul",54)(259,"li"),l(260,"Countdowns and status messages are written clearly so learners understand what is happening."),a(),c(261,"li"),l(262,"The layout adapts to different screens. Buttons and inputs are sized for comfortable tapping and clicking."),a()()(),c(263,"li")(264,"b"),l(265,"Troubleshooting"),a(),v(266,"br"),c(267,"ul",54)(268,"li")(269,"b"),l(270,"Invalid topic message:"),a(),l(271," Enter a clear grammar term (e.g., "),c(272,"i"),l(273,"articles"),a(),l(274,", "),c(275,"i"),l(276,"comparatives"),a(),l(277,", "),c(278,"i"),l(279,"passive voice"),a(),l(280,")."),a(),c(281,"li")(282,"b"),l(283,"Out of syllabus:"),a(),l(284," Choose a topic that appears in the syllabus list or ask an administrator about permission for extra topics."),a(),c(285,"li")(286,"b"),l(287,"Buttons disabled:"),a(),l(288," The "),c(289,"i"),l(290,"Generate"),a(),l(291," button appears after entering a valid topic; the "),c(292,"i"),l(293,"Validate"),a(),l(294," button appears after all blanks are filled."),a()()(),c(295,"li")(296,"b"),l(297,"Benefits for Children"),a(),v(298,"br"),c(299,"ul",54)(300,"li")(301,"b"),l(302,"Guided practice"),a(),l(303," with clear feedback builds confidence and accuracy."),a(),c(304,"li")(305,"b"),l(306,"Level-based progression"),a(),l(307," supports steady growth from basic understanding to higher skills."),a(),c(308,"li")(309,"b"),l(310,"Hints and teacher coaching"),a(),l(311," help learners correct mistakes and understand rules in simple language."),a(),c(312,"li")(313,"b"),l(314,"Predefined syllabus alignment"),a(),l(315," keeps practice consistent with classroom lessons."),a()()()(),Ie())}function iA(t,n){t&1&&(Me(0),c(1,"ul",53)(2,"li")(3,"b"),l(4,"Introduction"),a(),v(5,"br"),c(6,"ul",54)(7,"li"),l(8,"The "),c(9,"b"),l(10,"voice "),a(),l(11," module helps children practise English grammar with step-by-step questions, instant feedback, and level-based progression."),a(),c(12,"li"),l(13,"All questions, hints, and follow-ups are drawn from a "),c(14,"b"),l(15,"predefined syllabus"),a(),l(16," prepared by your school or administrator."),a(),c(17,"li"),l(18,"The layout is simple and child-friendly, with clear buttons and readable text."),a()()(),c(19,"li")(20,"b"),l(21,"Syllabus Source"),a(),v(22,"br"),c(23,"ul",54)(24,"li"),l(25,"The module uses a "),c(26,"b"),l(27,"predefined syllabus"),a(),l(28," that includes topics, chapters, sections, and pages."),a(),c(29,"li"),l(30,"Predefined content ensures that practice stays aligned with the lessons taught in class."),a(),c(31,"li"),l(32,"If a topic is not found in the syllabus, the system displays a clear message (see \u201COut-of-Syllabus Control\u201D)."),a()()(),c(33,"li")(34,"b"),l(35,"Choose a Topic"),a(),v(36,"br"),c(37,"ul",54)(38,"li"),l(39,"Type a grammar topic (e.g., "),c(40,"i"),l(41,"verbs"),a(),l(42,", "),c(43,"i"),l(44,"nouns"),a(),l(45,", "),c(46,"i"),l(47,"tenses"),a(),l(48,", "),c(49,"i"),l(50,"subject\u2013verb agreement"),a(),l(51,") or select from the suggestion list."),a(),c(52,"li"),l(53,"Use specific terms (e.g., "),c(54,"i"),l(55,"simple past tense"),a(),l(56,") for better results."),a(),c(57,"li"),l(58,"If the topic is unclear or unrelated to grammar, the system may show: \u201CPlease enter a valid "),c(59,"b"),l(60,"grammar topic"),a(),l(61,", not a general word or unrelated question.\u201D"),a()()(),c(62,"li")(63,"b"),l(64,"Generate Questions"),a(),v(65,"br"),c(66,"ul",54)(67,"li"),l(68,"Click "),c(69,"b"),l(70,"Generate"),a(),l(71," to create a set of questions based on the chosen topic from the predefined syllabus."),a(),c(72,"li"),l(73,"A brief loading screen appears while the questions are prepared."),a(),c(74,"li"),l(75,"To keep the practice consistent, the topic may be locked after generation until you reset the session."),a()()(),c(76,"li")(77,"b"),l(78,"Answer the Questions"),a(),v(79,"br"),c(80,"ul",54)(81,"li"),l(82,"Each "),c(83,"b"),l(84,"question"),a(),l(85," presents a sentence with a "),c(86,"b"),l(87,"blank"),a(),l(88,". The learner may type any suitable "),c(89,"b"),l(90,"answer"),a(),l(91," in the blank."),a(),c(92,"li"),l(93,"All blanks must be filled before you can check answers. The "),c(94,"b"),l(95,"Validate/Check Answers"),a(),l(96," button enables automatically."),a(),c(97,"li"),l(98,"The input fields are designed for easy typing and clear visibility."),a()()(),c(99,"li")(100,"b"),l(101,"Check Your Answers"),a(),v(102,"br"),c(103,"ul",54)(104,"li"),l(105,"Click "),c(106,"b"),l(107,"Check Answers"),a(),l(108," to validate all responses together."),a(),c(109,"li")(110,"b"),l(111,"Color guidance:"),a(),l(112," correct answers are shown in green with the label "),c(113,"b"),l(114,"Correct"),a(),l(115,"; incorrect answers are shown in red with the label "),c(116,"b"),l(117,"Wrong"),a(),l(118,"."),a(),c(119,"li"),l(120,"During validation or timed messages, inputs may be temporarily read-only to prevent accidental edits."),a()()(),c(121,"li")(122,"b"),l(123,"Try Again (First Wrong Attempt)"),a(),v(124,"br"),c(125,"ul",54)(126,"li"),l(127,"For each incorrect "),c(128,"b"),l(129,"answer"),a(),l(130,", a "),c(131,"b"),l(132,"\u201CTry Again\u201D"),a(),l(133," message appears with a short countdown."),a(),c(134,"li"),l(135,"After the countdown, the wrong entry is cleared so the learner can attempt again."),a(),c(136,"li"),l(137,"This encourages self-correction with gentle guidance."),a()()(),c(138,"li")(139,"b"),l(140,"Show Correct Answer (Second Wrong Attempt)"),a(),v(141,"br"),c(142,"ul",54)(143,"li"),l(144,"If a "),c(145,"b"),l(146,"question"),a(),l(147," remains incorrect after the second attempt, another countdown appears."),a(),c(148,"li"),l(149,"When the countdown ends, the "),c(150,"b"),l(151,"correct answer"),a(),l(152," is shown and filled automatically."),a(),c(153,"li"),l(154,"This provides closure and allows the learner to continue smoothly."),a()()(),c(155,"li")(156,"b"),l(157,"Hints and Teacher Coaching"),a(),v(158,"br"),c(159,"ul",54)(160,"li"),l(161,"Click the "),c(162,"b"),l(163,"Hint"),a(),l(164," icon to open helpful hints based on the same syllabus section as the questions."),a(),c(165,"li"),l(166,"When a hint is displayed or when an answer is incorrect, the module can also present the teacher\u2019s voice and a short teacher video that explains the idea in simple words."),a(),c(167,"li"),l(168,"Audio is muted by default; you may enable it. You can play, pause, or close the video at any time."),a()()(),c(169,"li")(170,"b"),l(171,"Breadcrumb and Follow-Up Questions"),a(),v(172,"br"),c(173,"ul",54)(174,"li"),l(175,"The "),c(176,"b"),l(177,"breadcrumb"),a(),l(178," shows the learning path (Topic ? Chapter ? Section ? Page). Clicking a level focuses the practice on that part."),a(),c(179,"li")(180,"b"),l(181,"Predefined follow-up questions"),a(),l(182," appear below the main set. They come from the same syllabus section and guide the next step (e.g., identification, transformation, short explanation)."),a(),c(183,"li"),l(184,"As answers are submitted, the follow-ups adjust to reinforce areas that need more practice."),a()()(),c(185,"li")(186,"b"),l(187,"Out-of-Syllabus Control"),a(),v(188,"br"),c(189,"ul",54)(190,"li"),l(191,"If a learner asks about a topic that is not part of the predefined syllabus, the system shows: \u201CThis topic is out of syllabus.\u201D"),a(),c(192,"li"),l(193,"Only administrators can decide whether such questions may be answered using other sources."),a(),c(194,"li"),l(195,"This keeps practice within approved lessons unless specific permission is given."),a()()(),c(196,"li")(197,"b"),l(198,"Level Progress and Progress Bar"),a(),v(199,"br"),c(200,"ul",54)(201,"li"),l(202,"The module uses three levels: "),c(203,"b"),l(204,"Basic ? Intermediate ? Expert"),a(),l(205,"."),a(),c(206,"li"),l(207,"A "),c(208,"b"),l(209,"progress bar"),a(),l(210," with level markers shows the current level and the remaining path."),a(),c(211,"li"),l(212,"Clear labels and gentle animations help children track progress."),a()()(),c(213,"li")(214,"b"),l(215,"Moving to the Next Level"),a(),v(216,"br"),c(217,"ul",54)(218,"li"),l(219,"When all "),c(220,"b"),l(221,"questions"),a(),l(222," in a level are correct, a message and a short countdown appear."),a(),c(223,"li"),l(224,"The module then advances to the next level and updates the progress bar."),a(),c(225,"li"),l(226,"Difficulty increases gradually to build mastery step by step."),a()()(),c(227,"li")(228,"b"),l(229,"Celebrate Success"),a(),v(230,"br"),c(231,"ul",54)(232,"li"),l(233,"After completing all three levels, a "),c(234,"b"),l(235,"celebration"),a(),l(236," screen appears."),a(),c(237,"li"),l(238,"Learners can click "),c(239,"b"),l(240,"Start Over"),a(),l(241," to practise the same topic again or choose a new topic."),a()()(),c(242,"li")(243,"b"),l(244,"Reset or Change Topic"),a(),v(245,"br"),c(246,"ul",54)(247,"li"),l(248,"Use "),c(249,"b"),l(250,"Reset"),a(),l(251," to clear the current session and unlock the topic field."),a(),c(252,"li"),l(253,"Enter a new topic or select another suggestion to begin a new practice set."),a()()(),c(254,"li")(255,"b"),l(256,"Accessibility and Layout"),a(),v(257,"br"),c(258,"ul",54)(259,"li"),l(260,"Countdowns and status messages are written clearly so learners understand what is happening."),a(),c(261,"li"),l(262,"The layout adapts to different screens. Buttons and inputs are sized for comfortable tapping and clicking."),a()()(),c(263,"li")(264,"b"),l(265,"Troubleshooting"),a(),v(266,"br"),c(267,"ul",54)(268,"li")(269,"b"),l(270,"Invalid topic message:"),a(),l(271," Enter a clear grammar term (e.g., "),c(272,"i"),l(273,"articles"),a(),l(274,", "),c(275,"i"),l(276,"comparatives"),a(),l(277,", "),c(278,"i"),l(279,"passive voice"),a(),l(280,")."),a(),c(281,"li")(282,"b"),l(283,"Out of syllabus:"),a(),l(284," Choose a topic that appears in the syllabus list or ask an administrator about permission for extra topics."),a(),c(285,"li")(286,"b"),l(287,"Buttons disabled:"),a(),l(288," The "),c(289,"i"),l(290,"Generate"),a(),l(291," button appears after entering a valid topic; the "),c(292,"i"),l(293,"Validate"),a(),l(294," button appears after all blanks are filled."),a()()(),c(295,"li")(296,"b"),l(297,"Benefits for Children"),a(),v(298,"br"),c(299,"ul",54)(300,"li")(301,"b"),l(302,"Guided practice"),a(),l(303," with clear feedback builds confidence and accuracy."),a(),c(304,"li")(305,"b"),l(306,"Level-based progression"),a(),l(307," supports steady growth from basic understanding to higher skills."),a(),c(308,"li")(309,"b"),l(310,"Hints and teacher coaching"),a(),l(311," help learners correct mistakes and understand rules in simple language."),a(),c(312,"li")(313,"b"),l(314,"Predefined syllabus alignment"),a(),l(315," keeps practice consistent with classroom lessons."),a()()()(),Ie())}function rA(t,n){t&1&&(Me(0),c(1,"ul",53)(2,"li")(3,"b"),l(4,"Introduction"),a(),v(5,"br"),c(6,"ul",54)(7,"li"),l(8,"The Listen module helps learners improve listening skills using short videos."),a(),c(9,"li"),l(10,"It provides questions based on the video and gives instant feedback."),a(),c(11,"li"),l(12,"It supports repeated attempts, so learners can review, retry, and improve."),a()()(),c(13,"li")(14,"b"),l(15,"Preparing Your Video"),a(),v(16,"br"),c(17,"ul",54)(18,"li"),l(19,"Upload a video from your device or select one from the list (if available)."),a(),c(20,"li"),l(21,"Check your audio device (headphones/speakers) before you start."),a(),c(22,"li"),l(23,"Use a quiet environment for better focus."),a()()(),c(24,"li")(25,"b"),l(26,"Playing and Enabling Questions"),a(),v(27,"br"),c(28,"ul",54)(29,"li"),l(30,"Press "),c(31,"b"),l(32,"Play"),a(),l(33," and watch the video from start to finish."),a(),c(34,"li"),l(35,"After you complete the video, the "),c(36,"b"),l(37,"Generate Questions"),a(),l(38," button becomes active."),a(),c(39,"li"),l(40,"You may replay parts of the video before generating questions if needed."),a()()(),c(41,"li")(42,"b"),l(43,"Generating and Answering Questions"),a(),v(44,"br"),c(45,"ul",54)(46,"li"),l(47,"Click "),c(48,"b"),l(49,"Generate Questions"),a(),l(50," to create questions based on the video content."),a(),c(51,"li"),l(52,"Question types include multiple choice, fill-in-the-blank, short answer, and dictation."),a(),c(53,"li"),l(54,"Answer each question carefully; you can move between questions if navigation is enabled."),a()()(),c(55,"li")(56,"b"),l(57,"Validation and Feedback"),a(),v(58,"br"),c(59,"ul",54)(60,"li"),l(61,"Click "),c(62,"b"),l(63,"Validate Answers"),a(),l(64," to check your responses."),a(),c(65,"li"),l(66,"You will see which answers are correct and which need revision."),a(),c(67,"li"),l(68,"Incorrect items can be retried; use the video or hints to correct your answers."),a()()(),c(69,"li")(70,"b"),l(71,"Hints and Transcript"),a(),v(72,"br"),c(73,"ul",54)(74,"li"),l(75,"Hints may give a short clue, a key phrase, or a time range to review."),a(),c(76,"li"),l(77,"A transcript may be available after your first attempt, depending on settings."),a(),c(78,"li"),l(79,"Use these aids to understand difficult sections before retrying."),a()()(),c(80,"li")(81,"b"),l(82,"Playback Controls"),a(),v(83,"br"),c(84,"ul",54)(85,"li"),l(86,"Use "),c(87,"b"),l(88,"replay"),a(),l(89," to review important parts and "),c(90,"b"),l(91,"seek"),a(),l(92," to jump to a time."),a(),c(93,"li"),l(94,"Adjust "),c(95,"b"),l(96,"playback speed"),a(),l(97," to slow down or speed up the audio."),a(),c(98,"li"),l(99,"Audio may start muted by default; enable sound when ready."),a()()(),c(100,"li")(101,"b"),l(102,"Progress and Scoring"),a(),v(103,"br"),c(104,"ul",54)(105,"li"),l(106,"Your attempts and scores are recorded for review."),a(),c(107,"li"),l(108,"You can retry incorrect questions to improve your score."),a(),c(109,"li"),l(110,"Use your history to track improvement over time."),a()()(),c(111,"li")(112,"b"),l(113,"Good Practice"),a(),v(114,"br"),c(115,"ul",54)(116,"li"),l(117,"Use headphones for clear audio and fewer distractions."),a(),c(118,"li"),l(119,"Pause and replay difficult parts before answering."),a(),c(120,"li"),l(121,"Focus on key words, speaker tone, and context."),a()()(),c(122,"li")(123,"b"),l(124,"Summary"),a(),v(125,"br"),c(126,"ul",54)(127,"li"),l(128,"The Listen module provides video-based practice with questions and instant feedback."),a(),c(129,"li"),l(130,"Replay, hints, and transcripts support understanding and correction."),a(),c(131,"li"),l(132,"Use it regularly to build confident and accurate listening skills."),a()()()(),Ie())}function oA(t,n){t&1&&(Me(0),c(1,"ul",53)(2,"li")(3,"b"),l(4,"Introduction"),a(),v(5,"br"),c(6,"ul",54)(7,"li"),l(8," The "),c(9,"b"),l(10,"Reading"),a(),l(11," module is a guided reading-comprehension exercise where learners enter a topic, get a short passage at a chosen difficulty level, and then answer questions based on that passage. "),a(),c(12,"li"),l(13," It is designed as a self-learning tool for children, with simple controls, large buttons, and clear visual feedback. "),a(),c(14,"li"),l(15," The module can be used in class, in labs, or at home to give structured, independent reading practice. "),a()()(),c(16,"li")(17,"b"),l(18,"Selecting the Difficulty Level"),a(),v(19,"br"),c(20,"ul",54)(21,"li"),l(22," Before typing any topic, the learner must choose a "),c(23,"b"),l(24,"difficulty level"),a(),l(25,": "),c(26,"b"),l(27,"Easy"),a(),l(28,", "),c(29,"b"),l(30,"Medium"),a(),l(31,", or "),c(32,"b"),l(33,"Hard"),a(),l(34,". "),a(),c(35,"li"),l(36," The topic box remains locked until a level is selected, so children follow the steps in the right order and do not get confused. "),a(),c(37,"li"),l(38," Teachers can guide younger students to use Easy level, while older or stronger readers can use Medium or Hard passages for more challenge. "),a()()(),c(39,"li")(40,"b"),l(41,"Entering the Topic and Generating the Passage"),a(),v(42,"br"),c(43,"ul",54)(44,"li"),l(45," After selecting the level, the learner types a topic (for example: "),c(46,"i"),l(47,"Rainy Day"),a(),l(48,", "),c(49,"i"),l(50,"Animals"),a(),l(51,", "),c(52,"i"),l(53,"My School"),a(),l(54,", "),c(55,"i"),l(56,"Space"),a(),l(57,"). "),a(),c(58,"li"),l(59," The system checks that the topic is meaningful and safe. If it is not valid, a clear message is shown so the learner can correct it. "),a(),c(60,"li"),l(61," When the topic is valid, clicking "),c(62,"b"),l(63,"Generate Passage"),a(),l(64," creates a short, level-appropriate reading passage based on that topic. "),a(),c(65,"li"),l(66," A loading indicator is shown while the passage is being generated so learners know the system is working. "),a()()(),c(67,"li")(68,"b"),l(69,"Reading the Passage"),a(),v(70,"br"),c(71,"ul",54)(72,"li"),l(73," The passage is displayed in a dedicated reading card, with neat spacing and comfortable line height for children. "),a(),c(74,"li"),l(75," Learners can adjust the "),c(76,"b"),l(77,"font size"),a(),l(78," using A\u2212 / A+ buttons so the text is easy to see on different devices. "),a(),c(79,"li"),l(80," A "),c(81,"b"),l(82,"Read Aloud"),a(),l(83," button lets the passage be read using audio. Children can start, pause, or resume listening as needed. "),a(),c(84,"li"),l(85," These options help visual and auditory learners, and support children who need help with pronunciation or slower reading. "),a()()(),c(86,"li")(87,"b"),l(88,"Generating Questions from the Passage"),a(),v(89,"br"),c(90,"ul",54)(91,"li"),l(92," Once the learner has read or listened to the passage, they click "),c(93,"b"),l(94,"Generate Questions"),a(),l(95,". "),a(),c(96,"li"),l(97," The system creates a set of "),c(98,"b"),l(99,"multiple-choice questions"),a(),l(100," directly linked to the passage so that all questions stay within the same context. "),a(),c(101,"li"),l(102," A small loader or waiting message appears during question generation to prevent repeated clicks and to show progress. "),a()()(),c(103,"li")(104,"b"),l(105,"Answering and Validating Questions"),a(),v(106,"br"),c(107,"ul",54)(108,"li"),l(109," Questions are presented "),c(110,"b"),l(111,"one at a time"),a(),l(112,", each with four options. Answer choices are shown as clear radio buttons with child-friendly layout. "),a(),c(113,"li"),l(114," The learner first selects an option. The selected option is highlighted so the child clearly sees their current choice before checking. "),a(),c(115,"li"),l(116," After choosing an option, the learner clicks "),c(117,"b"),l(118,"Validate"),a(),l(119,": "),c(120,"ul",55)(121,"li"),l(122,"Correct answers are shown with a friendly success style (e.g. green with a tick)."),a(),c(123,"li"),l(124,"Wrong answers are shown with a clear but gentle error style (e.g. red with a cross)."),a()()(),c(125,"li"),l(126," The Validate button is disabled after use for that question, preventing repeated clicks and keeping the flow simple. "),a(),c(127,"li"),l(128," The button label then changes to allow the learner to move to the "),c(129,"b"),l(130,"Next"),a(),l(131," question. On the final question it may change to a reset or completion action. "),a()()(),c(132,"li")(133,"b"),l(134,"Completion, Score, and Restart"),a(),v(135,"br"),c(136,"ul",54)(137,"li"),l(138," When all questions are completed, the module shows a "),c(139,"b"),l(140,"summary"),a(),l(141," with the learner\u2019s score (for example, \u201CYou answered 4 out of 5 questions correctly\u201D). "),a(),c(142,"li"),l(143," A simple congratulations or encouragement message is shown to keep motivation high. "),a(),c(144,"li"),l(145," Learners can then click "),c(146,"b"),l(147,"Start Over"),a(),l(148," or a similar button to clear the current session, choose a new topic, or change the level and begin a fresh reading exercise. "),a()()(),c(149,"li")(150,"b"),l(151,"Benefits for Children"),a(),v(152,"br"),c(153,"ul",54)(154,"li"),l(155," Builds "),c(156,"b"),l(157,"reading comprehension"),a(),l(158," by connecting text with follow-up questions. "),a(),c(159,"li"),l(160," Improves "),c(161,"b"),l(162,"vocabulary"),a(),l(163," naturally through level-based passages on familiar topics. "),a(),c(164,"li"),l(165," Encourages "),c(166,"b"),l(167,"focus and attention"),a(),l(168," by showing only one question at a time. "),a(),c(169,"li"),l(170," Provides "),c(171,"b"),l(172,"instant feedback"),a(),l(173," so learners understand their mistakes and learn immediately. "),a(),c(174,"li"),l(175," Supports different learning needs with font size controls and read-aloud options. "),a(),c(176,"li"),l(177," Reduces teacher workload, because passages and questions are generated automatically instead of being prepared manually for each topic. "),a()()()(),Ie())}function sA(t,n){t&1&&(Me(0),c(1,"ul",53)(2,"li")(3,"b"),l(4,"Introduction"),a(),v(5,"br"),c(6,"ul",54)(7,"li"),l(8," The "),c(9,"b"),l(10,"Writing"),a(),l(11," module gives students a structured way to practise writing in English. It provides a topic based on the selected grade level, lets students write their answer, and then shows clear suggestions for improvement. "),a(),c(12,"li"),l(13," The activity is designed for children to use at school or at home, with a simple layout, friendly images, and clear buttons that guide them step by step. "),a(),c(14,"li"),l(15," It helps students develop better sentence structure, grammar, and expression through regular practice. "),a()()(),c(16,"li")(17,"b"),l(18,"Selecting the Grade and Getting a Topic"),a(),v(19,"br"),c(20,"ul",54)(21,"li"),l(22," Students first choose a "),c(23,"b"),l(24,"grade band"),a(),l(25," from the dropdown: Lower, Middle, or Upper. "),a(),c(26,"li"),l(27," After selecting the grade, they click "),c(28,"b"),l(29,"Get Topic"),a(),l(30,". The system then provides a suitable topic for that level, such as a simple daily life topic for lower grades or a slightly more thoughtful topic for higher grades. "),a(),c(31,"li"),l(32," A small loader is shown while the topic is being fetched, so students understand that the system is working and do not keep clicking. "),a()()(),c(33,"li")(34,"b"),l(35,"Writing on the Given Topic"),a(),v(36,"br"),c(37,"ul",54)(38,"li"),l(39," Once the topic is loaded, it is displayed inside a highlighted topic box so students always see what they need to write about. "),a(),c(40,"li"),l(41," A large, notebook-style "),c(42,"b"),l(43,"writing box"),a(),l(44," is provided where students type their answer in their own words. "),a(),c(45,"li"),l(46," The text area is big enough for a short paragraph and is easy to use on both laptops and tablets. "),a()()(),c(47,"li")(48,"b"),l(49,"Minimum Word Requirement and Submit Button"),a(),v(50,"br"),c(51,"ul",54)(52,"li"),l(53," To encourage meaningful writing, the submit button remains disabled until the student has written at least "),c(54,"b"),l(55,"10 words"),a(),l(56,". "),a(),c(57,"li"),l(58," When the button is disabled, a small blue tooltip appears explaining that \u201CWe need at least 10 words to enable the submit button.\u201D "),a(),c(59,"li"),l(60," After the minimum length is reached, the "),c(61,"b"),l(62,"Submit Writing"),a(),l(63," button becomes active. On click, the text is sent for checking and the button text changes to \u201CSubmitting...\u201D while the response is being processed. "),a()()(),c(64,"li")(65,"b"),l(66,"Feedback and Suggestions for Improvement"),a(),v(67,"br"),c(68,"ul",54)(69,"li"),l(70," After submission, students see a "),c(71,"b"),l(72,"Suggestions for Improvement"),a(),l(73," section. "),a(),c(74,"li"),l(75," Feedback is shown as a list of clear, short points, such as suggestions about grammar, sentence formation, or clarity. "),a(),c(76,"li"),l(77," This helps students understand what they did well and what they can improve in their writing next time. "),a()()(),c(78,"li")(79,"b"),l(80,"Try Another Topic"),a(),v(81,"br"),c(82,"ul",54)(83,"li"),l(84," A "),c(85,"b"),l(86,"Try Another"),a(),l(87," button allows students to reset the activity, get a new topic, and practise again. "),a(),c(88,"li"),l(89," This makes the module suitable for regular writing practice, such as weekly writing tasks or extra homework. "),a()()(),c(90,"li")(91,"b"),l(92,"Benefits for Students"),a(),v(93,"br"),c(94,"ul",54)(95,"li"),l(96," Develops regular "),c(97,"b"),l(98,"writing habit"),a(),l(99," and improves confidence in expressing ideas in English. "),a(),c(100,"li"),l(101," Strengthens "),c(102,"b"),l(103,"grammar, vocabulary, and sentence structure"),a(),l(104," through repeated practice. "),a(),c(105,"li"),l(106," Provides "),c(107,"b"),l(108,"instant, clear feedback"),a(),l(109," instead of only marks, so students know what to improve. "),a(),c(110,"li"),l(111," Reduces teacher workload by automating topic generation and basic feedback, while still keeping the activity meaningful for students. "),a()()()(),Ie())}function aA(t,n){t&1&&(Me(0),c(1,"ul",53)(2,"li")(3,"b"),l(4,"Introduction"),a(),v(5,"br"),c(6,"ul",54)(7,"li"),l(8," The "),c(9,"b"),l(10,"Vocabulary Builder"),a(),l(11," module helps students strengthen their vocabulary step by step. It shows one main word, asks them to choose related words, and then helps them form sentences using the correct words. "),a(),c(12,"li"),l(13," The activity is designed like a small game with clear cards, big buttons, and simple instructions, so children can use it easily in class, in the lab, or at home. "),a(),c(14,"li"),l(15," It focuses on understanding word meanings, recognising related words, and using them in complete sentences. "),a()()(),c(16,"li")(17,"b"),l(18,"Step 1 \u2013 Start the Vocabulary Builder"),a(),v(19,"br"),c(20,"ul",54)(21,"li"),l(22," On the first screen, students see the title "),c(23,"b"),l(24,"\u201CVocabulary Builder\u201D"),a(),l(25," and a short introduction explaining what they will do. "),a(),c(26,"li"),l(27," When they click the "),c(28,"b"),l(29,"\u201CLet\u2019s Build\u201D"),a(),l(30," button, the system loads a new word and its options in the background. "),a(),c(31,"li"),l(32," A loader overlay appears while the word and options are being fetched, so students understand that the system is working and do not click repeatedly. "),a()()(),c(33,"li")(34,"b"),l(35,"Step 2 \u2013 Choosing Related Words"),a(),v(36,"br"),c(37,"ul",54)(38,"li"),l(39," The next screen shows the main vocabulary word in a highlighted box and may include a small image related to that word. "),a(),c(40,"li"),l(41," Below the word, several option buttons are shown. Students are asked to "),c(42,"b"),l(43,"\u201CChoose the related words (select only three)\u201D"),a(),l(44,". "),a(),c(45,"li"),l(46," Students can select up to "),c(47,"b"),l(48,"three options"),a(),l(49,". Once three options are selected, the other options are disabled so they cannot choose more than allowed. "),a(),c(50,"li"),l(51," A large action button (for example, "),c(52,"b"),l(53,"Check"),a(),l(54," or "),c(55,"b"),l(56,"Validate"),a(),l(57,") lets students confirm their chosen words and move to the feedback stage. "),a()()(),c(58,"li")(59,"b"),l(60,"Step 3 \u2013 Feedback on Word Selection"),a(),v(61,"br"),c(62,"ul",54)(63,"li"),l(64," After validation, each option clearly shows whether it was a "),c(65,"b"),l(66,"correct"),a(),l(67," or "),c(68,"b"),l(69,"incorrect"),a(),l(70," choice using colours and simple styles (for example, green for correct and red for incorrect). "),a(),c(71,"li"),l(72," A separate "),c(73,"b"),l(74,"Feedback"),a(),l(75," screen summarises the result with short points, such as which words were not related or why some choices were wrong. "),a(),c(76,"li"),l(77," This helps students understand word relationships and avoid repeating the same mistake with similar words in future. "),a(),c(78,"li"),l(79," A button at the bottom (for example, "),c(80,"b"),l(81,"Form a Sentence"),a(),l(82,") takes them to the next step where they will use the correct words in sentences. "),a()()(),c(83,"li")(84,"b"),l(85,"Step 4 \u2013 Forming Sentences with Correct Words"),a(),v(86,"br"),c(87,"ul",54)(88,"li"),l(89," In the sentence formation screen, the correctly related words are displayed in a list at the top, usually highlighted in a positive colour. "),a(),c(90,"li"),l(91," For each correct word, there is a separate small textarea where the student has to "),c(92,"b"),l(93,"write a sentence using that word"),a(),l(94,". "),a(),c(95,"li"),l(96," This moves the student from simply recognising the word to actually using it in meaningful context. "),a(),c(97,"li"),l(98," The "),c(99,"b"),l(100,"Check Sentence"),a(),l(101," button remains disabled until all sentence boxes are filled. This ensures students write something for each word before asking for feedback. "),a()()(),c(102,"li")(103,"b"),l(104,"Step 5 \u2013 Sentence Feedback and Reset"),a(),v(105,"br"),c(106,"ul",54)(107,"li"),l(108," After checking, a "),c(109,"b"),l(110,"Sentence Feedback"),a(),l(111," screen shows clear comments on each sentence, such as whether it is correct or how it can be improved. "),a(),c(112,"li"),l(113," Positive feedback (for example, correct answers) is highlighted clearly, and suggestions are given in simple language so children can understand what to change. "),a(),c(114,"li"),l(115," A "),c(116,"b"),l(117,"Reset"),a(),l(118," or "),c(119,"b"),l(120,"Try Again"),a(),l(121," button allows students to start a new round with a different word, making the activity suitable for daily or weekly practice. "),a()()(),c(122,"li")(123,"b"),l(124,"Navigation, Buttons and Safety"),a(),v(125,"br"),c(126,"ul",54)(127,"li"),l(128," Each screen includes a "),c(129,"b"),l(130,"Back"),a(),l(131," icon and a "),c(132,"b"),l(133,"Close"),a(),l(134," button so students and teachers can move safely between steps or leave the exercise if needed. "),a(),c(135,"li"),l(136," Buttons are disabled while the loader is visible, which prevents accidental double-clicks and keeps the flow stable. "),a(),c(137,"li"),l(138," All main actions use the shared button style from the rest of the platform so the module looks consistent with other exercises. "),a()()(),c(139,"li")(140,"b"),l(141,"Benefits for Students"),a(),v(142,"br"),c(143,"ul",54)(144,"li"),l(145," Helps students "),c(146,"b"),l(147,"understand word meanings"),a(),l(148," by connecting a word with related words, not just memorising definitions. "),a(),c(149,"li"),l(150," Trains them to "),c(151,"b"),l(152,"distinguish similar and unrelated words"),a(),l(153,", which is important for reading comprehension. "),a(),c(154,"li"),l(155," Encourages students to "),c(156,"b"),l(157,"use new vocabulary in sentences"),a(),l(158,", improving both writing and speaking skills. "),a(),c(159,"li"),l(160," Provides "),c(161,"b"),l(162,"instant, specific feedback"),a(),l(163," on both choices and sentences, so students know exactly what to correct. "),a(),c(164,"li"),l(165," Can be reused many times with different words, making it a strong tool for regular vocabulary practice in class and at home. "),a()()()(),Ie())}function lA(t,n){t&1&&(Me(0),c(1,"ul",53)(2,"li")(3,"b"),l(4,"Introduction"),a(),v(5,"br"),c(6,"ul",54)(7,"li"),l(8," The "),c(9,"b"),l(10,"Find the Word"),a(),l(11," module is a listening and spelling exercise. Students listen to a spoken word, type what they hear, and receive immediate feedback. "),a(),c(12,"li"),l(13," It is designed to connect "),c(14,"b"),l(15,"listening skills"),a(),l(16," with "),c(17,"b"),l(18,"correct spelling"),a(),l(19,", and also helps students learn the word\u2019s meaning and example sentence. "),a(),c(20,"li"),l(21," The activity uses a simple two-panel layout: an audio player on the left and a typing area with attempts and feedback on the right. "),a()()(),c(22,"li")(23,"b"),l(24,"Step 1 \u2013 Start the Activity"),a(),v(25,"br"),c(26,"ul",54)(27,"li"),l(28," The first screen explains that students will listen to a word and type it correctly to improve their word skills. "),a(),c(29,"li"),l(30," When they click the "),c(31,"b"),l(32,"Start Learning"),a(),l(33," button, the module opens the main game screen. "),a(),c(34,"li"),l(35," From the game screen, a "),c(36,"b"),l(37,"Back"),a(),l(38," icon and a "),c(39,"b"),l(40,"Close"),a(),l(41," button are always available at the top, so students and teachers can safely move back or exit the exercise at any time. "),a()()(),c(42,"li")(43,"b"),l(44,"Step 2 \u2013 Listening to the Word (Audio Panel)"),a(),v(45,"br"),c(46,"ul",54)(47,"li"),l(48," On the left side, students see the "),c(49,"b"),l(50,"audio panel"),a(),l(51," with: "),c(52,"ul",55)(53,"li"),l(54,"A "),c(55,"b"),l(56,"Generate audio"),a(),l(57," button to load a new word."),a(),c(58,"li"),l(59,"A large "),c(60,"b"),l(61,"Play / Pause"),a(),l(62," button to listen to the word."),a(),c(63,"li"),l(64,"A "),c(65,"b"),l(66,"progress bar"),a(),l(67," showing how much of the word has played."),a()()(),c(68,"li"),l(69," When students click "),c(70,"b"),l(71,"Generate audio"),a(),l(72,", the system fetches a new audio word. While loading, the button and controls are temporarily disabled to prevent repeated clicks. "),a(),c(73,"li"),l(74," The play button changes state while the audio is playing, and small animations (like moving bars) make it clear that sound is active. "),a(),c(75,"li"),l(76," The audio can be replayed as many times as needed, so students can listen carefully before typing. "),a()()(),c(77,"li")(78,"b"),l(79,"Step 3 \u2013 Typing the Word (Input Panel)"),a(),v(80,"br"),c(81,"ul",54)(82,"li"),l(83," On the right side, students see the "),c(84,"b"),l(85,"Type the word"),a(),l(86," panel with: "),c(87,"ul",55)(88,"li"),l(89,"The title \u201CType the word\u201D."),a(),c(90,"li"),l(91,"Three "),c(92,"b"),l(93,"hearts"),a(),l(94," showing how many attempts are left."),a(),c(95,"li"),l(96,"An input box for typing the word they heard."),a(),c(97,"li"),l(98,"A "),c(99,"b"),l(100,"Submit"),a(),l(101," button to check their answer."),a()()(),c(102,"li"),l(103," The input box is enabled only after the audio has played at least once. This encourages students to listen before they start typing. "),a(),c(104,"li"),l(105," Each time the student submits an answer, the number of hearts (attempts) is updated. When there are no hearts left, the Submit button is disabled. "),a(),c(106,"li"),l(107," If the answer is "),c(108,"b"),l(109,"correct"),a(),l(110,", the input box is highlighted in green and a small tick icon appears. If the answer is "),c(111,"b"),l(112,"wrong"),a(),l(113,", the box is highlighted in red and a clear message encourages the student to try again. "),a(),c(114,"li"),l(115," A short "),c(116,"b"),l(117,"validation message"),a(),l(118," under the input box gives feedback in simple words (for example, \u201CTry again\u201D or \u201CWell done!\u201D). "),a()()(),c(119,"li")(120,"b"),l(121,"Step 4 \u2013 Meaning, Example and Reset"),a(),v(122,"br"),c(123,"ul",54)(124,"li"),l(125," Below the Submit button, there is an action bar with three options: "),c(126,"ul",55)(127,"li")(128,"b"),l(129,"\u{1F4D8} Meaning"),a(),l(130," \u2013 shows the meaning of the word."),a(),c(131,"li")(132,"b"),l(133,"\u270D\uFE0F Example"),a(),l(134," \u2013 shows an example sentence using the word."),a(),c(135,"li")(136,"b"),l(137,"\u27F2 Reset"),a(),l(138," \u2013 loads the next question or restarts the activity."),a()()(),c(139,"li"),l(140," The Meaning and Example buttons are enabled only when it is appropriate (for example, after a word is loaded or after an attempt), so students follow the correct order. "),a(),c(141,"li"),l(142," The Reset button becomes available when the student has finished their attempts or answered correctly. It clears the input and fetches a new word, making it easy to practise many words in one session. "),a(),c(143,"li"),l(144," A popup message may also appear in the centre of the screen to give encouragement or clear information, with a Close button to return to the game. "),a()()(),c(145,"li")(146,"b"),l(147,"Attempts, Safety and Controls"),a(),v(148,"br"),c(149,"ul",54)(150,"li"),l(151," The three-heart system shows students exactly how many tries they have left. This keeps them focused and makes the exercise feel like a small challenge. "),a(),c(152,"li"),l(153," Buttons are disabled during loading and when attempts are over, so there are no accidental double-clicks or confusing states. "),a(),c(154,"li"),l(155," The Back and Close buttons at the top of the game screen allow teachers and students to leave the exercise at any time without losing control. "),a()()(),c(156,"li")(157,"b"),l(158,"Benefits for Students"),a(),v(159,"br"),c(160,"ul",54)(161,"li"),l(162," Improves "),c(163,"b"),l(164,"listening skills"),a(),l(165," by training students to hear individual sounds in English words. "),a(),c(166,"li"),l(167," Strengthens "),c(168,"b"),l(169,"spelling and phonics"),a(),l(170,", as students must convert the sounds they hear into the correct letters. "),a(),c(171,"li"),l(172," Builds "),c(173,"b"),l(174,"vocabulary"),a(),l(175," by linking each word with its meaning and an example sentence. "),a(),c(176,"li"),l(177," Encourages "),c(178,"b"),l(179,"careful thinking"),a(),l(180," through limited attempts, instead of guessing many times without focus. "),a(),c(181,"li"),l(182," Can be used as a short daily warm-up or regular practice activity in class, in the lab, or at home. "),a()()()(),Ie())}function cA(t,n){if(t&1){let e=F();c(0,"div")(1,"div",48),y("click",function(){x(e);let r=_();return C(r.closeGuidePopup())}),a(),c(2,"div",49)(3,"button",50),y("click",function(){x(e);let r=_();return C(r.closeGuidePopup())}),l(4,"\xD7"),a(),Me(5,51),k(6,tA,125,0,"ng-container",52)(7,nA,316,0,"ng-container",52)(8,iA,316,0,"ng-container",52)(9,rA,133,0,"ng-container",52)(10,oA,178,0,"ng-container",52)(11,sA,112,0,"ng-container",52)(12,aA,166,0,"ng-container",52)(13,lA,183,0,"ng-container",52),Ie(),a()()}if(t&2){let e=_();f(5),g("ngSwitch",e.selectedCardTitle),f(),g("ngSwitchCase","Grammar Chat"),f(),g("ngSwitchCase","Grammar Quiz"),f(),g("ngSwitchCase","Voice"),f(),g("ngSwitchCase","Listening"),f(),g("ngSwitchCase","Reading"),f(),g("ngSwitchCase","Writing"),f(),g("ngSwitchCase","Vocabulary Builder"),f(),g("ngSwitchCase","Find Word")}}var rm=(()=>{class t{constructor(e,i,r,o,s){this.router=e,this.authService=i,this.host=r,this.brand=o,this.dialog=s,this.menuOpen=!1,this.showGuidePopup=!1,this.selectedCardTitle=null,this.showAccountMenu=!1,this.showPrivacyPopup=!1,this.showTermsPopup=!1,this.isAuthenticated=!1,this.username=null,this.cards=[{title:"Grammar Chat",image:"assets/images/home/Grammar_chat.png",action:()=>this.goToChat()},{title:"Grammar Quiz",image:"assets/images/home/quiz.png",action:()=>this.goToGenerateQuestions()},{title:"Voice",image:"assets/images/home/voice.png",action:()=>this.goToVoice()},{title:"Listening",image:"assets/images/home/Listening.png",action:()=>this.goToListen()},{title:"Reading",image:"assets/images/home/Reading.png",action:()=>this.goToRead()},{title:"Writing",image:"assets/images/home/writting.png",action:()=>this.goToWrite()},{title:"Vocabulary Builder",image:"assets/images/home/vocabulary.png",action:()=>this.goToVocubalary()},{title:"Find Word",image:"assets/images/home/find_word.png",action:()=>this.goToFindword()}]}ngOnInit(){this.isAuthenticated=this.authService.isLoggedIn(),this.username=localStorage.getItem("username"),this.authSub=this.authService.isLoggedIn$.subscribe(e=>{this.isAuthenticated=e,this.username=e?localStorage.getItem("username"):null,e||(this.showAccountMenu=!1)})}ngAfterViewInit(){}ngOnDestroy(){this.authSub?.unsubscribe()}get usernameInitial(){return(this.username||"").trim().charAt(0).toUpperCase()||"U"}get displayName(){let e=this.username||"";return e?(e.includes("@")?e.split("@")[0]:e).replace(/\b\w/g,r=>r.toUpperCase()):""}get displayEmail(){return this.username||""}toggleAccountMenu(){this.showAccountMenu=!this.showAccountMenu}openAccountMenu(){this.showAccountMenu=!0}closeAccountMenu(){this.showAccountMenu=!1}onDocClick(e){this.host.nativeElement.contains(e.target)||(this.showAccountMenu=!1)}toggleMenu(){this.menuOpen=!this.menuOpen}reloadPage(){window.location.href="/"}goToChat(){this.router.navigate(["/chat"])}goToGenerateQuestions(){this.router.navigate(["/generate-questions"])}goToVoice(){this.router.navigate(["/voice"])}goToListen(){this.router.navigate(["/listen"])}goToWrite(){this.router.navigate(["/writing"])}goToRead(){this.router.navigate(["/reading"])}goToVocubalary(){this.router.navigate(["/vocabulary-builder"])}goToFindword(){this.router.navigate(["/findword"])}goToDetails(e){this.router.navigate(["/details"],{queryParams:{topic:e}})}openGuidePopup(e){this.selectedCardTitle=e,this.showGuidePopup=!0}closeGuidePopup(){this.showGuidePopup=!1,this.selectedCardTitle=null}goToAccount(){this.router.navigate(["/home"]),this.showAccountMenu=!1}logout(){this.authService.logout().subscribe({next:()=>{localStorage.removeItem("username"),this.showAccountMenu=!1,this.router.navigate(["/sign-in"])},error:()=>{localStorage.removeItem("username"),this.showAccountMenu=!1,this.router.navigate(["/sign-in"])}})}openPrivacyPopup(e){e.preventDefault(),this.showPrivacyPopup=!0}closePrivacyPopup(){this.showPrivacyPopup=!1}openTermsPopup(e){e.preventDefault(),this.showTermsPopup=!0}closeTermsPopup(){this.showTermsPopup=!1}openPronunciation(){let e=this.dialog.open(uw,{width:"90vw",maxWidth:"95vw",height:"85vh",disableClose:!0})}openPronunciationVideo(){let e=this.dialog.open(hw,{width:"90vw",maxWidth:"95vw",height:"85vh",disableClose:!0})}openPronunciationRagg(){let e=this.dialog.open(pw,{width:"90vw",maxWidth:"95vw",height:"85vh",disableClose:!0})}openPronunciationRagUpgrade(){let e=this.dialog.open(fw,{width:"90vw",maxWidth:"95vw",height:"85vh",disableClose:!0})}static{this.\u0275fac=function(i){return new(i||t)(M(Pe),M(Xi),M(be),M(bn),M(Jf))}}static{this.\u0275cmp=$({type:t,selectors:[["app-home"]],hostBindings:function(i,r){i&1&&y("click",function(s){return r.onDocClick(s)},!1,Yl)},decls:78,vars:7,consts:[["loginIcon",""],[1,"hero"],[1,"navbar"],[1,"navbar-container"],[1,"logo"],[3,"click","src","alt"],[1,"nav-links"],["routerLink","/chat","routerLinkActive","active-link"],["routerLink","/generate-questions","routerLinkActive","active-link"],["routerLink","/voice","routerLinkActive","active-link",1,"nav-link--disabled"],["routerLink","/listen","routerLinkActive","active-link"],["routerLink","/reading","routerLinkActive","active-link"],["routerLink","/writing","routerLinkActive","active-link"],["routerLink","/vocabulary-builder","routerLinkActive","active-link"],["routerLink","/findword","routerLinkActive","active-link"],[1,"main-menu-dropdown"],["href","#","aria-haspopup","true","aria-expanded","false",1,"nav-link",3,"click"],[1,"fas","fa-caret-down"],[1,"submenu"],["href","#","role","button","aria-pressed","false",3,"click"],["routerLink","/personality-improvement","routerLinkActive","active-link",1,"nav-link--disabled"],["routerLink","/body-language-improvement","routerLinkActive","active-link",1,"nav-link--disabled"],[1,"nav-actions"],[4,"ngIf","ngIfElse"],[1,"hero-text"],[1,"cards-section"],[1,"section-title"],[1,"highlight"],[1,"cards-container"],["class","card","role","button","tabindex","0",3,"click","keydown.enter","keydown.space",4,"ngFor","ngForOf"],[4,"ngIf"],[1,"avatar",3,"click"],["class","account-menu",3,"mouseleave",4,"ngIf"],[1,"account-menu",3,"mouseleave"],[1,"account-header"],[1,"avatar","avatar-lg"],[1,"account-meta"],[1,"account-name"],[1,"account-email"],[1,"account-item",3,"click"],["routerLink","/auth","aria-label","Login",1,"login-button"],[1,"fas","fa-user"],["role","button","tabindex","0",1,"card",3,"click","keydown.enter","keydown.space"],[1,"card-image"],[3,"src","alt"],[1,"card-content"],[1,"card-buttons"],[1,"know-more-btn",3,"click"],[1,"user-guide-overlay",3,"click"],["role","dialog","aria-modal","true",1,"user-guide-modal"],["aria-label","Close",1,"user-guide-close-icon",3,"click"],[3,"ngSwitch"],[4,"ngSwitchCase"],[2,"text-align","justify","font-size","15px"],[2,"list-style","unset","margin-left","1.25rem"],[2,"list-style","disc","margin-left","1.4rem"]],template:function(i,r){if(i&1){let o=F();c(0,"div",1)(1,"nav",2)(2,"div",3)(3,"div",4)(4,"img",5),y("click",function(){return x(o),C(r.reloadPage())}),a()(),c(5,"ul",6)(6,"li")(7,"a",7),l(8,"Chat"),a()(),c(9,"li")(10,"a",8),l(11,"Grammar"),a()(),c(12,"li")(13,"a",9),l(14,"Voice"),a()(),c(15,"li")(16,"a",10),l(17,"Listening"),a()(),c(18,"li")(19,"a",11),l(20,"Reading"),a()(),c(21,"li")(22,"a",12),l(23,"Writing"),a()(),c(24,"li")(25,"a",13),l(26,"Vocabulary-Builder"),a()(),c(27,"li")(28,"a",14),l(29,"Find Word"),a()(),c(30,"li",15)(31,"a",16),y("click",function(d){return x(o),C(d.preventDefault())}),l(32," General "),v(33,"i",17),a(),c(34,"ul",18)(35,"li")(36,"a",19),y("click",function(d){return x(o),r.openPronunciation(),C(d.preventDefault())}),l(37," Pronunciation Trainer "),a()(),c(38,"li")(39,"a",19),y("click",function(d){return x(o),r.openPronunciationVideo(),C(d.preventDefault())}),l(40," Pronunciation Trainer Video "),a()(),c(41,"li")(42,"a",19),y("click",function(d){return x(o),r.openPronunciationRagg(),C(d.preventDefault())}),l(43," Pronunciation Trainer Rag "),a()(),c(44,"li")(45,"a",19),y("click",function(d){return x(o),r.openPronunciationRagUpgrade(),C(d.preventDefault())}),l(46," Pronunciation Trainer Rag Upgrade "),a()(),c(47,"li")(48,"a",20),l(49,"Personality Improvement"),a()(),c(50,"li")(51,"a",21),l(52,"Body Language Improvement"),a()()()()(),c(53,"div",22),k(54,KT,4,3,"ng-container",23)(55,JT,2,1,"ng-template",null,0,dn),a()()(),c(57,"div",24)(58,"h1"),l(59),a(),c(60,"h2"),l(61,"A Self-Learning System"),a(),c(62,"p"),l(63," It is a personalized self-learning system helps students to improve their language skills through interactive"),v(64,"br"),l(65,"and customized exercises. With engaging activities and instant feedback,"),v(66,"br"),l(67,"learning becomes easy and enjoyable! "),a()(),c(68,"section",25)(69,"h2",26),l(70," What would you like to "),c(71,"span",27),l(72,"learn"),a(),l(73," today? "),a(),c(74,"div",28),k(75,eA,7,2,"div",29),a()(),k(76,cA,14,9,"div",30),a(),v(77,"app-footer")}if(i&2){let o=Dt(56);f(4),g("src",r.brand.logo,H)("alt",r.brand.name+" Logo"),f(50),g("ngIf",r.isAuthenticated&&r.username)("ngIfElse",o),f(5),U(r.brand.name),f(16),g("ngForOf",r.cards),f(),g("ngIf",r.showGuidePopup)}},dependencies:[vt,Fe,Cs,_c,qi,gy,xd],styles:[".hero[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;position:relative}.hero-text[_ngcontent-%COMP%]{color:#fff;text-align:left;height:100vh;display:flex;flex-direction:column;justify-content:center;padding-left:1vw;background-image:url(/assets/images/home/background.png);background-repeat:no-repeat;background-position:center center;background-size:cover;position:relative;top:5vw;padding-bottom:5vw}h1[_ngcontent-%COMP%]{font-size:7vw;font-family:Amonk_Outline;margin-bottom:3vw}.hero-text[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:1.5vw;font-weight:600;color:#0f0}.hero-text[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1vw;line-height:1.5vw}.navbar[_ngcontent-%COMP%]{background-color:#fff;box-shadow:0 2px 4px #0000001a;position:fixed;font-size:1vw;width:100%;z-index:1000}.navbar-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:0vw 1vw}.logo[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1vw}.logo[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{height:5vw;width:auto;cursor:pointer}.logo[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1.5vw;font-weight:700;color:#007bff}.nav-links[_ngcontent-%COMP%]{display:flex;gap:2vw;list-style:none;margin:0;padding:0;flex:1;justify-content:center}.nav-links[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%], .nav-links[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .nav-link[_ngcontent-%COMP%]{text-decoration:none;color:#333;font-size:1.5vw;font-weight:700}.nav-links[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .nav-link[_ngcontent-%COMP%]:hover, .nav-links[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{color:#007bff}.nav-link--disabled[_ngcontent-%COMP%]{opacity:.6;cursor:not-allowed;pointer-events:none}.login-button[_ngcontent-%COMP%]{display:inline-flex;align-items:center;justify-content:center;width:2.4vw;height:2.4vw;border-radius:50%;border:2px solid #006780;color:#006780;background:#fff;font-size:1.2vw;text-decoration:none;transition:background .2s,color .2s,transform .2s,box-shadow .2s;box-shadow:0 2px 8px #5d91c31f}.login-button[_ngcontent-%COMP%]:hover{background:#006780;color:#fff;transform:translateY(-1px) scale(1.05);box-shadow:0 4px 16px #5d91c32e}.nav-actions[_ngcontent-%COMP%]{position:relative;padding-right:1.5vw}.avatar[_ngcontent-%COMP%]{width:2.4vw;height:2.4vw;min-width:32px;min-height:32px;border-radius:50%;background:#e6f2ff;border:2px solid #137ec4;color:#137ec4;display:inline-flex;align-items:center;justify-content:center;font-weight:800;cursor:pointer;box-shadow:0 2px 8px #5d91c31f}.avatar-lg[_ngcontent-%COMP%]{width:44px;height:44px;border-radius:50%;background:#e6f2ff;border:2px solid #137ec4;color:#137ec4;display:inline-flex;align-items:center;justify-content:center;font-weight:800}.account-menu[_ngcontent-%COMP%]{position:absolute;top:3.2vw;right:0;min-width:260px;background:#fff;border-radius:12px;box-shadow:0 12px 24px #0000001f;padding:12px;z-index:1200}.account-header[_ngcontent-%COMP%]{display:flex;gap:12px;align-items:center;padding:6px 6px 10px}.account-meta[_ngcontent-%COMP%]{display:flex;flex-direction:column}.account-name[_ngcontent-%COMP%]{font-weight:800;color:#111827}.account-email[_ngcontent-%COMP%]{color:#6b7280;font-size:.9rem}.account-item[_ngcontent-%COMP%]{padding:10px;border-radius:8px;cursor:pointer;color:#111827}.account-item[_ngcontent-%COMP%]:hover{background:#f3f4f6}.account-menu[_ngcontent-%COMP%] hr[_ngcontent-%COMP%]{margin:8px 0;border:none;border-top:1px solid #e5e7eb}.card[_ngcontent-%COMP%]{background-color:#fff;border-radius:10px;box-shadow:0 4px 8px #0000001a;overflow:hidden;transition:transform .3s ease;width:100%;max-width:460px;margin:auto;cursor:pointer}.card[_ngcontent-%COMP%]:hover{transform:translateY(-10px)}.card-image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:auto;display:block}.card-content[_ngcontent-%COMP%]{padding:1.5vw;text-align:left}.cards-section[_ngcontent-%COMP%]{text-align:center;padding:3vw 2vw;background-color:#f9f9f9;position:relative}.section-title[_ngcontent-%COMP%]{font-size:2.5vw;font-weight:700;margin-bottom:2vw}.cards-container[_ngcontent-%COMP%]{gap:3vw;justify-content:center;display:grid;grid-template-columns:repeat(3,1fr);margin:0 auto;width:80%}.card-buttons[_ngcontent-%COMP%]{display:flex;gap:1vw;margin-top:1vw;flex-wrap:nowrap;justify-content:center}.card-button[_ngcontent-%COMP%]{white-space:nowrap;padding:.5vw;font-size:1vw;font-weight:700;color:#007bff;background-color:transparent;border:2px solid #007bff;border-radius:5px;cursor:pointer;transition:all .3s ease}.card-button[_ngcontent-%COMP%]:hover{background-color:#007bff;color:#fff}.user-guide-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;background:#00000059;z-index:2000}.user-guide-modal[_ngcontent-%COMP%]{position:fixed;top:52%;left:50%;transform:translate(-50%,-50%);height:38vw;width:50vw;background:linear-gradient(135deg,#fff 80%,#e3fcec);color:#222;box-shadow:0 12px 40px #5d91c338;border-radius:18px;padding:1vw;z-index:2001;overflow:visible;border:10px solid var(--main-accent-color);box-sizing:border-box}.user-guide-modal[_ngcontent-%COMP%] > ul[_ngcontent-%COMP%], .user-guide-modal[_ngcontent-%COMP%] > ol[_ngcontent-%COMP%]{max-height:34.6vw;overflow-y:auto;padding-right:.5vw;margin:0}.user-guide-close-icon[_ngcontent-%COMP%]{top:-22px;right:-22px}.user-guide-modal[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{line-height:1.7;font-size:1.1vw;background:#5d91c312;padding:.5vw;box-shadow:0 2px 8px #5d91c30f}.user-guide-modal[_ngcontent-%COMP%] li[_ngcontent-%COMP%] b[_ngcontent-%COMP%]{color:#2b6296;font-size:1.15vw}@media (max-width: 600px){.user-guide-modal[_ngcontent-%COMP%]{width:90vw;height:60vw;border-radius:12px;padding:4vw 2vw 2vw}.user-guide-modal[_ngcontent-%COMP%] > ul[_ngcontent-%COMP%], .user-guide-modal[_ngcontent-%COMP%] > ol[_ngcontent-%COMP%]{max-height:52vw;overflow-y:auto;padding-right:1.5vw}.user-guide-close-icon[_ngcontent-%COMP%]{font-size:6vw;top:2vw;right:2vw;width:6vw;height:6vw;display:flex;align-items:center;justify-content:center;line-height:1}.card-button[_ngcontent-%COMP%], .know-more-btn[_ngcontent-%COMP%]{font-size:2.8vw;padding:8px 12px}}.card-button[_ngcontent-%COMP%], .know-more-btn[_ngcontent-%COMP%]{padding:10px 18px;background:#006780;color:#fff;border:2px solid #006780;border-radius:8px;font-size:1vw;font-weight:700;cursor:pointer;margin:0 6px 6px 0;box-shadow:0 2px 8px #5d91c31f;transition:background .2s,box-shadow .2s,transform .2s,color .2s}.card-button[_ngcontent-%COMP%]:hover, .know-more-btn[_ngcontent-%COMP%]:hover{background:#fff;color:#006780;box-shadow:0 4px 16px #5d91c32e;transform:scale(1.05)}.privacy-popup-content[_ngcontent-%COMP%]{max-height:60vh;overflow-y:auto;padding-right:1vw}.main-menu-dropdown[_ngcontent-%COMP%]{position:relative}.main-menu-dropdown[_ngcontent-%COMP%] > .nav-link[_ngcontent-%COMP%]{display:flex;align-items:center;cursor:pointer}.main-menu-dropdown[_ngcontent-%COMP%] .fas.fa-caret-down[_ngcontent-%COMP%]{margin-left:.5vw;font-size:1vw;transition:transform .2s}.main-menu-dropdown[_ngcontent-%COMP%]:hover .fas.fa-caret-down[_ngcontent-%COMP%], .main-menu-dropdown[_ngcontent-%COMP%]:focus-within .fas.fa-caret-down[_ngcontent-%COMP%]{transform:rotate(180deg)}.submenu[_ngcontent-%COMP%]{display:none;position:absolute;top:100%;left:50%;transform:translate(-50%);min-width:220px;background:#fff;box-shadow:0 8px 24px #0000001f;border-radius:8px;padding:.5vw 0;z-index:1100;list-style:none;white-space:nowrap}.main-menu-dropdown[_ngcontent-%COMP%]:hover .submenu[_ngcontent-%COMP%], .main-menu-dropdown[_ngcontent-%COMP%]:focus-within .submenu[_ngcontent-%COMP%]{display:block}.submenu[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{display:block;padding:.7vw 1vw;color:#333;font-size:1.2vw;font-weight:600;text-decoration:none;border-radius:6px;transition:background .2s,color .2s}.submenu[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover, .submenu[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a.active-link[_ngcontent-%COMP%]{background:#e6f2ff;color:#137ec4}"]})}}return t})();var dA=["*"],xn=(()=>{class t{constructor(){this.type="button",this.class="",this.disabled=!1}static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=$({type:t,selectors:[["app-button"]],inputs:{type:"type",class:"class",disabled:"disabled"},standalone:!0,features:[ye],ngContentSelectors:dA,decls:2,vars:3,consts:[[3,"type","ngClass","disabled"]],template:function(i,r){i&1&&(Ln(),c(0,"button",0),Vn(1),a()),i&2&&g("type",r.type)("ngClass",r.class)("disabled",r.disabled)},dependencies:[Jt],styles:["button[_ngcontent-%COMP%]{background-color:#006780;color:#fff;border:none;padding:15px 32px;font-size:1.3vw;border-radius:.5vw;cursor:pointer;transition:background-color .3s,transform .3s;font-weight:700}button[_ngcontent-%COMP%]:disabled{background:#bdbdbd;cursor:not-allowed}button[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#18788f;transform:scale(1.05)}"]})}}return t})();var mw=(()=>{class t{constructor(e){this.http=e,this.baseUrl=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space/media":"http://localhost:5000/media"}getVideoUrl(e){return`${this.baseUrl}/videos/${e}`}getVideos(){return this.http.get(`${this.baseUrl}/videos`)}uploadVideo(e){return this.http.post(`${this.baseUrl}/upload-video`,e)}generateQuestions(e){return this.http.post(`${this.baseUrl}/generate-questions-dynamicvideo`,{filename:e})}static{this.\u0275fac=function(i){return new(i||t)(I(De))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var hA=(t,n,e)=>({"selected-option":t,correct:n,incorrect:e});function pA(t,n){t&1&&(c(0,"div",7),v(1,"div",8),a())}function fA(t,n){t&1&&(c(0,"div",17),v(1,"img",18),a())}function mA(t,n){if(t&1){let e=F();c(0,"div",17)(1,"video",19),y("ended",function(){x(e);let r=_(2);return C(r.onVideoEnded())})("error",function(){x(e);let r=_(2);return C(r.onVideoError())}),v(2,"source",20),l(3," Your browser does not support the video tag. "),a()()}if(t&2){let e=_(2);f(2),g("src",e.videoUrl,H)("type",e.getVideoMimeType(e.videoUrl))}}function gA(t,n){if(t&1){let e=F();c(0,"app-button",21),y("click",function(){x(e);let r=_(2);return C(r.toggleVideoPlayPause())}),l(1),a()}if(t&2){let e=_(2);f(),ne(" ",e.isVideoPlaying?"Pause":"Play"," ")}}function vA(t,n){if(t&1){let e=F();c(0,"app-button",21),y("click",function(){x(e);let r=_(2);return C(r.goToListen())}),l(1," Reset "),a()}}function _A(t,n){if(t&1){let e=F();c(0,"div",9)(1,"div",10)(2,"h2"),l(3,"Welcome to the Listening Exercise"),a(),c(4,"p"),l(5," This listening exercise helps students improve their English listening skills. Please upload your video and watch it fully. After the video is completed, the "),c(6,"strong"),l(7,"Generate Questions"),a(),l(8," button will be enabled. Answer questions to practice and strengthen understanding and memory. "),a(),c(9,"app-button",11),y("click",function(){x(e);let r=_();return C(r.generateQuestions())}),l(10," Generate Questions "),a()(),c(11,"div",12),k(12,fA,2,0,"div",13)(13,mA,4,2,"div",13),c(14,"input",14,0),y("change",function(r){x(e);let o=_();return C(o.onFileSelected(r))}),a(),c(16,"div",15),k(17,gA,2,1,"app-button",16),c(18,"app-button",11),y("click",function(){x(e);let r=Dt(15);return _().stopVideoIfPlaying(),C(r.click())}),l(19),a(),k(20,vA,2,0,"app-button",16),a()()()}if(t&2){let e=_();f(9),g("disabled",!e.isGenerateEnabled),f(3),g("ngIf",!e.videoUrl),f(),g("ngIf",e.videoUrl),f(4),g("ngIf",e.videoUrl),f(),g("disabled",e.isReplaceDisabled),f(),ne(" ",e.uploadSuccess?"Replace Video":"Upload Video"," "),f(),g("ngIf",e.videoUrl&&e.isReplaceDisabled)}}function bA(t,n){if(t&1){let e=F();c(0,"button",37),y("click",function(){let r=x(e).index,o=_(2);return C(o.checkAnswerTemp(r))}),l(1),a()}if(t&2){let e=n.$implicit,i=n.index,r=_(2);g("ngClass",oc(3,hA,r.selectedOptionIndex===i&&!r.validated,r.validated&&e===r.questions[r.currentQuestionIndex].answer,r.validated&&r.selectedOptionIndex===i&&e!==r.questions[r.currentQuestionIndex].answer))("disabled",r.validated),f(),ne(" ",e," ")}}function yA(t,n){if(t&1){let e=F();c(0,"app-button",11),y("click",function(){x(e);let r=_(2);return C(r.validateAnswer(r.questions[r.currentQuestionIndex].answer,r.currentQuestionIndex))}),l(1," Submit "),a()}if(t&2){let e=_(2);g("disabled",e.selectedOptionIndex===null)}}function wA(t,n){if(t&1){let e=F();c(0,"app-button",21),y("click",function(){x(e);let r=_(2);return C(r.nextQuestion())}),l(1," Next \u25B6 "),a()}}function xA(t,n){if(t&1){let e=F();c(0,"app-button",21),y("click",function(){x(e);let r=_(2);return C(r.resetQuestions())}),l(1," Regenerate Questions "),a()}}function CA(t,n){if(t&1){let e=F();c(0,"div",22)(1,"div",23)(2,"div",24)(3,"img",25),y("click",function(){x(e);let r=_();return C(r.goBack())}),a(),c(4,"h2",26),l(5),a(),c(6,"button",27),y("click",function(){x(e);let r=_();return C(r.goToListen())}),l(7," \xD7 "),a()(),c(8,"p",28),l(9),a(),c(10,"div",29)(11,"div",30),k(12,bA,2,7,"button",31),a(),c(13,"div",32),v(14,"img",33),a()(),c(15,"div",34)(16,"app-button",11),y("click",function(){x(e);let r=_();return C(r.prevQuestion())}),l(17," \u25C0 Previous "),a(),c(18,"div",35),k(19,yA,2,1,"app-button",36)(20,wA,2,0,"app-button",16)(21,xA,2,0,"app-button",16),a()()()()}if(t&2){let e=_();f(5),Kn(" Question ",e.currentQuestionIndex+1," of ",e.questions.length," "),f(4),ne(" ",e.questions[e.currentQuestionIndex].question," "),f(3),g("ngForOf",e.questions[e.currentQuestionIndex].options),f(2),g("src",e.getFeedbackImage(),H),f(2),g("disabled",e.currentQuestionIndex===0),f(3),g("ngIf",!e.validated),f(),g("ngIf",e.validated&&e.currentQuestionIndex{class t{constructor(e,i,r){this.http=e,this.listenService=i,this.router=r,this.videoUrl="",this.uploadSuccess=!1,this.isGenerateEnabled=!1,this.isLoading=!1,this.questions=[],this.selectedAnswers=[],this.selectedOptions={},this.currentQuestionIndex=0,this.validated=!1,this.selectedOptionIndex=null,this.popupMessage="",this.questionsDisplayed=!1,this.isVideoPlaying=!1,this.isReplaceDisabled=!1}ngOnInit(){this.videoUrl=""}ngAfterViewChecked(){this.questions.length>0&&!this.questionsDisplayed&&setTimeout(()=>{this.isLoading=!1,this.questionsDisplayed=!0},100)}onFileSelected(e){let i=e.target.files[0];if(i&&i.name.toLowerCase().endsWith(".mp4")){this.selectedFile=i;let r=new FormData;r.append("video",i),this.listenService.uploadVideo(r).subscribe({next:o=>{let s=this.listenService.getVideoUrl(o.filename);this.videoUrl="",setTimeout(()=>{this.videoUrl=s;let d=document.getElementById("videoPreview");d&&d.load(),this.uploadSuccess=!0,this.isGenerateEnabled=!1,this.isVideoPlaying=!1,setTimeout(()=>{this.popupMessage="\u2705 Video uploaded successfully!",setTimeout(()=>this.popupMessage="",7e3)},1e3)})},error:o=>{console.error("Upload failed",o),alert("\u274C Video upload failed.")}})}else alert("Please upload a valid MP4 file.")}onVideoEnded(){this.isGenerateEnabled=!0,this.isVideoPlaying=!1}generateQuestions(){if(this.stopVideoIfPlaying(),!this.videoUrl){alert("Please upload a video first.");return}let e=this.videoUrl.split("/").pop()?.trim();if(!e){alert("Error: Unable to extract filename."),console.error("Filename extraction failed from videoUrl:",this.videoUrl);return}this.isLoading=!0,this.listenService.generateQuestions(e).subscribe({next:i=>{i.questions&&i.questions.length>0?this.questions=i.questions:alert("No questions could be generated."),this.isLoading=!1},error:i=>{console.error("Error generating questions:",i),alert(i.error?.error||"Failed to generate questions."),this.isLoading=!1}})}checkAnswer(e,i,r){this.selectedOptions[r]=e,this.selectedAnswers[r]=e===i?"correct":"incorrect"}checkAnswerTemp(e){this.selectedOptionIndex=e}validateAnswer(e,i){if(this.selectedOptionIndex===null)return;this.validated=!0;let r=this.questions[i].options[this.selectedOptionIndex];this.selectedOptions[i]=r,this.selectedAnswers[i]=r===e?"correct":"incorrect"}prevQuestion(){if(this.currentQuestionIndex>0){this.currentQuestionIndex--;let e=this.selectedOptions[this.currentQuestionIndex];this.selectedOptionIndex=e?this.questions[this.currentQuestionIndex].options.indexOf(e):null,this.validated=!!this.selectedAnswers[this.currentQuestionIndex]}}nextQuestion(){if(this.currentQuestionIndex{i.questions&&i.questions.length>0?this.questions=i.questions:alert("No questions could be regenerated."),this.isLoading=!1},error:i=>{console.error("Error regenerating questions:",i),alert(i.error?.error||"Failed to regenerate questions."),this.isLoading=!1}})}goBack(){this.questions=[],this.selectedAnswers=[],this.questionsDisplayed=!1}goToHome(){this.router.navigate(["/home"])}goToListen(){this.questions=[],this.selectedAnswers=[],this.selectedOptions={},this.validated=!1,this.selectedOptionIndex=null,this.currentQuestionIndex=0,this.questionsDisplayed=!1,this.videoUrl="",this.uploadSuccess=!1,this.isGenerateEnabled=!1,this.isVideoPlaying=!1,this.isReplaceDisabled=!1;let e=document.querySelector('input[type="file"]');e&&(e.value="")}getVideoMimeType(e){return e.endsWith(".mp4")?"video/mp4":e.endsWith(".mov")?"video/quicktime":"application/octet-stream"}onVideoLoaded(){console.log("Video metadata loaded:",this.videoUrl)}onVideoCanPlay(){console.log("Video is ready to play:",this.videoUrl)}onVideoError(){console.error("Error playing video:",this.videoUrl),alert("Failed to play the video. Please check the file format or try a different browser.")}getFeedbackImage(){if(!this.validated)return"assets/images/listen/group.png";let e=this.selectedAnswers[this.currentQuestionIndex];return e==="correct"?"assets/images/listen/confetti.png":e==="incorrect"?"assets/images/listen/sad.png":"assets/images/listen/group.png"}toggleVideoPlayPause(){let e=document.getElementById("videoPreview");e&&(e.paused?(e.play(),this.isVideoPlaying=!0,this.isReplaceDisabled=!0):(e.pause(),this.isVideoPlaying=!1))}stopVideoIfPlaying(){let e=document.getElementById("videoPreview");e&&!e.paused&&(e.pause(),this.isVideoPlaying=!1)}static{this.\u0275fac=function(i){return new(i||t)(M(De),M(mw),M(Pe))}}static{this.\u0275cmp=$({type:t,selectors:[["app-listen"]],standalone:!0,features:[ye],decls:6,vars:5,consts:[["uploadInput",""],["class","loader-overlay",4,"ngIf"],[3,"title"],["src","assets/images/listen.png","alt","Chat Background",1,"grammar-bg"],["class","listen-card1",4,"ngIf"],["class","question-navigation",4,"ngIf"],["class","upload-popup",4,"ngIf"],[1,"loader-overlay"],[1,"loader"],[1,"listen-card1"],[1,"left-content"],[3,"click","disabled"],[1,"video-upload-container"],["class","video-preview-container",4,"ngIf"],["type","file","accept","video/mp4",1,"video-upload-input",3,"change"],[1,"button-group"],[3,"click",4,"ngIf"],[1,"video-preview-container"],["src","assets/images/listen/listen3.png","alt","Upload a video",1,"video-placeholder"],["id","videoPreview","controls","","controlsList","nodownload",3,"ended","error"],[3,"src","type"],[3,"click"],[1,"question-navigation"],[1,"question-block"],[1,"question-header-row"],["src","assets/images/back.png","alt","Go Back",1,"back-btn",3,"click"],[1,"question-heading"],["aria-label","Close",1,"user-guide-close-icon",3,"click"],[1,"question-text"],[1,"question-content-row"],[1,"options-container"],[3,"ngClass","disabled","click",4,"ngFor","ngForOf"],[1,"question-side-image"],["alt","Rabbit Feedback Image",3,"src"],[1,"question-footer"],[1,"right-buttons"],[3,"disabled","click",4,"ngIf"],[3,"click","ngClass","disabled"],[1,"upload-popup"]],template:function(i,r){i&1&&(k(0,pA,2,0,"div",1),v(1,"app-header",2)(2,"img",3),k(3,_A,21,7,"div",4)(4,CA,22,9,"div",5)(5,SA,2,1,"div",6)),i&2&&(g("ngIf",r.isLoading),f(),g("title","Listen"),f(2),g("ngIf",r.questions.length===0),f(),g("ngIf",r.questions.length>0),f(),g("ngIf",r.popupMessage))},dependencies:[xn,yt,ze,Jt,vt,Fe],styles:["body[_ngcontent-%COMP%], html[_ngcontent-%COMP%]{margin:0;padding:0;box-sizing:border-box;height:100%;display:flex;flex-direction:column;font-family:Raleway;background-color:#2322206e}.listen-card1[_ngcontent-%COMP%]{background:#ffffffe6;width:80vw;position:absolute;top:52%;left:50%;transform:translate(-50%,-50%);height:73vh;display:flex;justify-content:space-between;align-items:flex-start;padding:3vw;gap:2vw;border:10px solid var(--main-accent-color);border-radius:1vw;box-shadow:0 .4vw .8vw #0009;margin:2vw auto;max-width:90%}.listen-card1[_ngcontent-%COMP%] .left-content[_ngcontent-%COMP%]{flex:1;max-width:50%}.left-content[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:2.5vw;font-weight:700;color:#006780;margin-bottom:20px}.left-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.4vw;margin-bottom:2vw;text-align:justify}.listen-card1[_ngcontent-%COMP%] .video-upload-container[_ngcontent-%COMP%]{flex:1;max-width:50%;display:flex;flex-direction:column;align-items:center}.video-preview-container[_ngcontent-%COMP%]{margin-bottom:1.5vw}.video-placeholder[_ngcontent-%COMP%]{width:88%;max-width:100%;border-radius:1vw;object-fit:contain;margin-left:4vw}.video-preview-container[_ngcontent-%COMP%] video[_ngcontent-%COMP%]{width:100%;max-height:40vh;border-radius:.5vw;box-shadow:0 .4vw .8vw #0003;margin-top:2vw}.video-upload-input[_ngcontent-%COMP%]{display:none}.loader-overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1000}.loader[_ngcontent-%COMP%]{font-size:15px;width:1.5em;height:1.5em;border-radius:50%;position:relative;text-indent:-9999em;animation:_ngcontent-%COMP%_mulShdSpin 1.1s infinite ease;transform:translateZ(0)}@keyframes _ngcontent-%COMP%_mulShdSpin{0%,to{box-shadow:0 -3em gray,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808080,-2.2em -2.2em #808080b3}12.5%{box-shadow:0 -3em #808080b3,2.2em -2.2em gray,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808080}25%{box-shadow:0 -3em #80808080,2.2em -2.2em #808080b3,3em 0 gray,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}37.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808080,3em 0 #808080b3,2.2em 2.2em gray,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}50%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808080,2.2em 2.2em #808080b3,0 3em gray,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}62.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808080,0 3em #808080b3,-2.2em 2.2em gray,-3em 0 #80808033,-2.2em -2.2em #80808033}75%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808080,-2.2em 2.2em #808080b3,-3em 0 gray,-2.2em -2.2em #80808033}87.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808080,-3em 0 #808080b3,-2.2em -2.2em gray}}.question-block[_ngcontent-%COMP%]{background:#fff;padding:2vw;box-shadow:0 .4vw 1vw #0003;max-width:80%;margin:2vw auto;position:relative;border:10px solid var(--main-accent-color);border-radius:1vw;box-shadow:inset 0 0 10px #00968880,0 .4vw .8vw #0003}.options-container[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:3vw;margin-top:1vw;align-items:center}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background-color:#fff;color:#333;border:2px solid #cccccc;font-size:1.3vw;border-radius:3vw;transition:all .3s ease;font-weight:600;display:flex;align-items:center;justify-content:center;box-shadow:0 .2vw .5vw #0000001a;min-height:6vw;height:100%;text-align:center;white-space:normal;word-break:break-word;width:21vw}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover{background-color:#f0f9ff;transform:scale(1.01);border-color:#0097a7}.selected-option[_ngcontent-%COMP%]{background-color:#e1f5fe!important;border-color:#0277bd!important;color:#01579b!important;font-weight:600}.correct[_ngcontent-%COMP%]{background-color:#4caf506e!important;border-color:#388e3c!important;color:#000;font-weight:700}.incorrect[_ngcontent-%COMP%]{background-color:#f443367d!important;border-color:#c62828!important;color:#000;font-weight:700}.question-footer[_ngcontent-%COMP%]{display:flex;justify-content:space-between;margin-top:2vw;align-items:center}.right-buttons[_ngcontent-%COMP%]{display:flex;gap:1vw}.question-heading[_ngcontent-%COMP%]{font-size:2vw;color:#006780;flex:1;text-align:center;font-weight:700;margin:0}.question-text[_ngcontent-%COMP%]{font-size:1.6vw;font-weight:600;color:#333;text-align:left}.question-content-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;margin-top:1vw;gap:2vw}.question-side-image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:34vw;height:auto;max-height:16vw;object-fit:contain}.upload-popup[_ngcontent-%COMP%]{position:fixed;top:2vw;right:2vw;background-color:#4caf50;color:#fff;padding:1vw 2vw;border-radius:.5vw;box-shadow:0 .3vw .6vw #0003;z-index:1001;font-size:1.2vw;animation:_ngcontent-%COMP%_fadeInOut 3s ease-in-out}@keyframes _ngcontent-%COMP%_fadeInOut{0%{opacity:0;transform:translateY(-20%)}10%{opacity:1;transform:translateY(0)}90%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-20%)}}.button-group[_ngcontent-%COMP%]{display:flex;gap:1vw;margin-top:1vw}.question-header-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1vw}.user-guide-close-icon[_ngcontent-%COMP%]{top:-1.2vw;right:-1.3vw}.back-btn[_ngcontent-%COMP%]{position:absolute;top:3vw;left:1vw;transform:translateY(-50%);cursor:pointer;padding:0 1rem;transition:transform .3s;width:6vw}.back-btn[_ngcontent-%COMP%]:hover{transform:translateY(-50%) scale(1.1)}"]})}}return t})();var om={};(function t(n,e,i,r){var o=!!(n.Worker&&n.Blob&&n.Promise&&n.OffscreenCanvas&&n.OffscreenCanvasRenderingContext2D&&n.HTMLCanvasElement&&n.HTMLCanvasElement.prototype.transferControlToOffscreen&&n.URL&&n.URL.createObjectURL),s=typeof Path2D=="function"&&typeof DOMMatrix=="function",d=function(){if(!n.OffscreenCanvas)return!1;var P=new OffscreenCanvas(1,1),E=P.getContext("2d");E.fillRect(0,0,1,1);var G=P.transferToImageBitmap();try{E.createPattern(G,"no-repeat")}catch{return!1}return!0}();function u(){}function h(P){var E=e.exports.Promise,G=E!==void 0?E:n.Promise;return typeof G=="function"?new G(P):(P(u,u),null)}var p=function(P,E){return{transform:function(G){if(P)return G;if(E.has(G))return E.get(G);var re=new OffscreenCanvas(G.width,G.height),_e=re.getContext("2d");return _e.drawImage(G,0,0),E.set(G,re),re},clear:function(){E.clear()}}}(d,new Map),m=function(){var P=Math.floor(16.666666666666668),E,G,re={},_e=0;return typeof requestAnimationFrame=="function"&&typeof cancelAnimationFrame=="function"?(E=function(we){var Se=Math.random();return re[Se]=requestAnimationFrame(function K(Ee){_e===Ee||_e+P-1{class t{constructor(e){this.http=e,this.baseUrl=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space/media":"http://localhost:5000/media"}generateQuestions(e,i){return this.http.post(`${this.baseUrl}/generate-questions`,{topic:e,difficulty:i})}validateAnswer(e,i,r){return this.http.post(`${this.baseUrl}/validate-answer`,{question:e,user_answer:i,topic:r})}validateAllAnswers(e){return this.http.post(`${this.baseUrl}/validate-all-answers`,{questions:e})}static{this.\u0275fac=function(i){return new(i||t)(I(De))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var MA=(t,n)=>({"correct-answer":t,"wrong-answer":n});function IA(t,n){t&1&&(c(0,"div",16),v(1,"span",17),a())}function DA(t,n){if(t&1){let e=F();c(0,"div",21),y("click",function(){let r=x(e).$implicit,o=_(2);return C(o.selectTopic(r))}),l(1),a()}if(t&2){let e=n.$implicit;f(),ne(" ",e," ")}}function PA(t,n){if(t&1&&(c(0,"div",18)(1,"div",19),k(2,DA,2,1,"div",20),a()()),t&2){let e=_();f(2),g("ngForOf",e.hardcodedTopics)}}function kA(t,n){if(t&1&&(c(0,"div",28),l(1),Ni(2,"titlecase"),a()),t&2){let e=_().$implicit;f(),ne(" ",_s(2,1,e)," ")}}function OA(t,n){if(t&1&&(c(0,"div",26),k(1,kA,3,3,"div",27),a()),t&2){let e=n.$implicit,i=_(2);W("active",i.activateLevelDot&&i.currentDifficulty===e),f(),g("ngIf",i.showLevelTooltip&&i.currentDifficulty===e)}}function TA(t,n){if(t&1&&(c(0,"div",22),v(1,"div",23),c(2,"div",24),k(3,OA,2,3,"div",25),a()()),t&2){let e=_();f(),Nt("width",e.getProgressWidth()),f(2),g("ngForOf",e.difficultyLevels)}}function AA(t,n){if(t&1){let e=F();c(0,"div",29)(1,"div",30)(2,"p"),l(3),a(),c(4,"app-button",31),y("click",function(){x(e);let r=_();return C(r.closeErrorPopup())}),l(5,"Close"),a()()()}if(t&2){let e=_();f(3),U(e.error)}}function RA(t,n){if(t&1){let e=F();c(0,"span",46)(1,"input",47),gt("ngModelChange",function(r){x(e);let o=_(2).$implicit,s=_(3);return Pt(s.userAnswers[o.index],r)||(s.userAnswers[o.index]=r),C(r)}),y("input",function(r){x(e);let o=_(2).$implicit,s=_(3);return s.onInput(r,o.index),C(s.onAnswerChange(o.index))}),a()()}if(t&2){let e=_(2).$implicit,i=_(3);f(),mt("ngModel",i.userAnswers[e.index]),g("readonly",i.isValidationInProgress||i.readonlyAnswers[e.index])("ngClass",rc(3,MA,!i.isLoading&&i.isChecked&&i.userAnswers[e.index]===i.questionsWithAnswers[e.index].correctAnswer,!i.isLoading&&i.isChecked&&i.userAnswers[e.index]!==i.questionsWithAnswers[e.index].correctAnswer))}}function FA(t,n){if(t&1&&(c(0,"span",44),l(1),k(2,RA,2,6,"span",45),a()),t&2){let e=n.$implicit,i=n.index,r=_().$implicit;f(),ne(" ",e," "),f(),g("ngIf",i0)}}function $A(t,n){if(t&1){let e=F();c(0,"div",60)(1,"app-button",9),y("click",function(){x(e);let r=_();return C(r.checkAllAnswers())}),l(2," Validate Answers "),a()()}if(t&2){let e=_();f(),g("disabled",!e.areAllAnswersFilled()||e.isChecked)}}function WA(t,n){if(t&1&&(c(0,"div",61)(1,"div",62)(2,"div",63),It(),c(3,"svg",64),v(4,"circle",65)(5,"circle",66),a(),ci(),c(6,"div",67),l(7),a()(),c(8,"div",68),l(9),a()()()),t&2){let e=_();f(5),z("stroke-dasharray",e.ringCircumference)("stroke-dashoffset",e.ringDashoffset),f(2),U(e.globalCountdown),f(2),Kn(" ",e.overlayCaption," ",e.globalCountdown,"s ")}}function qA(t,n){if(t&1){let e=F();c(0,"div",69)(1,"h2"),l(2,"\u{1F389} Congratulations! You have completed all levels! \u{1F389}"),a(),c(3,"p"),l(4,"Ready to start over and improve even more?"),a(),c(5,"app-button",70),y("click",function(){x(e);let r=_();return C(r.stopConfettiAndReset())}),l(6,"Start Over"),a()()}}var Sd=(()=>{class t{constructor(e,i,r){this.generateQuestionsService=e,this.router=i,this.cdr=r,this.topic="",this.hardcodedTopics=["Noun","Verb","Past Tense","Adjective","Present Continuous"],this.showSuggestions=!1,this.userAnswers=[],this.feedback=[],this.error="",this.isChecked=!1,this.isAnswerModified=!1,this.questions=[],this.attemptCounts={},this.correctAnswers=[],this.questionsWithAnswers=[],this.currentDifficulty="basic",this.difficultyLevels=["basic","intermediate","expert"],this.isDropdownDisabled=!1,this.isValidationInProgress=!1,this.isTopicLocked=!1,this.isAllLevelsCompleted=!1,this.readonlyAnswers=[],this.hints=[],this.attempts=[],this.isQuestionsGenerated=!1,this.isGenerateDisabled=!0,this.isResetDisabled=!0,this.isFirstAttemptDone=!1,this.hasNewHints=!1,this.isLoading=!1,this.isValidationCompleted=!1,this.showLevelTooltip=!1,this.activateLevelDot=!1,this.isTyping=!1,this.validated=!1,this.showHintIcon=!1,this.hasShownHintIcon=!1,this.isHintMenuVisible=!1,this.countdowns=[],this.showCountdown=[],this.countdownTimers={},this.COUNTDOWN_SECS=10,this.showGlobalCountdown=!1,this.globalCountdown=0,this.globalCountdownActive=!1,this.globalTimer=null,this.overlayCaption="",this.ringRadius=90,this.ringCircumference=2*Math.PI*this.ringRadius,this.ringDashoffset=this.ringCircumference,this.overlayTicker=null,this.overlayEndTs=0}onTopicChange(){this.topic.trim().length>0?this.isGenerateDisabled=!1:this.isGenerateDisabled=!0,this.topic.trim().length===0?this.showSuggestions=!0:this.showSuggestions=!1}getProgressWidth(){let e=this.difficultyLevels.indexOf(this.currentDifficulty);return e===-1||this.difficultyLevels.length<=1?"0%":`${e/(this.difficultyLevels.length-1)*100}%`}generateQuestions(){if(this.hints=[],this.isQuestionsGenerated=!1,this.showLevelTooltip=!0,this.activateLevelDot=!0,this.isAllLevelsCompleted){this.error="Please reset to start over.";return}this.isTopicLocked=!0,this.showSuggestions=!1,this.readonlyAnswers=[],this.isDropdownDisabled=!0,console.log(`Generating questions for difficulty level: ${this.currentDifficulty}`),this.generateQuestionsService.generateQuestions(this.topic,this.currentDifficulty).subscribe(e=>{console.log("Response from backend:",e);let i=(e?.text??e?.generations?.[0]?.text??"").trim();if(i){console.log("Raw Questions:",i),this.isQuestionsGenerated=!0,this.isGenerateDisabled=!0,this.isResetDisabled=!1,this.questionsWithAnswers=[];let r=/(\d+\.\s*.+?_______)\s*(.*?)\s*\(([^)]+)\)\s*$/gm,o;for(;(o=r.exec(i))!==null;){console.log("Match:",o);let s=(o[1]??"").trim(),d=o[2]??"",u=(o[3]??"").trim(),h=d.replace(/^[_-]+/,"").replace(/^\s+/," ").replace(/\s{2,}/g," ");s&&u&&this.questionsWithAnswers.push({question:`${s}${h}`,correctAnswer:u})}console.log("Extracted Questions with Answers:",this.questionsWithAnswers),this.questions=this.questionsWithAnswers.map((s,d)=>{let h=s.question.replace(/\s*_{3,}\s*/g,"_______").split("_______");return h.length===2&&(h[0]=h[0].replace(/_+$/,"").trim(),h[1]=h[1].replace(/^_+/,"").trim()),{parts:h,index:d}}),this.userAnswers=new Array(this.questions.length).fill(""),this.feedback=new Array(this.questions.length).fill(""),this.readonlyAnswers=new Array(this.questions.length).fill(!1),this.isChecked=!1,this.attemptCounts=this.questions.reduce((s,d,u)=>(s[u]=0,s),{}),console.log("Questions without answers:",this.questions)}else this.error="No questions generated. Please try again."},e=>{e.status===400&&e.error.message?this.error=e.error.message:this.error="Failed to fetch questions. Please try again later.",console.error("Error fetching questions:",e)})}resetTopic(){this.topic="",this.questions=[],this.questionsWithAnswers=[],this.userAnswers=[],this.readonlyAnswers=[],this.feedback=[],this.hints=[],this.attemptCounts=[],this.isChecked=!1,this.isValidationInProgress=!1,this.isFirstAttemptDone=!1,this.isAllLevelsCompleted=!1,this.hasNewHints=!1,this.isQuestionsGenerated=!1,this.isTopicLocked=!1,this.validated=!1,this.currentDifficulty="basic",this.error="",this.isGenerateDisabled=!0,this.isResetDisabled=!0,this.showSuggestions=!1,this.showLevelTooltip=!1,this.activateLevelDot=!1,this.showSuggestions=!1,this.isDropdownDisabled=!1,this.isTopicLocked=!1,this.stopConfetti(),Object.keys(this.countdownTimers).forEach(e=>clearInterval(this.countdownTimers[+e])),this.countdownTimers={},this.countdowns=[],this.showCountdown=[],this.stopGlobalCountdown(),this.stopOverlay()}areAllAnswersFilled(){return this.userAnswers.every(e=>e?.trim()!=="")}closeErrorPopup(){this.error="",this.isGenerateDisabled=!0,this.isResetDisabled=!1}checkAllAnswers(){this.isChecked=!0,this.isValidationInProgress=!0,this.isLoading=!0,this.isValidationCompleted=!0,this.validated=!0,this.isFirstAttemptDone=!0;let e=this.questions.map((i,r)=>({topic:this.topic,question:i.parts.join("_______"),user_answer:this.userAnswers[r]}));console.log("Checking answers..."),console.log("User Answers:",this.userAnswers),console.log("Correct Answers:",this.questionsWithAnswers.map(i=>i.correctAnswer)),this.generateQuestionsService.validateAllAnswers(e).subscribe(i=>{if(console.log("Response from backend for all answers validation:",i),i.results&&i.results.length>0){let r=!0,o=!1,s=!1;i.results.forEach((h,p)=>{this.attemptCounts[p]++;let m=h.validation_response,b=h.hint?h.hint.trim():"",S=(this.userAnswers[p]??"").trim().toLowerCase(),O=(this.questionsWithAnswers[p].correctAnswer??"").trim().toLowerCase();console.log(`Validation Response for Question ${p+1}: ${m}`),console.log(`User Answer: ${S}, Correct Answer: ${O}`),S===O?(console.log(`\u2705 Correct answer for question ${p+1}: ${this.userAnswers[p]}`),this.readonlyAnswers[p]=!0,this.hints[p]="",this.userAnswers[p]=this.questionsWithAnswers[p].correctAnswer):(console.log(`\u274C Incorrect answer for question ${p+1}: ${this.userAnswers[p]}`),this.attemptCounts[p]===1?(o=!0,this.globalCountdownActive||this.startOverlay("Try again in"),setTimeout(()=>{console.log(`\u{1F504} Resetting incorrect answer for Question ${p+1}`),this.userAnswers[p]="",this.stopOverlay()},this.COUNTDOWN_SECS*1e3)):this.attemptCounts[p]>=2&&(s=!0,this.globalCountdownActive||this.startOverlay("Showing correct answer in"),setTimeout(()=>{(!this.userAnswers[p]||this.userAnswers[p].trim()===""||S!==O)&&(this.userAnswers[p]=this.questionsWithAnswers[p].correctAnswer,console.log(`\u2714\uFE0F Auto-filled correct answer for Question ${p+1}: ${this.userAnswers[p]}`)),this.stopOverlay(),this.isLastLevel()&&p===this.questions.length-1&&(this.startOverlay("Finishing in"),setTimeout(()=>{this.stopOverlay(),this.isAllLevelsCompleted=!0,console.log("\u{1F389} You have completed all difficulty levels."),this.triggerConfetti()},this.COUNTDOWN_SECS*1e3))},this.COUNTDOWN_SECS*1e3)),this.hints[p]=b.length>0?b:null),this.feedback[p]=m||"No feedback provided.",setTimeout(()=>{S===O?this.userAnswers[p]=this.userAnswers[p]:this.userAnswers[p]=this.userAnswers[p]},2e3),this.attemptCounts[p]<2&&(r=!1)}),this.hasNewHints=this.hints.some(h=>h&&h.trim()!==""),this.hasNewHints&&setTimeout(()=>{this.hasNewHints=!1},5e3);let u=Array.isArray(this.hints)&&this.hints.some(h=>!!h&&h.trim()!=="")||o||s;!this.hasShownHintIcon&&u?(this.showHintIcon=!0,this.hasShownHintIcon=!0):this.showHintIcon=!1,this.isLastLevel()&&this.areAllCorrectAnswersDisplayed()?(this.stopOverlay(),this.startOverlay("Finishing in"),setTimeout(()=>{this.stopOverlay(),this.isAllLevelsCompleted=!0,this.triggerConfetti()},this.COUNTDOWN_SECS*1e3)):!this.isLastLevel()&&(this.areAllCorrectAnswersDisplayed()||r)&&(this.stopOverlay(),this.startOverlay("Moving to next level in"),setTimeout(()=>{this.stopOverlay(),this.triggerNextLevelWithDelay()},this.COUNTDOWN_SECS*1e3))}else this.error="Failed to validate answers. Please try again.";this.isValidationInProgress=!1,this.isLoading=!1},i=>{console.error("Error validating answers:",i),this.error="Error validating answers. Please try again later.",this.isValidationInProgress=!1,this.isLoading=!1})}isLastLevel(){return this.currentDifficulty===this.difficultyLevels[this.difficultyLevels.length-1]}triggerNextLevelWithDelay(){setTimeout(()=>{this.transitionDifficulty()},2e3)}areAllCorrectAnswersDisplayed(){return this.userAnswers.every((e,i)=>(e??"").trim().toLowerCase()===(this.questionsWithAnswers[i]?.correctAnswer??"").trim().toLowerCase())}transitionDifficulty(){let e=this.difficultyLevels.indexOf(this.currentDifficulty);e{this.questions=[],this.isAllLevelsCompleted=!0,this.isChecked=!1,this.isValidationInProgress=!1,this.isLoading=!1,console.log("\u{1F389} You have completed all difficulty levels."),this.triggerConfetti()},3e3)}shouldShowHint(e){return this.attemptCounts[e]<1}resetAllLevels(){this.isAllLevelsCompleted=!1,this.currentDifficulty="basic",this.questions=[],this.userAnswers=[],this.feedback=[],this.isChecked=!1,this.isQuestionsGenerated=!1,this.isValidationInProgress=!1,this.isTopicLocked=!1,this.hints=[],this.error="",this.isGenerateDisabled=!0,this.isResetDisabled=!1,console.log("All levels reset. Starting from basic level.")}onAnswerChange(e){this.isValidationInProgress||(this.isChecked=!1,this.validated=!1);let i=this.userAnswers[e]?.trim();console.log("User Answers:",this.userAnswers),console.log("Are All Answers Filled:",this.areAllAnswersFilled()),i?this.userAnswers[e]=i:this.userAnswers[e]="",this.userAnswers=[...this.userAnswers]}goToHome(){this.router.navigate(["/home"])}triggerConfetti(){this.confettiInterval&&clearInterval(this.confettiInterval),this.confettiInterval=setInterval(()=>{Cd({startVelocity:30,spread:360,ticks:60,origin:{x:Math.random(),y:Math.random()-.2}})},250)}stopConfetti(){this.isAllLevelsCompleted=!1,this.confettiInterval&&(clearInterval(this.confettiInterval),this.confettiInterval=null);let e=document.querySelector("canvas.confetti-canvas");e&&e.remove(),document.querySelectorAll(".confetti, .ts-confetti").forEach(r=>r.remove())}stopConfettiAndReset(){this.stopConfetti(),this.resetTopic()}selectTopic(e){this.topic=e,this.showSuggestions=!1,this.isGenerateDisabled=!1,this.isResetDisabled=!0,this.isDropdownDisabled=!0}hideSuggestions(){setTimeout(()=>{this.showSuggestions=!1},150)}processHints(e){this.hints=e,this.hasNewHints=e.length>0,this.hasNewHints&&setTimeout(()=>{this.hasNewHints=!1},5e3)}closeHints(){this.isHintMenuVisible=!1,this.hasNewHints=!1}openHints(){this.hints?.length&&(this.isHintMenuVisible=!0,this.hasNewHints=!1)}toggleHintMenu(){this.isHintMenuVisible=!this.isHintMenuVisible,this.isHintMenuVisible&&(this.showHintIcon=!1)}onInput(e,i){let o=e.target.value.replace(/[^a-zA-Z]/g,"");this.userAnswers[i]=o,e.target.value=o}beginResetCountdown(e,i=this.COUNTDOWN_SECS){this.countdownTimers[e]||(this.countdowns[e]=i,this.showCountdown[e]=!0,this.countdownTimers[e]=setInterval(()=>{this.countdowns[e]=this.countdowns[e]-1,this.countdowns[e]<=0&&this.finishCountdown(e)},1e3))}finishCountdown(e){let i=this.countdownTimers[e];i&&(clearInterval(i),delete this.countdownTimers[e]),this.showCountdown[e]=!1,this.countdowns[e]=0,this.userAnswers[e]="",this.isChecked=!1}startGlobalCountdown(){this.globalCountdownActive||(this.globalCountdownActive=!0,this.showGlobalCountdown=!0,this.globalCountdown=this.COUNTDOWN_SECS,this.globalTimer=setInterval(()=>{this.globalCountdown--,this.globalCountdown<=0&&this.stopGlobalCountdown()},1e3))}stopGlobalCountdown(){this.globalTimer&&(clearInterval(this.globalTimer),this.globalTimer=null),this.showGlobalCountdown=!1,this.globalCountdownActive=!1,this.globalCountdown=0}ngOnDestroy(){this.stopGlobalCountdown()}startOverlay(e,i=this.COUNTDOWN_SECS){this.globalTimer&&(clearTimeout(this.globalTimer),this.globalTimer=null),this.overlayTicker&&(clearInterval(this.overlayTicker),this.overlayTicker=null),this.globalCountdownActive=!0,this.showGlobalCountdown=!0,this.overlayCaption=e,this.globalCountdown=i,this.overlayEndTs=Date.now()+i*1e3,this.ringDashoffset=this.ringCircumference,this.overlayTicker=setInterval(()=>{let r=Date.now(),o=Math.max(0,this.overlayEndTs-r),s=i*1e3-o;this.globalCountdown=Math.ceil(o/1e3);let d=Math.min(1,s/(i*1e3));this.ringDashoffset=this.ringCircumference*(1-d),o<=0&&this.stopOverlay()},50),this.globalTimer=setTimeout(()=>this.stopOverlay(),i*1e3)}stopOverlay(){this.overlayTicker&&(clearInterval(this.overlayTicker),this.overlayTicker=null),this.globalTimer&&(clearTimeout(this.globalTimer),this.globalTimer=null),this.showGlobalCountdown=!1,this.globalCountdownActive=!1,this.overlayCaption="",this.globalCountdown=0,this.ringDashoffset=this.ringCircumference}static{this.\u0275fac=function(i){return new(i||t)(M(vw),M(Pe),M(Re))}}static{this.\u0275cmp=$({type:t,selectors:[["app-generate-questions"]],standalone:!0,features:[ye],decls:19,vars:13,consts:[[1,"app-container"],["class","loading-overlay",4,"ngIf"],[3,"title"],["src","assets/images/grammar-bg.png","alt","Chat Background",1,"grammar-bg"],[1,"header-section"],[1,"input-section"],[1,"input-wrapper"],["placeholder","Enter a Topic...",1,"input-box","topic-input",3,"ngModelChange","input","focus","click","blur","ngModel","readonly"],["class","suggestions-container",4,"ngIf"],[3,"click","disabled"],["class","difficulty-container",4,"ngIf"],["class","error-popup",4,"ngIf"],["class","full-content",4,"ngIf"],["class","submit-container",4,"ngIf"],["class","global-countdown-overlay","role","status","aria-live","assertive",4,"ngIf"],["class","congratulation-message",4,"ngIf"],[1,"loading-overlay"],[1,"loader"],[1,"suggestions-container"],[1,"suggestions-list"],["class","suggestion-item",3,"click",4,"ngFor","ngForOf"],[1,"suggestion-item",3,"click"],[1,"difficulty-container"],[1,"progress-bar-fill"],[1,"level-dots"],["class","level-dot",3,"active",4,"ngFor","ngForOf"],[1,"level-dot"],["class","level-tooltip",4,"ngIf"],[1,"level-tooltip"],[1,"error-popup"],[1,"error-popup-content"],[1,"close-popup-btn",3,"click"],[1,"full-content"],["class","questions-container",4,"ngIf"],[1,"questions-container"],[1,"quesHintbtn"],[1,"section-title"],[1,"questions-list"],["class","question-item",4,"ngFor","ngForOf"],[4,"ngIf"],[1,"question-item"],[1,"question-wrapper"],[1,"question-text-wrapper"],["class","question-text",4,"ngFor","ngForOf"],[1,"question-text"],["class","answer-slot",4,"ngIf"],[1,"answer-slot"],["placeholder","","pattern","[A-Za-z]*",1,"answer-input",3,"ngModelChange","input","ngModel","readonly","ngClass"],[1,"hint-anchor",3,"click"],["type","button","aria-haspopup","dialog","aria-controls","hintsPanel",1,"hint-toggle-btn",3,"click"],["id","hintsPanel","class","hint-popover","role","dialog","aria-modal","true","aria-label","Hints",3,"click",4,"ngIf"],["class","hint-backdrop",3,"click",4,"ngIf"],["id","hintsPanel","role","dialog","aria-modal","true","aria-label","Hints",1,"hint-popover",3,"click"],["type","button","aria-label","Close hints",1,"user-guide-close-icon",3,"click"],[1,"hint-title"],["role","list",1,"hint-list"],[4,"ngFor","ngForOf"],["class","hint-item",4,"ngIf"],[1,"hint-item"],[1,"hint-backdrop",3,"click"],[1,"submit-container"],["role","status","aria-live","assertive",1,"global-countdown-overlay"],[1,"overlay-card"],[1,"ring"],["viewBox","0 0 220 220","aria-hidden","true",1,"ring-svg"],["cx","110","cy","110","r","90",1,"ring-track"],["cx","110","cy","110","r","90",1,"ring-progress"],[1,"ring-number"],[1,"caption-pill"],[1,"congratulation-message"],[3,"click"]],template:function(i,r){i&1&&(c(0,"div",0),k(1,IA,2,0,"div",1),v(2,"app-header",2)(3,"img",3),c(4,"div",4)(5,"div",5)(6,"div",6)(7,"input",7),gt("ngModelChange",function(s){return Pt(r.topic,s)||(r.topic=s),s}),y("input",function(){return r.onTopicChange()})("focus",function(){return r.showSuggestions=!0})("click",function(){return r.showSuggestions=!0})("blur",function(){return r.hideSuggestions()}),a(),k(8,PA,3,1,"div",8),a(),c(9,"app-button",9),y("click",function(){return r.generateQuestions()}),l(10,"\u{1F680} Generate"),a(),c(11,"app-button",9),y("click",function(){return r.resetTopic()}),l(12,"Reset"),a()(),k(13,TA,4,3,"div",10)(14,AA,6,1,"div",11),a(),k(15,HA,2,1,"div",12)(16,$A,3,1,"div",13)(17,WA,10,5,"div",14)(18,qA,7,0,"div",15),a()),i&2&&(f(),g("ngIf",r.isLoading),f(),g("title","Grammar Questions"),f(5),mt("ngModel",r.topic),g("readonly",r.isTopicLocked),f(),g("ngIf",r.showSuggestions&&!r.isDropdownDisabled),f(),g("disabled",r.isGenerateDisabled),f(2),g("disabled",!r.topic||r.isResetDisabled),f(2),g("ngIf",r.isQuestionsGenerated),f(),g("ngIf",r.error),f(),g("ngIf",!r.isAllLevelsCompleted),f(),g("ngIf",r.isQuestionsGenerated&&!r.isAllLevelsCompleted),f(),g("ngIf",r.showGlobalCountdown),f(),g("ngIf",r.isAllLevelsCompleted))},dependencies:[jt,_t,Vt,Up,$t,ze,Jt,vt,Fe,bc,yt,xn],styles:['body[_ngcontent-%COMP%]{font-family:Roboto,sans-serif;background:linear-gradient(to bottom,#f8f9fa,#e0e6ed);color:#333;font-size:1.6rem;margin:0}.header-section[_ngcontent-%COMP%]{display:flex;align-items:end;padding:1vw 3vw;position:relative;color:#333;box-shadow:#32325d40 0 6px 12px -2px,#0000004d 0 3px 7px -3px;justify-content:space-between}.error-popup[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.error-popup-content[_ngcontent-%COMP%]{background-color:#fff;padding:2vw;border-radius:.5vw;box-shadow:0 .4vw .8vw #0000004d;text-align:center;max-width:40vw;width:80%;border:10px solid var(--main-accent-color)}.error-popup-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.4vw;color:#dc3545;margin-bottom:1vw}.app-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100vh;width:100%;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:#2322206e}.app-container[_ngcontent-%COMP%]:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;background-size:cover;background-position:center;z-index:-1}.input-box[_ngcontent-%COMP%]{padding:15px;width:400px;font-size:1.6rem;border:none;border-radius:8px;box-shadow:0 .2vw .5vw #0000001a}.input-box[_ngcontent-%COMP%]:focus-visible{outline:2px solid #5d5959}.full-content[_ngcontent-%COMP%]{display:flex;padding:10px;box-sizing:border-box;margin-top:1vw}.questions-container[_ngcontent-%COMP%]{position:relative;max-height:100%;overflow:hidden;margin:1vw;box-sizing:border-box;background-color:#f9f9f9;border-radius:8px;box-shadow:0 2px 4px #0000001a;background:#e3f2fd;padding:1vw 1vw 1vw 2vw;width:100%;box-shadow:0 .4vw 1vw #0000001a;border:9px solid var(--main-accent-color)}.quesHintbtn[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.question-item[_ngcontent-%COMP%]{margin-bottom:8px;word-wrap:break-word;display:flex;gap:15px;align-items:flex-start}.question-wrapper[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{display:flex;flex-direction:column}.answer-input[_ngcontent-%COMP%]{margin-left:5px;width:auto;max-width:100%;padding:5px;border:1px solid #ccc;border-radius:4px}.section-title[_ngcontent-%COMP%]{font-size:2.5rem;color:#4ca1af;font-family:Open Sans,sans-serif}.questions-list[_ngcontent-%COMP%]{list-style:none;padding:0;margin:1.4vw}.question-wrapper[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.question-text[_ngcontent-%COMP%]{font-size:1.3vw;font-family:Roboto,sans-serif;line-height:1.5}.answer-input[_ngcontent-%COMP%]{width:100%;max-width:203px;border:1px solid #999;border-radius:8px;font-family:Roboto,sans-serif;font-size:1.6rem;color:#333;position:relative;border-radius:.5vw;text-align:center;vertical-align:text-bottom;margin:0 .15vw;display:-ms-inline-flexbox;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;padding-bottom:.85vw;box-shadow:0 .05vw 0 .07vw #dfdfdf;padding:.3vw 0}.answer-input[_ngcontent-%COMP%]:focus{border-color:#5c67f2;outline:none}.answer-input[_ngcontent-%COMP%]::placeholder{font-family:Roboto,sans-serif;color:#aaa;font-style:italic}.submit-container[_ngcontent-%COMP%]{position:relative;right:6vw;display:flex;justify-content:flex-end}@keyframes _ngcontent-%COMP%_fadeIn{0%{opacity:0}to{opacity:1}}.warning-label[_ngcontent-%COMP%]{color:red;text-align:center;font-size:1.5em;margin-top:10px;display:block;width:100%}.congratulation-message[_ngcontent-%COMP%]{text-align:center;margin:50px auto;padding:40px;background:#fff;border-radius:15px;width:66vw;height:50vh;display:flex;flex-direction:column;justify-content:center;align-items:center;font-family:Pacifico,cursive;position:relative;z-index:1;box-shadow:0 .4vw 1vw #0000001a;border:9px solid var(--main-accent-color)}.congratulation-message[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{color:#4ca1af;margin-bottom:15px;font-size:2.5vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}@media (max-width: 768px){.congratulation-message[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:2vw}}@media (max-width: 480px){.congratulation-message[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:3vw}}.congratulation-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#333;margin-bottom:20px;font-size:1.8vw}.side-menu[_ngcontent-%COMP%]{position:fixed;top:0;right:-100%;width:50%;height:100%;background-color:#fff;box-shadow:-4px 0 8px #0000001a;padding:20px;box-sizing:border-box;overflow-y:auto;transition:right .3s ease;z-index:999}.side-menu.active[_ngcontent-%COMP%]{right:0}.side-menu-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.side-menu-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:1.5rem;color:#4ca1af}.side-menu-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]{background-color:#ff5c5c;color:#fff;border:none;border-radius:50%;font-size:1.2rem;width:30px;height:30px;cursor:pointer}.side-menu[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{list-style:none;padding:0;margin:0;font-family:Open Sans,sans-serif}.side-menu[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{font-size:1vw;color:#333;margin-bottom:10px;text-align:justify}@keyframes _ngcontent-%COMP%_glow{0%{box-shadow:0 0 10px #ff5c5c}50%{box-shadow:0 0 20px #ff5c5c}to{box-shadow:0 0 10px #ff5c5c}}@media (max-width: 1366px){body[_ngcontent-%COMP%]{font-size:1.4rem}.header-section[_ngcontent-%COMP%]{padding:8px 15px}.logo-container[_ngcontent-%COMP%]{width:10vw}.back-button[_ngcontent-%COMP%]{font-size:14px;right:1vw;top:3vw}.input-box[_ngcontent-%COMP%]{width:250px;font-size:1.4rem}.btn-generate[_ngcontent-%COMP%], .reset-btn[_ngcontent-%COMP%]{padding:10px 20px;font-size:1.4rem}.current-level[_ngcontent-%COMP%]{font-size:1rem;padding:8px 10px;margin:15px 15px 0}.question-text[_ngcontent-%COMP%]{font-size:1rem}.answer-input[_ngcontent-%COMP%]{width:80%;font-size:1.4rem;padding:5px}.side-menu[_ngcontent-%COMP%]{width:40%}.congratulation-message[_ngcontent-%COMP%]{padding:30px;width:60vw;height:45vh}.congratulation-message[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{color:#4ca1af;margin-bottom:15px;font-size:2.5vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}@media (max-width: 768px){.congratulation-message[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:2vw}}@media (max-width: 480px){.congratulation-message[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:3vw}}.congratulation-message[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.4rem}.congratulation-message[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{padding:15px 30px;font-size:1.4rem}}h3[_ngcontent-%COMP%]{font-weight:700}.topic-input[readonly][_ngcontent-%COMP%]{color:#999!important;opacity:1!important;background-color:#fff!important;border:1px solid #ccc!important;cursor:not-allowed}@keyframes _ngcontent-%COMP%_hint-zoom{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.loading-overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:1000;font-family:Comic Sans MS,cursive,sans-serif;text-align:center;overflow:hidden}.loader[_ngcontent-%COMP%]{font-size:15px;width:1.5em;height:1.5em;border-radius:50%;position:relative;text-indent:-9999em;animation:_ngcontent-%COMP%_mulShdSpin 1.1s infinite ease;transform:translateZ(0)}@keyframes _ngcontent-%COMP%_mulShdSpin{0%,to{box-shadow:0 -3em gray,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808080,-2.2em -2.2em #808080b3}12.5%{box-shadow:0 -3em #808080b3,2.2em -2.2em gray,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808080}25%{box-shadow:0 -3em #80808080,2.2em -2.2em #808080b3,3em 0 gray,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}37.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808080,3em 0 #808080b3,2.2em 2.2em gray,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}50%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808080,2.2em 2.2em #808080b3,0 3em gray,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}62.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808080,0 3em #808080b3,-2.2em 2.2em gray,-3em 0 #80808033,-2.2em -2.2em #80808033}75%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808080,-2.2em 2.2em #808080b3,-3em 0 gray,-2.2em -2.2em #80808033}87.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808080,-3em 0 #808080b3,-2.2em -2.2em gray}}.suggestions-container[_ngcontent-%COMP%]{position:absolute;top:100%;left:0;width:100%;max-width:400px;background:#fff;box-shadow:0 4px 8px #0003;border-radius:8px;z-index:10;overflow:hidden;margin-top:0}.suggestions-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;padding:0}.suggestion-item[_ngcontent-%COMP%]{padding:10px 15px;font-size:1.4rem;color:#333;cursor:pointer;transition:background .3s ease;border-bottom:1px solid #ddd}.suggestion-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.suggestion-item[_ngcontent-%COMP%]:hover{background:#f0f0f0;font-weight:700}.answer-slot[_ngcontent-%COMP%]{display:inline-block;margin:0 .25vw;vertical-align:middle}.input-section[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;position:relative}.button-group[_ngcontent-%COMP%]{display:flex;gap:.5vw;flex:1;justify-content:flex-start}.correct-answer[_ngcontent-%COMP%]{color:green!important}.wrong-answer[_ngcontent-%COMP%]{color:red!important}.default[_ngcontent-%COMP%]{color:#000!important}.answer-input[_ngcontent-%COMP%]:focus{outline:none}.wrong-answer-removed[_ngcontent-%COMP%]{background-color:#fff;color:#333;border:1px solid #ccc;transition:background-color 2s ease-out}.difficulty-container[_ngcontent-%COMP%]{position:relative;width:100%;max-width:600px;height:20px;background:#e0e0e0;border-radius:50px;box-shadow:inset 0 1px 3px #0003}.progress-bar-fill[_ngcontent-%COMP%]{height:100%;width:0%;background:linear-gradient(to right,#4ca1af,#6ac5cb);border-radius:50px;transition:width .6s ease-in-out;position:absolute;top:0;left:0;z-index:1}.level-dots[_ngcontent-%COMP%]{position:absolute;width:100%;top:50%;left:0;transform:translateY(-50%);display:flex;justify-content:space-between;padding:0 8px}.level-dot[_ngcontent-%COMP%]{width:17px;height:17px;background:#fff;border:2px solid #fff;border-radius:50%;position:relative;transition:transform .3s ease}.level-dot.active[_ngcontent-%COMP%]{background:#356fdc;transform:scale(1.3)}.level-tooltip[_ngcontent-%COMP%]{position:absolute;bottom:150%;left:50%;transform:translate(-50%);background-color:#4ca1af;color:#fff;font-size:1vw;font-weight:700;padding:4px 8px;border-radius:6px;white-space:nowrap;box-shadow:0 2px 6px #0003;opacity:1}.level-tooltip[_ngcontent-%COMP%]:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:6px;border-style:solid;border-color:#4ca1af transparent transparent transparent}@media (max-width: 480px){.level-tooltip[_ngcontent-%COMP%]{font-size:.65rem;padding:3px 6px}.level-tooltip[_ngcontent-%COMP%]:after{border-width:5px}}.hint-anchor[_ngcontent-%COMP%]{position:fixed;top:15.6vw;right:3vw;z-index:1101}.hint-toggle-btn[_ngcontent-%COMP%]{width:56px;height:56px;border-radius:50%;border:0;background:radial-gradient(120% 120% at 30% 20%,#18788f,#006780 70%);color:#fff;font-weight:800;font-size:22px;line-height:1;cursor:pointer;box-shadow:0 8px 24px #0000002e;display:grid;place-items:center;transition:transform .18s ease,box-shadow .18s ease}.hint-toggle-btn[_ngcontent-%COMP%]:hover{transform:translateY(-1px) scale(1.04);box-shadow:0 12px 28px #00000038}.hint-toggle-btn[_ngcontent-%COMP%]:focus-visible{outline:3px solid rgba(0,103,128,.35);outline-offset:3px}.hint-popover[_ngcontent-%COMP%]{position:absolute;top:11vw;right:calc(100% + 35px);transform:translateY(-46%);width:min(51vw,96vw);max-height:67vh;background:#fff;border-radius:12px;padding:16px 20px;box-shadow:0 12px 32px #00000040;border:10px solid var(--main-accent-color);overflow-y:auto}.hint-popover[_ngcontent-%COMP%]:before{content:"";position:absolute;top:50%;right:-8px;width:14px;height:14px;background:#fff;transform:translateY(-50%) rotate(45deg);box-shadow:2px -2px 8px #00000014}.user-guide-close-icon[_ngcontent-%COMP%]{top:8px;right:10px}.hint-title[_ngcontent-%COMP%]{margin:0 0 8px;font-size:18px}.hint-list[_ngcontent-%COMP%]{margin:0;padding-left:1rem}.hint-item[_ngcontent-%COMP%]{margin-bottom:.5rem}.hint-backdrop[_ngcontent-%COMP%]{position:fixed;inset:0;background:transparent;z-index:1100}@keyframes _ngcontent-%COMP%_hint-slide-in{0%{transform:translateY(-50%) translate(8px);opacity:0}to{transform:translateY(-50%) translate(0);opacity:1}}@media (max-width: 640px){.hint-anchor[_ngcontent-%COMP%]{right:12px;bottom:80px;top:auto}.hint-popover[_ngcontent-%COMP%]{right:0;bottom:calc(100% + 10px);top:auto;transform:none;width:min(94vw,380px)}.hint-popover[_ngcontent-%COMP%]:before{right:12px;top:auto;bottom:-7px;transform:rotate(45deg)}}.ring[_ngcontent-%COMP%]{position:relative;width:220px;height:220px;margin:0 auto 8px}.ring-svg[_ngcontent-%COMP%]{width:220px;height:220px;display:block}.ring-track[_ngcontent-%COMP%]{fill:none;stroke:#0f172a2e;stroke-width:16}.ring-progress[_ngcontent-%COMP%]{fill:none;stroke:#006780;stroke-width:16;stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%;transition:stroke-dashoffset .1s linear}.ring-number[_ngcontent-%COMP%]{position:absolute;inset:0;display:grid;place-items:center;font-weight:800;font-size:56px;color:#0f172a}.global-countdown-overlay[_ngcontent-%COMP%]{position:absolute;inset:0;display:grid;place-items:center;background:transparent;pointer-events:none;z-index:20}[_nghost-%COMP%] .global-countdown-overlay{position:fixed;inset:0;display:grid;place-items:center;background:transparent;pointer-events:none;z-index:2000}[_nghost-%COMP%] .overlay-card{background:#fffffffa;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);border:1px solid rgba(15,23,42,.1);border-radius:16px;padding:18px 22px;box-shadow:0 10px 32px #0000002e;text-align:center;pointer-events:none}[_nghost-%COMP%] .ring{position:relative;width:220px;height:220px;margin:0 auto 8px}[_nghost-%COMP%] .ring-svg{position:relative;z-index:2}[_nghost-%COMP%] .ring:before{content:"";position:absolute;inset:0;margin:auto;width:120px;height:120px;border-radius:50%;background:#fff;border:1px solid rgba(15,23,42,.08);box-shadow:inset 0 0 0 4px #ffffffe6,0 2px 10px #00000014;z-index:1}[_nghost-%COMP%] .ring-number{position:absolute;inset:0;display:grid;place-items:center;z-index:3;font-weight:900;font-size:64px;line-height:1;color:#0b1220;text-shadow:0 0 2px #fff,0 0 8px rgba(255,255,255,.85),0 2px 8px rgba(0,0,0,.35)}[_nghost-%COMP%] .ring-track, [_nghost-%COMP%] .ring-progress{stroke-width:18px}[_nghost-%COMP%] .caption-pill{display:inline-block;margin-top:10px;padding:8px 14px;border-radius:999px;background:#0ea5e9!important;color:#fff!important;font-weight:700;font-size:15px;letter-spacing:.2px;filter:drop-shadow(0 3px 10px rgba(14,165,233,.25))}']})}}return t})();var _w=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275cmp=$({type:t,selectors:[["app-voice"]],standalone:!0,features:[ye],decls:5,vars:1,consts:[[3,"title"],["src","assets/images/grammar-bg.png","alt","Chat Background",1,"grammar-bg"],[1,"voice-container",2,"padding","2rem","color","#fff"]],template:function(i,r){i&1&&(v(0,"app-header",0)(1,"img",1),c(2,"div",2)(3,"p"),l(4,"Voice module coming soon."),a()()),i&2&&g("title","Voice")},dependencies:[yt]})}}return t})();var bw=(()=>{class t{constructor(e){this.http=e,this.baseUrl=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space/media":"http://localhost:5000/media"}getWritingTopic(e){let i=new en({"Content-Type":"application/json"}),r={grade_level:e};return this.http.post(`${this.baseUrl}/generate-writing-topics`,r,{headers:i}).pipe(Ke(o=>(console.error("Error fetching writing topic:",o),xt(()=>new Error("Failed to fetch writing topic. Please try again.")))))}validateResponse(e,i){let r=new en({"Content-Type":"application/json"}),o={topic:e,response:i};return this.http.post(`${this.baseUrl}/validate-response`,o,{headers:r}).pipe(Ke(s=>(console.error("Error validating response:",s),xt(()=>new Error("Failed to validate the response. Please try again.")))))}static{this.\u0275fac=function(i){return new(i||t)(I(De))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var QA=t=>({loading:t}),YA=t=>({"disabled-btn":t});function ZA(t,n){t&1&&(c(0,"div",18),v(1,"div",19),a())}function XA(t,n){if(t&1){let e=F();c(0,"div",6)(1,"div",7),v(2,"img",8),a(),c(3,"div",9)(4,"h2"),l(5,"Welcome to the Writing Exercise"),a(),c(6,"p"),l(7," This writing exercise is designed to build strong writing habits through regular and engaging practice. It begins by selecting a grade level, which then provides a topic tailored to that level. Writing on these topics improves grammar, sentence structure, and vocabulary, while also encouraging creative thinking and clear expression. Over time, this activity supports the development of well-organized writing and boosts confidence in communicating ideas effectively. With helpful suggestions and a positive learning experience, it serves as a valuable tool for language improvement and academic growth. "),a(),c(8,"div",10)(9,"label",11),l(10,"Select Grade:"),a(),c(11,"select",12),gt("ngModelChange",function(r){x(e);let o=_();return Pt(o.gradeLevel,r)||(o.gradeLevel=r),C(r)}),c(12,"option",13),l(13,"\u{1F4D8} Lower"),a(),c(14,"option",14),l(15,"\u{1F9E0} Middle"),a(),c(16,"option",15),l(17,"\u{1F393} Upper"),a()(),c(18,"app-button",16),y("click",function(){x(e);let r=_();return C(r.fetchTopic())}),c(19,"span"),l(20,"Get Topic"),a()()(),k(21,ZA,2,0,"div",17),a()()}if(t&2){let e=_();f(11),mt("ngModel",e.gradeLevel),f(7),g("disabled",e.isTopicFetching)("ngClass",vs(4,QA,e.isTopicFetching)),f(3),g("ngIf",e.isLoaderVisible)}}function KA(t,n){t&1&&(c(0,"div",18),v(1,"div",19),a())}function JA(t,n){t&1&&(c(0,"div",29),l(1," We need at least 10 words to enable the submit button. "),a())}function eR(t,n){if(t&1){let e=F();c(0,"div",20)(1,"button",21),y("click",function(){x(e);let r=_();return C(r.goBack("writing"))}),l(2,"\xD7"),a(),c(3,"img",22),y("click",function(){x(e);let r=_();return C(r.goBack("writing"))}),a(),c(4,"div",23),v(5,"img",24),a(),c(6,"div",9)(7,"fieldset",25)(8,"legend"),l(9,"\u{1F4DD} Your Topic:"),a(),c(10,"p"),l(11),a()(),c(12,"textarea",26),gt("ngModelChange",function(r){x(e);let o=_();return Pt(o.userAnswer,r)||(o.userAnswer=r),C(r)}),y("input",function(){x(e);let r=_();return C(r.checkWordCount())}),a(),c(13,"div",27)(14,"app-button",16),y("click",function(){x(e);let r=_();return C(r.submitAnswer())}),l(15),a(),k(16,KA,2,0,"div",17)(17,JA,2,0,"div",28),a()()()}if(t&2){let e=_();f(11),U(e.topic),f(),mt("ngModel",e.userAnswer),f(2),g("disabled",e.isSubmitDisabled||e.isSubmitInProgress)("ngClass",vs(7,YA,e.isSubmitDisabled)),f(),ne(" ",e.isSubmitInProgress?"Submitting...":"Submit Writing"," "),f(),g("ngIf",e.isLoaderVisible),f(),g("ngIf",e.isSubmitDisabled)}}function tR(t,n){if(t&1&&(c(0,"li"),l(1),a()),t&2){let e=n.$implicit;f(),ne(" ",e,"")}}function nR(t,n){if(t&1){let e=F();c(0,"div",30)(1,"img",22),y("click",function(){x(e);let r=_();return C(r.goBack("feedback"))}),a(),c(2,"div",31),v(3,"img",32),c(4,"h3"),l(5,"Suggestions for Improvement"),a()(),c(6,"div",33)(7,"ul"),k(8,tR,2,1,"li",34),a()(),c(9,"div",35)(10,"app-button",36),y("click",function(){x(e);let r=_();return C(r.resetForm())}),l(11,"\u{1F504} Try Another"),a()()()}if(t&2){let e=_();f(8),g("ngForOf",e.feedbackList)}}var Ed=(()=>{class t{constructor(e,i){this.writingService=e,this.router=i,this.gradeLevel="lower",this.topic=null,this.errorMessage=null,this.userAnswer="",this.feedback=null,this.isFeedbackVisible=!1,this.isSubmitDisabled=!0,this.isTopicFetching=!1,this.isLoading=!1,this.isSubmitInProgress=!1,this.feedbackList=[],this.showStarAnimation=!1,this.isLoaderVisible=!1,this.wordCount=0,this.showIntro=!0,this.showWriting=!1,this.showFeedback=!1}fetchTopic(){this.isLoaderVisible=!0,this.isTopicFetching=!0,this.errorMessage=null,this.topic=null,this.feedback=null,this.showWriting=!1,this.showIntro=!0,this.showFeedback=!1,this.userAnswer="",this.writingService.getWritingTopic(this.gradeLevel).subscribe(e=>{this.isLoaderVisible=!1,this.isTopicFetching=!1,e&&e.topic?(console.log("Generated Writing Topic:",e.topic),this.topic=e.topic,this.showIntro=!1,this.showWriting=!0):(console.warn("Unexpected response format:",e),this.topic="No topic generated. Try again.")},e=>{console.error("Error fetching writing topic:",e),this.topic="Failed to load topic.",this.isLoaderVisible=!1,this.isTopicFetching=!1})}submitAnswer(){if(this.userAnswer.trim()===""){this.errorMessage="Please write an answer before submitting.";return}if(!this.topic){this.errorMessage="Please generate a topic first.";return}this.errorMessage=null,this.isLoading=!0,this.isSubmitInProgress=!0,this.isLoaderVisible=!0,this.showIntro=!1,this.showWriting=!0,this.showFeedback=!1,this.writingService.validateResponse(this.topic,this.userAnswer).subscribe({next:e=>{this.feedback=e.feedback,this.feedbackList=e.feedback.split(/(?=\d+\.)/g).map(i=>i.trim()),this.isFeedbackVisible=!0,this.isLoading=!1,this.isSubmitInProgress=!1,this.isLoaderVisible=!1,this.showWriting=!1,this.showFeedback=!0},error:e=>{this.errorMessage=e.message,this.isSubmitInProgress=!1,this.isLoaderVisible=!1,this.showWriting=!1,this.showFeedback=!0}})}checkWordCount(){setTimeout(()=>{let e=this.userAnswer.trim().split(/\s+/).length;this.isSubmitDisabled=e<10})}resetForm(){this.gradeLevel="lower",this.topic=null,this.userAnswer="",this.feedback=null,this.errorMessage=null,this.isFeedbackVisible=!1,this.isSubmitDisabled=!0,this.isTopicFetching=!1,this.isSubmitInProgress=!1,this.showIntro=!0,this.showWriting=!1,this.showFeedback=!1}goBack(e){e==="writing"?(this.showWriting=!1,this.showIntro=!0):e==="feedback"&&(this.showFeedback=!1,this.showWriting=!0)}goToHome(){this.router.navigate(["/home"])}goToListening(){this.router.navigate(["/listening"])}static{this.\u0275fac=function(i){return new(i||t)(M(bw),M(Pe))}}static{this.\u0275cmp=$({type:t,selectors:[["app-writing"]],standalone:!0,features:[ye],decls:6,vars:4,consts:[[3,"title"],["src","assets/images/grammar-bg.png","alt","Chat Background",1,"grammar-bg"],[1,"main-container"],["class","intro-section",4,"ngIf"],["class","writing-section",4,"ngIf"],["class","feedback-section",4,"ngIf"],[1,"intro-section"],[1,"intro-left-image"],["src","assets/images/writing/2.png","alt","Writing Illustration"],[1,"right-content"],[1,"center-controls"],["for","gradeSelect"],["id","gradeSelect",3,"ngModelChange","ngModel"],["value","lower"],["value","middle"],["value","upper"],[3,"click","disabled","ngClass"],["class","loader-overlay",4,"ngIf"],[1,"loader-overlay"],[1,"loader"],[1,"writing-section"],[1,"user-guide-close-icon",3,"click"],["src","assets/images/writing/back.png","alt","Go Back",1,"back-icon",3,"click"],[1,"left-image"],["src","assets/images/writing/pencil-character.png","alt","Pencil Character"],[1,"topic-fieldset"],["placeholder","Write your answer here...",3,"ngModelChange","input","ngModel"],[1,"submit-area","with-blue-tooltip"],["class","blue-tooltip",4,"ngIf"],[1,"blue-tooltip"],[1,"feedback-section"],[1,"feedback-header"],["src","assets/images/writing/feedback.png","alt","Feedback Icon"],[1,"feedback-box"],[4,"ngFor","ngForOf"],[1,"try-again-button"],[3,"click"]],template:function(i,r){i&1&&(v(0,"app-header",0)(1,"img",1),c(2,"div",2),k(3,XA,22,6,"div",3)(4,eR,18,9,"div",4)(5,nR,12,1,"div",5),a()),i&2&&(g("title","Writing Exercise"),f(3),g("ngIf",r.showIntro),f(),g("ngIf",r.showWriting),f(),g("ngIf",r.showFeedback))},dependencies:[xn,ze,Jt,vt,Fe,jt,Ui,zi,_t,Bi,Vt,$t,yt],styles:['body[_ngcontent-%COMP%]{margin:0;font-family:Comic Sans MS,cursive,sans-serif;background-color:#fef6e4;overflow:hidden}.main-container[_ngcontent-%COMP%]{width:85%;margin:7vh auto;border:10px solid var(--main-accent-color);border-radius:1.5vw;background:#fff;padding:2vw;box-shadow:0 .4vw 1vw #0000001a;height:73vh}.writing-section[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-between;align-items:center}.intro-section[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:center;align-items:center;height:100%;gap:3vw}.intro-left-image[_ngcontent-%COMP%]{width:35%}.intro-left-image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:auto}.left-image[_ngcontent-%COMP%]{width:25%}.left-image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%}.right-content[_ngcontent-%COMP%]{width:66%}.right-content[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:2.5vw;font-weight:800;color:#006780;margin-bottom:20px}.right-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.4vw;text-align:justify}.center-controls[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;margin-top:1vw;gap:1.5vw}.center-controls[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:1.5vw;font-weight:600;color:#006780}.center-controls[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{font-size:1.4vw;padding:.6vw;border-radius:.5vw;border:2px solid #009688;background-color:#fff}textarea[_ngcontent-%COMP%]{width:100%;height:14vw;font-size:1.3vw;padding:.5vw;border-radius:1vw;border:2px solid #ccc;background-image:linear-gradient(#fff 90%,#f8d7da 10%);background-size:100% 2.5vw;line-height:2.5vw;resize:none;background-attachment:local}.submit-area[_ngcontent-%COMP%]{text-align:center;margin-top:1vw}.submit-area[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-size:1.3vw;padding:.8vw 2vw;border-radius:1vw}.loader-overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000}.loader[_ngcontent-%COMP%]{font-size:15px;width:1.5em;height:1.5em;border-radius:50%;position:relative;text-indent:-9999em;animation:_ngcontent-%COMP%_mulShdSpin 1.1s infinite ease;transform:translateZ(0)}@keyframes _ngcontent-%COMP%_mulShdSpin{0%,to{box-shadow:0 -3em gray,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808080,-2.2em -2.2em #808080b3}12.5%{box-shadow:0 -3em #808080b3,2.2em -2.2em gray,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808080}25%{box-shadow:0 -3em #80808080,2.2em -2.2em #808080b3,3em 0 gray,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}37.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808080,3em 0 #808080b3,2.2em 2.2em gray,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}50%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808080,2.2em 2.2em #808080b3,0 3em gray,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}62.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808080,0 3em #808080b3,-2.2em 2.2em gray,-3em 0 #80808033,-2.2em -2.2em #80808033}75%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808080,-2.2em 2.2em #808080b3,-3em 0 gray,-2.2em -2.2em #80808033}87.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808080,-3em 0 #808080b3,-2.2em -2.2em gray}}.back-icon[_ngcontent-%COMP%]{position:absolute;top:12vw;left:10vw;color:#007bff;font-size:24px;width:5vw;cursor:pointer;transition:transform .2s ease-in-out}.back-icon[_ngcontent-%COMP%]:hover{transform:scale(1.1);color:#0056b3}.back-icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:30px;height:auto;cursor:pointer}.topic-fieldset[_ngcontent-%COMP%]{border:2px solid #ffc107;padding:1vw;border-radius:1vw;background-color:#fffbe6;margin-bottom:2vw}.topic-fieldset[_ngcontent-%COMP%] legend[_ngcontent-%COMP%]{font-size:1.6vw;color:#ff5e00;padding:0 1vw;font-weight:700}.topic-fieldset[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{color:#ff5e00;font-size:1.8vw}.topic-fieldset[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.3vw;color:#0097a7;font-weight:900}.feedback-section[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;text-align:center}.feedback-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:1vw;margin-bottom:1vw}.feedback-header[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:3vw;height:auto}.feedback-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{font-size:2vw;color:#ff6f00;margin:0;font-weight:800;text-shadow:1px 1px #ffe0b2}.feedback-box[_ngcontent-%COMP%]{background-color:#fff8e1;border:2px dashed #ffca28;border-radius:1vw;padding:2vw;width:93%;height:19.5vw;overflow-y:scroll}.feedback-box[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{font-size:1.4vw;color:#333;padding-left:0;list-style:none;text-align:left}.feedback-box[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{margin-bottom:1vw}.try-again-button[_ngcontent-%COMP%]{text-align:center;margin-top:3vw}.try-again-button[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{font-size:1.3vw;border:none;color:#fff;border-radius:1vw;cursor:pointer;transition:background-color .3s ease}.animated[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_bounce 1s infinite}@keyframes _ngcontent-%COMP%_bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.with-blue-tooltip[_ngcontent-%COMP%]{position:relative;display:inline-block}.blue-tooltip[_ngcontent-%COMP%]{position:absolute;top:50%;left:105%;transform:translateY(-50%);background-color:#2196f3;color:#fff;padding:.8vw 1.2vw;border-radius:.5vw;font-size:1vw;white-space:nowrap;z-index:1000;box-shadow:0 .3vw .6vw #00000026}.blue-tooltip[_ngcontent-%COMP%]:after{content:"";position:absolute;top:50%;left:-.8vw;transform:translateY(-50%);border-width:.6vw;border-style:solid;border-color:transparent #2196f3 transparent transparent}.user-guide-close-icon[_ngcontent-%COMP%]{top:9vw;right:7vw}']})}}return t})();var yw=(()=>{class t{constructor(e){this.http=e,this.baseUrl=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space/media":"http://localhost:5000/media"}getVocabulary(){return this.http.get(`${this.baseUrl}/generate-word-association`)}validateSelection(e,i,r){let o={word:e,selected_words:i,all_options:r};return this.http.post(`${this.baseUrl}/validate-selection`,o)}validateSentence(e,i){let r={sentence:e,selected_words:i};return this.http.post(`${this.baseUrl}/validate-sentence`,r)}static{this.\u0275fac=function(i){return new(i||t)(I(De))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var rR=["step1"],oR=["step2"],sR=["step3"],aR=["step4"],lR=["step5"],cR=t=>({loading:t}),dR=(t,n,e,i)=>({selected:t,correct:n,incorrect:e,picked:i});function uR(t,n){t&1&&(c(0,"div",16),v(1,"div",17),a())}function hR(t,n){if(t&1){let e=F();c(0,"div",9)(1,"div",10)(2,"div",11),v(3,"img",12),a(),c(4,"div",13)(5,"h2"),l(6,"How Strong is Your Vocabulary?"),a(),c(7,"p"),l(8," Vocabulary Builder is an interactive learning tool designed to help users strengthen their vocabulary in an engaging and structured manner. It presents a series of word-based exercises that allow users to learn the meaning and usage of words through intelligent suggestions, related word selections, and sentence formation tasks. "),a(),c(9,"app-button",14),y("click",function(){x(e);let r=_();return C(r.getWords())}),c(10,"span"),l(11,"Let's Build"),a()(),k(12,uR,2,0,"div",15),a()()()}if(t&2){let e=_();f(9),g("disabled",e.isButtonDisabled||e.isLoaderVisible)("ngClass",vs(3,cR,e.isLoaderVisible)),f(3),g("ngIf",e.isLoaderVisible)}}function pR(t,n){if(t&1&&(c(0,"div",11),v(1,"img",30),a()),t&2){let e=_(2);f(),br("alt","AI image for ",e.vocabulary.word,""),g("src",e.generatedImageUrl,H)}}function fR(t,n){t&1&&v(0,"span",34)}function mR(t,n){if(t&1){let e=F();c(0,"button",31),y("click",function(){let r=x(e).$implicit,o=_(2);return C(o.handleOptionClick(r))}),c(1,"span",32),l(2),a(),k(3,fR,1,0,"span",33),a()}if(t&2){let e=n.$implicit,i=_(2);g("ngClass",Jv(4,dR,i.selectedOptions.includes(e)&&!i.optionStates[e],i.optionStates[e]==="correct",i.optionStates[e]==="incorrect",i.isChecked&&i.pickedAtCheck.has(e)))("disabled",i.selectedOptions.length===3&&!i.selectedOptions.includes(e)&&i.buttonState==="validate"||i.buttonState!=="validate"),f(2),U(e),f(),g("ngIf",i.isChecked&&(i.pickedAtCheck==null?null:i.pickedAtCheck.has(e)))}}function gR(t,n){if(t&1){let e=F();c(0,"app-button",35),y("click",function(){x(e);let r=_(2);return C(r.checkSelections())}),c(1,"span"),l(2,"Validate"),a()()}if(t&2){let e=_(2);g("disabled",!e.isCheckButtonEnabled||e.isLoaderVisible)}}function vR(t,n){if(t&1){let e=F();c(0,"app-button",36),y("click",function(){x(e);let r=_(2);return C(r.goNext())}),c(1,"span"),l(2,"Next"),a()()}}function _R(t,n){if(t&1){let e=F();c(0,"app-button",36),y("click",function(){x(e);let r=_(2);return C(r.startSentenceFormation())}),c(1,"span"),l(2,"Form a Sentence"),a()()}}function bR(t,n){t&1&&(c(0,"div",16),v(1,"div",17),a())}function yR(t,n){if(t&1){let e=F();c(0,"div",18)(1,"img",19),y("click",function(){x(e);let r=_();return C(r.goBack())}),a(),c(2,"button",20),y("click",function(){x(e);let r=_();return C(r.closeToMain())}),l(3,"\xD7"),a(),c(4,"div",10)(5,"div",21)(6,"h2"),l(7,"Which word is related to "),c(8,"b",22),l(9),a(),l(10,"?"),a(),k(11,pR,2,3,"div",23),a(),c(12,"div",24)(13,"p",25),l(14,"Choose the related words (select only three):"),a(),c(15,"div",26),k(16,mR,4,9,"button",27),a(),k(17,gR,3,1,"app-button",28)(18,vR,3,0,"app-button",29)(19,_R,3,0,"app-button",29)(20,bR,2,0,"div",15),a()()()}if(t&2){let e=_();f(9),U(e.vocabulary.word),f(2),g("ngIf",e.generatedImageUrl),f(5),g("ngForOf",e.vocabulary.options),f(),g("ngIf",e.buttonState==="validate"),f(),g("ngIf",e.buttonState==="next"),f(),g("ngIf",e.buttonState==="formSentence"),f(),g("ngIf",e.isLoaderVisible)}}function wR(t,n){if(t&1&&(c(0,"li"),l(1),a()),t&2){let e=_().$implicit;f(),U(e)}}function xR(t,n){if(t&1&&(Me(0),k(1,wR,2,1,"li",41),Ie()),t&2){let e=n.$implicit;f(),g("ngIf",e.includes("\u274C"))}}function CR(t,n){if(t&1){let e=F();c(0,"div",37)(1,"img",19),y("click",function(){x(e);let r=_();return C(r.goBack())}),a(),c(2,"button",20),y("click",function(){x(e);let r=_();return C(r.closeToMain())}),l(3,"\xD7"),a(),c(4,"h2"),l(5,"Feedback"),a(),c(6,"ul",38),k(7,xR,2,1,"ng-container",39),a(),c(8,"app-button",40),y("click",function(){x(e);let r=_();return C(r.startSentenceFormation())}),l(9,"Form a Sentence"),a()()}if(t&2){let e=_();f(7),g("ngForOf",e.formattedFeedback)}}function SR(t,n){if(t&1){let e=F();c(0,"div",47)(1,"label",48)(2,"strong"),l(3),a(),l(4,":"),a(),c(5,"div",49)(6,"textarea",50),gt("ngModelChange",function(r){let o=x(e).index,s=_(2);return Pt(s.sentenceInputs[o],r)||(s.sentenceInputs[o]=r),C(r)}),y("keydown",function(r){let o=x(e).index,s=_(2);return C(s.onKeyDown(r,o))}),l(7," "),a()()()}if(t&2){let e=n.$implicit,i=n.index,r=_(2);f(),br("for","sentenceInput",i,""),f(2),U(e),f(3),br("id","sentenceInput",i,""),mt("ngModel",r.sentenceInputs[i])}}function ER(t,n){t&1&&(c(0,"div",16),v(1,"div",17),a())}function MR(t,n){if(t&1){let e=F();c(0,"div",42)(1,"img",19),y("click",function(){x(e);let r=_();return C(r.goBack())}),a(),c(2,"button",20),y("click",function(){x(e);let r=_();return C(r.closeToMain())}),l(3,"\xD7"),a(),c(4,"h2"),l(5,"Form a Sentence"),a(),c(6,"p",43),l(7,"Using the words: "),c(8,"strong",22),l(9),a()(),c(10,"div",44),k(11,SR,8,6,"div",45),a(),c(12,"app-button",46),y("click",function(){x(e);let r=_();return C(r.checkSentence())}),c(13,"span"),l(14,"Check Sentence"),a()(),k(15,ER,2,0,"div",15),a()}if(t&2){let e=_();f(9),U(e.correctOptions.join(", ")),f(2),g("ngForOf",e.correctOptions),f(),g("disabled",!e.allFieldsFilled()||e.isLoaderVisible),f(3),g("ngIf",e.isLoaderVisible)}}function IR(t,n){if(t&1&&(c(0,"span",22)(1,"strong"),l(2),a()()),t&2){let e=_().$implicit;f(2),U(e)}}function DR(t,n){if(t&1&&(c(0,"span"),l(1),a()),t&2){let e=_().$implicit;f(),U(e)}}function PR(t,n){if(t&1&&(c(0,"li"),k(1,IR,3,1,"span",54)(2,DR,2,1,"span",41),a()),t&2){let e=n.$implicit;f(),g("ngIf",e.includes("correct answer")),f(),g("ngIf",!e.includes("correct answer"))}}function kR(t,n){if(t&1){let e=F();c(0,"div",51)(1,"img",19),y("click",function(){x(e);let r=_();return C(r.goBack())}),a(),c(2,"button",20),y("click",function(){x(e);let r=_();return C(r.closeToMain())}),l(3,"\xD7"),a(),c(4,"h2",52),l(5,"Sentence Feedback"),a(),c(6,"ul",53),k(7,PR,3,2,"li",39),a(),c(8,"app-button",40),y("click",function(){x(e);let r=_();return C(r.resetQuiz())}),l(9," Reset "),a()()}if(t&2){let e=_();f(7),g("ngForOf",e.formattedSentenceFeedback)}}var Md=(()=>{class t{constructor(e,i){this.vocabularyService=e,this.router=i,this.step=1,this.vocabulary=null,this.selectedOptions=[],this.feedback="",this.isChecked=!1,this.showSentenceForm=!1,this.sentenceInputs=[],this.correctOptions=[],this.correctAnswers=[],this.sentenceFeedback="",this.isButtonDisabled=!1,this.isCheckButtonDisabled=!1,this.isLoaderVisible=!1,this.isCheckButtonEnabled=!1,this.formattedFeedback=[],this.formattedSentenceFeedback=[],this.isGoBackEnabled=!1,this.isGoForwardEnabled=!1,this.isCheckSentenceEnabled=!1,this.showCorrectExplanations=!1,this.missedCorrectOptions=[],this.generatedImageUrl="",this.feedbackMap=new Map,this.buttonState="validate",this.optionStates={},this.skipFeedback=!1,this.pickedAtCheck=new Set}ngOnInit(){this.updateButtonStates()}ngAfterViewInit(){console.log("step1:",this.step1)}nextStep(){this.step++,window.scrollTo(0,0),this.updateButtonStates()}toggleCorrectExplanations(){this.showCorrectExplanations=!this.showCorrectExplanations}getWords(){this.isLoaderVisible=!0,this.isButtonDisabled=!0,this.vocabularyService.getVocabulary().subscribe(e=>{this.vocabulary=e,this.isChecked=!1,this.selectedOptions=[],this.feedback="",this.correctOptions=this.vocabulary.correctOptions,this.generatedImageUrl=e.image_url||"",this.nextStep(),this.isLoaderVisible=!1},e=>{console.error("Error fetching vocabulary:",e),this.isButtonDisabled=!1})}handleOptionClick(e){if(this.buttonState!=="validate")return;let i=this.selectedOptions.indexOf(e);if(i>=0)this.selectedOptions.splice(i,1);else{if(this.selectedOptions.length>=3)return;this.selectedOptions.push(e)}this.isCheckButtonEnabled=this.selectedOptions.length===3}checkSelections(){if(this.buttonState==="next"){this.step=3;return}this.isLoaderVisible=!0,this.vocabularyService.validateSelection(this.vocabulary.word,this.selectedOptions,this.vocabulary.options).subscribe(e=>{this.processFeedback(e.feedback),this.isChecked=!0,this.correctAnswers=e.correctAnswers||[],this.pickedAtCheck=new Set(this.selectedOptions),this.optionStates={};for(let r of this.vocabulary.options)this.optionStates[r]=this.correctAnswers.includes(r)?"correct":"incorrect";this.selectedOptions.length===3&&this.selectedOptions.every(r=>this.correctAnswers.includes(r))?this.buttonState="formSentence":this.buttonState="next",this.isLoaderVisible=!1},e=>{console.error("Error during validation:",e),this.isLoaderVisible=!1})}goNext(){this.step=3}startSentenceFormation(){this.showSentenceForm=!0,this.sentenceInputs=Array(this.correctOptions.length).fill(""),this.step=4,this.updateButtonStates()}checkSentence(){if(this.isLoaderVisible=!0,this.sentenceInputs.some(e=>!e.trim())){this.sentenceFeedback="Please type a sentence in all fields.",this.isLoaderVisible=!1;return}this.vocabularyService.validateSentence(this.sentenceInputs.join(" "),this.correctOptions).subscribe(e=>{this.processSentenceFeedback(e.feedback),this.nextStep(),this.isLoaderVisible=!1},e=>{console.error("Error validating sentence:",e),this.sentenceFeedback="An error occurred while validating the sentence.",this.isLoaderVisible=!1})}allFieldsFilled(){return this.sentenceInputs.every(e=>e.trim())}checkSentenceButtonState(){this.isCheckSentenceEnabled=this.allFieldsFilled()}goToHome(){this.router.navigate(["/home"])}goBack(){let e=this.selectedOptions.length===3&&this.selectedOptions.every(i=>this.correctAnswers.includes(i));if(this.step===4){e?(this.step=2,this.buttonState="formSentence"):this.step=3,this.isCheckButtonEnabled=!1;return}if(this.step===3){this.step=2,this.buttonState=e?"formSentence":"next",this.isCheckButtonEnabled=!1;return}this.step>1&&(this.step-=1),this.step===1&&(this.isButtonDisabled=!1),this.buttonState="validate"}updateButtonStates(){this.isGoBackEnabled=this.step>1,this.isGoForwardEnabled=this.step>1&&this.step<5}processFeedback(e){this.formattedFeedback=[],this.feedbackMap.clear(),e.forEach(s=>{this.feedbackMap.set(s.word,s)});let i=new Set(this.selectedOptions),r=e.filter(s=>i.has(s.word)).map(s=>s.is_correct?`\u2705 '${s.word}' is correct: ${s.reason}`:`\u274C '${s.word}' is incorrect: ${s.reason}`);this.formattedFeedback=r;let o=new Set(this.correctOptions);this.missedCorrectOptions=this.correctOptions.filter(s=>!i.has(s))}processSentenceFeedback(e){e?this.formattedSentenceFeedback=e.split(/(?<=[.!?])\s+/).filter(i=>i.trim().length>0):this.formattedSentenceFeedback=["No sentence feedback available."]}onKeyDown(e,i){if(e.key==="Enter"&&e.shiftKey){e.preventDefault();let o=e.target.selectionStart,s=this.sentenceInputs[i]?.substring(0,o)||"",d=this.sentenceInputs[i]?.substring(o)||"";this.sentenceInputs[i]=`${s} +${d}`}}resetSharedStepState(){this.selectedOptions=[],this.buttonState="validate",this.isCheckButtonEnabled=!1,this.isChecked=!1}resetQuiz(){this.step=1,this.vocabulary={word:"",options:[],correctOptions:[]},this.generatedImageUrl="",this.selectedOptions=[],this.correctAnswers=[],this.correctOptions=[],this.optionStates={},this.formattedFeedback=[],this.feedbackMap.clear(),this.feedback="",this.sentenceInputs=[],this.formattedSentenceFeedback=[],this.isChecked=!1,this.isButtonDisabled=!1,this.isCheckButtonEnabled=!1,this.isLoaderVisible=!1,this.buttonState="validate",this.skipFeedback=!1,this.pickedAtCheck.clear()}closeToMain(){this.resetQuiz()}static{this.\u0275fac=function(i){return new(i||t)(M(yw),M(Pe))}}static{this.\u0275cmp=$({type:t,selectors:[["app-vocabulary-builder"]],viewQuery:function(i,r){if(i&1&&($e(rR,5),$e(oR,5),$e(sR,5),$e(aR,5),$e(lR,5)),i&2){let o;je(o=Be())&&(r.step1=o.first),je(o=Be())&&(r.step2=o.first),je(o=Be())&&(r.step3=o.first),je(o=Be())&&(r.step4=o.first),je(o=Be())&&(r.step5=o.first)}},standalone:!0,features:[ye],decls:9,vars:6,consts:[[1,"imgbgcontainter"],[1,"vocabulary-builder-container"],[3,"title"],["src","assets/images/grammar-bg.png","alt","Chat Background",1,"grammar-bg"],["class","card1",4,"ngIf"],["class","card2",4,"ngIf"],["class","card3",4,"ngIf"],["class","card4",4,"ngIf"],["class","card5",4,"ngIf"],[1,"card1"],[1,"content-container"],[1,"image-container"],["src","assets/images/vocabulary/4.png","alt","Vocabulary Builder",1,"quiz-image"],[1,"description-container"],[3,"click","disabled","ngClass"],["class","loader-overlay",4,"ngIf"],[1,"loader-overlay"],[1,"loader"],[1,"card2"],["src","assets/images/vocabulary/back.png","alt","Go Back",1,"back-icon",3,"click"],[1,"user-guide-close-icon",3,"click"],[1,"word-container"],[1,"text-green-500"],["class","image-container",4,"ngIf"],[1,"options-container"],[1,"instruction"],[1,"option-container"],["class","option-btn",3,"ngClass","disabled","click",4,"ngFor","ngForOf"],[3,"disabled","click",4,"ngIf"],[3,"click",4,"ngIf"],[1,"quiz-image",3,"src","alt"],[1,"option-btn",3,"click","ngClass","disabled"],[1,"label"],["class","picked-chip",4,"ngIf"],[1,"picked-chip"],[3,"click","disabled"],[3,"click"],[1,"card3"],[1,"feedback-list"],[4,"ngFor","ngForOf"],[1,"submit-button",3,"click"],[4,"ngIf"],[1,"card4"],[1,"correct-answer"],[1,"sentence-formation"],["class","sentence-input-group",4,"ngFor","ngForOf"],[1,"submit-button",3,"click","disabled"],[1,"sentence-input-group"],[3,"for"],[1,"input-group"],["placeholder","Type your sentence here...",3,"ngModelChange","keydown","id","ngModel"],[1,"card5"],[1,"feedback-header"],[1,"feedback-list1"],["class","text-green-500",4,"ngIf"]],template:function(i,r){i&1&&(c(0,"div",0)(1,"div",1),v(2,"app-header",2)(3,"img",3),k(4,hR,13,5,"div",4)(5,yR,21,7,"div",5)(6,CR,10,1,"div",6)(7,MR,16,4,"div",7)(8,kR,10,1,"div",8),a()()),i&2&&(f(2),g("title","Vocabulary Builder"),f(2),g("ngIf",r.step===1),f(),g("ngIf",r.step===2),f(),g("ngIf",r.step===3),f(),g("ngIf",r.step===4),f(),g("ngIf",r.step===5))},dependencies:[xn,ze,Jt,vt,Fe,jt,_t,Vt,$t,yt],styles:[".card1[_ngcontent-%COMP%]{background:#ffffffe6;width:80vw;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);height:66vh;display:flex;justify-content:space-between;align-items:flex-start;padding:4vw;gap:2vw;background-color:#fff;border:10px solid var(--main-accent-color);border-radius:1vw;box-shadow:0 .4vw .8vw #0009;margin:2vw auto;max-width:90%}.content-container[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4vw}.image-container[_ngcontent-%COMP%]{width:50%}h2[_ngcontent-%COMP%]{font-size:2.5vw;font-weight:800;color:#006780;margin-bottom:20px;text-align:center}.quiz-image[_ngcontent-%COMP%]{width:100%;height:auto;border-radius:10px}.description-container[_ngcontent-%COMP%]{width:66%}.description-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.4vw;margin-bottom:30px;text-align:justify}.validate-button[_ngcontent-%COMP%]{border-radius:.5vw;font-size:1.5vw;transition:background-color .3s;width:auto;font-weight:700;background-color:#006780;border:none;color:#fff;padding:15px 32px;text-align:center;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;position:relative;min-width:5vw;height:2.9vw;margin-top:1.5vw}.validate-button[_ngcontent-%COMP%]:hover{background-color:#bdc3c7;box-shadow:0 12px 16px #0000003d,0 17px 50px #00000030}.validate-button[_ngcontent-%COMP%]:disabled{background-color:#ccc;cursor:not-allowed}.submit-button[_ngcontent-%COMP%]{position:absolute;left:50%;transform:translate(-50%)}.card2[_ngcontent-%COMP%]{background:#ffffffe6;padding:2vw;border-radius:1vw;box-shadow:0 .4vw .8vw #0009;width:80vw;position:absolute;top:54%;left:50%;transform:translate(-50%,-50%);height:70vh;border:10px solid var(--main-accent-color);background-color:#fff}.card2[_ngcontent-%COMP%] .content-container[_ngcontent-%COMP%]{display:flex;justify-content:space-around;align-items:center;height:100%}.image-container[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:100%;height:auto}.word-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:50%}.word-container[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:2.5rem;font-weight:700;color:#333;margin-top:2.7vw}.options-container[_ngcontent-%COMP%]{width:45%;text-align:center;padding:20px;background:#ffffffb3;border-radius:10px;box-shadow:0 4px 10px #0003;margin-right:4vw}.instruction[_ngcontent-%COMP%]{font-size:1.2vw;margin-bottom:20px;font-weight:700}.option-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center}.option-btn[_ngcontent-%COMP%]{background-color:#ccc;color:#fff;padding:12px 24px;border-radius:5px;cursor:pointer;font-size:1.2rem;margin:10px;width:80%;transition:background-color .3s ease;background-color:#fff;color:#333;border:2px solid #000000;font-size:1.1vw;border-radius:3vw;transition:all .3s ease;font-weight:600;display:flex;align-items:center;justify-content:center;box-shadow:-1px 1vw .5vw #00000021;height:100%;text-align:center;white-space:normal;word-break:break-word;width:21vw}.option-btn.correct[_ngcontent-%COMP%], .option-btn.correct[_ngcontent-%COMP%]:hover{background:#e8f7ed;border-color:#22c55e;color:#14532d}.option-btn.incorrect[_ngcontent-%COMP%], .option-btn.incorrect[_ngcontent-%COMP%]:hover{background:#fee2e2;border-color:#ef4444;color:#7f1d1d}.option-btn.selected[_ngcontent-%COMP%], .option-btn.selected[_ngcontent-%COMP%]:hover{background:#e0f2fe;border-color:#3b82f6;color:#0c4a6e}.option-btn[_ngcontent-%COMP%]:not(.selected):not(.correct):not(.incorrect):hover{background:#f3f4f6}.option-btn.disabled[_ngcontent-%COMP%], .option-btn[_ngcontent-%COMP%]:disabled{cursor:not-allowed;filter:grayscale(10%)}.option-btn.picked[_ngcontent-%COMP%]{outline:2px dashed rgba(0,0,0,.25);outline-offset:2px}.picked-chip[_ngcontent-%COMP%]{margin-left:8px;padding:2px 8px;border-radius:12px;font-size:12px;background:#0000000f}.card3[_ngcontent-%COMP%]{background:#ffffffe6;padding:2vw;border-radius:1vw;box-shadow:0 .4vw .8vw #0009;width:80vw;position:absolute;top:54%;left:50%;transform:translate(-50%,-50%);height:70vh;border:10px solid var(--main-accent-color);background-color:#fff}.feedback-list1[_ngcontent-%COMP%]{list-style-type:disc;padding:0 5vw;color:#000;overflow-y:auto;height:18vw;font-size:1.5vw;margin-bottom:30px;text-align:justify}.feedback-list1[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{margin-bottom:10px;line-height:1.5;display:list-item}.feedback-list[_ngcontent-%COMP%]{list-style-type:none!important;text-align:justify;height:20vw;overflow-y:auto;padding:0 3vw;margin-bottom:2vw;font-size:1.5vw}.feedback-list[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{margin-bottom:1vw;font-weight:500}.text-green-500[_ngcontent-%COMP%]{color:green}.text-red-500[_ngcontent-%COMP%]{color:red}.card4[_ngcontent-%COMP%]{background:#ffffffe6;padding:2vw;border-radius:1vw;box-shadow:0 .4vw .8vw #0009;width:80vw;position:absolute;top:54%;left:50%;transform:translate(-50%,-50%);height:70vh;border:10px solid var(--main-accent-color);background-color:#fff}textarea[_ngcontent-%COMP%]{resize:none}.card4[_ngcontent-%COMP%] .correct-answer[_ngcontent-%COMP%]{font-size:1.8vw;text-align:center;margin-bottom:20px;color:#006780;font-weight:600}.card4[_ngcontent-%COMP%] .sentence-formation[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;width:100%}.card4[_ngcontent-%COMP%] .sentence-input-group[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;width:80%;max-width:600px;margin-bottom:20px}.card4[_ngcontent-%COMP%] .sentence-input-group[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-weight:700;text-align:left;width:30%;font-size:1.7vw}.card4[_ngcontent-%COMP%] .sentence-input-group[_ngcontent-%COMP%] .input-group[_ngcontent-%COMP%]{width:60%}.card4[_ngcontent-%COMP%] .sentence-input-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]{width:138%;height:100%;font-size:1.4rem;border:2px solid #006780;font-family:Arial,sans-serif;border-radius:8px;padding:.4vw}.card4[_ngcontent-%COMP%] .sentence-input-group[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%]:focus{outline:none;border:1px solid #007bff}.card5[_ngcontent-%COMP%]{background:#ffffffe6;padding:2vw;border-radius:1vw;box-shadow:0 .4vw .8vw #0009;width:80vw;position:absolute;top:54%;left:50%;transform:translate(-50%,-50%);height:70vh;border:10px solid var(--main-accent-color);background-color:#fff}.card5[_ngcontent-%COMP%] .feedback-text[_ngcontent-%COMP%]{font-size:1.8vw;font-weight:600;color:#333;margin-top:1vw;word-wrap:break-word;max-height:400px;overflow-y:auto;padding-left:20px;padding-right:20px;text-align:justify;margin-bottom:1vw}.back-icon[_ngcontent-%COMP%]{position:absolute;top:1vw;left:2vw;color:#007bff;font-size:24px;width:5vw;cursor:pointer;transition:transform .2s ease-in-out}.back-icon[_ngcontent-%COMP%]:hover{transform:scale(1.1);color:#0056b3}.back-icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:30px;height:auto;cursor:pointer}.user-guide-close-icon[_ngcontent-%COMP%]{top:-1vw;right:-1.4vw}@media (min-width: 1200px){.icon-btn1[_ngcontent-%COMP%]{width:50px;height:50px;font-size:20px}}.loader-overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000}.loader[_ngcontent-%COMP%]{font-size:15px;width:1.5em;height:1.5em;border-radius:50%;position:relative;text-indent:-9999em;animation:_ngcontent-%COMP%_mulShdSpin 1.1s infinite ease;transform:translateZ(0)}@keyframes _ngcontent-%COMP%_mulShdSpin{0%,to{box-shadow:0 -3em gray,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808080,-2.2em -2.2em #808080b3}12.5%{box-shadow:0 -3em #808080b3,2.2em -2.2em gray,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808080}25%{box-shadow:0 -3em #80808080,2.2em -2.2em #808080b3,3em 0 gray,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}37.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808080,3em 0 #808080b3,2.2em 2.2em gray,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}50%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808080,2.2em 2.2em #808080b3,0 3em gray,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}62.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808080,0 3em #808080b3,-2.2em 2.2em gray,-3em 0 #80808033,-2.2em -2.2em #80808033}75%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808080,-2.2em 2.2em #808080b3,-3em 0 gray,-2.2em -2.2em #80808033}87.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808080,-3em 0 #808080b3,-2.2em -2.2em gray}}"]})}}return t})();var ww=(()=>{class t{constructor(e){this.http=e,this.baseUrl=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space/media":"http://localhost:5000/media",this.origin=this.baseUrl.replace(/\/media$/,"")}fetchAudio(){return this.http.get(`${this.baseUrl}/generate-vocabulary`,{responseType:"json"})}validateWord(e,i){return this.http.post(`${this.baseUrl}/validate-word`,{user_input:e,correct_word:i})}buildAssetUrl(e){return`${this.origin}${e}`}static{this.\u0275fac=function(i){return new(i||t)(I(De))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var xw=["audioPlayer"],TR=(t,n)=>({correct:t,error:n});function AR(t,n){if(t&1){let e=F();c(0,"div",8)(1,"div",9)(2,"div",10),v(3,"img",11),a(),c(4,"div",12)(5,"h2"),l(6,"Improve Your Word Skills!"),a(),c(7,"p"),l(8," Find the Word is a fun and educational activity that helps students improve their listening, spelling, and vocabulary skills. Students hear a word through audio and then type what they hear. They get instant feedback to know if their answer is right or wrong. If needed, they can listen again. The exercise also has buttons to show the word\u2019s meaning and an example sentence. A reset option lets students try again. This activity helps students practice listening and writing skills in an easy and engaging way, making learning more enjoyable and effective. "),a(),c(9,"app-button",13),y("click",function(){x(e);let r=_();return C(r.startGame())}),l(10,"Start Learning"),a()()()()}}function RR(t,n){t&1&&(c(0,"span"),l(1,"Generate audio"),a())}function FR(t,n){t&1&&(c(0,"span"),l(1,"Generating"),a())}function NR(t,n){t&1&&(It(),c(0,"svg",49),v(1,"path",50),a())}function LR(t,n){t&1&&(It(),c(0,"svg",49),v(1,"path",51),a())}function VR(t,n){if(t&1&&v(0,"span",52),t&2){let e=n.index;Nt("animation-delay",e%6*120,"ms")}}function jR(t,n){t&1&&(c(0,"div",53),l(1," Tap "),c(2,"strong"),l(3,"Generate audio"),a(),l(4," to load the audio. "),a())}function BR(t,n){t&1&&(c(0,"div",54),It(),c(1,"svg",55),v(2,"circle",56)(3,"path",57),a()())}function UR(t,n){if(t&1&&(c(0,"p",58),l(1),a()),t&2){let e=_(2);f(),U(e.validationMessage)}}function zR(t,n){if(t&1){let e=F();c(0,"div",14)(1,"div",15)(2,"img",16),y("click",function(){x(e);let r=_();return C(r.goBack())}),a(),c(3,"h2",17),l(4,"Listen & Type"),a(),c(5,"button",18),y("click",function(){x(e);let r=_();return C(r.closeToStart())}),l(6,"\xD7"),a()(),c(7,"div",19)(8,"div",20)(9,"div",21)(10,"button",22),y("click",function(){x(e);let r=_();return C(r.fetchAudio())}),k(11,RR,2,0,"span",23)(12,FR,2,0,"span",23),a()(),v(13,"img",24),c(14,"div",25)(15,"button",26),y("click",function(){x(e);let r=_();return C(r.togglePlayback())}),k(16,NR,2,0,"svg",27)(17,LR,2,0,"svg",27),v(18,"span",28),a(),c(19,"div",29),k(20,VR,1,2,"span",30),a(),c(21,"div",31),v(22,"div",32),a(),k(23,jR,5,0,"div",33),a(),c(24,"audio",34,0),y("timeupdate",function(){x(e);let r=_();return C(r.onTimeUpdate())})("ended",function(){x(e);let r=_();return C(r.onAudioEnded())})("loadedmetadata",function(){x(e);let r=_();return C(r.onLoadedMeta())}),v(26,"source",35),l(27," Your browser does not support the audio tag. "),a()(),c(28,"div",36)(29,"div",37)(30,"h3",38),l(31,"Type the word"),a(),c(32,"div",39),v(33,"span",40)(34,"span",40)(35,"span",40),a()(),c(36,"div",41)(37,"input",42),gt("ngModelChange",function(r){x(e);let o=_();return Pt(o.userInput,r)||(o.userInput=r),C(r)}),y("ngModelChange",function(){x(e);let r=_();return C(r.onInputChange())}),a(),k(38,BR,4,0,"div",43),a(),k(39,UR,2,1,"p",44),c(40,"app-button",45),y("click",function(){x(e);let r=_();return C(r.validateWord())}),l(41," Submit "),a(),c(42,"div",46)(43,"div",47)(44,"app-button",45),y("click",function(){x(e);let r=_();return C(r.showMeaningPanel())}),c(45,"span",48),l(46,"\u{1F4D8}"),a(),c(47,"span"),l(48,"Meaning"),a()(),c(49,"app-button",45),y("click",function(){x(e);let r=_();return C(r.showSentencePanel())}),c(50,"span",48),l(51,"\u270D\uFE0F"),a(),c(52,"span"),l(53,"Example"),a()()(),c(54,"app-button",45),y("click",function(){x(e);let r=_();return C(r.nextQuestion())}),c(55,"span",48),l(56,"\u27F2"),a(),c(57,"span"),l(58,"Reset"),a()()()()()()}if(t&2){let e=_();f(10),g("disabled",e.isGenerateDisabled),f(),g("ngIf",!e.isLoading),f(),g("ngIf",e.isLoading),f(2),W("is-disabled",!e.audioUrl)("is-playing",e.isPlaying),f(),g("disabled",!e.audioUrl),z("aria-pressed",e.isPlaying)("aria-label",e.isPlaying?"Pause audio":"Play audio"),f(),g("ngIf",!e.isPlaying),f(),g("ngIf",e.isPlaying),f(3),g("ngForOf",e.bars),f(),W("is-disabled",!e.audioUrl),f(),Nt("width",e.progress,"%"),f(),g("ngIf",!e.audioUrl),f(3),g("src",e.audioUrl,H),f(2),W("is-correct",e.isCorrect)("is-shake",e.ui.shake),f(5),W("is-off",e.attemptsLeft<1),f(),W("is-off",e.attemptsLeft<2),f(),W("is-off",e.attemptsLeft<3),f(2),mt("ngModel",e.userInput),g("disabled",!e.audioFinished)("ngClass",rc(38,TR,e.isCorrect,!e.isCorrect&&e.validationMessage)),f(),g("ngIf",e.isCorrect||(e.ui==null?null:e.ui.pulseOk)),f(),g("ngIf",e.validationMessage),f(),g("disabled",!e.canSubmit||e.attemptsLeft===0),f(4),g("disabled",e.isMeaningButtonDisabled),f(5),g("disabled",e.isExampleButtonDisabled),f(5),g("disabled",e.attemptsLeft>0&&!e.isCorrect)}}function HR(t,n){if(t&1){let e=F();c(0,"div",59)(1,"div",60)(2,"p"),l(3),a(),c(4,"app-button",13),y("click",function(){x(e);let r=_();return C(r.closePopup())}),l(5,"Close"),a()()()}if(t&2){let e=_();f(3),U(e.popupMessage)}}var Id=(()=>{class t{constructor(e,i,r){this.findwordService=e,this.cd=i,this.router=r,this.step=1,this.progress=0,this.audioUrl=null,this.userInput="",this.validationMessage="",this.isCorrect=!1,this.isLoading=!1,this.attemptsLeft=3,this.correctWord=null,this.isGenerateDisabled=!1,this.wordMeaning=null,this.wordSentence=null,this.showMeaning=!1,this.showSentence=!1,this.isPopupVisible=!1,this.popupMessage="",this.audioFinished=!1,this.canSubmit=!1,this.isPlaying=!1,this.currentTimeDisplay="0:00",this.durationDisplay="0:00",this.bars=Array.from({length:12}),this.ui={pulseOk:!1,shake:!1,showMeaning:!1,showExample:!1,meaningText:"",exampleText:""}}fetchAudio(){this.isLoading=!0,this.correctWord=null,this.attemptsLeft=3,this.validationMessage="",this.userInput="",this.isGenerateDisabled=!0,this.wordMeaning=null,this.wordSentence=null,this.showMeaning=!0,this.showSentence=!0,this.audioFinished=!1,this.canSubmit=!1,console.log("\u{1F3A4} Fetching new vocabulary..."),this.findwordService.fetchAudio().subscribe(e=>{if(!e||!e.audio_file_path||!e.word){console.error("\u274C Invalid response from backend:",e);return}this.correctWord=e.word.trim(),this.wordMeaning=e.meaning,this.wordSentence=e.sentence,console.log("\u2705 Correct Word Set:",this.correctWord),this.audioUrl=this.findwordService.buildAssetUrl(e.audio_file_path),this.cd.detectChanges(),setTimeout(()=>{this.audioPlayer&&this.audioPlayer.nativeElement?(console.log("\u{1F504} Loading new audio..."),this.audioPlayer.nativeElement.load(),this.audioPlayer.nativeElement.onended=()=>{console.log("\u{1F50A} Audio finished playing"),this.audioFinished=!0}):console.error("\u274C Audio player not found!")},500)},e=>{console.error("\u274C Error fetching audio:",e),this.isLoading=!1})}onInputChange(){this.canSubmit=this.userInput.trim().length>0}startGame(){this.resetStep2State(),this.step=2,this.progress=0}getMeaning(){this.wordMeaning?this.popupMessage=`Meaning: ${this.wordMeaning}`:this.popupMessage="Meaning not available for this word.",this.isPopupVisible=!0}getSentence(){this.wordSentence?this.popupMessage=`Example Sentence: ${this.wordSentence}`:this.popupMessage="Example sentence not available for this word.",this.isPopupVisible=!0}validateWord(){if(this.attemptsLeft<=0){this.showMeaning=!0,this.showSentence=!0;return}if(console.log(`\u{1F4DD} Validating answer: ${this.userInput} (Attempts left: ${this.attemptsLeft})`),!this.correctWord){console.error("\u274C Error: No correct word set for validation!"),this.validationMessage="Error validating word: Missing correct word.",this.showMeaning=!0,this.showSentence=!0;return}let e={user_input:this.userInput.trim(),correct_word:this.correctWord.trim().replace(".","")};console.log("\u{1F4E4} Sending validation request:",e),this.findwordService.validateWord(this.userInput,this.correctWord).subscribe(i=>{console.log("\u{1F4E5} Validation Response:",i),i.status==="success"?(this.validationMessage="\u2705 Correct!",this.isCorrect=!0,this.ui.pulseOk=!0,setTimeout(()=>this.ui.pulseOk=!1,1200),this.attemptsLeft=0,this.popupMessage=this.validationMessage,this.isGenerateDisabled=!0):(this.attemptsLeft--,this.attemptsLeft===0?(this.validationMessage=`\u274C Incorrect! The correct word was '${this.correctWord}'.`,this.correctWord=i.correct_word,this.isGenerateDisabled=!0,this.showMeaning=!0,this.showSentence=!0):this.validationMessage=`\u274C Incorrect! You have ${this.attemptsLeft} attempt(s) left.`,this.isCorrect=!1,this.ui.shake=!0,setTimeout(()=>this.ui.shake=!1,400))},i=>{console.error("\u274C Validation API Error:",i),this.validationMessage="Error validating word: API failed."})}onAudioReady(){console.log("\u{1F3A7} Audio is ready, trying to play..."),this.audioPlayer&&this.audioPlayer.nativeElement.play().then(()=>{console.log("\u2705 Audio played successfully.")}).catch(e=>{console.error("\u274C Play failed:",e)})}pauseAudio(){this.audioPlayer?.nativeElement&&this.audioPlayer.nativeElement.pause()}playAudio(){this.audioPlayer?.nativeElement&&this.audioPlayer.nativeElement.play(),console.log("\u{1F3B5} Play button clicked. Trying to play audio:",this.audioUrl),this.audioPlayer&&this.audioPlayer.nativeElement?this.audioPlayer.nativeElement.play().then(()=>{console.log("\u2705 Audio played successfully.")}).catch(e=>{console.error("\u274C Manual play failed:",e)}):console.error("\u274C Audio player not found!")}nextQuestion(){this.isGenerateDisabled=!1,this.audioUrl=null,this.userInput="",this.validationMessage="",this.attemptsLeft=3,this.correctWord=null,this.showMeaning=!1,this.showSentence=!1,this.isCorrect=!1,this.isLoading=!1,this.fetchAudio()}goToHome(){this.router.navigate(["/home"])}goBack(){let e=this.audioRef?.nativeElement;if(e)try{e.pause()}catch{}this.step=1}showMeaningPanel(){this.wordMeaning?this.popupMessage=`\u{1F4D6} Meaning: ${this.wordMeaning}`:this.popupMessage="Meaning not available for this word.",this.isPopupVisible=!0,this.ui.showMeaning=!0,this.ui.showExample=!1,this.ui.meaningText=this.meaningText||this.meaning||""}showSentencePanel(){this.wordSentence?this.popupMessage=`\u270D Example Sentence: ${this.wordSentence}`:this.popupMessage="Example sentence not available for this word.",this.isPopupVisible=!0,this.ui.showExample=!0,this.ui.showMeaning=!1,this.ui.exampleText=this.exampleText||this.sentence||this.exampleSentence||""}closePopup(){console.log("\u274C Closing popup..."),this.isPopupVisible=!1}get isMeaningButtonDisabled(){return!(this.isCorrect||this.attemptsLeft<=2)}get isExampleButtonDisabled(){return!(this.isCorrect||this.attemptsLeft===0)}togglePlayback(){let e=this.audioRef?.nativeElement;!e||!this.audioUrl||(e.paused?e.play().then(()=>{this.isPlaying=!0}).catch(()=>{this.isPlaying=!1}):(e.pause(),this.isPlaying=!1))}onLoadedMeta(){let e=this.audioRef?.nativeElement;e&&(this.durationDisplay=this.formatTime(e.duration),this.currentTimeDisplay="0:00",this.progress=0,this.isPlaying=!1,typeof this.audioFinished<"u"&&(this.audioFinished=!1))}onTimeUpdate(){let e=this.audioRef?.nativeElement;if(!e)return;let i=isFinite(e.currentTime)?e.currentTime:0,r=isFinite(e.duration)?e.duration:1e-5;this.currentTimeDisplay=this.formatTime(i),this.progress=Math.min(100,i/r*100)}onAudioEnded(){this.isPlaying=!1,this.progress=100,typeof this.audioFinished<"u"&&(this.audioFinished=!0)}formatTime(e){if(!isFinite(e))return"0:00";let i=Math.floor(e/60),r=Math.floor(e%60);return`${i}:${r.toString().padStart(2,"0")}`}resetPlayerUI(){this.isPlaying=!1,this.progress=0,this.currentTimeDisplay="0:00",this.durationDisplay="0:00"}resetStep2State(){let e=this.audioRef?.nativeElement;if(e){try{e.pause()}catch{}e.currentTime=0}this.audioUrl=null,this.isPlaying=!1,this.progress=0,this.currentTimeDisplay="0:00",this.durationDisplay="0:00",this.userInput="",this.validationMessage="",this.isCorrect=!1,this.attemptsLeft=3,this.canSubmit=!1,this.audioFinished=!1,this.correctWord=null,this.wordMeaning=null,this.wordSentence=null,this.isGenerateDisabled=!1,this.isLoading=!1,this.showMeaning=!1,this.showSentence=!1,this.ui&&(this.ui.pulseOk=!1,this.ui.shake=!1,this.ui.showMeaning=!1,this.ui.showExample=!1,this.ui.meaningText="",this.ui.exampleText=""),this.isPopupVisible=!1,this.popupMessage=""}closeToStart(){let e=this.audioRef?.nativeElement;if(e){try{e.pause()}catch{}e.currentTime=0}this.isPlaying=!1,this.audioUrl=null,this.userInput="",this.validationMessage="",this.isCorrect=!1,this.attemptsLeft=3,this.canSubmit=!1,this.audioFinished=!1,this.isGenerateDisabled=!1,this.isLoading=!1,this.showMeaning=!1,this.showSentence=!1,this.isPopupVisible=!1,this.popupMessage="",this.step=1}static{this.\u0275fac=function(i){return new(i||t)(M(ww),M(Re),M(Pe))}}static{this.\u0275cmp=$({type:t,selectors:[["app-findword"]],viewQuery:function(i,r){if(i&1&&($e(xw,5),$e(xw,5)),i&2){let o;je(o=Be())&&(r.audioPlayer=o.first),je(o=Be())&&(r.audioRef=o.first)}},standalone:!0,features:[ye],decls:7,vars:4,consts:[["audioPlayer",""],[1,"full-container"],[3,"title"],["src","assets/images/grammar-bg.png","alt","Chat Background",1,"grammar-bg"],[1,"findword-container"],["class","card1",4,"ngIf"],["class","game-screen",4,"ngIf"],["class","popup-overlay",4,"ngIf"],[1,"card1"],[1,"content-container"],[1,"image-container"],["src","assets/images/find_word/4.png","alt","Vocabulary Image",1,"quiz-image"],[1,"description-container"],[3,"click"],[1,"game-screen"],[1,"game-header"],["src","assets/images/back.png","alt","Go Back",1,"back-btn",3,"click"],[1,"game-title"],[1,"user-guide-close-icon",3,"click"],[1,"game-content"],[1,"audio-card","audio-card--kids"],[1,"ac-header"],["aria-label","Generate a new question",1,"btn","generate-btn","ac-generate",3,"click","disabled"],[4,"ngIf"],["src","assets/images/find_word/audio.png","alt","",1,"left-illustration"],[1,"ac-player"],[1,"play-btn",3,"click","disabled"],["viewBox","0 0 24 24","class","icon",4,"ngIf"],["aria-hidden","true",1,"pulse"],["aria-hidden","true",1,"wave-shell"],["class","bar",3,"animation-delay",4,"ngFor","ngForOf"],[1,"timeline"],[1,"progress"],["class","ac-hint",4,"ngIf"],["hidden","",3,"timeupdate","ended","loadedmetadata"],["type","audio/mp3",3,"src"],[1,"input-card","kid-panel"],[1,"kp-top"],[1,"kp-title"],["aria-label","Attempts left",1,"kp-attempts"],[1,"heart"],[1,"kp-input-wrap"],["type","text","placeholder","Type what you heard",1,"kp-input",3,"ngModelChange","ngModel","disabled","ngClass"],["class","ok-badge","aria-hidden","true",4,"ngIf"],["class","error-message",4,"ngIf"],[3,"click","disabled"],[1,"action-bar"],[1,"left-buttons"],["aria-hidden","true",1,"btn__icon"],["viewBox","0 0 24 24",1,"icon"],["d","M8 5v14l11-7z"],["d","M6 5h4v14H6zM14 5h4v14h-4z"],[1,"bar"],[1,"ac-hint"],["aria-hidden","true",1,"ok-badge"],["viewBox","0 0 24 24",1,"ok-icon"],["cx","12","cy","12","r","10"],["d","M7 12l3 3 7-7"],[1,"error-message"],[1,"popup-overlay"],[1,"popup-content"]],template:function(i,r){i&1&&(c(0,"div",1),v(1,"app-header",2)(2,"img",3),c(3,"div",4),k(4,AR,11,0,"div",5)(5,zR,59,41,"div",6)(6,HR,6,1,"div",7),a()()),i&2&&(f(),g("title","Find the Word"),f(3),g("ngIf",r.step===1),f(),g("ngIf",r.step===2),f(),g("ngIf",r.isPopupVisible))},dependencies:[xn,ze,Jt,vt,Fe,jt,_t,Vt,$t,yt],styles:["body[_ngcontent-%COMP%]{font-family:Roboto,sans-serif;background-color:#f9f9f9;margin:0;padding:0}.card1[_ngcontent-%COMP%]{background:#fff;width:80vw;margin:4vh auto;padding:2vw;border:10px solid var(--main-accent-color);border-radius:1vw;box-shadow:0 .4vw .8vw #0009;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.content-container[_ngcontent-%COMP%]{display:flex;flex-direction:row;gap:2vw;flex-wrap:wrap;justify-content:center;align-items:center}.image-container[_ngcontent-%COMP%]{flex:1 1 300px;text-align:center}.quiz-image[_ngcontent-%COMP%]{width:100%;height:auto;border-radius:10px}.description-container[_ngcontent-%COMP%]{flex:1 1 300px}h2[_ngcontent-%COMP%]{font-size:2vw;color:#006780;margin-bottom:1vw;font-weight:800}.description-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.2vw;text-align:justify;margin-bottom:2vw}.submit-button[_ngcontent-%COMP%]{font-size:1.2vw;padding:.8vw 2vw;background-color:#006780;color:#fff;border:none;border-radius:.5vw;cursor:pointer;font-weight:700}.submit-button[_ngcontent-%COMP%]:hover{background-color:#bdc3c7;box-shadow:0 12px 16px #0000003d,0 17px 50px #00000030}.submit-button[_ngcontent-%COMP%]:disabled{background-color:#ccc;cursor:not-allowed}@media (max-width: 768px){.content-container[_ngcontent-%COMP%]{flex-direction:column}h2[_ngcontent-%COMP%]{font-size:5vw}.description-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:3.5vw}.submit-button[_ngcontent-%COMP%]{font-size:3.5vw;padding:3vw 6vw;height:auto;margin-top:2vw}}@media (max-width: 480px){.card1[_ngcontent-%COMP%]{padding:5vw}.submit-button[_ngcontent-%COMP%]{width:100%;font-size:4vw}}.game-screen[_ngcontent-%COMP%]{height:71vh;display:flex;flex-direction:column;justify-content:space-evenly;background:#fff;width:85vw;margin:4vh auto;padding:2vw;border:10px solid var(--main-accent-color);border-radius:1vw;box-shadow:0 .4vw .8vw #0009;position:absolute;top:52%;left:50%;transform:translate(-50%,-50%)}.game-content[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:2rem;align-items:center}.audio-card[_ngcontent-%COMP%], .input-card[_ngcontent-%COMP%]{width:50%;height:20vw;padding:4rem;background-color:#deefef;border-radius:8px;box-shadow:0 4px 6px #0000001a;text-align:center;display:flex;flex-direction:column;justify-content:space-between;align-items:center}.input-card[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding-bottom:1rem}.input-wrapper[_ngcontent-%COMP%]{width:100%;display:flex;flex-direction:column;gap:1rem;align-items:center}.input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:80%;font-weight:700;padding:1rem;border-radius:8px;border:2px solid #007bff;font-size:1.2rem;text-align:center;transition:border-color .3s}.input-wrapper[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:disabled{background-color:#e0e0e0;color:#7a7a7a;border-color:#bdbdbd;cursor:not-allowed;opacity:.8}.input-wrapper[_ngcontent-%COMP%] input.correct[_ngcontent-%COMP%]{border:2px solid #4caf50!important;background-color:#e8f5e9}.input-wrapper[_ngcontent-%COMP%] input.error[_ngcontent-%COMP%]{border:2px solid #f44336!important;background-color:#ffebee}.error-message[_ngcontent-%COMP%]{color:#ff4d4d;font-weight:700;font-size:1.1rem;margin-top:.5rem;text-align:center}.action-buttons[_ngcontent-%COMP%]{width:100%;display:flex;justify-content:space-between;margin-top:.5rem;padding:0 1rem;align-items:center}.left-buttons[_ngcontent-%COMP%]{display:flex;gap:10px}.right-button[_ngcontent-%COMP%]{margin-left:auto}.action-buttons[_ngcontent-%COMP%] .btn[_ngcontent-%COMP%]{padding:.8rem 1.5rem;font-size:1rem;border-radius:8px;cursor:pointer;transition:background-color .3s}.info-btn[_ngcontent-%COMP%]{background-color:#f8c102;color:#fff;font-weight:700}.info-btn[_ngcontent-%COMP%]:hover{background-color:#e6a500}.next-btn[_ngcontent-%COMP%]{background-color:#006780;color:#fff;font-weight:700}.next-btn[_ngcontent-%COMP%]:hover{background-color:#004d5c}.next-btn[_ngcontent-%COMP%]:disabled{background-color:#ccc;cursor:not-allowed}.generate-buttons[_ngcontent-%COMP%]{display:flex;gap:10px}.generate-btn[_ngcontent-%COMP%]{background-color:#006780;color:#fff;border:none;padding:15px 32px;font-size:1.2vw;border-radius:.5vw;cursor:pointer;transition:background-color .3s,transform .3s;font-weight:700}.generate-btn[_ngcontent-%COMP%]:disabled{background-color:#ccc!important;color:#666;cursor:not-allowed;opacity:.7;box-shadow:none;transition:none}.extra-btn[_ngcontent-%COMP%]{background-color:#ff9800;color:#fff;padding:.8rem 1.5rem;font-size:1rem;border-radius:8px;cursor:pointer;transition:background-color .3s;border:none}.extra-btn[_ngcontent-%COMP%]:hover{background-color:#e68900}@media (max-width: 768px){.game-content[_ngcontent-%COMP%]{flex-direction:column;align-items:center}.audio-card[_ngcontent-%COMP%], .input-card[_ngcontent-%COMP%]{width:90%;height:auto}.submit-btn[_ngcontent-%COMP%], .action-buttons[_ngcontent-%COMP%]{width:90%}.action-buttons[_ngcontent-%COMP%]{flex-direction:column;gap:.5rem}}.popup-overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:20}.popup-content[_ngcontent-%COMP%]{background-color:#fff;padding:2vw;border-radius:8px;text-align:center;border:10px solid var(--main-accent-color);max-width:50vw}.popup-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.3vw;margin-bottom:2vw;color:#004d5c;font-weight:700}@keyframes _ngcontent-%COMP%_fadeInCenter{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}.game-header[_ngcontent-%COMP%]{position:relative;width:100%;display:flex;justify-content:center;align-items:center;padding-bottom:1rem}.back-btn[_ngcontent-%COMP%]{left:0;top:40%;width:6vw}.game-title[_ngcontent-%COMP%]{font-size:2vw;color:#004d5c;margin:0;text-align:center}.info-btn[_ngcontent-%COMP%]:disabled{background-color:#b0bec5;color:#757575;cursor:not-allowed;opacity:.6}.audio-card--kids[_ngcontent-%COMP%]{--primary: #006780;--accent: #009688;--soft: #deefef;--bar: rgba(0, 103, 128, .28);--bar-strong: rgba(0, 103, 128, .65);background:var(--soft);padding:2rem;border-radius:14px;border:3px solid var(--accent);position:relative}.ac-header[_ngcontent-%COMP%]{width:100%;display:flex;justify-content:center;margin-bottom:1rem}.ac-generate[_ngcontent-%COMP%]{border-radius:999px;font-weight:700;min-width:230px;display:inline-flex;align-items:center;gap:10px;text-align:center;display:flex;justify-content:center}.spinner[_ngcontent-%COMP%]{width:16px;height:16px;display:inline-block;border:3px solid #fff;border-top-color:transparent;border-radius:50%;animation:_ngcontent-%COMP%_spin .8s linear infinite}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}.ac-player[_ngcontent-%COMP%]{display:grid;grid-template-rows:auto auto auto auto;gap:1rem;place-items:center;padding:1rem 0 .5rem}.ac-player.is-disabled[_ngcontent-%COMP%]{opacity:.6;filter:grayscale(.2)}.play-btn[_ngcontent-%COMP%]{position:relative;width:65px;height:65px;border-radius:50%;border:none;background:var(--primary);color:#fff;cursor:pointer;box-shadow:0 8px 20px #0000002e;display:grid;place-items:center;transition:transform .12s ease,box-shadow .2s ease,background .3s ease;outline:none}.play-btn[_ngcontent-%COMP%]:disabled{cursor:not-allowed;opacity:.7}.play-btn[_ngcontent-%COMP%]:hover:not(:disabled){transform:translateY(-2px) scale(1.02)}.play-btn[_ngcontent-%COMP%]:active:not(:disabled){transform:translateY(0) scale(.98)}.play-btn[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:40px;height:40px;fill:#fff}.play-btn[_ngcontent-%COMP%] .pulse[_ngcontent-%COMP%]{position:absolute;inset:-8px;border-radius:50%;border:2px solid var(--primary);opacity:.18;transform:scale(.9)}.ac-player.is-playing[_ngcontent-%COMP%] .play-btn[_ngcontent-%COMP%] .pulse[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_pulse 1.6s ease-out infinite}@keyframes _ngcontent-%COMP%_pulse{0%{transform:scale(.9);opacity:.22}70%{transform:scale(1.25);opacity:0}to{transform:scale(1.25);opacity:0}}.wave-shell[_ngcontent-%COMP%]{display:flex;align-items:flex-end;justify-content:center;gap:6px;height:46px;width:80%;max-width:420px}.wave-shell[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%]{width:6px;height:16px;background:var(--bar);border-radius:4px;animation:_ngcontent-%COMP%_wave 1s ease-in-out infinite;animation-play-state:paused}.ac-player.is-playing[_ngcontent-%COMP%] .wave-shell[_ngcontent-%COMP%] .bar[_ngcontent-%COMP%]{animation-play-state:running}@keyframes _ngcontent-%COMP%_wave{0%,to{height:12px;background:var(--bar)}50%{height:38px;background:var(--bar-strong)}}.timeline[_ngcontent-%COMP%]{position:relative;height:10px;width:80%;max-width:520px;background:#e9f3f3;border-radius:999px;overflow:hidden;border:1px solid rgba(0,0,0,.06)}.timeline.is-disabled[_ngcontent-%COMP%]{opacity:.5}.timeline[_ngcontent-%COMP%] .progress[_ngcontent-%COMP%]{height:100%;width:0%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:999px 0 0 999px;transition:width .15s linear}.time[_ngcontent-%COMP%]{width:80%;max-width:520px;display:flex;justify-content:space-between;font-weight:700;color:#004d5c}.ac-hint[_ngcontent-%COMP%]{font-size:.95rem;color:#004d5c;background:#ffffffa6;border:1px dashed var(--accent);padding:8px 12px;border-radius:10px}@media (max-width: 768px){.play-btn[_ngcontent-%COMP%]{width:84px;height:84px}.play-btn[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{width:34px;height:34px}.wave-shell[_ngcontent-%COMP%], .timeline[_ngcontent-%COMP%], .time[_ngcontent-%COMP%]{width:92%}}.kid-panel[_ngcontent-%COMP%]{--primary: #006780;--accent: #009688;--soft: #deefef;background:var(--soft);border:3px solid var(--accent);border-radius:14px;padding:1.2rem 1.4rem 1.4rem;display:flex;flex-direction:column;gap:.9rem;position:relative}.kp-top[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between}.kp-title[_ngcontent-%COMP%]{margin:0;font-size:1.25rem;color:#004d5c;font-weight:800}.kp-attempts[_ngcontent-%COMP%] .heart[_ngcontent-%COMP%]{font-size:1.15rem;margin-left:6px;transition:opacity .25s ease,transform .25s ease}.kp-attempts[_ngcontent-%COMP%] .heart.is-off[_ngcontent-%COMP%]{opacity:.25;transform:scale(.88)}.kp-input-wrap[_ngcontent-%COMP%]{position:relative;display:grid;place-items:center}.kp-input[_ngcontent-%COMP%]{width:100%;font-weight:700;padding:.95rem 1rem;border-radius:10px;border:2px solid var(--primary);font-size:1.15rem;text-align:center;background:#fff;box-shadow:0 6px 18px #0000000f;transition:transform .1s ease,box-shadow .2s ease,border-color .3s ease;caret-color:var(--primary)}.kp-input[_ngcontent-%COMP%]:focus{outline:none;transform:translateY(-1px);box-shadow:0 10px 24px #0000001a;border-color:var(--accent)}.kp-input.correct[_ngcontent-%COMP%]{border-color:#4caf50!important;background:#e8f5e9}.kp-input.error[_ngcontent-%COMP%]{border-color:#f44336!important;background:#ffebee}.ok-badge[_ngcontent-%COMP%]{position:absolute;right:8%;top:50%;transform:translateY(-50%) scale(.6);animation:_ngcontent-%COMP%_okPop .6s ease forwards;pointer-events:none}.ok-icon[_ngcontent-%COMP%]{width:42px;height:42px;display:block}.ok-icon[_ngcontent-%COMP%] circle[_ngcontent-%COMP%]{fill:#0067801f;stroke:var(--primary);stroke-width:2}.ok-icon[_ngcontent-%COMP%] path[_ngcontent-%COMP%]{fill:none;stroke:#2e7d32;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}@keyframes _ngcontent-%COMP%_okPop{0%{transform:translateY(-50%) scale(0);opacity:0}60%{transform:translateY(-50%) scale(1.08);opacity:1}to{transform:translateY(-50%) scale(1);opacity:1}}.kid-panel.is-shake[_ngcontent-%COMP%] .kp-input[_ngcontent-%COMP%]{animation:_ngcontent-%COMP%_kpShake .35s ease}@keyframes _ngcontent-%COMP%_kpShake{0%,to{transform:translate(0)}25%{transform:translate(-6px)}50%{transform:translate(6px)}75%{transform:translate(-4px)}}.kp-submit[_ngcontent-%COMP%]{width:44%;margin:0 auto;font-weight:800;letter-spacing:.3px;font-size:1.2vw}.info-panel[_ngcontent-%COMP%]{background:#ffffffd9;border:1px dashed var(--accent);border-radius:12px;padding:.75rem 1rem;display:flex;flex-direction:column;gap:.65rem}.info-line[_ngcontent-%COMP%]{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:.6rem}.info-chip[_ngcontent-%COMP%]{background:var(--primary);color:#fff;font-weight:700;font-size:.85rem;padding:.25rem .55rem;border-radius:999px;white-space:nowrap}.info-text[_ngcontent-%COMP%]{margin:0;color:#004d5c;line-height:1.35rem;font-size:.98rem}@media (max-width: 768px){.kp-title[_ngcontent-%COMP%]{font-size:1.05rem}.kp-input[_ngcontent-%COMP%]{width:92%;font-size:1.05rem}.ok-badge[_ngcontent-%COMP%]{right:4%}.kp-submit[_ngcontent-%COMP%]{width:92%}}.action-bar[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:10px}.action-bar[_ngcontent-%COMP%] .left-buttons[_ngcontent-%COMP%]{display:flex;gap:10px;flex-wrap:wrap}.py-btn[_ngcontent-%COMP%]{background-color:#006780;color:#fff;border:none;padding:15px 32px;font-size:1.2vw;border-radius:.5vw;cursor:pointer;transition:background-color .3s,transform .3s;font-weight:700;display:inline-flex;align-items:center;gap:10px;line-height:1}.py-btn[_ngcontent-%COMP%]:hover:not(:disabled){background-color:#18788f;transform:scale(1.05)}.py-btn[_ngcontent-%COMP%]:active:not(:disabled){transform:scale(.98)}.py-btn[_ngcontent-%COMP%]:disabled{opacity:.55;cursor:not-allowed;transform:none}.py-btn[_ngcontent-%COMP%]:focus-visible{outline:3px solid #94c7d6;outline-offset:2px}.py-btn[_ngcontent-%COMP%] .btn__icon[_ngcontent-%COMP%]{display:inline-block;transform:translateY(0);transition:transform .25s ease}.py-btn[_ngcontent-%COMP%]:hover:not(:disabled) .btn__icon[_ngcontent-%COMP%]{transform:translateY(-2px)}@media (max-width: 768px){.py-btn[_ngcontent-%COMP%]{font-size:16px;border-radius:10px;padding:12px 22px}}.user-guide-close-icon[_ngcontent-%COMP%]{top:-5.4vw;right:-3.5vw}.left-illustration[_ngcontent-%COMP%]{position:absolute;left:-2vw;top:50%;transform:translateY(-50%);width:19vw;height:auto;z-index:1;pointer-events:none;filter:none!important;image-rendering:auto;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}@media (max-width: 768px){.left-illustration[_ngcontent-%COMP%]{width:170px;left:8px}}"]})}}return t})();var Cw=(()=>{class t{constructor(e){this.http=e,this.baseUrl=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space/media":"http://localhost:5000/media"}generateContent(e,i){return this.http.post(`${this.baseUrl}/generate_content`,{topic:e,difficulty:i})}generateQuestions(e,i){return this.http.post(`${this.baseUrl}/generate_questions`,{content:e,difficulty:i})}validateAnswer(e,i){return this.http.post(`${this.baseUrl}/validate_answer`,{question:e,selected_answer:i})}static{this.\u0275fac=function(i){return new(i||t)(I(De))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var WR=(t,n,e)=>({"is-selected":t,"is-correct":n,"is-incorrect":e}),qR=()=>["A","B","C","D"];function GR(t,n){if(t&1){let e=F();c(0,"button",32),y("mousedown",function(r){return x(e),C(r.preventDefault())})("click",function(){x(e);let r=_(3);return C(r.onClearTopic())}),l(1,"\xD7"),a()}}function QR(t,n){if(t&1){let e=F();c(0,"span",36),y("mousedown",function(){let r=x(e).$implicit,o=_(5);return C(o.selectSuggestion(r))}),l(1),a()}if(t&2){let e=n.$implicit,i=n.index,r=_(5);W("active",i===r.activeIndex),f(),U(e)}}function YR(t,n){if(t&1&&(Me(0),k(1,QR,2,3,"span",35),Ie()),t&2){let e=_(4);f(),g("ngForOf",e.filteredSuggestions)}}function ZR(t,n){if(t&1&&(c(0,"div",33),k(1,YR,2,1,"ng-container",34),a()),t&2){let e=_(3);f(),g("ngIf",e.filteredSuggestions==null?null:e.filteredSuggestions.length)}}function XR(t,n){t&1&&(c(0,"div",37),v(1,"span",38),l(2," Please select a level to enable topic suggestions. "),a())}function KR(t,n){if(t&1&&(c(0,"span",39),l(1),Ni(2,"titlecase"),a()),t&2){let e=_(3);z("data-level",e.difficulty),f(),U(_s(2,2,e.difficulty))}}function JR(t,n){t&1&&(c(0,"div",40)(1,"div",41),l(2,"Loading"),a()())}function e3(t,n){if(t&1){let e=F();c(0,"div",42)(1,"div",43)(2,"p"),l(3),a(),c(4,"app-button",44),y("click",function(){x(e);let r=_(3);return C(r.closeErrorPopup())}),l(5,"Close"),a()()()}if(t&2){let e=_(3);f(3),U(e.errorMessage||"We could not create the passage right now. Please try again.")}}function t3(t,n){if(t&1){let e=F();c(0,"section",9)(1,"div",10)(2,"div",11),v(3,"img",12),a(),c(4,"div",13)(5,"h1",14),l(6,"Welcome to the Reading Exercise"),a(),c(7,"p",15),l(8," The Reading component is a simple tool that turns any meaningful topic into a short, age-appropriate passage. It checks the topic first to avoid nonsense and unsafe inputs, then creates clear content at the chosen level (Easy, Medium, or Hard). After reading, it generates multiple-choice questions and gives instant feedback. Read-Aloud and A\u2212/A+ controls support different learning needs. This helps students build comprehension and vocabulary, and saves teachers and parents time during practice, homework, and revision. "),a(),c(9,"div",16)(10,"label",17),l(11,"Topic:"),a(),c(12,"div",18),v(13,"span",19),c(14,"input",20),gt("ngModelChange",function(r){x(e);let o=_(2);return Pt(o.topic,r)||(o.topic=r),C(r)}),y("focus",function(){x(e);let r=_(2);return C(r.openSuggestions())})("input",function(){x(e);let r=_(2);return C(r.onTyping())})("keydown",function(r){x(e);let o=_(2);return C(o.onKeydown(r))})("blur",function(){x(e);let r=_(2);return C(r.hideSuggestionsWithDelay())}),a(),k(15,GR,2,0,"button",21)(16,ZR,2,1,"div",22),a(),k(17,XR,3,0,"div",23),a(),c(18,"div",16)(19,"label",17),l(20,"Select Level:"),a(),c(21,"div",24),v(22,"span",25),c(23,"select",26),gt("ngModelChange",function(r){x(e);let o=_(2);return Pt(o.difficulty,r)||(o.difficulty=r),C(r)}),y("ngModelChange",function(r){x(e);let o=_(2);return C(o.onDifficultyChange(r))}),c(24,"option",27),l(25,"Easy"),a(),c(26,"option",27),l(27,"Medium"),a(),c(28,"option",27),l(29,"Hard"),a()(),k(30,KR,3,4,"span",28),a(),c(31,"app-button",29),y("click",function(){x(e);let r=_(2);return C(r.generateContent())}),l(32,"Generate Passage"),a()()()(),k(33,JR,3,0,"div",30)(34,e3,6,1,"div",31),a()}if(t&2){let e=_(2);f(12),W("locked",!e.difficulty),f(2),mt("ngModel",e.topic),g("placeholder",e.difficulty?"Enter or select a topic":"Select a level first")("disabled",!e.difficulty),z("aria-expanded",e.showSuggestions&&!!e.difficulty)("aria-disabled",!e.difficulty),f(),g("ngIf",e.difficulty&&e.topic.trim().length),f(),g("ngIf",e.difficulty&&e.showSuggestions),f(),g("ngIf",!e.difficulty),f(6),mt("ngModel",e.difficulty),f(),g("ngValue","easy"),f(2),g("ngValue","medium"),f(2),g("ngValue","hard"),f(2),g("ngIf",e.difficulty),f(),g("disabled",!e.topic.trim()||!e.difficulty.trim()||e.isGenerateDisabled),f(2),g("ngIf",e.isGeneratingContent),f(),g("ngIf",e.showPopup)}}function n3(t,n){if(t&1&&(c(0,"span",60),l(1),a()),t&2){let e=_(3);f(),ne("\u{1F4DA} ",e.normalizedTopic||e.topic,"")}}function i3(t,n){t&1&&(c(0,"div",61)(1,"span",41),l(2,"Loading"),a()())}function r3(t,n){if(t&1){let e=F();c(0,"div",45)(1,"div",46)(2,"img",47),y("click",function(){x(e);let r=_(2);return C(r.goToIntroSection())}),a(),c(3,"h2",48),l(4,"Let\u2019s Start Reading!"),a(),c(5,"div",49)(6,"button",50),y("click",function(){x(e);let r=_(2);return C(r.decreaseFont())}),l(7,"A\u2212"),a(),c(8,"button",51),y("click",function(){x(e);let r=_(2);return C(r.increaseFont())}),l(9,"A+"),a(),c(10,"button",52),y("click",function(){x(e);let r=_(2);return C(r.toggleReadAloud())}),l(11),a()()(),c(12,"div",53),k(13,n3,2,1,"span",54),c(14,"span",55),l(15),Ni(16,"titlecase"),a()(),c(17,"div",56),v(18,"div",57),a(),c(19,"div",58)(20,"app-button",29),y("click",function(){x(e);let r=_(2);return r.stopReadAloud(),C(r.generateQuestions())}),l(21,"Generate Questions"),a(),k(22,i3,3,0,"div",59),c(23,"app-button",44),y("click",function(){x(e);let r=_(2);return r.stopReadAloud(),C(r.resetAll())}),l(24,"Reset"),a()()()}if(t&2){let e=_(2);f(10),W("active",e.isReading||e.ttsPaused),z("aria-pressed",e.isReading||e.ttsPaused),f(),U(e.isReading?"\u23F8":"\u{1F50A}"),f(2),g("ngIf",e.normalizedTopic||e.topic),f(),z("data-level",e.difficulty),f(),U(_s(16,10,e.difficulty)),f(3),g("innerHTML",e.transformContent(e.content),Ri),f(2),g("disabled",e.isGenerateQuestionDisabled),f(2),g("ngIf",e.loadingQuestions)}}function o3(t,n){if(t&1){let e=F();c(0,"li")(1,"label",78)(2,"input",79),y("change",function(){let r=x(e).$implicit,o=_(3);return C(o.setSelectedAnswer(r))}),a(),c(3,"span",80),l(4),a(),c(5,"span",81),l(6),a()()()}if(t&2){let e=n.$implicit,i=n.index,r=_(3);f(),g("ngClass",oc(7,WR,!r.questions[r.currentQuestionIndex].isChecked&&r.getSelectedAnswer()===e,r.questions[r.currentQuestionIndex].isChecked&&r.questions[r.currentQuestionIndex].correct_answer===e,r.questions[r.currentQuestionIndex].isChecked&&r.getSelectedAnswer()===e&&e!==r.questions[r.currentQuestionIndex].correct_answer)),f(),g("name","q_"+r.currentQuestionIndex)("value",e)("checked",r.getSelectedAnswer()===e)("disabled",r.questions[r.currentQuestionIndex].isChecked),f(2),ne("",Kv(11,qR)[i],":"),f(2),U(e)}}function s3(t,n){if(t&1){let e=F();c(0,"app-button",44),y("click",function(){x(e);let r=_(3);return C(r.previousQuestion())}),l(1,"\u25C0 Previous"),a()}}function a3(t,n){if(t&1){let e=F();c(0,"app-button",29),y("click",function(){x(e);let r=_(3);return r.validateAnswer(),C(r.scheduleCongratsIfLast())}),l(1,"Validate"),a()}if(t&2){let e=_(3);g("disabled",!e.selectedAnswers[e.questions[e.currentQuestionIndex].question])}}function l3(t,n){if(t&1){let e=F();c(0,"app-button",44),y("click",function(){x(e);let r=_(3);return C(r.nextQuestion())}),l(1,"Next \u25B6"),a()}}function c3(t,n){if(t&1){let e=F();c(0,"div",62)(1,"div",63)(2,"img",64),y("click",function(){x(e);let r=_(2);return C(r.goToReadingPassage())})("keydown.enter",function(){x(e);let r=_(2);return C(r.goToReadingPassage())}),a(),c(3,"h3",65),l(4),a(),c(5,"div",66)(6,"button",67),y("click",function(){x(e);let r=_(2);return C(r.startOver())}),l(7,"\xD7"),a()()(),c(8,"div",68)(9,"div",69)(10,"span",70),l(11,"Question:"),a(),c(12,"span",71),l(13),a()(),c(14,"ul",72),k(15,o3,7,12,"li",73),Ni(16,"slice"),a()(),c(17,"div",74),k(18,s3,2,0,"app-button",75),c(19,"div",76),k(20,a3,2,1,"app-button",77)(21,l3,2,0,"app-button",75),a()()()}if(t&2){let e=_(2);f(4),Kn("Question ",e.currentQuestionIndex+1," of ",e.questions.length,""),f(9),U(e.questions[e.currentQuestionIndex].question),f(2),g("ngForOf",r_(16,7,e.questions[e.currentQuestionIndex]==null?null:e.questions[e.currentQuestionIndex].options,0,4)),f(3),g("ngIf",e.currentQuestionIndex>0),f(2),g("ngIf",!e.questions[e.currentQuestionIndex].isChecked),f(),g("ngIf",e.questions[e.currentQuestionIndex].isChecked&&e.currentQuestionIndex{class t{constructor(e,i,r){this.readingService=e,this.router=i,this.el=r,this.loadingQuestions=!1,this.isGeneratingContent=!1,this.isGenerateDisabled=!1,this.isGenerateQuestionDisabled=!1,this.showPopup=!1,this.showSuggestions=!1,this.hasStarted=!1,this.currentQuestionIndex=0,this.questions=[],this.selectedAnswers={},this.topic="",this.difficulty="easy",this.content="",this.errorMessage="",this.normalizedTopic="",this.filteredSuggestions=[],this.activeIndex=-1,this.fontPx=parseInt(localStorage.getItem("passageFontPx")||"18",10),this.isReading=!1,this.ttsPaused=!1,this.topicsByDifficulty={easy:["My Family","My School","My Neighborhood","Community Helpers","Good Manners","Healthy Eating","Personal Hygiene","Seasons of the Year","Weather Today","Animals on the Farm","Wild Animals","Pets and Care","Parts of a Plant","Uses of Water","Saving Water","The Sun and the Moon","Our Five Senses","Road Safety","Recycling Basics","Teamwork in Class"],medium:["Water Cycle","Photosynthesis","Solar System","States of Matter","Simple Machines","Electricity Basics","Magnetism Basics","Human Digestive System","Circulatory System Basics","Food Chain and Web","Ecosystems","Renewable Energy","Weather and Climate","Volcanoes and Earthquakes","Map Skills and Symbols","Ancient Egypt","Indus Valley Civilization","Indian Constitution (Basics)","Cyber Safety for Kids","Time Management for Students"],hard:["Global Warming and Climate Change","Greenhouse Effect","Plate Tectonics","Genetic Inheritance (Basics)","Natural Selection (Basics)","Nervous System Overview","Robotics in Daily Life","Artificial Intelligence (Basics)","Computer Networks (Basics)","Data Privacy and Security","Internet and Web Architecture (Basics)","World War II (Overview)","Industrial Revolution","Democracy and Rights (India)","Financial Literacy: Budgeting","Statistics in Daily Life (Mean, Median)","Renewable vs Non-renewable Energy","Entrepreneurship Basics","Ethics in Technology","Career Planning and Growth Mindset"]},this.showCongrats=!1,this.scoreCorrect=0,this.confettiInterval=null,this.scoreTotal=3,this.congratsTitle="",this.congratsMessage="",this.isValidating=!1}goToIntroSection(){this.stopReadAloud?.(),this.content="",this.hasStarted=!1,this.isGenerateDisabled=!1,this.refreshGenerateQuestionsState(),this.showCongrats=!1}generateContent(){if(this.showPopup=!1,this.errorMessage="",!this.topic.trim()||!this.difficulty.trim()){this.errorMessage="Please enter a topic and select a difficulty level.",this.showPopup=!0;return}this.isGenerateDisabled=!0,this.isGeneratingContent=!0,this.readingService.generateContent(this.topic,this.difficulty).subscribe(e=>{let i=(e?.content||"").trim();if(!i){this.errorMessage="The server did not return any content.",this.showPopup=!0,this.isGeneratingContent=!1,this.isGenerateDisabled=!1,this.content="",this.normalizedTopic="";return}this.content=i,this.normalizedTopic=(e?.normalized_topic||e?.topic||this.topic||"").trim(),this.isGeneratingContent=!1,this.hasStarted=!1,this.refreshGenerateQuestionsState()},e=>{console.error(e);let i=e?.error?.error||"Invalid topic. Please enter a meaningful topic.";this.errorMessage=i,this.showPopup=!0,this.isGeneratingContent=!1,this.isGenerateDisabled=!1})}generateQuestions(){this.content.trim()&&(this.loadingQuestions=!0,this.isGenerateQuestionDisabled=!0,this.readingService.generateQuestions(this.content,this.difficulty).subscribe(e=>{this.questions=this.parseQuestions(e.questions),this.selectedAnswers={},this.currentQuestionIndex=0,this.questions.forEach(i=>i.isChecked=!1),this.hasStarted=!0,this.loadingQuestions=!1},e=>{console.error(e),this.loadingQuestions=!1,this.refreshGenerateQuestionsState()}))}parseQuestions(e){if(Array.isArray(e))return e.map(s=>({question:String(s?.question||"").trim(),options:Array.isArray(s?.options)?s.options.map(d=>String(d)):[],correct_answer:String(s?.correct_answer||"").trim(),isChecked:!1})).filter(s=>s.question&&s.options.length===4);let i=[];return String(e||"").split(` + +`).forEach(s=>{let d={},u=s.split(` +`);d.question=(u[0]||"").replace(/^(\d+\.\s*)?Question:\s*/i,"").trim();let h=(u[1]||"").replace(/^Options:\s*\[/i,"").replace(/\]\s*$/,"").trim();d.options=h?h.split(", ").map(p=>p.trim()).slice(0,4):[],d.correct_answer=(u[2]||"").replace(/^Correct Answer:\s*/i,"").trim(),d.isChecked=!1,d.question&&d.options?.length&&i.push(d)}),i}setSelectedAnswer(e){let i=this.questions?.[this.currentQuestionIndex];i&&(this.selectedAnswers[i.question]=e)}getSelectedAnswer(){let e=this.questions?.[this.currentQuestionIndex];return e&&this.selectedAnswers[e.question]||""}nextQuestion(){this.currentQuestionIndex0&&this.currentQuestionIndex--}markCurrentAsChecked(){let e=this.questions[this.currentQuestionIndex];e&&this.selectedAnswers[e.question]&&(e.isChecked=!0)}closeErrorPopup(){this.showPopup=!1}goToHome(){this.router.navigate(["/home"])}goToContentBlock(){this.hasStarted=!1,this.content="",this.isGenerateDisabled=!1}resetAll(){this.initState(),this.stopReadAloud?.(),this.topic="",this.difficulty="easy",this.normalizedTopic="",this.content="",this.questions=[],this.currentQuestionIndex=0,this.selectedAnswers={},this.hasStarted=!1,this.showCongrats=!1,this.isGenerateDisabled=!1,this.isGenerateQuestionDisabled=!0,this.isGeneratingContent=!1,this.loadingQuestions=!1,this.showPopup=!1,this.errorMessage="",this.scoreCorrect=0,this.scoreTotal=0}goBack(){this.hasStarted=!1,this.refreshGenerateQuestionsState()}openSuggestions(){this.filterSuggestions(),this.showSuggestions=!0,this.activeIndex=-1}onTyping(){this.filterSuggestions(),this.showSuggestions=!0,this.activeIndex=-1}onKeydown(e){if(!(!this.showSuggestions||!this.filteredSuggestions.length))if(e.key==="ArrowDown")e.preventDefault(),this.activeIndex=Math.min(this.activeIndex+1,this.filteredSuggestions.length-1);else if(e.key==="ArrowUp")e.preventDefault(),this.activeIndex=Math.max(this.activeIndex-1,0);else if(e.key==="Enter"){e.preventDefault();let i=this.filteredSuggestions[this.activeIndex]||this.topic;this.selectSuggestion(i)}else e.key==="Escape"&&(this.showSuggestions=!1)}selectSuggestion(e){this.topic=e||"",this.showSuggestions=!1,this.isGenerateDisabled=!1}hideSuggestionsWithDelay(){setTimeout(()=>this.showSuggestions=!1,120)}filterSuggestions(){let e=(this.topic||"").toLowerCase().trim(),i=this.topicsByDifficulty[this.difficulty||"medium"]||[];this.filteredSuggestions=e?i.filter(r=>r.toLowerCase().includes(e)).slice(0,12):i.slice(0,12)}onClearTopic(){this.topic="",this.errorMessage="",this.activeIndex=-1,this.showSuggestions=!0,this.isGenerateDisabled=!1}onDifficultyChange(e){if(this.difficulty=e||"",!this.difficulty){this.filteredSuggestions=[],this.showSuggestions=!1,this.activeIndex=-1;return}this.filterSuggestions(),this.showSuggestions=!0,this.activeIndex=-1}applyFont(){document.documentElement.style.setProperty("--passage-font",`${this.fontPx}px`),localStorage.setItem("passageFontPx",String(this.fontPx))}decreaseFont(){this.fontPx=Math.max(14,this.fontPx-2),this.applyFont()}increaseFont(){this.fontPx=Math.min(30,this.fontPx+2),this.applyFont()}initState(){this.hasStarted=!1,this.isGeneratingContent=!1,this.isGenerateDisabled=!1,this.isGenerateQuestionDisabled=!1,this.showPopup=!1,this.errorMessage="",this.topic="",this.normalizedTopic="",this.difficulty="easy",this.showSuggestions=!1,this.activeIndex=-1,this.filteredSuggestions=[],this.content="",this.questions=[],this.currentQuestionIndex=0,this.selectedAnswers={},this.fontPx=parseInt(localStorage.getItem("passageFontPx")||"18",10),this.applyFont()}ngOnInit(){this.initState()}transformContent(e){try{let i=this.extractPassage(e);return`

${this.escapeHtml(i).replace(/\n+/g," ").trim()}

`}catch{return this.escapeHtml(e||"")}}extractPassage(e){if(!e)return"";let i=e.indexOf("Passage:");if(i===-1)return e;let r=e.indexOf("Summary:",i+8);return(r===-1?e.slice(i+8):e.slice(i+8,r)).trim()}escapeHtml(e){return e.replace(/&/g,"&").replace(//g,">")}toggleReadAloud(){if(!this.content||typeof window>"u"||!("speechSynthesis"in window)){this.errorMessage="Read Aloud is not supported in this browser.",this.showPopup=!0;return}let e=window.speechSynthesis;if(this.isReading&&!e.paused){e.pause(),this.isReading=!1,this.ttsPaused=!0;return}if(this.ttsPaused){e.resume(),this.isReading=!0,this.ttsPaused=!1;return}this.stopReadAloud();let i=this.extractPassage(this.content)||this.content,r=new SpeechSynthesisUtterance(i);r.rate=1,r.pitch=1,r.lang="en-US",r.onend=()=>{this.isReading=!1,this.ttsPaused=!1,this.ttsUtterance=void 0},r.onerror=()=>{this.isReading=!1,this.ttsPaused=!1,this.ttsUtterance=void 0},this.ttsUtterance=r,e.speak(r),this.isReading=!0}stopReadAloud(){typeof window<"u"&&"speechSynthesis"in window&&window.speechSynthesis.cancel(),this.isReading=!1,this.ttsPaused=!1,this.ttsUtterance=void 0}scheduleCongratsIfLast(){let e=this.currentQuestionIndex===this.questions.length-1,i=this.questions[this.currentQuestionIndex];!e||!i?.isChecked||setTimeout(()=>{let{correct:r,total:o}=this.computeScore();this.scoreCorrect=r,this.scoreTotal=o,this.scoreCorrect===this.scoreTotal?this.showCongratsMessage("\u{1F389} Congratulations \u{1F389}","You have completed all questions with a perfect score!"):this.scoreCorrect>0?this.showCongratsMessage("Good Job!","You did well, but there is room for improvement."):this.showCongratsMessage("Keep Trying!","Don't give up, try again!"),this.showCongrats=!0,this.triggerConfetti()},800)}showCongratsMessage(e,i){this.congratsTitle=e,this.congratsMessage=i}computeScore(){let e=0,i=this.questions.length;for(let r of this.questions){let o=this.selectedAnswers[r.question];o&&o===r.correct_answer&&e++}return{correct:e,total:i}}triggerConfetti(){this.confettiInterval&&clearInterval(this.confettiInterval),this.confettiInterval=setInterval(()=>{Cd({startVelocity:30,spread:360,ticks:60,origin:{x:Math.random(),y:Math.random()-.2}})},250)}stopConfetti(){this.confettiInterval&&(clearInterval(this.confettiInterval),this.confettiInterval=null);let e=document.querySelector("canvas.confetti-canvas");e&&e.remove()}startOver(){this.stopConfetti(),this.showCongrats=!1,this.resetAll()}ngOnDestroy(){this.stopConfetti()}validateAnswer(){this.isValidating=!0,setTimeout(()=>this.isValidating=!1,300);let e=this.questions?.[this.currentQuestionIndex];e&&this.selectedAnswers?.[e.question]&&(e.isChecked=!0),this.scheduleCongratsIfLast()}refreshGenerateQuestionsState(){this.isGenerateQuestionDisabled=!(this.content&&this.content.trim().length>0)}goToReadingPassage(){this.hasStarted=!1,this.refreshGenerateQuestionsState()}static{this.\u0275fac=function(i){return new(i||t)(M(Cw),M(Pe),M(be))}}static{this.\u0275cmp=$({type:t,selectors:[["app-reading"]],standalone:!0,features:[ye],decls:5,vars:3,consts:[[1,"reading-container"],[3,"title"],["src","assets/images/grammar-bg.png","alt","Background",1,"grammar-bg"],["class","main-container",4,"ngIf"],["class","congrats-overlay","aria-live","polite","aria-modal","true","role","dialog",4,"ngIf"],[1,"main-container"],["class","intro-section split",4,"ngIf"],["class","reading-card",4,"ngIf"],["class","mcq-card",4,"ngIf"],[1,"intro-section","split"],[1,"split-shell"],[1,"split-left"],["src","assets/images/reading/teacher.png","alt","Reading and quiz illustration",1,"intro-illustration"],[1,"split-right"],[1,"hero-title"],[1,"hero-copy"],[1,"form-row"],[1,"row-label"],[1,"input-wrap","clearable"],["aria-hidden","true",1,"icon-search"],["type","text","autocomplete","off","aria-autocomplete","list",1,"has-clear",3,"ngModelChange","focus","input","keydown","blur","ngModel","placeholder","disabled"],["class","clear-btn",3,"mousedown","click",4,"ngIf"],["class","suggestion-box",4,"ngIf"],["class","field-hint",4,"ngIf"],[1,"select-wrap"],["aria-hidden","true",1,"icon-level"],["required","",3,"ngModelChange","ngModel"],[3,"ngValue"],["class","badge",4,"ngIf"],[3,"click","disabled"],["class","loader-overlay","role","status","aria-live","polite",4,"ngIf"],["class","popup-overlay",4,"ngIf"],[1,"clear-btn",3,"mousedown","click"],[1,"suggestion-box"],[4,"ngIf"],[3,"active","mousedown",4,"ngFor","ngForOf"],[3,"mousedown"],[1,"field-hint"],["aria-hidden","true",1,"lock-icon"],[1,"badge"],["role","status","aria-live","polite",1,"loader-overlay"],[1,"loader"],[1,"popup-overlay"],[1,"popup-content"],[3,"click"],[1,"reading-card"],[1,"reading-head"],["src","assets/images/reading/back.png","alt","",1,"icon-img",3,"click"],[1,"reading-title"],[1,"head-actions"],["aria-label","Decrease font",1,"icon-btn",3,"click"],["aria-label","Increase font",1,"icon-btn",3,"click"],["aria-label","Read aloud",1,"icon-btn",3,"click"],[1,"reading-meta"],["class","chip chip-topic",4,"ngIf"],[1,"chip","chip-level"],[1,"passage-shell"],[1,"passage-text",3,"innerHTML"],[1,"reading-actions"],["class","loader-overlay","aria-live","polite","aria-busy","true",4,"ngIf"],[1,"chip","chip-topic"],["aria-live","polite","aria-busy","true",1,"loader-overlay"],[1,"mcq-card"],[1,"mcq-card__header"],["src","assets/images/reading/back.png","alt","Back","tabindex","0",1,"icon-img",3,"click","keydown.enter"],[1,"mcq-card__title"],[1,"mcq-card__actions"],[1,"user-guide-close-icon",3,"click"],[1,"mcq-card__body"],[1,"quiz-pill","quiz-question-pill"],[1,"qq-label"],[1,"qq-text"],[1,"quiz-options"],[4,"ngFor","ngForOf"],[1,"mcq-card__footer"],[3,"click",4,"ngIf"],[2,"display","flex","gap","10px","justify-content","flex-end","flex","1"],[3,"disabled","click",4,"ngIf"],[1,"quiz-pill","quiz-option-pill",3,"ngClass"],["type","radio",1,"visually-hidden",3,"change","name","value","checked","disabled"],[1,"slot"],[1,"opt-text"],["aria-live","polite","aria-modal","true","role","dialog",1,"congrats-overlay"],[1,"congrats-card"],["aria-label","Your score",1,"score-badge"],[1,"score"],[1,"total"]],template:function(i,r){i&1&&(c(0,"div",0),v(1,"app-header",1)(2,"img",2),k(3,d3,4,3,"div",3)(4,u3,15,4,"div",4),a()),i&2&&(f(),g("title","Reading"),f(2),g("ngIf",!r.showCongrats),f(),g("ngIf",r.showCongrats))},dependencies:[xn,ze,Jt,vt,Fe,D_,bc,jt,Ui,zi,_t,Bi,Vt,Bp,$t,yt],styles:['.reading-container[_ngcontent-%COMP%]{font-family:Segoe UI,sans-serif;background-size:auto;background-position:center;background-attachment:fixed;width:100%;height:100%}.main-container[_ngcontent-%COMP%]{width:85%;margin:5vh auto;border:9px solid var(--main-accent-color);border-radius:1.5vw;padding:2vw;box-shadow:0 .4vw 1vw #0000001a;height:76vh;position:relative;background:#fff;overflow:visible}.intro-section.split[_ngcontent-%COMP%]{padding-inline:1vw;display:block}.split-shell[_ngcontent-%COMP%]{width:100%;max-width:none;margin:0 auto;display:grid;grid-template-columns:minmax(320px,38%) 1fr;align-items:center}.split-left[_ngcontent-%COMP%]{display:grid;place-items:center}.intro-illustration[_ngcontent-%COMP%]{width:60%}.hero-title[_ngcontent-%COMP%]{font-size:2.5vw;font-weight:800;color:#006780;margin-bottom:20px;font-family:raleway}.hero-copy[_ngcontent-%COMP%]{font-size:1.4vw;text-align:justify;margin-bottom:3vw}.form-row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px;margin-top:12px}.row-label[_ngcontent-%COMP%]{min-width:140px;font-weight:700;color:#006780;font-size:1.3vw}.input-wrap[_ngcontent-%COMP%], .select-wrap[_ngcontent-%COMP%]{position:relative;flex:1}.input-wrap[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .select-wrap[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{width:100%;min-width:220px;font-size:1.1rem;padding:14px 44px 14px 40px;border-radius:12px;border:1px solid #cfe2e0;background:#fff;color:#0e3e45;outline:0;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}.select-wrap[_ngcontent-%COMP%] select[_ngcontent-%COMP%], .select-wrap[_ngcontent-%COMP%] option[_ngcontent-%COMP%]{font-size:1.1rem}.input-wrap[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder{color:#93a3b8}.input-wrap[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, .select-wrap[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus{border-color:#009688;box-shadow:0 0 0 3px #0096881f}.icon-search[_ngcontent-%COMP%], .icon-level[_ngcontent-%COMP%]{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:18px;height:18px;opacity:.8;pointer-events:none}.icon-search[_ngcontent-%COMP%]:before{content:"\\1f50e";font-size:16px}.icon-level[_ngcontent-%COMP%]:before{content:"\\1f3af";font-size:16px}.badge[_ngcontent-%COMP%]{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:12px;padding:4px 8px;border-radius:999px;border:1px solid #cfe2e0;background:#f7fcfb;color:#0e3e45}.badge[data-level=easy][_ngcontent-%COMP%]{border-color:#bfe6d8;color:#1b7f57;background:#ecfbf4}.badge[data-level=medium][_ngcontent-%COMP%]{border-color:#c7e3f4;color:#0b74a6;background:#eef8ff}.badge[data-level=hard][_ngcontent-%COMP%]{border-color:#f9dfc8;color:#b35a11;background:#fff3e9}.intro-section.split[_ngcontent-%COMP%] .suggestion-box[_ngcontent-%COMP%]{position:absolute;top:calc(100% + 8px);left:0;z-index:20;width:100%;max-height:200px;overflow:auto;padding:6px;border-radius:12px;border:1px solid #cfe2e0;background:#fff;box-shadow:0 12px 28px #0000001f}.intro-section.split[_ngcontent-%COMP%] .suggestion-box[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{display:block;padding:10px 12px;border-radius:10px;cursor:pointer;color:#0e3e45}.intro-section.split[_ngcontent-%COMP%] .suggestion-box[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:hover, .intro-section.split[_ngcontent-%COMP%] .suggestion-box[_ngcontent-%COMP%] span.active[_ngcontent-%COMP%]{background:#f1fbfa}.input-wrap.clearable[_ngcontent-%COMP%]{position:relative}.clear-btn[_ngcontent-%COMP%]{right:12px;top:4px;position:absolute;background:#009688;border:none;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2vw;color:#000;cursor:pointer;z-index:2010;box-shadow:0 2px 8px #5d91c32e;transition:background .2s,color .2s}.clear-btn[_ngcontent-%COMP%]:hover{background:#fff;color:#000;border:3px solid #009688}@media (max-width: 980px){.split-shell[_ngcontent-%COMP%]{grid-template-columns:1fr;gap:16px}.row-label[_ngcontent-%COMP%]{min-width:110px}}[_ngcontent-%COMP%]:root{--passage-font: 21px}.reading-head[_ngcontent-%COMP%]{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:10px;margin-bottom:6px}.reading-title[_ngcontent-%COMP%]{margin:0;text-align:center;color:#006780;font-size:clamp(20px,2.2vw,39px);letter-spacing:.3px;font-weight:800}.head-actions[_ngcontent-%COMP%]{display:flex;gap:8px}.head-actions[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%]{background:#f7fcfb;border:1px solid #cfe2e0;border-radius:8px;padding:.4em 1.1em;font-size:1.2vw;color:#009688;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s,color .15s;outline:none;min-width:2.5em;min-height:2.5em;display:flex;align-items:center;justify-content:center}.head-actions[_ngcontent-%COMP%] .icon-btn[_ngcontent-%COMP%]:hover, .head-actions[_ngcontent-%COMP%] .icon-btn.active[_ngcontent-%COMP%]{background:#e0f7f4;border-color:#009688;color:#00695c}.head-actions[_ngcontent-%COMP%] .icon-btn[aria-pressed=true][_ngcontent-%COMP%]{background:#b2dfdb;color:#004d40}.reading-meta[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:8px;margin:4px 4px 12px}.chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-weight:600;font-size:13px;border:1px solid #d9ecea;background:#f7fcfb;color:#0e3e45}.chip-level[data-level=easy][_ngcontent-%COMP%]{border-color:#bfe6d8;background:#ecfbf4;color:#1b7f57}.chip-level[data-level=medium][_ngcontent-%COMP%]{border-color:#c7e3f4;background:#eef8ff;color:#0b74a6}.chip-level[data-level=hard][_ngcontent-%COMP%]{border-color:#f9dfc8;background:#fff3e9;color:#b35a11}.passage-shell[_ngcontent-%COMP%]{position:relative;border:1px solid #e7f1f0;border-radius:14px;background:#f3efef;padding:14px 16px;box-shadow:inset 0 1px #ffffffb3;max-height:43vh;overflow:auto;font-size:1.4vw;line-height:1.8}.passage-shell[_ngcontent-%COMP%]::-webkit-scrollbar{width:12px}.passage-shell[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#cfe2e0;border-radius:10px;border:3px solid #fff}.passage-shell[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#f7fcfb}.passage-text[_ngcontent-%COMP%]{font-family:Georgia,Times New Roman,serif;font-size:var(--passage-font);line-height:1.5;color:#1e3a3f;text-align:left;hyphens:auto;white-space:pre-wrap;word-wrap:break-word}.passage-text[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{transition:background-color .3s ease}.passage-text[_ngcontent-%COMP%]:first-letter{float:left;font-size:2.6em;line-height:.9;padding-right:6px;padding-top:2px;color:#0f7f78;font-weight:700}.reading-actions[_ngcontent-%COMP%]{display:flex;gap:10px;justify-content:center;margin-top:30px}.back[_ngcontent-%COMP%]{grid-column:1 / 2}@media (max-width: 720px){.reading-title[_ngcontent-%COMP%]{font-size:22px}}.mcq-card[_ngcontent-%COMP%]{width:100%;margin:0;background:#fff;border:1px solid #d9ecea;border-radius:16px;padding:16px;box-shadow:0 10px 24px #0000000f}.mcq-card__header[_ngcontent-%COMP%]{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:10px;margin-bottom:10px;font-size:2vw}.mcq-card__title[_ngcontent-%COMP%]{margin:0;text-align:center;color:#0e3e45;font-weight:800;letter-spacing:.2px}.mcq-card__actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end}.quiz-pill[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:12px;border:1px solid #e6f0ef;background:#f8fbfb;color:#0e3e45;font-size:1.5vw}.quiz-question-pill[_ngcontent-%COMP%]{margin-bottom:3vw}.qq-label[_ngcontent-%COMP%]{font-weight:700;color:#0b74a6;white-space:nowrap}.qq-text[_ngcontent-%COMP%]{flex:1;line-height:1.6}.quiz-options[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width: 720px){.quiz-options[_ngcontent-%COMP%]{grid-template-columns:1fr}}.quiz-option-pill[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;border:1px solid #dfe9e7;background:#fff;cursor:pointer;transition:box-shadow .15s,transform .05s,border-color .15s,background .15s}.quiz-option-pill[_ngcontent-%COMP%]:hover{box-shadow:0 8px 18px #0000000f;background:#f7fbfb}.quiz-option-pill[_ngcontent-%COMP%] .slot[_ngcontent-%COMP%]{font-weight:700;color:#0b74a6;min-width:26px}.quiz-option-pill[_ngcontent-%COMP%] .opt-text[_ngcontent-%COMP%]{color:#0e3e45}.quiz-option-pill.is-selected[_ngcontent-%COMP%]{border-color:#a8d8d3;background:#eefaf8}.quiz-option-pill.is-correct[_ngcontent-%COMP%]{border-color:#6cc090;background:#ecfbf4}.quiz-option-pill.is-incorrect[_ngcontent-%COMP%]{border-color:#f2b0a9;background:#fff1ef}.visually-hidden[_ngcontent-%COMP%]{position:absolute!important;inset:auto!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}.answer-status[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;align-items:normal;gap:8px;margin-top:12px;justify-content:center;font-size:1vw;margin-top:2vw}.status-chip[_ngcontent-%COMP%]{padding:6px 10px;border-radius:999px;font-weight:700;font-size:12px}.status-chip.ok[_ngcontent-%COMP%]{background:#ecfbf4;color:#1b7f57;border:1px solid #bfe6d8}.status-chip.nope[_ngcontent-%COMP%]{background:#ffe9e7;color:#b1241a;border:1px solid #f4b2ab}.status-help[_ngcontent-%COMP%]{color:#3a5b60}.mcq-card__footer[_ngcontent-%COMP%]{display:flex;gap:10px;justify-content:end;margin-top:6vw;align-items:flex-end;justify-content:space-between}.loader-overlay[_ngcontent-%COMP%]{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center;z-index:1000}.loader[_ngcontent-%COMP%]{font-size:15px;width:1.5em;height:1.5em;border-radius:50%;position:relative;text-indent:-9999em;animation:_ngcontent-%COMP%_mulShdSpin 1.1s infinite ease;transform:translateZ(0)}@keyframes _ngcontent-%COMP%_mulShdSpin{0%,to{box-shadow:0 -3em gray,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808080,-2.2em -2.2em #808080b3}12.5%{box-shadow:0 -3em #808080b3,2.2em -2.2em gray,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808080}25%{box-shadow:0 -3em #80808080,2.2em -2.2em #808080b3,3em 0 gray,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}37.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808080,3em 0 #808080b3,2.2em 2.2em gray,0 3em #80808033,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}50%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808080,2.2em 2.2em #808080b3,0 3em gray,-2.2em 2.2em #80808033,-3em 0 #80808033,-2.2em -2.2em #80808033}62.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808080,0 3em #808080b3,-2.2em 2.2em gray,-3em 0 #80808033,-2.2em -2.2em #80808033}75%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808080,-2.2em 2.2em #808080b3,-3em 0 gray,-2.2em -2.2em #80808033}87.5%{box-shadow:0 -3em #80808033,2.2em -2.2em #80808033,3em 0 #80808033,2.2em 2.2em #80808033,0 3em #80808033,-2.2em 2.2em #80808080,-3em 0 #808080b3,-2.2em -2.2em gray}}.popup-overlay[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.popup-content[_ngcontent-%COMP%]{background-color:#fff;padding:2vw;border-radius:.5vw;box-shadow:0 .4vw .8vw #0000004d;text-align:center;max-width:40vw;width:80%}.popup-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{font-size:1.4vw;color:#dc3545;margin-bottom:1vw}@keyframes _ngcontent-%COMP%_popupScale{0%{transform:scale(.96);opacity:.85}to{transform:scale(1);opacity:1}}.input-wrap.locked[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{background:#f7f9fb;border-color:#dfe9e7;color:#93a3b8;cursor:not-allowed}.input-wrap.locked[_ngcontent-%COMP%] .icon-search[_ngcontent-%COMP%]{opacity:.5}.input-wrap.locked[_ngcontent-%COMP%]:after{content:"";position:absolute;inset:0;border-radius:12px;pointer-events:auto}.field-hint[_ngcontent-%COMP%]{margin:6px 2px 0;font-size:12px;color:#738a95;display:inline-flex;align-items:center;gap:6px}.lock-icon[_ngcontent-%COMP%]:before{content:"\\1f512";font-size:14px;line-height:1}.input-wrap[_ngcontent-%COMP%] .has-clear[_ngcontent-%COMP%]{padding-right:44px}.icon-img[_ngcontent-%COMP%]{width:4.5vw;cursor:pointer;transition:transform .3s}.icon-img[_ngcontent-%COMP%]:hover, .icon-img[_ngcontent-%COMP%]:focus{transform:scale(1.1)}.passage-text[_ngcontent-%COMP%] .highlight[_ngcontent-%COMP%]{background-color:#ff0}.congrats-overlay[_ngcontent-%COMP%]{position:fixed;inset:0;display:grid;place-items:center}.congrats-card[_ngcontent-%COMP%]{text-align:center;margin:47px auto;padding:40px;background:#fff;border-radius:15px;width:70vw;height:70vh;display:flex;flex-direction:column;justify-content:center;align-items:center;font-family:Pacifico,cursive;position:relative;z-index:1;box-shadow:0 .4vw 1vw #0000001a;border:9px solid var(--main-accent-color);top:3vw}.congrats-card[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:8px 0 15px;color:#0e3e45;font-weight:800;color:#4ca1af;font-size:2.5vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.congrats-card[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{margin:0 0 15px;color:#0e3e45;font-size:2.5vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.score-badge[_ngcontent-%COMP%]{display:inline-flex;align-items:baseline;gap:6px;padding:10px 14px;border-radius:999px;background:#eef7f6;color:#0e3e45;font-weight:800;margin-bottom:15px;font-size:2.5vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.user-guide-close-icon[_ngcontent-%COMP%]{right:-21px;top:-21px}']})}}return t})();var Sw=(()=>{class t{constructor(e){this.http=e,this.apiUrl="http://127.0.0.1:5000",this.loggedInSubject=new Ge(this.isLoggedIn()),setInterval(()=>this.checkAndRefreshToken(),30*1e3)}login(e,i){let r={username:e,password:i};return this.http.post(`${this.apiUrl}/login`,r).pipe(Le(o=>{localStorage.setItem("access_token",o.access_token),localStorage.setItem("refresh_token",o.refresh_token);let s=Date.now()+2*60*1e3;localStorage.setItem("access_token_expiry",s.toString());let d=Date.now()+10*60*1e3;localStorage.setItem("refresh_token_expiry",d.toString()),this.loggedInSubject.next(!0)}),Ke(o=>(o.status===401&&o.error.message,xt(o))))}logout(){let e=this.getToken();if(console.log("\u{1F511} Token at logout start:",e),this.removeToken(),this.loggedInSubject.next(!1),!e)return console.warn("\u26A0\uFE0F No token found. Emitting success anyway."),new oe(r=>{r.next(!0),r.complete()});let i=new en().set("Authorization",`Bearer ${e}`);return console.log("\u{1F4E4} Sending logout request with headers:",i),this.http.post(`${this.apiUrl}/logout`,{},{headers:i}).pipe(Le(()=>{console.log("\u2705 Logout API request completed")}),Ke(r=>(console.error("\u274C Logout error in service:",r),new oe(o=>{o.next(!0),o.complete()}))))}getToken(){return localStorage.getItem("access_token")}storeToken(e){localStorage.setItem("access_token",e),console.log("Token stored:",e),this.loggedInSubject.next(!0)}removeToken(){localStorage.removeItem("access_token"),localStorage.removeItem("refresh_token"),localStorage.removeItem("access_token_expiry"),this.loggedInSubject.next(!1)}isLoggedIn(){return!!this.getToken()}get isLoggedIn$(){return this.loggedInSubject.asObservable()}checkAndRefreshToken(){let e=localStorage.getItem("access_token_expiry");e&&Date.now()>=+e-5e3&&this.refreshAccessToken()}refreshAccessToken(){let e=localStorage.getItem("refresh_token");e&&this.http.post(`${this.apiUrl}/refresh`,{refresh_token:e}).subscribe(i=>{localStorage.setItem("access_token",i.access_token);let r=Date.now()+2*60*1e3;localStorage.setItem("access_token_expiry",r.toString())},i=>{console.log("Error refreshing token",i),i.status===401&&(i.error.message==="Refresh token has expired"||i.error.message==="Invalid refresh token")?(this.removeToken(),this.loggedInSubject.next(!1),window.location.href="/authentication"):console.error("Unexpected error:",i)})}static{this.\u0275fac=function(i){return new(i||t)(I(De))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();var Ew=(()=>{class t{constructor(e,i){this.authService=e,this.router=i,this.username="",this.password="",this.errorMessage=""}static{this.\u0275fac=function(i){return new(i||t)(M(Sw),M(Pe))}}static{this.\u0275cmp=$({type:t,selectors:[["app-authentication"]],decls:0,vars:0,template:function(i,r){}})}}return t})();var wi=(t,n)=>{let e=R(Xi),i=R(Pe);return e.checkSession().pipe(Y(()=>e.isLoggedIn()?!0:(localStorage.setItem("redirectAfterLogin",n.url),i.navigate(["/auth"]),!1)),Ke(()=>(localStorage.setItem("redirectAfterLogin",n.url),i.navigate(["/auth"]),j(!1))))};var Mw=(()=>{class t{constructor(e){this.http=e,this.apiUrl=location.hostname.endsWith("hf.space")?"https://pykara-py-learn-backend.hf.space":"http://localhost:5000"}signUp(e){return this.http.post(`${this.apiUrl}/sign-up`,e)}static{this.\u0275fac=function(i){return new(i||t)(I(De))}}static{this.\u0275prov=T({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})();function f3(t,n){t&1&&(c(0,"small",52),l(1,"First name is required."),a())}function m3(t,n){t&1&&(c(0,"small",52),l(1,"Enter at least 2 characters."),a())}function g3(t,n){t&1&&(c(0,"small",52),l(1,"Only alphabets and spaces allowed."),a())}function v3(t,n){t&1&&(c(0,"small",52),l(1,"Last name is required."),a())}function _3(t,n){t&1&&(c(0,"small",52),l(1,"Enter at least 2 characters."),a())}function b3(t,n){t&1&&(c(0,"small",52),l(1,"Only alphabets and spaces allowed."),a())}function y3(t,n){t&1&&(c(0,"small",52),l(1,"Email is required."),a())}function w3(t,n){t&1&&(c(0,"small",52),l(1,"Enter a valid email/phone."),a())}function x3(t,n){t&1&&(c(0,"small",52),l(1,"Role is required."),a())}function C3(t,n){t&1&&(c(0,"small",52),l(1,"Password is required."),a())}function S3(t,n){t&1&&(c(0,"small",52),l(1,"Use at least 8 characters."),a())}function E3(t,n){t&1&&(c(0,"small",53),l(1," Create a strong password with at least 8 characters using letters, numbers, and special symbols. "),a())}function M3(t,n){t&1&&(c(0,"small",52),l(1,"Confirm password is required."),a())}function I3(t,n){t&1&&(c(0,"small",52),l(1,"Passwords do not match."),a())}function D3(t,n){t&1&&(c(0,"div",54),l(1," Please accept Terms & Conditions. "),a())}function P3(t,n){t&1&&(Me(0),l(1," Create Account "),Ie())}function k3(t,n){t&1&&(v(0,"span",55),l(1," Creating Account... "))}function O3(t,n){if(t&1){let e=F();c(0,"div",56)(1,"div",57)(2,"button",58),y("click",function(){x(e);let r=_();return C(r.showInfo=!1)}),l(3,"\xD7"),a(),c(4,"div",59),l(5,"Role Information"),a(),c(6,"div",60)(7,"ul")(8,"li")(9,"strong"),l(10,"Admin:"),a(),l(11," Full control: users, roles, system settings."),a(),c(12,"li")(13,"strong"),l(14,"Teachers:"),a(),l(15," Run assessments / training evaluations."),a(),c(16,"li")(17,"strong"),l(18,"Student:"),a(),l(19," Access learning modules, exercises."),a(),c(20,"li")(21,"strong"),l(22,"Others:"),a(),l(23," General or limited access usage."),a()(),c(24,"p"),l(25,"Not sure? Select Others; an Admin can upgrade your role later."),a()()()()}}function Iw(t){let n=t.value||"";return/^[A-Za-z ]{2,}$/.test(n)?null:{invalidName:!0}}var Dw=(()=>{class t{toggleRoleInfo(e){e?.stopPropagation(),this.showRoleInfo=!this.showRoleInfo}hideRoleInfo(){this.showRoleInfo=!1}constructor(e,i,r,o,s){this.fb=e,this.router=i,this.signUpService=r,this.cdr=o,this.brand=s,this.embedded=!1,this.switchToSignIn=new de,this.isSubmitting=!1,this.showRoleInfo=!1,this.close=new de,this.showPassword=!1,this.showConfirmPassword=!1,this.errorMessage="",this.isSignUpActive=!0,this.loading=!1,this.submitted=!1,this.termsError="",this.facts=["\u{1F3AF} Master grammar with adaptive quizzes.","\u{1F4D6} Build comprehension with AI reading practice.","\u{1F5E3}\uFE0F Improve listening and pronunciation with feedback."],this.currentFact=this.facts[0],this.factIndex=0,this.showInfo=!1,this.form=this.fb.group({name:["",[Tt.required,Tt.minLength(2),Iw]],lastName:["",[Tt.required,Tt.minLength(2),Iw]],email:["",[Tt.required,Tt.pattern(/(^[^@]+@[^@]+\.[^@]+$)|(^\+?\d[\d\-\s]{8,14}\d$)/)]],password:["",[Tt.required,Tt.minLength(8),T3]],confirmPassword:["",[Tt.required]],role:["",[Tt.required]],terms:[!1,Tt.requiredTrue]},{validators:[this.passwordsMatchValidator]}),document.addEventListener("click",()=>this.hideRoleInfo())}ngOnInit(){this.startFactRotation()}ngOnDestroy(){this.factInterval&&clearInterval(this.factInterval)}startFactRotation(){this.factInterval=setInterval(()=>{this.factIndex=(this.factIndex+1)%this.facts.length,this.currentFact=this.facts[this.factIndex]},5e3)}control(e){return this.form.get(e)}controlHasError(e,i){let r=this.control(e);return r?i?!!(r.touched&&r.errors?.[i]):!!(r.touched&&r.invalid):!1}showPwdMismatch(){let e=this.control("password"),i=this.control("confirmPassword"),r=this.form.errors?.passwordMismatch;return!!(e&&i&&(i.touched||e.touched)&&r)}passwordsMatchValidator(e){let i=e.get("password")?.value,r=e.get("confirmPassword")?.value;return i&&r&&i===r?null:{passwordMismatch:!0}}togglePasswordVisibility(){this.showPassword=!this.showPassword}toggleConfirmPasswordVisibility(){this.showConfirmPassword=!this.showConfirmPassword}submit(){if(alert("Sign-Up button clicked!"),console.log("Sign-Up button clicked!"),this.submitted=!0,this.form.markAllAsTouched(),this.form.invalid){console.log("Form is invalid:"),Object.keys(this.form.controls).forEach(e=>{let i=this.form.get(e);i?.invalid&&console.log(`${e} is invalid. Errors:`,i?.errors)});return}if(!this.form.get("terms")?.value){this.termsError="Please accept Terms & Conditions.";return}this.termsError="",this.loading=!0;try{let e={name:this.control("name")?.value,lastName:this.control("lastName")?.value,email:this.control("email")?.value,password:this.control("password")?.value,role:this.control("role")?.value};console.log("Form data before submission:",this.form.value),console.log("Payload to send:",e),this.signUpService.signUp(e).subscribe(i=>{this.errorMessage="",console.log("Sign-up request sent successfully!"),this.loading=!1,this.embedded?this.switchToSignIn.emit():this.router.navigate(["/login"])},i=>{i&&i.status===400?this.errorMessage="This email or username is already registered.":this.errorMessage="An error occurred. Please try again.",this.loading=!1,this.cdr.markForCheck(),setTimeout(()=>{this.errorMessage="",this.cdr.markForCheck()},3e3)})}catch(e){console.error("Error occurred during sign-up:",e),this.loading=!1}}navigateHome(){this.router.navigateByUrl("/")}goToLogin(){this.switchToSignIn.emit()}closePopup(){try{window.dispatchEvent(new CustomEvent("auth-close"))}catch{}this.close.emit();try{let e=document.querySelector(".modal");e&&e.parentElement&&e.parentElement.removeChild(e);let i=document.querySelector(".modal-backdrop");i&&i.parentElement&&i.parentElement.removeChild(i)}catch(e){console.warn("Failed to remove modal/backdrop DOM elements",e)}this.cdr.markForCheck(),this.router.navigate(["/home"])}tr(e){return{title:"Create your account",subtitle:"Join to continue"}[e]||""}goToSignIn(){this.switchToSignIn.emit()}goToSignUp(){}static{this.\u0275fac=function(i){return new(i||t)(M($c),M(Pe),M(Mw),M(Re),M(bn))}}static{this.\u0275cmp=$({type:t,selectors:[["app-sign-up"]],inputs:{embedded:"embedded"},outputs:{switchToSignIn:"switchToSignIn",close:"close"},standalone:!0,features:[ye],decls:89,vars:29,consts:[["creatingAccount",""],[1,"signup-popup","ai-bg-animate"],[1,"ai-particle-bg"],[1,"signup-header"],[1,"signup-logo"],[1,"auth-card"],[1,"card-inner"],[1,"card-front"],["type","button","aria-label","Close",1,"signin-close",3,"click"],[1,"card-content"],[1,"side-panel","side-left"],[1,"signup-panel-left"],[1,"main-panel"],[1,"signup-title","center-title"],["novalidate","",1,"create-form",3,"ngSubmit","formGroup"],[1,"form-row"],[1,"form-field"],["for","firstName"],["id","firstName","type","text","placeholder","First Name","formControlName","name"],["class","error",4,"ngIf"],["for","lastName"],["id","lastName","type","text","placeholder","Last Name","formControlName","lastName"],["for","email"],["id","email","type","text","placeholder","email@gmail.com","formControlName","email"],[1,"form-field","role-field-wrapper"],["for","role"],["type","button",1,"info-btn",3,"click"],["id","role","formControlName","role"],["value",""],["value","admin"],["value","teachers"],["value","student"],["value","others"],[1,"form-field",2,"position","relative"],["for","password"],["id","password","placeholder","\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022","formControlName","password",3,"type"],["type","button","tabindex","-1","aria-label","Show/Hide confirm password",1,"eye-toggle",3,"click"],["class","policy-info",4,"ngIf"],["for","confirmPassword"],["id","confirmPassword","placeholder","\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022","formControlName","confirmPassword",3,"type"],[1,"form-checkbox"],["type","checkbox","id","terms","formControlName","terms"],["for","terms"],["href","#"],["class","terms-info",4,"ngIf"],["type","submit",1,"create-btn","ai-pulse",3,"disabled"],[4,"ngIf","ngIfElse"],[1,"google-signup-row"],["id","google-signup-btn-div"],["data-width","240","data-height","50","data-longtitle","true",1,"g-signin2"],[1,"create-footer"],["class","info-popup-bg",4,"ngIf"],[1,"error"],[1,"policy-info"],[1,"terms-info"],[1,"spinner"],[1,"info-popup-bg"],[1,"info-popup"],["type","button",1,"info-close",3,"click"],[1,"info-title"],[1,"info-text"]],template:function(i,r){if(i&1){let o=F();c(0,"section",1),v(1,"div",2),c(2,"div",3),v(3,"div",4),a(),c(4,"div",5)(5,"div",6)(6,"div",7)(7,"button",8),y("click",function(){return x(o),C(r.closePopup())}),l(8,"\xD7"),a(),c(9,"div",9)(10,"div",10),v(11,"div",11),c(12,"div",12)(13,"h2",13),l(14,"Create An Account"),a(),c(15,"form",14),y("ngSubmit",function(){return x(o),C(r.submit())}),c(16,"div",15)(17,"div",16)(18,"label",17),l(19,"First Name"),a(),v(20,"input",18),k(21,f3,2,0,"small",19)(22,m3,2,0,"small",19)(23,g3,2,0,"small",19),a(),c(24,"div",16)(25,"label",20),l(26,"Last Name"),a(),v(27,"input",21),k(28,v3,2,0,"small",19)(29,_3,2,0,"small",19)(30,b3,2,0,"small",19),a()(),c(31,"div",15)(32,"div",16)(33,"label",22),l(34,"Email"),a(),v(35,"input",23),k(36,y3,2,0,"small",19)(37,w3,2,0,"small",19),a(),c(38,"div",24)(39,"label",25),l(40," Role "),c(41,"button",26),y("click",function(){return x(o),C(r.showInfo=!0)}),l(42,"i"),a()(),c(43,"select",27)(44,"option",28),l(45,"-- Select Role --"),a(),c(46,"option",29),l(47,"Admin"),a(),c(48,"option",30),l(49,"Teachers"),a(),c(50,"option",31),l(51,"Student"),a(),c(52,"option",32),l(53,"Others"),a()(),k(54,x3,2,0,"small",19),a()(),c(55,"div",15)(56,"div",33)(57,"label",34),l(58,"Create Password"),a(),v(59,"input",35),c(60,"button",36),y("click",function(){return x(o),C(r.toggleConfirmPasswordVisibility())}),a(),k(61,C3,2,0,"small",19)(62,S3,2,0,"small",19)(63,E3,2,0,"small",37),a(),c(64,"div",33)(65,"label",38),l(66,"Confirm Password"),a(),v(67,"input",39),c(68,"button",36),y("click",function(){return x(o),C(r.toggleConfirmPasswordVisibility())}),a(),k(69,M3,2,0,"small",19)(70,I3,2,0,"small",19),a()(),c(71,"div",40),v(72,"input",41),c(73,"label",42),l(74,"Creating your account and you accepting "),c(75,"a",43),l(76,"Terms & Conditions."),a()()(),k(77,D3,2,0,"div",44),c(78,"button",45),k(79,P3,2,0,"ng-container",46)(80,k3,2,0,"ng-template",null,0,dn),a(),c(82,"div",47)(83,"div",48),v(84,"div",49),a()(),c(85,"div",50)(86,"b"),l(87),a()()()()()()()(),k(88,O3,26,0,"div",51),a()()}if(i&2){let o,s,d,u,h,p,m,b,w,S,D,O,L,X,V,ie=Dt(81);f(15),g("formGroup",r.form),f(5),z("aria-invalid",r.controlHasError("name")),f(),g("ngIf",r.controlHasError("name","required")&&((o=r.form.get("name"))==null?null:o.touched)),f(),g("ngIf",r.controlHasError("name","minlength")&&((s=r.form.get("name"))==null?null:s.touched)),f(),g("ngIf",r.controlHasError("name","invalidName")&&((d=r.form.get("name"))==null?null:d.touched)),f(4),z("aria-invalid",r.controlHasError("lastName")),f(),g("ngIf",r.controlHasError("lastName","required")&&((u=r.form.get("lastName"))==null?null:u.touched)),f(),g("ngIf",r.controlHasError("lastName","minlength")&&((h=r.form.get("lastName"))==null?null:h.touched)),f(),g("ngIf",r.controlHasError("lastName","invalidName")&&((p=r.form.get("lastName"))==null?null:p.touched)),f(5),z("aria-invalid",r.controlHasError("email")),f(),g("ngIf",r.controlHasError("email","required")&&((m=r.form.get("email"))==null?null:m.touched)),f(),g("ngIf",r.controlHasError("email","pattern")&&((b=r.form.get("email"))==null?null:b.touched)),f(6),z("aria-invalid",r.controlHasError("role")),f(11),g("ngIf",r.controlHasError("role","required")&&((w=r.form.get("role"))==null?null:w.touched)),f(5),g("type",r.showPassword?"text":"password"),z("aria-invalid",r.controlHasError("password")),f(2),g("ngIf",r.controlHasError("password","required")&&((S=r.form.get("password"))==null?null:S.touched)),f(),g("ngIf",r.controlHasError("password","minlength")&&((D=r.form.get("password"))==null?null:D.touched)),f(),g("ngIf",((O=r.form.get("password"))==null?null:O.hasError("passwordPolicy"))&&((O=r.form.get("password"))==null?null:O.touched)),f(4),g("type",r.showConfirmPassword?"text":"password"),z("aria-invalid",r.showPwdMismatch()),f(2),g("ngIf",r.controlHasError("confirmPassword","required")&&((L=r.form.get("confirmPassword"))==null?null:L.touched)),f(),g("ngIf",r.showPwdMismatch()&&((X=r.form.get("confirmPassword"))==null?null:X.touched)),f(7),g("ngIf",r.submitted&&!((V=r.form.get("terms"))!=null&&V.value)),f(),g("disabled",r.loading),f(),g("ngIf",!r.loading)("ngIfElse",ie),f(8),ne(" \xA9 ",r.brand.name==="Py-Learn"?"Pykara Technologies":"Majemaf\xF6rlaget",", 2025. All rights reserved. "),f(),g("ngIf",r.showInfo)}},dependencies:[ze,Fe,Wc,Hc,Ui,zi,_t,Fp,Bi,Vt,jc,As,Rs],styles:["[_nghost-%COMP%]{display:block;width:100%;min-height:100vh}.signup-title.center-title[_ngcontent-%COMP%]{text-align:center;margin-bottom:32px;width:100%;font-size:2.1rem;font-weight:800;letter-spacing:1px;color:#23395d;text-shadow:0 2px 8px #0008;animation:_ngcontent-%COMP%_logoGlow 3.5s ease-in-out infinite alternate}@keyframes _ngcontent-%COMP%_logoGlow{0%{text-shadow:0 2px 8px #0008,0 0 12px #38bdf8,0 0 6px #13bfa6}to{text-shadow:0 2px 8px #0008,0 0 32px #38bdf8,0 0 18px #13bfa6}}.create-form[_ngcontent-%COMP%]{width:100%;max-width:510px;display:grid;grid-template-columns:1fr 1fr;gap:12px 15px;align-items:start;margin-bottom:14px}.terms-info[_ngcontent-%COMP%]{color:#137ec4;font-size:1.08rem;font-weight:600;text-align:left;margin:12px 0 0;letter-spacing:.5px;display:block}.form-row[_ngcontent-%COMP%]{display:contents}.form-field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px;width:100%}.form-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{font-size:1.05rem;font-weight:700;color:#23395d}.form-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .form-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%]{background:#fff;color:#23395d;border:none;border-radius:8px;padding:12px 14px;font-size:1rem;margin-bottom:2px;box-shadow:0 1px 4px #0002;transition:border .2s,box-shadow .2s;width:100%;min-width:0;max-width:100%;height:46px;box-sizing:border-box}.form-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus, .form-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%]:focus{outline:2px solid #1de9b6;border-color:#1de9b6;box-shadow:0 0 6px #38bdf880,0 0 0 2px #1de9b688}.form-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder{color:#b0b8c1;opacity:1}.form-checkbox[_ngcontent-%COMP%]{grid-column:1 / -1;display:flex;gap:10px;align-items:center;color:#2b5160;margin-top:8px}.form-checkbox[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{width:18px;height:18px;accent-color:#38bdf8}.create-btn[_ngcontent-%COMP%]{grid-column:1 / -1;width:100%;background:#23395d;color:#fff;padding:14px 18px;border-radius:10px;font-weight:800;border:none;box-shadow:0 10px 30px #03142452;cursor:pointer;font-size:1.15rem;margin-top:10px}.create-btn[_ngcontent-%COMP%]:hover{background:#38bdf8;color:#fff}.create-footer[_ngcontent-%COMP%]{grid-column:1 / -1;text-align:center;color:#010207;font-size:.9rem;margin-top:4vw}.form-field[_ngcontent-%COMP%] .error[_ngcontent-%COMP%]{color:#ff5252;font-size:.85rem;margin-top:0}.signin-close[_ngcontent-%COMP%]{position:absolute;top:5px;right:5px;width:38px;height:38px;border:none;background:#14263c;color:#fff;border-radius:50%;font-size:2rem;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:10;transition:background .2s,color .2s;box-shadow:0 2px 8px #0005}.signin-close[_ngcontent-%COMP%]:hover{background:#38bdf8;color:#18314a}.form-field[_ngcontent-%COMP%] .eye-toggle[_ngcontent-%COMP%]{position:absolute;right:12px;top:38px;background:none;border:none;font-size:1.3em;color:#888;cursor:pointer;z-index:2;padding:0;line-height:1;opacity:.9;transition:color .2s,opacity .2s}.form-field[_ngcontent-%COMP%] .eye-toggle[_ngcontent-%COMP%]:hover{color:#555;opacity:1}.form-field[_ngcontent-%COMP%] .eye-toggle[_ngcontent-%COMP%]:focus{outline:none}.spinner[_ngcontent-%COMP%]{display:inline-block;width:18px;height:18px;border:3px solid #fff;border-top:3px solid #38bdf8;border-radius:50%;animation:_ngcontent-%COMP%_spin .7s linear infinite;vertical-align:middle;margin-right:8px}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"],data:{animation:[bd("fadeInOut",[jo(":enter",[Yi({opacity:0}),Vo("600ms",Yi({opacity:1}))]),jo(":leave",[Vo("600ms",Yi({opacity:0}))])])]}})}}return t})();function T3(t){let n=t.value||"";return/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=[\]{};':"\\|,.<>\/?]).{8,}$/.test(n)?null:{passwordPolicy:!0}}var A3=["cardRoot"];function R3(t,n){t&1&&(c(0,"small",71),l(1,"Email or Username is required."),a())}function F3(t,n){t&1&&(c(0,"small",71),l(1,"Password is required."),a())}function N3(t,n){if(t&1&&(c(0,"div",72),l(1),a()),t&2){let e=_();f(),U(e.errorMessage)}}function L3(t,n){t&1&&(Me(0),l(1," Login "),Ie())}function V3(t,n){t&1&&(v(0,"span",73),l(1," Logging in... "))}function j3(t,n){if(t&1){let e=F();c(0,"div",74)(1,"div",75)(2,"h3"),l(3,"Forgot Password"),a(),c(4,"p"),l(5,"Enter your email to receive password reset instructions."),a(),c(6,"input",76),gt("ngModelChange",function(r){x(e);let o=_();return Pt(o.forgotEmail,r)||(o.forgotEmail=r),C(r)}),a(),c(7,"button",77),y("click",function(){x(e);let r=_();return C(r.sendForgotEmail())}),l(8,"Send Reset Link"),a(),c(9,"button",78),y("click",function(){x(e);let r=_();return C(r.closeForgotModal())}),l(10,"Close"),a()()()}if(t&2){let e=_();f(6),mt("ngModel",e.forgotEmail)}}var va=(()=>{class t{constructor(e,i,r,o,s){this.fb=e,this.router=i,this.authService=r,this.brand=o,this.cdr=s,this.switchToSignUp=new de,this.close=new de,this.loading=!1,this.errorMessage="",this.showForgotModal=!1,this.forgotEmail="",this.typingTitle="",this.fullTitle="Log In",this.typingIndex=0,this.showPassword=!1,this.googleButtonRendered=!1,this.submitted=!1,this.isFlipped=!1,this.facts=["\u{1F3AF} Practice grammar with adaptive quizzes.","\u{1F4D6} Improve reading with AI-generated passages.","\u{1F5E3}\uFE0F Train listening and pronunciation effectively."],this.currentFact=this.facts[0],this.factIndex=0,this.form=this.fb.group({email:["",[Tt.required]],password:["",[Tt.required]]})}ngAfterViewInit(){this.updateAriaStates(),this.loadGoogleScript(),this.startFactRotation()}ngOnDestroy(){this.factInterval&&clearInterval(this.factInterval)}startTypingAnimation(){this.typingTitle="",this.typingIndex=0,this.fullTitle="Verifying Identity \u2026",this.typingInterval=setInterval(()=>{this.typingIndex{this.typingTitle="Log In"},1200))},60)}loadGoogleScript(){if(document.getElementById("google-identity"))this.renderGoogleButton();else{let e=document.createElement("script");e.src="https://accounts.google.com/gsi/client",e.async=!0,e.id="google-identity",e.onload=()=>{this.renderGoogleButton()},document.body.appendChild(e)}}renderGoogleButton(){if(this.googleButtonRendered)return;let e="YOUR_GOOGLE_CLIENT_ID.apps.googleusercontent.com",i=document.getElementById("google-btn-div");i&&typeof google<"u"&&google.accounts&&google.accounts.id&&(google.accounts.id.initialize({client_id:e,callback:r=>this.handleGoogleCredential(r)}),google.accounts.id.renderButton(i,{theme:"outline",size:"large",text:"continue_with",shape:"pill",width:"100%"}),this.googleButtonRendered=!0)}signIn(){if(this.submitted=!0,this.form.markAllAsTouched(),this.form.invalid){setTimeout(()=>{let r=document.querySelector(".main-panel [formControlName].ng-invalid");r&&r.focus()}),this.errorMessage="",this.cdr.markForCheck();return}this.loading=!0,this.errorMessage="";let e=this.form.get("email")?.value,i=this.form.get("password")?.value;this.authService.login(e,i).subscribe(r=>{this.loading=!1,this.authService.setLoggedIn(!0),this.authService.startAutoRefresh(),localStorage.setItem("username",e);let o=localStorage.getItem("redirectAfterLogin")||"/home";localStorage.removeItem("redirectAfterLogin"),this.router.navigate([o])},r=>{this.loading=!1,console.log("Sign-in error:",r),this.errorMessage="Invalid username or password",this.cdr.markForCheck(),setTimeout(()=>{this.errorMessage="",this.cdr.markForCheck()},3e3)})}handleGoogleCredential(e){e.credential?this.router.navigate(["/home"]):(this.errorMessage="Google sign-in failed.",setTimeout(()=>{this.errorMessage=""},3e3))}openForgotModal(e){e.preventDefault(),this.showForgotModal=!0}closeForgotModal(){this.showForgotModal=!1,this.forgotEmail=""}sendForgotEmail(){this.closeForgotModal(),alert("Password reset link sent to your email.")}handleEnterKey(e){!this.showForgotModal&&!this.loading&&this.signIn()}flipToSignUp(){this.isFlipped=!0,this.updateAriaStates(),setTimeout(()=>{let e=document.querySelector(".card-back .main-panel input");e&&e.focus()},700)}flipToSignIn(){this.isFlipped=!1,this.updateAriaStates(),setTimeout(()=>{let e=document.querySelector(".card-front .main-panel input");e&&e.focus()},700)}updateAriaStates(){let e=document.querySelector(".card-front"),i=document.querySelector(".card-back");!e||!i||(this.isFlipped?(e.setAttribute("aria-hidden","true"),i.setAttribute("aria-hidden","false")):(e.setAttribute("aria-hidden","false"),i.setAttribute("aria-hidden","true")))}goToSignUp(){this.flipToSignUp()}goToSignUpPage(){this.router.navigate(["/sign-up"])}closePopup(){this.router.navigate(["/home"]),this.close.emit();try{let e=document.querySelector(".modal");e&&e.parentElement&&e.parentElement.removeChild(e);let i=document.querySelector(".modal-backdrop");i&&i.parentElement&&i.parentElement.removeChild(i)}catch(e){console.warn("Failed to remove modal/backdrop DOM elements",e)}this.cdr.markForCheck()}togglePasswordVisibility(){this.showPassword=!this.showPassword}goToLogin(){this.flipToSignIn()}onGoogleSignIn(){console.log("Google sign-in clicked")}startFactRotation(){this.factInterval=setInterval(()=>{this.factIndex=(this.factIndex+1)%this.facts.length,this.currentFact=this.facts[this.factIndex],this.cdr.markForCheck()},5e3)}get socialLinks(){return this.brand.socialLinksCurrent}get websiteDisplay(){return"www."+this.socialLinks.website.replace(/^https?:\/\/(www\.)?/,"")}static{this.\u0275fac=function(i){return new(i||t)(M($c),M(Pe),M(Xi),M(bn),M(Re))}}static{this.\u0275cmp=$({type:t,selectors:[["app-sign-in"]],viewQuery:function(i,r){if(i&1&&$e(A3,7),i&2){let o;je(o=Be())&&(r.cardRoot=o.first)}},hostBindings:function(i,r){i&1&&y("keydown.enter",function(s){return r.handleEnterKey(s)},!1,Yl)},outputs:{switchToSignUp:"switchToSignUp",close:"close"},standalone:!0,features:[ye],decls:102,vars:31,consts:[["loggingIn",""],[1,"signin-popup","ai-bg-animate"],[1,"ai-particle-bg"],["role","banner",1,"signin-brand-logo"],["routerLink","/","aria-label","Pykara Home",1,"brand-link"],[1,"brand-logo-img",3,"src","alt"],[1,"social-icons","signin-social-icons"],["target","_blank","aria-label","LinkedIn",1,"social-icon","linkedin",3,"href"],[1,"fab","fa-linkedin-in"],["target","_blank","aria-label","YouTube",1,"social-icon","youtube",3,"href"],[1,"fab","fa-youtube"],["target","_blank","aria-label","Facebook",1,"social-icon","facebook",3,"href"],[1,"fab","fa-facebook-f"],["target","_blank","aria-label","Instagram",1,"social-icon","instagram",3,"href"],[1,"fab","fa-instagram"],["target","_blank","aria-label","Website",1,"social-icon","website",3,"href"],[1,"fas","fa-globe"],[1,"signin-header"],[1,"auth-card"],[1,"card-inner"],[1,"card-front"],[1,"card-content"],[1,"side-panel","side-left"],["src","assets/images/login/lion.png","alt","Lion",1,"side-img"],[1,"side-welcome-overlay"],[1,"welcome-back-desc"],["type","button",1,"action-btn",3,"click"],[1,"main-panel"],[1,"logo-header"],[1,"py-learn-text"],[1,"self-learning-system"],["type","button","aria-label","Close",1,"signin-close",3,"click"],[1,"signin-title"],[1,"login-text"],[3,"innerHTML"],["novalidate","",3,"ngSubmit","formGroup"],[1,"signin-row"],[1,"signin-field"],["for","email"],["id","email","type","email","placeholder","you@example.com","formControlName","email"],["class","error",4,"ngIf"],["for","password"],[1,"input-with-icon"],["id","password","placeholder","\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022","formControlName","password",3,"type"],["type","button","tabindex","-1","aria-label","Show/Hide password",1,"eye-toggle",3,"click"],["class","signin-error-toast",4,"ngIf"],[1,"signin-row","signin-options-row"],[1,"remember-me"],[1,"switch"],["id","rememberMe","type","checkbox"],[1,"slider"],[1,"forgot-password"],["href","#",1,"forgot-link",3,"click"],["type","submit",1,"signin-btn","ai-pulse",3,"disabled"],[4,"ngIf","ngIfElse"],[1,"signin-divider-row"],[1,"divider"],[1,"divider-or"],["type","button",1,"google-btn",3,"click"],["src","assets/images/google-logo.svg","alt","Google logo",1,"google-logo"],[1,"card-back"],[1,"card-content","card-content-reverse"],[1,"panel-right-embed"],[3,"switchToSignIn","embedded"],[1,"signin-footer"],["href","#",3,"click"],[1,"side-panel","side-right"],[1,"side-info-box"],[1,"welcome-back-title"],["class","forgot-modal-bg",4,"ngIf"],["target","_blank",1,"signin-watermark",3,"href"],[1,"error"],[1,"signin-error-toast"],[1,"spinner"],[1,"forgot-modal-bg"],[1,"forgot-modal"],["type","email","placeholder","Your email",3,"ngModelChange","ngModel"],[1,"signin-btn",3,"click"],[1,"modal-close",3,"click"]],template:function(i,r){if(i&1){let o=F();c(0,"section",1),v(1,"div",2),c(2,"div",3)(3,"a",4),v(4,"img",5),a()(),c(5,"div",6)(6,"a",7),v(7,"i",8),a(),c(8,"a",9),v(9,"i",10),a(),c(10,"a",11),v(11,"i",12),a(),c(12,"a",13),v(13,"i",14),a(),c(14,"a",15),v(15,"i",16),a()(),v(16,"div",17),c(17,"div",18)(18,"div",19)(19,"div",20)(20,"div",21)(21,"div",22),v(22,"img",23),c(23,"div",24)(24,"div",25),l(25,"First time here? Create your account to get started."),a(),c(26,"button",26),y("click",function(){return x(o),C(r.flipToSignUp())}),l(27,"Sign Up"),a()()(),c(28,"div",27)(29,"div",28)(30,"span",29),l(31),a(),c(32,"div",30),l(33,"(A Self-Learning System)"),a()(),c(34,"button",31),y("click",function(){return x(o),C(r.closePopup())}),l(35,"\xD7"),a(),c(36,"h2",32)(37,"span",33),l(38,"Login"),a(),v(39,"span",34),a(),c(40,"form",35),y("ngSubmit",function(){return x(o),C(r.signIn())}),c(41,"div",36)(42,"div",37)(43,"label",38),l(44,"Email or Username"),a(),v(45,"input",39),k(46,R3,2,0,"small",40),a()(),c(47,"div",36)(48,"div",37)(49,"label",41),l(50,"Password"),a(),c(51,"div",42),v(52,"input",43),c(53,"button",44),y("click",function(){return x(o),C(r.togglePasswordVisibility())}),l(54),a()(),k(55,F3,2,0,"small",40)(56,N3,2,1,"div",45),a()(),c(57,"div",46)(58,"div",47)(59,"label",48),v(60,"input",49)(61,"span",50),a(),c(62,"span"),l(63,"Remember me"),a()(),c(64,"div",51)(65,"a",52),y("click",function(d){return x(o),C(r.openForgotModal(d))}),l(66,"Forgot password?"),a()()(),c(67,"button",53),k(68,L3,2,0,"ng-container",54)(69,V3,2,0,"ng-template",null,0,dn),a(),c(71,"div",55),v(72,"div",56),c(73,"span",57),l(74,"or"),a(),v(75,"div",56),a(),c(76,"button",58),y("click",function(){return x(o),C(r.onGoogleSignIn())}),v(77,"img",59),c(78,"span"),l(79,"Log in with Google"),a()()()()()(),c(80,"div",60)(81,"div",61)(82,"div",27)(83,"div",62)(84,"app-sign-up",63),y("switchToSignIn",function(){return x(o),C(r.flipToSignIn())}),a()(),c(85,"div",64)(86,"a",65),y("click",function(d){return x(o),r.flipToSignIn(),C(d.preventDefault())}),l(87,"Back to Sign In"),a()()(),c(88,"div",66)(89,"div",67)(90,"div",68),l(91,"Learn Smarter."),a(),c(92,"div",68),l(93,"Practice Better."),a(),c(94,"div",25),l(95,"Existing user? Log in to your account."),a(),c(96,"button",26),y("click",function(){return x(o),C(r.goToLogin())}),l(97,"Sign In"),a()(),v(98,"img",23),a()()()()(),k(99,j3,11,1,"div",69),c(100,"a",70),l(101),a()()}if(i&2){let o,s,d,u,h,p,m=Dt(70);f(4),g("src",r.brand.logo,H)("alt",r.brand.name+" Logo"),f(2),g("href",r.socialLinks.linkedin,H),f(2),g("href",r.socialLinks.youtube,H),f(2),g("href",r.socialLinks.facebook,H),f(2),g("href",r.socialLinks.instagram,H),f(2),g("href",r.socialLinks.website,H),f(3),W("flipped",r.isFlipped),f(14),U(r.brand.name),f(8),g("innerHTML",r.typingTitle,Ri),f(),g("formGroup",r.form),f(5),W("invalid",r.submitted&&((o=r.form.get("email"))==null?null:o.invalid)),z("aria-invalid",((s=r.form.get("email"))==null?null:s.invalid)&&((s=r.form.get("email"))==null?null:s.touched)),f(),g("ngIf",r.submitted&&((d=r.form.get("email"))==null||d.errors==null?null:d.errors.required)),f(6),W("invalid",r.submitted&&((u=r.form.get("password"))==null?null:u.invalid)),g("type",r.showPassword?"text":"password"),z("aria-invalid",((h=r.form.get("password"))==null?null:h.invalid)&&((h=r.form.get("password"))==null?null:h.touched)),f(),z("aria-pressed",r.showPassword),f(),ne(" ",r.showPassword?"\u{1F648}":"\u{1F441}\uFE0F"," "),f(),g("ngIf",r.submitted&&((p=r.form.get("password"))==null||p.errors==null?null:p.errors.required)),f(),g("ngIf",r.errorMessage),f(11),g("disabled",r.loading),f(),g("ngIf",!r.loading)("ngIfElse",m),f(16),g("embedded",!0),f(15),g("ngIf",r.showForgotModal),f(),g("href",r.socialLinks.website,H),f(),ne(" ",r.websiteDisplay," ")}},dependencies:[ze,Fe,Wc,Hc,_t,Vt,jc,As,Rs,jt,$t,qi,Dw],styles:['.signin-popup[_ngcontent-%COMP%]{position:fixed;top:0;left:0;width:100vw;height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1000;background:#05234b;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.signin-title[_ngcontent-%COMP%]{color:#38bdf8;font-size:2.1rem;font-weight:800;margin-bottom:12px;text-align:center;letter-spacing:1px;text-shadow:0 2px 8px #0008}form[_ngcontent-%COMP%]{width:100%}.signin-row[_ngcontent-%COMP%]{display:flex;gap:24px;margin-bottom:18px}.signin-field[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column}.signin-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{color:#fff;font-weight:600;margin-bottom:6px;font-size:1rem;letter-spacing:.5px}.signin-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{background:#fff;color:#18314a;border:none;border-radius:8px;padding:12px 14px;font-size:1rem;margin-bottom:2px;box-shadow:0 1px 4px #0002;transition:border .2s,box-shadow .2s}.signin-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus{outline:2px solid #1de9b6;border-color:#1de9b6;box-shadow:0 0 0 2px #1de9b688}.signin-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%]::placeholder{color:#b0b8c1;opacity:1}.signin-field[_ngcontent-%COMP%] small.error[_ngcontent-%COMP%]{color:#ff5252;font-size:.85rem;margin-top:4px}.signin-options-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:2vw;margin-top:-8px}.remember-me[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;font-size:1rem;color:#b0b8c1}.remember-me[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%]{accent-color:#38bdf8;width:16px;height:16px}.forgot-password[_ngcontent-%COMP%]{font-size:1rem}.forgot-link[_ngcontent-%COMP%]{color:#38bdf8;text-decoration:underline;font-weight:500;cursor:pointer}.signin-btn[_ngcontent-%COMP%]{width:100%;background:#18314a;color:#fff;border:none;border-radius:8px;padding:14px 0;font-size:1.1rem;font-weight:700;margin-bottom:18px;cursor:pointer;transition:background .2s,color .2s}.signin-btn[_ngcontent-%COMP%]:hover{background:#38bdf8}.signin-footer[_ngcontent-%COMP%]{color:#b0b8c1;font-size:.95rem;text-align:center;margin-top:8px}.signin-footer[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#38bdf8;text-decoration:underline;margin-left:4px;font-weight:600;cursor:pointer}.signin-close[_ngcontent-%COMP%]{position:absolute;top:18px;right:18px;width:38px;height:38px;border:none;background:#14263c;color:#fff;border-radius:50%;font-size:2rem;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:10;transition:background .2s,color .2s;box-shadow:0 2px 8px #0005}.signin-close[_ngcontent-%COMP%]:hover{background:#38bdf8;color:#18314a}.spinner[_ngcontent-%COMP%]{display:inline-block;width:18px;height:18px;border:3px solid #fff;border-top:3px solid #38bdf8;border-radius:50%;animation:_ngcontent-%COMP%_spin .7s linear infinite;vertical-align:middle;margin-right:8px}@keyframes _ngcontent-%COMP%_spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.signin-error-toast[_ngcontent-%COMP%]{background:transparent;color:#ff5252;font-weight:700;border-radius:8px;border:1px solid #ff5252;padding:8px 18px;margin:12px 0;text-align:center;animation:_ngcontent-%COMP%_shakeError .3s cubic-bezier(.39,.58,.57,1)}@keyframes _ngcontent-%COMP%_shakeError{0%{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-8px)}80%{transform:translate(8px)}to{transform:translate(0)}}.forgot-modal-bg[_ngcontent-%COMP%]{position:fixed;inset:0;background:#1e293be6;z-index:2000;display:flex;align-items:center;justify-content:center;animation:_ngcontent-%COMP%_fadeInModalBg .4s}@keyframes _ngcontent-%COMP%_fadeInModalBg{0%{opacity:0}to{opacity:1}}.forgot-modal[_ngcontent-%COMP%]{background:#fff;border-radius:18px;box-shadow:0 8px 32px #38bdf844,0 0 24px #1e293b88;padding:32px 36px 28px;min-width:320px;max-width:90vw;text-align:center;z-index:2001;display:flex;flex-direction:column;align-items:center;animation:_ngcontent-%COMP%_fadeInModal .4s}@keyframes _ngcontent-%COMP%_fadeInModal{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.forgot-modal[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{color:#38bdf8;margin:12px 0 8px;font-size:1.4em;font-weight:700}.forgot-modal[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:#23272b;font-size:1.08em;margin-bottom:18px}.forgot-modal[_ngcontent-%COMP%] input[type=email][_ngcontent-%COMP%]{background:#f4f6fa;color:#18314a;border:none;border-radius:8px;padding:12px 14px;font-size:1rem;margin-bottom:12px;box-shadow:0 1px 4px #0002;width:100%}.modal-close[_ngcontent-%COMP%]{width:23%;background:#18314a;color:#fff;border:none;border-radius:8px;padding:14px 0;font-size:1.1rem;font-weight:700;margin-bottom:0;cursor:pointer;transition:background .2s,color .2s;display:block}.modal-close[_ngcontent-%COMP%]:hover{background:#38bdf8;color:#18314a}.eye-toggle[_ngcontent-%COMP%]{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:1.3em;color:#888;cursor:pointer;z-index:2;padding:0;line-height:1;opacity:.7;transition:color .2s,opacity .2s}#password[_ngcontent-%COMP%]{padding-right:40px}.auth-card[_ngcontent-%COMP%]{width:1140px;height:700px;perspective:none;overflow:hidden;border-radius:12px;box-shadow:0 8px 24px #0000001f,#fff 1px 1px 51px;margin:0 auto}.card-inner[_ngcontent-%COMP%]{width:200%;height:100%;display:flex;transition:transform .7s cubic-bezier(.22,.9,.32,1);will-change:transform}.auth-card.flipped[_ngcontent-%COMP%] .card-inner[_ngcontent-%COMP%]{transform:translate3d(-50%,0,0)}.auth-card[_ngcontent-%COMP%]:not(.flipped) .card-inner[_ngcontent-%COMP%]{transform:translateZ(0)}.card-front[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%], .card-back[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%]{transition:opacity 1s ease .15s}.card-front[aria-hidden=true][_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%], .card-back[aria-hidden=true][_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%]{opacity:0}.card-front[aria-hidden=false][_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%], .card-back[aria-hidden=false][_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%]{opacity:1}.card-front[_ngcontent-%COMP%], .card-back[_ngcontent-%COMP%]{width:50%;height:100%;flex:0 0 50%;box-sizing:border-box;position:relative;overflow:hidden}.card-content[_ngcontent-%COMP%]{display:flex;height:100%;flex-direction:row-reverse}.side-panel[_ngcontent-%COMP%]{width:48%;display:flex;align-items:center;justify-content:center}.main-panel[_ngcontent-%COMP%]{width:55%;padding:48px;box-sizing:border-box;background:#fff;overflow:visible;display:flex;flex-direction:column;align-items:center}.logo-header[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;margin-bottom:8px}.py-learn-text[_ngcontent-%COMP%]{font-size:3vw;font-weight:600;color:#073879;font-family:Amonk_Outline;margin-bottom:1vw}.self-learning-system[_ngcontent-%COMP%]{font-size:1.2vw;font-weight:bolder;color:#073879;margin-top:-.8vw}.card-front[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%] .signin-title[_ngcontent-%COMP%], .card-back[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%] .signup-title[_ngcontent-%COMP%]{color:#222}@media (max-width: 900px){.auth-card[_ngcontent-%COMP%]{width:92vw;height:auto}.card-inner[_ngcontent-%COMP%]{width:200%}.card-content[_ngcontent-%COMP%]{flex-direction:column}.side-panel[_ngcontent-%COMP%]{width:100%;height:200px}.main-panel[_ngcontent-%COMP%]{width:100%;overflow:visible}}.card-front[aria-hidden=true][_ngcontent-%COMP%], .card-back[aria-hidden=true][_ngcontent-%COMP%]{pointer-events:none}.side-panel.side-right[_ngcontent-%COMP%]{background:linear-gradient(135deg,#1d608b 0% 100%)}.side-info-box[_ngcontent-%COMP%]{position:absolute;top:164px;left:0;width:88%;padding:0 32px;z-index:2;text-align:left}.side-panel[_ngcontent-%COMP%]{position:relative}.card-front[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%], .card-front[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%] .signin-title[_ngcontent-%COMP%], .card-front[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%] .signin-footer[_ngcontent-%COMP%], .card-front[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%] label[_ngcontent-%COMP%], .card-front[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%] .signin-field[_ngcontent-%COMP%] small[_ngcontent-%COMP%], .card-front[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%] .signin-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%]{color:#23395d!important}.card-front[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%] .signin-field[_ngcontent-%COMP%] small.error[_ngcontent-%COMP%]{color:#ff5252!important}.card-front[_ngcontent-%COMP%] .main-panel[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#0b57a4!important}.signin-divider-row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;width:100%;margin:12px 018px 0}.divider[_ngcontent-%COMP%]{flex:1;height:1px;background:#b0b8c1;margin:08px}.divider-or[_ngcontent-%COMP%]{color:#23395d;font-size:1.08em;font-weight:600;margin:08px}.google-btn[_ngcontent-%COMP%]{width:100%;height:45px;background:#18314a;color:#fff;border:none;border-radius:8px;padding:14px 0;font-size:1.1rem;font-weight:700;margin-bottom:18px;cursor:pointer;box-shadow:02px 8px #0003;display:flex;align-items:center;justify-content:center;gap:12px;transition:background .2s,color .2s}.google-btn[_ngcontent-%COMP%]:hover{background:#38bdf8}.google-logo[_ngcontent-%COMP%]{width:24px;height:24px}.side-panel.side-left[_ngcontent-%COMP%]{position:relative;overflow:hidden;background:#1d608b;min-height:400px}.side-img[_ngcontent-%COMP%]{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:0}.side-welcome-overlay[_ngcontent-%COMP%]{position:absolute;top:30%;left:50px;width:93%;text-align:start;z-index:2;padding:024px;pointer-events:auto}.welcome-back-title[_ngcontent-%COMP%]{font-size:2.1rem;font-weight:800;color:#fff;margin-bottom:8px}.welcome-back-desc[_ngcontent-%COMP%]{font-size:1rem;color:#e0f7fa;margin-bottom:18px}.action-btn[_ngcontent-%COMP%]{width:21%;background:#18314a;color:#fff;border:none;border-radius:8px;padding:14px 0;font-size:1.1rem;font-weight:700;margin-top:18px;margin-bottom:0;display:inline-block;letter-spacing:.5px;box-shadow:02px 8px #0003;cursor:pointer;transition:background .2s,color .2s}.action-btn[_ngcontent-%COMP%]:hover{background:#38bdf8;color:#18314a}.input-with-icon[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center}.input-with-icon[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{width:100%;padding-right:42px}.input-with-icon[_ngcontent-%COMP%] .eye-toggle[_ngcontent-%COMP%]{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:1.2em;color:#888;cursor:pointer;line-height:1;padding:0;opacity:.8}.input-with-icon[_ngcontent-%COMP%] .eye-toggle[_ngcontent-%COMP%]:hover{opacity:1;color:#555}.signin-field[_ngcontent-%COMP%] input.invalid[_ngcontent-%COMP%]{border:1px solid #ff5252}.side-panel.side-left[_ngcontent-%COMP%]{position:relative}.side-panel.side-left[_ngcontent-%COMP%]:before{content:"";position:absolute;inset:0;background:linear-gradient(205deg,#05192ed9 8%,#05192eb3 40%,#05192e59 75%);z-index:1;pointer-events:none}.side-panel.side-left[_ngcontent-%COMP%] .side-welcome-overlay[_ngcontent-%COMP%]{position:absolute;top:44%;left:10%;z-index:2;background:#0f28468c;backdrop-filter:blur(6px) saturate(140%);-webkit-backdrop-filter:blur(6px) saturate(140%);padding:20px 24px 24px;border-radius:18px;border:1px solid rgba(255,255,255,.15);box-shadow:0 4px 20px -4px #0000008c,0 0 0 1px #ffffff0d;max-width:429px;width:auto;text-align:center}.side-panel.side-left[_ngcontent-%COMP%] .welcome-back-desc[_ngcontent-%COMP%], .side-panel.side-left[_ngcontent-%COMP%] .welcome-back-title[_ngcontent-%COMP%]{text-shadow:0 2px 6px rgba(0,0,0,.6)}.side-panel.side-left[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]{background:#38bdf8;color:#082a47;border:1px solid #4fd3ff;box-shadow:0 0 0 1px #ffffff0f,0 6px 18px -4px #0000008c;padding:10px 28px;width:auto;margin-top:4px;letter-spacing:.6px;transition:background .25s,box-shadow .25s,transform .25s}.side-panel.side-left[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]:hover{background:#4fd3ff;box-shadow:0 0 0 1px #ffffff14,0 8px 22px -6px #0009;transform:translateY(-2px)}.side-panel.side-left[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]:active{transform:translateY(0)}.side-panel.side-left[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]:focus-visible{outline:2px solid #fff;outline-offset:3px}@media (max-width: 900px){.side-panel.side-left[_ngcontent-%COMP%] .side-welcome-overlay[_ngcontent-%COMP%]{left:50%;top:auto;bottom:20px;transform:translate(-50%);max-width:92%;padding:18px 20px 22px}}.side-panel.side-right[_ngcontent-%COMP%]{position:relative;overflow:hidden}.side-panel.side-right[_ngcontent-%COMP%]:before{content:"";position:absolute;inset:0;background:linear-gradient(205deg,#05192ed9 10%,#05192eb3 45%,#05192e52 78%);z-index:1;pointer-events:none}.side-panel.side-right[_ngcontent-%COMP%] .side-info-box[_ngcontent-%COMP%]{position:absolute;top:38%;left:7%;z-index:2;background:#0f28468c;backdrop-filter:blur(6px) saturate(140%);-webkit-backdrop-filter:blur(6px) saturate(140%);padding:20px 24px 24px;border-radius:18px;border:1px solid rgba(255,255,255,.15);box-shadow:0 4px 20px -4px #0000008c,0 0 0 1px #ffffff0d;max-width:469px;text-align:center}.side-panel.side-right[_ngcontent-%COMP%] .welcome-back-title[_ngcontent-%COMP%], .side-panel.side-right[_ngcontent-%COMP%] .welcome-back-desc[_ngcontent-%COMP%]{text-shadow:0 2px 6px rgba(0,0,0,.6)}.side-panel.side-right[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]{background:#38bdf8;color:#082a47;border:1px solid #4fd3ff;box-shadow:0 0 0 1px #ffffff0f,0 6px 18px -4px #0000008c;padding:10px 28px;width:auto;margin-top:4px;letter-spacing:.6px;transition:background .25s,box-shadow .25s,transform .25s}.side-panel.side-right[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]:hover{background:#4fd3ff;box-shadow:0 0 0 1px #ffffff14,0 8px 22px -6px #0009;transform:translateY(-2px)}.side-panel.side-right[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]:active{transform:translateY(0)}.side-panel.side-right[_ngcontent-%COMP%] .action-btn[_ngcontent-%COMP%]:focus-visible{outline:2px solid #fff;outline-offset:3px}@media (max-width: 900px){.side-panel.side-right[_ngcontent-%COMP%] .side-info-box[_ngcontent-%COMP%]{left:50%;top:auto;bottom:20px;transform:translate(-50%);max-width:92%;padding:18px 20px 22px}}.signin-brand-logo[_ngcontent-%COMP%]{position:absolute;top:18px;left:24px;z-index:1200}.signin-brand-logo[_ngcontent-%COMP%] .brand-link[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px;text-decoration:none}.brand-logo-img[_ngcontent-%COMP%]{height:42px;display:block;filter:drop-shadow(0 2px 6px rgba(0,0,0,.4));max-width:5vw;height:auto;background:#fff;border-radius:1vw;margin:.5vw}.brand-text[_ngcontent-%COMP%]{font-size:1.05rem;font-weight:700;letter-spacing:.6px;color:#fff;text-shadow:0 2px 6px rgba(0,0,0,.6);font-family:inherit}.signin-brand-logo[_ngcontent-%COMP%]:hover .brand-text[_ngcontent-%COMP%]{color:#4fd3ff}@media (max-width:700px){.signin-brand-logo[_ngcontent-%COMP%]{top:10px;left:10px;padding:6px 12px 6px 8px}.brand-logo-img[_ngcontent-%COMP%]{width:34px;height:34px}.brand-text[_ngcontent-%COMP%]{font-size:.9rem}}.signin-watermark[_ngcontent-%COMP%]{text-decoration:none;position:absolute;bottom:14px;right:22px;font-size:1vw;font-weight:600;letter-spacing:.5px;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.4)}@media (max-width:700px){.signin-watermark[_ngcontent-%COMP%]{bottom:8px;right:12px;font-size:.65rem}}.social-icons.signin-social-icons[_ngcontent-%COMP%]{position:absolute;top:18px;right:24px;z-index:1200;display:flex;gap:18px}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon[_ngcontent-%COMP%]{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background-color:#fff;color:#38bdf8;font-size:18px;box-shadow:0 0 0 1px #214055,0 4px 14px #0006;transition:background-color .25s,color .25s,transform .25s,box-shadow .25s;text-decoration:none}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon.facebook[_ngcontent-%COMP%]{color:#1877f2}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon.youtube[_ngcontent-%COMP%]{color:red}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon.linkedin[_ngcontent-%COMP%]{color:#0a66c2}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon.instagram[_ngcontent-%COMP%]{color:#fd5949}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon.facebook[_ngcontent-%COMP%]:hover{background-color:#1877f2;color:#fff}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon.youtube[_ngcontent-%COMP%]:hover{background-color:red;color:#fff}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon.linkedin[_ngcontent-%COMP%]:hover{background-color:#0a66c2;color:#fff}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon.instagram[_ngcontent-%COMP%]:hover{background:radial-gradient(circle at 30% 110%,#fdf497,#fd5949 45%,#d6249f 60%,#285aeb 90%);color:#fff;filter:brightness(1.15);box-shadow:0 6px 22px #fd594999}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon.website[_ngcontent-%COMP%]:hover{background-color:#009688;color:#fff;transform:translateY(-4px);box-shadow:0 6px 20px #00968888,0 0 0 2px #009688 inset}@media (max-width:700px){.social-icons.signin-social-icons[_ngcontent-%COMP%]{top:10px;right:10px;gap:10px}.social-icons.signin-social-icons[_ngcontent-%COMP%] .social-icon[_ngcontent-%COMP%]{width:28px;height:28px;font-size:1em}}'],data:{animation:[bd("fadeInOut",[jo(":enter",[Yi({opacity:0}),Vo("600ms",Yi({opacity:1}))]),jo(":leave",[Vo("600ms",Yi({opacity:0}))])])]},changeDetection:0})}}return t})();var B3=[{path:"",component:rm,pathMatch:"full"},{path:"home",component:rm},{path:"chat",component:wy,canActivate:[wi]},{path:"generate-questions",component:Sd,canActivate:[wi]},{path:"voice",component:_w,canActivate:[wi]},{path:"listen",component:gw,canActivate:[wi]},{path:"writing",component:Ed,canActivate:[wi]},{path:"vocabulary-builder",component:Md,canActivate:[wi]},{path:"findword",component:Id,canActivate:[wi]},{path:"reading",component:Dd,canActivate:[wi]},{path:"authentication",component:Ew},{path:"auth",component:va},{path:"login",component:va},{path:"**",redirectTo:""}],Pw=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({imports:[Ir.forRoot(B3),Ir]})}}return t})();var U3=["switch"],z3=["*"];function H3(t,n){t&1&&(c(0,"div",10),It(),c(1,"svg",12),v(2,"path",13),a(),c(3,"svg",14),v(4,"path",15),a()())}var $3=new N("mat-slide-toggle-default-options",{providedIn:"root",factory:()=>({disableToggleValue:!1,hideIcon:!1})}),W3={provide:ji,useExisting:Xt(()=>kw),multi:!0},Pd=class{constructor(n,e){this.source=n,this.checked=e}},q3=0,kw=(()=>{class t{_createChangeEvent(e){return new Pd(this,e)}get buttonId(){return`${this.id||this._uniqueId}-button`}focus(){this._switchElement.nativeElement.focus()}get checked(){return this._checked}set checked(e){this._checked=e,this._changeDetectorRef.markForCheck()}get inputId(){return`${this.id||this._uniqueId}-input`}constructor(e,i,r,o,s,d){this._elementRef=e,this._focusMonitor=i,this._changeDetectorRef=r,this.defaults=s,this._onChange=u=>{},this._onTouched=()=>{},this._validatorOnChange=()=>{},this._checked=!1,this.name=null,this.labelPosition="after",this.ariaLabel=null,this.ariaLabelledby=null,this.disabled=!1,this.disableRipple=!1,this.tabIndex=0,this.change=new de,this.toggleChange=new de,this.tabIndex=parseInt(o)||0,this.color=s.color||"accent",this._noopAnimations=d==="NoopAnimations",this.id=this._uniqueId=`mat-mdc-slide-toggle-${++q3}`,this.hideIcon=s.hideIcon??!1,this._labelId=this._uniqueId+"-label"}ngAfterContentInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{e==="keyboard"||e==="program"?(this._focused=!0,this._changeDetectorRef.markForCheck()):e||Promise.resolve().then(()=>{this._focused=!1,this._onTouched(),this._changeDetectorRef.markForCheck()})})}ngOnChanges(e){e.required&&this._validatorOnChange()}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}writeValue(e){this.checked=!!e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}validate(e){return this.required&&e.value!==!0?{required:!0}:null}registerOnValidatorChange(e){this._validatorOnChange=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck()}toggle(){this.checked=!this.checked,this._onChange(this.checked)}_emitChangeEvent(){this._onChange(this.checked),this.change.emit(this._createChangeEvent(this.checked))}_handleClick(){this.toggleChange.emit(),this.defaults.disableToggleValue||(this.checked=!this.checked,this._onChange(this.checked),this.change.emit(new Pd(this,this.checked)))}_getAriaLabelledBy(){return this.ariaLabelledby?this.ariaLabelledby:this.ariaLabel?null:this._labelId}static{this.\u0275fac=function(i){return new(i||t)(M(be),M(Lo),M(Re),uo("tabindex"),M($3),M(di,8))}}static{this.\u0275cmp=$({type:t,selectors:[["mat-slide-toggle"]],viewQuery:function(i,r){if(i&1&&$e(U3,5),i&2){let o;je(o=Be())&&(r._switchElement=o.first)}},hostAttrs:[1,"mat-mdc-slide-toggle"],hostVars:13,hostBindings:function(i,r){i&2&&(fo("id",r.id),z("tabindex",null)("aria-label",null)("name",null)("aria-labelledby",null),Zh(r.color?"mat-"+r.color:""),W("mat-mdc-slide-toggle-focused",r._focused)("mat-mdc-slide-toggle-checked",r.checked)("_mat-animation-noopable",r._noopAnimations))},inputs:{name:"name",id:"id",labelPosition:"labelPosition",ariaLabel:[ee.None,"aria-label","ariaLabel"],ariaLabelledby:[ee.None,"aria-labelledby","ariaLabelledby"],ariaDescribedby:[ee.None,"aria-describedby","ariaDescribedby"],required:[ee.HasDecoratorInputTransform,"required","required",kt],color:"color",disabled:[ee.HasDecoratorInputTransform,"disabled","disabled",kt],disableRipple:[ee.HasDecoratorInputTransform,"disableRipple","disableRipple",kt],tabIndex:[ee.HasDecoratorInputTransform,"tabIndex","tabIndex",e=>e==null?0:ip(e)],checked:[ee.HasDecoratorInputTransform,"checked","checked",kt],hideIcon:[ee.HasDecoratorInputTransform,"hideIcon","hideIcon",kt]},outputs:{change:"change",toggleChange:"toggleChange"},exportAs:["matSlideToggle"],standalone:!0,features:[Lt([W3,{provide:Cr,useExisting:t,multi:!0}]),Nn,Mt,ye],ngContentSelectors:z3,decls:13,vars:24,consts:[["switch",""],["mat-internal-form-field","",3,"labelPosition"],["role","switch","type","button",1,"mdc-switch",3,"click","tabIndex","disabled"],[1,"mdc-switch__track"],[1,"mdc-switch__handle-track"],[1,"mdc-switch__handle"],[1,"mdc-switch__shadow"],[1,"mdc-elevation-overlay"],[1,"mdc-switch__ripple"],["mat-ripple","",1,"mat-mdc-slide-toggle-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-switch__icons"],[1,"mdc-label",3,"click","for"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--on"],["d","M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z"],["viewBox","0 0 24 24","aria-hidden","true",1,"mdc-switch__icon","mdc-switch__icon--off"],["d","M20 13H4v-2h16v2z"]],template:function(i,r){if(i&1){let o=F();Ln(),c(0,"div",1)(1,"button",2,0),y("click",function(){return x(o),C(r._handleClick())}),v(3,"div",3),c(4,"div",4)(5,"div",5)(6,"div",6),v(7,"div",7),a(),c(8,"div",8),v(9,"div",9),a(),k(10,H3,5,0,"div",10),a()()(),c(11,"label",11),y("click",function(d){return x(o),C(d.stopPropagation())}),Vn(12),a()()}if(i&2){let o=Dt(2);g("labelPosition",r.labelPosition),f(),W("mdc-switch--selected",r.checked)("mdc-switch--unselected",!r.checked)("mdc-switch--checked",r.checked)("mdc-switch--disabled",r.disabled),g("tabIndex",r.disabled?-1:r.tabIndex)("disabled",r.disabled),z("id",r.buttonId)("name",r.name)("aria-label",r.ariaLabel)("aria-labelledby",r._getAriaLabelledBy())("aria-describedby",r.ariaDescribedby)("aria-required",r.required||null)("aria-checked",r.checked),f(8),g("matRippleTrigger",o)("matRippleDisabled",r.disableRipple||r.disabled)("matRippleCentered",!0),f(),Xh(10,r.hideIcon?-1:10),f(),g("for",r.buttonId),z("id",r._labelId)}},dependencies:[Zy,Xy],styles:['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--mdc-elevation-overlay-color)}.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative}.mdc-switch[hidden]{display:none}.mdc-switch:disabled{cursor:default;pointer-events:none}.mdc-switch__track{overflow:hidden;position:relative;width:100%}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%}@media screen and (forced-colors: active){.mdc-switch__track::before,.mdc-switch__track::after{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0)}.mdc-switch__track::after{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(-100%)}[dir=rtl] .mdc-switch__track::after,.mdc-switch__track[dir=rtl]::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track[dir=rtl]::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::after{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0)}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0)}[dir=rtl] .mdc-switch__handle-track,.mdc-switch__handle-track[dir=rtl]{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track,.mdc-switch--selected .mdc-switch__handle-track[dir=rtl]{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto}[dir=rtl] .mdc-switch__handle,.mdc-switch__handle[dir=rtl]{left:auto;right:0}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media screen and (forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-elevation-overlay{bottom:0;left:0;right:0;top:0}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1}.mdc-switch:disabled .mdc-switch__ripple{display:none}.mdc-switch__icons{height:100%;position:relative;width:100%;z-index:1}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:var(--mdc-switch-disabled-label-text-color)}.mdc-switch{width:var(--mdc-switch-track-width)}.mdc-switch.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mdc-switch-selected-handle-color)}.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-selected-hover-handle-color)}.mdc-switch.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-selected-focus-handle-color)}.mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mdc-switch-selected-pressed-handle-color)}.mdc-switch.mdc-switch--selected:disabled .mdc-switch__handle::after{background:var(--mdc-switch-disabled-selected-handle-color)}.mdc-switch.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mdc-switch-unselected-handle-color)}.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-unselected-hover-handle-color)}.mdc-switch.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-unselected-focus-handle-color)}.mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mdc-switch-unselected-pressed-handle-color)}.mdc-switch.mdc-switch--unselected:disabled .mdc-switch__handle::after{background:var(--mdc-switch-disabled-unselected-handle-color)}.mdc-switch .mdc-switch__handle::before{background:var(--mdc-switch-handle-surface-color)}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-handle-elevation)}.mdc-switch:disabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-disabled-handle-elevation)}.mdc-switch .mdc-switch__focus-ring-wrapper,.mdc-switch .mdc-switch__handle{height:var(--mdc-switch-handle-height)}.mdc-switch .mdc-switch__handle{border-radius:var(--mdc-switch-handle-shape)}.mdc-switch .mdc-switch__handle{width:var(--mdc-switch-handle-width)}.mdc-switch .mdc-switch__handle-track{width:calc(100% - var(--mdc-switch-handle-width))}.mdc-switch.mdc-switch--selected:enabled .mdc-switch__icon{fill:var(--mdc-switch-selected-icon-color)}.mdc-switch.mdc-switch--selected:disabled .mdc-switch__icon{fill:var(--mdc-switch-disabled-selected-icon-color)}.mdc-switch.mdc-switch--unselected:enabled .mdc-switch__icon{fill:var(--mdc-switch-unselected-icon-color)}.mdc-switch.mdc-switch--unselected:disabled .mdc-switch__icon{fill:var(--mdc-switch-disabled-unselected-icon-color)}.mdc-switch.mdc-switch--selected:disabled .mdc-switch__icons{opacity:var(--mdc-switch-disabled-selected-icon-opacity)}.mdc-switch.mdc-switch--unselected:disabled .mdc-switch__icons{opacity:var(--mdc-switch-disabled-unselected-icon-opacity)}.mdc-switch.mdc-switch--selected .mdc-switch__icon{width:var(--mdc-switch-selected-icon-size);height:var(--mdc-switch-selected-icon-size)}.mdc-switch.mdc-switch--unselected .mdc-switch__icon{width:var(--mdc-switch-unselected-icon-size);height:var(--mdc-switch-unselected-icon-size)}.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-hover-state-layer-color)}.mdc-switch.mdc-switch--selected:enabled:focus .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-focus-state-layer-color)}.mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-pressed-state-layer-color)}.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-hover-state-layer-color)}.mdc-switch.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-focus-state-layer-color)}.mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-pressed-state-layer-color)}.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus):hover .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:hover:not(:focus).mdc-ripple-surface--hover .mdc-switch__ripple::before{opacity:var(--mdc-switch-selected-hover-state-layer-opacity)}.mdc-switch.mdc-switch--selected:enabled:focus.mdc-ripple-upgraded--background-focused .mdc-switch__ripple::before,.mdc-switch.mdc-switch--selected:enabled:focus:not(.mdc-ripple-upgraded):focus .mdc-switch__ripple::before{transition-duration:75ms;opacity:var(--mdc-switch-selected-focus-state-layer-opacity)}.mdc-switch.mdc-switch--selected:enabled:active:not(.mdc-ripple-upgraded) .mdc-switch__ripple::after{transition:opacity 150ms linear}.mdc-switch.mdc-switch--selected:enabled:active:not(.mdc-ripple-upgraded):active .mdc-switch__ripple::after{transition-duration:75ms;opacity:var(--mdc-switch-selected-pressed-state-layer-opacity)}.mdc-switch.mdc-switch--selected:enabled:active.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-switch-selected-pressed-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus):hover .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus).mdc-ripple-surface--hover .mdc-switch__ripple::before{opacity:var(--mdc-switch-unselected-hover-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:focus.mdc-ripple-upgraded--background-focused .mdc-switch__ripple::before,.mdc-switch.mdc-switch--unselected:enabled:focus:not(.mdc-ripple-upgraded):focus .mdc-switch__ripple::before{transition-duration:75ms;opacity:var(--mdc-switch-unselected-focus-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:active:not(.mdc-ripple-upgraded) .mdc-switch__ripple::after{transition:opacity 150ms linear}.mdc-switch.mdc-switch--unselected:enabled:active:not(.mdc-ripple-upgraded):active .mdc-switch__ripple::after{transition-duration:75ms;opacity:var(--mdc-switch-unselected-pressed-state-layer-opacity)}.mdc-switch.mdc-switch--unselected:enabled:active.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-switch-unselected-pressed-state-layer-opacity)}.mdc-switch .mdc-switch__ripple{height:var(--mdc-switch-state-layer-size);width:var(--mdc-switch-state-layer-size)}.mdc-switch .mdc-switch__track{height:var(--mdc-switch-track-height)}.mdc-switch:disabled .mdc-switch__track{opacity:var(--mdc-switch-disabled-track-opacity)}.mdc-switch:enabled .mdc-switch__track::after{background:var(--mdc-switch-selected-track-color)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mdc-switch-selected-hover-track-color)}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mdc-switch-selected-focus-track-color)}.mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mdc-switch-selected-pressed-track-color)}.mdc-switch:disabled .mdc-switch__track::after{background:var(--mdc-switch-disabled-selected-track-color)}.mdc-switch:enabled .mdc-switch__track::before{background:var(--mdc-switch-unselected-track-color)}.mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mdc-switch-unselected-hover-track-color)}.mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mdc-switch-unselected-focus-track-color)}.mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mdc-switch-unselected-pressed-track-color)}.mdc-switch:disabled .mdc-switch__track::before{background:var(--mdc-switch-disabled-unselected-track-color)}.mdc-switch .mdc-switch__track{border-radius:var(--mdc-switch-track-shape)}.mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-handle-elevation-shadow)}.mdc-switch:disabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-disabled-handle-elevation-shadow)}.mat-mdc-slide-toggle{display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle .mdc-switch__ripple::after{content:"";opacity:0}.mat-mdc-slide-toggle .mdc-switch:hover .mdc-switch__ripple::after{opacity:.04;transition:opacity 75ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mdc-switch .mdc-switch__ripple::after{opacity:.12}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-mdc-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-mdc-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-elevation-overlay,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}.mat-mdc-slide-toggle .mdc-switch:enabled+.mdc-label{cursor:pointer}.mdc-switch__handle{transition:width 75ms cubic-bezier(0.4, 0, 0.2, 1),height 75ms cubic-bezier(0.4, 0, 0.2, 1),margin 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-switch--selected .mdc-switch__track::before{opacity:var(--mat-switch-hidden-track-opacity);transition:var(--mat-switch-hidden-track-transition)}.mdc-switch--selected .mdc-switch__track::after{opacity:var(--mat-switch-visible-track-opacity);transition:var(--mat-switch-visible-track-transition)}.mdc-switch--unselected .mdc-switch__track::before{opacity:var(--mat-switch-visible-track-opacity);transition:var(--mat-switch-visible-track-transition)}.mdc-switch--unselected .mdc-switch__track::after{opacity:var(--mat-switch-hidden-track-opacity);transition:var(--mat-switch-hidden-track-transition)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{width:var(--mat-switch-unselected-handle-size);height:var(--mat-switch-unselected-handle-size)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{width:var(--mat-switch-selected-handle-size);height:var(--mat-switch-selected-handle-size)}.mat-mdc-slide-toggle .mdc-switch__handle:has(.mdc-switch__icons){width:var(--mat-switch-with-icon-handle-size);height:var(--mat-switch-with-icon-handle-size)}.mat-mdc-slide-toggle:active .mdc-switch:not(.mdc-switch--disabled) .mdc-switch__handle{width:var(--mat-switch-pressed-handle-size);height:var(--mat-switch-pressed-handle-size)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle{margin:var(--mat-switch-selected-handle-horizontal-margin)}.mat-mdc-slide-toggle .mdc-switch--selected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-switch-selected-with-icon-handle-horizontal-margin)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle{margin:var(--mat-switch-unselected-handle-horizontal-margin)}.mat-mdc-slide-toggle .mdc-switch--unselected .mdc-switch__handle:has(.mdc-switch__icons){margin:var(--mat-switch-unselected-with-icon-handle-horizontal-margin)}.mat-mdc-slide-toggle:active .mdc-switch--selected:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-switch-selected-pressed-handle-horizontal-margin)}.mat-mdc-slide-toggle:active .mdc-switch--unselected:not(.mdc-switch--disabled) .mdc-switch__handle{margin:var(--mat-switch-unselected-pressed-handle-horizontal-margin)}.mdc-switch__track::after,.mdc-switch__track::before{border-width:var(--mat-switch-track-outline-width);border-color:var(--mat-switch-track-outline-color)}.mdc-switch--selected .mdc-switch__track::after,.mdc-switch--selected .mdc-switch__track::before{border-width:var(--mat-switch-selected-track-outline-width)}.mdc-switch--disabled .mdc-switch__track::after,.mdc-switch--disabled .mdc-switch__track::before{border-width:var(--mat-switch-disabled-unselected-track-outline-width);border-color:var(--mat-switch-disabled-unselected-track-outline-color)}.mdc-switch--disabled.mdc-switch--selected .mdc-switch__handle::after{opacity:var(--mat-switch-disabled-selected-handle-opacity)}.mdc-switch--disabled.mdc-switch--unselected .mdc-switch__handle::after{opacity:var(--mat-switch-disabled-unselected-handle-opacity)}'],encapsulation:2,changeDetection:0})}}return t})();var Ow=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({imports:[kw,wn,wn]})}}return t})();var Tw=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({imports:[wn,wn]})}}return t})();var Aw=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t})}static{this.\u0275inj=se({imports:[wn,ze,wn]})}}return t})();var Rw=(()=>{class t{constructor(e,i,r,o){this.authService=e,this.brandService=i,this.titleService=r,this.document=o,this.title="Py-Learn"}ngOnInit(){this.titleService.setTitle(this.brandService.name);let e=this.document.querySelector("link[rel*='icon']");e&&(e.href=this.brandService.name==="Py-Learn"?"assets/favicon.png":"assets/majema-favicon.png"),this.authService.checkSession().subscribe(i=>{i&&this.authService.startAutoRefresh()})}static{this.\u0275fac=function(i){return new(i||t)(M(Xi),M(bn),M(Pc),M(le))}}static{this.\u0275cmp=$({type:t,selectors:[["app-root"]],decls:1,vars:0,template:function(i,r){i&1&&v(0,"router-outlet")},dependencies:[wf],styles:["nav[_ngcontent-%COMP%]{margin:20px}button[_ngcontent-%COMP%]{margin-right:10px;padding:10px 20px;font-size:16px;cursor:pointer}"]})}}return t})();var Fw=(()=>{class t{static{this.\u0275fac=function(i){return new(i||t)}}static{this.\u0275mod=ae({type:t,bootstrap:[Rw]})}static{this.\u0275inj=se({imports:[Y_,Pw,jt,B_,ze,nw,Ow,Tw,Aw,xd,Sd,Md,Id,yt,va,Dd,Ed]})}}return t})();Q_().bootstrapModule(Fw).catch(t=>console.error(t)); diff --git a/dist/gramm-ai/browser/media/Amonk_Outline-LNK3GGJG.ttf b/dist/gramm-ai/browser/media/Amonk_Outline-LNK3GGJG.ttf new file mode 100644 index 0000000000000000000000000000000000000000..99bc3494b38bf7640dad65a2e01c3ed2b23b7a1a --- /dev/null +++ b/dist/gramm-ai/browser/media/Amonk_Outline-LNK3GGJG.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5571a943a81cc61f13c85608828f4e831dc971999b14cc31d4888b6a5f1c98ba +size 140868 diff --git a/dist/gramm-ai/browser/media/Raleway-OGE6QTLG.woff2 b/dist/gramm-ai/browser/media/Raleway-OGE6QTLG.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..189015b9e6449d6294b9b8133ca0c2378e3411c5 --- /dev/null +++ b/dist/gramm-ai/browser/media/Raleway-OGE6QTLG.woff2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47d477915fa5912616e2dc5df8c5780f9202671678cf275472bd39f3381c0098 +size 48336 diff --git a/dist/gramm-ai/browser/media/Raleway-YBWB2BVX.ttf b/dist/gramm-ai/browser/media/Raleway-YBWB2BVX.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c931f3f964a404451633c81bb63c22778033ee54 --- /dev/null +++ b/dist/gramm-ai/browser/media/Raleway-YBWB2BVX.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d92beb04211a805e375a09623508986cb000846ae120c3c8b817480dc0f7e8f1 +size 98472 diff --git a/dist/gramm-ai/browser/media/RetroSigned-FXONQQOR.ttf b/dist/gramm-ai/browser/media/RetroSigned-FXONQQOR.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1a68a31a2e08f8e37496401aa0229b60deaf310d --- /dev/null +++ b/dist/gramm-ai/browser/media/RetroSigned-FXONQQOR.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a98bc74eb06b8c519d11125c601199d60594e51ba148c0c86c5511a4547f123 +size 726760 diff --git a/dist/gramm-ai/browser/media/Super Cartoon-JJ6FODL3.ttf b/dist/gramm-ai/browser/media/Super Cartoon-JJ6FODL3.ttf new file mode 100644 index 0000000000000000000000000000000000000000..eb802fdb4cd8980c8d0b9b05278c05e663e21e8b --- /dev/null +++ b/dist/gramm-ai/browser/media/Super Cartoon-JJ6FODL3.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7dfd44abf83aa6b91004efe681d5464093fe438d36ef1045741a514b8f53e71 +size 80436 diff --git a/dist/gramm-ai/browser/media/fa-brands-400-Q3XCMWHQ.woff2 b/dist/gramm-ai/browser/media/fa-brands-400-Q3XCMWHQ.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9282aa2614012329cc49a480d2e9d23c9ba8e5a4 --- /dev/null +++ b/dist/gramm-ai/browser/media/fa-brands-400-Q3XCMWHQ.woff2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7236a19bf23cbb2027280e8f51dc99d6c45976a2ed60de73382b034b18a2b68 +size 118684 diff --git a/dist/gramm-ai/browser/media/fa-brands-400-R2XQZCET.ttf b/dist/gramm-ai/browser/media/fa-brands-400-R2XQZCET.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4f4f74d5e8bcda87f4be5eb9b9d2294d9296ec22 --- /dev/null +++ b/dist/gramm-ai/browser/media/fa-brands-400-R2XQZCET.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:808443ae6c8204395add8543da8a90a60b9376fb0f87ed8e8ea37d109596d805 +size 210792 diff --git a/dist/gramm-ai/browser/media/fa-regular-400-QSNYFYRT.woff2 b/dist/gramm-ai/browser/media/fa-regular-400-QSNYFYRT.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7d3948f6647daaebd33ab264e079464b714c5911 --- /dev/null +++ b/dist/gramm-ai/browser/media/fa-regular-400-QSNYFYRT.woff2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3456d1283b9d75337a773dfd147bf908fd02c01b4bf48576d8603a69b13cbe5 +size 25472 diff --git a/dist/gramm-ai/browser/media/fa-regular-400-XUOPSR7E.ttf b/dist/gramm-ai/browser/media/fa-regular-400-XUOPSR7E.ttf new file mode 100644 index 0000000000000000000000000000000000000000..22c79d3cb7c5480bd4e22d7d6acd376adeb45727 --- /dev/null +++ b/dist/gramm-ai/browser/media/fa-regular-400-XUOPSR7E.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54cf6086f7bb21f9d072ad494a19b4681fa516dd0a14cee52da01d3651a913a3 +size 68064 diff --git a/dist/gramm-ai/browser/media/fa-solid-900-5ZUYHGA7.woff2 b/dist/gramm-ai/browser/media/fa-solid-900-5ZUYHGA7.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d4348340af064ef9c8823f8715a7f146aac1ddd2 --- /dev/null +++ b/dist/gramm-ai/browser/media/fa-solid-900-5ZUYHGA7.woff2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa75998623a391e61c6901794ace832e3ecdd288b56d608f21bea0411acc0b8e +size 158220 diff --git a/dist/gramm-ai/browser/media/fa-solid-900-PJNKLK6W.ttf b/dist/gramm-ai/browser/media/fa-solid-900-PJNKLK6W.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b8527048bbd22f7cf008ab266761216bee7c9248 --- /dev/null +++ b/dist/gramm-ai/browser/media/fa-solid-900-PJNKLK6W.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2f0593540b0e33ba6de255a54f272d466e31144806956bea8cfdbf7edffc9bd +size 426112 diff --git a/dist/gramm-ai/browser/media/fa-v4compatibility-LFEHZI6Y.woff2 b/dist/gramm-ai/browser/media/fa-v4compatibility-LFEHZI6Y.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d6ff0a53dbba29eed70729415931963031467f4a --- /dev/null +++ b/dist/gramm-ai/browser/media/fa-v4compatibility-LFEHZI6Y.woff2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ce9033c69dc714f5f45ef9bf17d55e4c46bcdfad6799a4e92b38e7781bf86bd +size 4796 diff --git a/dist/gramm-ai/browser/media/fa-v4compatibility-YY67RJWG.ttf b/dist/gramm-ai/browser/media/fa-v4compatibility-YY67RJWG.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5dfe884002b185e9358d5dde2da69182f1df9333 --- /dev/null +++ b/dist/gramm-ai/browser/media/fa-v4compatibility-YY67RJWG.ttf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30f6abf6baa425825828793d6dfad1fb63765d0e5abaa7af6feafb9bfcece5a0 +size 10836 diff --git a/dist/gramm-ai/browser/polyfills-FFHMD2TL.js b/dist/gramm-ai/browser/polyfills-FFHMD2TL.js new file mode 100644 index 0000000000000000000000000000000000000000..b01b791166684bb60987db711e758c279dd48c3c --- /dev/null +++ b/dist/gramm-ai/browser/polyfills-FFHMD2TL.js @@ -0,0 +1,2 @@ +var ce=globalThis;function te(e){return(ce.__Zone_symbol_prefix||"__zone_symbol__")+e}function dt(){let e=ce.performance;function n(M){e&&e.mark&&e.mark(M)}function a(M,s){e&&e.measure&&e.measure(M,s)}n("Zone");class t{static{this.__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=t.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,o=!1){if(S.hasOwnProperty(s)){let g=ce[te("forceDuplicateZoneCheck")]===!0;if(!o&&g)throw Error("Already loaded patch: "+s)}else if(!ce["__Zone_disable_"+s]){let g="Zone:"+s;n(g),S[s]=i(ce,t,w),a(g,g)}}get parent(){return this._parent}get name(){return this._name}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 o=this._zoneDelegate.intercept(this,s,i),g=this;return function(){return g.runGuarded(o,this,arguments,i)}}run(s,i,o,g){b={parent:b,zone:this};try{return this._zoneDelegate.invoke(this,s,i,o,g)}finally{b=b.parent}}runGuarded(s,i=null,o,g){b={parent:b,zone:this};try{try{return this._zoneDelegate.invoke(this,s,i,o,g)}catch(V){if(this._zoneDelegate.handleError(this,V))throw V}}finally{b=b.parent}}runTask(s,i,o){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 g=s,{type:V,data:{isPeriodic:ee=!1,isRefreshable:Z=!1}={}}=s;if(s.state===q&&(V===z||V===y))return;let he=s.state!=A;he&&g._transitionTo(A,d);let _e=D;D=g,b={parent:b,zone:this};try{V==y&&s.data&&!ee&&!Z&&(s.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,g,i,o)}catch(Q){if(this._zoneDelegate.handleError(this,Q))throw Q}}finally{let Q=s.state;if(Q!==q&&Q!==X)if(V==z||ee||Z&&Q===k)he&&g._transitionTo(d,A,k);else{let Ee=g._zoneDelegates;this._updateTaskCount(g,-1),he&&g._transitionTo(q,A,q),Z&&(g._zoneDelegates=Ee)}b=b.parent,D=_e}}scheduleTask(s){if(s.zone&&s.zone!==this){let o=this;for(;o;){if(o===s.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${s.zone.name}`);o=o.parent}}s._transitionTo(k,q);let i=[];s._zoneDelegates=i,s._zone=this;try{s=this._zoneDelegate.scheduleTask(this,s)}catch(o){throw s._transitionTo(X,k,q),this._zoneDelegate.handleError(this,o),o}return s._zoneDelegates===i&&this._updateTaskCount(s,1),s.state==k&&s._transitionTo(d,k),s}scheduleMicroTask(s,i,o,g){return this.scheduleTask(new E(G,s,i,o,g,void 0))}scheduleMacroTask(s,i,o,g,V){return this.scheduleTask(new E(y,s,i,o,g,V))}scheduleEventTask(s,i,o,g,V){return this.scheduleTask(new E(z,s,i,o,g,V))}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(x,d,A);try{this._zoneDelegate.cancelTask(this,s)}catch(i){throw s._transitionTo(X,x),this._zoneDelegate.handleError(this,i),i}return this._updateTaskCount(s,-1),s._transitionTo(q,x),s.runCount=-1,s}}_updateTaskCount(s,i){let o=s._zoneDelegates;i==-1&&(s._zoneDelegates=null);for(let g=0;gM.hasTask(i,o),onScheduleTask:(M,s,i,o)=>M.scheduleTask(i,o),onInvokeTask:(M,s,i,o,g,V)=>M.invokeTask(i,o,g,V),onCancelTask:(M,s,i,o)=>M.cancelTask(i,o)};class f{get zone(){return this._zone}constructor(s,i,o){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this._zone=s,this._parentDelegate=i,this._forkZS=o&&(o&&o.onFork?o:i._forkZS),this._forkDlgt=o&&(o.onFork?i:i._forkDlgt),this._forkCurrZone=o&&(o.onFork?this._zone:i._forkCurrZone),this._interceptZS=o&&(o.onIntercept?o:i._interceptZS),this._interceptDlgt=o&&(o.onIntercept?i:i._interceptDlgt),this._interceptCurrZone=o&&(o.onIntercept?this._zone:i._interceptCurrZone),this._invokeZS=o&&(o.onInvoke?o:i._invokeZS),this._invokeDlgt=o&&(o.onInvoke?i:i._invokeDlgt),this._invokeCurrZone=o&&(o.onInvoke?this._zone:i._invokeCurrZone),this._handleErrorZS=o&&(o.onHandleError?o:i._handleErrorZS),this._handleErrorDlgt=o&&(o.onHandleError?i:i._handleErrorDlgt),this._handleErrorCurrZone=o&&(o.onHandleError?this._zone:i._handleErrorCurrZone),this._scheduleTaskZS=o&&(o.onScheduleTask?o:i._scheduleTaskZS),this._scheduleTaskDlgt=o&&(o.onScheduleTask?i:i._scheduleTaskDlgt),this._scheduleTaskCurrZone=o&&(o.onScheduleTask?this._zone:i._scheduleTaskCurrZone),this._invokeTaskZS=o&&(o.onInvokeTask?o:i._invokeTaskZS),this._invokeTaskDlgt=o&&(o.onInvokeTask?i:i._invokeTaskDlgt),this._invokeTaskCurrZone=o&&(o.onInvokeTask?this._zone:i._invokeTaskCurrZone),this._cancelTaskZS=o&&(o.onCancelTask?o:i._cancelTaskZS),this._cancelTaskDlgt=o&&(o.onCancelTask?i:i._cancelTaskDlgt),this._cancelTaskCurrZone=o&&(o.onCancelTask?this._zone:i._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;let g=o&&o.onHasTask,V=i&&i._hasTaskZS;(g||V)&&(this._hasTaskZS=g?o:c,this._hasTaskDlgt=i,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=this._zone,o.onScheduleTask||(this._scheduleTaskZS=c,this._scheduleTaskDlgt=i,this._scheduleTaskCurrZone=this._zone),o.onInvokeTask||(this._invokeTaskZS=c,this._invokeTaskDlgt=i,this._invokeTaskCurrZone=this._zone),o.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 t(s,i)}intercept(s,i,o){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,s,i,o):i}invoke(s,i,o,g,V){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,s,i,o,g,V):i.apply(o,g)}handleError(s,i){return this._handleErrorZS?this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,s,i):!0}scheduleTask(s,i){let o=i;if(this._scheduleTaskZS)this._hasTaskZS&&o._zoneDelegates.push(this._hasTaskDlgtOwner),o=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,s,i),o||(o=i);else if(i.scheduleFn)i.scheduleFn(i);else if(i.type==G)U(i);else throw new Error("Task is missing scheduleFn.");return o}invokeTask(s,i,o,g){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,s,i,o,g):i.callback.apply(o,g)}cancelTask(s,i){let o;if(this._cancelTaskZS)o=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,s,i);else{if(!i.cancelFn)throw Error("Task is not cancelable");o=i.cancelFn(i)}return o}hasTask(s,i){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,s,i)}catch(o){this.handleError(s,o)}}_updateTaskCount(s,i){let o=this._taskCounts,g=o[s],V=o[s]=g+i;if(V<0)throw new Error("More tasks executed then were scheduled.");if(g==0||V==0){let ee={microTask:o.microTask>0,macroTask:o.macroTask>0,eventTask:o.eventTask>0,change:s};this.hasTask(this._zone,ee)}}}class E{constructor(s,i,o,g,V,ee){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=s,this.source=i,this.data=g,this.scheduleFn=V,this.cancelFn=ee,!o)throw new Error("callback is not defined");this.callback=o;let Z=this;s===z&&g&&g.useG?this.invoke=E.invokeTask:this.invoke=function(){return E.invokeTask.call(ce,Z,this,arguments)}}static invokeTask(s,i,o){s||(s=this),K++;try{return s.runCount++,s.zone.runTask(s,i,o)}finally{K==1&&$(),K--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(q,k)}_transitionTo(s,i,o){if(this._state===i||this._state===o)this._state=s,s==q&&(this._zoneDelegates=null);else throw new Error(`${this.type} '${this.source}': can not transition to '${s}', expecting state '${i}'${o?" or '"+o+"'":""}, was '${this._state}'.`)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}let T=te("setTimeout"),p=te("Promise"),C=te("then"),_=[],P=!1,I;function H(M){if(I||ce[p]&&(I=ce[p].resolve(0)),I){let s=I[C];s||(s=I.then),s.call(I,M)}else ce[T](M,0)}function U(M){K===0&&_.length===0&&H($),M&&_.push(M)}function $(){if(!P){for(P=!0;_.length;){let M=_;_=[];for(let s=0;sb,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:U,showUncaughtError:()=>!t[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 t(null,null)},D=null,K=0;function W(){}return a("Zone","Zone"),t}function _t(){let e=globalThis,n=e[te("forceDuplicateZoneCheck")]===!0;if(e.Zone&&(n||typeof e.Zone.__symbol__!="function"))throw new Error("Zone already loaded.");return e.Zone??=dt(),e.Zone}var be=Object.getOwnPropertyDescriptor,Ae=Object.defineProperty,je=Object.getPrototypeOf,Et=Object.create,Tt=Array.prototype.slice,He="addEventListener",xe="removeEventListener",Le=te(He),Ie=te(xe),ae="true",le="false",Pe=te("");function Ve(e,n){return Zone.current.wrap(e,n)}function Ge(e,n,a,t,c){return Zone.current.scheduleMacroTask(e,n,a,t,c)}var j=te,De=typeof window<"u",pe=De?window:void 0,Y=De&&pe||globalThis,gt="removeAttribute";function Fe(e,n){for(let a=e.length-1;a>=0;a--)typeof e[a]=="function"&&(e[a]=Ve(e[a],n+"_"+a));return e}function yt(e,n){let a=e.constructor.name;for(let t=0;t{let p=function(){return T.apply(this,Fe(arguments,a+"."+c))};return fe(p,T),p})(f)}}}function tt(e){return e?e.writable===!1?!1:!(typeof e.get=="function"&&typeof e.set>"u"):!0}var nt=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Se=!("nw"in Y)&&typeof Y.process<"u"&&Y.process.toString()==="[object process]",Be=!Se&&!nt&&!!(De&&pe.HTMLElement),rt=typeof Y.process<"u"&&Y.process.toString()==="[object process]"&&!nt&&!!(De&&pe.HTMLElement),Ce={},mt=j("enable_beforeunload"),Ye=function(e){if(e=e||Y.event,!e)return;let n=Ce[e.type];n||(n=Ce[e.type]=j("ON_PROPERTY"+e.type));let a=this||e.target||Y,t=a[n],c;if(Be&&a===pe&&e.type==="error"){let f=e;c=t&&t.call(this,f.message,f.filename,f.lineno,f.colno,f.error),c===!0&&e.preventDefault()}else c=t&&t.apply(this,arguments),e.type==="beforeunload"&&Y[mt]&&typeof c=="string"?e.returnValue=c:c!=null&&!c&&e.preventDefault();return c};function $e(e,n,a){let t=be(e,n);if(!t&&a&&be(a,n)&&(t={enumerable:!0,configurable:!0}),!t||!t.configurable)return;let c=j("on"+n+"patched");if(e.hasOwnProperty(c)&&e[c])return;delete t.writable,delete t.value;let f=t.get,E=t.set,T=n.slice(2),p=Ce[T];p||(p=Ce[T]=j("ON_PROPERTY"+T)),t.set=function(C){let _=this;if(!_&&e===Y&&(_=Y),!_)return;typeof _[p]=="function"&&_.removeEventListener(T,Ye),E&&E.call(_,null),_[p]=C,typeof C=="function"&&_.addEventListener(T,Ye,!1)},t.get=function(){let C=this;if(!C&&e===Y&&(C=Y),!C)return null;let _=C[p];if(_)return _;if(f){let P=f.call(this);if(P)return t.set.call(this,P),typeof C[gt]=="function"&&C.removeAttribute(n),P}return null},Ae(e,n,t),e[c]=!0}function ot(e,n,a){if(n)for(let t=0;tfunction(E,T){let p=a(E,T);return p.cbIdx>=0&&typeof T[p.cbIdx]=="function"?Ge(p.name,T[p.cbIdx],p,c):f.apply(E,T)})}function fe(e,n){e[j("OriginalDelegate")]=n}var Je=!1,Me=!1;function kt(){try{let e=pe.navigator.userAgent;if(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1)return!0}catch{}return!1}function vt(){if(Je)return Me;Je=!0;try{let e=pe.navigator.userAgent;(e.indexOf("MSIE ")!==-1||e.indexOf("Trident/")!==-1||e.indexOf("Edge/")!==-1)&&(Me=!0)}catch{}return Me}function Ke(e){return typeof e=="function"}function Qe(e){return typeof e=="number"}var me=!1;if(typeof window<"u")try{let e=Object.defineProperty({},"passive",{get:function(){me=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{me=!1}var bt={useG:!0},ne={},st={},it=new RegExp("^"+Pe+"(\\w+)(true|false)$"),ct=j("propagationStopped");function at(e,n){let a=(n?n(e):e)+le,t=(n?n(e):e)+ae,c=Pe+a,f=Pe+t;ne[e]={},ne[e][le]=c,ne[e][ae]=f}function Pt(e,n,a,t){let c=t&&t.add||He,f=t&&t.rm||xe,E=t&&t.listeners||"eventListeners",T=t&&t.rmAll||"removeAllListeners",p=j(c),C="."+c+":",_="prependListener",P="."+_+":",I=function(k,d,A){if(k.isRemoved)return;let x=k.callback;typeof x=="object"&&x.handleEvent&&(k.callback=y=>x.handleEvent(y),k.originalDelegate=x);let X;try{k.invoke(k,d,[A])}catch(y){X=y}let G=k.options;if(G&&typeof G=="object"&&G.once){let y=k.originalDelegate?k.originalDelegate:k.callback;d[f].call(d,A.type,y,G)}return X};function H(k,d,A){if(d=d||e.event,!d)return;let x=k||d.target||e,X=x[ne[d.type][A?ae:le]];if(X){let G=[];if(X.length===1){let y=I(X[0],x,d);y&&G.push(y)}else{let y=X.slice();for(let z=0;z{throw z})}}}let U=function(k){return H(this,k,!1)},$=function(k){return H(this,k,!0)};function J(k,d){if(!k)return!1;let A=!0;d&&d.useG!==void 0&&(A=d.useG);let x=d&&d.vh,X=!0;d&&d.chkDup!==void 0&&(X=d.chkDup);let G=!1;d&&d.rt!==void 0&&(G=d.rt);let y=k;for(;y&&!y.hasOwnProperty(c);)y=je(y);if(!y&&k[c]&&(y=k),!y||y[p])return!1;let z=d&&d.eventNameToString,S={},w=y[p]=y[c],b=y[j(f)]=y[f],D=y[j(E)]=y[E],K=y[j(T)]=y[T],W;d&&d.prepend&&(W=y[j(d.prepend)]=y[d.prepend]);function M(r,u){return!me&&typeof r=="object"&&r?!!r.capture:!me||!u?r:typeof r=="boolean"?{capture:r,passive:!0}:r?typeof r=="object"&&r.passive!==!1?{...r,passive:!0}:r:{passive:!0}}let s=function(r){if(!S.isExisting)return w.call(S.target,S.eventName,S.capture?$:U,S.options)},i=function(r){if(!r.isRemoved){let u=ne[r.eventName],v;u&&(v=u[r.capture?ae:le]);let R=v&&r.target[v];if(R){for(let m=0;mre.zone.cancelTask(re);r.call(Te,"abort",ie,{once:!0}),re.removeAbortListener=()=>Te.removeEventListener("abort",ie)}if(S.target=null,ke&&(ke.taskData=null),Ue&&(S.options.once=!0),!me&&typeof re.options=="boolean"||(re.options=se),re.target=N,re.capture=Oe,re.eventName=L,B&&(re.originalDelegate=F),O?ge.unshift(re):ge.push(re),m)return N}};return y[c]=l(w,C,ee,Z,G),W&&(y[_]=l(W,P,g,Z,G,!0)),y[f]=function(){let r=this||e,u=arguments[0];d&&d.transferEventName&&(u=d.transferEventName(u));let v=arguments[2],R=v?typeof v=="boolean"?!0:v.capture:!1,m=arguments[1];if(!m)return b.apply(this,arguments);if(x&&!x(b,m,r,arguments))return;let O=ne[u],N;O&&(N=O[R?ae:le]);let L=N&&r[N];if(L)for(let F=0;Ffunction(c,f){c[ct]=!0,t&&t.apply(c,f)})}function Rt(e,n){n.patchMethod(e,"queueMicrotask",a=>function(t,c){Zone.current.scheduleMicroTask("queueMicrotask",c[0])})}var Re=j("zoneTask");function ye(e,n,a,t){let c=null,f=null;n+=t,a+=t;let E={};function T(C){let _=C.data;_.args[0]=function(){return C.invoke.apply(this,arguments)};let P=c.apply(e,_.args);return Qe(P)?_.handleId=P:(_.handle=P,_.isRefreshable=Ke(P.refresh)),C}function p(C){let{handle:_,handleId:P}=C.data;return f.call(e,_??P)}c=ue(e,n,C=>function(_,P){if(Ke(P[0])){let I={isRefreshable:!1,isPeriodic:t==="Interval",delay:t==="Timeout"||t==="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:x,isPeriodic:X,isRefreshable:G}=I;!X&&!G&&(x?delete E[x]:A&&(A[Re]=null))}};let U=Ge(n,P[0],I,T,p);if(!U)return U;let{handleId:$,handle:J,isRefreshable:q,isPeriodic:k}=U.data;if($)E[$]=U;else if(J&&(J[Re]=U,q&&!k)){let d=J.refresh;J.refresh=function(){let{zone:A,state:x}=U;return x==="notScheduled"?(U._state="scheduled",A._updateTaskCount(U,1)):x==="running"&&(U._state="scheduling"),d.call(this)}}return J??$??U}else return C.apply(e,P)}),f=ue(e,a,C=>function(_,P){let I=P[0],H;Qe(I)?(H=E[I],delete E[I]):(H=I?.[Re],H?I[Re]=null:H=I),H?.type?H.cancelFn&&H.zone.cancelTask(H):C.apply(e,P)})}function Ct(e,n){let{isBrowser:a,isMix:t}=n.getGlobalObjects();if(!a&&!t||!e.customElements||!("customElements"in e))return;let c=["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback","formAssociatedCallback","formDisabledCallback","formResetCallback","formStateRestoreCallback"];n.patchCallbacks(n,e.customElements,"customElements","define",c)}function Dt(e,n){if(Zone[n.symbol("patchEventTarget")])return;let{eventNames:a,zoneSymbolEventNames:t,TRUE_STR:c,FALSE_STR:f,ZONE_SYMBOL_PREFIX:E}=n.getGlobalObjects();for(let p=0;pf.target===e);if(!t||t.length===0)return n;let c=t[0].ignoreProperties;return n.filter(f=>c.indexOf(f)===-1)}function et(e,n,a,t){if(!e)return;let c=ut(e,n,a);ot(e,c,t)}function Ze(e){return Object.getOwnPropertyNames(e).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}function Ot(e,n){if(Se&&!rt||Zone[e.symbol("patchEvents")])return;let a=n.__Zone_ignore_on_properties,t=[];if(Be){let c=window;t=t.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);let f=kt()?[{target:c,ignoreProperties:["error"]}]:[];et(c,Ze(c),a&&a.concat(f),je(c))}t=t.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{let a=n[e.__symbol__("legacyPatch")];a&&a()}),e.__load_patch("timers",n=>{let a="set",t="clear";ye(n,a,t,"Timeout"),ye(n,a,t,"Interval"),ye(n,a,t,"Immediate")}),e.__load_patch("requestAnimationFrame",n=>{ye(n,"request","cancel","AnimationFrame"),ye(n,"mozRequest","mozCancel","AnimationFrame"),ye(n,"webkitRequest","webkitCancel","AnimationFrame")}),e.__load_patch("blocking",(n,a)=>{let t=["alert","prompt","confirm"];for(let c=0;cfunction(C,_){return a.current.run(E,n,_,p)})}}),e.__load_patch("EventTarget",(n,a,t)=>{St(n,t),Dt(n,t);let c=n.XMLHttpRequestEventTarget;c&&c.prototype&&t.patchEventTarget(n,t,[c.prototype])}),e.__load_patch("MutationObserver",(n,a,t)=>{ve("MutationObserver"),ve("WebKitMutationObserver")}),e.__load_patch("IntersectionObserver",(n,a,t)=>{ve("IntersectionObserver")}),e.__load_patch("FileReader",(n,a,t)=>{ve("FileReader")}),e.__load_patch("on_property",(n,a,t)=>{Ot(t,n)}),e.__load_patch("customElements",(n,a,t)=>{Ct(n,t)}),e.__load_patch("XHR",(n,a)=>{C(n);let t=j("xhrTask"),c=j("xhrSync"),f=j("xhrListener"),E=j("xhrScheduled"),T=j("xhrURL"),p=j("xhrErrorBeforeScheduled");function C(_){let P=_.XMLHttpRequest;if(!P)return;let I=P.prototype;function H(w){return w[t]}let U=I[Le],$=I[Ie];if(!U){let w=_.XMLHttpRequestEventTarget;if(w){let b=w.prototype;U=b[Le],$=b[Ie]}}let J="readystatechange",q="scheduled";function k(w){let b=w.data,D=b.target;D[E]=!1,D[p]=!1;let K=D[f];U||(U=D[Le],$=D[Ie]),K&&$.call(D,J,K);let W=D[f]=()=>{if(D.readyState===D.DONE)if(!b.aborted&&D[E]&&w.state===q){let s=D[a.__symbol__("loadfalse")];if(D.status!==0&&s&&s.length>0){let i=w.invoke;w.invoke=function(){let o=D[a.__symbol__("loadfalse")];for(let g=0;gfunction(w,b){return w[c]=b[2]==!1,w[T]=b[1],x.apply(w,b)}),X="XMLHttpRequest.send",G=j("fetchTaskAborting"),y=j("fetchTaskScheduling"),z=ue(I,"send",()=>function(w,b){if(a.current[y]===!0||w[c])return z.apply(w,b);{let D={target:w,url:w[T],isPeriodic:!1,args:b,aborted:!1},K=Ge(X,d,D,k,A);w&&w[p]===!0&&!D.aborted&&K.state===q&&K.invoke()}}),S=ue(I,"abort",()=>function(w,b){let D=H(w);if(D&&typeof D.type=="string"){if(D.cancelFn==null||D.data&&D.data.aborted)return;D.zone.cancelTask(D)}else if(a.current[G]===!0)return S.apply(w,b)})}}),e.__load_patch("geolocation",n=>{n.navigator&&n.navigator.geolocation&&yt(n.navigator.geolocation,["getCurrentPosition","watchPosition"])}),e.__load_patch("PromiseRejectionEvent",(n,a)=>{function t(c){return function(f){lt(n,c).forEach(T=>{let p=n.PromiseRejectionEvent;if(p){let C=new p(c,{promise:f.promise,reason:f.rejection});T.invoke(C)}})}}n.PromiseRejectionEvent&&(a[j("unhandledPromiseRejectionHandler")]=t("unhandledrejection"),a[j("rejectionHandledHandler")]=t("rejectionhandled"))}),e.__load_patch("queueMicrotask",(n,a,t)=>{Rt(n,t)})}function Lt(e){e.__load_patch("ZoneAwarePromise",(n,a,t)=>{let c=Object.getOwnPropertyDescriptor,f=Object.defineProperty;function E(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=t.symbol,p=[],C=n[T("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")]!==!1,_=T("Promise"),P=T("then"),I="__creationTrace__";t.onUnhandledError=h=>{if(t.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)}},t.microtaskDrainDone=()=>{for(;p.length;){let h=p.shift();try{h.zone.runGuarded(()=>{throw h.throwOriginal?h.rejection:h})}catch(l){U(l)}}};let H=T("unhandledPromiseRejectionHandler");function U(h){t.onUnhandledError(h);try{let l=a[H];typeof l=="function"&&l.call(this,h)}catch{}}function $(h){return h&&h.then}function J(h){return h}function q(h){return Z.reject(h)}let k=T("state"),d=T("value"),A=T("finally"),x=T("parentPromiseValue"),X=T("parentPromiseState"),G="Promise.then",y=null,z=!0,S=!1,w=0;function b(h,l){return r=>{try{M(h,l,r)}catch(u){M(h,!1,u)}}}let D=function(){let h=!1;return function(r){return function(){h||(h=!0,r.apply(null,arguments))}}},K="Promise resolved with itself",W=T("currentTaskTrace");function M(h,l,r){let u=D();if(h===r)throw new TypeError(K);if(h[k]===y){let v=null;try{(typeof r=="object"||typeof r=="function")&&(v=r&&r.then)}catch(R){return u(()=>{M(h,!1,R)})(),h}if(l!==S&&r instanceof Z&&r.hasOwnProperty(k)&&r.hasOwnProperty(d)&&r[k]!==y)i(r),M(h,r[k],r[d]);else if(l!==S&&typeof v=="function")try{v.call(r,u(b(h,l)),u(b(h,!1)))}catch(R){u(()=>{M(h,!1,R)})()}else{h[k]=l;let R=h[d];if(h[d]=r,h[A]===A&&l===z&&(h[k]=h[X],h[d]=h[x]),l===S&&r instanceof Error){let m=a.currentTask&&a.currentTask.data&&a.currentTask.data[I];m&&f(r,W,{configurable:!0,enumerable:!1,writable:!0,value:m})}for(let m=0;m{try{let O=h[d],N=!!r&&A===r[A];N&&(r[x]=O,r[X]=R);let L=l.run(m,void 0,N&&m!==q&&m!==J?[]:[O]);M(r,!0,L)}catch(O){M(r,!1,O)}},r)}let g="function ZoneAwarePromise() { [native code] }",V=function(){},ee=n.AggregateError;class Z{static toString(){return g}static resolve(l){return l instanceof Z?l:M(new this(null),z,l)}static reject(l){return M(new this(null),S,l)}static withResolvers(){let l={};return l.promise=new Z((r,u)=>{l.resolve=r,l.reject=u}),l}static any(l){if(!l||typeof l[Symbol.iterator]!="function")return Promise.reject(new ee([],"All promises were rejected"));let r=[],u=0;try{for(let m of l)u++,r.push(Z.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,R=[];return new Z((m,O)=>{for(let N=0;N{v||(v=!0,m(L))},L=>{R.push(L),u--,u===0&&(v=!0,O(new ee(R,"All promises were rejected")))})})}static race(l){let r,u,v=new this((O,N)=>{r=O,u=N});function R(O){r(O)}function m(O){u(O)}for(let O of l)$(O)||(O=this.resolve(O)),O.then(R,m);return v}static all(l){return Z.allWithCallback(l)}static allSettled(l){return(this&&this.prototype instanceof Z?this:Z).allWithCallback(l,{thenCallback:u=>({status:"fulfilled",value:u}),errorCallback:u=>({status:"rejected",reason:u})})}static allWithCallback(l,r){let u,v,R=new this((L,F)=>{u=L,v=F}),m=2,O=0,N=[];for(let L of l){$(L)||(L=this.resolve(L));let F=O;try{L.then(B=>{N[F]=r?r.thenCallback(B):B,m--,m===0&&u(N)},B=>{r?(N[F]=r.errorCallback(B),m--,m===0&&u(N)):v(B)})}catch(B){v(B)}m++,O++}return m-=2,m===0&&u(N),R}constructor(l){let r=this;if(!(r instanceof Z))throw new Error("Must be an instanceof Promise.");r[k]=y,r[d]=[];try{let u=D();l&&l(u(b(r,z)),u(b(r,S)))}catch(u){M(r,!1,u)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return Z}then(l,r){let u=this.constructor?.[Symbol.species];(!u||typeof u!="function")&&(u=this.constructor||Z);let v=new u(V),R=a.current;return this[k]==y?this[d].push(R,v,l,r):o(this,R,v,l,r),v}catch(l){return this.then(null,l)}finally(l){let r=this.constructor?.[Symbol.species];(!r||typeof r!="function")&&(r=Z);let u=new r(V);u[A]=A;let v=a.current;return this[k]==y?this[d].push(v,u,l,l):o(this,v,u,l,l),u}}Z.resolve=Z.resolve,Z.reject=Z.reject,Z.race=Z.race,Z.all=Z.all;let he=n[_]=n.Promise;n.Promise=Z;let _e=T("thenPatched");function Q(h){let l=h.prototype,r=c(l,"then");if(r&&(r.writable===!1||!r.configurable))return;let u=l.then;l[P]=u,h.prototype.then=function(v,R){return new Z((O,N)=>{u.call(this,O,N)}).then(v,R)},h[_e]=!0}t.patchThen=Q;function Ee(h){return function(l,r){let u=h.apply(l,r);if(u instanceof Z)return u;let v=u.constructor;return v[_e]||Q(v),u}}return he&&(Q(he),ue(n,"fetch",h=>Ee(h))),Promise[a.__symbol__("uncaughtPromiseErrors")]=p,Z})}function It(e){e.__load_patch("toString",n=>{let a=Function.prototype.toString,t=j("OriginalDelegate"),c=j("Promise"),f=j("Error"),E=function(){if(typeof this=="function"){let _=this[t];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)};E[t]=a,Function.prototype.toString=E;let T=Object.prototype.toString,p="[object Promise]";Object.prototype.toString=function(){return typeof Promise=="function"&&this instanceof Promise?p:T.call(this)}})}function Mt(e,n,a,t,c){let f=Zone.__symbol__(t);if(n[f])return;let E=n[f]=n[t];n[t]=function(T,p,C){return p&&p.prototype&&c.forEach(function(_){let P=`${a}.${t}::`+_,I=p.prototype;try{if(I.hasOwnProperty(_)){let H=e.ObjectGetOwnPropertyDescriptor(I,_);H&&H.value?(H.value=e.wrapWithCurrentZone(H.value,P),e._redefineProperty(p.prototype,_,H)):I[_]&&(I[_]=e.wrapWithCurrentZone(I[_],P))}else I[_]&&(I[_]=e.wrapWithCurrentZone(I[_],P))}catch{}}),E.call(n,T,p,C)},e.attachOriginToPatched(n[t],E)}function Zt(e){e.__load_patch("util",(n,a,t)=>{let c=Ze(n);t.patchOnProperties=ot,t.patchMethod=ue,t.bindArguments=Fe,t.patchMacroTask=pt;let f=a.__symbol__("BLACK_LISTED_EVENTS"),E=a.__symbol__("UNPATCHED_EVENTS");n[E]&&(n[f]=n[E]),n[f]&&(a[f]=a[E]=n[f]),t.patchEventPrototype=wt,t.patchEventTarget=Pt,t.isIEOrEdge=vt,t.ObjectDefineProperty=Ae,t.ObjectGetOwnPropertyDescriptor=be,t.ObjectCreate=Et,t.ArraySlice=Tt,t.patchClass=ve,t.wrapWithCurrentZone=Ve,t.filterProperties=ut,t.attachOriginToPatched=fe,t._redefineProperty=Object.defineProperty,t.patchCallbacks=Mt,t.getGlobalObjects=()=>({globalSources:st,zoneSymbolEventNames:ne,eventNames:c,isBrowser:Be,isMix:rt,isNode:Se,TRUE_STR:ae,FALSE_STR:le,ZONE_SYMBOL_PREFIX:Pe,ADD_EVENT_LISTENER_STR:He,REMOVE_EVENT_LISTENER_STR:xe})})}function At(e){Lt(e),It(e),Zt(e)}var ft=_t();At(ft);Nt(ft); diff --git a/dist/gramm-ai/browser/styles-TX4PRGSR.css b/dist/gramm-ai/browser/styles-TX4PRGSR.css new file mode 100644 index 0000000000000000000000000000000000000000..94af39d02a5ba5b97b8778cd48bbdceb59bad2e9 --- /dev/null +++ b/dist/gramm-ai/browser/styles-TX4PRGSR.css @@ -0,0 +1 @@ +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-regular,.fa-solid,.fab,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-brands:before,.fa-regular:before,.fa-solid:before,.fa:before,.fab:before,.far:before,.fas:before{content:var(--fa)}.fa-classic,.fa-regular,.fa-solid,.far,.fas{font-family:"Font Awesome 6 Free"}.fa-brands,.fab{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{animation-name:fa-beat;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{animation-name:fa-bounce;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{animation-name:fa-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{animation-name:fa-beat-fade;animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{animation-name:fa-flip;animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{animation-name:fa-shake;animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{animation-delay:var(--fa-animation-delay,0s);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{animation-name:fa-spin;animation-duration:var(--fa-animation-duration,2s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{animation-name:fa-spin;animation-direction:var(--fa-animation-direction,normal);animation-duration:var(--fa-animation-duration,1s);animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{animation-delay:-1ms;animation-duration:1ms;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@keyframes fa-beat{0%,90%{transform:scale(1)}45%{transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-bounce{0%{transform:scale(1) translateY(0)}10%{transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{transform:scale(1) translateY(0)}to{transform:scale(1) translateY(0)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);transform:scale(1)}50%{opacity:1;transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-flip{50%{transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-shake{0%{transform:rotate(-15deg)}4%{transform:rotate(15deg)}8%,24%{transform:rotate(-18deg)}12%,28%{transform:rotate(18deg)}16%{transform:rotate(-22deg)}20%{transform:rotate(22deg)}32%{transform:rotate(-12deg)}36%{transform:rotate(12deg)}40%,to{transform:rotate(0)}}@keyframes fa-spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.fa-rotate-90{transform:rotate(90deg)}.fa-rotate-180{transform:rotate(180deg)}.fa-rotate-270{transform:rotate(270deg)}.fa-flip-horizontal{transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}.fa-rotate-by{transform:rotate(var(--fa-rotate-angle,0))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0{--fa:"0"}.fa-1{--fa:"1"}.fa-2{--fa:"2"}.fa-3{--fa:"3"}.fa-4{--fa:"4"}.fa-5{--fa:"5"}.fa-6{--fa:"6"}.fa-7{--fa:"7"}.fa-8{--fa:"8"}.fa-9{--fa:"9"}.fa-fill-drip{--fa:"\f576"}.fa-arrows-to-circle{--fa:"\e4bd"}.fa-chevron-circle-right,.fa-circle-chevron-right{--fa:"\f138"}.fa-at{--fa:"@"}.fa-trash-alt,.fa-trash-can{--fa:"\f2ed"}.fa-text-height{--fa:"\f034"}.fa-user-times,.fa-user-xmark{--fa:"\f235"}.fa-stethoscope{--fa:"\f0f1"}.fa-comment-alt,.fa-message{--fa:"\f27a"}.fa-info{--fa:"\f129"}.fa-compress-alt,.fa-down-left-and-up-right-to-center{--fa:"\f422"}.fa-explosion{--fa:"\e4e9"}.fa-file-alt,.fa-file-lines,.fa-file-text{--fa:"\f15c"}.fa-wave-square{--fa:"\f83e"}.fa-ring{--fa:"\f70b"}.fa-building-un{--fa:"\e4d9"}.fa-dice-three{--fa:"\f527"}.fa-calendar-alt,.fa-calendar-days{--fa:"\f073"}.fa-anchor-circle-check{--fa:"\e4aa"}.fa-building-circle-arrow-right{--fa:"\e4d1"}.fa-volleyball,.fa-volleyball-ball{--fa:"\f45f"}.fa-arrows-up-to-line{--fa:"\e4c2"}.fa-sort-desc,.fa-sort-down{--fa:"\f0dd"}.fa-circle-minus,.fa-minus-circle{--fa:"\f056"}.fa-door-open{--fa:"\f52b"}.fa-right-from-bracket,.fa-sign-out-alt{--fa:"\f2f5"}.fa-atom{--fa:"\f5d2"}.fa-soap{--fa:"\e06e"}.fa-heart-music-camera-bolt,.fa-icons{--fa:"\f86d"}.fa-microphone-alt-slash,.fa-microphone-lines-slash{--fa:"\f539"}.fa-bridge-circle-check{--fa:"\e4c9"}.fa-pump-medical{--fa:"\e06a"}.fa-fingerprint{--fa:"\f577"}.fa-hand-point-right{--fa:"\f0a4"}.fa-magnifying-glass-location,.fa-search-location{--fa:"\f689"}.fa-forward-step,.fa-step-forward{--fa:"\f051"}.fa-face-smile-beam,.fa-smile-beam{--fa:"\f5b8"}.fa-flag-checkered{--fa:"\f11e"}.fa-football,.fa-football-ball{--fa:"\f44e"}.fa-school-circle-exclamation{--fa:"\e56c"}.fa-crop{--fa:"\f125"}.fa-angle-double-down,.fa-angles-down{--fa:"\f103"}.fa-users-rectangle{--fa:"\e594"}.fa-people-roof{--fa:"\e537"}.fa-people-line{--fa:"\e534"}.fa-beer,.fa-beer-mug-empty{--fa:"\f0fc"}.fa-diagram-predecessor{--fa:"\e477"}.fa-arrow-up-long,.fa-long-arrow-up{--fa:"\f176"}.fa-burn,.fa-fire-flame-simple{--fa:"\f46a"}.fa-male,.fa-person{--fa:"\f183"}.fa-laptop{--fa:"\f109"}.fa-file-csv{--fa:"\f6dd"}.fa-menorah{--fa:"\f676"}.fa-truck-plane{--fa:"\e58f"}.fa-record-vinyl{--fa:"\f8d9"}.fa-face-grin-stars,.fa-grin-stars{--fa:"\f587"}.fa-bong{--fa:"\f55c"}.fa-pastafarianism,.fa-spaghetti-monster-flying{--fa:"\f67b"}.fa-arrow-down-up-across-line{--fa:"\e4af"}.fa-spoon,.fa-utensil-spoon{--fa:"\f2e5"}.fa-jar-wheat{--fa:"\e517"}.fa-envelopes-bulk,.fa-mail-bulk{--fa:"\f674"}.fa-file-circle-exclamation{--fa:"\e4eb"}.fa-circle-h,.fa-hospital-symbol{--fa:"\f47e"}.fa-pager{--fa:"\f815"}.fa-address-book,.fa-contact-book{--fa:"\f2b9"}.fa-strikethrough{--fa:"\f0cc"}.fa-k{--fa:"K"}.fa-landmark-flag{--fa:"\e51c"}.fa-pencil,.fa-pencil-alt{--fa:"\f303"}.fa-backward{--fa:"\f04a"}.fa-caret-right{--fa:"\f0da"}.fa-comments{--fa:"\f086"}.fa-file-clipboard,.fa-paste{--fa:"\f0ea"}.fa-code-pull-request{--fa:"\e13c"}.fa-clipboard-list{--fa:"\f46d"}.fa-truck-loading,.fa-truck-ramp-box{--fa:"\f4de"}.fa-user-check{--fa:"\f4fc"}.fa-vial-virus{--fa:"\e597"}.fa-sheet-plastic{--fa:"\e571"}.fa-blog{--fa:"\f781"}.fa-user-ninja{--fa:"\f504"}.fa-person-arrow-up-from-line{--fa:"\e539"}.fa-scroll-torah,.fa-torah{--fa:"\f6a0"}.fa-broom-ball,.fa-quidditch,.fa-quidditch-broom-ball{--fa:"\f458"}.fa-toggle-off{--fa:"\f204"}.fa-archive,.fa-box-archive{--fa:"\f187"}.fa-person-drowning{--fa:"\e545"}.fa-arrow-down-9-1,.fa-sort-numeric-desc,.fa-sort-numeric-down-alt{--fa:"\f886"}.fa-face-grin-tongue-squint,.fa-grin-tongue-squint{--fa:"\f58a"}.fa-spray-can{--fa:"\f5bd"}.fa-truck-monster{--fa:"\f63b"}.fa-w{--fa:"W"}.fa-earth-africa,.fa-globe-africa{--fa:"\f57c"}.fa-rainbow{--fa:"\f75b"}.fa-circle-notch{--fa:"\f1ce"}.fa-tablet-alt,.fa-tablet-screen-button{--fa:"\f3fa"}.fa-paw{--fa:"\f1b0"}.fa-cloud{--fa:"\f0c2"}.fa-trowel-bricks{--fa:"\e58a"}.fa-face-flushed,.fa-flushed{--fa:"\f579"}.fa-hospital-user{--fa:"\f80d"}.fa-tent-arrow-left-right{--fa:"\e57f"}.fa-gavel,.fa-legal{--fa:"\f0e3"}.fa-binoculars{--fa:"\f1e5"}.fa-microphone-slash{--fa:"\f131"}.fa-box-tissue{--fa:"\e05b"}.fa-motorcycle{--fa:"\f21c"}.fa-bell-concierge,.fa-concierge-bell{--fa:"\f562"}.fa-pen-ruler,.fa-pencil-ruler{--fa:"\f5ae"}.fa-people-arrows,.fa-people-arrows-left-right{--fa:"\e068"}.fa-mars-and-venus-burst{--fa:"\e523"}.fa-caret-square-right,.fa-square-caret-right{--fa:"\f152"}.fa-cut,.fa-scissors{--fa:"\f0c4"}.fa-sun-plant-wilt{--fa:"\e57a"}.fa-toilets-portable{--fa:"\e584"}.fa-hockey-puck{--fa:"\f453"}.fa-table{--fa:"\f0ce"}.fa-magnifying-glass-arrow-right{--fa:"\e521"}.fa-digital-tachograph,.fa-tachograph-digital{--fa:"\f566"}.fa-users-slash{--fa:"\e073"}.fa-clover{--fa:"\e139"}.fa-mail-reply,.fa-reply{--fa:"\f3e5"}.fa-star-and-crescent{--fa:"\f699"}.fa-house-fire{--fa:"\e50c"}.fa-minus-square,.fa-square-minus{--fa:"\f146"}.fa-helicopter{--fa:"\f533"}.fa-compass{--fa:"\f14e"}.fa-caret-square-down,.fa-square-caret-down{--fa:"\f150"}.fa-file-circle-question{--fa:"\e4ef"}.fa-laptop-code{--fa:"\f5fc"}.fa-swatchbook{--fa:"\f5c3"}.fa-prescription-bottle{--fa:"\f485"}.fa-bars,.fa-navicon{--fa:"\f0c9"}.fa-people-group{--fa:"\e533"}.fa-hourglass-3,.fa-hourglass-end{--fa:"\f253"}.fa-heart-broken,.fa-heart-crack{--fa:"\f7a9"}.fa-external-link-square-alt,.fa-square-up-right{--fa:"\f360"}.fa-face-kiss-beam,.fa-kiss-beam{--fa:"\f597"}.fa-film{--fa:"\f008"}.fa-ruler-horizontal{--fa:"\f547"}.fa-people-robbery{--fa:"\e536"}.fa-lightbulb{--fa:"\f0eb"}.fa-caret-left{--fa:"\f0d9"}.fa-circle-exclamation,.fa-exclamation-circle{--fa:"\f06a"}.fa-school-circle-xmark{--fa:"\e56d"}.fa-arrow-right-from-bracket,.fa-sign-out{--fa:"\f08b"}.fa-chevron-circle-down,.fa-circle-chevron-down{--fa:"\f13a"}.fa-unlock-alt,.fa-unlock-keyhole{--fa:"\f13e"}.fa-cloud-showers-heavy{--fa:"\f740"}.fa-headphones-alt,.fa-headphones-simple{--fa:"\f58f"}.fa-sitemap{--fa:"\f0e8"}.fa-circle-dollar-to-slot,.fa-donate{--fa:"\f4b9"}.fa-memory{--fa:"\f538"}.fa-road-spikes{--fa:"\e568"}.fa-fire-burner{--fa:"\e4f1"}.fa-flag{--fa:"\f024"}.fa-hanukiah{--fa:"\f6e6"}.fa-feather{--fa:"\f52d"}.fa-volume-down,.fa-volume-low{--fa:"\f027"}.fa-comment-slash{--fa:"\f4b3"}.fa-cloud-sun-rain{--fa:"\f743"}.fa-compress{--fa:"\f066"}.fa-wheat-alt,.fa-wheat-awn{--fa:"\e2cd"}.fa-ankh{--fa:"\f644"}.fa-hands-holding-child{--fa:"\e4fa"}.fa-asterisk{--fa:"*"}.fa-check-square,.fa-square-check{--fa:"\f14a"}.fa-peseta-sign{--fa:"\e221"}.fa-header,.fa-heading{--fa:"\f1dc"}.fa-ghost{--fa:"\f6e2"}.fa-list,.fa-list-squares{--fa:"\f03a"}.fa-phone-square-alt,.fa-square-phone-flip{--fa:"\f87b"}.fa-cart-plus{--fa:"\f217"}.fa-gamepad{--fa:"\f11b"}.fa-circle-dot,.fa-dot-circle{--fa:"\f192"}.fa-dizzy,.fa-face-dizzy{--fa:"\f567"}.fa-egg{--fa:"\f7fb"}.fa-house-medical-circle-xmark{--fa:"\e513"}.fa-campground{--fa:"\f6bb"}.fa-folder-plus{--fa:"\f65e"}.fa-futbol,.fa-futbol-ball,.fa-soccer-ball{--fa:"\f1e3"}.fa-paint-brush,.fa-paintbrush{--fa:"\f1fc"}.fa-lock{--fa:"\f023"}.fa-gas-pump{--fa:"\f52f"}.fa-hot-tub,.fa-hot-tub-person{--fa:"\f593"}.fa-map-location,.fa-map-marked{--fa:"\f59f"}.fa-house-flood-water{--fa:"\e50e"}.fa-tree{--fa:"\f1bb"}.fa-bridge-lock{--fa:"\e4cc"}.fa-sack-dollar{--fa:"\f81d"}.fa-edit,.fa-pen-to-square{--fa:"\f044"}.fa-car-side{--fa:"\f5e4"}.fa-share-alt,.fa-share-nodes{--fa:"\f1e0"}.fa-heart-circle-minus{--fa:"\e4ff"}.fa-hourglass-2,.fa-hourglass-half{--fa:"\f252"}.fa-microscope{--fa:"\f610"}.fa-sink{--fa:"\e06d"}.fa-bag-shopping,.fa-shopping-bag{--fa:"\f290"}.fa-arrow-down-z-a,.fa-sort-alpha-desc,.fa-sort-alpha-down-alt{--fa:"\f881"}.fa-mitten{--fa:"\f7b5"}.fa-person-rays{--fa:"\e54d"}.fa-users{--fa:"\f0c0"}.fa-eye-slash{--fa:"\f070"}.fa-flask-vial{--fa:"\e4f3"}.fa-hand,.fa-hand-paper{--fa:"\f256"}.fa-om{--fa:"\f679"}.fa-worm{--fa:"\e599"}.fa-house-circle-xmark{--fa:"\e50b"}.fa-plug{--fa:"\f1e6"}.fa-chevron-up{--fa:"\f077"}.fa-hand-spock{--fa:"\f259"}.fa-stopwatch{--fa:"\f2f2"}.fa-face-kiss,.fa-kiss{--fa:"\f596"}.fa-bridge-circle-xmark{--fa:"\e4cb"}.fa-face-grin-tongue,.fa-grin-tongue{--fa:"\f589"}.fa-chess-bishop{--fa:"\f43a"}.fa-face-grin-wink,.fa-grin-wink{--fa:"\f58c"}.fa-deaf,.fa-deafness,.fa-ear-deaf,.fa-hard-of-hearing{--fa:"\f2a4"}.fa-road-circle-check{--fa:"\e564"}.fa-dice-five{--fa:"\f523"}.fa-rss-square,.fa-square-rss{--fa:"\f143"}.fa-land-mine-on{--fa:"\e51b"}.fa-i-cursor{--fa:"\f246"}.fa-stamp{--fa:"\f5bf"}.fa-stairs{--fa:"\e289"}.fa-i{--fa:"I"}.fa-hryvnia,.fa-hryvnia-sign{--fa:"\f6f2"}.fa-pills{--fa:"\f484"}.fa-face-grin-wide,.fa-grin-alt{--fa:"\f581"}.fa-tooth{--fa:"\f5c9"}.fa-v{--fa:"V"}.fa-bangladeshi-taka-sign{--fa:"\e2e6"}.fa-bicycle{--fa:"\f206"}.fa-rod-asclepius,.fa-rod-snake,.fa-staff-aesculapius,.fa-staff-snake{--fa:"\e579"}.fa-head-side-cough-slash{--fa:"\e062"}.fa-ambulance,.fa-truck-medical{--fa:"\f0f9"}.fa-wheat-awn-circle-exclamation{--fa:"\e598"}.fa-snowman{--fa:"\f7d0"}.fa-mortar-pestle{--fa:"\f5a7"}.fa-road-barrier{--fa:"\e562"}.fa-school{--fa:"\f549"}.fa-igloo{--fa:"\f7ae"}.fa-joint{--fa:"\f595"}.fa-angle-right{--fa:"\f105"}.fa-horse{--fa:"\f6f0"}.fa-q{--fa:"Q"}.fa-g{--fa:"G"}.fa-notes-medical{--fa:"\f481"}.fa-temperature-2,.fa-temperature-half,.fa-thermometer-2,.fa-thermometer-half{--fa:"\f2c9"}.fa-dong-sign{--fa:"\e169"}.fa-capsules{--fa:"\f46b"}.fa-poo-bolt,.fa-poo-storm{--fa:"\f75a"}.fa-face-frown-open,.fa-frown-open{--fa:"\f57a"}.fa-hand-point-up{--fa:"\f0a6"}.fa-money-bill{--fa:"\f0d6"}.fa-bookmark{--fa:"\f02e"}.fa-align-justify{--fa:"\f039"}.fa-umbrella-beach{--fa:"\f5ca"}.fa-helmet-un{--fa:"\e503"}.fa-bullseye{--fa:"\f140"}.fa-bacon{--fa:"\f7e5"}.fa-hand-point-down{--fa:"\f0a7"}.fa-arrow-up-from-bracket{--fa:"\e09a"}.fa-folder,.fa-folder-blank{--fa:"\f07b"}.fa-file-medical-alt,.fa-file-waveform{--fa:"\f478"}.fa-radiation{--fa:"\f7b9"}.fa-chart-simple{--fa:"\e473"}.fa-mars-stroke{--fa:"\f229"}.fa-vial{--fa:"\f492"}.fa-dashboard,.fa-gauge,.fa-gauge-med,.fa-tachometer-alt-average{--fa:"\f624"}.fa-magic-wand-sparkles,.fa-wand-magic-sparkles{--fa:"\e2ca"}.fa-e{--fa:"E"}.fa-pen-alt,.fa-pen-clip{--fa:"\f305"}.fa-bridge-circle-exclamation{--fa:"\e4ca"}.fa-user{--fa:"\f007"}.fa-school-circle-check{--fa:"\e56b"}.fa-dumpster{--fa:"\f793"}.fa-shuttle-van,.fa-van-shuttle{--fa:"\f5b6"}.fa-building-user{--fa:"\e4da"}.fa-caret-square-left,.fa-square-caret-left{--fa:"\f191"}.fa-highlighter{--fa:"\f591"}.fa-key{--fa:"\f084"}.fa-bullhorn{--fa:"\f0a1"}.fa-globe{--fa:"\f0ac"}.fa-synagogue{--fa:"\f69b"}.fa-person-half-dress{--fa:"\e548"}.fa-road-bridge{--fa:"\e563"}.fa-location-arrow{--fa:"\f124"}.fa-c{--fa:"C"}.fa-tablet-button{--fa:"\f10a"}.fa-building-lock{--fa:"\e4d6"}.fa-pizza-slice{--fa:"\f818"}.fa-money-bill-wave{--fa:"\f53a"}.fa-area-chart,.fa-chart-area{--fa:"\f1fe"}.fa-house-flag{--fa:"\e50d"}.fa-person-circle-minus{--fa:"\e540"}.fa-ban,.fa-cancel{--fa:"\f05e"}.fa-camera-rotate{--fa:"\e0d8"}.fa-air-freshener,.fa-spray-can-sparkles{--fa:"\f5d0"}.fa-star{--fa:"\f005"}.fa-repeat{--fa:"\f363"}.fa-cross{--fa:"\f654"}.fa-box{--fa:"\f466"}.fa-venus-mars{--fa:"\f228"}.fa-arrow-pointer,.fa-mouse-pointer{--fa:"\f245"}.fa-expand-arrows-alt,.fa-maximize{--fa:"\f31e"}.fa-charging-station{--fa:"\f5e7"}.fa-shapes,.fa-triangle-circle-square{--fa:"\f61f"}.fa-random,.fa-shuffle{--fa:"\f074"}.fa-person-running,.fa-running{--fa:"\f70c"}.fa-mobile-retro{--fa:"\e527"}.fa-grip-lines-vertical{--fa:"\f7a5"}.fa-spider{--fa:"\f717"}.fa-hands-bound{--fa:"\e4f9"}.fa-file-invoice-dollar{--fa:"\f571"}.fa-plane-circle-exclamation{--fa:"\e556"}.fa-x-ray{--fa:"\f497"}.fa-spell-check{--fa:"\f891"}.fa-slash{--fa:"\f715"}.fa-computer-mouse,.fa-mouse{--fa:"\f8cc"}.fa-arrow-right-to-bracket,.fa-sign-in{--fa:"\f090"}.fa-shop-slash,.fa-store-alt-slash{--fa:"\e070"}.fa-server{--fa:"\f233"}.fa-virus-covid-slash{--fa:"\e4a9"}.fa-shop-lock{--fa:"\e4a5"}.fa-hourglass-1,.fa-hourglass-start{--fa:"\f251"}.fa-blender-phone{--fa:"\f6b6"}.fa-building-wheat{--fa:"\e4db"}.fa-person-breastfeeding{--fa:"\e53a"}.fa-right-to-bracket,.fa-sign-in-alt{--fa:"\f2f6"}.fa-venus{--fa:"\f221"}.fa-passport{--fa:"\f5ab"}.fa-thumb-tack-slash,.fa-thumbtack-slash{--fa:"\e68f"}.fa-heart-pulse,.fa-heartbeat{--fa:"\f21e"}.fa-people-carry,.fa-people-carry-box{--fa:"\f4ce"}.fa-temperature-high{--fa:"\f769"}.fa-microchip{--fa:"\f2db"}.fa-crown{--fa:"\f521"}.fa-weight-hanging{--fa:"\f5cd"}.fa-xmarks-lines{--fa:"\e59a"}.fa-file-prescription{--fa:"\f572"}.fa-weight,.fa-weight-scale{--fa:"\f496"}.fa-user-friends,.fa-user-group{--fa:"\f500"}.fa-arrow-up-a-z,.fa-sort-alpha-up{--fa:"\f15e"}.fa-chess-knight{--fa:"\f441"}.fa-face-laugh-squint,.fa-laugh-squint{--fa:"\f59b"}.fa-wheelchair{--fa:"\f193"}.fa-arrow-circle-up,.fa-circle-arrow-up{--fa:"\f0aa"}.fa-toggle-on{--fa:"\f205"}.fa-person-walking,.fa-walking{--fa:"\f554"}.fa-l{--fa:"L"}.fa-fire{--fa:"\f06d"}.fa-bed-pulse,.fa-procedures{--fa:"\f487"}.fa-shuttle-space,.fa-space-shuttle{--fa:"\f197"}.fa-face-laugh,.fa-laugh{--fa:"\f599"}.fa-folder-open{--fa:"\f07c"}.fa-heart-circle-plus{--fa:"\e500"}.fa-code-fork{--fa:"\e13b"}.fa-city{--fa:"\f64f"}.fa-microphone-alt,.fa-microphone-lines{--fa:"\f3c9"}.fa-pepper-hot{--fa:"\f816"}.fa-unlock{--fa:"\f09c"}.fa-colon-sign{--fa:"\e140"}.fa-headset{--fa:"\f590"}.fa-store-slash{--fa:"\e071"}.fa-road-circle-xmark{--fa:"\e566"}.fa-user-minus{--fa:"\f503"}.fa-mars-stroke-up,.fa-mars-stroke-v{--fa:"\f22a"}.fa-champagne-glasses,.fa-glass-cheers{--fa:"\f79f"}.fa-clipboard{--fa:"\f328"}.fa-house-circle-exclamation{--fa:"\e50a"}.fa-file-arrow-up,.fa-file-upload{--fa:"\f574"}.fa-wifi,.fa-wifi-3,.fa-wifi-strong{--fa:"\f1eb"}.fa-bath,.fa-bathtub{--fa:"\f2cd"}.fa-underline{--fa:"\f0cd"}.fa-user-edit,.fa-user-pen{--fa:"\f4ff"}.fa-signature{--fa:"\f5b7"}.fa-stroopwafel{--fa:"\f551"}.fa-bold{--fa:"\f032"}.fa-anchor-lock{--fa:"\e4ad"}.fa-building-ngo{--fa:"\e4d7"}.fa-manat-sign{--fa:"\e1d5"}.fa-not-equal{--fa:"\f53e"}.fa-border-style,.fa-border-top-left{--fa:"\f853"}.fa-map-location-dot,.fa-map-marked-alt{--fa:"\f5a0"}.fa-jedi{--fa:"\f669"}.fa-poll,.fa-square-poll-vertical{--fa:"\f681"}.fa-mug-hot{--fa:"\f7b6"}.fa-battery-car,.fa-car-battery{--fa:"\f5df"}.fa-gift{--fa:"\f06b"}.fa-dice-two{--fa:"\f528"}.fa-chess-queen{--fa:"\f445"}.fa-glasses{--fa:"\f530"}.fa-chess-board{--fa:"\f43c"}.fa-building-circle-check{--fa:"\e4d2"}.fa-person-chalkboard{--fa:"\e53d"}.fa-mars-stroke-h,.fa-mars-stroke-right{--fa:"\f22b"}.fa-hand-back-fist,.fa-hand-rock{--fa:"\f255"}.fa-caret-square-up,.fa-square-caret-up{--fa:"\f151"}.fa-cloud-showers-water{--fa:"\e4e4"}.fa-bar-chart,.fa-chart-bar{--fa:"\f080"}.fa-hands-bubbles,.fa-hands-wash{--fa:"\e05e"}.fa-less-than-equal{--fa:"\f537"}.fa-train{--fa:"\f238"}.fa-eye-low-vision,.fa-low-vision{--fa:"\f2a8"}.fa-crow{--fa:"\f520"}.fa-sailboat{--fa:"\e445"}.fa-window-restore{--fa:"\f2d2"}.fa-plus-square,.fa-square-plus{--fa:"\f0fe"}.fa-torii-gate{--fa:"\f6a1"}.fa-frog{--fa:"\f52e"}.fa-bucket{--fa:"\e4cf"}.fa-image{--fa:"\f03e"}.fa-microphone{--fa:"\f130"}.fa-cow{--fa:"\f6c8"}.fa-caret-up{--fa:"\f0d8"}.fa-screwdriver{--fa:"\f54a"}.fa-folder-closed{--fa:"\e185"}.fa-house-tsunami{--fa:"\e515"}.fa-square-nfi{--fa:"\e576"}.fa-arrow-up-from-ground-water{--fa:"\e4b5"}.fa-glass-martini-alt,.fa-martini-glass{--fa:"\f57b"}.fa-square-binary{--fa:"\e69b"}.fa-rotate-back,.fa-rotate-backward,.fa-rotate-left,.fa-undo-alt{--fa:"\f2ea"}.fa-columns,.fa-table-columns{--fa:"\f0db"}.fa-lemon{--fa:"\f094"}.fa-head-side-mask{--fa:"\e063"}.fa-handshake{--fa:"\f2b5"}.fa-gem{--fa:"\f3a5"}.fa-dolly,.fa-dolly-box{--fa:"\f472"}.fa-smoking{--fa:"\f48d"}.fa-compress-arrows-alt,.fa-minimize{--fa:"\f78c"}.fa-monument{--fa:"\f5a6"}.fa-snowplow{--fa:"\f7d2"}.fa-angle-double-right,.fa-angles-right{--fa:"\f101"}.fa-cannabis{--fa:"\f55f"}.fa-circle-play,.fa-play-circle{--fa:"\f144"}.fa-tablets{--fa:"\f490"}.fa-ethernet{--fa:"\f796"}.fa-eur,.fa-euro,.fa-euro-sign{--fa:"\f153"}.fa-chair{--fa:"\f6c0"}.fa-check-circle,.fa-circle-check{--fa:"\f058"}.fa-circle-stop,.fa-stop-circle{--fa:"\f28d"}.fa-compass-drafting,.fa-drafting-compass{--fa:"\f568"}.fa-plate-wheat{--fa:"\e55a"}.fa-icicles{--fa:"\f7ad"}.fa-person-shelter{--fa:"\e54f"}.fa-neuter{--fa:"\f22c"}.fa-id-badge{--fa:"\f2c1"}.fa-marker{--fa:"\f5a1"}.fa-face-laugh-beam,.fa-laugh-beam{--fa:"\f59a"}.fa-helicopter-symbol{--fa:"\e502"}.fa-universal-access{--fa:"\f29a"}.fa-chevron-circle-up,.fa-circle-chevron-up{--fa:"\f139"}.fa-lari-sign{--fa:"\e1c8"}.fa-volcano{--fa:"\f770"}.fa-person-walking-dashed-line-arrow-right{--fa:"\e553"}.fa-gbp,.fa-pound-sign,.fa-sterling-sign{--fa:"\f154"}.fa-viruses{--fa:"\e076"}.fa-square-person-confined{--fa:"\e577"}.fa-user-tie{--fa:"\f508"}.fa-arrow-down-long,.fa-long-arrow-down{--fa:"\f175"}.fa-tent-arrow-down-to-line{--fa:"\e57e"}.fa-certificate{--fa:"\f0a3"}.fa-mail-reply-all,.fa-reply-all{--fa:"\f122"}.fa-suitcase{--fa:"\f0f2"}.fa-person-skating,.fa-skating{--fa:"\f7c5"}.fa-filter-circle-dollar,.fa-funnel-dollar{--fa:"\f662"}.fa-camera-retro{--fa:"\f083"}.fa-arrow-circle-down,.fa-circle-arrow-down{--fa:"\f0ab"}.fa-arrow-right-to-file,.fa-file-import{--fa:"\f56f"}.fa-external-link-square,.fa-square-arrow-up-right{--fa:"\f14c"}.fa-box-open{--fa:"\f49e"}.fa-scroll{--fa:"\f70e"}.fa-spa{--fa:"\f5bb"}.fa-location-pin-lock{--fa:"\e51f"}.fa-pause{--fa:"\f04c"}.fa-hill-avalanche{--fa:"\e507"}.fa-temperature-0,.fa-temperature-empty,.fa-thermometer-0,.fa-thermometer-empty{--fa:"\f2cb"}.fa-bomb{--fa:"\f1e2"}.fa-registered{--fa:"\f25d"}.fa-address-card,.fa-contact-card,.fa-vcard{--fa:"\f2bb"}.fa-balance-scale-right,.fa-scale-unbalanced-flip{--fa:"\f516"}.fa-subscript{--fa:"\f12c"}.fa-diamond-turn-right,.fa-directions{--fa:"\f5eb"}.fa-burst{--fa:"\e4dc"}.fa-house-laptop,.fa-laptop-house{--fa:"\e066"}.fa-face-tired,.fa-tired{--fa:"\f5c8"}.fa-money-bills{--fa:"\e1f3"}.fa-smog{--fa:"\f75f"}.fa-crutch{--fa:"\f7f7"}.fa-cloud-arrow-up,.fa-cloud-upload,.fa-cloud-upload-alt{--fa:"\f0ee"}.fa-palette{--fa:"\f53f"}.fa-arrows-turn-right{--fa:"\e4c0"}.fa-vest{--fa:"\e085"}.fa-ferry{--fa:"\e4ea"}.fa-arrows-down-to-people{--fa:"\e4b9"}.fa-seedling,.fa-sprout{--fa:"\f4d8"}.fa-arrows-alt-h,.fa-left-right{--fa:"\f337"}.fa-boxes-packing{--fa:"\e4c7"}.fa-arrow-circle-left,.fa-circle-arrow-left{--fa:"\f0a8"}.fa-group-arrows-rotate{--fa:"\e4f6"}.fa-bowl-food{--fa:"\e4c6"}.fa-candy-cane{--fa:"\f786"}.fa-arrow-down-wide-short,.fa-sort-amount-asc,.fa-sort-amount-down{--fa:"\f160"}.fa-cloud-bolt,.fa-thunderstorm{--fa:"\f76c"}.fa-remove-format,.fa-text-slash{--fa:"\f87d"}.fa-face-smile-wink,.fa-smile-wink{--fa:"\f4da"}.fa-file-word{--fa:"\f1c2"}.fa-file-powerpoint{--fa:"\f1c4"}.fa-arrows-h,.fa-arrows-left-right{--fa:"\f07e"}.fa-house-lock{--fa:"\e510"}.fa-cloud-arrow-down,.fa-cloud-download,.fa-cloud-download-alt{--fa:"\f0ed"}.fa-children{--fa:"\e4e1"}.fa-blackboard,.fa-chalkboard{--fa:"\f51b"}.fa-user-alt-slash,.fa-user-large-slash{--fa:"\f4fa"}.fa-envelope-open{--fa:"\f2b6"}.fa-handshake-alt-slash,.fa-handshake-simple-slash{--fa:"\e05f"}.fa-mattress-pillow{--fa:"\e525"}.fa-guarani-sign{--fa:"\e19a"}.fa-arrows-rotate,.fa-refresh,.fa-sync{--fa:"\f021"}.fa-fire-extinguisher{--fa:"\f134"}.fa-cruzeiro-sign{--fa:"\e152"}.fa-greater-than-equal{--fa:"\f532"}.fa-shield-alt,.fa-shield-halved{--fa:"\f3ed"}.fa-atlas,.fa-book-atlas{--fa:"\f558"}.fa-virus{--fa:"\e074"}.fa-envelope-circle-check{--fa:"\e4e8"}.fa-layer-group{--fa:"\f5fd"}.fa-arrows-to-dot{--fa:"\e4be"}.fa-archway{--fa:"\f557"}.fa-heart-circle-check{--fa:"\e4fd"}.fa-house-chimney-crack,.fa-house-damage{--fa:"\f6f1"}.fa-file-archive,.fa-file-zipper{--fa:"\f1c6"}.fa-square{--fa:"\f0c8"}.fa-glass-martini,.fa-martini-glass-empty{--fa:"\f000"}.fa-couch{--fa:"\f4b8"}.fa-cedi-sign{--fa:"\e0df"}.fa-italic{--fa:"\f033"}.fa-table-cells-column-lock{--fa:"\e678"}.fa-church{--fa:"\f51d"}.fa-comments-dollar{--fa:"\f653"}.fa-democrat{--fa:"\f747"}.fa-z{--fa:"Z"}.fa-person-skiing,.fa-skiing{--fa:"\f7c9"}.fa-road-lock{--fa:"\e567"}.fa-a{--fa:"A"}.fa-temperature-arrow-down,.fa-temperature-down{--fa:"\e03f"}.fa-feather-alt,.fa-feather-pointed{--fa:"\f56b"}.fa-p{--fa:"P"}.fa-snowflake{--fa:"\f2dc"}.fa-newspaper{--fa:"\f1ea"}.fa-ad,.fa-rectangle-ad{--fa:"\f641"}.fa-arrow-circle-right,.fa-circle-arrow-right{--fa:"\f0a9"}.fa-filter-circle-xmark{--fa:"\e17b"}.fa-locust{--fa:"\e520"}.fa-sort,.fa-unsorted{--fa:"\f0dc"}.fa-list-1-2,.fa-list-numeric,.fa-list-ol{--fa:"\f0cb"}.fa-person-dress-burst{--fa:"\e544"}.fa-money-check-alt,.fa-money-check-dollar{--fa:"\f53d"}.fa-vector-square{--fa:"\f5cb"}.fa-bread-slice{--fa:"\f7ec"}.fa-language{--fa:"\f1ab"}.fa-face-kiss-wink-heart,.fa-kiss-wink-heart{--fa:"\f598"}.fa-filter{--fa:"\f0b0"}.fa-question{--fa:"?"}.fa-file-signature{--fa:"\f573"}.fa-arrows-alt,.fa-up-down-left-right{--fa:"\f0b2"}.fa-house-chimney-user{--fa:"\e065"}.fa-hand-holding-heart{--fa:"\f4be"}.fa-puzzle-piece{--fa:"\f12e"}.fa-money-check{--fa:"\f53c"}.fa-star-half-alt,.fa-star-half-stroke{--fa:"\f5c0"}.fa-code{--fa:"\f121"}.fa-glass-whiskey,.fa-whiskey-glass{--fa:"\f7a0"}.fa-building-circle-exclamation{--fa:"\e4d3"}.fa-magnifying-glass-chart{--fa:"\e522"}.fa-arrow-up-right-from-square,.fa-external-link{--fa:"\f08e"}.fa-cubes-stacked{--fa:"\e4e6"}.fa-krw,.fa-won,.fa-won-sign{--fa:"\f159"}.fa-virus-covid{--fa:"\e4a8"}.fa-austral-sign{--fa:"\e0a9"}.fa-f{--fa:"F"}.fa-leaf{--fa:"\f06c"}.fa-road{--fa:"\f018"}.fa-cab,.fa-taxi{--fa:"\f1ba"}.fa-person-circle-plus{--fa:"\e541"}.fa-chart-pie,.fa-pie-chart{--fa:"\f200"}.fa-bolt-lightning{--fa:"\e0b7"}.fa-sack-xmark{--fa:"\e56a"}.fa-file-excel{--fa:"\f1c3"}.fa-file-contract{--fa:"\f56c"}.fa-fish-fins{--fa:"\e4f2"}.fa-building-flag{--fa:"\e4d5"}.fa-face-grin-beam,.fa-grin-beam{--fa:"\f582"}.fa-object-ungroup{--fa:"\f248"}.fa-poop{--fa:"\f619"}.fa-location-pin,.fa-map-marker{--fa:"\f041"}.fa-kaaba{--fa:"\f66b"}.fa-toilet-paper{--fa:"\f71e"}.fa-hard-hat,.fa-hat-hard,.fa-helmet-safety{--fa:"\f807"}.fa-eject{--fa:"\f052"}.fa-arrow-alt-circle-right,.fa-circle-right{--fa:"\f35a"}.fa-plane-circle-check{--fa:"\e555"}.fa-face-rolling-eyes,.fa-meh-rolling-eyes{--fa:"\f5a5"}.fa-object-group{--fa:"\f247"}.fa-chart-line,.fa-line-chart{--fa:"\f201"}.fa-mask-ventilator{--fa:"\e524"}.fa-arrow-right{--fa:"\f061"}.fa-map-signs,.fa-signs-post{--fa:"\f277"}.fa-cash-register{--fa:"\f788"}.fa-person-circle-question{--fa:"\e542"}.fa-h{--fa:"H"}.fa-tarp{--fa:"\e57b"}.fa-screwdriver-wrench,.fa-tools{--fa:"\f7d9"}.fa-arrows-to-eye{--fa:"\e4bf"}.fa-plug-circle-bolt{--fa:"\e55b"}.fa-heart{--fa:"\f004"}.fa-mars-and-venus{--fa:"\f224"}.fa-home-user,.fa-house-user{--fa:"\e1b0"}.fa-dumpster-fire{--fa:"\f794"}.fa-house-crack{--fa:"\e3b1"}.fa-cocktail,.fa-martini-glass-citrus{--fa:"\f561"}.fa-face-surprise,.fa-surprise{--fa:"\f5c2"}.fa-bottle-water{--fa:"\e4c5"}.fa-circle-pause,.fa-pause-circle{--fa:"\f28b"}.fa-toilet-paper-slash{--fa:"\e072"}.fa-apple-alt,.fa-apple-whole{--fa:"\f5d1"}.fa-kitchen-set{--fa:"\e51a"}.fa-r{--fa:"R"}.fa-temperature-1,.fa-temperature-quarter,.fa-thermometer-1,.fa-thermometer-quarter{--fa:"\f2ca"}.fa-cube{--fa:"\f1b2"}.fa-bitcoin-sign{--fa:"\e0b4"}.fa-shield-dog{--fa:"\e573"}.fa-solar-panel{--fa:"\f5ba"}.fa-lock-open{--fa:"\f3c1"}.fa-elevator{--fa:"\e16d"}.fa-money-bill-transfer{--fa:"\e528"}.fa-money-bill-trend-up{--fa:"\e529"}.fa-house-flood-water-circle-arrow-right{--fa:"\e50f"}.fa-poll-h,.fa-square-poll-horizontal{--fa:"\f682"}.fa-circle{--fa:"\f111"}.fa-backward-fast,.fa-fast-backward{--fa:"\f049"}.fa-recycle{--fa:"\f1b8"}.fa-user-astronaut{--fa:"\f4fb"}.fa-plane-slash{--fa:"\e069"}.fa-trademark{--fa:"\f25c"}.fa-basketball,.fa-basketball-ball{--fa:"\f434"}.fa-satellite-dish{--fa:"\f7c0"}.fa-arrow-alt-circle-up,.fa-circle-up{--fa:"\f35b"}.fa-mobile-alt,.fa-mobile-screen-button{--fa:"\f3cd"}.fa-volume-high,.fa-volume-up{--fa:"\f028"}.fa-users-rays{--fa:"\e593"}.fa-wallet{--fa:"\f555"}.fa-clipboard-check{--fa:"\f46c"}.fa-file-audio{--fa:"\f1c7"}.fa-burger,.fa-hamburger{--fa:"\f805"}.fa-wrench{--fa:"\f0ad"}.fa-bugs{--fa:"\e4d0"}.fa-rupee,.fa-rupee-sign{--fa:"\f156"}.fa-file-image{--fa:"\f1c5"}.fa-circle-question,.fa-question-circle{--fa:"\f059"}.fa-plane-departure{--fa:"\f5b0"}.fa-handshake-slash{--fa:"\e060"}.fa-book-bookmark{--fa:"\e0bb"}.fa-code-branch{--fa:"\f126"}.fa-hat-cowboy{--fa:"\f8c0"}.fa-bridge{--fa:"\e4c8"}.fa-phone-alt,.fa-phone-flip{--fa:"\f879"}.fa-truck-front{--fa:"\e2b7"}.fa-cat{--fa:"\f6be"}.fa-anchor-circle-exclamation{--fa:"\e4ab"}.fa-truck-field{--fa:"\e58d"}.fa-route{--fa:"\f4d7"}.fa-clipboard-question{--fa:"\e4e3"}.fa-panorama{--fa:"\e209"}.fa-comment-medical{--fa:"\f7f5"}.fa-teeth-open{--fa:"\f62f"}.fa-file-circle-minus{--fa:"\e4ed"}.fa-tags{--fa:"\f02c"}.fa-wine-glass{--fa:"\f4e3"}.fa-fast-forward,.fa-forward-fast{--fa:"\f050"}.fa-face-meh-blank,.fa-meh-blank{--fa:"\f5a4"}.fa-parking,.fa-square-parking{--fa:"\f540"}.fa-house-signal{--fa:"\e012"}.fa-bars-progress,.fa-tasks-alt{--fa:"\f828"}.fa-faucet-drip{--fa:"\e006"}.fa-cart-flatbed,.fa-dolly-flatbed{--fa:"\f474"}.fa-ban-smoking,.fa-smoking-ban{--fa:"\f54d"}.fa-terminal{--fa:"\f120"}.fa-mobile-button{--fa:"\f10b"}.fa-house-medical-flag{--fa:"\e514"}.fa-basket-shopping,.fa-shopping-basket{--fa:"\f291"}.fa-tape{--fa:"\f4db"}.fa-bus-alt,.fa-bus-simple{--fa:"\f55e"}.fa-eye{--fa:"\f06e"}.fa-face-sad-cry,.fa-sad-cry{--fa:"\f5b3"}.fa-audio-description{--fa:"\f29e"}.fa-person-military-to-person{--fa:"\e54c"}.fa-file-shield{--fa:"\e4f0"}.fa-user-slash{--fa:"\f506"}.fa-pen{--fa:"\f304"}.fa-tower-observation{--fa:"\e586"}.fa-file-code{--fa:"\f1c9"}.fa-signal,.fa-signal-5,.fa-signal-perfect{--fa:"\f012"}.fa-bus{--fa:"\f207"}.fa-heart-circle-xmark{--fa:"\e501"}.fa-home-lg,.fa-house-chimney{--fa:"\e3af"}.fa-window-maximize{--fa:"\f2d0"}.fa-face-frown,.fa-frown{--fa:"\f119"}.fa-prescription{--fa:"\f5b1"}.fa-shop,.fa-store-alt{--fa:"\f54f"}.fa-floppy-disk,.fa-save{--fa:"\f0c7"}.fa-vihara{--fa:"\f6a7"}.fa-balance-scale-left,.fa-scale-unbalanced{--fa:"\f515"}.fa-sort-asc,.fa-sort-up{--fa:"\f0de"}.fa-comment-dots,.fa-commenting{--fa:"\f4ad"}.fa-plant-wilt{--fa:"\e5aa"}.fa-diamond{--fa:"\f219"}.fa-face-grin-squint,.fa-grin-squint{--fa:"\f585"}.fa-hand-holding-dollar,.fa-hand-holding-usd{--fa:"\f4c0"}.fa-chart-diagram{--fa:"\e695"}.fa-bacterium{--fa:"\e05a"}.fa-hand-pointer{--fa:"\f25a"}.fa-drum-steelpan{--fa:"\f56a"}.fa-hand-scissors{--fa:"\f257"}.fa-hands-praying,.fa-praying-hands{--fa:"\f684"}.fa-arrow-right-rotate,.fa-arrow-rotate-forward,.fa-arrow-rotate-right,.fa-redo{--fa:"\f01e"}.fa-biohazard{--fa:"\f780"}.fa-location,.fa-location-crosshairs{--fa:"\f601"}.fa-mars-double{--fa:"\f227"}.fa-child-dress{--fa:"\e59c"}.fa-users-between-lines{--fa:"\e591"}.fa-lungs-virus{--fa:"\e067"}.fa-face-grin-tears,.fa-grin-tears{--fa:"\f588"}.fa-phone{--fa:"\f095"}.fa-calendar-times,.fa-calendar-xmark{--fa:"\f273"}.fa-child-reaching{--fa:"\e59d"}.fa-head-side-virus{--fa:"\e064"}.fa-user-cog,.fa-user-gear{--fa:"\f4fe"}.fa-arrow-up-1-9,.fa-sort-numeric-up{--fa:"\f163"}.fa-door-closed{--fa:"\f52a"}.fa-shield-virus{--fa:"\e06c"}.fa-dice-six{--fa:"\f526"}.fa-mosquito-net{--fa:"\e52c"}.fa-file-fragment{--fa:"\e697"}.fa-bridge-water{--fa:"\e4ce"}.fa-person-booth{--fa:"\f756"}.fa-text-width{--fa:"\f035"}.fa-hat-wizard{--fa:"\f6e8"}.fa-pen-fancy{--fa:"\f5ac"}.fa-digging,.fa-person-digging{--fa:"\f85e"}.fa-trash{--fa:"\f1f8"}.fa-gauge-simple,.fa-gauge-simple-med,.fa-tachometer-average{--fa:"\f629"}.fa-book-medical{--fa:"\f7e6"}.fa-poo{--fa:"\f2fe"}.fa-quote-right,.fa-quote-right-alt{--fa:"\f10e"}.fa-shirt,.fa-t-shirt,.fa-tshirt{--fa:"\f553"}.fa-cubes{--fa:"\f1b3"}.fa-divide{--fa:"\f529"}.fa-tenge,.fa-tenge-sign{--fa:"\f7d7"}.fa-headphones{--fa:"\f025"}.fa-hands-holding{--fa:"\f4c2"}.fa-hands-clapping{--fa:"\e1a8"}.fa-republican{--fa:"\f75e"}.fa-arrow-left{--fa:"\f060"}.fa-person-circle-xmark{--fa:"\e543"}.fa-ruler{--fa:"\f545"}.fa-align-left{--fa:"\f036"}.fa-dice-d6{--fa:"\f6d1"}.fa-restroom{--fa:"\f7bd"}.fa-j{--fa:"J"}.fa-users-viewfinder{--fa:"\e595"}.fa-file-video{--fa:"\f1c8"}.fa-external-link-alt,.fa-up-right-from-square{--fa:"\f35d"}.fa-table-cells,.fa-th{--fa:"\f00a"}.fa-file-pdf{--fa:"\f1c1"}.fa-bible,.fa-book-bible{--fa:"\f647"}.fa-o{--fa:"O"}.fa-medkit,.fa-suitcase-medical{--fa:"\f0fa"}.fa-user-secret{--fa:"\f21b"}.fa-otter{--fa:"\f700"}.fa-female,.fa-person-dress{--fa:"\f182"}.fa-comment-dollar{--fa:"\f651"}.fa-briefcase-clock,.fa-business-time{--fa:"\f64a"}.fa-table-cells-large,.fa-th-large{--fa:"\f009"}.fa-book-tanakh,.fa-tanakh{--fa:"\f827"}.fa-phone-volume,.fa-volume-control-phone{--fa:"\f2a0"}.fa-hat-cowboy-side{--fa:"\f8c1"}.fa-clipboard-user{--fa:"\f7f3"}.fa-child{--fa:"\f1ae"}.fa-lira-sign{--fa:"\f195"}.fa-satellite{--fa:"\f7bf"}.fa-plane-lock{--fa:"\e558"}.fa-tag{--fa:"\f02b"}.fa-comment{--fa:"\f075"}.fa-birthday-cake,.fa-cake,.fa-cake-candles{--fa:"\f1fd"}.fa-envelope{--fa:"\f0e0"}.fa-angle-double-up,.fa-angles-up{--fa:"\f102"}.fa-paperclip{--fa:"\f0c6"}.fa-arrow-right-to-city{--fa:"\e4b3"}.fa-ribbon{--fa:"\f4d6"}.fa-lungs{--fa:"\f604"}.fa-arrow-up-9-1,.fa-sort-numeric-up-alt{--fa:"\f887"}.fa-litecoin-sign{--fa:"\e1d3"}.fa-border-none{--fa:"\f850"}.fa-circle-nodes{--fa:"\e4e2"}.fa-parachute-box{--fa:"\f4cd"}.fa-indent{--fa:"\f03c"}.fa-truck-field-un{--fa:"\e58e"}.fa-hourglass,.fa-hourglass-empty{--fa:"\f254"}.fa-mountain{--fa:"\f6fc"}.fa-user-doctor,.fa-user-md{--fa:"\f0f0"}.fa-circle-info,.fa-info-circle{--fa:"\f05a"}.fa-cloud-meatball{--fa:"\f73b"}.fa-camera,.fa-camera-alt{--fa:"\f030"}.fa-square-virus{--fa:"\e578"}.fa-meteor{--fa:"\f753"}.fa-car-on{--fa:"\e4dd"}.fa-sleigh{--fa:"\f7cc"}.fa-arrow-down-1-9,.fa-sort-numeric-asc,.fa-sort-numeric-down{--fa:"\f162"}.fa-hand-holding-droplet,.fa-hand-holding-water{--fa:"\f4c1"}.fa-water{--fa:"\f773"}.fa-calendar-check{--fa:"\f274"}.fa-braille{--fa:"\f2a1"}.fa-prescription-bottle-alt,.fa-prescription-bottle-medical{--fa:"\f486"}.fa-landmark{--fa:"\f66f"}.fa-truck{--fa:"\f0d1"}.fa-crosshairs{--fa:"\f05b"}.fa-person-cane{--fa:"\e53c"}.fa-tent{--fa:"\e57d"}.fa-vest-patches{--fa:"\e086"}.fa-check-double{--fa:"\f560"}.fa-arrow-down-a-z,.fa-sort-alpha-asc,.fa-sort-alpha-down{--fa:"\f15d"}.fa-money-bill-wheat{--fa:"\e52a"}.fa-cookie{--fa:"\f563"}.fa-arrow-left-rotate,.fa-arrow-rotate-back,.fa-arrow-rotate-backward,.fa-arrow-rotate-left,.fa-undo{--fa:"\f0e2"}.fa-hard-drive,.fa-hdd{--fa:"\f0a0"}.fa-face-grin-squint-tears,.fa-grin-squint-tears{--fa:"\f586"}.fa-dumbbell{--fa:"\f44b"}.fa-list-alt,.fa-rectangle-list{--fa:"\f022"}.fa-tarp-droplet{--fa:"\e57c"}.fa-house-medical-circle-check{--fa:"\e511"}.fa-person-skiing-nordic,.fa-skiing-nordic{--fa:"\f7ca"}.fa-calendar-plus{--fa:"\f271"}.fa-plane-arrival{--fa:"\f5af"}.fa-arrow-alt-circle-left,.fa-circle-left{--fa:"\f359"}.fa-subway,.fa-train-subway{--fa:"\f239"}.fa-chart-gantt{--fa:"\e0e4"}.fa-indian-rupee,.fa-indian-rupee-sign,.fa-inr{--fa:"\e1bc"}.fa-crop-alt,.fa-crop-simple{--fa:"\f565"}.fa-money-bill-1,.fa-money-bill-alt{--fa:"\f3d1"}.fa-left-long,.fa-long-arrow-alt-left{--fa:"\f30a"}.fa-dna{--fa:"\f471"}.fa-virus-slash{--fa:"\e075"}.fa-minus,.fa-subtract{--fa:"\f068"}.fa-chess{--fa:"\f439"}.fa-arrow-left-long,.fa-long-arrow-left{--fa:"\f177"}.fa-plug-circle-check{--fa:"\e55c"}.fa-street-view{--fa:"\f21d"}.fa-franc-sign{--fa:"\e18f"}.fa-volume-off{--fa:"\f026"}.fa-american-sign-language-interpreting,.fa-asl-interpreting,.fa-hands-american-sign-language-interpreting,.fa-hands-asl-interpreting{--fa:"\f2a3"}.fa-cog,.fa-gear{--fa:"\f013"}.fa-droplet-slash,.fa-tint-slash{--fa:"\f5c7"}.fa-mosque{--fa:"\f678"}.fa-mosquito{--fa:"\e52b"}.fa-star-of-david{--fa:"\f69a"}.fa-person-military-rifle{--fa:"\e54b"}.fa-cart-shopping,.fa-shopping-cart{--fa:"\f07a"}.fa-vials{--fa:"\f493"}.fa-plug-circle-plus{--fa:"\e55f"}.fa-place-of-worship{--fa:"\f67f"}.fa-grip-vertical{--fa:"\f58e"}.fa-hexagon-nodes{--fa:"\e699"}.fa-arrow-turn-up,.fa-level-up{--fa:"\f148"}.fa-u{--fa:"U"}.fa-square-root-alt,.fa-square-root-variable{--fa:"\f698"}.fa-clock,.fa-clock-four{--fa:"\f017"}.fa-backward-step,.fa-step-backward{--fa:"\f048"}.fa-pallet{--fa:"\f482"}.fa-faucet{--fa:"\e005"}.fa-baseball-bat-ball{--fa:"\f432"}.fa-s{--fa:"S"}.fa-timeline{--fa:"\e29c"}.fa-keyboard{--fa:"\f11c"}.fa-caret-down{--fa:"\f0d7"}.fa-clinic-medical,.fa-house-chimney-medical{--fa:"\f7f2"}.fa-temperature-3,.fa-temperature-three-quarters,.fa-thermometer-3,.fa-thermometer-three-quarters{--fa:"\f2c8"}.fa-mobile-android-alt,.fa-mobile-screen{--fa:"\f3cf"}.fa-plane-up{--fa:"\e22d"}.fa-piggy-bank{--fa:"\f4d3"}.fa-battery-3,.fa-battery-half{--fa:"\f242"}.fa-mountain-city{--fa:"\e52e"}.fa-coins{--fa:"\f51e"}.fa-khanda{--fa:"\f66d"}.fa-sliders,.fa-sliders-h{--fa:"\f1de"}.fa-folder-tree{--fa:"\f802"}.fa-network-wired{--fa:"\f6ff"}.fa-map-pin{--fa:"\f276"}.fa-hamsa{--fa:"\f665"}.fa-cent-sign{--fa:"\e3f5"}.fa-flask{--fa:"\f0c3"}.fa-person-pregnant{--fa:"\e31e"}.fa-wand-sparkles{--fa:"\f72b"}.fa-ellipsis-v,.fa-ellipsis-vertical{--fa:"\f142"}.fa-ticket{--fa:"\f145"}.fa-power-off{--fa:"\f011"}.fa-long-arrow-alt-right,.fa-right-long{--fa:"\f30b"}.fa-flag-usa{--fa:"\f74d"}.fa-laptop-file{--fa:"\e51d"}.fa-teletype,.fa-tty{--fa:"\f1e4"}.fa-diagram-next{--fa:"\e476"}.fa-person-rifle{--fa:"\e54e"}.fa-house-medical-circle-exclamation{--fa:"\e512"}.fa-closed-captioning{--fa:"\f20a"}.fa-hiking,.fa-person-hiking{--fa:"\f6ec"}.fa-venus-double{--fa:"\f226"}.fa-images{--fa:"\f302"}.fa-calculator{--fa:"\f1ec"}.fa-people-pulling{--fa:"\e535"}.fa-n{--fa:"N"}.fa-cable-car,.fa-tram{--fa:"\f7da"}.fa-cloud-rain{--fa:"\f73d"}.fa-building-circle-xmark{--fa:"\e4d4"}.fa-ship{--fa:"\f21a"}.fa-arrows-down-to-line{--fa:"\e4b8"}.fa-download{--fa:"\f019"}.fa-face-grin,.fa-grin{--fa:"\f580"}.fa-backspace,.fa-delete-left{--fa:"\f55a"}.fa-eye-dropper,.fa-eye-dropper-empty,.fa-eyedropper{--fa:"\f1fb"}.fa-file-circle-check{--fa:"\e5a0"}.fa-forward{--fa:"\f04e"}.fa-mobile,.fa-mobile-android,.fa-mobile-phone{--fa:"\f3ce"}.fa-face-meh,.fa-meh{--fa:"\f11a"}.fa-align-center{--fa:"\f037"}.fa-book-dead,.fa-book-skull{--fa:"\f6b7"}.fa-drivers-license,.fa-id-card{--fa:"\f2c2"}.fa-dedent,.fa-outdent{--fa:"\f03b"}.fa-heart-circle-exclamation{--fa:"\e4fe"}.fa-home,.fa-home-alt,.fa-home-lg-alt,.fa-house{--fa:"\f015"}.fa-calendar-week{--fa:"\f784"}.fa-laptop-medical{--fa:"\f812"}.fa-b{--fa:"B"}.fa-file-medical{--fa:"\f477"}.fa-dice-one{--fa:"\f525"}.fa-kiwi-bird{--fa:"\f535"}.fa-arrow-right-arrow-left,.fa-exchange{--fa:"\f0ec"}.fa-redo-alt,.fa-rotate-forward,.fa-rotate-right{--fa:"\f2f9"}.fa-cutlery,.fa-utensils{--fa:"\f2e7"}.fa-arrow-up-wide-short,.fa-sort-amount-up{--fa:"\f161"}.fa-mill-sign{--fa:"\e1ed"}.fa-bowl-rice{--fa:"\e2eb"}.fa-skull{--fa:"\f54c"}.fa-broadcast-tower,.fa-tower-broadcast{--fa:"\f519"}.fa-truck-pickup{--fa:"\f63c"}.fa-long-arrow-alt-up,.fa-up-long{--fa:"\f30c"}.fa-stop{--fa:"\f04d"}.fa-code-merge{--fa:"\f387"}.fa-upload{--fa:"\f093"}.fa-hurricane{--fa:"\f751"}.fa-mound{--fa:"\e52d"}.fa-toilet-portable{--fa:"\e583"}.fa-compact-disc{--fa:"\f51f"}.fa-file-arrow-down,.fa-file-download{--fa:"\f56d"}.fa-caravan{--fa:"\f8ff"}.fa-shield-cat{--fa:"\e572"}.fa-bolt,.fa-zap{--fa:"\f0e7"}.fa-glass-water{--fa:"\e4f4"}.fa-oil-well{--fa:"\e532"}.fa-vault{--fa:"\e2c5"}.fa-mars{--fa:"\f222"}.fa-toilet{--fa:"\f7d8"}.fa-plane-circle-xmark{--fa:"\e557"}.fa-cny,.fa-jpy,.fa-rmb,.fa-yen,.fa-yen-sign{--fa:"\f157"}.fa-rouble,.fa-rub,.fa-ruble,.fa-ruble-sign{--fa:"\f158"}.fa-sun{--fa:"\f185"}.fa-guitar{--fa:"\f7a6"}.fa-face-laugh-wink,.fa-laugh-wink{--fa:"\f59c"}.fa-horse-head{--fa:"\f7ab"}.fa-bore-hole{--fa:"\e4c3"}.fa-industry{--fa:"\f275"}.fa-arrow-alt-circle-down,.fa-circle-down{--fa:"\f358"}.fa-arrows-turn-to-dots{--fa:"\e4c1"}.fa-florin-sign{--fa:"\e184"}.fa-arrow-down-short-wide,.fa-sort-amount-desc,.fa-sort-amount-down-alt{--fa:"\f884"}.fa-less-than{--fa:"<"}.fa-angle-down{--fa:"\f107"}.fa-car-tunnel{--fa:"\e4de"}.fa-head-side-cough{--fa:"\e061"}.fa-grip-lines{--fa:"\f7a4"}.fa-thumbs-down{--fa:"\f165"}.fa-user-lock{--fa:"\f502"}.fa-arrow-right-long,.fa-long-arrow-right{--fa:"\f178"}.fa-anchor-circle-xmark{--fa:"\e4ac"}.fa-ellipsis,.fa-ellipsis-h{--fa:"\f141"}.fa-chess-pawn{--fa:"\f443"}.fa-first-aid,.fa-kit-medical{--fa:"\f479"}.fa-person-through-window{--fa:"\e5a9"}.fa-toolbox{--fa:"\f552"}.fa-hands-holding-circle{--fa:"\e4fb"}.fa-bug{--fa:"\f188"}.fa-credit-card,.fa-credit-card-alt{--fa:"\f09d"}.fa-automobile,.fa-car{--fa:"\f1b9"}.fa-hand-holding-hand{--fa:"\e4f7"}.fa-book-open-reader,.fa-book-reader{--fa:"\f5da"}.fa-mountain-sun{--fa:"\e52f"}.fa-arrows-left-right-to-line{--fa:"\e4ba"}.fa-dice-d20{--fa:"\f6cf"}.fa-truck-droplet{--fa:"\e58c"}.fa-file-circle-xmark{--fa:"\e5a1"}.fa-temperature-arrow-up,.fa-temperature-up{--fa:"\e040"}.fa-medal{--fa:"\f5a2"}.fa-bed{--fa:"\f236"}.fa-h-square,.fa-square-h{--fa:"\f0fd"}.fa-podcast{--fa:"\f2ce"}.fa-temperature-4,.fa-temperature-full,.fa-thermometer-4,.fa-thermometer-full{--fa:"\f2c7"}.fa-bell{--fa:"\f0f3"}.fa-superscript{--fa:"\f12b"}.fa-plug-circle-xmark{--fa:"\e560"}.fa-star-of-life{--fa:"\f621"}.fa-phone-slash{--fa:"\f3dd"}.fa-paint-roller{--fa:"\f5aa"}.fa-hands-helping,.fa-handshake-angle{--fa:"\f4c4"}.fa-location-dot,.fa-map-marker-alt{--fa:"\f3c5"}.fa-file{--fa:"\f15b"}.fa-greater-than{--fa:">"}.fa-person-swimming,.fa-swimmer{--fa:"\f5c4"}.fa-arrow-down{--fa:"\f063"}.fa-droplet,.fa-tint{--fa:"\f043"}.fa-eraser{--fa:"\f12d"}.fa-earth,.fa-earth-america,.fa-earth-americas,.fa-globe-americas{--fa:"\f57d"}.fa-person-burst{--fa:"\e53b"}.fa-dove{--fa:"\f4ba"}.fa-battery-0,.fa-battery-empty{--fa:"\f244"}.fa-socks{--fa:"\f696"}.fa-inbox{--fa:"\f01c"}.fa-section{--fa:"\e447"}.fa-gauge-high,.fa-tachometer-alt,.fa-tachometer-alt-fast{--fa:"\f625"}.fa-envelope-open-text{--fa:"\f658"}.fa-hospital,.fa-hospital-alt,.fa-hospital-wide{--fa:"\f0f8"}.fa-wine-bottle{--fa:"\f72f"}.fa-chess-rook{--fa:"\f447"}.fa-bars-staggered,.fa-reorder,.fa-stream{--fa:"\f550"}.fa-dharmachakra{--fa:"\f655"}.fa-hotdog{--fa:"\f80f"}.fa-blind,.fa-person-walking-with-cane{--fa:"\f29d"}.fa-drum{--fa:"\f569"}.fa-ice-cream{--fa:"\f810"}.fa-heart-circle-bolt{--fa:"\e4fc"}.fa-fax{--fa:"\f1ac"}.fa-paragraph{--fa:"\f1dd"}.fa-check-to-slot,.fa-vote-yea{--fa:"\f772"}.fa-star-half{--fa:"\f089"}.fa-boxes,.fa-boxes-alt,.fa-boxes-stacked{--fa:"\f468"}.fa-chain,.fa-link{--fa:"\f0c1"}.fa-assistive-listening-systems,.fa-ear-listen{--fa:"\f2a2"}.fa-tree-city{--fa:"\e587"}.fa-play{--fa:"\f04b"}.fa-font{--fa:"\f031"}.fa-table-cells-row-lock{--fa:"\e67a"}.fa-rupiah-sign{--fa:"\e23d"}.fa-magnifying-glass,.fa-search{--fa:"\f002"}.fa-ping-pong-paddle-ball,.fa-table-tennis,.fa-table-tennis-paddle-ball{--fa:"\f45d"}.fa-diagnoses,.fa-person-dots-from-line{--fa:"\f470"}.fa-trash-can-arrow-up,.fa-trash-restore-alt{--fa:"\f82a"}.fa-naira-sign{--fa:"\e1f6"}.fa-cart-arrow-down{--fa:"\f218"}.fa-walkie-talkie{--fa:"\f8ef"}.fa-file-edit,.fa-file-pen{--fa:"\f31c"}.fa-receipt{--fa:"\f543"}.fa-pen-square,.fa-pencil-square,.fa-square-pen{--fa:"\f14b"}.fa-suitcase-rolling{--fa:"\f5c1"}.fa-person-circle-exclamation{--fa:"\e53f"}.fa-chevron-down{--fa:"\f078"}.fa-battery,.fa-battery-5,.fa-battery-full{--fa:"\f240"}.fa-skull-crossbones{--fa:"\f714"}.fa-code-compare{--fa:"\e13a"}.fa-list-dots,.fa-list-ul{--fa:"\f0ca"}.fa-school-lock{--fa:"\e56f"}.fa-tower-cell{--fa:"\e585"}.fa-down-long,.fa-long-arrow-alt-down{--fa:"\f309"}.fa-ranking-star{--fa:"\e561"}.fa-chess-king{--fa:"\f43f"}.fa-person-harassing{--fa:"\e549"}.fa-brazilian-real-sign{--fa:"\e46c"}.fa-landmark-alt,.fa-landmark-dome{--fa:"\f752"}.fa-arrow-up{--fa:"\f062"}.fa-television,.fa-tv,.fa-tv-alt{--fa:"\f26c"}.fa-shrimp{--fa:"\e448"}.fa-list-check,.fa-tasks{--fa:"\f0ae"}.fa-jug-detergent{--fa:"\e519"}.fa-circle-user,.fa-user-circle{--fa:"\f2bd"}.fa-user-shield{--fa:"\f505"}.fa-wind{--fa:"\f72e"}.fa-car-burst,.fa-car-crash{--fa:"\f5e1"}.fa-y{--fa:"Y"}.fa-person-snowboarding,.fa-snowboarding{--fa:"\f7ce"}.fa-shipping-fast,.fa-truck-fast{--fa:"\f48b"}.fa-fish{--fa:"\f578"}.fa-user-graduate{--fa:"\f501"}.fa-adjust,.fa-circle-half-stroke{--fa:"\f042"}.fa-clapperboard{--fa:"\e131"}.fa-circle-radiation,.fa-radiation-alt{--fa:"\f7ba"}.fa-baseball,.fa-baseball-ball{--fa:"\f433"}.fa-jet-fighter-up{--fa:"\e518"}.fa-diagram-project,.fa-project-diagram{--fa:"\f542"}.fa-copy{--fa:"\f0c5"}.fa-volume-mute,.fa-volume-times,.fa-volume-xmark{--fa:"\f6a9"}.fa-hand-sparkles{--fa:"\e05d"}.fa-grip,.fa-grip-horizontal{--fa:"\f58d"}.fa-share-from-square,.fa-share-square{--fa:"\f14d"}.fa-child-combatant,.fa-child-rifle{--fa:"\e4e0"}.fa-gun{--fa:"\e19b"}.fa-phone-square,.fa-square-phone{--fa:"\f098"}.fa-add,.fa-plus{--fa:"+"}.fa-expand{--fa:"\f065"}.fa-computer{--fa:"\e4e5"}.fa-close,.fa-multiply,.fa-remove,.fa-times,.fa-xmark{--fa:"\f00d"}.fa-arrows,.fa-arrows-up-down-left-right{--fa:"\f047"}.fa-chalkboard-teacher,.fa-chalkboard-user{--fa:"\f51c"}.fa-peso-sign{--fa:"\e222"}.fa-building-shield{--fa:"\e4d8"}.fa-baby{--fa:"\f77c"}.fa-users-line{--fa:"\e592"}.fa-quote-left,.fa-quote-left-alt{--fa:"\f10d"}.fa-tractor{--fa:"\f722"}.fa-trash-arrow-up,.fa-trash-restore{--fa:"\f829"}.fa-arrow-down-up-lock{--fa:"\e4b0"}.fa-lines-leaning{--fa:"\e51e"}.fa-ruler-combined{--fa:"\f546"}.fa-copyright{--fa:"\f1f9"}.fa-equals{--fa:"="}.fa-blender{--fa:"\f517"}.fa-teeth{--fa:"\f62e"}.fa-ils,.fa-shekel,.fa-shekel-sign,.fa-sheqel,.fa-sheqel-sign{--fa:"\f20b"}.fa-map{--fa:"\f279"}.fa-rocket{--fa:"\f135"}.fa-photo-film,.fa-photo-video{--fa:"\f87c"}.fa-folder-minus{--fa:"\f65d"}.fa-hexagon-nodes-bolt{--fa:"\e69a"}.fa-store{--fa:"\f54e"}.fa-arrow-trend-up{--fa:"\e098"}.fa-plug-circle-minus{--fa:"\e55e"}.fa-sign,.fa-sign-hanging{--fa:"\f4d9"}.fa-bezier-curve{--fa:"\f55b"}.fa-bell-slash{--fa:"\f1f6"}.fa-tablet,.fa-tablet-android{--fa:"\f3fb"}.fa-school-flag{--fa:"\e56e"}.fa-fill{--fa:"\f575"}.fa-angle-up{--fa:"\f106"}.fa-drumstick-bite{--fa:"\f6d7"}.fa-holly-berry{--fa:"\f7aa"}.fa-chevron-left{--fa:"\f053"}.fa-bacteria{--fa:"\e059"}.fa-hand-lizard{--fa:"\f258"}.fa-notdef{--fa:"\e1fe"}.fa-disease{--fa:"\f7fa"}.fa-briefcase-medical{--fa:"\f469"}.fa-genderless{--fa:"\f22d"}.fa-chevron-right{--fa:"\f054"}.fa-retweet{--fa:"\f079"}.fa-car-alt,.fa-car-rear{--fa:"\f5de"}.fa-pump-soap{--fa:"\e06b"}.fa-video-slash{--fa:"\f4e2"}.fa-battery-2,.fa-battery-quarter{--fa:"\f243"}.fa-radio{--fa:"\f8d7"}.fa-baby-carriage,.fa-carriage-baby{--fa:"\f77d"}.fa-traffic-light{--fa:"\f637"}.fa-thermometer{--fa:"\f491"}.fa-vr-cardboard{--fa:"\f729"}.fa-hand-middle-finger{--fa:"\f806"}.fa-percent,.fa-percentage{--fa:"%"}.fa-truck-moving{--fa:"\f4df"}.fa-glass-water-droplet{--fa:"\e4f5"}.fa-display{--fa:"\e163"}.fa-face-smile,.fa-smile{--fa:"\f118"}.fa-thumb-tack,.fa-thumbtack{--fa:"\f08d"}.fa-trophy{--fa:"\f091"}.fa-person-praying,.fa-pray{--fa:"\f683"}.fa-hammer{--fa:"\f6e3"}.fa-hand-peace{--fa:"\f25b"}.fa-rotate,.fa-sync-alt{--fa:"\f2f1"}.fa-spinner{--fa:"\f110"}.fa-robot{--fa:"\f544"}.fa-peace{--fa:"\f67c"}.fa-cogs,.fa-gears{--fa:"\f085"}.fa-warehouse{--fa:"\f494"}.fa-arrow-up-right-dots{--fa:"\e4b7"}.fa-splotch{--fa:"\f5bc"}.fa-face-grin-hearts,.fa-grin-hearts{--fa:"\f584"}.fa-dice-four{--fa:"\f524"}.fa-sim-card{--fa:"\f7c4"}.fa-transgender,.fa-transgender-alt{--fa:"\f225"}.fa-mercury{--fa:"\f223"}.fa-arrow-turn-down,.fa-level-down{--fa:"\f149"}.fa-person-falling-burst{--fa:"\e547"}.fa-award{--fa:"\f559"}.fa-ticket-alt,.fa-ticket-simple{--fa:"\f3ff"}.fa-building{--fa:"\f1ad"}.fa-angle-double-left,.fa-angles-left{--fa:"\f100"}.fa-qrcode{--fa:"\f029"}.fa-clock-rotate-left,.fa-history{--fa:"\f1da"}.fa-face-grin-beam-sweat,.fa-grin-beam-sweat{--fa:"\f583"}.fa-arrow-right-from-file,.fa-file-export{--fa:"\f56e"}.fa-shield,.fa-shield-blank{--fa:"\f132"}.fa-arrow-up-short-wide,.fa-sort-amount-up-alt{--fa:"\f885"}.fa-comment-nodes{--fa:"\e696"}.fa-house-medical{--fa:"\e3b2"}.fa-golf-ball,.fa-golf-ball-tee{--fa:"\f450"}.fa-chevron-circle-left,.fa-circle-chevron-left{--fa:"\f137"}.fa-house-chimney-window{--fa:"\e00d"}.fa-pen-nib{--fa:"\f5ad"}.fa-tent-arrow-turn-left{--fa:"\e580"}.fa-tents{--fa:"\e582"}.fa-magic,.fa-wand-magic{--fa:"\f0d0"}.fa-dog{--fa:"\f6d3"}.fa-carrot{--fa:"\f787"}.fa-moon{--fa:"\f186"}.fa-wine-glass-alt,.fa-wine-glass-empty{--fa:"\f5ce"}.fa-cheese{--fa:"\f7ef"}.fa-yin-yang{--fa:"\f6ad"}.fa-music{--fa:"\f001"}.fa-code-commit{--fa:"\f386"}.fa-temperature-low{--fa:"\f76b"}.fa-biking,.fa-person-biking{--fa:"\f84a"}.fa-broom{--fa:"\f51a"}.fa-shield-heart{--fa:"\e574"}.fa-gopuram{--fa:"\f664"}.fa-earth-oceania,.fa-globe-oceania{--fa:"\e47b"}.fa-square-xmark,.fa-times-square,.fa-xmark-square{--fa:"\f2d3"}.fa-hashtag{--fa:"#"}.fa-expand-alt,.fa-up-right-and-down-left-from-center{--fa:"\f424"}.fa-oil-can{--fa:"\f613"}.fa-t{--fa:"T"}.fa-hippo{--fa:"\f6ed"}.fa-chart-column{--fa:"\e0e3"}.fa-infinity{--fa:"\f534"}.fa-vial-circle-check{--fa:"\e596"}.fa-person-arrow-down-to-line{--fa:"\e538"}.fa-voicemail{--fa:"\f897"}.fa-fan{--fa:"\f863"}.fa-person-walking-luggage{--fa:"\e554"}.fa-arrows-alt-v,.fa-up-down{--fa:"\f338"}.fa-cloud-moon-rain{--fa:"\f73c"}.fa-calendar{--fa:"\f133"}.fa-trailer{--fa:"\e041"}.fa-bahai,.fa-haykal{--fa:"\f666"}.fa-sd-card{--fa:"\f7c2"}.fa-dragon{--fa:"\f6d5"}.fa-shoe-prints{--fa:"\f54b"}.fa-circle-plus,.fa-plus-circle{--fa:"\f055"}.fa-face-grin-tongue-wink,.fa-grin-tongue-wink{--fa:"\f58b"}.fa-hand-holding{--fa:"\f4bd"}.fa-plug-circle-exclamation{--fa:"\e55d"}.fa-chain-broken,.fa-chain-slash,.fa-link-slash,.fa-unlink{--fa:"\f127"}.fa-clone{--fa:"\f24d"}.fa-person-walking-arrow-loop-left{--fa:"\e551"}.fa-arrow-up-z-a,.fa-sort-alpha-up-alt{--fa:"\f882"}.fa-fire-alt,.fa-fire-flame-curved{--fa:"\f7e4"}.fa-tornado{--fa:"\f76f"}.fa-file-circle-plus{--fa:"\e494"}.fa-book-quran,.fa-quran{--fa:"\f687"}.fa-anchor{--fa:"\f13d"}.fa-border-all{--fa:"\f84c"}.fa-angry,.fa-face-angry{--fa:"\f556"}.fa-cookie-bite{--fa:"\f564"}.fa-arrow-trend-down{--fa:"\e097"}.fa-feed,.fa-rss{--fa:"\f09e"}.fa-draw-polygon{--fa:"\f5ee"}.fa-balance-scale,.fa-scale-balanced{--fa:"\f24e"}.fa-gauge-simple-high,.fa-tachometer,.fa-tachometer-fast{--fa:"\f62a"}.fa-shower{--fa:"\f2cc"}.fa-desktop,.fa-desktop-alt{--fa:"\f390"}.fa-m{--fa:"M"}.fa-table-list,.fa-th-list{--fa:"\f00b"}.fa-comment-sms,.fa-sms{--fa:"\f7cd"}.fa-book{--fa:"\f02d"}.fa-user-plus{--fa:"\f234"}.fa-check{--fa:"\f00c"}.fa-battery-4,.fa-battery-three-quarters{--fa:"\f241"}.fa-house-circle-check{--fa:"\e509"}.fa-angle-left{--fa:"\f104"}.fa-diagram-successor{--fa:"\e47a"}.fa-truck-arrow-right{--fa:"\e58b"}.fa-arrows-split-up-and-left{--fa:"\e4bc"}.fa-fist-raised,.fa-hand-fist{--fa:"\f6de"}.fa-cloud-moon{--fa:"\f6c3"}.fa-briefcase{--fa:"\f0b1"}.fa-person-falling{--fa:"\e546"}.fa-image-portrait,.fa-portrait{--fa:"\f3e0"}.fa-user-tag{--fa:"\f507"}.fa-rug{--fa:"\e569"}.fa-earth-europe,.fa-globe-europe{--fa:"\f7a2"}.fa-cart-flatbed-suitcase,.fa-luggage-cart{--fa:"\f59d"}.fa-rectangle-times,.fa-rectangle-xmark,.fa-times-rectangle,.fa-window-close{--fa:"\f410"}.fa-baht-sign{--fa:"\e0ac"}.fa-book-open{--fa:"\f518"}.fa-book-journal-whills,.fa-journal-whills{--fa:"\f66a"}.fa-handcuffs{--fa:"\e4f8"}.fa-exclamation-triangle,.fa-triangle-exclamation,.fa-warning{--fa:"\f071"}.fa-database{--fa:"\f1c0"}.fa-mail-forward,.fa-share{--fa:"\f064"}.fa-bottle-droplet{--fa:"\e4c4"}.fa-mask-face{--fa:"\e1d7"}.fa-hill-rockslide{--fa:"\e508"}.fa-exchange-alt,.fa-right-left{--fa:"\f362"}.fa-paper-plane{--fa:"\f1d8"}.fa-road-circle-exclamation{--fa:"\e565"}.fa-dungeon{--fa:"\f6d9"}.fa-align-right{--fa:"\f038"}.fa-money-bill-1-wave,.fa-money-bill-wave-alt{--fa:"\f53b"}.fa-life-ring{--fa:"\f1cd"}.fa-hands,.fa-sign-language,.fa-signing{--fa:"\f2a7"}.fa-calendar-day{--fa:"\f783"}.fa-ladder-water,.fa-swimming-pool,.fa-water-ladder{--fa:"\f5c5"}.fa-arrows-up-down,.fa-arrows-v{--fa:"\f07d"}.fa-face-grimace,.fa-grimace{--fa:"\f57f"}.fa-wheelchair-alt,.fa-wheelchair-move{--fa:"\e2ce"}.fa-level-down-alt,.fa-turn-down{--fa:"\f3be"}.fa-person-walking-arrow-right{--fa:"\e552"}.fa-envelope-square,.fa-square-envelope{--fa:"\f199"}.fa-dice{--fa:"\f522"}.fa-bowling-ball{--fa:"\f436"}.fa-brain{--fa:"\f5dc"}.fa-band-aid,.fa-bandage{--fa:"\f462"}.fa-calendar-minus{--fa:"\f272"}.fa-circle-xmark,.fa-times-circle,.fa-xmark-circle{--fa:"\f057"}.fa-gifts{--fa:"\f79c"}.fa-hotel{--fa:"\f594"}.fa-earth-asia,.fa-globe-asia{--fa:"\f57e"}.fa-id-card-alt,.fa-id-card-clip{--fa:"\f47f"}.fa-magnifying-glass-plus,.fa-search-plus{--fa:"\f00e"}.fa-thumbs-up{--fa:"\f164"}.fa-user-clock{--fa:"\f4fd"}.fa-allergies,.fa-hand-dots{--fa:"\f461"}.fa-file-invoice{--fa:"\f570"}.fa-window-minimize{--fa:"\f2d1"}.fa-coffee,.fa-mug-saucer{--fa:"\f0f4"}.fa-brush{--fa:"\f55d"}.fa-file-half-dashed{--fa:"\e698"}.fa-mask{--fa:"\f6fa"}.fa-magnifying-glass-minus,.fa-search-minus{--fa:"\f010"}.fa-ruler-vertical{--fa:"\f548"}.fa-user-alt,.fa-user-large{--fa:"\f406"}.fa-train-tram{--fa:"\e5b4"}.fa-user-nurse{--fa:"\f82f"}.fa-syringe{--fa:"\f48e"}.fa-cloud-sun{--fa:"\f6c4"}.fa-stopwatch-20{--fa:"\e06f"}.fa-square-full{--fa:"\f45c"}.fa-magnet{--fa:"\f076"}.fa-jar{--fa:"\e516"}.fa-note-sticky,.fa-sticky-note{--fa:"\f249"}.fa-bug-slash{--fa:"\e490"}.fa-arrow-up-from-water-pump{--fa:"\e4b6"}.fa-bone{--fa:"\f5d7"}.fa-table-cells-row-unlock{--fa:"\e691"}.fa-user-injured{--fa:"\f728"}.fa-face-sad-tear,.fa-sad-tear{--fa:"\f5b4"}.fa-plane{--fa:"\f072"}.fa-tent-arrows-down{--fa:"\e581"}.fa-exclamation{--fa:"!"}.fa-arrows-spin{--fa:"\e4bb"}.fa-print{--fa:"\f02f"}.fa-try,.fa-turkish-lira,.fa-turkish-lira-sign{--fa:"\e2bb"}.fa-dollar,.fa-dollar-sign,.fa-usd{--fa:"$"}.fa-x{--fa:"X"}.fa-magnifying-glass-dollar,.fa-search-dollar{--fa:"\f688"}.fa-users-cog,.fa-users-gear{--fa:"\f509"}.fa-person-military-pointing{--fa:"\e54a"}.fa-bank,.fa-building-columns,.fa-institution,.fa-museum,.fa-university{--fa:"\f19c"}.fa-umbrella{--fa:"\f0e9"}.fa-trowel{--fa:"\e589"}.fa-d{--fa:"D"}.fa-stapler{--fa:"\e5af"}.fa-masks-theater,.fa-theater-masks{--fa:"\f630"}.fa-kip-sign{--fa:"\e1c4"}.fa-hand-point-left{--fa:"\f0a5"}.fa-handshake-alt,.fa-handshake-simple{--fa:"\f4c6"}.fa-fighter-jet,.fa-jet-fighter{--fa:"\f0fb"}.fa-share-alt-square,.fa-square-share-nodes{--fa:"\f1e1"}.fa-barcode{--fa:"\f02a"}.fa-plus-minus{--fa:"\e43c"}.fa-video,.fa-video-camera{--fa:"\f03d"}.fa-graduation-cap,.fa-mortar-board{--fa:"\f19d"}.fa-hand-holding-medical{--fa:"\e05c"}.fa-person-circle-check{--fa:"\e53e"}.fa-level-up-alt,.fa-turn-up{--fa:"\f3bf"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url("./media/fa-brands-400-Q3XCMWHQ.woff2") format("woff2"),url("./media/fa-brands-400-R2XQZCET.ttf") format("truetype")}.fa-brands,.fab{font-weight:400}.fa-monero{--fa:"\f3d0"}.fa-hooli{--fa:"\f427"}.fa-yelp{--fa:"\f1e9"}.fa-cc-visa{--fa:"\f1f0"}.fa-lastfm{--fa:"\f202"}.fa-shopware{--fa:"\f5b5"}.fa-creative-commons-nc{--fa:"\f4e8"}.fa-aws{--fa:"\f375"}.fa-redhat{--fa:"\f7bc"}.fa-yoast{--fa:"\f2b1"}.fa-cloudflare{--fa:"\e07d"}.fa-ups{--fa:"\f7e0"}.fa-pixiv{--fa:"\e640"}.fa-wpexplorer{--fa:"\f2de"}.fa-dyalog{--fa:"\f399"}.fa-bity{--fa:"\f37a"}.fa-stackpath{--fa:"\f842"}.fa-buysellads{--fa:"\f20d"}.fa-first-order{--fa:"\f2b0"}.fa-modx{--fa:"\f285"}.fa-guilded{--fa:"\e07e"}.fa-vnv{--fa:"\f40b"}.fa-js-square,.fa-square-js{--fa:"\f3b9"}.fa-microsoft{--fa:"\f3ca"}.fa-qq{--fa:"\f1d6"}.fa-orcid{--fa:"\f8d2"}.fa-java{--fa:"\f4e4"}.fa-invision{--fa:"\f7b0"}.fa-creative-commons-pd-alt{--fa:"\f4ed"}.fa-centercode{--fa:"\f380"}.fa-glide-g{--fa:"\f2a6"}.fa-drupal{--fa:"\f1a9"}.fa-jxl{--fa:"\e67b"}.fa-dart-lang{--fa:"\e693"}.fa-hire-a-helper{--fa:"\f3b0"}.fa-creative-commons-by{--fa:"\f4e7"}.fa-unity{--fa:"\e049"}.fa-whmcs{--fa:"\f40d"}.fa-rocketchat{--fa:"\f3e8"}.fa-vk{--fa:"\f189"}.fa-untappd{--fa:"\f405"}.fa-mailchimp{--fa:"\f59e"}.fa-css3-alt{--fa:"\f38b"}.fa-reddit-square,.fa-square-reddit{--fa:"\f1a2"}.fa-vimeo-v{--fa:"\f27d"}.fa-contao{--fa:"\f26d"}.fa-square-font-awesome{--fa:"\e5ad"}.fa-deskpro{--fa:"\f38f"}.fa-brave{--fa:"\e63c"}.fa-sistrix{--fa:"\f3ee"}.fa-instagram-square,.fa-square-instagram{--fa:"\e055"}.fa-battle-net{--fa:"\f835"}.fa-the-red-yeti{--fa:"\f69d"}.fa-hacker-news-square,.fa-square-hacker-news{--fa:"\f3af"}.fa-edge{--fa:"\f282"}.fa-threads{--fa:"\e618"}.fa-napster{--fa:"\f3d2"}.fa-snapchat-square,.fa-square-snapchat{--fa:"\f2ad"}.fa-google-plus-g{--fa:"\f0d5"}.fa-artstation{--fa:"\f77a"}.fa-markdown{--fa:"\f60f"}.fa-sourcetree{--fa:"\f7d3"}.fa-google-plus{--fa:"\f2b3"}.fa-diaspora{--fa:"\f791"}.fa-foursquare{--fa:"\f180"}.fa-stack-overflow{--fa:"\f16c"}.fa-github-alt{--fa:"\f113"}.fa-phoenix-squadron{--fa:"\f511"}.fa-pagelines{--fa:"\f18c"}.fa-algolia{--fa:"\f36c"}.fa-red-river{--fa:"\f3e3"}.fa-creative-commons-sa{--fa:"\f4ef"}.fa-safari{--fa:"\f267"}.fa-google{--fa:"\f1a0"}.fa-font-awesome-alt,.fa-square-font-awesome-stroke{--fa:"\f35c"}.fa-atlassian{--fa:"\f77b"}.fa-linkedin-in{--fa:"\f0e1"}.fa-digital-ocean{--fa:"\f391"}.fa-nimblr{--fa:"\f5a8"}.fa-chromecast{--fa:"\f838"}.fa-evernote{--fa:"\f839"}.fa-hacker-news{--fa:"\f1d4"}.fa-creative-commons-sampling{--fa:"\f4f0"}.fa-adversal{--fa:"\f36a"}.fa-creative-commons{--fa:"\f25e"}.fa-watchman-monitoring{--fa:"\e087"}.fa-fonticons{--fa:"\f280"}.fa-weixin{--fa:"\f1d7"}.fa-shirtsinbulk{--fa:"\f214"}.fa-codepen{--fa:"\f1cb"}.fa-git-alt{--fa:"\f841"}.fa-lyft{--fa:"\f3c3"}.fa-rev{--fa:"\f5b2"}.fa-windows{--fa:"\f17a"}.fa-wizards-of-the-coast{--fa:"\f730"}.fa-square-viadeo,.fa-viadeo-square{--fa:"\f2aa"}.fa-meetup{--fa:"\f2e0"}.fa-centos{--fa:"\f789"}.fa-adn{--fa:"\f170"}.fa-cloudsmith{--fa:"\f384"}.fa-opensuse{--fa:"\e62b"}.fa-pied-piper-alt{--fa:"\f1a8"}.fa-dribbble-square,.fa-square-dribbble{--fa:"\f397"}.fa-codiepie{--fa:"\f284"}.fa-node{--fa:"\f419"}.fa-mix{--fa:"\f3cb"}.fa-steam{--fa:"\f1b6"}.fa-cc-apple-pay{--fa:"\f416"}.fa-scribd{--fa:"\f28a"}.fa-debian{--fa:"\e60b"}.fa-openid{--fa:"\f19b"}.fa-instalod{--fa:"\e081"}.fa-files-pinwheel{--fa:"\e69f"}.fa-expeditedssl{--fa:"\f23e"}.fa-sellcast{--fa:"\f2da"}.fa-square-twitter,.fa-twitter-square{--fa:"\f081"}.fa-r-project{--fa:"\f4f7"}.fa-delicious{--fa:"\f1a5"}.fa-freebsd{--fa:"\f3a4"}.fa-vuejs{--fa:"\f41f"}.fa-accusoft{--fa:"\f369"}.fa-ioxhost{--fa:"\f208"}.fa-fonticons-fi{--fa:"\f3a2"}.fa-app-store{--fa:"\f36f"}.fa-cc-mastercard{--fa:"\f1f1"}.fa-itunes-note{--fa:"\f3b5"}.fa-golang{--fa:"\e40f"}.fa-kickstarter,.fa-square-kickstarter{--fa:"\f3bb"}.fa-grav{--fa:"\f2d6"}.fa-weibo{--fa:"\f18a"}.fa-uncharted{--fa:"\e084"}.fa-firstdraft{--fa:"\f3a1"}.fa-square-youtube,.fa-youtube-square{--fa:"\f431"}.fa-wikipedia-w{--fa:"\f266"}.fa-rendact,.fa-wpressr{--fa:"\f3e4"}.fa-angellist{--fa:"\f209"}.fa-galactic-republic{--fa:"\f50c"}.fa-nfc-directional{--fa:"\e530"}.fa-skype{--fa:"\f17e"}.fa-joget{--fa:"\f3b7"}.fa-fedora{--fa:"\f798"}.fa-stripe-s{--fa:"\f42a"}.fa-meta{--fa:"\e49b"}.fa-laravel{--fa:"\f3bd"}.fa-hotjar{--fa:"\f3b1"}.fa-bluetooth-b{--fa:"\f294"}.fa-square-letterboxd{--fa:"\e62e"}.fa-sticker-mule{--fa:"\f3f7"}.fa-creative-commons-zero{--fa:"\f4f3"}.fa-hips{--fa:"\f452"}.fa-css{--fa:"\e6a2"}.fa-behance{--fa:"\f1b4"}.fa-reddit{--fa:"\f1a1"}.fa-discord{--fa:"\f392"}.fa-chrome{--fa:"\f268"}.fa-app-store-ios{--fa:"\f370"}.fa-cc-discover{--fa:"\f1f2"}.fa-wpbeginner{--fa:"\f297"}.fa-confluence{--fa:"\f78d"}.fa-shoelace{--fa:"\e60c"}.fa-mdb{--fa:"\f8ca"}.fa-dochub{--fa:"\f394"}.fa-accessible-icon{--fa:"\f368"}.fa-ebay{--fa:"\f4f4"}.fa-amazon{--fa:"\f270"}.fa-unsplash{--fa:"\e07c"}.fa-yarn{--fa:"\f7e3"}.fa-square-steam,.fa-steam-square{--fa:"\f1b7"}.fa-500px{--fa:"\f26e"}.fa-square-vimeo,.fa-vimeo-square{--fa:"\f194"}.fa-asymmetrik{--fa:"\f372"}.fa-font-awesome,.fa-font-awesome-flag,.fa-font-awesome-logo-full{--fa:"\f2b4"}.fa-gratipay{--fa:"\f184"}.fa-apple{--fa:"\f179"}.fa-hive{--fa:"\e07f"}.fa-gitkraken{--fa:"\f3a6"}.fa-keybase{--fa:"\f4f5"}.fa-apple-pay{--fa:"\f415"}.fa-padlet{--fa:"\e4a0"}.fa-amazon-pay{--fa:"\f42c"}.fa-github-square,.fa-square-github{--fa:"\f092"}.fa-stumbleupon{--fa:"\f1a4"}.fa-fedex{--fa:"\f797"}.fa-phoenix-framework{--fa:"\f3dc"}.fa-shopify{--fa:"\e057"}.fa-neos{--fa:"\f612"}.fa-square-threads{--fa:"\e619"}.fa-hackerrank{--fa:"\f5f7"}.fa-researchgate{--fa:"\f4f8"}.fa-swift{--fa:"\f8e1"}.fa-angular{--fa:"\f420"}.fa-speakap{--fa:"\f3f3"}.fa-angrycreative{--fa:"\f36e"}.fa-y-combinator{--fa:"\f23b"}.fa-empire{--fa:"\f1d1"}.fa-envira{--fa:"\f299"}.fa-google-scholar{--fa:"\e63b"}.fa-gitlab-square,.fa-square-gitlab{--fa:"\e5ae"}.fa-studiovinari{--fa:"\f3f8"}.fa-pied-piper{--fa:"\f2ae"}.fa-wordpress{--fa:"\f19a"}.fa-product-hunt{--fa:"\f288"}.fa-firefox{--fa:"\f269"}.fa-linode{--fa:"\f2b8"}.fa-goodreads{--fa:"\f3a8"}.fa-odnoklassniki-square,.fa-square-odnoklassniki{--fa:"\f264"}.fa-jsfiddle{--fa:"\f1cc"}.fa-sith{--fa:"\f512"}.fa-themeisle{--fa:"\f2b2"}.fa-page4{--fa:"\f3d7"}.fa-hashnode{--fa:"\e499"}.fa-react{--fa:"\f41b"}.fa-cc-paypal{--fa:"\f1f4"}.fa-squarespace{--fa:"\f5be"}.fa-cc-stripe{--fa:"\f1f5"}.fa-creative-commons-share{--fa:"\f4f2"}.fa-bitcoin{--fa:"\f379"}.fa-keycdn{--fa:"\f3ba"}.fa-opera{--fa:"\f26a"}.fa-itch-io{--fa:"\f83a"}.fa-umbraco{--fa:"\f8e8"}.fa-galactic-senate{--fa:"\f50d"}.fa-ubuntu{--fa:"\f7df"}.fa-draft2digital{--fa:"\f396"}.fa-stripe{--fa:"\f429"}.fa-houzz{--fa:"\f27c"}.fa-gg{--fa:"\f260"}.fa-dhl{--fa:"\f790"}.fa-pinterest-square,.fa-square-pinterest{--fa:"\f0d3"}.fa-xing{--fa:"\f168"}.fa-blackberry{--fa:"\f37b"}.fa-creative-commons-pd{--fa:"\f4ec"}.fa-playstation{--fa:"\f3df"}.fa-quinscape{--fa:"\f459"}.fa-less{--fa:"\f41d"}.fa-blogger-b{--fa:"\f37d"}.fa-opencart{--fa:"\f23d"}.fa-vine{--fa:"\f1ca"}.fa-signal-messenger{--fa:"\e663"}.fa-paypal{--fa:"\f1ed"}.fa-gitlab{--fa:"\f296"}.fa-typo3{--fa:"\f42b"}.fa-reddit-alien{--fa:"\f281"}.fa-yahoo{--fa:"\f19e"}.fa-dailymotion{--fa:"\e052"}.fa-affiliatetheme{--fa:"\f36b"}.fa-pied-piper-pp{--fa:"\f1a7"}.fa-bootstrap{--fa:"\f836"}.fa-odnoklassniki{--fa:"\f263"}.fa-nfc-symbol{--fa:"\e531"}.fa-mintbit{--fa:"\e62f"}.fa-ethereum{--fa:"\f42e"}.fa-speaker-deck{--fa:"\f83c"}.fa-creative-commons-nc-eu{--fa:"\f4e9"}.fa-patreon{--fa:"\f3d9"}.fa-avianex{--fa:"\f374"}.fa-ello{--fa:"\f5f1"}.fa-gofore{--fa:"\f3a7"}.fa-bimobject{--fa:"\f378"}.fa-brave-reverse{--fa:"\e63d"}.fa-facebook-f{--fa:"\f39e"}.fa-google-plus-square,.fa-square-google-plus{--fa:"\f0d4"}.fa-web-awesome{--fa:"\e682"}.fa-mandalorian{--fa:"\f50f"}.fa-first-order-alt{--fa:"\f50a"}.fa-osi{--fa:"\f41a"}.fa-google-wallet{--fa:"\f1ee"}.fa-d-and-d-beyond{--fa:"\f6ca"}.fa-periscope{--fa:"\f3da"}.fa-fulcrum{--fa:"\f50b"}.fa-cloudscale{--fa:"\f383"}.fa-forumbee{--fa:"\f211"}.fa-mizuni{--fa:"\f3cc"}.fa-schlix{--fa:"\f3ea"}.fa-square-xing,.fa-xing-square{--fa:"\f169"}.fa-bandcamp{--fa:"\f2d5"}.fa-wpforms{--fa:"\f298"}.fa-cloudversify{--fa:"\f385"}.fa-usps{--fa:"\f7e1"}.fa-megaport{--fa:"\f5a3"}.fa-magento{--fa:"\f3c4"}.fa-spotify{--fa:"\f1bc"}.fa-optin-monster{--fa:"\f23c"}.fa-fly{--fa:"\f417"}.fa-square-bluesky{--fa:"\e6a3"}.fa-aviato{--fa:"\f421"}.fa-itunes{--fa:"\f3b4"}.fa-cuttlefish{--fa:"\f38c"}.fa-blogger{--fa:"\f37c"}.fa-flickr{--fa:"\f16e"}.fa-viber{--fa:"\f409"}.fa-soundcloud{--fa:"\f1be"}.fa-digg{--fa:"\f1a6"}.fa-tencent-weibo{--fa:"\f1d5"}.fa-letterboxd{--fa:"\e62d"}.fa-symfony{--fa:"\f83d"}.fa-maxcdn{--fa:"\f136"}.fa-etsy{--fa:"\f2d7"}.fa-facebook-messenger{--fa:"\f39f"}.fa-audible{--fa:"\f373"}.fa-think-peaks{--fa:"\f731"}.fa-bilibili{--fa:"\e3d9"}.fa-erlang{--fa:"\f39d"}.fa-x-twitter{--fa:"\e61b"}.fa-cotton-bureau{--fa:"\f89e"}.fa-dashcube{--fa:"\f210"}.fa-42-group,.fa-innosoft{--fa:"\e080"}.fa-stack-exchange{--fa:"\f18d"}.fa-elementor{--fa:"\f430"}.fa-pied-piper-square,.fa-square-pied-piper{--fa:"\e01e"}.fa-creative-commons-nd{--fa:"\f4eb"}.fa-palfed{--fa:"\f3d8"}.fa-superpowers{--fa:"\f2dd"}.fa-resolving{--fa:"\f3e7"}.fa-xbox{--fa:"\f412"}.fa-square-web-awesome-stroke{--fa:"\e684"}.fa-searchengin{--fa:"\f3eb"}.fa-tiktok{--fa:"\e07b"}.fa-facebook-square,.fa-square-facebook{--fa:"\f082"}.fa-renren{--fa:"\f18b"}.fa-linux{--fa:"\f17c"}.fa-glide{--fa:"\f2a5"}.fa-linkedin{--fa:"\f08c"}.fa-hubspot{--fa:"\f3b2"}.fa-deploydog{--fa:"\f38e"}.fa-twitch{--fa:"\f1e8"}.fa-flutter{--fa:"\e694"}.fa-ravelry{--fa:"\f2d9"}.fa-mixer{--fa:"\e056"}.fa-lastfm-square,.fa-square-lastfm{--fa:"\f203"}.fa-vimeo{--fa:"\f40a"}.fa-mendeley{--fa:"\f7b3"}.fa-uniregistry{--fa:"\f404"}.fa-figma{--fa:"\f799"}.fa-creative-commons-remix{--fa:"\f4ee"}.fa-cc-amazon-pay{--fa:"\f42d"}.fa-dropbox{--fa:"\f16b"}.fa-instagram{--fa:"\f16d"}.fa-cmplid{--fa:"\e360"}.fa-upwork{--fa:"\e641"}.fa-facebook{--fa:"\f09a"}.fa-gripfire{--fa:"\f3ac"}.fa-jedi-order{--fa:"\f50e"}.fa-uikit{--fa:"\f403"}.fa-fort-awesome-alt{--fa:"\f3a3"}.fa-phabricator{--fa:"\f3db"}.fa-ussunnah{--fa:"\f407"}.fa-earlybirds{--fa:"\f39a"}.fa-trade-federation{--fa:"\f513"}.fa-autoprefixer{--fa:"\f41c"}.fa-whatsapp{--fa:"\f232"}.fa-square-upwork{--fa:"\e67c"}.fa-slideshare{--fa:"\f1e7"}.fa-google-play{--fa:"\f3ab"}.fa-viadeo{--fa:"\f2a9"}.fa-line{--fa:"\f3c0"}.fa-google-drive{--fa:"\f3aa"}.fa-servicestack{--fa:"\f3ec"}.fa-simplybuilt{--fa:"\f215"}.fa-bitbucket{--fa:"\f171"}.fa-imdb{--fa:"\f2d8"}.fa-deezer{--fa:"\e077"}.fa-raspberry-pi{--fa:"\f7bb"}.fa-jira{--fa:"\f7b1"}.fa-docker{--fa:"\f395"}.fa-screenpal{--fa:"\e570"}.fa-bluetooth{--fa:"\f293"}.fa-gitter{--fa:"\f426"}.fa-d-and-d{--fa:"\f38d"}.fa-microblog{--fa:"\e01a"}.fa-cc-diners-club{--fa:"\f24c"}.fa-gg-circle{--fa:"\f261"}.fa-pied-piper-hat{--fa:"\f4e5"}.fa-kickstarter-k{--fa:"\f3bc"}.fa-yandex{--fa:"\f413"}.fa-readme{--fa:"\f4d5"}.fa-html5{--fa:"\f13b"}.fa-sellsy{--fa:"\f213"}.fa-square-web-awesome{--fa:"\e683"}.fa-sass{--fa:"\f41e"}.fa-wirsindhandwerk,.fa-wsh{--fa:"\e2d0"}.fa-buromobelexperte{--fa:"\f37f"}.fa-salesforce{--fa:"\f83b"}.fa-octopus-deploy{--fa:"\e082"}.fa-medapps{--fa:"\f3c6"}.fa-ns8{--fa:"\f3d5"}.fa-pinterest-p{--fa:"\f231"}.fa-apper{--fa:"\f371"}.fa-fort-awesome{--fa:"\f286"}.fa-waze{--fa:"\f83f"}.fa-bluesky{--fa:"\e671"}.fa-cc-jcb{--fa:"\f24b"}.fa-snapchat,.fa-snapchat-ghost{--fa:"\f2ab"}.fa-fantasy-flight-games{--fa:"\f6dc"}.fa-rust{--fa:"\e07a"}.fa-wix{--fa:"\f5cf"}.fa-behance-square,.fa-square-behance{--fa:"\f1b5"}.fa-supple{--fa:"\f3f9"}.fa-webflow{--fa:"\e65c"}.fa-rebel{--fa:"\f1d0"}.fa-css3{--fa:"\f13c"}.fa-staylinked{--fa:"\f3f5"}.fa-kaggle{--fa:"\f5fa"}.fa-space-awesome{--fa:"\e5ac"}.fa-deviantart{--fa:"\f1bd"}.fa-cpanel{--fa:"\f388"}.fa-goodreads-g{--fa:"\f3a9"}.fa-git-square,.fa-square-git{--fa:"\f1d2"}.fa-square-tumblr,.fa-tumblr-square{--fa:"\f174"}.fa-trello{--fa:"\f181"}.fa-creative-commons-nc-jp{--fa:"\f4ea"}.fa-get-pocket{--fa:"\f265"}.fa-perbyte{--fa:"\e083"}.fa-grunt{--fa:"\f3ad"}.fa-weebly{--fa:"\f5cc"}.fa-connectdevelop{--fa:"\f20e"}.fa-leanpub{--fa:"\f212"}.fa-black-tie{--fa:"\f27e"}.fa-themeco{--fa:"\f5c6"}.fa-python{--fa:"\f3e2"}.fa-android{--fa:"\f17b"}.fa-bots{--fa:"\e340"}.fa-free-code-camp{--fa:"\f2c5"}.fa-hornbill{--fa:"\f592"}.fa-js{--fa:"\f3b8"}.fa-ideal{--fa:"\e013"}.fa-git{--fa:"\f1d3"}.fa-dev{--fa:"\f6cc"}.fa-sketch{--fa:"\f7c6"}.fa-yandex-international{--fa:"\f414"}.fa-cc-amex{--fa:"\f1f3"}.fa-uber{--fa:"\f402"}.fa-github{--fa:"\f09b"}.fa-php{--fa:"\f457"}.fa-alipay{--fa:"\f642"}.fa-youtube{--fa:"\f167"}.fa-skyatlas{--fa:"\f216"}.fa-firefox-browser{--fa:"\e007"}.fa-replyd{--fa:"\f3e6"}.fa-suse{--fa:"\f7d6"}.fa-jenkins{--fa:"\f3b6"}.fa-twitter{--fa:"\f099"}.fa-rockrms{--fa:"\f3e9"}.fa-pinterest{--fa:"\f0d2"}.fa-buffer{--fa:"\f837"}.fa-npm{--fa:"\f3d4"}.fa-yammer{--fa:"\f840"}.fa-btc{--fa:"\f15a"}.fa-dribbble{--fa:"\f17d"}.fa-stumbleupon-circle{--fa:"\f1a3"}.fa-internet-explorer{--fa:"\f26b"}.fa-stubber{--fa:"\e5c7"}.fa-telegram,.fa-telegram-plane{--fa:"\f2c6"}.fa-old-republic{--fa:"\f510"}.fa-odysee{--fa:"\e5c6"}.fa-square-whatsapp,.fa-whatsapp-square{--fa:"\f40c"}.fa-node-js{--fa:"\f3d3"}.fa-edge-legacy{--fa:"\e078"}.fa-slack,.fa-slack-hash{--fa:"\f198"}.fa-medrt{--fa:"\f3c8"}.fa-usb{--fa:"\f287"}.fa-tumblr{--fa:"\f173"}.fa-vaadin{--fa:"\f408"}.fa-quora{--fa:"\f2c4"}.fa-square-x-twitter{--fa:"\e61a"}.fa-reacteurope{--fa:"\f75d"}.fa-medium,.fa-medium-m{--fa:"\f23a"}.fa-amilia{--fa:"\f36d"}.fa-mixcloud{--fa:"\f289"}.fa-flipboard{--fa:"\f44d"}.fa-viacoin{--fa:"\f237"}.fa-critical-role{--fa:"\f6c9"}.fa-sitrox{--fa:"\e44a"}.fa-discourse{--fa:"\f393"}.fa-joomla{--fa:"\f1aa"}.fa-mastodon{--fa:"\f4f6"}.fa-airbnb{--fa:"\f834"}.fa-wolf-pack-battalion{--fa:"\f514"}.fa-buy-n-large{--fa:"\f8a6"}.fa-gulp{--fa:"\f3ae"}.fa-creative-commons-sampling-plus{--fa:"\f4f1"}.fa-strava{--fa:"\f428"}.fa-ember{--fa:"\f423"}.fa-canadian-maple-leaf{--fa:"\f785"}.fa-teamspeak{--fa:"\f4f9"}.fa-pushed{--fa:"\f3e1"}.fa-wordpress-simple{--fa:"\f411"}.fa-nutritionix{--fa:"\f3d6"}.fa-wodu{--fa:"\e088"}.fa-google-pay{--fa:"\e079"}.fa-intercom{--fa:"\f7af"}.fa-zhihu{--fa:"\f63f"}.fa-korvue{--fa:"\f42f"}.fa-pix{--fa:"\e43a"}.fa-steam-symbol{--fa:"\f3f6"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url("./media/fa-regular-400-QSNYFYRT.woff2") format("woff2"),url("./media/fa-regular-400-XUOPSR7E.ttf") format("truetype")}.fa-regular,.far{font-weight:400}:host,:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url("./media/fa-solid-900-5ZUYHGA7.woff2") format("woff2"),url("./media/fa-solid-900-PJNKLK6W.ttf") format("truetype")}.fa-solid,.fas{font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url("./media/fa-brands-400-Q3XCMWHQ.woff2") format("woff2"),url("./media/fa-brands-400-R2XQZCET.ttf") format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url("./media/fa-solid-900-5ZUYHGA7.woff2") format("woff2"),url("./media/fa-solid-900-PJNKLK6W.ttf") format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url("./media/fa-regular-400-QSNYFYRT.woff2") format("woff2"),url("./media/fa-regular-400-XUOPSR7E.ttf") format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url("./media/fa-solid-900-5ZUYHGA7.woff2") format("woff2"),url("./media/fa-solid-900-PJNKLK6W.ttf") format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url("./media/fa-brands-400-Q3XCMWHQ.woff2") format("woff2"),url("./media/fa-brands-400-R2XQZCET.ttf") format("truetype")}@font-face{font-family:FontAwesome;font-display:block;src:url("./media/fa-regular-400-QSNYFYRT.woff2") format("woff2"),url("./media/fa-regular-400-XUOPSR7E.ttf") format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:FontAwesome;font-display:block;src:url("./media/fa-v4compatibility-LFEHZI6Y.woff2") format("woff2"),url("./media/fa-v4compatibility-YY67RJWG.ttf") format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a}.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0);background-color:var(--mat-ripple-color, rgba(0, 0, 0, .1))}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-app-background{background-color:var(--mat-app-background-color, transparent);color:var(--mat-app-text-color, inherit)}html{--mat-ripple-color:rgba(0, 0, 0, .1)}html{--mat-option-selected-state-label-text-color:#3f51b5;--mat-option-label-text-color:rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color:#ff4081;--mat-option-label-text-color:rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, .04)}.mat-warn{--mat-option-selected-state-label-text-color:#f44336;--mat-option-label-text-color:rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color:rgba(0, 0, 0, .04)}html{--mat-optgroup-label-text-color:rgba(0, 0, 0, .87)}.mat-primary{--mat-full-pseudo-checkbox-selected-icon-color:#3f51b5;--mat-full-pseudo-checkbox-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color:#b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color:#b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color:#3f51b5;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color:#b0b0b0}html,.mat-accent{--mat-full-pseudo-checkbox-selected-icon-color:#ff4081;--mat-full-pseudo-checkbox-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color:#b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color:#b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color:#ff4081;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color:#b0b0b0}.mat-warn{--mat-full-pseudo-checkbox-selected-icon-color:#f44336;--mat-full-pseudo-checkbox-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mat-full-pseudo-checkbox-disabled-selected-checkmark-color:#fafafa;--mat-full-pseudo-checkbox-disabled-unselected-icon-color:#b0b0b0;--mat-full-pseudo-checkbox-disabled-selected-icon-color:#b0b0b0;--mat-minimal-pseudo-checkbox-selected-checkmark-color:#f44336;--mat-minimal-pseudo-checkbox-disabled-selected-checkmark-color:#b0b0b0}html{--mat-app-background-color:#fafafa;--mat-app-text-color:rgba(0, 0, 0, .87)}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}html{--mat-option-label-text-font:Roboto, sans-serif;--mat-option-label-text-line-height:24px;--mat-option-label-text-size:16px;--mat-option-label-text-tracking:.03125em;--mat-option-label-text-weight:400}html{--mat-optgroup-label-text-font:Roboto, sans-serif;--mat-optgroup-label-text-line-height:24px;--mat-optgroup-label-text-size:16px;--mat-optgroup-label-text-tracking:.03125em;--mat-optgroup-label-text-weight:400}html{--mdc-elevated-card-container-shape:4px;--mdc-outlined-card-container-shape:4px;--mdc-outlined-card-outline-width:1px}html{--mdc-elevated-card-container-color:white;--mdc-elevated-card-container-elevation:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color:white;--mdc-outlined-card-outline-color:rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color:rgba(0, 0, 0, .54)}html{--mat-card-title-text-font:Roboto, sans-serif;--mat-card-title-text-line-height:32px;--mat-card-title-text-size:20px;--mat-card-title-text-tracking:.0125em;--mat-card-title-text-weight:500;--mat-card-subtitle-text-font:Roboto, sans-serif;--mat-card-subtitle-text-line-height:22px;--mat-card-subtitle-text-size:14px;--mat-card-subtitle-text-tracking:.0071428571em;--mat-card-subtitle-text-weight:500}html{--mdc-linear-progress-active-indicator-height:4px;--mdc-linear-progress-track-height:4px;--mdc-linear-progress-track-shape:0}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color:#3f51b5;--mdc-linear-progress-track-color:rgba(63, 81, 181, .25)}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color:#ff4081;--mdc-linear-progress-track-color:rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color:#f44336;--mdc-linear-progress-track-color:rgba(244, 67, 54, .25)}html{--mdc-plain-tooltip-container-shape:4px;--mdc-plain-tooltip-supporting-text-line-height:16px}html{--mdc-plain-tooltip-container-color:#616161;--mdc-plain-tooltip-supporting-text-color:#fff}html{--mdc-plain-tooltip-supporting-text-font:Roboto, sans-serif;--mdc-plain-tooltip-supporting-text-size:12px;--mdc-plain-tooltip-supporting-text-weight:400;--mdc-plain-tooltip-supporting-text-tracking:.0333333333em}html{--mdc-filled-text-field-active-indicator-height:1px;--mdc-filled-text-field-focus-active-indicator-height:2px;--mdc-filled-text-field-container-shape:4px;--mdc-outlined-text-field-outline-width:1px;--mdc-outlined-text-field-focus-outline-width:2px;--mdc-outlined-text-field-container-shape:4px}html{--mdc-filled-text-field-caret-color:#3f51b5;--mdc-filled-text-field-focus-active-indicator-color:#3f51b5;--mdc-filled-text-field-focus-label-text-color:rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color:whitesmoke;--mdc-filled-text-field-disabled-container-color:#fafafa;--mdc-filled-text-field-label-text-color:rgba(0, 0, 0, .6);--mdc-filled-text-field-hover-label-text-color:rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color:rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color:rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color:rgba(0, 0, 0, .6);--mdc-filled-text-field-error-hover-label-text-color:#f44336;--mdc-filled-text-field-error-focus-label-text-color:#f44336;--mdc-filled-text-field-error-label-text-color:#f44336;--mdc-filled-text-field-error-caret-color:#f44336;--mdc-filled-text-field-active-indicator-color:rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color:rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color:rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color:#f44336;--mdc-filled-text-field-error-focus-active-indicator-color:#f44336;--mdc-filled-text-field-error-hover-active-indicator-color:#f44336;--mdc-outlined-text-field-caret-color:#3f51b5;--mdc-outlined-text-field-focus-outline-color:#3f51b5;--mdc-outlined-text-field-focus-label-text-color:rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color:rgba(0, 0, 0, .6);--mdc-outlined-text-field-hover-label-text-color:rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color:rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color:rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color:rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color:#f44336;--mdc-outlined-text-field-error-focus-label-text-color:#f44336;--mdc-outlined-text-field-error-label-text-color:#f44336;--mdc-outlined-text-field-error-hover-label-text-color:#f44336;--mdc-outlined-text-field-outline-color:rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color:rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color:rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color:#f44336;--mdc-outlined-text-field-error-hover-outline-color:#f44336;--mdc-outlined-text-field-error-outline-color:#f44336;--mat-form-field-focus-select-arrow-color:rgba(63, 81, 181, .87);--mat-form-field-disabled-input-text-placeholder-color:rgba(0, 0, 0, .38);--mat-form-field-state-layer-color:rgba(0, 0, 0, .87);--mat-form-field-error-text-color:#f44336;--mat-form-field-select-option-text-color:inherit;--mat-form-field-select-disabled-option-text-color:GrayText;--mat-form-field-leading-icon-color:unset;--mat-form-field-disabled-leading-icon-color:unset;--mat-form-field-trailing-icon-color:unset;--mat-form-field-disabled-trailing-icon-color:unset;--mat-form-field-error-focus-trailing-icon-color:unset;--mat-form-field-error-hover-trailing-icon-color:unset;--mat-form-field-error-trailing-icon-color:unset;--mat-form-field-enabled-select-arrow-color:rgba(0, 0, 0, .54);--mat-form-field-disabled-select-arrow-color:rgba(0, 0, 0, .38);--mat-form-field-hover-state-layer-opacity:.04;--mat-form-field-focus-state-layer-opacity:.08}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color:#ff4081;--mdc-filled-text-field-focus-active-indicator-color:#ff4081;--mdc-filled-text-field-focus-label-text-color:rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color:#ff4081;--mdc-outlined-text-field-focus-outline-color:#ff4081;--mdc-outlined-text-field-focus-label-text-color:rgba(255, 64, 129, .87);--mat-form-field-focus-select-arrow-color:rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color:#f44336;--mdc-filled-text-field-focus-active-indicator-color:#f44336;--mdc-filled-text-field-focus-label-text-color:rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color:#f44336;--mdc-outlined-text-field-focus-outline-color:#f44336;--mdc-outlined-text-field-focus-label-text-color:rgba(244, 67, 54, .87);--mat-form-field-focus-select-arrow-color:rgba(244, 67, 54, .87)}html{--mat-form-field-container-height:56px;--mat-form-field-filled-label-display:block;--mat-form-field-container-vertical-padding:16px;--mat-form-field-filled-with-label-container-padding-top:24px;--mat-form-field-filled-with-label-container-padding-bottom:8px}html{--mdc-filled-text-field-label-text-font:Roboto, sans-serif;--mdc-filled-text-field-label-text-size:16px;--mdc-filled-text-field-label-text-tracking:.03125em;--mdc-filled-text-field-label-text-weight:400;--mdc-outlined-text-field-label-text-font:Roboto, sans-serif;--mdc-outlined-text-field-label-text-size:16px;--mdc-outlined-text-field-label-text-tracking:.03125em;--mdc-outlined-text-field-label-text-weight:400;--mat-form-field-container-text-font:Roboto, sans-serif;--mat-form-field-container-text-line-height:24px;--mat-form-field-container-text-size:16px;--mat-form-field-container-text-tracking:.03125em;--mat-form-field-container-text-weight:400;--mat-form-field-outlined-label-text-populated-size:16px;--mat-form-field-subscript-text-font:Roboto, sans-serif;--mat-form-field-subscript-text-line-height:20px;--mat-form-field-subscript-text-size:12px;--mat-form-field-subscript-text-tracking:.0333333333em;--mat-form-field-subscript-text-weight:400}html{--mat-select-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, .38);--mat-select-placeholder-text-color:rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, .38);--mat-select-focused-arrow-color:rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, .38);--mat-select-placeholder-text-color:rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, .38);--mat-select-focused-arrow-color:rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color:white;--mat-select-enabled-trigger-text-color:rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color:rgba(0, 0, 0, .38);--mat-select-placeholder-text-color:rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color:rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color:rgba(0, 0, 0, .38);--mat-select-focused-arrow-color:rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color:rgba(244, 67, 54, .87)}html{--mat-select-arrow-transform:translateY(-8px)}html{--mat-select-trigger-text-font:Roboto, sans-serif;--mat-select-trigger-text-line-height:24px;--mat-select-trigger-text-size:16px;--mat-select-trigger-text-tracking:.03125em;--mat-select-trigger-text-weight:400}html{--mat-autocomplete-container-shape:4px;--mat-autocomplete-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12)}html{--mat-autocomplete-background-color:white}html{--mdc-dialog-container-elevation-shadow:0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12);--mdc-dialog-container-shadow-color:#000;--mdc-dialog-container-shape:4px;--mat-dialog-container-max-width:80vw;--mat-dialog-container-small-max-width:80vw;--mat-dialog-container-min-width:0;--mat-dialog-actions-alignment:start;--mat-dialog-actions-padding:8px;--mat-dialog-content-padding:20px 24px;--mat-dialog-with-actions-content-padding:20px 24px;--mat-dialog-headline-padding:0 24px 9px}html{--mdc-dialog-container-color:white;--mdc-dialog-subhead-color:rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color:rgba(0, 0, 0, .6)}html{--mdc-dialog-subhead-font:Roboto, sans-serif;--mdc-dialog-subhead-line-height:32px;--mdc-dialog-subhead-size:20px;--mdc-dialog-subhead-weight:500;--mdc-dialog-subhead-tracking:.0125em;--mdc-dialog-supporting-text-font:Roboto, sans-serif;--mdc-dialog-supporting-text-line-height:24px;--mdc-dialog-supporting-text-size:16px;--mdc-dialog-supporting-text-weight:400;--mdc-dialog-supporting-text-tracking:.03125em}.mat-mdc-standard-chip{--mdc-chip-container-shape-family:rounded;--mdc-chip-container-shape-radius:16px 16px 16px 16px;--mdc-chip-with-avatar-avatar-shape-family:rounded;--mdc-chip-with-avatar-avatar-shape-radius:14px 14px 14px 14px;--mdc-chip-with-avatar-avatar-size:28px;--mdc-chip-with-icon-icon-size:18px;--mdc-chip-outline-width:0;--mdc-chip-outline-color:transparent;--mdc-chip-disabled-outline-color:transparent;--mdc-chip-focus-outline-color:transparent;--mdc-chip-hover-state-layer-opacity:.04;--mdc-chip-with-avatar-disabled-avatar-opacity:1;--mdc-chip-flat-selected-outline-width:0;--mdc-chip-selected-hover-state-layer-opacity:.04;--mdc-chip-with-trailing-icon-disabled-trailing-icon-opacity:1;--mdc-chip-with-icon-disabled-icon-opacity:1;--mat-chip-disabled-container-opacity:.4;--mat-chip-trailing-action-opacity:.54;--mat-chip-trailing-action-focus-opacity:1;--mat-chip-trailing-action-state-layer-color:transparent;--mat-chip-selected-trailing-action-state-layer-color:transparent;--mat-chip-trailing-action-hover-state-layer-opacity:0;--mat-chip-trailing-action-focus-state-layer-opacity:0}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color:#212121;--mdc-chip-elevated-container-color:#e0e0e0;--mdc-chip-elevated-selected-container-color:#e0e0e0;--mdc-chip-elevated-disabled-container-color:#e0e0e0;--mdc-chip-flat-disabled-selected-container-color:#e0e0e0;--mdc-chip-focus-state-layer-color:black;--mdc-chip-hover-state-layer-color:black;--mdc-chip-selected-hover-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-selected-focus-state-layer-color:black;--mdc-chip-selected-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:#212121;--mdc-chip-selected-label-text-color:#212121;--mdc-chip-with-icon-icon-color:#212121;--mdc-chip-with-icon-disabled-icon-color:#212121;--mdc-chip-with-icon-selected-icon-color:#212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:#212121;--mdc-chip-with-trailing-icon-trailing-icon-color:#212121;--mat-chip-selected-disabled-trailing-icon-color:#212121;--mat-chip-selected-trailing-icon-color:#212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#3f51b5;--mdc-chip-elevated-selected-container-color:#3f51b5;--mdc-chip-elevated-disabled-container-color:#3f51b5;--mdc-chip-flat-disabled-selected-container-color:#3f51b5;--mdc-chip-focus-state-layer-color:black;--mdc-chip-hover-state-layer-color:black;--mdc-chip-selected-hover-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-selected-focus-state-layer-color:black;--mdc-chip-selected-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:white;--mdc-chip-selected-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white;--mat-chip-selected-disabled-trailing-icon-color:white;--mat-chip-selected-trailing-icon-color:white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#ff4081;--mdc-chip-elevated-selected-container-color:#ff4081;--mdc-chip-elevated-disabled-container-color:#ff4081;--mdc-chip-flat-disabled-selected-container-color:#ff4081;--mdc-chip-focus-state-layer-color:black;--mdc-chip-hover-state-layer-color:black;--mdc-chip-selected-hover-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-selected-focus-state-layer-color:black;--mdc-chip-selected-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:white;--mdc-chip-selected-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white;--mat-chip-selected-disabled-trailing-icon-color:white;--mat-chip-selected-trailing-icon-color:white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color:white;--mdc-chip-elevated-container-color:#f44336;--mdc-chip-elevated-selected-container-color:#f44336;--mdc-chip-elevated-disabled-container-color:#f44336;--mdc-chip-flat-disabled-selected-container-color:#f44336;--mdc-chip-focus-state-layer-color:black;--mdc-chip-hover-state-layer-color:black;--mdc-chip-selected-hover-state-layer-color:black;--mdc-chip-focus-state-layer-opacity:.12;--mdc-chip-selected-focus-state-layer-color:black;--mdc-chip-selected-focus-state-layer-opacity:.12;--mdc-chip-label-text-color:white;--mdc-chip-selected-label-text-color:white;--mdc-chip-with-icon-icon-color:white;--mdc-chip-with-icon-disabled-icon-color:white;--mdc-chip-with-icon-selected-icon-color:white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color:white;--mdc-chip-with-trailing-icon-trailing-icon-color:white;--mat-chip-selected-disabled-trailing-icon-color:white;--mat-chip-selected-trailing-icon-color:white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height:32px}.mat-mdc-standard-chip{--mdc-chip-label-text-font:Roboto, sans-serif;--mdc-chip-label-text-line-height:20px;--mdc-chip-label-text-size:14px;--mdc-chip-label-text-tracking:.0178571429em;--mdc-chip-label-text-weight:400}html{--mdc-switch-disabled-selected-icon-opacity:.38;--mdc-switch-disabled-track-opacity:.12;--mdc-switch-disabled-unselected-icon-opacity:.38;--mdc-switch-handle-height:20px;--mdc-switch-handle-shape:10px;--mdc-switch-handle-width:20px;--mdc-switch-selected-icon-size:18px;--mdc-switch-track-height:14px;--mdc-switch-track-shape:7px;--mdc-switch-track-width:36px;--mdc-switch-unselected-icon-size:18px;--mdc-switch-selected-focus-state-layer-opacity:.12;--mdc-switch-selected-hover-state-layer-opacity:.04;--mdc-switch-selected-pressed-state-layer-opacity:.1;--mdc-switch-unselected-focus-state-layer-opacity:.12;--mdc-switch-unselected-hover-state-layer-opacity:.04;--mdc-switch-unselected-pressed-state-layer-opacity:.1;--mat-switch-disabled-selected-handle-opacity:.38;--mat-switch-disabled-unselected-handle-opacity:.38;--mat-switch-unselected-handle-size:20px;--mat-switch-selected-handle-size:20px;--mat-switch-pressed-handle-size:20px;--mat-switch-with-icon-handle-size:20px;--mat-switch-selected-handle-horizontal-margin:0;--mat-switch-selected-with-icon-handle-horizontal-margin:0;--mat-switch-selected-pressed-handle-horizontal-margin:0;--mat-switch-unselected-handle-horizontal-margin:0;--mat-switch-unselected-with-icon-handle-horizontal-margin:0;--mat-switch-unselected-pressed-handle-horizontal-margin:0;--mat-switch-visible-track-opacity:1;--mat-switch-hidden-track-opacity:1;--mat-switch-visible-track-transition:transform 75ms 0ms cubic-bezier(0, 0, .2, 1);--mat-switch-hidden-track-transition:transform 75ms 0ms cubic-bezier(.4, 0, .6, 1);--mat-switch-track-outline-width:1px;--mat-switch-track-outline-color:transparent;--mat-switch-selected-track-outline-width:1px;--mat-switch-disabled-unselected-track-outline-width:1px;--mat-switch-disabled-unselected-track-outline-color:transparent}html{--mdc-switch-selected-focus-state-layer-color:#3949ab;--mdc-switch-selected-handle-color:#3949ab;--mdc-switch-selected-hover-state-layer-color:#3949ab;--mdc-switch-selected-pressed-state-layer-color:#3949ab;--mdc-switch-selected-focus-handle-color:#1a237e;--mdc-switch-selected-hover-handle-color:#1a237e;--mdc-switch-selected-pressed-handle-color:#1a237e;--mdc-switch-selected-focus-track-color:#7986cb;--mdc-switch-selected-hover-track-color:#7986cb;--mdc-switch-selected-pressed-track-color:#7986cb;--mdc-switch-selected-track-color:#7986cb;--mdc-switch-disabled-selected-handle-color:#424242;--mdc-switch-disabled-selected-icon-color:#fff;--mdc-switch-disabled-selected-track-color:#424242;--mdc-switch-disabled-unselected-handle-color:#424242;--mdc-switch-disabled-unselected-icon-color:#fff;--mdc-switch-disabled-unselected-track-color:#424242;--mdc-switch-handle-surface-color:var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color:black;--mdc-switch-disabled-handle-elevation-shadow:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color:#fff;--mdc-switch-unselected-focus-handle-color:#212121;--mdc-switch-unselected-focus-state-layer-color:#424242;--mdc-switch-unselected-focus-track-color:#e0e0e0;--mdc-switch-unselected-handle-color:#616161;--mdc-switch-unselected-hover-handle-color:#212121;--mdc-switch-unselected-hover-state-layer-color:#424242;--mdc-switch-unselected-hover-track-color:#e0e0e0;--mdc-switch-unselected-icon-color:#fff;--mdc-switch-unselected-pressed-handle-color:#212121;--mdc-switch-unselected-pressed-state-layer-color:#424242;--mdc-switch-unselected-pressed-track-color:#e0e0e0;--mdc-switch-unselected-track-color:#e0e0e0;--mdc-switch-disabled-label-text-color: rgba(0, 0, 0, .38)}html .mat-mdc-slide-toggle{--mdc-form-field-label-text-color:rgba(0, 0, 0, .87)}html .mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color:#d81b60;--mdc-switch-selected-handle-color:#d81b60;--mdc-switch-selected-hover-state-layer-color:#d81b60;--mdc-switch-selected-pressed-state-layer-color:#d81b60;--mdc-switch-selected-focus-handle-color:#880e4f;--mdc-switch-selected-hover-handle-color:#880e4f;--mdc-switch-selected-pressed-handle-color:#880e4f;--mdc-switch-selected-focus-track-color:#f06292;--mdc-switch-selected-hover-track-color:#f06292;--mdc-switch-selected-pressed-track-color:#f06292;--mdc-switch-selected-track-color:#f06292}html .mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color:#e53935;--mdc-switch-selected-handle-color:#e53935;--mdc-switch-selected-hover-state-layer-color:#e53935;--mdc-switch-selected-pressed-state-layer-color:#e53935;--mdc-switch-selected-focus-handle-color:#b71c1c;--mdc-switch-selected-hover-handle-color:#b71c1c;--mdc-switch-selected-pressed-handle-color:#b71c1c;--mdc-switch-selected-focus-track-color:#e57373;--mdc-switch-selected-hover-track-color:#e57373;--mdc-switch-selected-pressed-track-color:#e57373;--mdc-switch-selected-track-color:#e57373}html{--mdc-switch-state-layer-size:40px}html .mat-mdc-slide-toggle{--mdc-form-field-label-text-font:Roboto, sans-serif;--mdc-form-field-label-text-line-height:20px;--mdc-form-field-label-text-size:14px;--mdc-form-field-label-text-tracking:.0178571429em;--mdc-form-field-label-text-weight:400}html{--mdc-radio-disabled-selected-icon-opacity:.38;--mdc-radio-disabled-unselected-icon-opacity:.38;--mdc-radio-state-layer-size:40px}.mat-mdc-radio-button{--mdc-form-field-label-text-color:rgba(0, 0, 0, .87)}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#3f51b5;--mdc-radio-selected-hover-icon-color:#3f51b5;--mdc-radio-selected-icon-color:#3f51b5;--mdc-radio-selected-pressed-icon-color:#3f51b5;--mat-radio-ripple-color:black;--mat-radio-checked-ripple-color:#3f51b5;--mat-radio-disabled-label-color:rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#ff4081;--mdc-radio-selected-hover-icon-color:#ff4081;--mdc-radio-selected-icon-color:#ff4081;--mdc-radio-selected-pressed-icon-color:#ff4081;--mat-radio-ripple-color:black;--mat-radio-checked-ripple-color:#ff4081;--mat-radio-disabled-label-color:rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#f44336;--mdc-radio-selected-hover-icon-color:#f44336;--mdc-radio-selected-icon-color:#f44336;--mdc-radio-selected-pressed-icon-color:#f44336;--mat-radio-ripple-color:black;--mat-radio-checked-ripple-color:#f44336;--mat-radio-disabled-label-color:rgba(0, 0, 0, .38)}html{--mdc-radio-state-layer-size:40px;--mat-radio-touch-target-display:block}.mat-mdc-radio-button{--mdc-form-field-label-text-font:Roboto, sans-serif;--mdc-form-field-label-text-line-height:20px;--mdc-form-field-label-text-size:14px;--mdc-form-field-label-text-tracking:.0178571429em;--mdc-form-field-label-text-weight:400}html{--mat-slider-value-indicator-width:auto;--mat-slider-value-indicator-height:32px;--mat-slider-value-indicator-caret-display:block;--mat-slider-value-indicator-border-radius:4px;--mat-slider-value-indicator-padding:0 12px;--mat-slider-value-indicator-text-transform:none;--mat-slider-value-indicator-container-transform:translateX(-50%);--mdc-slider-active-track-height:6px;--mdc-slider-active-track-shape:9999px;--mdc-slider-handle-height:20px;--mdc-slider-handle-shape:50%;--mdc-slider-handle-width:20px;--mdc-slider-inactive-track-height:4px;--mdc-slider-inactive-track-shape:9999px;--mdc-slider-with-overlap-handle-outline-width:1px;--mdc-slider-with-tick-marks-active-container-opacity:.6;--mdc-slider-with-tick-marks-container-shape:50%;--mdc-slider-with-tick-marks-container-size:2px;--mdc-slider-with-tick-marks-inactive-container-opacity:.6}html{--mdc-slider-handle-color:#3f51b5;--mdc-slider-focus-handle-color:#3f51b5;--mdc-slider-hover-handle-color:#3f51b5;--mdc-slider-active-track-color:#3f51b5;--mdc-slider-inactive-track-color:#3f51b5;--mdc-slider-with-tick-marks-inactive-container-color:#3f51b5;--mdc-slider-with-tick-marks-active-container-color:white;--mdc-slider-disabled-active-track-color:#000;--mdc-slider-disabled-handle-color:#000;--mdc-slider-disabled-inactive-track-color:#000;--mdc-slider-label-container-color:#000;--mdc-slider-label-label-text-color:#fff;--mdc-slider-with-overlap-handle-outline-color:#fff;--mdc-slider-with-tick-marks-disabled-container-color:#000;--mdc-slider-handle-elevation:0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mat-slider-ripple-color:#3f51b5;--mat-slider-hover-state-layer-color:rgba(63, 81, 181, .05);--mat-slider-focus-state-layer-color:rgba(63, 81, 181, .2);--mat-slider-value-indicator-opacity:.6}html .mat-accent{--mat-slider-ripple-color:#ff4081;--mat-slider-hover-state-layer-color:rgba(255, 64, 129, .05);--mat-slider-focus-state-layer-color:rgba(255, 64, 129, .2);--mdc-slider-handle-color:#ff4081;--mdc-slider-focus-handle-color:#ff4081;--mdc-slider-hover-handle-color:#ff4081;--mdc-slider-active-track-color:#ff4081;--mdc-slider-inactive-track-color:#ff4081;--mdc-slider-with-tick-marks-inactive-container-color:#ff4081;--mdc-slider-with-tick-marks-active-container-color:white}html .mat-warn{--mat-slider-ripple-color:#f44336;--mat-slider-hover-state-layer-color:rgba(244, 67, 54, .05);--mat-slider-focus-state-layer-color:rgba(244, 67, 54, .2);--mdc-slider-handle-color:#f44336;--mdc-slider-focus-handle-color:#f44336;--mdc-slider-hover-handle-color:#f44336;--mdc-slider-active-track-color:#f44336;--mdc-slider-inactive-track-color:#f44336;--mdc-slider-with-tick-marks-inactive-container-color:#f44336;--mdc-slider-with-tick-marks-active-container-color:white}html{--mdc-slider-label-label-text-font:Roboto, sans-serif;--mdc-slider-label-label-text-size:14px;--mdc-slider-label-label-text-line-height:22px;--mdc-slider-label-label-text-tracking:.0071428571em;--mdc-slider-label-label-text-weight:500}html{--mat-menu-container-shape:4px;--mat-menu-divider-bottom-spacing:0;--mat-menu-divider-top-spacing:0;--mat-menu-item-spacing:16px;--mat-menu-item-icon-size:24px;--mat-menu-item-leading-spacing:16px;--mat-menu-item-trailing-spacing:16px;--mat-menu-item-with-icon-leading-spacing:16px;--mat-menu-item-with-icon-trailing-spacing:16px}html{--mat-menu-item-label-text-color:rgba(0, 0, 0, .87);--mat-menu-item-icon-color:rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-menu-container-color:white;--mat-menu-divider-color:rgba(0, 0, 0, .12)}html{--mat-menu-item-label-text-font:Roboto, sans-serif;--mat-menu-item-label-text-size:16px;--mat-menu-item-label-text-tracking:.03125em;--mat-menu-item-label-text-line-height:24px;--mat-menu-item-label-text-weight:400}html{--mdc-list-list-item-container-shape:0;--mdc-list-list-item-leading-avatar-shape:50%;--mdc-list-list-item-container-color:transparent;--mdc-list-list-item-selected-container-color:transparent;--mdc-list-list-item-leading-avatar-color:transparent;--mdc-list-list-item-leading-icon-size:24px;--mdc-list-list-item-leading-avatar-size:40px;--mdc-list-list-item-trailing-icon-size:24px;--mdc-list-list-item-disabled-state-layer-color:transparent;--mdc-list-list-item-disabled-state-layer-opacity:0;--mdc-list-list-item-disabled-label-text-opacity:.38;--mdc-list-list-item-disabled-leading-icon-opacity:.38;--mdc-list-list-item-disabled-trailing-icon-opacity:.38;--mat-list-active-indicator-color:transparent;--mat-list-active-indicator-shape:4px}html{--mdc-list-list-item-label-text-color:rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color:rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color:rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color:black;--mdc-list-list-item-disabled-leading-icon-color:black;--mdc-list-list-item-disabled-trailing-icon-color:black;--mdc-list-list-item-hover-label-text-color:rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color:rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color:rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color:black;--mdc-list-list-item-hover-state-layer-opacity:.04;--mdc-list-list-item-focus-state-layer-color:black;--mdc-list-list-item-focus-state-layer-opacity:.12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#3f51b5;--mdc-radio-selected-hover-icon-color:#3f51b5;--mdc-radio-selected-icon-color:#3f51b5;--mdc-radio-selected-pressed-icon-color:#3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#ff4081;--mdc-radio-selected-hover-icon-color:#ff4081;--mdc-radio-selected-icon-color:#ff4081;--mdc-radio-selected-pressed-icon-color:#ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color:black;--mdc-radio-disabled-unselected-icon-color:black;--mdc-radio-unselected-hover-icon-color:#212121;--mdc-radio-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color:#f44336;--mdc-radio-selected-hover-icon-color:#f44336;--mdc-radio-selected-icon-color:#f44336;--mdc-radio-selected-pressed-icon-color:#f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#3f51b5;--mdc-checkbox-selected-hover-icon-color:#3f51b5;--mdc-checkbox-selected-icon-color:#3f51b5;--mdc-checkbox-selected-pressed-icon-color:#3f51b5;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#3f51b5;--mdc-checkbox-selected-hover-state-layer-color:#3f51b5;--mdc-checkbox-selected-pressed-state-layer-color:#3f51b5;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#ff4081;--mdc-checkbox-selected-hover-icon-color:#ff4081;--mdc-checkbox-selected-icon-color:#ff4081;--mdc-checkbox-selected-pressed-icon-color:#ff4081;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#ff4081;--mdc-checkbox-selected-hover-state-layer-color:#ff4081;--mdc-checkbox-selected-pressed-state-layer-color:#ff4081;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#f44336;--mdc-checkbox-selected-hover-icon-color:#f44336;--mdc-checkbox-selected-icon-color:#f44336;--mdc-checkbox-selected-pressed-icon-color:#f44336;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#f44336;--mdc-checkbox-selected-hover-state-layer-color:#f44336;--mdc-checkbox-selected-pressed-state-layer-color:#f44336;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}html{--mdc-list-list-item-one-line-container-height:48px;--mdc-list-list-item-two-line-container-height:64px;--mdc-list-list-item-three-line-container-height:88px;--mat-list-list-item-leading-icon-start-space:16px;--mat-list-list-item-leading-icon-end-space:32px}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-state-layer-size:40px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mdc-list-list-item-label-text-font:Roboto, sans-serif;--mdc-list-list-item-label-text-line-height:24px;--mdc-list-list-item-label-text-size:16px;--mdc-list-list-item-label-text-tracking:.03125em;--mdc-list-list-item-label-text-weight:400;--mdc-list-list-item-supporting-text-font:Roboto, sans-serif;--mdc-list-list-item-supporting-text-line-height:20px;--mdc-list-list-item-supporting-text-size:14px;--mdc-list-list-item-supporting-text-tracking:.0178571429em;--mdc-list-list-item-supporting-text-weight:400;--mdc-list-list-item-trailing-supporting-text-font:Roboto, sans-serif;--mdc-list-list-item-trailing-supporting-text-line-height:20px;--mdc-list-list-item-trailing-supporting-text-size:12px;--mdc-list-list-item-trailing-supporting-text-tracking:.0333333333em;--mdc-list-list-item-trailing-supporting-text-weight:400}.mdc-list-group__subheader{font:400 16px/28px Roboto,sans-serif;letter-spacing:.009375em}html{--mat-paginator-container-text-color:rgba(0, 0, 0, .87);--mat-paginator-container-background-color:white;--mat-paginator-enabled-icon-color:rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color:rgba(0, 0, 0, .12)}html{--mat-paginator-container-size:56px;--mat-paginator-form-field-container-height:40px;--mat-paginator-form-field-container-vertical-padding:8px}html{--mat-paginator-container-text-font:Roboto, sans-serif;--mat-paginator-container-text-line-height:20px;--mat-paginator-container-text-size:12px;--mat-paginator-container-text-tracking:.0333333333em;--mat-paginator-container-text-weight:400;--mat-paginator-select-trigger-text-size:12px}html{--mdc-tab-indicator-active-indicator-height:2px;--mdc-tab-indicator-active-indicator-shape:0;--mdc-secondary-navigation-tab-container-height:48px;--mat-tab-header-divider-color:transparent;--mat-tab-header-divider-height:0}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color:#3f51b5;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color:black;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color:#3f51b5;--mat-tab-header-active-ripple-color:#3f51b5;--mat-tab-header-inactive-ripple-color:#3f51b5;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color:#3f51b5;--mat-tab-header-active-hover-label-text-color:#3f51b5;--mat-tab-header-active-focus-indicator-color:#3f51b5;--mat-tab-header-active-hover-indicator-color:#3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color:#ff4081;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color:black;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color:#ff4081;--mat-tab-header-active-ripple-color:#ff4081;--mat-tab-header-inactive-ripple-color:#ff4081;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color:#ff4081;--mat-tab-header-active-hover-label-text-color:#ff4081;--mat-tab-header-active-focus-indicator-color:#ff4081;--mat-tab-header-active-hover-indicator-color:#ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color:#f44336;--mat-tab-header-disabled-ripple-color:rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color:black;--mat-tab-header-inactive-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color:#f44336;--mat-tab-header-active-ripple-color:#f44336;--mat-tab-header-inactive-ripple-color:#f44336;--mat-tab-header-inactive-focus-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color:rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color:#f44336;--mat-tab-header-active-hover-label-text-color:#f44336;--mat-tab-header-active-focus-indicator-color:#f44336;--mat-tab-header-active-hover-indicator-color:#f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color:#3f51b5;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color:#ff4081;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color:#f44336;--mat-tab-header-with-background-foreground-color:white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height:48px}.mat-mdc-tab-header{--mat-tab-header-label-text-font:Roboto, sans-serif;--mat-tab-header-label-text-size:14px;--mat-tab-header-label-text-tracking:.0892857143em;--mat-tab-header-label-text-line-height:36px;--mat-tab-header-label-text-weight:500}html{--mdc-checkbox-disabled-selected-checkmark-color:#fff;--mdc-checkbox-selected-focus-state-layer-opacity:.16;--mdc-checkbox-selected-hover-state-layer-opacity:.04;--mdc-checkbox-selected-pressed-state-layer-opacity:.16;--mdc-checkbox-unselected-focus-state-layer-opacity:.16;--mdc-checkbox-unselected-hover-state-layer-opacity:.04;--mdc-checkbox-unselected-pressed-state-layer-opacity:.16}html{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#ff4081;--mdc-checkbox-selected-hover-icon-color:#ff4081;--mdc-checkbox-selected-icon-color:#ff4081;--mdc-checkbox-selected-pressed-icon-color:#ff4081;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#ff4081;--mdc-checkbox-selected-hover-state-layer-color:#ff4081;--mdc-checkbox-selected-pressed-state-layer-color:#ff4081;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black;--mat-checkbox-disabled-label-color:rgba(0, 0, 0, .38)}.mat-mdc-checkbox{--mdc-form-field-label-text-color:rgba(0, 0, 0, .87)}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#3f51b5;--mdc-checkbox-selected-hover-icon-color:#3f51b5;--mdc-checkbox-selected-icon-color:#3f51b5;--mdc-checkbox-selected-pressed-icon-color:#3f51b5;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#3f51b5;--mdc-checkbox-selected-hover-state-layer-color:#3f51b5;--mdc-checkbox-selected-pressed-state-layer-color:#3f51b5;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color:rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color:white;--mdc-checkbox-selected-focus-icon-color:#f44336;--mdc-checkbox-selected-hover-icon-color:#f44336;--mdc-checkbox-selected-icon-color:#f44336;--mdc-checkbox-selected-pressed-icon-color:#f44336;--mdc-checkbox-unselected-focus-icon-color:#212121;--mdc-checkbox-unselected-hover-icon-color:#212121;--mdc-checkbox-unselected-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color:rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color:#f44336;--mdc-checkbox-selected-hover-state-layer-color:#f44336;--mdc-checkbox-selected-pressed-state-layer-color:#f44336;--mdc-checkbox-unselected-focus-state-layer-color:black;--mdc-checkbox-unselected-hover-state-layer-color:black;--mdc-checkbox-unselected-pressed-state-layer-color:black}html{--mdc-checkbox-state-layer-size:40px;--mat-checkbox-touch-target-display:block}.mat-mdc-checkbox{--mdc-form-field-label-text-font:Roboto, sans-serif;--mdc-form-field-label-text-line-height:20px;--mdc-form-field-label-text-size:14px;--mdc-form-field-label-text-tracking:.0178571429em;--mdc-form-field-label-text-weight:400}html{--mdc-text-button-container-shape:4px;--mdc-text-button-keep-touch-target:false;--mdc-filled-button-container-shape:4px;--mdc-filled-button-keep-touch-target:false;--mdc-protected-button-container-shape:4px;--mdc-protected-button-keep-touch-target:false;--mdc-outlined-button-keep-touch-target:false;--mdc-outlined-button-outline-width:1px;--mdc-outlined-button-container-shape:4px;--mat-text-button-horizontal-padding:8px;--mat-text-button-with-icon-horizontal-padding:8px;--mat-text-button-icon-spacing:8px;--mat-text-button-icon-offset:0;--mat-filled-button-horizontal-padding:16px;--mat-filled-button-icon-spacing:8px;--mat-filled-button-icon-offset:-4px;--mat-protected-button-horizontal-padding:16px;--mat-protected-button-icon-spacing:8px;--mat-protected-button-icon-offset:-4px;--mat-outlined-button-horizontal-padding:15px;--mat-outlined-button-icon-spacing:8px;--mat-outlined-button-icon-offset:-4px}html{--mdc-text-button-label-text-color:black;--mdc-text-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mat-text-button-state-layer-color:black;--mat-text-button-disabled-state-layer-color:black;--mat-text-button-ripple-color:rgba(0, 0, 0, .1);--mat-text-button-hover-state-layer-opacity:.04;--mat-text-button-focus-state-layer-opacity:.12;--mat-text-button-pressed-state-layer-opacity:.12;--mdc-filled-button-container-color:white;--mdc-filled-button-label-text-color:black;--mdc-filled-button-disabled-container-color:rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mat-filled-button-state-layer-color:black;--mat-filled-button-disabled-state-layer-color:black;--mat-filled-button-ripple-color:rgba(0, 0, 0, .1);--mat-filled-button-hover-state-layer-opacity:.04;--mat-filled-button-focus-state-layer-opacity:.12;--mat-filled-button-pressed-state-layer-opacity:.12;--mdc-protected-button-container-color:white;--mdc-protected-button-label-text-color:black;--mdc-protected-button-disabled-container-color:rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation-shadow:0px 3px 1px -2px rgba(0, 0, 0, .2), 0px 2px 2px 0px rgba(0, 0, 0, .14), 0px 1px 5px 0px rgba(0, 0, 0, .12);--mdc-protected-button-disabled-container-elevation-shadow:0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-protected-button-focus-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-hover-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mdc-protected-button-pressed-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-protected-button-container-shadow-color:#000;--mat-protected-button-state-layer-color:black;--mat-protected-button-disabled-state-layer-color:black;--mat-protected-button-ripple-color:rgba(0, 0, 0, .1);--mat-protected-button-hover-state-layer-opacity:.04;--mat-protected-button-focus-state-layer-opacity:.12;--mat-protected-button-pressed-state-layer-opacity:.12;--mdc-outlined-button-disabled-outline-color:rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-label-text-color:rgba(0, 0, 0, .38);--mdc-outlined-button-label-text-color:black;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:black;--mat-outlined-button-disabled-state-layer-color:black;--mat-outlined-button-ripple-color:rgba(0, 0, 0, .1);--mat-outlined-button-hover-state-layer-opacity:.04;--mat-outlined-button-focus-state-layer-opacity:.12;--mat-outlined-button-pressed-state-layer-opacity:.12}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color:#3f51b5;--mat-text-button-state-layer-color:#3f51b5;--mat-text-button-ripple-color:rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color:#ff4081;--mat-text-button-state-layer-color:#ff4081;--mat-text-button-ripple-color:rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color:#f44336;--mat-text-button-state-layer-color:#f44336;--mat-text-button-ripple-color:rgba(244, 67, 54, .1)}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color:#3f51b5;--mdc-filled-button-label-text-color:white;--mat-filled-button-state-layer-color:white;--mat-filled-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color:#ff4081;--mdc-filled-button-label-text-color:white;--mat-filled-button-state-layer-color:white;--mat-filled-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color:#f44336;--mdc-filled-button-label-text-color:white;--mat-filled-button-state-layer-color:white;--mat-filled-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color:#3f51b5;--mdc-protected-button-label-text-color:white;--mat-protected-button-state-layer-color:white;--mat-protected-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color:#ff4081;--mdc-protected-button-label-text-color:white;--mat-protected-button-state-layer-color:white;--mat-protected-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color:#f44336;--mdc-protected-button-label-text-color:white;--mat-protected-button-state-layer-color:white;--mat-protected-button-ripple-color:rgba(255, 255, 255, .1)}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color:#3f51b5;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:#3f51b5;--mat-outlined-button-ripple-color:rgba(63, 81, 181, .1)}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color:#ff4081;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:#ff4081;--mat-outlined-button-ripple-color:rgba(255, 64, 129, .1)}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color:#f44336;--mdc-outlined-button-outline-color:rgba(0, 0, 0, .12);--mat-outlined-button-state-layer-color:#f44336;--mat-outlined-button-ripple-color:rgba(244, 67, 54, .1)}html{--mdc-text-button-container-height:36px;--mdc-filled-button-container-height:36px;--mdc-outlined-button-container-height:36px;--mdc-protected-button-container-height:36px;--mat-text-button-touch-target-display:block;--mat-filled-button-touch-target-display:block;--mat-protected-button-touch-target-display:block;--mat-outlined-button-touch-target-display:block}html{--mdc-text-button-label-text-font:Roboto, sans-serif;--mdc-text-button-label-text-size:14px;--mdc-text-button-label-text-tracking:.0892857143em;--mdc-text-button-label-text-weight:500;--mdc-text-button-label-text-transform:none;--mdc-filled-button-label-text-font:Roboto, sans-serif;--mdc-filled-button-label-text-size:14px;--mdc-filled-button-label-text-tracking:.0892857143em;--mdc-filled-button-label-text-weight:500;--mdc-filled-button-label-text-transform:none;--mdc-outlined-button-label-text-font:Roboto, sans-serif;--mdc-outlined-button-label-text-size:14px;--mdc-outlined-button-label-text-tracking:.0892857143em;--mdc-outlined-button-label-text-weight:500;--mdc-outlined-button-label-text-transform:none;--mdc-protected-button-label-text-font:Roboto, sans-serif;--mdc-protected-button-label-text-size:14px;--mdc-protected-button-label-text-tracking:.0892857143em;--mdc-protected-button-label-text-weight:500;--mdc-protected-button-label-text-transform:none}html{--mdc-icon-button-icon-size:24px}html{--mdc-icon-button-icon-color:inherit;--mdc-icon-button-disabled-icon-color:rgba(0, 0, 0, .38);--mat-icon-button-state-layer-color:black;--mat-icon-button-disabled-state-layer-color:black;--mat-icon-button-ripple-color:rgba(0, 0, 0, .1);--mat-icon-button-hover-state-layer-opacity:.04;--mat-icon-button-focus-state-layer-opacity:.12;--mat-icon-button-pressed-state-layer-opacity:.12}html .mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color:#3f51b5;--mat-icon-button-state-layer-color:#3f51b5;--mat-icon-button-ripple-color:rgba(63, 81, 181, .1)}html .mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color:#ff4081;--mat-icon-button-state-layer-color:#ff4081;--mat-icon-button-ripple-color:rgba(255, 64, 129, .1)}html .mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color:#f44336;--mat-icon-button-state-layer-color:#f44336;--mat-icon-button-ripple-color:rgba(244, 67, 54, .1)}html{--mat-icon-button-touch-target-display:block}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size:48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}html{--mdc-fab-container-shape:50%;--mdc-fab-icon-size:24px;--mdc-fab-small-container-shape:50%;--mdc-fab-small-icon-size:24px;--mdc-extended-fab-container-height:48px;--mdc-extended-fab-container-shape:24px}html{--mdc-fab-container-color:white;--mdc-fab-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-fab-container-shadow-color:#000;--mat-fab-foreground-color:black;--mat-fab-state-layer-color:black;--mat-fab-disabled-state-layer-color:black;--mat-fab-ripple-color:rgba(0, 0, 0, .1);--mat-fab-hover-state-layer-opacity:.04;--mat-fab-focus-state-layer-opacity:.12;--mat-fab-pressed-state-layer-opacity:.12;--mat-fab-disabled-state-container-color:rgba(0, 0, 0, .12);--mat-fab-disabled-state-foreground-color:rgba(0, 0, 0, .38);--mdc-fab-small-container-color:white;--mdc-fab-small-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-fab-small-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-fab-small-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-fab-small-container-shadow-color:#000;--mat-fab-small-foreground-color:black;--mat-fab-small-state-layer-color:black;--mat-fab-small-disabled-state-layer-color:black;--mat-fab-small-ripple-color:rgba(0, 0, 0, .1);--mat-fab-small-hover-state-layer-opacity:.04;--mat-fab-small-focus-state-layer-opacity:.12;--mat-fab-small-pressed-state-layer-opacity:.12;--mat-fab-small-disabled-state-container-color:rgba(0, 0, 0, .12);--mat-fab-small-disabled-state-foreground-color:rgba(0, 0, 0, .38);--mdc-extended-fab-container-elevation-shadow:0px 3px 5px -1px rgba(0, 0, 0, .2), 0px 6px 10px 0px rgba(0, 0, 0, .14), 0px 1px 18px 0px rgba(0, 0, 0, .12);--mdc-extended-fab-focus-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-hover-container-elevation-shadow:0px 5px 5px -3px rgba(0, 0, 0, .2), 0px 8px 10px 1px rgba(0, 0, 0, .14), 0px 3px 14px 2px rgba(0, 0, 0, .12);--mdc-extended-fab-pressed-container-elevation-shadow:0px 7px 8px -4px rgba(0, 0, 0, .2), 0px 12px 17px 2px rgba(0, 0, 0, .14), 0px 5px 22px 4px rgba(0, 0, 0, .12);--mdc-extended-fab-container-shadow-color:#000}html .mat-mdc-fab.mat-primary{--mdc-fab-container-color:#3f51b5;--mat-fab-foreground-color:white;--mat-fab-state-layer-color:white;--mat-fab-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-fab.mat-accent{--mdc-fab-container-color:#ff4081;--mat-fab-foreground-color:white;--mat-fab-state-layer-color:white;--mat-fab-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-fab.mat-warn{--mdc-fab-container-color:#f44336;--mat-fab-foreground-color:white;--mat-fab-state-layer-color:white;--mat-fab-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-primary{--mdc-fab-small-container-color:#3f51b5;--mat-fab-small-foreground-color:white;--mat-fab-small-state-layer-color:white;--mat-fab-small-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-accent{--mdc-fab-small-container-color:#ff4081;--mat-fab-small-foreground-color:white;--mat-fab-small-state-layer-color:white;--mat-fab-small-ripple-color:rgba(255, 255, 255, .1)}html .mat-mdc-mini-fab.mat-warn{--mdc-fab-small-container-color:#f44336;--mat-fab-small-foreground-color:white;--mat-fab-small-state-layer-color:white;--mat-fab-small-ripple-color:rgba(255, 255, 255, .1)}html{--mat-fab-touch-target-display:block;--mat-fab-small-touch-target-display:block}html{--mdc-extended-fab-label-text-font:Roboto, sans-serif;--mdc-extended-fab-label-text-size:14px;--mdc-extended-fab-label-text-tracking:.0892857143em;--mdc-extended-fab-label-text-weight:500}html{--mdc-snackbar-container-shape:4px}html{--mdc-snackbar-container-color:#333333;--mdc-snackbar-supporting-text-color:rgba(255, 255, 255, .87);--mat-snack-bar-button-color:#ff4081}html{--mdc-snackbar-supporting-text-font:Roboto, sans-serif;--mdc-snackbar-supporting-text-line-height:20px;--mdc-snackbar-supporting-text-size:14px;--mdc-snackbar-supporting-text-weight:400}html{--mat-table-row-item-outline-width:1px}html{--mat-table-background-color:white;--mat-table-header-headline-color:rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color:rgba(0, 0, 0, .87);--mat-table-row-item-outline-color:rgba(0, 0, 0, .12)}html{--mat-table-header-container-height:56px;--mat-table-footer-container-height:52px;--mat-table-row-item-container-height:52px}html{--mat-table-header-headline-font:Roboto, sans-serif;--mat-table-header-headline-line-height:22px;--mat-table-header-headline-size:14px;--mat-table-header-headline-weight:500;--mat-table-header-headline-tracking:.0071428571em;--mat-table-row-item-label-text-font:Roboto, sans-serif;--mat-table-row-item-label-text-line-height:20px;--mat-table-row-item-label-text-size:14px;--mat-table-row-item-label-text-weight:400;--mat-table-row-item-label-text-tracking:.0178571429em;--mat-table-footer-supporting-text-font:Roboto, sans-serif;--mat-table-footer-supporting-text-line-height:20px;--mat-table-footer-supporting-text-size:14px;--mat-table-footer-supporting-text-weight:400;--mat-table-footer-supporting-text-tracking:.0178571429em}html{--mdc-circular-progress-active-indicator-width:4px;--mdc-circular-progress-size:48px}html{--mdc-circular-progress-active-indicator-color:#3f51b5}html .mat-accent{--mdc-circular-progress-active-indicator-color:#ff4081}html .mat-warn{--mdc-circular-progress-active-indicator-color:#f44336}html{--mat-badge-container-shape:50%;--mat-badge-container-size:unset;--mat-badge-small-size-container-size:unset;--mat-badge-large-size-container-size:unset;--mat-badge-legacy-container-size:22px;--mat-badge-legacy-small-size-container-size:16px;--mat-badge-legacy-large-size-container-size:28px;--mat-badge-container-offset:-11px 0;--mat-badge-small-size-container-offset:-8px 0;--mat-badge-large-size-container-offset:-14px 0;--mat-badge-container-overlap-offset:-11px;--mat-badge-small-size-container-overlap-offset:-8px;--mat-badge-large-size-container-overlap-offset:-14px;--mat-badge-container-padding:0;--mat-badge-small-size-container-padding:0;--mat-badge-large-size-container-padding:0}html{--mat-badge-background-color:#3f51b5;--mat-badge-text-color:white;--mat-badge-disabled-state-background-color:#b9b9b9;--mat-badge-disabled-state-text-color:rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color:#ff4081;--mat-badge-text-color:white}.mat-badge-warn{--mat-badge-background-color:#f44336;--mat-badge-text-color:white}html{--mat-badge-text-font:Roboto, sans-serif;--mat-badge-text-size:12px;--mat-badge-text-weight:600;--mat-badge-small-size-text-size:9px;--mat-badge-large-size-text-size:24px}html{--mat-bottom-sheet-container-shape:4px}html{--mat-bottom-sheet-container-text-color:rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color:white}html{--mat-bottom-sheet-container-text-font:Roboto, sans-serif;--mat-bottom-sheet-container-text-line-height:20px;--mat-bottom-sheet-container-text-size:14px;--mat-bottom-sheet-container-text-tracking:.0178571429em;--mat-bottom-sheet-container-text-weight:400}html{--mat-legacy-button-toggle-height:36px;--mat-legacy-button-toggle-shape:2px;--mat-legacy-button-toggle-focus-state-layer-opacity:1;--mat-standard-button-toggle-shape:4px;--mat-standard-button-toggle-hover-state-layer-opacity:.04;--mat-standard-button-toggle-focus-state-layer-opacity:.12}html{--mat-legacy-button-toggle-text-color:rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color:rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color:rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color:#e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color:rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color:#eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color:#bdbdbd;--mat-standard-button-toggle-text-color:rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color:white;--mat-standard-button-toggle-state-layer-color:black;--mat-standard-button-toggle-selected-state-background-color:#e0e0e0;--mat-standard-button-toggle-selected-state-text-color:rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color:rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color:white;--mat-standard-button-toggle-disabled-selected-state-text-color:rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color:#bdbdbd;--mat-standard-button-toggle-divider-color:#e0e0e0}html{--mat-standard-button-toggle-height:48px}html{--mat-legacy-button-toggle-label-text-font:Roboto, sans-serif;--mat-legacy-button-toggle-label-text-line-height:24px;--mat-legacy-button-toggle-label-text-size:16px;--mat-legacy-button-toggle-label-text-tracking:.03125em;--mat-legacy-button-toggle-label-text-weight:400;--mat-standard-button-toggle-label-text-font:Roboto, sans-serif;--mat-standard-button-toggle-label-text-line-height:24px;--mat-standard-button-toggle-label-text-size:16px;--mat-standard-button-toggle-label-text-tracking:.03125em;--mat-standard-button-toggle-label-text-weight:400}html{--mat-datepicker-calendar-container-shape:4px;--mat-datepicker-calendar-container-touch-shape:4px;--mat-datepicker-calendar-container-elevation-shadow:0px 2px 4px -1px rgba(0, 0, 0, .2), 0px 4px 5px 0px rgba(0, 0, 0, .14), 0px 1px 10px 0px rgba(0, 0, 0, .12);--mat-datepicker-calendar-container-touch-elevation-shadow:0px 11px 15px -7px rgba(0, 0, 0, .2), 0px 24px 38px 3px rgba(0, 0, 0, .14), 0px 9px 46px 8px rgba(0, 0, 0, .12)}html{--mat-datepicker-calendar-date-selected-state-text-color:white;--mat-datepicker-calendar-date-selected-state-background-color:#3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color:rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color:white;--mat-datepicker-calendar-date-focus-state-background-color:rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color:rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color:#3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color:rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color:rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color:#a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color:#46a35e;--mat-datepicker-toggle-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-text-color:black;--mat-datepicker-calendar-period-button-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color:rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color:rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color:rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color:rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color:rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color:transparent;--mat-datepicker-calendar-date-disabled-state-text-color:rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color:rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color:rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color:rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color:rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color:white;--mat-datepicker-calendar-container-text-color:rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color:white;--mat-datepicker-calendar-date-selected-state-background-color:#ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color:rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color:white;--mat-datepicker-calendar-date-focus-state-background-color:rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color:rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color:rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color:rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color:#a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color:#46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color:white;--mat-datepicker-calendar-date-selected-state-background-color:#f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color:rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color:white;--mat-datepicker-calendar-date-focus-state-background-color:rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color:rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color:rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color:rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color:#a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color:#46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color:#ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color:#f44336}.mat-calendar-controls{--mat-icon-button-touch-target-display:none}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size:40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}html{--mat-datepicker-calendar-text-font:Roboto, sans-serif;--mat-datepicker-calendar-text-size:13px;--mat-datepicker-calendar-body-label-text-size:14px;--mat-datepicker-calendar-body-label-text-weight:500;--mat-datepicker-calendar-period-button-text-size:14px;--mat-datepicker-calendar-period-button-text-weight:500;--mat-datepicker-calendar-header-text-size:11px;--mat-datepicker-calendar-header-text-weight:400}html{--mat-divider-width:1px}html{--mat-divider-color:rgba(0, 0, 0, .12)}html{--mat-expansion-container-shape:4px;--mat-expansion-legacy-header-indicator-display:inline-block;--mat-expansion-header-indicator-display:none}html{--mat-expansion-container-background-color:white;--mat-expansion-container-text-color:rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color:rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color:rgba(0, 0, 0, .26);--mat-expansion-header-text-color:rgba(0, 0, 0, .87);--mat-expansion-header-description-color:rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color:rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height:48px;--mat-expansion-header-expanded-state-height:64px}html{--mat-expansion-header-text-font:Roboto, sans-serif;--mat-expansion-header-text-size:14px;--mat-expansion-header-text-weight:500;--mat-expansion-header-text-line-height:inherit;--mat-expansion-header-text-tracking:inherit;--mat-expansion-container-text-font:Roboto, sans-serif;--mat-expansion-container-text-line-height:20px;--mat-expansion-container-text-size:14px;--mat-expansion-container-text-tracking:.0178571429em;--mat-expansion-container-text-weight:400}html{--mat-grid-list-tile-header-primary-text-size:14px;--mat-grid-list-tile-header-secondary-text-size:12px;--mat-grid-list-tile-footer-primary-text-size:14px;--mat-grid-list-tile-footer-secondary-text-size:12px}html{--mat-icon-color:inherit}.mat-icon.mat-primary{--mat-icon-color:#3f51b5}.mat-icon.mat-accent{--mat-icon-color:#ff4081}.mat-icon.mat-warn{--mat-icon-color:#f44336}html{--mat-sidenav-container-shape:0;--mat-sidenav-container-elevation-shadow:0px 8px 10px -5px rgba(0, 0, 0, .2), 0px 16px 24px 2px rgba(0, 0, 0, .14), 0px 6px 30px 5px rgba(0, 0, 0, .12);--mat-sidenav-container-width:auto}html{--mat-sidenav-container-divider-color:rgba(0, 0, 0, .12);--mat-sidenav-container-background-color:white;--mat-sidenav-container-text-color:rgba(0, 0, 0, .87);--mat-sidenav-content-background-color:#fafafa;--mat-sidenav-content-text-color:rgba(0, 0, 0, .87);--mat-sidenav-scrim-color:rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#3f51b5;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#3f51b5;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#3f51b5;--mat-stepper-header-edit-state-icon-foreground-color:white;--mat-stepper-container-color:white;--mat-stepper-line-color:rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color:rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color:rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color:rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color:rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color:rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color:#f44336;--mat-stepper-header-icon-background-color:rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color:#f44336;--mat-stepper-header-error-state-icon-background-color:transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#ff4081;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#ff4081;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#ff4081;--mat-stepper-header-edit-state-icon-foreground-color:white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color:white;--mat-stepper-header-selected-state-icon-background-color:#f44336;--mat-stepper-header-selected-state-icon-foreground-color:white;--mat-stepper-header-done-state-icon-background-color:#f44336;--mat-stepper-header-done-state-icon-foreground-color:white;--mat-stepper-header-edit-state-icon-background-color:#f44336;--mat-stepper-header-edit-state-icon-foreground-color:white}html{--mat-stepper-header-height:72px}html{--mat-stepper-container-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-font:Roboto, sans-serif;--mat-stepper-header-label-text-size:14px;--mat-stepper-header-label-text-weight:400;--mat-stepper-header-error-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-size:16px;--mat-stepper-header-selected-state-label-text-weight:400}html{--mat-sort-arrow-color:#757575}html{--mat-toolbar-container-background-color:whitesmoke;--mat-toolbar-container-text-color:rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color:#3f51b5;--mat-toolbar-container-text-color:white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color:#ff4081;--mat-toolbar-container-text-color:white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color:#f44336;--mat-toolbar-container-text-color:white}html{--mat-toolbar-standard-height:64px;--mat-toolbar-mobile-height:56px}html{--mat-toolbar-title-text-font:Roboto, sans-serif;--mat-toolbar-title-text-line-height:32px;--mat-toolbar-title-text-size:20px;--mat-toolbar-title-text-tracking:.0125em;--mat-toolbar-title-text-weight:500}html{--mat-tree-container-background-color:white;--mat-tree-node-text-color:rgba(0, 0, 0, .87)}html{--mat-tree-node-min-height:48px}html{--mat-tree-node-text-font:Roboto, sans-serif;--mat-tree-node-text-size:14px;--mat-tree-node-text-weight:400}.mat-h1,.mat-headline-5,.mat-typography .mat-h1,.mat-typography .mat-headline-5,.mat-typography h1{font:400 24px/32px Roboto,sans-serif;letter-spacing:normal;margin:0 0 16px}.mat-h2,.mat-headline-6,.mat-typography .mat-h2,.mat-typography .mat-headline-6,.mat-typography h2{font:500 20px/32px Roboto,sans-serif;letter-spacing:.0125em;margin:0 0 16px}.mat-h3,.mat-subtitle-1,.mat-typography .mat-h3,.mat-typography .mat-subtitle-1,.mat-typography h3{font:400 16px/28px Roboto,sans-serif;letter-spacing:.009375em;margin:0 0 16px}.mat-h4,.mat-body-1,.mat-typography .mat-h4,.mat-typography .mat-body-1,.mat-typography h4{font:400 16px/24px Roboto,sans-serif;letter-spacing:.03125em;margin:0 0 16px}.mat-h5,.mat-typography .mat-h5,.mat-typography h5{font:400 11.62px/20px Roboto,sans-serif;margin:0 0 12px}.mat-h6,.mat-typography .mat-h6,.mat-typography h6{font:400 9.38px/20px Roboto,sans-serif;margin:0 0 12px}.mat-body-strong,.mat-subtitle-2,.mat-typography .mat-body-strong,.mat-typography .mat-subtitle-2{font:500 14px/22px Roboto,sans-serif;letter-spacing:.0071428571em}.mat-body,.mat-body-2,.mat-typography .mat-body,.mat-typography .mat-body-2,.mat-typography{font:400 14px/20px Roboto,sans-serif;letter-spacing:.0178571429em}.mat-body p,.mat-body-2 p,.mat-typography .mat-body p,.mat-typography .mat-body-2 p,.mat-typography p{margin:0 0 12px}.mat-small,.mat-caption,.mat-typography .mat-small,.mat-typography .mat-caption{font:400 12px/20px Roboto,sans-serif;letter-spacing:.0333333333em}.mat-headline-1,.mat-typography .mat-headline-1{font:300 96px/96px Roboto,sans-serif;letter-spacing:-.015625em;margin:0 0 56px}.mat-headline-2,.mat-typography .mat-headline-2{font:300 60px/60px Roboto,sans-serif;letter-spacing:-.0083333333em;margin:0 0 64px}.mat-headline-3,.mat-typography .mat-headline-3{font:400 48px/50px Roboto,sans-serif;letter-spacing:normal;margin:0 0 64px}.mat-headline-4,.mat-typography .mat-headline-4{font:400 34px/40px Roboto,sans-serif;letter-spacing:.0073529412em;margin:0 0 64px}:root{--main-accent-color: #009688}@font-face{font-family:Super Cartoon;src:url("./media/Super Cartoon-JJ6FODL3.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Raleway;src:url("./media/Raleway-OGE6QTLG.woff2") format("woff2"),url("./media/Raleway-YBWB2BVX.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Amonk_Outline;src:url("./media/Amonk_Outline-LNK3GGJG.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:RetroSigned;src:url("./media/RetroSigned-FXONQQOR.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}h1{font-size:3vw;color:#fff;font-family:Super Cartoon}h1,h2,h3,h4,h5,h6{margin:0 0 .6em;line-height:1.2}p{line-height:1.6;margin:0 0 1em}li{line-height:1.6}body,html{margin:0;padding:0;height:100%;display:flex;flex-direction:column;font-family:Raleway,Roboto,Helvetica Neue,sans-serif;background-color:#2322206e}html,body{overflow-x:hidden}.imgbgcontainter{background-image:url(/assets/images/grammar-bg.png);background-size:auto;background-position:center;background-attachment:fixed;width:100%;height:100%}.grammar-bg{position:absolute;top:10%;left:0;width:100%;height:auto;max-height:calc(100vh - 100px);object-fit:fill;z-index:-1;opacity:.2}.mat-mdc-dialog-surface.mdc-dialog__surface{border-radius:1vw!important}.cdk-global-scrollblock{overflow:hidden}.user-guide-close-icon{position:absolute;background:#009688;border:none;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2vw;color:#000;cursor:pointer;z-index:2010;box-shadow:0 2px 8px #5d91c32e;transition:background .2s,color .2s}.user-guide-close-icon:hover{background:#fff;color:#000;border:3px solid #009688}.back-btn{position:absolute;top:1vw;left:1vw;transform:translateY(-50%);cursor:pointer;padding:0 1rem;transition:transform .3s;width:4.5vw}.back-btn:hover{transform:translateY(-50%) scale(1.1)}