Showing preview only (1,605K chars total). Download the full file or copy to clipboard to get everything.
Repository: TryCatchLearn/Skinet
Branch: main
Commit: e355a99c2e84
Files: 254
Total size: 1.5 MB
Directory structure:
gitextract_ok2u674f/
├── .github/
│ └── workflows/
│ └── main_skinet-course.yml
├── .gitignore
├── .vscode/
│ └── settings.json
├── API/
│ ├── API.csproj
│ ├── API.http
│ ├── Controllers/
│ │ ├── AccountController.cs
│ │ ├── AdminController.cs
│ │ ├── BaseApiController.cs
│ │ ├── BuggyController.cs
│ │ ├── CartController.cs
│ │ ├── CouponsController.cs
│ │ ├── FallbackController.cs
│ │ ├── OrdersController.cs
│ │ ├── PaymentsController.cs
│ │ ├── ProductsController.cs
│ │ └── WeatherForecastController.cs
│ ├── DTOs/
│ │ ├── AddressDto.cs
│ │ ├── CreateOrderDto.cs
│ │ ├── CreateProductDto.cs
│ │ ├── OrderDto.cs
│ │ ├── OrderItemDto.cs
│ │ └── RegisterDto.cs
│ ├── Errors/
│ │ └── ApiErrorResponse.cs
│ ├── Extensions/
│ │ ├── AddressMappingExtensions.cs
│ │ ├── ClaimsPrincipalExtensions.cs
│ │ └── OrderMappingExtensions.cs
│ ├── Middleware/
│ │ └── ExceptionMiddleware.cs
│ ├── Program.cs
│ ├── Properties/
│ │ └── launchSettings.json
│ ├── RequestHelpers/
│ │ ├── CachedAttribute.cs
│ │ ├── InvalidateCacheAttribute.cs
│ │ └── Pagination.cs
│ ├── SignalR/
│ │ └── NotificationHub.cs
│ ├── WeatherForecast.cs
│ ├── appsettings.Development.json
│ └── wwwroot/
│ ├── 3rdpartylicenses.txt
│ ├── chunk-6SXQ2FRE.js
│ ├── chunk-76XFCVV7.js
│ ├── chunk-BU6XFQYD.js
│ ├── chunk-HJYZM75B.js
│ ├── chunk-LMQANEB2.js
│ ├── chunk-MIKQGBUF.js
│ ├── chunk-NEILRAN2.js
│ ├── chunk-PEWDZYDO.js
│ ├── chunk-SP3SSILU.js
│ ├── chunk-TEKFR3M2.js
│ ├── chunk-VOFQZSPR.js
│ ├── chunk-WAIB6SCQ.js
│ ├── chunk-YYNGFOZ2.js
│ ├── chunk-Z2NTM2YJ.js
│ ├── index.html
│ ├── main-627RABRE.js
│ ├── polyfills-B6TNHZQ6.js
│ ├── prerendered-routes.json
│ └── styles-COVWXBF4.css
├── Core/
│ ├── Core.csproj
│ ├── Entities/
│ │ ├── Address.cs
│ │ ├── AppCoupon.cs
│ │ ├── AppUser.cs
│ │ ├── BaseEntity.cs
│ │ ├── CartItem.cs
│ │ ├── DeliveryMethod.cs
│ │ ├── OrderAggregate/
│ │ │ ├── Order.cs
│ │ │ ├── OrderItem.cs
│ │ │ ├── OrderStatus.cs
│ │ │ ├── PaymentSummary.cs
│ │ │ ├── ProductItemOrdered.cs
│ │ │ └── ShippingAddress.cs
│ │ ├── Product.cs
│ │ └── ShoppingCart.cs
│ ├── Interfaces/
│ │ ├── ICartService.cs
│ │ ├── ICouponService.cs
│ │ ├── IDtoConvertible.cs
│ │ ├── IGenericRepository.cs
│ │ ├── IPaymentService.cs
│ │ ├── IProductRepository.cs
│ │ ├── IResponseCacheService.cs
│ │ ├── ISpecification.cs
│ │ └── IUnitOfWork.cs
│ └── Specifications/
│ ├── BaseSpecification.cs
│ ├── BrandListSpecification.cs
│ ├── OrderSpecParams.cs
│ ├── OrderSpecification.cs
│ ├── PagingParams.cs
│ ├── ProductSpecParams.cs
│ ├── ProductSpecification.cs
│ └── TypeListSpecification.cs
├── Infrastructure/
│ ├── Config/
│ │ ├── DeliveryMethodConfiguration.cs
│ │ ├── OrderConfiguration.cs
│ │ ├── OrderItemConfiguration.cs
│ │ ├── ProductConfiguration.cs
│ │ └── RoleConfiguration.cs
│ ├── Data/
│ │ ├── GenericRepository.cs
│ │ ├── ProductRepository.cs
│ │ ├── SeedData/
│ │ │ ├── delivery.json
│ │ │ └── products.json
│ │ ├── SpecificationEvaluator.cs
│ │ ├── StoreContext.cs
│ │ ├── StoreContextSeed.cs
│ │ └── UnitOfWork.cs
│ ├── Infrastructure.csproj
│ ├── Migrations/
│ │ ├── 20250622053300_InitialCreate.Designer.cs
│ │ ├── 20250622053300_InitialCreate.cs
│ │ ├── 20250629083129_IdentityAdded.Designer.cs
│ │ ├── 20250629083129_IdentityAdded.cs
│ │ ├── 20250629085927_AddressAdded.Designer.cs
│ │ ├── 20250629085927_AddressAdded.cs
│ │ ├── 20250630014631_DeliveryMethodsAdded.Designer.cs
│ │ ├── 20250630014631_DeliveryMethodsAdded.cs
│ │ ├── 20250630074200_OrderEntityAdded.Designer.cs
│ │ ├── 20250630074200_OrderEntityAdded.cs
│ │ ├── 20250701034848_CouponsAdded.Designer.cs
│ │ ├── 20250701034848_CouponsAdded.cs
│ │ ├── 20250701045119_RolesAdded.Designer.cs
│ │ ├── 20250701045119_RolesAdded.cs
│ │ └── StoreContextModelSnapshot.cs
│ └── Services/
│ ├── CartService.cs
│ ├── CouponService.cs
│ ├── PaymentService.cs
│ └── ResponseCacheService.cs
├── README.MD
├── client/
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .postcssrc.json
│ ├── .vscode/
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ └── tasks.json
│ ├── README.md
│ ├── angular.json
│ ├── package.json
│ ├── src/
│ │ ├── app/
│ │ │ ├── app.component.html
│ │ │ ├── app.component.scss
│ │ │ ├── app.component.ts
│ │ │ ├── app.config.ts
│ │ │ ├── app.routes.ts
│ │ │ ├── app.spec.ts
│ │ │ ├── core/
│ │ │ │ ├── guards/
│ │ │ │ │ ├── admin-guard.ts
│ │ │ │ │ ├── auth-guard.ts
│ │ │ │ │ ├── empty-cart-guard.ts
│ │ │ │ │ └── order-complete-guard.ts
│ │ │ │ ├── interceptors/
│ │ │ │ │ ├── auth-interceptor.ts
│ │ │ │ │ ├── error-interceptor.ts
│ │ │ │ │ └── loading-interceptor.ts
│ │ │ │ └── services/
│ │ │ │ ├── account.service.ts
│ │ │ │ ├── admin.service.ts
│ │ │ │ ├── busy.service.ts
│ │ │ │ ├── cart.service.ts
│ │ │ │ ├── checkout.service.ts
│ │ │ │ ├── dialog.service.ts
│ │ │ │ ├── init.service.ts
│ │ │ │ ├── order.service.ts
│ │ │ │ ├── shop.service.ts
│ │ │ │ ├── signalr.service.ts
│ │ │ │ ├── snackbar.service.ts
│ │ │ │ └── stripe.service.ts
│ │ │ ├── features/
│ │ │ │ ├── account/
│ │ │ │ │ ├── login/
│ │ │ │ │ │ ├── login.component.html
│ │ │ │ │ │ ├── login.component.scss
│ │ │ │ │ │ └── login.component.ts
│ │ │ │ │ ├── register/
│ │ │ │ │ │ ├── register.component.html
│ │ │ │ │ │ ├── register.component.scss
│ │ │ │ │ │ └── register.component.ts
│ │ │ │ │ └── routes.ts
│ │ │ │ ├── admin/
│ │ │ │ │ ├── admin.component.html
│ │ │ │ │ ├── admin.component.scss
│ │ │ │ │ └── admin.component.ts
│ │ │ │ ├── cart/
│ │ │ │ │ ├── cart-item/
│ │ │ │ │ │ ├── cart-item.component.html
│ │ │ │ │ │ ├── cart-item.component.scss
│ │ │ │ │ │ └── cart-item.component.ts
│ │ │ │ │ ├── cart.component.html
│ │ │ │ │ ├── cart.component.scss
│ │ │ │ │ └── cart.component.ts
│ │ │ │ ├── checkout/
│ │ │ │ │ ├── checkout-delivery/
│ │ │ │ │ │ ├── checkout-delivery.component.html
│ │ │ │ │ │ ├── checkout-delivery.component.scss
│ │ │ │ │ │ └── checkout-delivery.component.ts
│ │ │ │ │ ├── checkout-review/
│ │ │ │ │ │ ├── checkout-review.component.html
│ │ │ │ │ │ ├── checkout-review.component.scss
│ │ │ │ │ │ └── checkout-review.component.ts
│ │ │ │ │ ├── checkout-success/
│ │ │ │ │ │ ├── checkout-success.component.html
│ │ │ │ │ │ ├── checkout-success.component.scss
│ │ │ │ │ │ └── checkout-success.component.ts
│ │ │ │ │ ├── checkout.component.html
│ │ │ │ │ ├── checkout.component.scss
│ │ │ │ │ ├── checkout.component.ts
│ │ │ │ │ └── routes.ts
│ │ │ │ ├── home/
│ │ │ │ │ ├── home.component.html
│ │ │ │ │ ├── home.component.scss
│ │ │ │ │ └── home.component.ts
│ │ │ │ ├── orders/
│ │ │ │ │ ├── order-detailed/
│ │ │ │ │ │ ├── order-detailed.component.html
│ │ │ │ │ │ ├── order-detailed.component.scss
│ │ │ │ │ │ └── order-detailed.component.ts
│ │ │ │ │ ├── order.component.html
│ │ │ │ │ ├── order.component.scss
│ │ │ │ │ ├── order.component.ts
│ │ │ │ │ └── routes.ts
│ │ │ │ ├── shop/
│ │ │ │ │ ├── filters-dialog/
│ │ │ │ │ │ ├── filters-dialog.component.html
│ │ │ │ │ │ ├── filters-dialog.component.scss
│ │ │ │ │ │ └── filters-dialog.component.ts
│ │ │ │ │ ├── product-details/
│ │ │ │ │ │ ├── product-details.component.html
│ │ │ │ │ │ ├── product-details.component.scss
│ │ │ │ │ │ └── product-details.component.ts
│ │ │ │ │ ├── product-item/
│ │ │ │ │ │ ├── product-item.component.html
│ │ │ │ │ │ ├── product-item.component.scss
│ │ │ │ │ │ └── product-item.component.ts
│ │ │ │ │ ├── shop.component.html
│ │ │ │ │ ├── shop.component.scss
│ │ │ │ │ └── shop.component.ts
│ │ │ │ └── test-error/
│ │ │ │ ├── test-error.component.html
│ │ │ │ ├── test-error.component.scss
│ │ │ │ └── test-error.component.ts
│ │ │ ├── layout/
│ │ │ │ └── header/
│ │ │ │ ├── header.component.html
│ │ │ │ ├── header.component.scss
│ │ │ │ └── header.component.ts
│ │ │ └── shared/
│ │ │ ├── components/
│ │ │ │ ├── confirmation-dialog/
│ │ │ │ │ ├── confirmation-dialog.component.html
│ │ │ │ │ ├── confirmation-dialog.component.scss
│ │ │ │ │ └── confirmation-dialog.component.ts
│ │ │ │ ├── empty-state/
│ │ │ │ │ ├── empty-state.component.html
│ │ │ │ │ ├── empty-state.component.scss
│ │ │ │ │ └── empty-state.component.ts
│ │ │ │ ├── not-found/
│ │ │ │ │ ├── not-found.component.html
│ │ │ │ │ ├── not-found.component.scss
│ │ │ │ │ └── not-found.component.ts
│ │ │ │ ├── order-summary/
│ │ │ │ │ ├── order-summary.component.html
│ │ │ │ │ ├── order-summary.component.scss
│ │ │ │ │ └── order-summary.component.ts
│ │ │ │ ├── server-error/
│ │ │ │ │ ├── server-error.component.html
│ │ │ │ │ ├── server-error.component.scss
│ │ │ │ │ └── server-error.component.ts
│ │ │ │ └── text-input/
│ │ │ │ ├── text-input.component.html
│ │ │ │ ├── text-input.component.scss
│ │ │ │ └── text-input.component.ts
│ │ │ ├── directives/
│ │ │ │ └── is-admin.ts
│ │ │ ├── models/
│ │ │ │ ├── cart.ts
│ │ │ │ ├── deliveryMethod.ts
│ │ │ │ ├── order.ts
│ │ │ │ ├── orderParams.ts
│ │ │ │ ├── pagination.ts
│ │ │ │ ├── product.ts
│ │ │ │ ├── shopParams.ts
│ │ │ │ └── user.ts
│ │ │ └── pipes/
│ │ │ ├── address-pipe.ts
│ │ │ └── payment-card-pipe.ts
│ │ ├── environments/
│ │ │ ├── environment.development.ts
│ │ │ └── environment.ts
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── styles.scss
│ │ └── tailwind.css
│ ├── ssl/
│ │ ├── localhost-key.pem
│ │ └── localhost.pem
│ ├── tsconfig.app.json
│ ├── tsconfig.json
│ └── tsconfig.spec.json
├── docker-compose.yml
└── skinet.sln
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/main_skinet-course.yml
================================================
# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy
# More GitHub Actions for Azure: https://github.com/Azure/actions
name: Build and deploy ASP.Net Core app to Azure Web App - skinet-course
on:
push:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: windows-latest
permissions:
contents: read #This is required for actions/checkout
steps:
- uses: actions/checkout@v4
- name: Set up node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Install Angular client
run: npm install -g @angular/cli@20
- name: Install deps and build angular app
run: |
cd client
npm install
ng build
- name: Set up .NET Core
uses: actions/setup-dotnet@v4
with:
dotnet-version: 'v9.0'
- name: Build with dotnet
run: dotnet build --configuration Release
- name: dotnet publish
run: dotnet publish -c Release -o "${{env.DOTNET_ROOT}}/myapp"
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v4
with:
name: .net-app
path: ${{env.DOTNET_ROOT}}/myapp
deploy:
runs-on: windows-latest
needs: build
permissions:
id-token: write #This is required for requesting the JWT
contents: read #This is required for actions/checkout
steps:
- name: Download artifact from build job
uses: actions/download-artifact@v4
with:
name: .net-app
- name: Login to Azure
uses: azure/login@v2
with:
client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_899DD360FDD245A2841AB15CAB3E113A }}
tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_1D06ADE227714143858D5F22F17E74DF }}
subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_01C41D2F298348719BF81F3CAAFDF7D1 }}
- name: Deploy to Azure Web App
id: deploy-to-webapp
uses: azure/webapps-deploy@v3
with:
app-name: 'skinet-course'
slot-name: 'Production'
package: .
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from `dotnet new gitignore`
# dotenv files
.env
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET
project.lock.json
project.fragment.lock.json
artifacts/
# Tye
.tye/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# CodeRush personal settings
.cr/personal
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
# Local History for Visual Studio
.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# JetBrains Rider
*.sln.iml
.idea/
##
## Visual studio for Mac
##
# globs
Makefile.in
*.userprefs
*.usertasks
config.make
config.status
aclocal.m4
install-sh
autom4te.cache/
*.tar.gz
tarballs/
test-results/
# Mac bundle stuff
*.dmg
*.app
# content below from: https://github.com/github/gitignore/blob/main/Global/macOS.gitignore
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# content below from: https://github.com/github/gitignore/blob/main/Global/Windows.gitignore
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# Vim temporary swap files
*.swp
================================================
FILE: .vscode/settings.json
================================================
{}
================================================
FILE: API/API.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Infrastructure\Infrastructure.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.6" />
</ItemGroup>
</Project>
================================================
FILE: API/API.http
================================================
@API_HostAddress = http://localhost:5132
GET {{API_HostAddress}}/weatherforecast/
Accept: application/json
###
================================================
FILE: API/Controllers/AccountController.cs
================================================
using System.Security.Claims;
using API.DTOs;
using API.Extensions;
using Core.Entities;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
public class AccountController(SignInManager<AppUser> signInManager) : BaseApiController
{
[HttpPost("register")]
public async Task<ActionResult> Register(RegisterDto registerDto)
{
var user = new AppUser
{
FirstName = registerDto.FirstName,
LastName = registerDto.LastName,
Email = registerDto.Email,
UserName = registerDto.Email
};
var result = await signInManager.UserManager.CreateAsync(user, registerDto.Password);
if (!result.Succeeded)
{
foreach (var error in result.Errors)
{
ModelState.AddModelError(error.Code, error.Description);
}
return ValidationProblem();
}
return Ok();
}
[Authorize]
[HttpPost("logout")]
public async Task<ActionResult> Logout()
{
await signInManager.SignOutAsync();
return NoContent();
}
[HttpGet("user-info")]
public async Task<ActionResult> GetUserInfo()
{
if (User.Identity?.IsAuthenticated == false) return NoContent();
var user = await signInManager.UserManager.GetUserByEmailWithAddress(User);
return Ok(new
{
user.FirstName,
user.LastName,
user.Email,
Address = user.Address?.ToDto(),
Roles = User.FindFirstValue(ClaimTypes.Role)
});
}
[HttpGet("auth-status")]
public ActionResult GetAuthState()
{
return Ok(new
{
IsAuthenticated = User.Identity?.IsAuthenticated ?? false
});
}
[Authorize]
[HttpPost("address")]
public async Task<ActionResult<Address>> CreateOrUpdateAddress(AddressDto addressDto)
{
var user = await signInManager.UserManager.GetUserByEmailWithAddress(User);
if (user.Address == null)
{
user.Address = addressDto.ToEntity();
}
else
{
user.Address.UpdateFromDto(addressDto);
}
var result = await signInManager.UserManager.UpdateAsync(user);
if (!result.Succeeded) return BadRequest("Problem updating user address");
return Ok(user.Address.ToDto());
}
}
================================================
FILE: API/Controllers/AdminController.cs
================================================
using System;
using API.DTOs;
using API.Extensions;
using Core.Entities.OrderAggregate;
using Core.Interfaces;
using Core.Specifications;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
[Authorize(Roles = "Admin")]
public class AdminController(IUnitOfWork unit, IPaymentService paymentService) : BaseApiController
{
[HttpGet("orders")]
public async Task<ActionResult<IReadOnlyList<OrderDto>>> GetOrders([FromQuery] OrderSpecParams specParams)
{
var spec = new OrderSpecification(specParams);
return await CreatePagedResult(unit.Repository<Order>(),
spec, specParams.PageIndex, specParams.PageSize, o => o.ToDto());
}
[HttpGet("orders/{id:int}")]
public async Task<ActionResult<OrderDto>> GetOrderById(int id)
{
var spec = new OrderSpecification(id);
var order = await unit.Repository<Order>().GetEntityWithSpec(spec);
if (order == null) return BadRequest("No order with that Id");
return order.ToDto();
}
[HttpPost("orders/refund/{id:int}")]
public async Task<ActionResult<OrderDto>> RefundOrder(int id)
{
var spec = new OrderSpecification(id);
var order = await unit.Repository<Order>().GetEntityWithSpec(spec);
if (order == null) return BadRequest("No order with that Id");
if (order.Status == OrderStatus.Pending)
return BadRequest("Payment not received for this order");
var result = await paymentService.RefundPayment(order.PaymentIntentId);
if (result == "succeeded")
{
order.Status = OrderStatus.Refunded;
await unit.Complete();
return order.ToDto();
}
return BadRequest("Problem refunding order");
}
}
================================================
FILE: API/Controllers/BaseApiController.cs
================================================
using System;
using API.RequestHelpers;
using Core.Entities;
using Core.Interfaces;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
[ApiController]
[Route("api/[controller]")]
public class BaseApiController : ControllerBase
{
protected async Task<ActionResult> CreatePagedResult<T>(IGenericRepository<T> repository,
ISpecification<T> specification, int pageIndex, int pageSize) where T : BaseEntity
{
var items = await repository.ListAsync(specification);
var totalItems = await repository.CountAsync(specification);
var pagination = new Pagination<T>(pageIndex, pageSize, totalItems, items);
return Ok(pagination);
}
protected async Task<ActionResult> CreatePagedResult<T, TDto>(IGenericRepository<T> repo,
ISpecification<T> spec, int pageIndex, int pageSize, Func<T, TDto> toDto)
where T : BaseEntity, IDtoConvertible
where TDto: class
{
var items = await repo.ListAsync(spec);
var count = await repo.CountAsync(spec);
var dtoItems = items.Select(toDto).ToList();
var pagination = new Pagination<TDto>(pageIndex, pageSize, count, dtoItems);
return Ok(pagination);
}
}
================================================
FILE: API/Controllers/BuggyController.cs
================================================
using System.Security.Claims;
using API.DTOs;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
public class BuggyController : BaseApiController
{
[HttpGet("unauthorized")]
public IActionResult GetUnauthorized()
{
return Unauthorized();
}
[HttpGet("badrequest")]
public IActionResult GetBadRequest()
{
return BadRequest("This is not a good request");
}
[HttpGet("notfound")]
public IActionResult GetNotFound()
{
return NotFound();
}
[HttpGet("internalerror")]
public IActionResult GetInternalError()
{
throw new Exception("This is a test exception");
}
[HttpPost("validationerror")]
public IActionResult GetValidationError(CreateProductDto product)
{
return Ok();
}
[Authorize]
[HttpGet("secret")]
public IActionResult GetSecret()
{
var name = User.FindFirst(ClaimTypes.Name)?.Value;
var id = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
return Ok("Hello " + name + " with the id of " + id);
}
[Authorize(Roles = "Admin")]
[HttpGet("admin-secret")]
public IActionResult GetAdminSecret()
{
var name = User.FindFirst(ClaimTypes.Name)?.Value;
var id = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
var isAdmin = User.IsInRole("Admin");
var roles = User.FindFirstValue(ClaimTypes.Role);
return Ok(new
{
name,
id,
isAdmin,
roles
});
}
}
================================================
FILE: API/Controllers/CartController.cs
================================================
using System;
using Core.Entities;
using Core.Interfaces;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
public class CartController(ICartService cartService) : BaseApiController
{
[HttpGet]
public async Task<ActionResult<ShoppingCart>> GetCartById(string id)
{
var cart = await cartService.GetCartAsync(id);
return Ok(cart ?? new ShoppingCart{Id = id});
}
[HttpPost]
public async Task<ActionResult<ShoppingCart>> UpdateCart(ShoppingCart cart)
{
var updatedCart = await cartService.SetCartAsync(cart);
return Ok(updatedCart);
}
[HttpDelete]
public async Task DeleteCart(string id)
{
await cartService.DeleteCartAsync(id);
}
}
================================================
FILE: API/Controllers/CouponsController.cs
================================================
using System;
using Core.Entities;
using Core.Interfaces;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
public class CouponsController(ICouponService couponService) : BaseApiController
{
[HttpGet("{code}")]
public async Task<ActionResult<AppCoupon>> ValidateCoupon(string code)
{
var coupon = await couponService.GetCouponFromPromoCode(code);
if (coupon == null) return BadRequest("Invalid voucher code");
return coupon;
}
}
================================================
FILE: API/Controllers/FallbackController.cs
================================================
using System;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
public class FallbackController : Controller
{
public IActionResult Index()
{
return PhysicalFile(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot",
"index.html"), "text/HTML");
}
}
================================================
FILE: API/Controllers/OrdersController.cs
================================================
using System;
using API.DTOs;
using API.Extensions;
using Core.Entities;
using Core.Entities.OrderAggregate;
using Core.Interfaces;
using Core.Specifications;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
[Authorize]
public class OrdersController(ICartService cartService, IUnitOfWork unit) : BaseApiController
{
[HttpPost]
public async Task<ActionResult<Order>> CreateOrder(CreateOrderDto orderDto)
{
var email = User.GetEmail();
var cart = await cartService.GetCartAsync(orderDto.CartId);
if (cart == null) return BadRequest("Cart not found");
if (cart.PaymentIntentId == null) return BadRequest("No payment intent for this order");
var items = new List<OrderItem>();
foreach (var item in cart.Items)
{
var productItem = await unit.Repository<Product>().GetByIdAsync(item.ProductId);
if (productItem == null) return BadRequest("Problem with the order");
var itemOrdered = new ProductItemOrdered
{
ProductId = item.ProductId,
ProductName = item.ProductName,
PictureUrl = item.PictureUrl
};
var orderItem = new OrderItem
{
ItemOrdered = itemOrdered,
Price = productItem.Price,
Quantity = item.Quantity
};
items.Add(orderItem);
}
var deliveryMethod = await unit.Repository<DeliveryMethod>().GetByIdAsync(orderDto.DeliveryMethodId);
if (deliveryMethod == null) return BadRequest("No delivery method selected");
var order = new Order
{
OrderItems = items,
DeliveryMethod = deliveryMethod,
ShippingAddress = orderDto.ShippingAddress,
Subtotal = items.Sum(x => x.Price * x.Quantity),
Discount = orderDto.Discount,
PaymentSummary = orderDto.PaymentSummary,
PaymentIntentId = cart.PaymentIntentId,
BuyerEmail = email
};
unit.Repository<Order>().Add(order);
if (await unit.Complete())
{
return order;
}
return BadRequest("Problem creating order");
}
[HttpGet]
public async Task<ActionResult<IReadOnlyList<OrderDto>>> GetOrdersForUser()
{
var spec = new OrderSpecification(User.GetEmail());
var orders = await unit.Repository<Order>().ListAsync(spec);
var ordersToReturn = orders.Select(o => o.ToDto()).ToList();
return Ok(ordersToReturn);
}
[HttpGet("{id:int}")]
public async Task<ActionResult<OrderDto>> GetOrderById(int id)
{
var spec = new OrderSpecification(User.GetEmail(), id);
var order = await unit.Repository<Order>().GetEntityWithSpec(spec);
if (order == null) return NotFound();
return order.ToDto();
}
}
================================================
FILE: API/Controllers/PaymentsController.cs
================================================
using System;
using API.Extensions;
using API.SignalR;
using Core.Entities;
using Core.Entities.OrderAggregate;
using Core.Interfaces;
using Core.Specifications;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.SignalR;
using Stripe;
namespace API.Controllers;
public class PaymentsController(IPaymentService paymentService,
IUnitOfWork unit,
IHubContext<NotificationHub> hubContext,
ILogger<PaymentsController> logger,
IConfiguration config) : BaseApiController
{
private readonly string _whSecret = config["StripeSettings:WhSecret"]!;
[Authorize]
[HttpPost("{cartId}")]
public async Task<ActionResult> CreateOrUpdatePaymentIntent(string cartId)
{
var cart = await paymentService.CreateOrUpdatePaymentIntent(cartId);
if (cart == null) return BadRequest("Problem with your cart on the API");
return Ok(cart);
}
[HttpGet("delivery-methods")]
public async Task<ActionResult<IReadOnlyList<DeliveryMethod>>> GetDeliveryMethods()
{
return Ok(await unit.Repository<DeliveryMethod>().ListAllAsync());
}
[HttpPost("webhook")]
public async Task<IActionResult> StripeWebhook()
{
var json = await new StreamReader(Request.Body).ReadToEndAsync();
try
{
var stripeEvent = ConstructStripeEvent(json);
if (stripeEvent.Data.Object is not PaymentIntent intent)
{
return BadRequest("Invalid event data.");
}
await HandlePaymentIntentSucceeded(intent);
return Ok();
}
catch (StripeException ex)
{
logger.LogError(ex, "Stripe webhook error");
return StatusCode(StatusCodes.Status500InternalServerError, "Webhook error");
}
catch (Exception ex)
{
logger.LogError(ex, "An unexpected error occurred");
return StatusCode(StatusCodes.Status500InternalServerError, "An unexpected error occurred");
}
}
private Event ConstructStripeEvent(string json)
{
try
{
return EventUtility.ConstructEvent(json, Request.Headers["Stripe-Signature"], _whSecret);
}
catch (Exception ex)
{
logger.LogError(ex, "Failed to construct Stripe event");
throw new StripeException("Invalid signature");
}
}
private async Task HandlePaymentIntentSucceeded(PaymentIntent intent)
{
if (intent.Status == "succeeded")
{
var spec = new OrderSpecification(intent.Id, true);
var order = await unit.Repository<Order>().GetEntityWithSpec(spec)
?? throw new Exception("Order not found");
var orderTotalInCents = (long)Math.Round(order.GetTotal() * 100,
MidpointRounding.AwayFromZero);
if (orderTotalInCents != intent.Amount)
{
order.Status = OrderStatus.PaymentMismatch;
}
else
{
order.Status = OrderStatus.PaymentReceived;
}
await unit.Complete();
var connectionId = NotificationHub.GetConnectionIdByEmail(order.BuyerEmail);
if (!string.IsNullOrEmpty(connectionId))
{
await hubContext.Clients.Client(connectionId).SendAsync("OrderCompleteNotification",
order.ToDto());
}
}
}
}
================================================
FILE: API/Controllers/ProductsController.cs
================================================
using API.RequestHelpers;
using Core.Entities;
using Core.Interfaces;
using Core.Specifications;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
public class ProductsController(IUnitOfWork unit) : BaseApiController
{
[Cached(100000)]
[HttpGet]
public async Task<ActionResult<IReadOnlyList<Product>>> GetProducts([FromQuery]ProductSpecParams productParams)
{
var spec = new ProductSpecification(productParams);
return await CreatePagedResult(unit.Repository<Product>(), spec,
productParams.PageIndex, productParams.PageSize);
}
[Cached(100000)]
[HttpGet("{id}")]
public async Task<ActionResult<Product>> GetProduct(int id)
{
var product = await unit.Repository<Product>().GetByIdAsync(id);
if (product == null) return NotFound();
return product;
}
[InvalidateCache("api/products|")]
[Authorize(Roles = "Admin")]
[HttpPost]
public async Task<ActionResult<Product>> CreateProduct(Product product)
{
unit.Repository<Product>().Add(product);
if (await unit.Complete())
{
return CreatedAtAction("GetProduct", new { id = product.Id }, product);
};
return BadRequest("Problem creating product");
}
[InvalidateCache("api/products|")]
[Authorize(Roles = "Admin")]
[HttpPut("{id}")]
public async Task<IActionResult> UpdateProduct(int id, Product product)
{
if (id != product.Id || !ProductExists(id)) return BadRequest("Cannot update this product");
unit.Repository<Product>().Update(product);
if (await unit.Complete())
{
return NoContent();
};
return BadRequest("Problem updating the product");
}
[InvalidateCache("api/products|")]
[Authorize(Roles = "Admin")]
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteProduct(int id)
{
var product = await unit.Repository<Product>().GetByIdAsync(id);
if (product == null) return NotFound();
unit.Repository<Product>().Remove(product);
if (await unit.Complete())
{
return NoContent();
};
return BadRequest("Problem deleting the product");
}
[Cached(100000)]
[HttpGet("brands")]
public async Task<ActionResult<IReadOnlyList<string>>> GetBrands()
{
var spec = new BrandListSpecification();
return Ok(await unit.Repository<Product>().ListAsync(spec));
}
[Cached(100000)]
[HttpGet("types")]
public async Task<ActionResult<IReadOnlyList<string>>> GetTypes()
{
var spec = new TypeListSpecification();
return Ok(await unit.Repository<Product>().ListAsync(spec));
}
private bool ProductExists(int id)
{
return unit.Repository<Product>().Exists(id);
}
}
================================================
FILE: API/Controllers/WeatherForecastController.cs
================================================
using Microsoft.AspNetCore.Mvc;
namespace API.Controllers;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
================================================
FILE: API/DTOs/AddressDto.cs
================================================
using System;
using System.ComponentModel.DataAnnotations;
namespace API.DTOs;
public class AddressDto
{
[Required] public string Line1 { get; set; } = string.Empty;
public string? Line2 { get; set; }
[Required] public string City { get; set; } = string.Empty;
[Required] public string State { get; set; } = string.Empty;
[Required] public string PostalCode { get; set; } = string.Empty;
[Required] public string Country { get; set; } = string.Empty;
}
================================================
FILE: API/DTOs/CreateOrderDto.cs
================================================
using System;
using System.ComponentModel.DataAnnotations;
using Core.Entities.OrderAggregate;
namespace API.DTOs;
public class CreateOrderDto
{
[Required]
public string CartId { get; set; } = string.Empty;
[Required]
public int DeliveryMethodId { get; set; }
[Required]
public ShippingAddress ShippingAddress { get; set; } = null!;
[Required]
public PaymentSummary PaymentSummary { get; set; } = null!;
public decimal Discount { get; set; }
}
================================================
FILE: API/DTOs/CreateProductDto.cs
================================================
using System;
using System.ComponentModel.DataAnnotations;
namespace API.DTOs;
public class CreateProductDto
{
[Required] public string Name { get; set; } = string.Empty;
[Required] public string Description { get; set; } = string.Empty;
[Range(0.01, double.MaxValue, ErrorMessage = "Price must be greater than 0")]
[Required] public decimal Price { get; set; }
[Required] public string PictureUrl { get; set; } = string.Empty;
[Required] public string Type { get; set; } = string.Empty;
[Required] public string Brand { get; set; } = string.Empty;
[Range(1, int.MaxValue, ErrorMessage = "QuantityInStock must be at least 1")]
[Required] public int QuantityInStock { get; set; }
}
================================================
FILE: API/DTOs/OrderDto.cs
================================================
using System;
using Core.Entities.OrderAggregate;
namespace API.DTOs;
public class OrderDto
{
public int Id { get; set; }
public DateTime OrderDate { get; set; }
public required string BuyerEmail { get; set; }
public required ShippingAddress ShippingAddress { get; set; }
public required string DeliveryMethod { get; set; }
public required PaymentSummary PaymentSummary { get; set; }
public decimal ShippingPrice { get; set; }
public required List<OrderItemDto> OrderItems { get; set; }
public decimal Subtotal { get; set; }
public decimal Discount { get; set; }
public required string Status { get; set; }
public decimal Total { get; set; }
public required string PaymentIntentId { get; set; }
}
================================================
FILE: API/DTOs/OrderItemDto.cs
================================================
using System;
namespace API.DTOs;
public class OrderItemDto
{
public int ProductId { get; set; }
public required string ProductName { get; set; }
public required string PictureUrl { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}
================================================
FILE: API/DTOs/RegisterDto.cs
================================================
using System;
using System.ComponentModel.DataAnnotations;
namespace API.DTOs;
public class RegisterDto
{
[Required] public string FirstName { get; set; } = string.Empty;
[Required] public string LastName { get; set; } = string.Empty;
[Required] public string Email { get; set; } = string.Empty;
[Required] public string Password { get; set; } = string.Empty;
}
================================================
FILE: API/Errors/ApiErrorResponse.cs
================================================
using System;
namespace API.Errors;
public class ApiErrorResponse(int statusCode, string message, string? details)
{
public int StatusCode { get; set; } = statusCode;
public string Message { get; set; } = message;
public string? Details { get; set; } = details;
}
================================================
FILE: API/Extensions/AddressMappingExtensions.cs
================================================
using System;
using API.DTOs;
using Core.Entities;
namespace API.Extensions;
public static class AddressMappingExtensions
{
public static AddressDto? ToDto(this Address? address)
{
if (address == null) return null;
return new AddressDto
{
Line1 = address.Line1,
Line2 = address.Line2,
City = address.City,
State = address.State,
Country = address.Country,
PostalCode = address.PostalCode
};
}
public static Address ToEntity(this AddressDto addressDto)
{
if (addressDto == null) throw new ArgumentNullException(nameof(addressDto));
return new Address
{
Line1 = addressDto.Line1,
Line2 = addressDto.Line2,
City = addressDto.City,
State = addressDto.State,
Country = addressDto.Country,
PostalCode = addressDto.PostalCode
};
}
public static void UpdateFromDto(this Address address, AddressDto addressDto)
{
if (addressDto == null) throw new ArgumentNullException(nameof(addressDto));
if (address == null) throw new ArgumentNullException(nameof(address));
address.Line1 = addressDto.Line1;
address.Line2 = addressDto.Line2;
address.City = addressDto.City;
address.State = addressDto.State;
address.Country = addressDto.Country;
address.PostalCode = addressDto.PostalCode;
}
}
================================================
FILE: API/Extensions/ClaimsPrincipalExtensions.cs
================================================
using System;
using System.Security.Authentication;
using System.Security.Claims;
using Core.Entities;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
namespace API.Extensions;
public static class ClaimsPrincipleExtensions
{
public static async Task<AppUser> GetUserByEmail(this UserManager<AppUser> userManager, ClaimsPrincipal user)
{
var userToReturn = await userManager.Users.FirstOrDefaultAsync(x =>
x.Email == user.GetEmail());
if (userToReturn == null) throw new AuthenticationException("User not found");
return userToReturn;
}
public static async Task<AppUser> GetUserByEmailWithAddress(this UserManager<AppUser> userManager, ClaimsPrincipal user)
{
var userToReturn = await userManager.Users
.Include(x => x.Address)
.FirstOrDefaultAsync(x => x.Email == user.GetEmail());
if (userToReturn == null) throw new AuthenticationException("User not found");
return userToReturn;
}
public static string GetEmail(this ClaimsPrincipal user)
{
var email = user.FindFirstValue(ClaimTypes.Email)
?? throw new AuthenticationException("Email claim not found");
return email;
}
}
================================================
FILE: API/Extensions/OrderMappingExtensions.cs
================================================
using System;
using API.DTOs;
using Core.Entities.OrderAggregate;
namespace API.Extensions;
public static class OrderMappingExtensions
{
public static OrderDto ToDto(this Order order)
{
return new OrderDto
{
Id = order.Id,
BuyerEmail = order.BuyerEmail,
OrderDate = order.OrderDate,
ShippingAddress = order.ShippingAddress,
PaymentSummary = order.PaymentSummary,
DeliveryMethod = order.DeliveryMethod.Description,
ShippingPrice = order.DeliveryMethod.Price,
OrderItems = order.OrderItems.Select(x => x.ToDto()).ToList(),
Subtotal = order.Subtotal,
Discount = order.Discount,
Status = order.Status.ToString(),
PaymentIntentId = order.PaymentIntentId,
Total = order.GetTotal()
};
}
public static OrderItemDto ToDto(this OrderItem orderItem)
{
return new OrderItemDto
{
ProductId = orderItem.ItemOrdered.ProductId,
ProductName = orderItem.ItemOrdered.ProductName,
PictureUrl = orderItem.ItemOrdered.PictureUrl,
Price = orderItem.Price,
Quantity = orderItem.Quantity
};
}
}
================================================
FILE: API/Middleware/ExceptionMiddleware.cs
================================================
using System;
using System.Net;
using System.Text.Json;
using API.Errors;
namespace API.Middleware;
public class ExceptionMiddleware(IHostEnvironment env, RequestDelegate next)
{
public async Task InvokeAsync(HttpContext context)
{
try
{
await next(context);
}
catch (Exception e)
{
await HandleExceptionAsync(context, e, env);
}
}
private static Task HandleExceptionAsync(HttpContext context, Exception e, IHostEnvironment env)
{
context.Response.ContentType = "application/json";
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
var response = env.IsDevelopment()
? new ApiErrorResponse(context.Response.StatusCode, e.Message, e.StackTrace)
: new ApiErrorResponse(context.Response.StatusCode, e.Message, "Internal Server error");
var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase };
var json = JsonSerializer.Serialize(response, options);
return context.Response.WriteAsync(json);
}
}
================================================
FILE: API/Program.cs
================================================
using API.Middleware;
using API.SignalR;
using Core.Entities;
using Core.Interfaces;
using Infrastructure.Data;
using Infrastructure.Services;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using StackExchange.Redis;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddDbContext<StoreContext>(opt =>
{
opt.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection"));
});
builder.Services.AddScoped<IProductRepository, ProductRepository>();
builder.Services.AddScoped(typeof(IGenericRepository<>), typeof(GenericRepository<>));
builder.Services.AddScoped<IUnitOfWork, UnitOfWork>();
builder.Services.AddScoped<IPaymentService, PaymentService>();
builder.Services.AddScoped<ICouponService, CouponService>();
builder.Services.AddCors();
builder.Services.AddSingleton<IConnectionMultiplexer>(config =>
{
var connectionString = builder.Configuration.GetConnectionString("Redis")
?? throw new Exception("Cannot get redis connection string");
var configuation = ConfigurationOptions.Parse(connectionString, true);
return ConnectionMultiplexer.Connect(configuation);
});
builder.Services.AddSingleton<ICartService, CartService>();
builder.Services.AddSingleton<IResponseCacheService, ResponseCacheService>();
builder.Services.AddAuthorization();
builder.Services.AddIdentityApiEndpoints<AppUser>()
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<StoreContext>();
builder.Services.AddSignalR();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseMiddleware<ExceptionMiddleware>();
app.UseCors(x => x
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.WithOrigins("http://localhost:4200", "https://localhost:4200"));
app.UseAuthentication();
app.UseAuthorization();
app.UseDefaultFiles();
app.UseStaticFiles();
app.MapControllers();
app.MapGroup("api").MapIdentityApi<AppUser>();
app.MapHub<NotificationHub>("/hub/notifications");
app.MapFallbackToController("Index", "Fallback");
try
{
using var scope = app.Services.CreateScope();
var services = scope.ServiceProvider;
var context = services.GetRequiredService<StoreContext>();
var userManager = services.GetRequiredService<UserManager<AppUser>>();
await context.Database.MigrateAsync();
await StoreContextSeed.SeedAsync(context, userManager);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
app.Run();
================================================
FILE: API/Properties/launchSettings.json
================================================
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": false,
"applicationUrl": "https://localhost:5001",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
================================================
FILE: API/RequestHelpers/CachedAttribute.cs
================================================
using System;
using System.Text;
using Core.Interfaces;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
namespace API.RequestHelpers;
[AttributeUsage(AttributeTargets.All)]
public class CachedAttribute(int timeToLiveSeconds) : Attribute, IAsyncActionFilter
{
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
var cacheService = context.HttpContext.RequestServices
.GetRequiredService<IResponseCacheService>();
var cacheKey = GenerateCacheKeyFromRequest(context.HttpContext.Request);
var cachedResponse = await cacheService.GetCachedResponseAsync(cacheKey);
if (!string.IsNullOrEmpty(cachedResponse))
{
var contentResult = new ContentResult
{
Content = cachedResponse,
ContentType = "application/json",
StatusCode = 200
};
context.Result = contentResult;
return;
}
var executedContext = await next(); // move to controller
if (executedContext.Result is OkObjectResult okObjectResult)
{
if (okObjectResult.Value != null)
{
await cacheService.CacheResponseAsync(cacheKey, okObjectResult.Value,
TimeSpan.FromSeconds(timeToLiveSeconds));
}
}
}
private static string GenerateCacheKeyFromRequest(HttpRequest request)
{
var keyBuilder = new StringBuilder();
keyBuilder.Append($"{request.Path}");
foreach (var (key, value) in request.Query.OrderBy(x => x.Key))
{
keyBuilder.Append($"|{key}-{value}");
}
return keyBuilder.ToString();
}
}
================================================
FILE: API/RequestHelpers/InvalidateCacheAttribute.cs
================================================
using System;
using Core.Interfaces;
using Microsoft.AspNetCore.Mvc.Filters;
namespace API.RequestHelpers;
[AttributeUsage(AttributeTargets.Method)]
public class InvalidateCacheAttribute(string pattern) : Attribute, IAsyncActionFilter
{
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
var resultContext = await next();
if (resultContext.Exception == null || resultContext.ExceptionHandled)
{
var cacheService = context.HttpContext.RequestServices
.GetRequiredService<IResponseCacheService>();
await cacheService.RemoveCacheByPattern(pattern);
}
}
}
================================================
FILE: API/RequestHelpers/Pagination.cs
================================================
using System;
namespace API.RequestHelpers;
public class Pagination<T>(int pageIndex, int pageSize, int count, IReadOnlyList<T> data)
where T : class
{
public int PageIndex { get; set; } = pageIndex;
public int PageSize { get; set; } = pageSize;
public int Count { get; set; } = count;
public IReadOnlyList<T> Data { get; set; } = data;
}
================================================
FILE: API/SignalR/NotificationHub.cs
================================================
using System;
using System.Collections.Concurrent;
using API.Extensions;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.SignalR;
namespace API.SignalR;
[Authorize]
public class NotificationHub : Hub
{
private static readonly ConcurrentDictionary<string, string> UserConnections = new();
public override Task OnConnectedAsync()
{
var email = Context.User?.GetEmail();
if (!string.IsNullOrEmpty(email))
UserConnections[email] = Context.ConnectionId;
return base.OnConnectedAsync();
}
public override Task OnDisconnectedAsync(Exception? exception)
{
var email = Context.User?.GetEmail();
if (!string.IsNullOrEmpty(email))
UserConnections.TryRemove(email, out _);
return base.OnDisconnectedAsync(exception);
}
public static string? GetConnectionIdByEmail(string email)
{
UserConnections.TryGetValue(email, out var connectionId);
return connectionId;
}
}
================================================
FILE: API/WeatherForecast.cs
================================================
namespace API;
public class WeatherForecast
{
public DateOnly Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string? Summary { get; set; }
}
================================================
FILE: API/appsettings.Development.json
================================================
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Information"
}
},
"ConnectionStrings": {
"DefaultConnection": "Server=localhost,1433;Database=skinet;User Id=SA;Password=Password@1;TrustServerCertificate=True",
"Redis": "localhost"
}
}
================================================
FILE: API/wwwroot/3rdpartylicenses.txt
================================================
--------------------------------------------------------------------------------
Package: @angular/material
License: "MIT"
The MIT License
Copyright (c) 2025 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/cdk
License: "MIT"
The MIT License
Copyright (c) 2025 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: nanoid
License: "MIT"
The MIT License (MIT)
Copyright 2017 Andrey Sitnik <andrey@sitnik.ru>
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: @stripe/stripe-js
License: "MIT"
MIT License
Copyright (c) 2017 Stripe
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/forms
License: "MIT"
The MIT License
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
--------------------------------------------------------------------------------
Package: @angular/core
License: "MIT"
The MIT License
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
--------------------------------------------------------------------------------
Package: rxjs
License: "Apache-2.0"
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--------------------------------------------------------------------------------
Package: tslib
License: "0BSD"
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
--------------------------------------------------------------------------------
Package: @angular/common
License: "MIT"
The MIT License
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
--------------------------------------------------------------------------------
Package: @angular/platform-browser
License: "MIT"
The MIT License
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
--------------------------------------------------------------------------------
Package: @angular/router
License: "MIT"
The MIT License
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
--------------------------------------------------------------------------------
Package: @microsoft/signalr
License: "MIT"
--------------------------------------------------------------------------------
Package: zone.js
License: "MIT"
The MIT License
Copyright (c) 2010-2025 Google LLC. https://angular.dev/license
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
--------------------------------------------------------------------------------
================================================
FILE: API/wwwroot/chunk-6SXQ2FRE.js
================================================
import{f as t,g as m}from"./chunk-SP3SSILU.js";import"./chunk-MIKQGBUF.js";import"./chunk-HJYZM75B.js";import{a as o}from"./chunk-NEILRAN2.js";import"./chunk-YYNGFOZ2.js";import"./chunk-76XFCVV7.js";var i=[{path:"admin",component:t,canActivate:[o,m]}];export{i as adminRoutes};
================================================
FILE: API/wwwroot/chunk-76XFCVV7.js
================================================
var TD=Object.defineProperty,SD=Object.defineProperties;var MD=Object.getOwnPropertyDescriptors;var am=Object.getOwnPropertySymbols;var xD=Object.prototype.hasOwnProperty,RD=Object.prototype.propertyIsEnumerable;var cm=(e,t,n)=>t in e?TD(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,v=(e,t)=>{for(var n in t||={})xD.call(t,n)&&cm(e,n,t[n]);if(am)for(var n of am(t))RD.call(t,n)&&cm(e,n,t[n]);return e},U=(e,t)=>SD(e,MD(t));var $r=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var F=(e,t,n)=>new Promise((r,o)=>{var i=c=>{try{a(n.next(c))}catch(l){o(l)}},s=c=>{try{a(n.throw(c))}catch(l){o(l)}},a=c=>c.done?r(c.value):Promise.resolve(c.value).then(i,s);a((n=n.apply(e,t)).next())});var vu;function yu(){return vu}function en(e){let t=vu;return vu=e,t}var AD=Symbol("NotFound"),Hs=class extends Error{name="\u0275NotFound";constructor(t){super(t)}};function zr(e){return e===AD||e?.name==="\u0275NotFound"}function qs(e,t){return Object.is(e,t)}var ye=null,$s=!1,bu=1,ND=null,be=Symbol("SIGNAL");function M(e){let t=ye;return ye=e,t}function Zs(){return ye}var Dn={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,kind:"unknown",producerMustRecompute:()=>!1,producerRecomputeValue:()=>{},consumerMarkedDirty:()=>{},consumerOnSignalRead:()=>{}};function Jn(e){if($s)throw new Error("");if(ye===null)return;ye.consumerOnSignalRead(e);let t=ye.nextProducerIndex++;if(Qs(ye),t<ye.producerNode.length&&ye.producerNode[t]!==e&&Jo(ye)){let n=ye.producerNode[t];Ks(n,ye.producerIndexOfThis[t])}ye.producerNode[t]!==e&&(ye.producerNode[t]=e,ye.producerIndexOfThis[t]=Jo(ye)?um(e,ye,t):0),ye.producerLastReadVersion[t]=e.version}function lm(){bu++}function Ys(e){if(!(Jo(e)&&!e.dirty)&&!(!e.dirty&&e.lastCleanEpoch===bu)){if(!e.producerMustRecompute(e)&&!er(e)){Gs(e);return}e.producerRecomputeValue(e),Gs(e)}}function _u(e){if(e.liveConsumerNode===void 0)return;let t=$s;$s=!0;try{for(let n of e.liveConsumerNode)n.dirty||OD(n)}finally{$s=t}}function Eu(){return ye?.consumerAllowSignalWrites!==!1}function OD(e){e.dirty=!0,_u(e),e.consumerMarkedDirty?.(e)}function Gs(e){e.dirty=!1,e.lastCleanEpoch=bu}function tn(e){return e&&(e.nextProducerIndex=0),M(e)}function wn(e,t){if(M(t),!(!e||e.producerNode===void 0||e.producerIndexOfThis===void 0||e.producerLastReadVersion===void 0)){if(Jo(e))for(let n=e.nextProducerIndex;n<e.producerNode.length;n++)Ks(e.producerNode[n],e.producerIndexOfThis[n]);for(;e.producerNode.length>e.nextProducerIndex;)e.producerNode.pop(),e.producerLastReadVersion.pop(),e.producerIndexOfThis.pop()}}function er(e){Qs(e);for(let t=0;t<e.producerNode.length;t++){let n=e.producerNode[t],r=e.producerLastReadVersion[t];if(r!==n.version||(Ys(n),r!==n.version))return!0}return!1}function Wr(e){if(Qs(e),Jo(e))for(let t=0;t<e.producerNode.length;t++)Ks(e.producerNode[t],e.producerIndexOfThis[t]);e.producerNode.length=e.producerLastReadVersion.length=e.producerIndexOfThis.length=0,e.liveConsumerNode&&(e.liveConsumerNode.length=e.liveConsumerIndexOfThis.length=0)}function um(e,t,n){if(dm(e),e.liveConsumerNode.length===0&&fm(e))for(let r=0;r<e.producerNode.length;r++)e.producerIndexOfThis[r]=um(e.producerNode[r],e,r);return e.liveConsumerIndexOfThis.push(n),e.liveConsumerNode.push(t)-1}function Ks(e,t){if(dm(e),e.liveConsumerNode.length===1&&fm(e))for(let r=0;r<e.producerNode.length;r++)Ks(e.producerNode[r],e.producerIndexOfThis[r]);let n=e.liveConsumerNode.length-1;if(e.liveConsumerNode[t]=e.liveConsumerNode[n],e.liveConsumerIndexOfThis[t]=e.liveConsumerIndexOfThis[n],e.liveConsumerNode.length--,e.liveConsumerIndexOfThis.length--,t<e.liveConsumerNode.length){let r=e.liveConsumerIndexOfThis[t],o=e.liveConsumerNode[t];Qs(o),o.producerIndexOfThis[r]=t}}function Jo(e){return e.consumerIsAlwaysLive||(e?.liveConsumerNode?.length??0)>0}function Qs(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producerLastReadVersion??=[]}function dm(e){e.liveConsumerNode??=[],e.liveConsumerIndexOfThis??=[]}function fm(e){return e.producerNode!==void 0}function Xs(e){ND?.(e)}function ei(e,t){let n=Object.create(kD);n.computation=e,t!==void 0&&(n.equal=t);let r=()=>{if(Ys(n),Jn(n),n.value===Xo)throw n.error;return n.value};return r[be]=n,Xs(n),r}var zs=Symbol("UNSET"),Ws=Symbol("COMPUTING"),Xo=Symbol("ERRORED"),kD=U(v({},Dn),{value:zs,dirty:!0,error:null,equal:qs,kind:"computed",producerMustRecompute(e){return e.value===zs||e.value===Ws},producerRecomputeValue(e){if(e.value===Ws)throw new Error("");let t=e.value;e.value=Ws;let n=tn(e),r,o=!1;try{r=e.computation(),M(null),o=t!==zs&&t!==Xo&&r!==Xo&&e.equal(t,r)}catch(i){r=Xo,e.error=i}finally{wn(e,n)}if(o){e.value=t;return}e.value=r,e.version++}});function PD(){throw new Error}var hm=PD;function pm(e){hm(e)}function Du(e){hm=e}var FD=null;function wu(e,t){let n=Object.create(ti);n.value=e,t!==void 0&&(n.equal=t);let r=()=>mm(n);return r[be]=n,Xs(n),[r,s=>Gr(n,s),s=>Iu(n,s)]}function mm(e){return Jn(e),e.value}function Gr(e,t){Eu()||pm(e),e.equal(e.value,t)||(e.value=t,LD(e))}function Iu(e,t){Eu()||pm(e),Gr(e,t(e.value))}var ti=U(v({},Dn),{equal:qs,value:void 0,kind:"signal"});function LD(e){e.version++,lm(),_u(e),FD?.(e)}function k(e){return typeof e=="function"}function qr(e){let n=e(r=>{Error.call(r),r.stack=new Error().stack});return n.prototype=Object.create(Error.prototype),n.prototype.constructor=n,n}var Js=qr(e=>function(n){e(this),this.message=n?`${n.length} errors occurred during unsubscription:
${n.map((r,o)=>`${o+1}) ${r.toString()}`).join(`
`)}`:"",this.name="UnsubscriptionError",this.errors=n});function tr(e,t){if(e){let n=e.indexOf(t);0<=n&&e.splice(n,1)}}var ie=class e{constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let t;if(!this.closed){this.closed=!0;let{_parentage:n}=this;if(n)if(this._parentage=null,Array.isArray(n))for(let i of n)i.remove(this);else n.remove(this);let{initialTeardown:r}=this;if(k(r))try{r()}catch(i){t=i instanceof Js?i.errors:[i]}let{_finalizers:o}=this;if(o){this._finalizers=null;for(let i of o)try{gm(i)}catch(s){t=t??[],s instanceof Js?t=[...t,...s.errors]:t.push(s)}}if(t)throw new Js(t)}}add(t){var n;if(t&&t!==this)if(this.closed)gm(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(n=this._finalizers)!==null&&n!==void 0?n:[]).push(t)}}_hasParent(t){let{_parentage:n}=this;return n===t||Array.isArray(n)&&n.includes(t)}_addParent(t){let{_parentage:n}=this;this._parentage=Array.isArray(n)?(n.push(t),n):n?[n,t]:t}_removeParent(t){let{_parentage:n}=this;n===t?this._parentage=null:Array.isArray(n)&&tr(n,t)}remove(t){let{_finalizers:n}=this;n&&tr(n,t),t instanceof e&&t._removeParent(this)}};ie.EMPTY=(()=>{let e=new ie;return e.closed=!0,e})();var Cu=ie.EMPTY;function ea(e){return e instanceof ie||e&&"closed"in e&&k(e.remove)&&k(e.add)&&k(e.unsubscribe)}function gm(e){k(e)?e():e.unsubscribe()}var mt={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Zr={setTimeout(e,t,...n){let{delegate:r}=Zr;return r?.setTimeout?r.setTimeout(e,t,...n):setTimeout(e,t,...n)},clearTimeout(e){let{delegate:t}=Zr;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function ta(e){Zr.setTimeout(()=>{let{onUnhandledError:t}=mt;if(t)t(e);else throw e})}function nr(){}var vm=Tu("C",void 0,void 0);function ym(e){return Tu("E",void 0,e)}function bm(e){return Tu("N",e,void 0)}function Tu(e,t,n){return{kind:e,value:t,error:n}}var rr=null;function Yr(e){if(mt.useDeprecatedSynchronousErrorHandling){let t=!rr;if(t&&(rr={errorThrown:!1,error:null}),e(),t){let{errorThrown:n,error:r}=rr;if(rr=null,n)throw r}}else e()}function _m(e){mt.useDeprecatedSynchronousErrorHandling&&rr&&(rr.errorThrown=!0,rr.error=e)}var or=class extends ie{constructor(t){super(),this.isStopped=!1,t?(this.destination=t,ea(t)&&t.add(this)):this.destination=UD}static create(t,n,r){return new gt(t,n,r)}next(t){this.isStopped?Mu(bm(t),this):this._next(t)}error(t){this.isStopped?Mu(ym(t),this):(this.isStopped=!0,this._error(t))}complete(){this.isStopped?Mu(vm,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(t){this.destination.next(t)}_error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}},jD=Function.prototype.bind;function Su(e,t){return jD.call(e,t)}var xu=class{constructor(t){this.partialObserver=t}next(t){let{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){na(r)}}error(t){let{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){na(r)}else na(t)}complete(){let{partialObserver:t}=this;if(t.complete)try{t.complete()}catch(n){na(n)}}},gt=class extends or{constructor(t,n,r){super();let o;if(k(t)||!t)o={next:t??void 0,error:n??void 0,complete:r??void 0};else{let i;this&&mt.useDeprecatedNextContext?(i=Object.create(t),i.unsubscribe=()=>this.unsubscribe(),o={next:t.next&&Su(t.next,i),error:t.error&&Su(t.error,i),complete:t.complete&&Su(t.complete,i)}):o=t}this.destination=new xu(o)}};function na(e){mt.useDeprecatedSynchronousErrorHandling?_m(e):ta(e)}function BD(e){throw e}function Mu(e,t){let{onStoppedNotification:n}=mt;n&&Zr.setTimeout(()=>n(e,t))}var UD={closed:!0,next:nr,error:BD,complete:nr};var Kr=typeof Symbol=="function"&&Symbol.observable||"@@observable";function Ae(e){return e}function Ru(...e){return Au(e)}function Au(e){return e.length===0?Ae:e.length===1?e[0]:function(n){return e.reduce((r,o)=>o(r),n)}}var P=(()=>{class e{constructor(n){n&&(this._subscribe=n)}lift(n){let r=new e;return r.source=this,r.operator=n,r}subscribe(n,r,o){let i=HD(n)?n:new gt(n,r,o);return Yr(()=>{let{operator:s,source:a}=this;i.add(s?s.call(i,a):a?this._subscribe(i):this._trySubscribe(i))}),i}_trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}forEach(n,r){return r=Em(r),new r((o,i)=>{let s=new gt({next:a=>{try{n(a)}catch(c){i(c),s.unsubscribe()}},error:i,complete:o});this.subscribe(s)})}_subscribe(n){var r;return(r=this.source)===null||r===void 0?void 0:r.subscribe(n)}[Kr](){return this}pipe(...n){return Au(n)(this)}toPromise(n){return n=Em(n),new n((r,o)=>{let i;this.subscribe(s=>i=s,s=>o(s),()=>r(i))})}}return e.create=t=>new e(t),e})();function Em(e){var t;return(t=e??mt.Promise)!==null&&t!==void 0?t:Promise}function VD(e){return e&&k(e.next)&&k(e.error)&&k(e.complete)}function HD(e){return e&&e instanceof or||VD(e)&&ea(e)}function Nu(e){return k(e?.lift)}function R(e){return t=>{if(Nu(t))return t.lift(function(n){try{return e(n,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function x(e,t,n,r,o){return new Ou(e,t,n,r,o)}var Ou=class extends or{constructor(t,n,r,o,i,s){super(t),this.onFinalize=i,this.shouldUnsubscribe=s,this._next=n?function(a){try{n(a)}catch(c){t.error(c)}}:super._next,this._error=o?function(a){try{o(a)}catch(c){t.error(c)}finally{this.unsubscribe()}}:super._error,this._complete=r?function(){try{r()}catch(a){t.error(a)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){let{closed:n}=this;super.unsubscribe(),!n&&((t=this.onFinalize)===null||t===void 0||t.call(this))}}};function Qr(){return R((e,t)=>{let n=null;e._refCount++;let r=x(t,void 0,void 0,void 0,()=>{if(!e||e._refCount<=0||0<--e._refCount){n=null;return}let o=e._connection,i=n;n=null,o&&(!i||o===i)&&o.unsubscribe(),t.unsubscribe()});e.subscribe(r),r.closed||(n=e.connect())})}var Xr=class extends P{constructor(t,n){super(),this.source=t,this.subjectFactory=n,this._subject=null,this._refCount=0,this._connection=null,Nu(t)&&(this.lift=t.lift)}_subscribe(t){return this.getSubject().subscribe(t)}getSubject(){let t=this._subject;return(!t||t.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;let{_connection:t}=this;this._subject=this._connection=null,t?.unsubscribe()}connect(){let t=this._connection;if(!t){t=this._connection=new ie;let n=this.getSubject();t.add(this.source.subscribe(x(n,void 0,()=>{this._teardown(),n.complete()},r=>{this._teardown(),n.error(r)},()=>this._teardown()))),t.closed&&(this._connection=null,t=ie.EMPTY)}return t}refCount(){return Qr()(this)}};var Dm=qr(e=>function(){e(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var V=(()=>{class e extends P{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(n){let r=new ra(this,this);return r.operator=n,r}_throwIfClosed(){if(this.closed)throw new Dm}next(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(let r of this.currentObservers)r.next(n)}})}error(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=n;let{observers:r}=this;for(;r.length;)r.shift().error(n)}})}complete(){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;let{observers:n}=this;for(;n.length;)n.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var n;return((n=this.observers)===null||n===void 0?void 0:n.length)>0}_trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}_subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuses(n),this._innerSubscribe(n)}_innerSubscribe(n){let{hasError:r,isStopped:o,observers:i}=this;return r||o?Cu:(this.currentObservers=null,i.push(n),new ie(()=>{this.currentObservers=null,tr(i,n)}))}_checkFinalizedStatuses(n){let{hasError:r,thrownError:o,isStopped:i}=this;r?n.error(o):i&&n.complete()}asObservable(){let n=new P;return n.source=this,n}}return e.create=(t,n)=>new ra(t,n),e})(),ra=class extends V{constructor(t,n){super(),this.destination=t,this.source=n}next(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.next)===null||r===void 0||r.call(n,t)}error(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.error)===null||r===void 0||r.call(n,t)}complete(){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.complete)===null||n===void 0||n.call(t)}_subscribe(t){var n,r;return(r=(n=this.source)===null||n===void 0?void 0:n.subscribe(t))!==null&&r!==void 0?r:Cu}};var _e=class extends V{constructor(t){super(),this._value=t}get value(){return this.getValue()}_subscribe(t){let n=super._subscribe(t);return!n.closed&&t.next(this._value),n}getValue(){let{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;return this._throwIfClosed(),r}next(t){super.next(this._value=t)}};var ni={now(){return(ni.delegate||Date).now()},delegate:void 0};var ri=class extends V{constructor(t=1/0,n=1/0,r=ni){super(),this._bufferSize=t,this._windowTime=n,this._timestampProvider=r,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=n===1/0,this._bufferSize=Math.max(1,t),this._windowTime=Math.max(1,n)}next(t){let{isStopped:n,_buffer:r,_infiniteTimeWindow:o,_timestampProvider:i,_windowTime:s}=this;n||(r.push(t),!o&&r.push(i.now()+s)),this._trimBuffer(),super.next(t)}_subscribe(t){this._throwIfClosed(),this._trimBuffer();let n=this._innerSubscribe(t),{_infiniteTimeWindow:r,_buffer:o}=this,i=o.slice();for(let s=0;s<i.length&&!t.closed;s+=r?1:2)t.next(i[s]);return this._checkFinalizedStatuses(t),n}_trimBuffer(){let{_bufferSize:t,_timestampProvider:n,_buffer:r,_infiniteTimeWindow:o}=this,i=(o?1:2)*t;if(t<1/0&&i<r.length&&r.splice(0,r.length-i),!o){let s=n.now(),a=0;for(let c=1;c<r.length&&r[c]<=s;c+=2)a=c;a&&r.splice(0,a+1)}}};var oa=class extends ie{constructor(t,n){super()}schedule(t,n=0){return this}};var oi={setInterval(e,t,...n){let{delegate:r}=oi;return r?.setInterval?r.setInterval(e,t,...n):setInterval(e,t,...n)},clearInterval(e){let{delegate:t}=oi;return(t?.clearInterval||clearInterval)(e)},delegate:void 0};var ia=class extends oa{constructor(t,n){super(t,n),this.scheduler=t,this.work=n,this.pending=!1}schedule(t,n=0){var r;if(this.closed)return this;this.state=t;let o=this.id,i=this.scheduler;return o!=null&&(this.id=this.recycleAsyncId(i,o,n)),this.pending=!0,this.delay=n,this.id=(r=this.id)!==null&&r!==void 0?r:this.requestAsyncId(i,this.id,n),this}requestAsyncId(t,n,r=0){return oi.setInterval(t.flush.bind(t,this),r)}recycleAsyncId(t,n,r=0){if(r!=null&&this.delay===r&&this.pending===!1)return n;n!=null&&oi.clearInterval(n)}execute(t,n){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;let r=this._execute(t,n);if(r)return r;this.pending===!1&&this.id!=null&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(t,n){let r=!1,o;try{this.work(t)}catch(i){r=!0,o=i||new Error("Scheduled action threw falsy error")}if(r)return this.unsubscribe(),o}unsubscribe(){if(!this.closed){let{id:t,scheduler:n}=this,{actions:r}=n;this.work=this.state=this.scheduler=null,this.pending=!1,tr(r,this),t!=null&&(this.id=this.recycleAsyncId(n,t,null)),this.delay=null,super.unsubscribe()}}};var Jr=class e{constructor(t,n=e.now){this.schedulerActionCtor=t,this.now=n}schedule(t,n=0,r){return new this.schedulerActionCtor(this,t).schedule(r,n)}};Jr.now=ni.now;var sa=class extends Jr{constructor(t,n=Jr.now){super(t,n),this.actions=[],this._active=!1}flush(t){let{actions:n}=this;if(this._active){n.push(t);return}let r;this._active=!0;do if(r=t.execute(t.state,t.delay))break;while(t=n.shift());if(this._active=!1,r){for(;t=n.shift();)t.unsubscribe();throw r}}};var ir=new sa(ia),wm=ir;var Ne=new P(e=>e.complete());function aa(e){return e&&k(e.schedule)}function ku(e){return e[e.length-1]}function ca(e){return k(ku(e))?e.pop():void 0}function Ot(e){return aa(ku(e))?e.pop():void 0}function Im(e,t){return typeof ku(e)=="number"?e.pop():t}function Tm(e,t,n,r){function o(i){return i instanceof n?i:new n(function(s){s(i)})}return new(n||(n=Promise))(function(i,s){function a(u){try{l(r.next(u))}catch(d){s(d)}}function c(u){try{l(r.throw(u))}catch(d){s(d)}}function l(u){u.done?i(u.value):o(u.value).then(a,c)}l((r=r.apply(e,t||[])).next())})}function Cm(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function sr(e){return this instanceof sr?(this.v=e,this):new sr(e)}function Sm(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=n.apply(e,t||[]),o,i=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",s),o[Symbol.asyncIterator]=function(){return this},o;function s(f){return function(g){return Promise.resolve(g).then(f,d)}}function a(f,g){r[f]&&(o[f]=function(y){return new Promise(function(D,w){i.push([f,y,D,w])>1||c(f,y)})},g&&(o[f]=g(o[f])))}function c(f,g){try{l(r[f](g))}catch(y){p(i[0][3],y)}}function l(f){f.value instanceof sr?Promise.resolve(f.value.v).then(u,d):p(i[0][2],f)}function u(f){c("next",f)}function d(f){c("throw",f)}function p(f,g){f(g),i.shift(),i.length&&c(i[0][0],i[0][1])}}function Mm(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof Cm=="function"?Cm(e):e[Symbol.iterator](),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(i){n[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),o(a,c,s.done,s.value)})}}function o(i,s,a,c){Promise.resolve(c).then(function(l){i({value:l,done:a})},s)}}var la=e=>e&&typeof e.length=="number"&&typeof e!="function";function ua(e){return k(e?.then)}function da(e){return k(e[Kr])}function fa(e){return Symbol.asyncIterator&&k(e?.[Symbol.asyncIterator])}function ha(e){return new TypeError(`You provided ${e!==null&&typeof e=="object"?"an invalid object":`'${e}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}function $D(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var pa=$D();function ma(e){return k(e?.[pa])}function ga(e){return Sm(this,arguments,function*(){let n=e.getReader();try{for(;;){let{value:r,done:o}=yield sr(n.read());if(o)return yield sr(void 0);yield yield sr(r)}}finally{n.releaseLock()}})}function va(e){return k(e?.getReader)}function z(e){if(e instanceof P)return e;if(e!=null){if(da(e))return zD(e);if(la(e))return WD(e);if(ua(e))return GD(e);if(fa(e))return xm(e);if(ma(e))return qD(e);if(va(e))return ZD(e)}throw ha(e)}function zD(e){return new P(t=>{let n=e[Kr]();if(k(n.subscribe))return n.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function WD(e){return new P(t=>{for(let n=0;n<e.length&&!t.closed;n++)t.next(e[n]);t.complete()})}function GD(e){return new P(t=>{e.then(n=>{t.closed||(t.next(n),t.complete())},n=>t.error(n)).then(null,ta)})}function qD(e){return new P(t=>{for(let n of e)if(t.next(n),t.closed)return;t.complete()})}function xm(e){return new P(t=>{YD(e,t).catch(n=>t.error(n))})}function ZD(e){return xm(ga(e))}function YD(e,t){var n,r,o,i;return Tm(this,void 0,void 0,function*(){try{for(n=Mm(e);r=yield n.next(),!r.done;){let s=r.value;if(t.next(s),t.closed)return}}catch(s){o={error:s}}finally{try{r&&!r.done&&(i=n.return)&&(yield i.call(n))}finally{if(o)throw o.error}}t.complete()})}function We(e,t,n,r=0,o=!1){let i=t.schedule(function(){n(),o?e.add(this.schedule(null,r)):this.unsubscribe()},r);if(e.add(i),!o)return i}function ya(e,t=0){return R((n,r)=>{n.subscribe(x(r,o=>We(r,e,()=>r.next(o),t),()=>We(r,e,()=>r.complete(),t),o=>We(r,e,()=>r.error(o),t)))})}function ba(e,t=0){return R((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),t))})}function Rm(e,t){return z(e).pipe(ba(t),ya(t))}function Am(e,t){return z(e).pipe(ba(t),ya(t))}function Nm(e,t){return new P(n=>{let r=0;return t.schedule(function(){r===e.length?n.complete():(n.next(e[r++]),n.closed||this.schedule())})})}function Om(e,t){return new P(n=>{let r;return We(n,t,()=>{r=e[pa](),We(n,t,()=>{let o,i;try{({value:o,done:i}=r.next())}catch(s){n.error(s);return}i?n.complete():n.next(o)},0,!0)}),()=>k(r?.return)&&r.return()})}function _a(e,t){if(!e)throw new Error("Iterable cannot be null");return new P(n=>{We(n,t,()=>{let r=e[Symbol.asyncIterator]();We(n,t,()=>{r.next().then(o=>{o.done?n.complete():n.next(o.value)})},0,!0)})})}function km(e,t){return _a(ga(e),t)}function Pm(e,t){if(e!=null){if(da(e))return Rm(e,t);if(la(e))return Nm(e,t);if(ua(e))return Am(e,t);if(fa(e))return _a(e,t);if(ma(e))return Om(e,t);if(va(e))return km(e,t)}throw ha(e)}function ne(e,t){return t?Pm(e,t):z(e)}function C(...e){let t=Ot(e);return ne(e,t)}function eo(e,t){let n=k(e)?e:()=>e,r=o=>o.error(n());return new P(t?o=>t.schedule(r,0,o):r)}function Pu(e){return!!e&&(e instanceof P||k(e.lift)&&k(e.subscribe))}var Xe=qr(e=>function(){e(this),this.name="EmptyError",this.message="no elements in sequence"});function KD(e,t){let n=typeof t=="object";return new Promise((r,o)=>{let i=!1,s;e.subscribe({next:a=>{s=a,i=!0},error:o,complete:()=>{i?r(s):n?r(t.defaultValue):o(new Xe)}})})}function QD(e,t){let n=typeof t=="object";return new Promise((r,o)=>{let i=new gt({next:s=>{r(s),i.unsubscribe()},error:o,complete:()=>{n?r(t.defaultValue):o(new Xe)}});e.subscribe(i)})}function Fm(e){return e instanceof Date&&!isNaN(e)}function T(e,t){return R((n,r)=>{let o=0;n.subscribe(x(r,i=>{r.next(e.call(t,i,o++))}))})}var{isArray:XD}=Array;function JD(e,t){return XD(t)?e(...t):e(t)}function Ea(e){return T(t=>JD(e,t))}var{isArray:ew}=Array,{getPrototypeOf:tw,prototype:nw,keys:rw}=Object;function Da(e){if(e.length===1){let t=e[0];if(ew(t))return{args:t,keys:null};if(ow(t)){let n=rw(t);return{args:n.map(r=>t[r]),keys:n}}}return{args:e,keys:null}}function ow(e){return e&&typeof e=="object"&&tw(e)===nw}function wa(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}function to(...e){let t=Ot(e),n=ca(e),{args:r,keys:o}=Da(e);if(r.length===0)return ne([],t);let i=new P(iw(r,t,o?s=>wa(o,s):Ae));return n?i.pipe(Ea(n)):i}function iw(e,t,n=Ae){return r=>{Lm(t,()=>{let{length:o}=e,i=new Array(o),s=o,a=o;for(let c=0;c<o;c++)Lm(t,()=>{let l=ne(e[c],t),u=!1;l.subscribe(x(r,d=>{i[c]=d,u||(u=!0,a--),a||r.next(n(i.slice()))},()=>{--s||r.complete()}))},r)},r)}}function Lm(e,t,n){e?We(n,e,t):t()}function jm(e,t,n,r,o,i,s,a){let c=[],l=0,u=0,d=!1,p=()=>{d&&!c.length&&!l&&t.complete()},f=y=>l<r?g(y):c.push(y),g=y=>{i&&t.next(y),l++;let D=!1;z(n(y,u++)).subscribe(x(t,w=>{o?.(w),i?f(w):t.next(w)},()=>{D=!0},void 0,()=>{if(D)try{for(l--;c.length&&l<r;){let w=c.shift();s?We(t,s,()=>g(w)):g(w)}p()}catch(w){t.error(w)}}))};return e.subscribe(x(t,f,()=>{d=!0,p()})),()=>{a?.()}}function le(e,t,n=1/0){return k(t)?le((r,o)=>T((i,s)=>t(r,i,o,s))(z(e(r,o))),n):(typeof t=="number"&&(n=t),R((r,o)=>jm(r,o,e,n)))}function In(e=1/0){return le(Ae,e)}function Bm(){return In(1)}function kt(...e){return Bm()(ne(e,Ot(e)))}function ii(e){return new P(t=>{z(e()).subscribe(t)})}function sw(...e){let t=ca(e),{args:n,keys:r}=Da(e),o=new P(i=>{let{length:s}=n;if(!s){i.complete();return}let a=new Array(s),c=s,l=s;for(let u=0;u<s;u++){let d=!1;z(n[u]).subscribe(x(i,p=>{d||(d=!0,l--),a[u]=p},()=>c--,void 0,()=>{(!c||!d)&&(l||i.next(r?wa(r,a):a),i.complete())}))}});return t?o.pipe(Ea(t)):o}function si(e=0,t,n=wm){let r=-1;return t!=null&&(aa(t)?n=t:r=t),new P(o=>{let i=Fm(e)?+e-n.now():e;i<0&&(i=0);let s=0;return n.schedule(function(){o.closed||(o.next(s++),0<=r?this.schedule(void 0,r):o.complete())},i)})}function aw(...e){let t=Ot(e),n=Im(e,1/0),r=e;return r.length?r.length===1?z(r[0]):In(n)(ne(r,t)):Ne}function fe(e,t){return R((n,r)=>{let o=0;n.subscribe(x(r,i=>e.call(t,i,o++)&&r.next(i)))})}function Um(e){return R((t,n)=>{let r=!1,o=null,i=null,s=!1,a=()=>{if(i?.unsubscribe(),i=null,r){r=!1;let l=o;o=null,n.next(l)}s&&n.complete()},c=()=>{i=null,s&&n.complete()};t.subscribe(x(n,l=>{r=!0,o=l,i||z(e(l)).subscribe(i=x(n,a,c))},()=>{s=!0,(!r||!i||i.closed)&&n.complete()}))})}function cw(e,t=ir){return Um(()=>si(e,t))}function Pt(e){return R((t,n)=>{let r=null,o=!1,i;r=t.subscribe(x(n,void 0,void 0,s=>{i=z(e(s,Pt(e)(t))),r?(r.unsubscribe(),r=null,i.subscribe(n)):o=!0})),o&&(r.unsubscribe(),r=null,i.subscribe(n))})}function Vm(e,t,n,r,o){return(i,s)=>{let a=n,c=t,l=0;i.subscribe(x(s,u=>{let d=l++;c=a?e(c,u,d):(a=!0,u),r&&s.next(c)},o&&(()=>{a&&s.next(c),s.complete()})))}}function nn(e,t){return k(t)?le(e,t,1):le(e,1)}function ar(e,t=ir){return R((n,r)=>{let o=null,i=null,s=null,a=()=>{if(o){o.unsubscribe(),o=null;let l=i;i=null,r.next(l)}};function c(){let l=s+e,u=t.now();if(u<l){o=this.schedule(void 0,l-u),r.add(o);return}a()}n.subscribe(x(r,l=>{i=l,s=t.now(),o||(o=t.schedule(c,e),r.add(o))},()=>{a(),r.complete()},void 0,()=>{i=o=null}))})}function Cn(e){return R((t,n)=>{let r=!1;t.subscribe(x(n,o=>{r=!0,n.next(o)},()=>{r||n.next(e),n.complete()}))})}function Ge(e){return e<=0?()=>Ne:R((t,n)=>{let r=0;t.subscribe(x(n,o=>{++r<=e&&(n.next(o),e<=r&&n.complete())}))})}function Hm(){return R((e,t)=>{e.subscribe(x(t,nr))})}function $m(e){return T(()=>e)}function Fu(e,t){return t?n=>kt(t.pipe(Ge(1),Hm()),n.pipe(Fu(e))):le((n,r)=>z(e(n,r)).pipe(Ge(1),$m(n)))}function lw(e,t=ir){let n=si(e,t);return Fu(()=>n)}function Lu(e,t=Ae){return e=e??uw,R((n,r)=>{let o,i=!0;n.subscribe(x(r,s=>{let a=t(s);(i||!e(o,a))&&(i=!1,o=a,r.next(s))}))})}function uw(e,t){return e===t}function Ia(e=dw){return R((t,n)=>{let r=!1;t.subscribe(x(n,o=>{r=!0,n.next(o)},()=>r?n.complete():n.error(e())))})}function dw(){return new Xe}function Tn(e){return R((t,n)=>{try{t.subscribe(n)}finally{n.add(e)}})}function rn(e,t){let n=arguments.length>=2;return r=>r.pipe(e?fe((o,i)=>e(o,i,r)):Ae,Ge(1),n?Cn(t):Ia(()=>new Xe))}function no(e){return e<=0?()=>Ne:R((t,n)=>{let r=[];t.subscribe(x(n,o=>{r.push(o),e<r.length&&r.shift()},()=>{for(let o of r)n.next(o);n.complete()},void 0,()=>{r=null}))})}function ju(e,t){let n=arguments.length>=2;return r=>r.pipe(e?fe((o,i)=>e(o,i,r)):Ae,no(1),n?Cn(t):Ia(()=>new Xe))}function fw(){return R((e,t)=>{let n,r=!1;e.subscribe(x(t,o=>{let i=n;n=o,r&&t.next([i,o]),r=!0}))})}function Bu(e,t){return R(Vm(e,t,arguments.length>=2,!0))}function Vu(e={}){let{connector:t=()=>new V,resetOnError:n=!0,resetOnComplete:r=!0,resetOnRefCountZero:o=!0}=e;return i=>{let s,a,c,l=0,u=!1,d=!1,p=()=>{a?.unsubscribe(),a=void 0},f=()=>{p(),s=c=void 0,u=d=!1},g=()=>{let y=s;f(),y?.unsubscribe()};return R((y,D)=>{l++,!d&&!u&&p();let w=c=c??t();D.add(()=>{l--,l===0&&!d&&!u&&(a=Uu(g,o))}),w.subscribe(D),!s&&l>0&&(s=new gt({next:K=>w.next(K),error:K=>{d=!0,p(),a=Uu(f,n,K),w.error(K)},complete:()=>{u=!0,p(),a=Uu(f,r),w.complete()}}),z(y).subscribe(s))})(i)}}function Uu(e,t,...n){if(t===!0){e();return}if(t===!1)return;let r=new gt({next:()=>{r.unsubscribe(),e()}});return z(t(...n)).subscribe(r)}function hw(e,t,n){let r,o=!1;return e&&typeof e=="object"?{bufferSize:r=1/0,windowTime:t=1/0,refCount:o=!1,scheduler:n}=e:r=e??1/0,Vu({connector:()=>new ri(r,t,n),resetOnError:!0,resetOnComplete:!1,resetOnRefCountZero:o})}function ai(e){return fe((t,n)=>e<=n)}function ci(...e){let t=Ot(e);return R((n,r)=>{(t?kt(e,n,t):kt(e,n)).subscribe(r)})}function qe(e,t){return R((n,r)=>{let o=null,i=0,s=!1,a=()=>s&&!o&&r.complete();n.subscribe(x(r,c=>{o?.unsubscribe();let l=0,u=i++;z(e(c,u)).subscribe(o=x(r,d=>r.next(t?t(c,d,u,l++):d),()=>{o=null,a()}))},()=>{s=!0,a()}))})}function Sn(e){return R((t,n)=>{z(e).subscribe(x(n,()=>n.complete(),nr)),!n.closed&&t.subscribe(n)})}function pw(e,t=!1){return R((n,r)=>{let o=0;n.subscribe(x(r,i=>{let s=e(i,o++);(s||t)&&r.next(i),!s&&r.complete()}))})}function re(e,t,n){let r=k(e)||t||n?{next:e,error:t,complete:n}:e;return r?R((o,i)=>{var s;(s=r.subscribe)===null||s===void 0||s.call(r);let a=!0;o.subscribe(x(i,c=>{var l;(l=r.next)===null||l===void 0||l.call(r,c),i.next(c)},()=>{var c;a=!1,(c=r.complete)===null||c===void 0||c.call(r),i.complete()},c=>{var l;a=!1,(l=r.error)===null||l===void 0||l.call(r,c),i.error(c)},()=>{var c,l;a&&((c=r.unsubscribe)===null||c===void 0||c.call(r)),(l=r.finalize)===null||l===void 0||l.call(r)}))}):Ae}function zm(e){let t=M(null);try{return e()}finally{M(t)}}var xa="https://angular.dev/best-practices/security#preventing-cross-site-scripting-xss",_=class extends Error{code;constructor(t,n){super(fr(t,n)),this.code=t}};function mw(e){return`NG0${Math.abs(e)}`}function fr(e,t){return`${mw(e)}${t?": "+t:""}`}var ct=globalThis;function se(e){for(let t in e)if(e[t]===se)return t;throw Error("")}function Zm(e,t){for(let n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])}function Ze(e){if(typeof e=="string")return e;if(Array.isArray(e))return`[${e.map(Ze).join(", ")}]`;if(e==null)return""+e;let t=e.overriddenName||e.name;if(t)return`${t}`;let n=e.toString();if(n==null)return""+n;let r=n.indexOf(`
`);return r>=0?n.slice(0,r):n}function Ra(e,t){return e?t?`${e} ${t}`:e:t||""}var gw=se({__forward_ref__:se});function Aa(e){return e.__forward_ref__=Aa,e.toString=function(){return Ze(this())},e}function Re(e){return Ju(e)?e():e}function Ju(e){return typeof e=="function"&&e.hasOwnProperty(gw)&&e.__forward_ref__===Aa}function Ym(e,t,n,r){throw new Error(`ASSERTION ERROR: ${e}`+(r==null?"":` [Expected=> ${n} ${r} ${t} <=Actual]`))}function b(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function De(e){return{providers:e.providers||[],imports:e.imports||[]}}function hi(e){return vw(e,Na)}function ed(e){return hi(e)!==null}function vw(e,t){return e.hasOwnProperty(t)&&e[t]||null}function yw(e){let t=e?.[Na]??null;return t||null}function $u(e){return e&&e.hasOwnProperty(Ta)?e[Ta]:null}var Na=se({\u0275prov:se}),Ta=se({\u0275inj:se}),E=class{_desc;ngMetadataName="InjectionToken";\u0275prov;constructor(t,n){this._desc=t,this.\u0275prov=void 0,typeof n=="number"?this.__NG_ELEMENT_ID__=n:n!==void 0&&(this.\u0275prov=b({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}};function td(e){return e&&!!e.\u0275providers}var nd=se({\u0275cmp:se}),rd=se({\u0275dir:se}),od=se({\u0275pipe:se}),id=se({\u0275mod:se}),ui=se({\u0275fac:se}),hr=se({__NG_ELEMENT_ID__:se}),Wm=se({__NG_ENV_ID__:se});function Rn(e){return typeof e=="string"?e:e==null?"":String(e)}function Km(e){return typeof e=="function"?e.name||e.toString():typeof e=="object"&&e!=null&&typeof e.type=="function"?e.type.name||e.type.toString():Rn(e)}function sd(e,t){throw new _(-200,e)}function Oa(e,t){throw new _(-201,!1)}var zu;function Qm(){return zu}function Fe(e){let t=zu;return zu=e,t}function ad(e,t,n){let r=hi(e);if(r&&r.providedIn=="root")return r.value===void 0?r.value=r.factory():r.value;if(n&8)return null;if(t!==void 0)return t;Oa(e,"Injector")}var bw={},cr=bw,Wu="__NG_DI_FLAG__",Gu=class{injector;constructor(t){this.injector=t}retrieve(t,n){let r=lr(n)||0;try{return this.injector.get(t,r&8?null:cr,r)}catch(o){if(zr(o))return o;throw o}}},Sa="ngTempTokenPath",_w="ngTokenPath",Ew=/\n/gm,Dw="\u0275",Gm="__source";function ww(e,t=0){let n=yu();if(n===void 0)throw new _(-203,!1);if(n===null)return ad(e,void 0,t);{let r=Iw(t),o=n.retrieve(e,r);if(zr(o)){if(r.optional)return null;throw o}return o}}function S(e,t=0){return(Qm()||ww)(Re(e),t)}function h(e,t){return S(e,lr(t))}function lr(e){return typeof e>"u"||typeof e=="number"?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function Iw(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSelf:!!(e&4)}}function qu(e){let t=[];for(let n=0;n<e.length;n++){let r=Re(e[n]);if(Array.isArray(r)){if(r.length===0)throw new _(900,!1);let o,i=0;for(let s=0;s<r.length;s++){let a=r[s],c=Cw(a);typeof c=="number"?c===-1?o=a.token:i|=c:o=a}t.push(S(o,i))}else t.push(S(r))}return t}function cd(e,t){return e[Wu]=t,e.prototype[Wu]=t,e}function Cw(e){return e[Wu]}function Tw(e,t,n,r){let o=e[Sa];throw t[Gm]&&o.unshift(t[Gm]),e.message=Sw(`
`+e.message,o,n,r),e[_w]=o,e[Sa]=null,e}function Sw(e,t,n,r=null){e=e&&e.charAt(0)===`
`&&e.charAt(1)==Dw?e.slice(2):e;let o=Ze(t);if(Array.isArray(t))o=t.map(Ze).join(" -> ");else if(typeof t=="object"){let i=[];for(let s in t)if(t.hasOwnProperty(s)){let a=t[s];i.push(s+":"+(typeof a=="string"?JSON.stringify(a):Ze(a)))}o=`{${i.join(", ")}}`}return`${n}${r?"("+r+")":""}[${o}]: ${e.replace(Ew,`
`)}`}function Mn(e,t){let n=e.hasOwnProperty(ui);return n?e[ui]:null}function Xm(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++){let o=e[r],i=t[r];if(n&&(o=n(o),i=n(i)),i!==o)return!1}return!0}function Jm(e){return e.flat(Number.POSITIVE_INFINITY)}function ka(e,t){e.forEach(n=>Array.isArray(n)?ka(n,t):t(n))}function ld(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function pi(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function eg(e,t){let n=[];for(let r=0;r<e;r++)n.push(t);return n}function tg(e,t,n,r){let o=e.length;if(o==t)e.push(n,r);else if(o===1)e.push(r,e[0]),e[0]=n;else{for(o--,e.push(e[o-1],e[o]);o>t;){let i=o-2;e[o]=e[i],o--}e[t]=n,e[t+1]=r}}function Pa(e,t,n){let r=oo(e,t);return r>=0?e[r|1]=n:(r=~r,tg(e,r,t,n)),r}function Fa(e,t){let n=oo(e,t);if(n>=0)return e[n|1]}function oo(e,t){return Mw(e,t,1)}function Mw(e,t,n){let r=0,o=e.length>>n;for(;o!==r;){let i=r+(o-r>>1),s=e[i<<n];if(t===s)return i<<n;s>t?o=i:r=i+1}return~(o<<n)}var An={},Oe=[],Ft=new E(""),ud=new E("",-1),dd=new E(""),di=class{get(t,n=cr){if(n===cr)throw new Hs(`NullInjectorError: No provider for ${Ze(t)}!`);return n}};function fd(e){return e[id]||null}function sn(e){return e[nd]||null}function hd(e){return e[rd]||null}function ng(e){return e[od]||null}function vt(e){return{\u0275providers:e}}function rg(e){return vt([{provide:Ft,multi:!0,useValue:e}])}function og(...e){return{\u0275providers:pd(!0,e),\u0275fromNgModule:!0}}function pd(e,...t){let n=[],r=new Set,o,i=s=>{n.push(s)};return ka(t,s=>{let a=s;Ma(a,i,[],r)&&(o||=[],o.push(a))}),o!==void 0&&ig(o,i),n}function ig(e,t){for(let n=0;n<e.length;n++){let{ngModule:r,providers:o}=e[n];md(o,i=>{t(i,r)})}}function Ma(e,t,n,r){if(e=Re(e),!e)return!1;let o=null,i=$u(e),s=!i&&sn(e);if(!i&&!s){let c=e.ngModule;if(i=$u(c),i)o=c;else return!1}else{if(s&&!s.standalone)return!1;o=e}let a=r.has(o);if(s){if(a)return!1;if(r.add(o),s.dependencies){let c=typeof s.dependencies=="function"?s.dependencies():s.dependencies;for(let l of c)Ma(l,t,n,r)}}else if(i){if(i.imports!=null&&!a){r.add(o);let l;try{ka(i.imports,u=>{Ma(u,t,n,r)&&(l||=[],l.push(u))})}finally{}l!==void 0&&ig(l,t)}if(!a){let l=Mn(o)||(()=>new o);t({provide:o,useFactory:l,deps:Oe},o),t({provide:dd,useValue:o,multi:!0},o),t({provide:Ft,useValue:()=>S(o),multi:!0},o)}let c=i.providers;if(c!=null&&!a){let l=e;md(c,u=>{t(u,l)})}}else return!1;return o!==e&&e.providers!==void 0}function md(e,t){for(let n of e)td(n)&&(n=n.\u0275providers),Array.isArray(n)?md(n,t):t(n)}var xw=se({provide:String,useValue:se});function sg(e){return e!==null&&typeof e=="object"&&xw in e}function Rw(e){return!!(e&&e.useExisting)}function Aw(e){return!!(e&&e.useFactory)}function ur(e){return typeof e=="function"}function ag(e){return!!e.useClass}var mi=new E(""),Ca={},qm={},Hu;function io(){return Hu===void 0&&(Hu=new di),Hu}var ue=class{},dr=class extends ue{parent;source;scopes;records=new Map;_ngOnDestroyHooks=new Set;_onDestroyHooks=[];get destroyed(){return this._destroyed}_destroyed=!1;injectorDefTypes;constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,Yu(t,s=>this.processProvider(s)),this.records.set(ud,ro(void 0,this)),o.has("environment")&&this.records.set(ue,ro(void 0,this));let i=this.records.get(mi);i!=null&&typeof i.value=="string"&&this.scopes.add(i.value),this.injectorDefTypes=new Set(this.get(dd,Oe,{self:!0}))}retrieve(t,n){let r=lr(n)||0;try{return this.get(t,cr,r)}catch(o){if(zr(o))return o;throw o}}destroy(){li(this),this._destroyed=!0;let t=M(null);try{for(let r of this._ngOnDestroyHooks)r.ngOnDestroy();let n=this._onDestroyHooks;this._onDestroyHooks=[];for(let r of n)r()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),M(t)}}onDestroy(t){return li(this),this._onDestroyHooks.push(t),()=>this.removeOnDestroy(t)}runInContext(t){li(this);let n=en(this),r=Fe(void 0),o;try{return t()}finally{en(n),Fe(r)}}get(t,n=cr,r){if(li(this),t.hasOwnProperty(Wm))return t[Wm](this);let o=lr(r),i,s=en(this),a=Fe(void 0);try{if(!(o&4)){let l=this.records.get(t);if(l===void 0){let u=Fw(t)&&hi(t);u&&this.injectableDefInScope(u)?l=ro(Zu(t),Ca):l=null,this.records.set(t,l)}if(l!=null)return this.hydrate(t,l)}let c=o&2?io():this.parent;return n=o&8&&n===cr?null:n,c.get(t,n)}catch(c){if(zr(c)){if((c[Sa]=c[Sa]||[]).unshift(Ze(t)),s)throw c;return Tw(c,t,"R3InjectorError",this.source)}else throw c}finally{Fe(a),en(s)}}resolveInjectorInitializers(){let t=M(null),n=en(this),r=Fe(void 0),o;try{let i=this.get(Ft,Oe,{self:!0});for(let s of i)s()}finally{en(n),Fe(r),M(t)}}toString(){let t=[],n=this.records;for(let r of n.keys())t.push(Ze(r));return`R3Injector[${t.join(", ")}]`}processProvider(t){t=Re(t);let n=ur(t)?t:Re(t&&t.provide),r=Ow(t);if(!ur(t)&&t.multi===!0){let o=this.records.get(n);o||(o=ro(void 0,Ca,!0),o.factory=()=>qu(o.multi),this.records.set(n,o)),n=t,o.multi.push(t)}this.records.set(n,r)}hydrate(t,n){let r=M(null);try{return n.value===qm?sd(Ze(t)):n.value===Ca&&(n.value=qm,n.value=n.factory()),typeof n.value=="object"&&n.value&&Pw(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}finally{M(r)}}injectableDefInScope(t){if(!t.providedIn)return!1;let n=Re(t.providedIn);return typeof n=="string"?n==="any"||this.scopes.has(n):this.injectorDefTypes.has(n)}removeOnDestroy(t){let n=this._onDestroyHooks.indexOf(t);n!==-1&&this._onDestroyHooks.splice(n,1)}};function Zu(e){let t=hi(e),n=t!==null?t.factory:Mn(e);if(n!==null)return n;if(e instanceof E)throw new _(204,!1);if(e instanceof Function)return Nw(e);throw new _(204,!1)}function Nw(e){if(e.length>0)throw new _(204,!1);let n=yw(e);return n!==null?()=>n.factory(e):()=>new e}function Ow(e){if(sg(e))return ro(void 0,e.useValue);{let t=gd(e);return ro(t,Ca)}}function gd(e,t,n){let r;if(ur(e)){let o=Re(e);return Mn(o)||Zu(o)}else if(sg(e))r=()=>Re(e.useValue);else if(Aw(e))r=()=>e.useFactory(...qu(e.deps||[]));else if(Rw(e))r=()=>S(Re(e.useExisting));else{let o=Re(e&&(e.useClass||e.provide));if(kw(e))r=()=>new o(...qu(e.deps));else return Mn(o)||Zu(o)}return r}function li(e){if(e.destroyed)throw new _(205,!1)}function ro(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function kw(e){return!!e.deps}function Pw(e){return e!==null&&typeof e=="object"&&typeof e.ngOnDestroy=="function"}function Fw(e){return typeof e=="function"||typeof e=="object"&&e.ngMetadataName==="InjectionToken"}function Yu(e,t){for(let n of e)Array.isArray(n)?Yu(n,t):n&&td(n)?Yu(n.\u0275providers,t):t(n)}function Le(e,t){let n;e instanceof dr?(li(e),n=e):n=new Gu(e);let r,o=en(n),i=Fe(void 0);try{return t()}finally{en(o),Fe(i)}}function cg(){return Qm()!==void 0||yu()!=null}var yt=0,N=1,A=2,Ee=3,lt=4,je=5,pr=6,so=7,he=8,mr=9,Lt=10,Q=11,ao=12,vd=13,gr=14,Be=15,Nn=16,vr=17,jt=18,gi=19,yd=20,on=21,La=22,an=23,et=24,yr=25,pe=26,lg=1,bd=6,On=7,vi=8,br=9,Ce=10;function Bt(e){return Array.isArray(e)&&typeof e[lg]=="object"}function bt(e){return Array.isArray(e)&&e[lg]===!0}function ja(e){return(e.flags&4)!==0}function kn(e){return e.componentOffset>-1}function yi(e){return(e.flags&1)===1}function Ut(e){return!!e.template}function co(e){return(e[A]&512)!==0}function _r(e){return(e[A]&256)===256}var _d="svg",ug="math";function ut(e){for(;Array.isArray(e);)e=e[yt];return e}function Ed(e,t){return ut(t[e])}function _t(e,t){return ut(t[e.index])}function bi(e,t){return e.data[t]}function Ba(e,t){return e[t]}function Dd(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=r}function dt(e,t){let n=t[e];return Bt(n)?n:n[yt]}function dg(e){return(e[A]&4)===4}function Ua(e){return(e[A]&128)===128}function fg(e){return bt(e[Ee])}function Et(e,t){return t==null?null:e[t]}function wd(e){e[vr]=0}function Id(e){e[A]&1024||(e[A]|=1024,Ua(e)&&Pn(e))}function hg(e,t){for(;e>0;)t=t[gr],e--;return t}function _i(e){return!!(e[A]&9216||e[et]?.dirty)}function Va(e){e[Lt].changeDetectionScheduler?.notify(8),e[A]&64&&(e[A]|=1024),_i(e)&&Pn(e)}function Pn(e){e[Lt].changeDetectionScheduler?.notify(0);let t=xn(e);for(;t!==null&&!(t[A]&8192||(t[A]|=8192,!Ua(t)));)t=xn(t)}function Cd(e,t){if(_r(e))throw new _(911,!1);e[on]===null&&(e[on]=[]),e[on].push(t)}function pg(e,t){if(e[on]===null)return;let n=e[on].indexOf(t);n!==-1&&e[on].splice(n,1)}function xn(e){let t=e[Ee];return bt(t)?t[Ee]:t}function Td(e){return e[so]??=[]}function Sd(e){return e.cleanup??=[]}function mg(e,t,n,r){let o=Td(t);o.push(n),e.firstCreatePass&&Sd(e).push(r,o.length-1)}var L={lFrame:Ng(null),bindingsEnabled:!0,skipHydrationRootTNode:null},Ei=function(e){return e[e.Off=0]="Off",e[e.Exhaustive=1]="Exhaustive",e[e.OnlyDirtyViews=2]="OnlyDirtyViews",e}(Ei||{}),Lw=0,Ku=!1;function gg(){return L.lFrame.elementDepthCount}function vg(){L.lFrame.elementDepthCount++}function yg(){L.lFrame.elementDepthCount--}function Ha(){return L.bindingsEnabled}function Md(){return L.skipHydrationRootTNode!==null}function bg(e){return L.skipHydrationRootTNode===e}function _g(){L.skipHydrationRootTNode=null}function I(){return L.lFrame.lView}function X(){return L.lFrame.tView}function Eg(e){return L.lFrame.contextLView=e,e[he]}function Dg(e){return L.lFrame.contextLView=null,e}function Te(){let e=xd();for(;e!==null&&e.type===64;)e=e.parent;return e}function xd(){return L.lFrame.currentTNode}function wg(){let e=L.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}function Fn(e,t){let n=L.lFrame;n.currentTNode=e,n.isParent=t}function $a(){return L.lFrame.isParent}function za(){L.lFrame.isParent=!1}function Ig(){return L.lFrame.contextLView}function Rd(e){Ym("Must never be called in production mode"),Lw=e}function Ad(){return Ku}function lo(e){let t=Ku;return Ku=e,t}function uo(){let e=L.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function Cg(){return L.lFrame.bindingIndex}function Tg(e){return L.lFrame.bindingIndex=e}function cn(){return L.lFrame.bindingIndex++}function Wa(e){let t=L.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function Sg(){return L.lFrame.inI18n}function Mg(e,t){let n=L.lFrame;n.bindingIndex=n.bindingRootIndex=e,Ga(t)}function xg(){return L.lFrame.currentDirectiveIndex}function Ga(e){L.lFrame.currentDirectiveIndex=e}function Rg(e){let t=L.lFrame.currentDirectiveIndex;return t===-1?null:e[t]}function qa(){return L.lFrame.currentQueryIndex}function Di(e){L.lFrame.currentQueryIndex=e}function jw(e){let t=e[N];return t.type===2?t.declTNode:t.type===1?e[je]:null}function Nd(e,t,n){if(n&4){let o=t,i=e;for(;o=o.parent,o===null&&!(n&1);)if(o=jw(i),o===null||(i=i[gr],o.type&10))break;if(o===null)return!1;t=o,e=i}let r=L.lFrame=Ag();return r.currentTNode=t,r.lView=e,!0}function Za(e){let t=Ag(),n=e[N];L.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Ag(){let e=L.lFrame,t=e===null?null:e.child;return t===null?Ng(e):t}function Ng(e){let t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return e!==null&&(e.child=t),t}function Og(){let e=L.lFrame;return L.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}var Od=Og;function Ya(){let e=Og();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function kg(e){return(L.lFrame.contextLView=hg(e,L.lFrame.contextLView))[he]}function Vt(){return L.lFrame.selectedIndex}function Ln(e){L.lFrame.selectedIndex=e}function wi(){let e=L.lFrame;return bi(e.tView,e.selectedIndex)}function Pg(){L.lFrame.currentNamespace=_d}function Fg(){Bw()}function Bw(){L.lFrame.currentNamespace=null}function Lg(){return L.lFrame.currentNamespace}var jg=!0;function Ii(){return jg}function Ci(e){jg=e}function Qu(e,t=null,n=null,r){let o=kd(e,t,n,r);return o.resolveInjectorInitializers(),o}function kd(e,t=null,n=null,r,o=new Set){let i=[n||Oe,og(e)];return r=r||(typeof e=="object"?void 0:Ze(e)),new dr(i,t||io(),r||null,o)}var ae=class e{static THROW_IF_NOT_FOUND=cr;static NULL=new di;static create(t,n){if(Array.isArray(t))return Qu({name:""},n,t,"");{let r=t.name??"";return Qu({name:r},t.parent,t.providers,r)}}static \u0275prov=b({token:e,providedIn:"any",factory:()=>S(ud)});static __NG_ELEMENT_ID__=-1},H=new E(""),tt=(()=>{class e{static __NG_ELEMENT_ID__=Uw;static __NG_ENV_ID__=n=>n}return e})(),fi=class extends tt{_lView;constructor(t){super(),this._lView=t}get destroyed(){return _r(this._lView)}onDestroy(t){let n=this._lView;return Cd(n,t),()=>pg(n,t)}};function Uw(){return new fi(I())}var Je=class{_console=console;handleError(t){this._console.error("ERROR",t)}},Ue=new E("",{providedIn:"root",factory:()=>{let e=h(ue),t;return n=>{e.destroyed&&!t?setTimeout(()=>{throw n}):(t??=e.get(Je),t.handleError(n))}}}),Bg={provide:Ft,useValue:()=>void h(Je),multi:!0},Vw=new E("",{providedIn:"root",factory:()=>{let e=h(H).defaultView;if(!e)return;let t=h(Ue),n=i=>{t(i.reason),i.preventDefault()},r=i=>{i.error?t(i.error):t(new Error(i.message,{cause:i})),i.preventDefault()},o=()=>{e.addEventListener("unhandledrejection",n),e.addEventListener("error",r)};typeof Zone<"u"?Zone.root.run(o):o(),h(tt).onDestroy(()=>{e.removeEventListener("error",r),e.removeEventListener("unhandledrejection",n)})}});function Hw(){return vt([rg(()=>void h(Vw))])}function fo(e){return typeof e=="function"&&e[be]!==void 0}function Ve(e,t){let[n,r,o]=wu(e,t?.equal),i=n,s=i[be];return i.set=r,i.update=o,i.asReadonly=Pd.bind(i),i}function Pd(){let e=this[be];if(e.readonlyFn===void 0){let t=()=>this();t[be]=e,e.readonlyFn=t}return e.readonlyFn}function Fd(e){return fo(e)&&typeof e.set=="function"}var at=class{},ho=new E("",{providedIn:"root",factory:()=>!1});var Ld=new E(""),jd=new E("");var Er=(()=>{class e{view;node;constructor(n,r){this.view=n,this.node=r}static __NG_ELEMENT_ID__=$w}return e})();function $w(){return new Er(I(),Te())}var ln=(()=>{class e{taskId=0;pendingTasks=new Set;destroyed=!1;pendingTask=new _e(!1);get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}get hasPendingTasksObservable(){return this.destroyed?new P(n=>{n.next(!1),n.complete()}):this.pendingTask}add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0);let n=this.taskId++;return this.pendingTasks.add(n),n}has(n){return this.pendingTasks.has(n)}remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this.hasPendingTasks&&this.pendingTask.next(!1)}ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pendingTask.next(!1),this.destroyed=!0,this.pendingTask.unsubscribe()}static \u0275prov=b({token:e,providedIn:"root",factory:()=>new e})}return e})(),Ti=(()=>{class e{internalPendingTasks=h(ln);scheduler=h(at);errorHandler=h(Ue);add(){let n=this.internalPendingTasks.add();return()=>{this.internalPendingTasks.has(n)&&(this.scheduler.notify(11),this.internalPendingTasks.remove(n))}}run(n){let r=this.add();n().catch(this.errorHandler).finally(r)}static \u0275prov=b({token:e,providedIn:"root",factory:()=>new e})}return e})();function Dr(...e){}var Si=(()=>{class e{static \u0275prov=b({token:e,providedIn:"root",factory:()=>new Xu})}return e})(),Xu=class{dirtyEffectCount=0;queues=new Map;add(t){this.enqueue(t),this.schedule(t)}schedule(t){t.dirty&&this.dirtyEffectCount++}remove(t){let n=t.zone,r=this.queues.get(n);r.has(t)&&(r.delete(t),t.dirty&&this.dirtyEffectCount--)}enqueue(t){let n=t.zone;this.queues.has(n)||this.queues.set(n,new Set);let r=this.queues.get(n);r.has(t)||r.add(t)}flush(){for(;this.dirtyEffectCount>0;){let t=!1;for(let[n,r]of this.queues)n===null?t||=this.flushQueue(r):t||=n.run(()=>this.flushQueue(r));t||(this.dirtyEffectCount=0)}}flushQueue(t){let n=!1;for(let r of t)r.dirty&&(this.dirtyEffectCount--,n=!0,r.run());return n}};function Eo(e){return{toString:e}.toString()}var Ka="__parameters__";function Yw(e){return function(...n){if(e){let r=e(...n);for(let o in r)this[o]=r[o]}}}function bv(e,t,n){return Eo(()=>{let r=Yw(t);function o(...i){if(this instanceof o)return r.apply(this,i),this;let s=new o(...i);return a.annotation=s,a;function a(c,l,u){let d=c.hasOwnProperty(Ka)?c[Ka]:Object.defineProperty(c,Ka,{value:[]})[Ka];for(;d.length<=u;)d.push(null);return(d[u]=d[u]||[]).push(s),c}}return o.prototype.ngMetadataName=e,o.annotationCls=o,o})}var Lf=cd(bv("Optional"),8);var _v=cd(bv("SkipSelf"),4);function Kw(e){return typeof e=="function"}var ic=class{previousValue;currentValue;firstChange;constructor(t,n,r){this.previousValue=t,this.currentValue=n,this.firstChange=r}isFirstChange(){return this.firstChange}};function Ev(e,t,n,r){t!==null?t.applyValueToInputSignal(t,r):e[n]=r}var fn=(()=>{let e=()=>Dv;return e.ngInherit=!0,e})();function Dv(e){return e.type.prototype.ngOnChanges&&(e.setInput=Xw),Qw}function Qw(){let e=Iv(this),t=e?.current;if(t){let n=e.previous;if(n===An)e.previous=t;else for(let r in t)n[r]=t[r];e.current=null,this.ngOnChanges(t)}}function Xw(e,t,n,r,o){let i=this.declaredInputs[r],s=Iv(e)||Jw(e,{previous:An,current:null}),a=s.current||(s.current={}),c=s.previous,l=c[i];a[i]=new ic(l&&l.currentValue,n,c===An),Ev(e,t,o,n)}var wv="__ngSimpleChanges__";function Iv(e){return e[wv]||null}function Jw(e,t){return e[wv]=t}var Ug=[];var W=function(e,t=null,n){for(let r=0;r<Ug.length;r++){let o=Ug[r];o(e,t,n)}};function eI(e,t,n){let{ngOnChanges:r,ngOnInit:o,ngDoCheck:i}=t.type.prototype;if(r){let s=Dv(t);(n.preOrderHooks??=[]).push(e,s),(n.preOrderCheckHooks??=[]).push(e,s)}o&&(n.preOrderHooks??=[]).push(0-e,o),i&&((n.preOrderHooks??=[]).push(e,i),(n.preOrderCheckHooks??=[]).push(e,i))}function jf(e,t){for(let n=t.directiveStart,r=t.directiveEnd;n<r;n++){let i=e.data[n].type.prototype,{ngAfterContentInit:s,ngAfterContentChecked:a,ngAfterViewInit:c,ngAfterViewChecked:l,ngOnDestroy:u}=i;s&&(e.contentHooks??=[]).push(-n,s),a&&((e.contentHooks??=[]).push(n,a),(e.contentCheckHooks??=[]).push(n,a)),c&&(e.viewHooks??=[]).push(-n,c),l&&((e.viewHooks??=[]).push(n,l),(e.viewCheckHooks??=[]).push(n,l)),u!=null&&(e.destroyHooks??=[]).push(n,u)}}function tc(e,t,n){Cv(e,t,3,n)}function nc(e,t,n,r){(e[A]&3)===n&&Cv(e,t,n,r)}function Bd(e,t){let n=e[A];(n&3)===t&&(n&=16383,n+=1,e[A]=n)}function Cv(e,t,n,r){let o=r!==void 0?e[vr]&65535:0,i=r??-1,s=t.length-1,a=0;for(let c=o;c<s;c++)if(typeof t[c+1]=="number"){if(a=t[c],r!=null&&a>=r)break}else t[c]<0&&(e[vr]+=65536),(a<i||i==-1)&&(tI(e,n,t,c),e[vr]=(e[vr]&4294901760)+c+2),c++}function Vg(e,t){W(4,e,t);let n=M(null);try{t.call(e)}finally{M(n),W(5,e,t)}}function tI(e,t,n,r){let o=n[r]<0,i=n[r+1],s=o?-n[r]:n[r],a=e[s];o?e[A]>>14<e[vr]>>16&&(e[A]&3)===t&&(e[A]+=16384,Vg(a,i)):Vg(a,i)}var mo=-1,Cr=class{factory;injectImpl;resolving=!1;canSeeViewProviders;multi;componentProviders;index;providerFactory;constructor(t,n,r){this.factory=t,this.canSeeViewProviders=n,this.injectImpl=r}};function nI(e){return(e.flags&8)!==0}function rI(e){return(e.flags&16)!==0}function oI(e,t,n){let r=0;for(;r<n.length;){let o=n[r];if(typeof o=="number"){if(o!==0)break;r++;let i=n[r++],s=n[r++],a=n[r++];e.setAttribute(t,s,a,i)}else{let i=o,s=n[++r];iI(i)?e.setProperty(t,i,s):e.setAttribute(t,i,s),r++}}return r}function Tv(e){return e===3||e===4||e===6}function iI(e){return e.charCodeAt(0)===64}function go(e,t){if(!(t===null||t.length===0))if(e===null||e.length===0)e=t.slice();else{let n=-1;for(let r=0;r<t.length;r++){let o=t[r];typeof o=="number"?n=o:n===0||(n===-1||n===2?Hg(e,n,o,null,t[++r]):Hg(e,n,o,null,null))}}return e}function Hg(e,t,n,r,o){let i=0,s=e.length;if(t===-1)s=-1;else for(;i<e.length;){let a=e[i++];if(typeof a=="number"){if(a===t){s=-1;break}else if(a>t){s=i-1;break}}}for(;i<e.length;){let a=e[i];if(typeof a=="number")break;if(a===n){o!==null&&(e[i+1]=o);return}i++,o!==null&&i++}s!==-1&&(e.splice(s,0,t),i=s+1),e.splice(i++,0,n),o!==null&&e.splice(i++,0,o)}function Sv(e){return e!==mo}function sc(e){return e&32767}function sI(e){return e>>16}function ac(e,t){let n=sI(e),r=t;for(;n>0;)r=r[gr],n--;return r}var Qd=!0;function cc(e){let t=Qd;return Qd=e,t}var aI=256,Mv=aI-1,xv=5,cI=0,Ht={};function lI(e,t,n){let r;typeof n=="string"?r=n.charCodeAt(0)||0:n.hasOwnProperty(hr)&&(r=n[hr]),r==null&&(r=n[hr]=cI++);let o=r&Mv,i=1<<o;t.data[e+(o>>xv)]|=i}function lc(e,t){let n=Rv(e,t);if(n!==-1)return n;let r=t[N];r.firstCreatePass&&(e.injectorIndex=t.length,Ud(r.data,e),Ud(t,null),Ud(r.blueprint,null));let o=Bf(e,t),i=e.injectorIndex;if(Sv(o)){let s=sc(o),a=ac(o,t),c=a[N].data;for(let l=0;l<8;l++)t[i+l]=a[s+l]|c[s+l]}return t[i+8]=o,i}function Ud(e,t){e.push(0,0,0,0,0,0,0,0,t)}function Rv(e,t){return e.injectorIndex===-1||e.parent&&e.parent.injectorIndex===e.injectorIndex||t[e.injectorIndex+8]===null?-1:e.injectorIndex}function Bf(e,t){if(e.parent&&e.parent.injectorIndex!==-1)return e.parent.injectorIndex;let n=0,r=null,o=t;for(;o!==null;){if(r=Pv(o),r===null)return mo;if(n++,o=o[gr],r.injectorIndex!==-1)return r.injectorIndex|n<<16}return mo}function Xd(e,t,n){lI(e,t,n)}function uI(e,t){if(t==="class")return e.classes;if(t==="style")return e.styles;let n=e.attrs;if(n){let r=n.length,o=0;for(;o<r;){let i=n[o];if(Tv(i))break;if(i===0)o=o+2;else if(typeof i=="number")for(o++;o<r&&typeof n[o]=="string";)o++;else{if(i===t)return n[o+1];o=o+2}}}return null}function Av(e,t,n){if(n&8||e!==void 0)return e;Oa(t,"NodeInjector")}function Nv(e,t,n,r){if(n&8&&r===void 0&&(r=null),(n&3)===0){let o=e[mr],i=Fe(void 0);try{return o?o.get(t,r,n&8):ad(t,r,n&8)}finally{Fe(i)}}return Av(r,t,n)}function Ov(e,t,n,r=0,o){if(e!==null){if(t[A]&2048&&!(r&2)){let s=pI(e,t,n,r,Ht);if(s!==Ht)return s}let i=kv(e,t,n,r,Ht);if(i!==Ht)return i}return Nv(t,n,r,o)}function kv(e,t,n,r,o){let i=fI(n);if(typeof i=="function"){if(!Nd(t,e,r))return r&1?Av(o,n,r):Nv(t,n,r,o);try{let s;if(s=i(r),s==null&&!(r&8))Oa(n);else return s}finally{Od()}}else if(typeof i=="number"){let s=null,a=Rv(e,t),c=mo,l=r&1?t[Be][je]:null;for((a===-1||r&4)&&(c=a===-1?Bf(e,t):t[a+8],c===mo||!zg(r,!1)?a=-1:(s=t[N],a=sc(c),t=ac(c,t)));a!==-1;){let u=t[N];if($g(i,a,u.data)){let d=dI(a,t,n,s,r,l);if(d!==Ht)return d}c=t[a+8],c!==mo&&zg(r,t[N].data[a+8]===l)&&$g(i,a,t)?(s=u,a=sc(c),t=ac(c,t)):a=-1}}return o}function dI(e,t,n,r,o,i){let s=t[N],a=s.data[e+8],c=r==null?kn(a)&&Qd:r!=s&&(a.type&3)!==0,l=o&1&&i===a,u=rc(a,s,n,c,l);return u!==null?Ri(t,s,u,a):Ht}function rc(e,t,n,r,o){let i=e.providerIndexes,s=t.data,a=i&1048575,c=e.directiveStart,l=e.directiveEnd,u=i>>20,d=r?a:a+u,p=o?a+u:l;for(let f=d;f<p;f++){let g=s[f];if(f<c&&n===g||f>=c&&g.type===n)return f}if(o){let f=s[c];if(f&&Ut(f)&&f.type===n)return c}return null}function Ri(e,t,n,r){let o=e[n],i=t.data;if(o instanceof Cr){let s=o;s.resolving&&sd(Km(i[n]));let a=cc(s.canSeeViewProviders);s.resolving=!0;let c=i[n].type||i[n],l,u=s.injectImpl?Fe(s.injectImpl):null,d=Nd(e,r,0);try{o=e[n]=s.factory(void 0,i,e,r),t.firstCreatePass&&n>=r.directiveStart&&eI(n,i[n],t)}finally{u!==null&&Fe(u),cc(a),s.resolving=!1,Od()}}return o}function fI(e){if(typeof e=="string")return e.charCodeAt(0)||0;let t=e.hasOwnProperty(hr)?e[hr]:void 0;return typeof t=="number"?t>=0?t&Mv:hI:t}function $g(e,t,n){let r=1<<e;return!!(n[t+(e>>xv)]&r)}function zg(e,t){return!(e&2)&&!(e&1&&t)}var Ir=class{_tNode;_lView;constructor(t,n){this._tNode=t,this._lView=n}get(t,n,r){return Ov(this._tNode,this._lView,t,lr(r),n)}};function hI(){return new Ir(Te(),I())}function wc(e){return Eo(()=>{let t=e.prototype.constructor,n=t[ui]||Jd(t),r=Object.prototype,o=Object.getPrototypeOf(e.prototype).constructor;for(;o&&o!==r;){let i=o[ui]||Jd(o);if(i&&i!==n)return i;o=Object.getPrototypeOf(o)}return i=>new i})}function Jd(e){return Ju(e)?()=>{let t=Jd(Re(e));return t&&t()}:Mn(e)}function pI(e,t,n,r,o){let i=e,s=t;for(;i!==null&&s!==null&&s[A]&2048&&!co(s);){let a=kv(i,s,n,r|2,Ht);if(a!==Ht)return a;let c=i.parent;if(!c){let l=s[yd];if(l){let u=l.get(n,Ht,r);if(u!==Ht)return u}c=Pv(s),s=s[gr]}i=c}return o}function Pv(e){let t=e[N],n=t.type;return n===2?t.declTNode:n===1?e[je]:null}function Fi(e){return uI(Te(),e)}function mI(){return Do(Te(),I())}function Do(e,t){return new me(_t(e,t))}var me=(()=>{class e{nativeElement;constructor(n){this.nativeElement=n}static __NG_ELEMENT_ID__=mI}return e})();function Fv(e){return e instanceof me?e.nativeElement:e}function gI(){return this._results[Symbol.iterator]()}var Tr=class{_emitDistinctChangesOnly;dirty=!0;_onDirty=void 0;_results=[];_changesDetected=!1;_changes=void 0;length=0;first=void 0;last=void 0;get changes(){return this._changes??=new V}constructor(t=!1){this._emitDistinctChangesOnly=t}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){this.dirty=!1;let r=Jm(t);(this._changesDetected=!Xm(this._results,r,n))&&(this._results=r,this.length=r.length,this.last=r[this.length-1],this.first=r[0])}notifyOnChanges(){this._changes!==void 0&&(this._changesDetected||!this._emitDistinctChangesOnly)&&this._changes.next(this)}onDirty(t){this._onDirty=t}setDirty(){this.dirty=!0,this._onDirty?.()}destroy(){this._changes!==void 0&&(this._changes.complete(),this._changes.unsubscribe())}[Symbol.iterator]=gI};function Lv(e){return(e.flags&128)===128}var Uf=function(e){return e[e.OnPush=0]="OnPush",e[e.Default=1]="Default",e}(Uf||{}),jv=new Map,vI=0;function yI(){return vI++}function bI(e){jv.set(e[gi],e)}function ef(e){jv.delete(e[gi])}var Wg="__ngContext__";function wo(e,t){Bt(t)?(e[Wg]=t[gi],bI(t)):e[Wg]=t}function Bv(e){return Vv(e[ao])}function Uv(e){return Vv(e[lt])}function Vv(e){for(;e!==null&&!bt(e);)e=e[lt];return e}var tf;function Vf(e){tf=e}function Hv(){if(tf!==void 0)return tf;if(typeof document<"u")return document;throw new _(210,!1)}var Bn=new E("",{providedIn:"root",factory:()=>_I}),_I="ng",Ic=new E(""),Un=new E("",{providedIn:"platform",factory:()=>"unknown"});var Hf=new E(""),Io=new E("",{providedIn:"root",factory:()=>Hv().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce")||null});var EI="h",DI="b";var $v="r";var zv="di";var Wv=!1,Gv=new E("",{providedIn:"root",factory:()=>Wv});var wI=(e,t,n,r)=>{};function II(e,t,n,r){wI(e,t,n,r)}var CI=()=>null;function qv(e,t,n=!1){return CI(e,t,n)}function Zv(e,t){let n=e.contentQueries;if(n!==null){let r=M(null);try{for(let o=0;o<n.length;o+=2){let i=n[o],s=n[o+1];if(s!==-1){let a=e.data[s];Di(i),a.contentQueries(2,t[s],s)}}}finally{M(r)}}}function nf(e,t,n){Di(0);let r=M(null);try{t(e,n)}finally{M(r)}}function $f(e,t,n){if(ja(t)){let r=M(null);try{let o=t.directiveStart,i=t.directiveEnd;for(let s=o;s<i;s++){let a=e.data[s];if(a.contentQueries){let c=n[s];a.contentQueries(1,c,s)}}}finally{M(r)}}}var un=function(e){return e[e.Emulated=0]="Emulated",e[e.None=2]="None",e[e.ShadowDom=3]="ShadowDom",e}(un||{}),Qa;function TI(){if(Qa===void 0&&(Qa=null,ct.trustedTypes))try{Qa=ct.trustedTypes.createPolicy("angular",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Qa}function Cc(e){return TI()?.createHTML(e)||e}var Xa;function SI(){if(Xa===void 0&&(Xa=null,ct.trustedTypes))try{Xa=ct.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return Xa}function Gg(e){return SI()?.createScriptURL(e)||e}var dn=class{changingThisBreaksApplicationSecurity;constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${xa})`}},rf=class extends dn{getTypeName(){return"HTML"}},of=class extends dn{getTypeName(){return"Style"}},sf=class extends dn{getTypeName(){return"Script"}},af=class extends dn{getTypeName(){return"URL"}},cf=class extends dn{getTypeName(){return"ResourceURL"}};function Ct(e){return e instanceof dn?e.changingThisBreaksApplicationSecurity:e}function hn(e,t){let n=Yv(e);if(n!=null&&n!==t){if(n==="ResourceURL"&&t==="URL")return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${xa})`)}return n===t}function Yv(e){return e instanceof dn&&e.getTypeName()||null}function zf(e){return new rf(e)}function Wf(e){return new of(e)}function Gf(e){return new sf(e)}function qf(e){return new af(e)}function Zf(e){return new cf(e)}function MI(e){let t=new uf(e);return xI()?new lf(t):t}var lf=class{inertDocumentHelper;constructor(t){this.inertDocumentHelper=t}getInertBodyElement(t){t="<body><remove></remove>"+t;try{let n=new window.DOMParser().parseFromString(Cc(t),"text/html").body;return n===null?this.inertDocumentHelper.getInertBodyElement(t):(n.firstChild?.remove(),n)}catch{return null}}},uf=class{defaultDoc;inertDocument;constructor(t){this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(t){let n=this.inertDocument.createElement("template");return n.innerHTML=Cc(t),n}};function xI(){try{return!!new window.DOMParser().parseFromString(Cc(""),"text/html")}catch{return!1}}var RI=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Li(e){return e=String(e),e.match(RI)?e:"unsafe:"+e}function pn(e){let t={};for(let n of e.split(","))t[n]=!0;return t}function ji(...e){let t={};for(let n of e)for(let r in n)n.hasOwnProperty(r)&&(t[r]=!0);return t}var Kv=pn("area,br,col,hr,img,wbr"),Qv=pn("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Xv=pn("rp,rt"),AI=ji(Xv,Qv),NI=ji(Qv,pn("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")),OI=ji(Xv,pn("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")),qg=ji(Kv,NI,OI,AI),Jv=pn("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),kI=pn("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"),PI=pn("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"),FI=ji(Jv,kI,PI),LI=pn("script,style,template"),df=class{sanitizedSomething=!1;buf=[];sanitizeChildren(t){let n=t.firstChild,r=!0,o=[];for(;n;){if(n.nodeType===Node.ELEMENT_NODE?r=this.startElement(n):n.nodeType===Node.TEXT_NODE?this.chars(n.nodeValue):this.sanitizedSomething=!0,r&&n.firstChild){o.push(n),n=UI(n);continue}for(;n;){n.nodeType===Node.ELEMENT_NODE&&this.endElement(n);let i=BI(n);if(i){n=i;break}n=o.pop()}}return this.buf.join("")}startElement(t){let n=Zg(t).toLowerCase();if(!qg.hasOwnProperty(n))return this.sanitizedSomething=!0,!LI.hasOwnProperty(n);this.buf.push("<"),this.buf.push(n);let r=t.attributes;for(let o=0;o<r.length;o++){let i=r.item(o),s=i.name,a=s.toLowerCase();if(!FI.hasOwnProperty(a)){this.sanitizedSomething=!0;continue}let c=i.value;Jv[a]&&(c=Li(c)),this.buf.push(" ",s,'="',Yg(c),'"')}return this.buf.push(">"),!0}endElement(t){let n=Zg(t).toLowerCase();qg.hasOwnProperty(n)&&!Kv.hasOwnProperty(n)&&(this.buf.push("</"),this.buf.push(n),this.buf.push(">"))}chars(t){this.buf.push(Yg(t))}};function jI(e,t){return(e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_CONTAINED_BY)!==Node.DOCUMENT_POSITION_CONTAINED_BY}function BI(e){let t=e.nextSibling;if(t&&e!==t.previousSibling)throw ey(t);return t}function UI(e){let t=e.firstChild;if(t&&jI(e,t))throw ey(t);return t}function Zg(e){let t=e.nodeName;return typeof t=="string"?t:"FORM"}function ey(e){return new Error(`Failed to sanitize html because the element is clobbered: ${e.outerHTML}`)}var VI=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,HI=/([^\#-~ |!])/g;function Yg(e){return e.replace(/&/g,"&").replace(VI,function(t){let n=t.charCodeAt(0),r=t.charCodeAt(1);return"&#"+((n-55296)*1024+(r-56320)+65536)+";"}).replace(HI,function(t){return"&#"+t.charCodeAt(0)+";"}).replace(/</g,"<").replace(/>/g,">")}var Ja;function Yf(e,t){let n=null;try{Ja=Ja||MI(e);let r=t?String(t):"";n=Ja.getInertBodyElement(r);let o=5,i=r;do{if(o===0)throw new Error("Failed to sanitize html because the input is unstable");o--,r=i,i=n.innerHTML,n=Ja.getInertBodyElement(r)}while(r!==i);let a=new df().sanitizeChildren(Kg(n)||n);return Cc(a)}finally{if(n){let r=Kg(n)||n;for(;r.firstChild;)r.firstChild.remove()}}}function Kg(e){return"content"in e&&$I(e)?e.content:null}function $I(e){return e.nodeType===Node.ELEMENT_NODE&&e.nodeName==="TEMPLATE"}var Tt=function(e){return e[e.NONE=0]="NONE",e[e.HTML=1]="HTML",e[e.STYLE=2]="STYLE",e[e.SCRIPT=3]="SCRIPT",e[e.URL=4]="URL",e[e.RESOURCE_URL=5]="RESOURCE_URL",e}(Tt||{});function ty(e){let t=ry();return t?t.sanitize(Tt.URL,e)||"":hn(e,"URL")?Ct(e):Li(Rn(e))}function ny(e){let t=ry();if(t)return Gg(t.sanitize(Tt.RESOURCE_URL,e)||"");if(hn(e,"ResourceURL"))return Gg(Ct(e));throw new _(904,!1)}function zI(e,t){return t==="src"&&(e==="embed"||e==="frame"||e==="iframe"||e==="media"||e==="script")||t==="href"&&(e==="base"||e==="link")?ny:ty}function Kf(e,t,n){return zI(t,n)(e)}function ry(){let e=I();return e&&e[Lt].sanitizer}var WI=/^>|^->|<!--|-->|--!>|<!-$/g,GI=/(<|>)/g,qI="\u200B$1\u200B";function ZI(e){return e.replace(WI,t=>t.replace(GI,qI))}function oy(e){return e instanceof Function?e():e}function YI(e,t,n){let r=e.length;for(;;){let o=e.indexOf(t,n);if(o===-1)return o;if(o===0||e.charCodeAt(o-1)<=32){let i=t.length;if(o+i===r||e.charCodeAt(o+i)<=32)return o}n=o+1}}var iy="ng-template";function KI(e,t,n,r){let o=0;if(r){for(;o<t.length&&typeof t[o]=="string";o+=2)if(t[o]==="class"&&YI(t[o+1].toLowerCase(),n,0)!==-1)return!0}else if(Qf(e))return!1;if(o=t.indexOf(1,o),o>-1){let i;for(;++o<t.length&&typeof(i=t[o])=="string";)if(i.toLowerCase()===n)return!0}return!1}function Qf(e){return e.type===4&&e.value!==iy}function QI(e,t,n){let r=e.type===4&&!n?iy:e.value;return t===r}function XI(e,t,n){let r=4,o=e.attrs,i=o!==null?tC(o):0,s=!1;for(let a=0;a<t.length;a++){let c=t[a];if(typeof c=="number"){if(!s&&!Dt(r)&&!Dt(c))return!1;if(s&&Dt(c))continue;s=!1,r=c|r&1;continue}if(!s)if(r&4){if(r=2|r&1,c!==""&&!QI(e,c,n)||c===""&&t.length===1){if(Dt(r))return!1;s=!0}}else if(r&8){if(o===null||!KI(e,o,c,n)){if(Dt(r))return!1;s=!0}}else{let l=t[++a],u=JI(c,o,Qf(e),n);if(u===-1){if(Dt(r))return!1;s=!0;continue}if(l!==""){let d;if(u>i?d="":d=o[u+1].toLowerCase(),r&2&&l!==d){if(Dt(r))return!1;s=!0}}}}return Dt(r)||s}function Dt(e){return(e&1)===0}function JI(e,t,n,r){if(t===null)return-1;let o=0;if(r||!n){let i=!1;for(;o<t.length;){let s=t[o];if(s===e)return o;if(s===3||s===6)i=!0;else if(s===1||s===2){let a=t[++o];for(;typeof a=="string";)a=t[++o];continue}else{if(s===4)break;if(s===0){o+=4;continue}}o+=i?1:2}return-1}else return nC(t,e)}function sy(e,t,n=!1){for(let r=0;r<t.length;r++)if(XI(e,t[r],n))return!0;return!1}function eC(e){let t=e.attrs;if(t!=null){let n=t.indexOf(5);if((n&1)===0)return t[n+1]}return null}function tC(e){for(let t=0;t<e.length;t++){let n=e[t];if(Tv(n))return t}return e.length}function nC(e,t){let n=e.indexOf(4);if(n>-1)for(n++;n<e.length;){let r=e[n];if(typeof r=="number")return-1;if(r===t)return n;n++}return-1}function rC(e,t){e:for(let n=0;n<t.length;n++){let r=t[n];if(e.length===r.length){for(let o=0;o<e.length;o++)if(e[o]!==r[o])continue e;return!0}}return!1}function Qg(e,t){return e?":not("+t.trim()+")":t}function oC(e){let t=e[0],n=1,r=2,o="",i=!1;for(;n<e.length;){let s=e[n];if(typeof s=="string")if(r&2){let a=e[++n];o+="["+s+(a.length>0?'="'+a+'"':"")+"]"}else r&8?o+="."+s:r&4&&(o+=" "+s);else o!==""&&!Dt(s)&&(t+=Qg(i,o),o=""),r=s,i=i||!Dt(r);n++}return o!==""&&(t+=Qg(i,o)),t}function iC(e){return e.map(oC).join(",")}function sC(e){let t=[],n=[],r=1,o=2;for(;r<e.length;){let i=e[r];if(typeof i=="string")o===2?i!==""&&t.push(i,e[++r]):o===8&&n.push(i);else{if(!Dt(o))break;o=i}r++}return n.length&&t.push(1,...n),t}var ke={};function aC(e,t){return e.createText(t)}function cC(e,t,n){e.setValue(t,n)}function lC(e,t){return e.createComment(ZI(t))}function ay(e,t,n){return e.createElement(t,n)}function uc(e,t,n,r,o){e.insertBefore(t,n,r,o)}function cy(e,t,n){e.appendChild(t,n)}function Xg(e,t,n,r,o){r!==null?uc(e,t,n,r,o):cy(e,t,n)}function ly(e,t,n){e.removeChild(null,t,n)}function uC(e,t,n){e.setAttribute(t,"style",n)}function dC(e,t,n){n===""?e.removeAttribute(t,"class"):e.setAttribute(t,"class",n)}function uy(e,t,n){let{mergedAttrs:r,classes:o,styles:i}=n;r!==null&&oI(e,t,r),o!==null&&dC(e,t,o),i!==null&&uC(e,t,i)}function Xf(e,t,n,r,o,i,s,a,c,l,u){let d=pe+r,p=d+o,f=fC(d,p),g=typeof l=="function"?l():l;return f[N]={type:e,blueprint:f,template:n,queries:null,viewQuery:a,declTNode:t,data:f.slice().fill(null,d),bindingStartIndex:d,expandoStartIndex:p,hostBindingOpCodes:null,firstCreatePass:!0,firstUpdatePass:!0,staticViewQueries:!1,staticContentQueries:!1,preOrderHooks:null,preOrderCheckHooks:null,contentHooks:null,contentCheckHooks:null,viewHooks:null,viewCheckHooks:null,destroyHooks:null,cleanup:null,contentQueries:null,components:null,directiveRegistry:typeof i=="function"?i():i,pipeRegistry:typeof s=="function"?s():s,firstChild:null,schemas:c,consts:g,incompleteFirstPass:!1,ssrId:u}}function fC(e,t){let n=[];for(let r=0;r<t;r++)n.push(r<e?null:ke);return n}function hC(e){let t=e.tView;return t===null||t.incompleteFirstPass?e.tView=Xf(1,null,e.template,e.decls,e.vars,e.directiveDefs,e.pipeDefs,e.viewQuery,e.schemas,e.consts,e.id):t}function Jf(e,t,n,r,o,i,s,a,c,l,u){let d=t.blueprint.slice();return d[yt]=o,d[A]=r|4|128|8|64|1024,(l!==null||e&&e[A]&2048)&&(d[A]|=2048),wd(d),d[Ee]=d[gr]=e,d[he]=n,d[Lt]=s||e&&e[Lt],d[Q]=a||e&&e[Q],d[mr]=c||e&&e[mr]||null,d[je]=i,d[gi]=yI(),d[pr]=u,d[yd]=l,d[Be]=t.type==2?e[Be]:d,d}function pC(e,t,n){let r=_t(t,e),o=hC(n),i=e[Lt].rendererFactory,s=eh(e,Jf(e,o,null,dy(n),r,t,null,i.createRenderer(r,n),null,null,null));return e[t.index]=s}function dy(e){let t=16;return e.signals?t=4096:e.onPush&&(t=64),t}function fy(e,t,n,r){if(n===0)return-1;let o=t.length;for(let i=0;i<n;i++)t.push(r),e.blueprint.push(r),e.data.push(null);return o}function eh(e,t){return e[ao]?e[vd][lt]=t:e[ao]=t,e[vd]=t,t}function mC(e=1){hy(X(),I(),Vt()+e,!1)}function hy(e,t,n,r){if(!r)if((t[A]&3)===3){let i=e.preOrderCheckHooks;i!==null&&tc(t,i,n)}else{let i=e.preOrderHooks;i!==null&&nc(t,i,0,n)}Ln(n)}var Tc=function(e){return e[e.None=0]="None",e[e.SignalBased=1]="SignalBased",e[e.HasDecoratorInputTransform=2]="HasDecoratorInputTransform",e}(Tc||{});function ff(e,t,n,r){let o=M(null);try{let[i,s,a]=e.inputs[n],c=null;(s&Tc.SignalBased)!==0&&(c=t[i][be]),c!==null&&c.transformFn!==void 0?r=c.transformFn(r):a!==null&&(r=a.call(t,r)),e.setInput!==null?e.setInput(t,c,r,n,i):Ev(t,c,i,r)}finally{M(o)}}function py(e,t,n,r,o){let i=Vt(),s=r&2;try{Ln(-1),s&&t.length>pe&&hy(e,t,pe,!1),W(s?2:0,o,n),n(r,o)}finally{Ln(i),W(s?3:1,o,n)}}function Sc(e,t,n){EC(e,t,n),(n.flags&64)===64&&DC(e,t,n)}function th(e,t,n=_t){let r=t.localNames;if(r!==null){let o=t.index+1;for(let i=0;i<r.length;i+=2){let s=r[i+1],a=s===-1?n(t,e):e[s];e[o++]=a}}}function gC(e,t,n,r){let i=r.get(Gv,Wv)||n===un.ShadowDom,s=e.selectRootElement(t,i);return vC(s),s}function vC(e){yC(e)}var yC=()=>null;function bC(e){return e==="class"?"className":e==="for"?"htmlFor":e==="formaction"?"formAction":e==="innerHtml"?"innerHTML":e==="readonly"?"readOnly":e==="tabindex"?"tabIndex":e}function my(e,t,n,r,o,i){let s=t[N];if(rh(e,s,t,n,r)){kn(e)&&_C(t,e.index);return}gy(e,t,n,r,o,i)}function gy(e,t,n,r,o,i){if(e.type&3){let s=_t(e,t);n=bC(n),r=i!=null?i(r,e.value||"",n):r,o.setProperty(s,n,r)}else e.type&12}function _C(e,t){let n=dt(t,e);n[A]&16||(n[A]|=64)}function EC(e,t,n){let r=n.directiveStart,o=n.directiveEnd;kn(n)&&pC(t,n,e.data[r+n.componentOffset]),e.firstCreatePass||lc(n,t);let i=n.initialInputs;for(let s=r;s<o;s++){let a=e.data[s],c=Ri(t,e,s,n);if(wo(c,t),i!==null&&TC(t,s-r,c,a,n,i),Ut(a)){let l=dt(n.index,t);l[he]=Ri(t,e,s,n)}}}function DC(e,t,n){let r=n.directiveStart,o=n.directiveEnd,i=n.index,s=xg();try{Ln(i);for(let a=r;a<o;a++){let c=e.data[a],l=t[a];Ga(a),(c.hostBindings!==null||c.hostVars!==0||c.hostAttrs!==null)&&wC(c,l)}}finally{Ln(-1),Ga(s)}}function wC(e,t){e.hostBindings!==null&&e.hostBindings(1,t)}function nh(e,t){let n=e.directiveRegistry,r=null;if(n)for(let o=0;o<n.length;o++){let i=n[o];sy(t,i.selectors,!1)&&(r??=[],Ut(i)?r.unshift(i):r.push(i))}return r}function IC(e,t,n,r,o,i){let s=_t(e,t);CC(t[Q],s,i,e.value,n,r,o)}function CC(e,t,n,r,o,i,s){if(i==null)e.removeAttribute(t,o,n);else{let a=s==null?Rn(i):s(i,r||"",o);e.setAttribute(t,o,a,n)}}function TC(e,t,n,r,o,i){let s=i[t];if(s!==null)for(let a=0;a<s.length;a+=2){let c=s[a],l=s[a+1];ff(r,n,c,l)}}function SC(e,t){let n=e[mr];if(!n)return;n.get(Ue,null)?.(t)}function rh(e,t,n,r,o){let i=e.inputs?.[r],s=e.hostDirectiveInputs?.[r],a=!1;if(s)for(let c=0;c<s.length;c+=2){let l=s[c],u=s[c+1],d=t.data[l];ff(d,n[l],u,o),a=!0}if(i)for(let c of i){let l=n[c],u=t.data[c];ff(u,l,r,o),a=!0}return a}function MC(e,t){let n=dt(t,e),r=n[N];xC(r,n);let o=n[yt];o!==null&&n[pr]===null&&(n[pr]=qv(o,n[mr])),W(18),oh(r,n,n[he]),W(19,n[he])}function xC(e,t){for(let n=t.length;n<e.blueprint.length;n++)t.push(e.blueprint[n])}function oh(e,t,n){Za(t);try{let r=e.viewQuery;r!==null&&nf(1,r,n);let o=e.template;o!==null&&py(e,t,o,1,n),e.firstCreatePass&&(e.firstCreatePass=!1),t[jt]?.finishViewCreation(e),e.staticContentQueries&&Zv(e,t),e.staticViewQueries&&nf(2,e.viewQuery,n);let i=e.components;i!==null&&RC(t,i)}catch(r){throw e.firstCreatePass&&(e.incompleteFirstPass=!0,e.firstCreatePass=!1),r}finally{t[A]&=-5,Ya()}}function RC(e,t){for(let n=0;n<t.length;n++)MC(e,t[n])}function Bi(e,t,n,r){let o=M(null);try{let i=t.tView,a=e[A]&4096?4096:16,c=Jf(e,i,n,a,null,t,null,null,r?.injector??null,r?.embeddedViewInjector??null,r?.dehydratedView??null),l=e[t.index];c[Nn]=l;let u=e[jt];return u!==null&&(c[jt]=u.createEmbeddedView(i)),oh(i,c,n),c}finally{M(o)}}function vo(e,t){return!t||t.firstChild===null||Lv(e)}var Jg=!1,AC=new E(""),NC;function ih(e,t){return NC(e,t)}var $t=function(e){return e[e.Important=1]="Important",e[e.DashCase=2]="DashCase",e}($t||{});function Mc(e){return(e.flags&32)===32}function po(e,t,n,r,o){if(r!=null){let i,s=!1;bt(r)?i=r:Bt(r)&&(s=!0,r=r[yt]);let a=ut(r);e===0&&n!==null?o==null?cy(t,n,a):uc(t,n,a,o||null,!0):e===1&&n!==null?uc(t,n,a,o||null,!0):e===2?ly(t,a,s):e===3&&t.destroyNode(a),i!=null&&HC(t,e,i,n,o)}}function OC(e,t){vy(e,t),t[yt]=null,t[je]=null}function kC(e,t,n,r,o,i){r[yt]=o,r[je]=t,Ac(e,r,n,1,o,i)}function vy(e,t){t[Lt].changeDetectionScheduler?.notify(9),Ac(e,t,t[Q],2,null,null)}function PC(e){let t=e[ao];if(!t)return Vd(e[N],e);for(;t;){let n=null;if(Bt(t))n=t[ao];else{let r=t[Ce];r&&(n=r)}if(!n){for(;t&&!t[lt]&&t!==e;)Bt(t)&&Vd(t[N],t),t=t[Ee];t===null&&(t=e),Bt(t)&&Vd(t[N],t),n=t&&t[lt]}t=n}}function sh(e,t){let n=e[br],r=n.indexOf(t);n.splice(r,1)}function xc(e,t){if(_r(t))return;let n=t[Q];n.destroyNode&&Ac(e,t,n,3,null,null),PC(t)}function Vd(e,t){if(_r(t))return;let n=M(null);try{t[A]&=-129,t[A]|=256,t[et]&&Wr(t[et]),LC(e,t),FC(e,t),t[N].type===1&&t[Q].destroy();let r=t[Nn];if(r!==null&&bt(t[Ee])){r!==t[Ee]&&sh(r,t);let o=t[jt];o!==null&&o.detachView(e)}ef(t)}finally{M(n)}}function FC(e,t){let n=e.cleanup,r=t[so];if(n!==null)for(let s=0;s<n.length-1;s+=2)if(typeof n[s]=="string"){let a=n[s+3];a>=0?r[a]():r[-a].unsubscribe(),s+=2}else{let a=r[n[s+1]];n[s].call(a)}r!==null&&(t[so]=null);let o=t[on];if(o!==null){t[on]=null;for(let s=0;s<o.length;s++){let a=o[s];a()}}let i=t[an];if(i!==null){t[an]=null;for(let s of i)s.destroy()}}function LC(e,t){let n;if(e!=null&&(n=e.destroyHooks)!=null)for(let r=0;r<n.length;r+=2){let o=t[n[r]];if(!(o instanceof Cr)){let i=n[r+1];if(Array.isArray(i))for(let s=0;s<i.length;s+=2){let a=o[i[s]],c=i[s+1];W(4,a,c);try{c.call(a)}finally{W(5,a,c)}}else{W(4,o,i);try{i.call(o)}finally{W(5,o,i)}}}}}function yy(e,t,n){return jC(e,t.parent,n)}function jC(e,t,n){let r=t;for(;r!==null&&r.type&168;)t=r,r=t.parent;if(r===null)return n[yt];if(kn(r)){let{encapsulation:o}=e.data[r.directiveStart+r.componentOffset];if(o===un.None||o===un.Emulated)return null}return _t(r,n)}function by(e,t,n){return UC(e,t,n)}function BC(e,t,n){return e.type&40?_t(e,n):null}var UC=BC,ev;function Rc(e,t,n,r){let o=yy(e,r,t),i=t[Q],s=r.parent||t[je],a=by(s,r,t);if(o!=null)if(Array.isArray(n))for(let c=0;c<n.length;c++)Xg(i,o,n[c],a,!1);else Xg(i,o,n,a,!1);ev!==void 0&&ev(i,r,t,n,o)}function Mi(e,t){if(t!==null){let n=t.type;if(n&3)return _t(t,e);if(n&4)return hf(-1,e[t.index]);if(n&8){let r=t.child;if(r!==null)return Mi(e,r);{let o=e[t.index];return bt(o)?hf(-1,o):ut(o)}}else{if(n&128)return Mi(e,t.next);if(n&32)return ih(t,e)()||ut(e[t.index]);{let r=_y(e,t);if(r!==null){if(Array.isArray(r))return r[0];let o=xn(e[Be]);return Mi(o,r)}else return Mi(e,t.next)}}}return null}function _y(e,t){if(t!==null){let r=e[Be][je],o=t.projection;return r.projection[o]}return null}function hf(e,t){let n=Ce+e+1;if(n<t.length){let r=t[n],o=r[N].firstChild;if(o!==null)return Mi(r,o)}return t[On]}function ah(e,t,n,r,o,i,s){for(;n!=null;){if(n.type===128){n=n.next;continue}let a=r[n.index],c=n.type;if(s&&t===0&&(a&&wo(ut(a),r),n.flags|=2),!Mc(n))if(c&8)ah(e,t,n.child,r,o,i,!1),po(t,e,o,a,i);else if(c&32){let l=ih(n,r),u;for(;u=l();)po(t,e,o,u,i);po(t,e,o,a,i)}else c&16?Ey(e,t,r,n,o,i):po(t,e,o,a,i);n=s?n.projectionNext:n.next}}function Ac(e,t,n,r,o,i){ah(n,r,e.firstChild,t,o,i,!1)}function VC(e,t,n){let r=t[Q],o=yy(e,n,t),i=n.parent||t[je],s=by(i,n,t);Ey(r,0,t,n,o,s)}function Ey(e,t,n,r,o,i){let s=n[Be],c=s[je].projection[r.projection];if(Array.isArray(c))for(let l=0;l<c.length;l++){let u=c[l];po(t,e,o,u,i)}else{let l=c,u=s[Ee];Lv(r)&&(l.flags|=128),ah(e,t,l,u,o,i,!0)}}function HC(e,t,n,r,o){let i=n[On],s=ut(n);i!==s&&po(t,e,r,i,o);for(let a=Ce;a<n.length;a++){let c=n[a];Ac(c[N],c,e,t,r,i)}}function $C(e,t,n,r,o){if(t)o?e.addClass(n,r):e.removeClass(n,r);else{let i=r.indexOf("-")===-1?void 0:$t.DashCase;o==null?e.removeStyle(n,r,i):(typeof o=="string"&&o.endsWith("!important")&&(o=o.slice(0,-10),i|=$t.Important),e.setStyle(n,r,o,i))}}function Ai(e,t,n,r,o=!1){for(;n!==null;){if(n.type===128){n=o?n.projectionNext:n.next;continue}let i=t[n.index];i!==null&&r.push(ut(i)),bt(i)&&Dy(i,r);let s=n.type;if(s&8)Ai(e,t,n.child,r);else if(s&32){let a=ih(n,t),c;for(;c=a();)r.push(c)}else if(s&16){let a=_y(t,n);if(Array.isArray(a))r.push(...a);else{let c=xn(t[Be]);Ai(c[N],c,a,r,!0)}}n=o?n.projectionNext:n.next}return r}function Dy(e,t){for(let n=Ce;n<e.length;n++){let r=e[n],o=r[N].firstChild;o!==null&&Ai(r[N],r,o,t)}e[On]!==e[yt]&&t.push(e[On])}function wy(e){if(e[yr]!==null){for(let t of e[yr])t.impl.addSequence(t);e[yr].length=0}}var Iy=[];function zC(e){return e[et]??WC(e)}function WC(e){let t=Iy.pop()??Object.create(qC);return t.lView=e,t}function GC(e){e.lView[et]!==e&&(e.lView=null,Iy.push(e))}var qC=U(v({},Dn),{consumerIsAlwaysLive:!0,kind:"template",consumerMarkedDirty:e=>{Pn(e.lView)},consumerOnSignalRead(){this.lView[et]=this}});function ZC(e){let t=e[et]??Object.create(YC);return t.lView=e,t}var YC=U(v({},Dn),{consumerIsAlwaysLive:!0,kind:"template",consumerMarkedDirty:e=>{let t=xn(e.lView);for(;t&&!Cy(t[N]);)t=xn(t);t&&Id(t)},consumerOnSignalRead(){this.lView[et]=this}});function Cy(e){return e.type!==2}function Ty(e){if(e[an]===null)return;let t=!0;for(;t;){let n=!1;for(let r of e[an])r.dirty&&(n=!0,r.zone===null||Zone.current===r.zone?r.run():r.zone.run(()=>r.run()));t=n&&!!(e[A]&8192)}}var KC=100;function ch(e,t=0){let r=e[Lt].rendererFactory,o=!1;o||r.begin?.();try{QC(e,t)}finally{o||r.end?.()}}function QC(e,t){let n=Ad();try{lo(!0),pf(e,t);let r=0;for(;_i(e);){if(r===KC)throw new _(103,!1);r++,pf(e,1)}}finally{lo(n)}}function Sy(e,t){Rd(t?Ei.Exhaustive:Ei.OnlyDirtyViews);try{ch(e)}finally{Rd(Ei.Off)}}function XC(e,t,n,r){if(_r(t))return;let o=t[A],i=!1,s=!1;Za(t);let a=!0,c=null,l=null;i||(Cy(e)?(l=zC(t),c=tn(l)):Zs()===null?(a=!1,l=ZC(t),c=tn(l)):t[et]&&(Wr(t[et]),t[et]=null));try{wd(t),Tg(e.bindingStartIndex),n!==null&&py(e,t,n,2,r);let u=(o&3)===3;if(!i)if(u){let f=e.preOrderCheckHooks;f!==null&&tc(t,f,null)}else{let f=e.preOrderHooks;f!==null&&nc(t,f,0,null),Bd(t,0)}if(s||JC(t),Ty(t),My(t,0),e.contentQueries!==null&&Zv(e,t),!i)if(u){let f=e.contentCheckHooks;f!==null&&tc(t,f)}else{let f=e.contentHooks;f!==null&&nc(t,f,1),Bd(t,1)}tT(e,t);let d=e.components;d!==null&&Ry(t,d,0);let p=e.viewQuery;if(p!==null&&nf(2,p,r),!i)if(u){let f=e.viewCheckHooks;f!==null&&tc(t,f)}else{let f=e.viewHooks;f!==null&&nc(t,f,2),Bd(t,2)}if(e.firstUpdatePass===!0&&(e.firstUpdatePass=!1),t[La]){for(let f of t[La])f();t[La]=null}i||(wy(t),t[A]&=-73)}catch(u){throw i||Pn(t),u}finally{l!==null&&(wn(l,c),a&&GC(l)),Ya()}}function My(e,t){for(let n=Bv(e);n!==null;n=Uv(n))for(let r=Ce;r<n.length;r++){let o=n[r];xy(o,t)}}function JC(e){for(let t=Bv(e);t!==null;t=Uv(t)){if(!(t[A]&2))continue;let n=t[br];for(let r=0;r<n.length;r++){let o=n[r];Id(o)}}}function eT(e,t,n){W(18);let r=dt(t,e);xy(r,n),W(19,r[he])}function xy(e,t){Ua(e)&&pf(e,t)}function pf(e,t){let r=e[N],o=e[A],i=e[et],s=!!(t===0&&o&16);if(s||=!!(o&64&&t===0),s||=!!(o&1024),s||=!!(i?.dirty&&er(i)),s||=!1,i&&(i.dirty=!1),e[A]&=-9217,s)XC(r,e,r.template,e[he]);else if(o&8192){let a=M(null);try{Ty(e),My(e,1);let c=r.components;c!==null&&Ry(e,c,1),wy(e)}finally{M(a)}}}function Ry(e,t,n){for(let r=0;r<t.length;r++)eT(e,t[r],n)}function tT(e,t){let n=e.hostBindingOpCodes;if(n!==null)try{for(let r=0;r<n.length;r++){let o=n[r];if(o<0)Ln(~o);else{let i=o,s=n[++r],a=n[++r];Mg(s,i);let c=t[i];W(24,c),a(2,c),W(25,c)}}}finally{Ln(-1)}}function lh(e,t){let n=Ad()?64:1088;for(e[Lt].changeDetectionScheduler?.notify(t);e;){e[A]|=n;let r=xn(e);if(co(e)&&!r)return e;e=r}return null}function Ay(e,t,n,r){return[e,!0,0,t,null,r,null,n,null,null]}function Ny(e,t){let n=Ce+t;if(n<e.length)return e[n]}function Ui(e,t,n,r=!0){let o=t[N];if(nT(o,t,e,n),r){let s=hf(n,e),a=t[Q],c=a.parentNode(e[On]);c!==null&&kC(o,e[je],a,t,c,s)}let i=t[pr];i!==null&&i.firstChild!==null&&(i.firstChild=null)}function Oy(e,t){let n=Ni(e,t);return n!==void 0&&xc(n[N],n),n}function Ni(e,t){if(e.length<=Ce)return;let n=Ce+t,r=e[n];if(r){let o=r[Nn];o!==null&&o!==e&&sh(o,r),t>0&&(e[n-1][lt]=r[lt]);let i=pi(e,Ce+t);OC(r[N],r);let s=i[jt];s!==null&&s.detachView(i[N]),r[Ee]=null,r[lt]=null,r[A]&=-129}return r}function nT(e,t,n,r){let o=Ce+r,i=n.length;r>0&&(n[o-1][lt]=t),r<i-Ce?(t[lt]=n[o],ld(n,Ce+r,t)):(n.push(t),t[lt]=null),t[Ee]=n;let s=t[Nn];s!==null&&n!==s&&ky(s,t);let a=t[jt];a!==null&&a.insertView(e),Va(t),t[A]|=128}function ky(e,t){let n=e[br],r=t[Ee];if(Bt(r))e[A]|=2;else{let o=r[Ee][Be];t[Be]!==o&&(e[A]|=2)}n===null?e[br]=[t]:n.push(t)}var jn=class{_lView;_cdRefInjectingView;_appRef=null;_attachedToViewContainer=!1;exhaustive;get rootNodes(){let t=this._lView,n=t[N];return Ai(n,t,n.firstChild,[])}constructor(t,n){this._lView=t,this._cdRefInjectingView=n}get context(){return this._lView[he]}set context(t){this._lView[he]=t}get destroyed(){return _r(this._lView)}destroy(){if(this._appRef)this._appRef.detachView(this);else if(this._attachedToViewContainer){let t=this._lView[Ee];if(bt(t)){let n=t[vi],r=n?n.indexOf(this):-1;r>-1&&(Ni(t,r),pi(n,r))}this._attachedToViewContainer=!1}xc(this._lView[N],this._lView)}onDestroy(t){Cd(this._lView,t)}markForCheck(){lh(this._cdRefInjectingView||this._lView,4)}detach(){this._lView[A]&=-129}reattach(){Va(this._lView),this._lView[A]|=128}detectChanges(){this._lView[A]|=1024,ch(this._lView)}checkNoChanges(){return;try{this.exhaustive??=this._lView[mr].get(AC,Jg)}catch{this.exhaustive=Jg}}attachToViewContainerRef(){if(this._appRef)throw new _(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null;let t=co(this._lView),n=this._lView[Nn];n!==null&&!t&&sh(n,this._lView),vy(this._lView[N],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new _(902,!1);this._appRef=t;let n=co(this._lView),r=this._lView[Nn];r!==null&&!n&&ky(r,this._lView),Va(this._lView)}};var yo=(()=>{class e{_declarationLView;_declarationTContainer;elementRef;static __NG_ELEMENT_ID__=rT;constructor(n,r,o){this._declarationLView=n,this._declarationTContainer=r,this.elementRef=o}get ssrId(){return this._declarationTContainer.tView?.ssrId||null}createEmbeddedView(n,r){return this.createEmbeddedViewImpl(n,r)}createEmbeddedViewImpl(n,r,o){let i=Bi(this._declarationLView,this._declarationTContainer,n,{embeddedViewInjector:r,dehydratedView:o});return new jn(i)}}return e})();function rT(){return Nc(Te(),I())}function Nc(e,t){return e.type&4?new yo(t,e,Do(e,t)):null}function Vi(e,t,n,r,o){let i=e.data[t];if(i===null)i=oT(e,t,n,r,o),Sg()&&(i.flags|=32);else if(i.type&64){i.type=n,i.value=r,i.attrs=o;let s=wg();i.injectorIndex=s===null?-1:s.injectorIndex}return Fn(i,!0),i}function oT(e,t,n,r,o){let i=xd(),s=$a(),a=s?i:i&&i.parent,c=e.data[t]=sT(e,a,n,t,r,o);return iT(e,c,i,s),c}function iT(e,t,n,r){e.firstChild===null&&(e.firstChild=t),n!==null&&(r?n.child==null&&t.parent!==null&&(n.child=t):n.next===null&&(n.next=t,t.prev=n))}function sT(e,t,n,r,o,i){let s=t?t.injectorIndex:-1,a=0;return Md()&&(a|=128),{type:n,index:r,insertBeforeIndex:null,injectorIndex:s,directiveStart:-1,directiveEnd:-1,directiveStylingLast:-1,componentOffset:-1,propertyBindings:null,flags:a,providerIndexes:0,value:o,attrs:i,mergedAttrs:null,localNames:null,initialInputs:null,inputs:null,hostDirectiveInputs:null,outputs:null,hostDirectiveOutputs:null,directiveToIndex:null,tView:null,next:null,prev:null,projectionNext:null,child:null,parent:t,projection:null,styles:null,stylesWithoutHost:null,residualStyles:void 0,classes:null,classesWithoutHost:null,residualClasses:void 0,classBindings:0,styleBindings:0}}var EU=new RegExp(`^(\\d+)*(${DI}|${EI})*(.*)`);function aT(e){let t=e[bd]??[],r=e[Ee][Q],o=[];for(let i of t)i.data[zv]!==void 0?o.push(i):cT(i,r);e[bd]=o}function cT(e,t){let n=0,r=e.firstChild;if(r){let o=e.data[$v];for(;n<o;){let i=r.nextSibling;ly(t,r,!1),r=i,n++}}}var lT=()=>null,uT=()=>null;function dc(e,t){return lT(e,t)}function Py(e,t,n){return uT(e,t,n)}var Fy=class{},Oc=class{},mf=class{resolveComponentFactory(t){throw new _(917,!1)}},Hi=class{static NULL=new mf},It=class{},Vn=(()=>{class e{destroyNode=null;static __NG_ELEMENT_ID__=()=>dT()}return e})();function dT(){let e=I(),t=Te(),n=dt(t.index,e);return(Bt(n)?n:e)[Q]}var Ly=(()=>{class e{static \u0275prov=b({token:e,providedIn:"root",factory:()=>null})}return e})();var oc={},gf=class{injector;parentInjector;constructor(t,n){this.injector=t,this.parentInjector=n}get(t,n,r){let o=this.injector.get(t,oc,r);return o!==oc||n===oc?o:this.parentInjector.get(t,n,r)}};function vf(e,t,n){let r=n?e.styles:null,o=n?e.classes:null,i=0;if(t!==null)for(let s=0;s<t.length;s++){let a=t[s];if(typeof a=="number")i=a;else if(i==1)o=Ra(o,a);else if(i==2){let c=a,l=t[++s];r=Ra(r,c+": "+l+";")}}n?e.styles=r:e.stylesWithoutHost=r,n?e.classes=o:e.classesWithoutHost=o}function oe(e,t=0){let n=I();if(n===null)return S(e,t);let r=Te();return Ov(r,n,Re(e),t)}function uh(e,t,n,r,o){let i=r===null?null:{"":-1},s=o(e,n);if(s!==null){let a=s,c=null,l=null;for(let u of s)if(u.resolveHostDirectives!==null){[a,c,l]=u.resolveHostDirectives(s);break}pT(e,t,n,a,i,c,l)}i!==null&&r!==null&&fT(n,r,i)}function fT(e,t,n){let r=e.localNames=[];for(let o=0;o<t.length;o+=2){let i=n[t[o+1]];if(i==null)throw new _(-301,!1);r.push(t[o],i)}}function hT(e,t,n){t.componentOffset=n,(e.components??=[]).push(t.index)}function pT(e,t,n,r,o,i,s){let a=r.length,c=!1;for(let p=0;p<a;p++){let f=r[p];!c&&Ut(f)&&(c=!0,hT(e,n,p)),Xd(lc(n,t),e,f.type)}_T(n,e.data.length,a);for(let p=0;p<a;p++){let f=r[p];f.providersResolver&&f.providersResolver(f)}let l=!1,u=!1,d=fy(e,t,a,null);a>0&&(n.directiveToIndex=new Map);for(let p=0;p<a;p++){let f=r[p];if(n.mergedAttrs=go(n.mergedAttrs,f.hostAttrs),gT(e,n,t,d,f),bT(d,f,o),s!==null&&s.has(f)){let[y,D]=s.get(f);n.directiveToIndex.set(f.type,[d,y+n.directiveStart,D+n.directiveStart])}else(i===null||!i.has(f))&&n.directiveToIndex.set(f.type,d);f.contentQueries!==null&&(n.flags|=4),(f.hostBindings!==null||f.hostAttrs!==null||f.hostVars!==0)&&(n.flags|=64);let g=f.type.prototype;!l&&(g.ngOnChanges||g.ngOnInit||g.ngDoCheck)&&((e.preOrderHooks??=[]).push(n.index),l=!0),!u&&(g.ngOnChanges||g.ngDoCheck)&&((e.preOrderCheckHooks??=[]).push(n.index),u=!0),d++}mT(e,n,i)}function mT(e,t,n){for(let r=t.directiveStart;r<t.directiveEnd;r++){let o=e.data[r];if(n===null||!n.has(o))tv(0,t,o,r),tv(1,t,o,r),rv(t,r,!1);else{let i=n.get(o);nv(0,t,i,r),nv(1,t,i,r),rv(t,r,!0)}}}function tv(e,t,n,r){let o=e===0?n.inputs:n.outputs;for(let i in o)if(o.hasOwnProperty(i)){let s;e===0?s=t.inputs??={}:s=t.outputs??={},s[i]??=[],s[i].push(r),jy(t,i)}}function nv(e,t,n,r){let o=e===0?n.inputs:n.outputs;for(let i in o)if(o.hasOwnProperty(i)){let s=o[i],a;e===0?a=t.hostDirectiveInputs??={}:a=t.hostDirectiveOutputs??={},a[s]??=[],a[s].push(r,i),jy(t,s)}}function jy(e,t){t==="class"?e.flags|=8:t==="style"&&(e.flags|=16)}function rv(e,t,n){let{attrs:r,inputs:o,hostDirectiveInputs:i}=e;if(r===null||!n&&o===null||n&&i===null||Qf(e)){e.initialInputs??=[],e.initialInputs.push(null);return}let s=null,a=0;for(;a<r.length;){let c=r[a];if(c===0){a+=4;continue}else if(c===5){a+=2;continue}else if(typeof c=="number")break;if(!n&&o.hasOwnProperty(c)){let l=o[c];for(let u of l)if(u===t){s??=[],s.push(c,r[a+1]);break}}else if(n&&i.hasOwnProperty(c)){let l=i[c];for(let u=0;u<l.length;u+=2)if(l[u]===t){s??=[],s.push(l[u+1],r[a+1]);break}}a+=2}e.initialInputs??=[],e.initialInputs.push(s)}function gT(e,t,n,r,o){e.data[r]=o;let i=o.factory||(o.factory=Mn(o.type,!0)),s=new Cr(i,Ut(o),oe);e.blueprint[r]=s,n[r]=s,vT(e,t,r,fy(e,n,o.hostVars,ke),o)}function vT(e,t,n,r,o){let i=o.hostBindings;if(i){let s=e.hostBindingOpCodes;s===null&&(s=e.hostBindingOpCodes=[]);let a=~t.index;yT(s)!=a&&s.push(a),s.push(n,r,i)}}function yT(e){let t=e.length;for(;t>0;){let n=e[--t];if(typeof n=="number"&&n<0)return n}return 0}function bT(e,t,n){if(n){if(t.exportAs)for(let r=0;r<t.exportAs.length;r++)n[t.exportAs[r]]=e;Ut(t)&&(n[""]=e)}}function _T(e,t,n){e.flags|=1,e.directiveStart=t,e.directiveEnd=t+n,e.providerIndexes=t}function By(e,t,n,r,o,i,s,a){let c=t.consts,l=Et(c,s),u=Vi(t,e,2,r,l);return i&&uh(t,n,u,Et(c,a),o),u.mergedAttrs=go(u.mergedAttrs,u.attrs),u.attrs!==null&&vf(u,u.attrs,!1),u.mergedAttrs!==null&&vf(u,u.mergedAttrs,!0),t.queries!==null&&t.queries.elementStart(t,u),u}function Uy(e,t){jf(e,t),ja(t)&&e.queries.elementEnd(t)}function dh(e){return Hy(e)?Array.isArray(e)||!(e instanceof Map)&&Symbol.iterator in e:!1}function Vy(e,t){if(Array.isArray(e))for(let n=0;n<e.length;n++)t(e[n]);else{let n=e[Symbol.iterator](),r;for(;!(r=n.next()).done;)t(r.value)}}function Hy(e){return e!==null&&(typeof e=="function"||typeof e=="object")}function kc(e,t,n){return e[t]=n}function ET(e,t){return e[t]}function Ye(e,t,n){if(n===ke)return!1;let r=e[t];return Object.is(r,n)?!1:(e[t]=n,!0)}function fh(e,t,n,r){let o=Ye(e,t,n);return Ye(e,t+1,r)||o}function DT(e,t,n,r,o){let i=fh(e,t,n,r);return Ye(e,t+2,o)||i}function Hd(e,t,n){return function r(o){let i=kn(e)?dt(e.index,t):t;lh(i,5);let s=t[he],a=ov(t,s,n,o),c=r.__ngNextListenerFn__;for(;c;)a=ov(t,s,c,o)&&a,c=c.__ngNextListenerFn__;return a}}function ov(e,t,n,r){let o=M(null);try{return W(6,t,n),n(r)!==!1}catch(i){return SC(e,i),!1}finally{W(7,t,n),M(o)}}function wT(e,t,n,r,o,i,s,a){let c=yi(e),l=!1,u=null;if(!r&&c&&(u=IT(t,n,i,e.index)),u!==null){let d=u.__ngLastListenerFn__||u;d.__ngNextListenerFn__=s,u.__ngLastListenerFn__=s,l=!0}else{let d=_t(e,n),p=r?r(d):d;II(n,p,i,a);let f=o.listen(p,i,a),g=r?y=>r(ut(y[e.index])):e.index;$y(g,t,n,i,a,f,!1)}return l}function IT(e,t,n,r){let o=e.cleanup;if(o!=null)for(let i=0;i<o.length-1;i+=2){let s=o[i];if(s===n&&o[i+1]===r){let a=t[so],c=o[i+2];return a&&a.length>c?a[c]:null}typeof s=="string"&&(i+=2)}return null}function $y(e,t,n,r,o,i,s){let a=t.firstCreatePass?Sd(t):null,c=Td(n),l=c.length;c.push(o,i),a&&a.push(r,e,l,(l+1)*(s?-1:1))}function iv(e,t,n,r,o,i){let s=t[n],a=t[N],l=a.data[n].outputs[r],d=s[l].subscribe(i);$y(e.index,a,t,o,i,d,!0)}var yf=Symbol("BINDING");var fc=class extends Hi{ngModule;constructor(t){super(),this.ngModule=t}resolveComponentFactory(t){let n=sn(t);return new Sr(n,this.ngModule)}};function CT(e){return Object.keys(e).map(t=>{let[n,r,o]=e[t],i={propName:n,templateName:t,isSignal:(r&Tc.SignalBased)!==0};return o&&(i.transform=o),i})}function TT(e){return Object.keys(e).map(t=>({propName:e[t],templateName:t}))}function ST(e,t,n){let r=t instanceof ue?t:t?.injector;return r&&e.getStandaloneInjector!==null&&(r=e.getStandaloneInjector(r)||r),r?new gf(n,r):n}function MT(e){let t=e.get(It,null);if(t===null)throw new _(407,!1);let n=e.get(Ly,null),r=e.get(at,null);return{rendererFactory:t,sanitizer:n,changeDetectionScheduler:r,ngReflect:!1}}function xT(e,t){let n=(e.selectors[0][0]||"div").toLowerCase();return ay(t,n,n==="svg"?_d:n==="math"?ug:null)}var Sr=class extends Oc{componentDef;ngModule;selector;componentType;ngContentSelectors;isBoundToModule;cachedInputs=null;cachedOutputs=null;get inputs(){return this.cachedInputs??=CT(this.componentDef.inputs),this.cachedInputs}get outputs(){return this.cachedOutputs??=TT(this.componentDef.outputs),this.cachedOutputs}constructor(t,n){super(),this.componentDef=t,this.ngModule=n,this.componentType=t.type,this.selector=iC(t.selectors),this.ngContentSelectors=t.ngContentSelectors??[],this.isBoundToModule=!!n}create(t,n,r,o,i,s){W(22);let a=M(null);try{let c=this.componentDef,l=RT(r,c,s,i),u=ST(c,o||this.ngModule,t),d=MT(u),p=d.rendererFactory.createRenderer(null,c),f=r?gC(p,r,c.encapsulation,u):xT(c,p),g=s?.some(sv)||i?.some(w=>typeof w!="function"&&w.bindings.some(sv)),y=Jf(null,l,null,512|dy(c),null,null,d,p,u,null,qv(f,u,!0));y[pe]=f,Za(y);let D=null;try{let w=By(pe,l,y,"#host",()=>l.directiveRegistry,!0,0);f&&(uy(p,f,w),wo(f,y)),Sc(l,y,w),$f(l,w,y),Uy(l,w),n!==void 0&&NT(w,this.ngContentSelectors,n),D=dt(w.index,y),y[he]=D[he],oh(l,y,null)}catch(w){throw D!==null&&ef(D),ef(y),w}finally{W(23),Ya()}return new hc(this.componentType,y,!!g)}finally{M(a)}}};function RT(e,t,n,r){let o=e?["ng-version","20.0.5"]:sC(t.selectors[0]),i=null,s=null,a=0;if(n)for(let u of n)a+=u[yf].requiredVars,u.create&&(u.targetIdx=0,(i??=[]).push(u)),u.update&&(u.targetIdx=0,(s??=[]).push(u));if(r)for(let u=0;u<r.length;u++){let d=r[u];if(typeof d!="function")for(let p of d.bindings){a+=p[yf].requiredVars;let f=u+1;p.create&&(p.targetIdx=f,(i??=[]).push(p)),p.update&&(p.targetIdx=f,(s??=[]).push(p))}}let c=[t];if(r)for(let u of r){let d=typeof u=="function"?u:u.type,p=hd(d);c.push(p)}return Xf(0,null,AT(i,s),1,a,c,null,null,null,[o],null)}function AT(e,t){return!e&&!t?null:n=>{if(n&1&&e)for(let r of e)r.create();if(n&2&&t)for(let r of t)r.update()}}function sv(e){let t=e[yf].kind;return t==="input"||t==="twoWay"}var hc=class extends Fy{_rootLView;_hasInputBindings;instance;hostView;changeDetectorRef;componentType;location;previousInputValues=null;_tNode;constructor(t,n,r){super(),this._rootLView=n,this._hasInputBindings=r,this._tNode=bi(n[N],pe),this.location=Do(this._tNode,n),this.instance=dt(this._tNode.index,n)[he],this.hostView=this.changeDetectorRef=new jn(n,void 0),this.componentType=t}setInput(t,n){this._hasInputBindings;let r=this._tNode;if(this.previousInputValues??=new Map,this.previousInputValues.has(t)&&Object.is(this.previousInputValues.get(t),n))return;let o=this._rootLView,i=rh(r,o[N],o,t,n);this.previousInputValues.set(t,n);let s=dt(r.index,o);lh(s,1)}get injector(){return new Ir(this._tNode,this._rootLView)}destroy(){this.hostView.destroy()}onDestroy(t){this.hostView.onDestroy(t)}};function NT(e,t,n){let r=e.projection=[];for(let o=0;o<t.length;o++){let i=n[o];r.push(i!=null&&i.length?Array.from(i):null)}}var Hn=(()=>{class e{static __NG_ELEMENT_ID__=OT}return e})();function OT(){let e=Te();return Wy(e,I())}var kT=Hn,zy=class extends kT{_lContainer;_hostTNode;_hostLView;constructor(t,n,r){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=r}get element(){return Do(this._hostTNode,this._hostLView)}get injector(){return new Ir(this._hostTNode,this._hostLView)}get parentInjector(){let t=Bf(this._hostTNode,this._hostLView);if(Sv(t)){let n=ac(t,this._hostLView),r=sc(t),o=n[N].data[r+8];return new Ir(o,n)}else return new Ir(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){let n=av(this._lContainer);return n!==null&&n[t]||null}get length(){return this._lContainer.length-Ce}createEmbeddedView(t,n,r){let o,i;typeof r=="number"?o=r:r!=null&&(o=r.index,i=r.injector);let s=dc(this._lContainer,t.ssrId),a=t.createEmbeddedViewImpl(n||{},i,s);return this.insertImpl(a,o,vo(this._hostTNode,s)),a}createComponent(t,n,r,o,i,s,a){let c=t&&!Kw(t),l;if(c)l=n;else{let D=n||{};l=D.index,r=D.injector,o=D.projectableNodes,i=D.environmentInjector||D.ngModuleRef,s=D.directives,a=D.bindings}let u=c?t:new Sr(sn(t)),d=r||this.parentInjector;if(!i&&u.ngModule==null){let w=(c?d:this.parentInjector).get(ue,null);w&&(i=w)}let p=sn(u.componentType??{}),f=dc(this._lContainer,p?.id??null),g=f?.firstChild??null,y=u.create(d,o,g,i,s,a);return this.insertImpl(y.hostView,l,vo(this._hostTNode,f)),y}insert(t,n){return this.insertImpl(t,n,!0)}insertImpl(t,n,r){let o=t._lView;if(fg(o)){let a=this.indexOf(t);if(a!==-1)this.detach(a);else{let c=o[Ee],l=new zy(c,c[je],c[Ee]);l.detach(l.indexOf(t))}}let i=this._adjustIndex(n),s=this._lContainer;return Ui(s,o,i,r),t.attachToViewContainerRef(),ld($d(s),i,t),t}move(t,n){return this.insert(t,n)}indexOf(t){let n=av(this._lContainer);return n!==null?n.indexOf(t):-1}remove(t){let n=this._adjustIndex(t,-1),r=Ni(this._lContainer,n);r&&(pi($d(this._lContainer),n),xc(r[N],r))}detach(t){let n=this._adjustIndex(t,-1),r=Ni(this._lContainer,n);return r&&pi($d(this._lContainer),n)!=null?new jn(r):null}_adjustIndex(t,n=0){return t??this.length+n}};function av(e){return e[vi]}function $d(e){return e[vi]||(e[vi]=[])}function Wy(e,t){let n,r=t[e.index];return bt(r)?n=r:(n=Ay(r,t,null,e),t[e.index]=n,eh(t,n)),FT(n,t,e,r),new zy(n,e,t)}function PT(e,t){let n=e[Q],r=n.createComment(""),o=_t(t,e),i=n.parentNode(o);return uc(n,i,r,n.nextSibling(o),!1),r}var FT=BT,LT=()=>!1;function jT(e,t,n){return LT(e,t,n)}function BT(e,t,n,r){if(e[On])return;let o;n.type&8?o=ut(r):o=PT(t,n),e[On]=o}var bf=class e{queryList;matches=null;constructor(t){this.queryList=t}clone(){return new e(this.queryList)}setDirty(){this.queryList.setDirty()}},_f=class e{queries;constructor(t=[]){this.queries=t}createEmbeddedView(t){let n=t.queries;if(n!==null){let r=t.contentQueries!==null?t.contentQueries[0]:n.length,o=[];for(let i=0;i<r;i++){let s=n.getByIndex(i),a=this.queries[s.indexInDeclarationView];o.push(a.clone())}return new e(o)}return null}insertView(t){this.dirtyQueriesWithMatches(t)}detachView(t){this.dirtyQueriesWithMatches(t)}finishViewCreation(t){this.dirtyQueriesWithMatches(t)}dirtyQueriesWithMatches(t){for(let n=0;n<this.queries.length;n++)ph(t,n).matches!==null&&this.queries[n].setDirty()}},pc=class{flags;read;predicate;constructor(t,n,r=null){this.flags=n,this.read=r,typeof t=="string"?this.predicate=zT(t):this.predicate=t}},Ef=class e{queries;constructor(t=[]){this.queries=t}elementStart(t,n){for(let r=0;r<this.queries.length;r++)this.queries[r].elementStart(t,n)}elementEnd(t){for(let n=0;n<this.queries.length;n++)this.queries[n].elementEnd(t)}embeddedTView(t){let n=null;for(let r=0;r<this.length;r++){let o=n!==null?n.length:0,i=this.getByIndex(r).embeddedTView(t,o);i&&(i.indexInDeclarationView=r,n!==null?n.push(i):n=[i])}return n!==null?new e(n):null}template(t,n){for(let r=0;r<this.queries.length;r++)this.queries[r].template(t,n)}getByIndex(t){return this.queries[t]}get length(){return this.queries.length}track(t){this.queries.push(t)}},Df=class e{metadata;matches=null;indexInDeclarationView=-1;crossesNgTemplate=!1;_declarationNodeIndex;_appliesToNextNode=!0;constructor(t,n=-1){this.metadata=t,this._declarationNodeIndex=n}elementStart(t,n){this.isApplyingToNode(n)&&this.matchTNode(t,n)}elementEnd(t){this._declarationNodeIndex===t.index&&(this._appliesToNextNode=!1)}template(t,n){this.elementStart(t,n)}embeddedTView(t,n){return this.isApplyingToNode(t)?(this.crossesNgTemplate=!0,this.addMatch(-t.index,n),new e(this.metadata)):null}isApplyingToNode(t){if(this._appliesToNextNode&&(this.metadata.flags&1)!==1){let n=this._declarationNodeIndex,r=t.parent;for(;r!==null&&r.type&8&&r.index!==n;)r=r.parent;return n===(r!==null?r.index:-1)}return this._appliesToNextNode}matchTNode(t,n){let r=this.metadata.predicate;if(Array.isArray(r))for(let o=0;o<r.length;o++){let i=r[o];this.matchTNodeWithReadOption(t,n,UT(n,i)),this.matchTNodeWithReadOption(t,n,rc(n,t,i,!1,!1))}else r===yo?n.type&4&&this.matchTNodeWithReadOption(t,n,-1):this.matchTNodeWithReadOption(t,n,rc(n,t,r,!1,!1))}matchTNodeWithReadOption(t,n,r){if(r!==null){let o=this.metadata.read;if(o!==null)if(o===me||o===Hn||o===yo&&n.type&4)this.addMatch(n.index,-2);else{let i=rc(n,t,o,!1,!1);i!==null&&this.addMatch(n.index,i)}else this.addMatch(n.index,r)}}addMatch(t,n){this.matches===null?this.matches=[t,n]:this.matches.push(t,n)}};function UT(e,t){let n=e.localNames;if(n!==null){for(let r=0;r<n.length;r+=2)if(n[r]===t)return n[r+1]}return null}function VT(e,t){return e.type&11?Do(e,t):e.type&4?Nc(e,t):null}function HT(e,t,n,r){return n===-1?VT(t,e):n===-2?$T(e,t,r):Ri(e,e[N],n,t)}function $T(e,t,n){if(n===me)return Do(t,e);if(n===yo)return Nc(t,e);if(n===Hn)return Wy(t,e)}function Gy(e,t,n,r){let o=t[jt].queries[r];if(o.matches===null){let i=e.data,s=n.matches,a=[];for(let c=0;s!==null&&c<s.length;c+=2){let l=s[c];if(l<0)a.push(null);else{let u=i[l];a.push(HT(t,u,s[c+1],n.metadata.read))}}o.matches=a}return o.matches}function wf(e,t,n,r){let o=e.queries.getByIndex(n),i=o.matches;if(i!==null){let s=Gy(e,t,o,n);for(let a=0;a<i.length;a+=2){let c=i[a];if(c>0)r.push(s[a/2]);else{let l=i[a+1],u=t[-c];for(let d=Ce;d<u.length;d++){let p=u[d];p[Nn]===p[Ee]&&wf(p[N],p,l,r)}if(u[br]!==null){let d=u[br];for(let p=0;p<d.length;p++){let f=d[p];wf(f[N],f,l,r)}}}}}return r}function hh(e,t){return e[jt].queries[t].queryList}function qy(e,t,n){let r=new Tr((n&4)===4);return mg(e,t,r,r.destroy),(t[jt]??=new _f).queries.push(new bf(r))-1}function Zy(e,t,n){let r=X();return r.firstCreatePass&&(Ky(r,new pc(e,t,n),-1),(t&2)===2&&(r.staticViewQueries=!0)),qy(r,I(),t)}function Yy(e,t,n,r){let o=X();if(o.firstCreatePass){let i=Te();Ky(o,new pc(t,n,r),i.index),WT(o,e),(n&2)===2&&(o.staticContentQueries=!0)}return qy(o,I(),n)}function zT(e){return e.split(",").map(t=>t.trim())}function Ky(e,t,n){e.queries===null&&(e.queries=new Ef),e.queries.track(new Df(t,n))}function WT(e,t){let n=e.contentQueries||(e.contentQueries=[]),r=n.length?n[n.length-1]:-1;t!==r&&n.push(e.queries.length-1,t)}function ph(e,t){return e.queries.getByIndex(t)}function Qy(e,t){let n=e[N],r=ph(n,t);return r.crossesNgTemplate?wf(n,e,t,[]):Gy(n,e,r,t)}function Xy(e,t,n){let r,o=ei(()=>{r._dirtyCounter();let i=GT(r,e);if(t&&i===void 0)throw new _(-951,!1);return i});return r=o[be],r._dirtyCounter=Ve(0),r._flatValue=void 0,o}function mh(e){return Xy(!0,!1,e)}function gh(e){return Xy(!0,!0,e)}function Jy(e,t){let n=e[be];n._lView=I(),n._queryIndex=t,n._queryList=hh(n._lView,t),n._queryList.onDirty(()=>n._dirtyCounter.update(r=>r+1))}function GT(e,t){let n=e._lView,r=e._queryIndex;if(n===void 0||r===void 0||n[A]&4)return t?void 0:Oe;let o=hh(n,r),i=Qy(n,r);return o.reset(i,Fv),t?o.first:o._changesDetected||e._flatValue===void 0?e._flatValue=o.toArray():e._flatValue}var cv=new Set;function mn(e){cv.has(e)||(cv.add(e),performance?.mark?.("mark_feature_usage",{detail:{feature:e}}))}var Mr=class{},Pc=class{};var mc=class extends Mr{ngModuleType;_parent;_bootstrapComponents=[];_r3Injector;instance;destroyCbs=[];componentFactoryResolver=new fc(this);constructor(t,n,r,o=!0){super(),this.ngModuleType=t,this._parent=n;let i=fd(t);this._bootstrapComponents=oy(i.bootstrap),this._r3Injector=kd(t,n,[{provide:Mr,useValue:this},{provide:Hi,useValue:this.componentFactoryResolver},...r],Ze(t),new Set(["environment"])),o&&this.resolveInjectorInitializers()}resolveInjectorInitializers(){this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(this.ngModuleType)}get injector(){return this._r3Injector}destroy(){let t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}},gc=class extends Pc{moduleType;constructor(t){super(),this.moduleType=t}create(t){return new mc(this.moduleType,t,[])}};var Oi=class extends Mr{injector;componentFactoryResolver=new fc(this);instance=null;constructor(t){super();let n=new dr([...t.providers,{provide:Mr,useValue:this},{provide:Hi,useValue:this.componentFactoryResolver}],t.parent||io(),t.debugName,new Set(["environment"]));this.injector=n,t.runEnvironmentInitializers&&n.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}};function $i(e,t,n=null){return new Oi({providers:e,parent:t,debugName:n,runEnvironmentInitializers:!0}).injector}var qT=(()=>{class e{_injector;cachedInjectors=new Map;constructor(n){this._injector=n}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n)){let r=pd(!1,n.type),o=r.length>0?$i([r],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n,o)}return this.cachedInjectors.get(n)}ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&&n.destroy()}finally{this.cachedInjectors.clear()}}static \u0275prov=b({token:e,providedIn:"environment",factory:()=>new e(S(ue))})}return e})();function nt(e){return Eo(()=>{let t=eb(e),n=U(v({},t),{decls:e.decls,vars:e.vars,template:e.template,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,onPush:e.changeDetection===Uf.OnPush,directiveDefs:null,pipeDefs:null,dependencies:t.standalone&&e.dependencies||null,getStandaloneInjector:t.standalone?o=>o.get(qT).getOrCreateStandaloneInjector(n):null,getExternalStyles:null,signals:e.signals??!1,data:e.data||{},encapsulation:e.encapsulation||un.Emulated,styles:e.styles||Oe,_:null,schemas:e.schemas||null,tView:null,id:""});t.standalone&&mn("NgStandalone"),tb(n);let r=e.dependencies;return n.directiveDefs=lv(r,!1),n.pipeDefs=lv(r,!0),n.id=XT(n),n})}function ZT(e){return sn(e)||hd(e)}function YT(e){return e!==null}function Se(e){return Eo(()=>({type:e.type,bootstrap:e.bootstrap||Oe,declarations:e.declarations||Oe,imports:e.imports||Oe,exports:e.exports||Oe,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function KT(e,t){if(e==null)return An;let n={};for(let r in e)if(e.hasOwnProperty(r)){let o=e[r],i,s,a,c;Array.isArray(o)?(a=o[0],i=o[1],s=o[2]??i,c=o[3]||null):(i=o,s=o,a=Tc.None,c=null),n[i]=[r,a,c],t[i]=s}return n}function QT(e){if(e==null)return An;let t={};for(let n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}function we(e){return Eo(()=>{let t=eb(e);return tb(t),t})}function Fc(e){return{type:e.type,name:e.name,factory:null,pure:e.pure!==!1,standalone:e.standalone??!0,onDestroy:e.type.prototype.ngOnDestroy||null}}function eb(e){let t={};return{type:e.type,providersResolver:null,factory:null,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:t,inputConfig:e.inputs||An,exportAs:e.exportAs||null,standalone:e.standalone??!0,signals:e.signals===!0,selectors:e.selectors||Oe,viewQuery:e.viewQuery||null,features:e.features||null,setInput:null,resolveHostDirectives:null,hostDirectives:null,inputs:KT(e.inputs,t),outputs:QT(e.outputs),debugInfo:null}}function tb(e){e.features?.forEach(t=>t(e))}function lv(e,t){if(!e)return null;let n=t?ng:ZT;return()=>(typeof e=="function"?e():e).map(r=>n(r)).filter(YT)}function XT(e){let t=0,n=typeof e.consts=="function"?"":e.consts,r=[e.selectors,e.ngContentSelectors,e.hostVars,e.hostAttrs,n,e.vars,e.decls,e.encapsulation,e.standalone,e.signals,e.exportAs,JSON.stringify(e.inputs),JSON.stringify(e.outputs),Object.getOwnPropertyNames(e.type.prototype),!!e.contentQueries,!!e.viewQuery];for(let i of r.join("|"))t=Math.imul(31,t)+i.charCodeAt(0)<<0;return t+=2147483648,"c"+t}function JT(e){return Object.getPrototypeOf(e.prototype).constructor}function Co(e){let t=JT(e.type),n=!0,r=[e];for(;t;){let o;if(Ut(e))o=t.\u0275cmp||t.\u0275dir;else{if(t.\u0275cmp)throw new _(903,!1);o=t.\u0275dir}if(o){if(n){r.push(o);let s=e;s.inputs=zd(e.inputs),s.declaredInputs=zd(e.declaredInputs),s.outputs=zd(e.outputs);let a=o.hostBindings;a&&oS(e,a);let c=o.viewQuery,l=o.contentQueries;if(c&&nS(e,c),l&&rS(e,l),eS(e,o),Zm(e.outputs,o.outputs),Ut(o)&&o.data.animation){let u=e.data;u.animation=(u.animation||[]).concat(o.data.animation)}}let i=o.features;if(i)for(let s=0;s<i.length;s++){let a=i[s];a&&a.ngInherit&&a(e),a===Co&&(n=!1)}}t=Object.getPrototypeOf(t)}tS(r)}function eS(e,t){for(let n in t.inputs){if(!t.inputs.hasOwnProperty(n)||e.inputs.hasOwnProperty(n))continue;let r=t.inputs[n];r!==void 0&&(e.inputs[n]=r,e.declaredInputs[n]=t.declaredInputs[n])}}function tS(e){let t=0,n=null;for(let r=e.length-1;r>=0;r--){let o=e[r];o.hostVars=t+=o.hostVars,o.hostAttrs=go(o.hostAttrs,n=go(n,o.hostAttrs))}}function zd(e){return e===An?{}:e===Oe?[]:e}function nS(e,t){let n=e.viewQuery;n?e.viewQuery=(r,o)=>{t(r,o),n(r,o)}:e.viewQuery=t}function rS(e,t){let n=e.contentQueries;n?e.contentQueries=(r,o,i)=>{t(r,o,i),n(r,o,i)}:e.contentQueries=t}function oS(e,t){let n=e.hostBindings;n?e.hostBindings=(r,o)=>{t(r,o),n(r,o)}:e.hostBindings=t}function iS(e,t,n,r,o,i,s,a,c){let l=t.consts,u=Vi(t,e,4,s||null,a||null);Ha()&&uh(t,n,u,Et(l,c),nh),u.mergedAttrs=go(u.mergedAttrs,u.attrs),jf(t,u);let d=u.tView=Xf(2,u,r,o,i,t.directiveRegistry,t.pipeRegistry,null,t.schemas,l,null);return t.queries!==null&&(t.queries.template(t,u),d.queries=t.queries.embeddedTView(u)),u}function bo(e,t,n,r,o,i,s,a,c,l,u){let d=n+pe,p=t.firstCreatePass?iS(d,t,e,r,o,i,s,a,l):t.data[d];c&&(p.flags|=c),Fn(p,!1);let f=sS(t,e,p,n);Ii()&&Rc(t,e,f,p),wo(f,e);let g=Ay(f,e,f,p);return e[d]=g,eh(e,g),jT(g,p,e),yi(p)&&Sc(t,e,p),l!=null&&th(e,p,u),p}function nb(e,t,n,r,o,i,s,a){let c=I(),l=X(),u=Et(l.consts,i);return bo(c,l,e,t,n,r,o,u,void 0,s,a),nb}var sS=aS;function aS(e,t,n,r){return Ci(!0),t[Q].createComment("")}var Lc=function(e){return e[e.CHANGE_DETECTION=0]="CHANGE_DETECTION",e[e.AFTER_NEXT_RENDER=1]="AFTER_NEXT_RENDER",e}(Lc||{}),$n=new E(""),rb=!1,If=class extends V{__isAsync;destroyRef=void 0;pendingTasks=void 0;constructor(t=!1){super(),this.__isAsync=t,cg()&&(this.destroyRef=h(tt,{optional:!0})??void 0,this.pendingTasks=h(ln,{optional:!0})??void 0)}emit(t){let n=M(null);try{super.next(t)}finally{M(n)}}subscribe(t,n,r){let o=t,i=n||(()=>null),s=r;if(t&&typeof t=="object"){let c=t;o=c.next?.bind(c),i=c.error?.bind(c),s=c.complete?.bind(c)}this.__isAsync&&(i=this.wrapInTimeout(i),o&&(o=this.wrapInTimeout(o)),s&&(s=this.wrapInTimeout(s)));let a=super.subscribe({next:o,error:i,complete:s});return t instanceof ie&&t.add(a),a}wrapInTimeout(t){return n=>{let r=this.pendingTasks?.add();setTimeout(()=>{try{t(n)}finally{r!==void 0&&this.pendingTasks?.remove(r)}})}}},de=If;function ob(e){let t,n;function r(){e=Dr;try{n!==void 0&&typeof cancelAnimationFrame=="function"&&cancelAnimationFrame(n),t!==void 0&&clearTimeout(t)}catch{}}return t=setTimeout(()=>{e(),r()}),typeof requestAnimationFrame=="function"&&(n=requestAnimationFrame(()=>{e(),r()})),()=>r()}function uv(e){return queueMicrotask(()=>e()),()=>{e=Dr}}var vh="isAngularZone",vc=vh+"_ID",cS=0,B=class e{hasPendingMacrotasks=!1;hasPendingMicrotasks=!1;isStable=!0;onUnstable=new de(!1);onMicrotaskEmpty=new de(!1);onStable=new de(!1);onError=new de(!1);constructor(t){let{enableLongStackTrace:n=!1,shouldCoalesceEventChangeDetection:r=!1,shouldCoalesceRunChangeDetection:o=!1,scheduleInRootZone:i=rb}=t;if(typeof Zone>"u")throw new _(908,!1);Zone.assertZonePatched();let s=this;s._nesting=0,s._outer=s._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(s._inner=s._inner.fork(new Zone.TaskTrackingZoneSpec)),n&&Zone.longStackTraceZoneSpec&&(s._inner=s._inner.fork(Zone.longStackTraceZoneSpec)),s.shouldCoalesceEventChangeDetection=!o&&r,s.shouldCoalesceRunChangeDetection=o,s.callbackScheduled=!1,s.scheduleInRootZone=i,dS(s)}static isInAngularZone(){return typeof Zone<"u"&&Zone.current.get(vh)===!0}static assertInAngularZone(){if(!e.isInAngularZone())throw new _(909,!1)}static assertNotInAngularZone(){if(e.isInAngularZone())throw new _(909,!1)}run(t,n,r){return this._inner.run(t,n,r)}runTask(t,n,r,o){let i=this._inner,s=i.scheduleEventTask("NgZoneEvent: "+o,t,lS,Dr,Dr);try{return i.runTask(s,n,r)}finally{i.cancelTask(s)}}runGuarded(t,n,r){return this._inner.runGuarded(t,n,r)}runOutsideAngular(t){return this._outer.run(t)}},lS={};function yh(e){if(e._nesting==0&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function uS(e){if(e.isCheckStableRunning||e.callbackScheduled)return;e.callbackScheduled=!0;function t(){ob(()=>{e.callbackScheduled=!1,Cf(e),e.isCheckStableRunning=!0,yh(e),e.isCheckStableRunning=!1})}e.scheduleInRootZone?Zone.root.run(()=>{t()}):e._outer.run(()=>{t()}),Cf(e)}function dS(e){let t=()=>{uS(e)},n=cS++;e._inner=e._inner.fork({name:"angular",properties:{[vh]:!0,[vc]:n,[vc+n]:!0},onInvokeTask:(r,o,i,s,a,c)=>{if(fS(c))return r.invokeTask(i,s,a,c);try{return dv(e),r.invokeTask(i,s,a,c)}finally{(e.shouldCoalesceEventChangeDetection&&s.type==="eventTask"||e.shouldCoalesceRunChangeDetection)&&t(),fv(e)}},onInvoke:(r,o,i,s,a,c,l)=>{try{return dv(e),r.invoke(i,s,a,c,l)}finally{e.shouldCoalesceRunChangeDetection&&!e.callbackScheduled&&!hS(c)&&t(),fv(e)}},onHasTask:(r,o,i,s)=>{r.hasTask(i,s),o===i&&(s.change=="microTask"?(e._hasPendingMicrotasks=s.microTask,Cf(e),yh(e)):s.change=="macroTask"&&(e.hasPendingMacrotasks=s.macroTask))},onHandleError:(r,o,i,s)=>(r.handleError(i,s),e.runOutsideAngular(()=>e.onError.emit(s)),!1)})}function Cf(e){e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&e.callbackScheduled===!0?e.hasPendingMicrotasks=!0:e.hasPendingMicrotasks=!1}function dv(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function fv(e){e._nesting--,yh(e)}var yc=class{hasPendingMicrotasks=!1;hasPendingMacrotasks=!1;isStable=!0;onUnstable=new de;onMicrotaskEmpty=new de;onStable=new de;onError=new de;run(t,n,r){return t.apply(n,r)}runGuarded(t,n,r){return t.apply(n,r)}runOutsideAngular(t){return t()}runTask(t,n,r,o){return t.apply(n,r)}};function fS(e){return ib(e,"__ignore_ng_zone__")}function hS(e){return ib(e,"__scheduler_tick__")}function ib(e,t){return!Array.isArray(e)||e.length!==1?!1:e[0]?.data?.[t]===!0}var jc=(()=>{class e{impl=null;execute(){this.impl?.execute()}static \u0275prov=b({token:e,providedIn:"root",factory:()=>new e})}return e})(),bh=[0,1,2,3],_h=(()=>{class e{ngZone=h(B);scheduler=h(at);errorHandler=h(Je,{optional:!0});sequences=new Set;deferredRegistrations=new Set;executing=!1;constructor(){h($n,{optional:!0})}execute(){let n=this.sequences.size>0;n&&W(16),this.executing=!0;for(let r of bh)for(let o of this.sequences)if(!(o.erroredOrDestroyed||!o.hooks[r]))try{o.pipelinedValue=this.ngZone.runOutsideAngular(()=>this.maybeTrace(()=>{let i=o.hooks[r];return i(o.pipelinedValue)},o.snapshot))}catch(i){o.erroredOrDestroyed=!0,this.errorHandler?.handleError(i)}this.executing=!1;for(let r of this.sequences)r.afterRun(),r.once&&(this.sequences.delete(r),r.destroy());for(let r of this.deferredRegistrations)this.sequences.add(r);this.deferredRegistrations.size>0&&this.scheduler.notify(7),this.deferredRegistrations.clear(),n&&W(17)}register(n){let{view:r}=n;r!==void 0?((r[yr]??=[]).push(n),Pn(r),r[A]|=8192):this.executing?this.deferredRegistrations.add(n):this.addSequence(n)}addSequence(n){this.sequences.add(n),this.scheduler.notify(7)}unregister(n){this.executing&&this.sequences.has(n)?(n.erroredOrDestroyed=!0,n.pipelinedValue=void 0,n.once=!0):(this.sequences.delete(n),this.deferredRegistrations.delete(n))}maybeTrace(n,r){return r?r.run(Lc.AFTER_NEXT_RENDER,n):n()}static \u0275prov=b({token:e,providedIn:"root",factory:()=>new e})}return e})(),ki=class{impl;hooks;view;once;snapshot;erroredOrDestroyed=!1;pipelinedValue=void 0;unregisterOnDestroy;constructor(t,n,r,o,i,s=null){this.impl=t,this.hooks=n,this.view=r,this.once=o,this.snapshot=s,this.unregisterOnDestroy=i?.onDestroy(()=>this.destroy())}afterRun(){this.erroredOrDestroyed=!1,this.pipelinedValue=void 0,this.snapshot?.dispose(),this.snapshot=null}destroy(){this.impl.unregister(this),this.unregisterOnDestroy?.();let t=this.view?.[yr];t&&(this.view[yr]=t.filter(n=>n!==this))}};function Bc(e,t){let n=t?.injector??h(ae);return mn("NgAfterNextRender"),mS(e,n,t,!0)}function pS(e){return e instanceof Function?[void 0,void 0,e,void 0]:[e.earlyRead,e.write,e.mixedReadWrite,e.read]}function mS(e,t,n,r){let o=t.get(jc);o.impl??=t.get(_h);let i=t.get($n,null,{optional:!0}),s=n?.manualCleanup!==!0?t.get(tt):null,a=t.get(Er,null,{optional:!0}),c=new ki(o.impl,pS(e),a?.view,r,s,i?.snapshot(null));return o.impl.register(c),c}var Uc=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}static \u0275fac=function(r){return new(r||e)};static \u0275prov=b({token:e,factory:e.\u0275fac,providedIn:"platform"})}return e})();var Eh=new E("");function To(e){return!!e&&typeof e.then=="function"}function Dh(e){return!!e&&typeof e.subscribe=="function"}var wh=new E("");function sb(e){return vt([{provide:wh,multi:!0,useValue:e}])}var Ih=(()=>{class e{resolve;reject;initialized=!1;done=!1;donePromise=new Promise((n,r)=>{this.resolve=n,this.reject=r});appInits=h(wh,{optional:!0})??[];injector=h(ae);constructor(){}runInitializers(){if(this.initialized)return;let n=[];for(let o of this.appInits){let i=Le(this.injector,o);if(To(i))n.push(i);else if(Dh(i)){let s=new Promise((a,c)=>{i.subscribe({complete:a,error:c})});n.push(s)}}let r=()=>{this.done=!0,this.resolve()};Promise.all(n).then(()=>{r()}).catch(o=>{this.reject(o)}),n.length===0&&r(),this.initialized=!0}static \u0275fac=function(r){return new(r||e)};static \u0275prov=b({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})(),Vc=new E("");function ab(){Du(()=>{let e="";throw new _(600,e)})}function cb(e){return e.isBoundToModule}var gS=10;var zt=(()=>{class e{_runningTick=!1;_destroyed=!1;_destroyListeners=[];_views=[];internalErrorHandler=h(Ue);afterRenderManager=h(jc);zonelessEnabled=h(ho);rootEffectScheduler=h(Si);dirtyFlags=0;tracingSnapshot=null;allTestViews=new Set;autoDetectTestViews=new Set;includeAllTestViews=!1;afterTick=new V;get allViews(){return[...(this.includeAllTestViews?this.allTestViews:this.autoDetectTestViews).keys(),...this._views]}get destroyed(){return this._destroyed}componentTypes=[];components=[];internalPendingTask=h(ln);get isStable(){return this.internalPendingTask.hasPendingTasksObservable.pipe(T(n=>!n))}constructor(){h($n,{optional:!0})}whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({next:o=>{o&&r()}})}).finally(()=>{n.unsubscribe()})}_injector=h(ue);_rendererFactory=null;get injector(){return this._injector}bootstrap(n,r){return this.bootstrapImpl(n,r)}bootstrapImpl(n,r,o=ae.NULL){return this._injector.get(B).run(()=>{W(10);let s=n instanceof Oc;if(!this._injector.get(Ih).done){let g="";throw new _(405,g)}let c;s?c=n:c=this._injector.get(Hi).resolveComponentFactory(n),this.componentTypes.push(c.componentType);let l=cb(c)?void 0:this._injector.get(Mr),u=r||c.selector,d=c.create(o,[],u,l),p=d.location.nativeElement,f=d.injector.get(Eh,null);return f?.registerApplication(p),d.onDestroy(()=>{this.detachView(d.hostView),xi(this.components,d),f?.unregisterApplication(p)}),this._loadComponent(d),W(11,d),d})}tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}_tick(){W(12),this.tracingSnapshot!==null?this.tracingSnapshot.run(Lc.CHANGE_DETECTION,this.tickImpl):this.tickImpl()}tickImpl=()=>{if(this._runningTick)throw new _(101,!1);let n=M(null);try{this._runningTick=!0,this.synchronize()}finally{this._runningTick=!1,this.tracingSnapshot?.dispose(),this.tracingSnapshot=null,M(n),this.afterTick.next(),W(13)}};synchronize(){this._rendererFactory===null&&!this._injector.destroyed&&(this._rendererFactory=this._injector.get(It,null,{optional:!0}));let n=0;for(;this.dirtyFlags!==0&&n++<gS;)W(14),this.synchronizeOnce(),W(15)}synchronizeOnce(){this.dirtyFlags&16&&(this.dirtyFlags&=-17,this.rootEffectSch
gitextract_ok2u674f/ ├── .github/ │ └── workflows/ │ └── main_skinet-course.yml ├── .gitignore ├── .vscode/ │ └── settings.json ├── API/ │ ├── API.csproj │ ├── API.http │ ├── Controllers/ │ │ ├── AccountController.cs │ │ ├── AdminController.cs │ │ ├── BaseApiController.cs │ │ ├── BuggyController.cs │ │ ├── CartController.cs │ │ ├── CouponsController.cs │ │ ├── FallbackController.cs │ │ ├── OrdersController.cs │ │ ├── PaymentsController.cs │ │ ├── ProductsController.cs │ │ └── WeatherForecastController.cs │ ├── DTOs/ │ │ ├── AddressDto.cs │ │ ├── CreateOrderDto.cs │ │ ├── CreateProductDto.cs │ │ ├── OrderDto.cs │ │ ├── OrderItemDto.cs │ │ └── RegisterDto.cs │ ├── Errors/ │ │ └── ApiErrorResponse.cs │ ├── Extensions/ │ │ ├── AddressMappingExtensions.cs │ │ ├── ClaimsPrincipalExtensions.cs │ │ └── OrderMappingExtensions.cs │ ├── Middleware/ │ │ └── ExceptionMiddleware.cs │ ├── Program.cs │ ├── Properties/ │ │ └── launchSettings.json │ ├── RequestHelpers/ │ │ ├── CachedAttribute.cs │ │ ├── InvalidateCacheAttribute.cs │ │ └── Pagination.cs │ ├── SignalR/ │ │ └── NotificationHub.cs │ ├── WeatherForecast.cs │ ├── appsettings.Development.json │ └── wwwroot/ │ ├── 3rdpartylicenses.txt │ ├── chunk-6SXQ2FRE.js │ ├── chunk-76XFCVV7.js │ ├── chunk-BU6XFQYD.js │ ├── chunk-HJYZM75B.js │ ├── chunk-LMQANEB2.js │ ├── chunk-MIKQGBUF.js │ ├── chunk-NEILRAN2.js │ ├── chunk-PEWDZYDO.js │ ├── chunk-SP3SSILU.js │ ├── chunk-TEKFR3M2.js │ ├── chunk-VOFQZSPR.js │ ├── chunk-WAIB6SCQ.js │ ├── chunk-YYNGFOZ2.js │ ├── chunk-Z2NTM2YJ.js │ ├── index.html │ ├── main-627RABRE.js │ ├── polyfills-B6TNHZQ6.js │ ├── prerendered-routes.json │ └── styles-COVWXBF4.css ├── Core/ │ ├── Core.csproj │ ├── Entities/ │ │ ├── Address.cs │ │ ├── AppCoupon.cs │ │ ├── AppUser.cs │ │ ├── BaseEntity.cs │ │ ├── CartItem.cs │ │ ├── DeliveryMethod.cs │ │ ├── OrderAggregate/ │ │ │ ├── Order.cs │ │ │ ├── OrderItem.cs │ │ │ ├── OrderStatus.cs │ │ │ ├── PaymentSummary.cs │ │ │ ├── ProductItemOrdered.cs │ │ │ └── ShippingAddress.cs │ │ ├── Product.cs │ │ └── ShoppingCart.cs │ ├── Interfaces/ │ │ ├── ICartService.cs │ │ ├── ICouponService.cs │ │ ├── IDtoConvertible.cs │ │ ├── IGenericRepository.cs │ │ ├── IPaymentService.cs │ │ ├── IProductRepository.cs │ │ ├── IResponseCacheService.cs │ │ ├── ISpecification.cs │ │ └── IUnitOfWork.cs │ └── Specifications/ │ ├── BaseSpecification.cs │ ├── BrandListSpecification.cs │ ├── OrderSpecParams.cs │ ├── OrderSpecification.cs │ ├── PagingParams.cs │ ├── ProductSpecParams.cs │ ├── ProductSpecification.cs │ └── TypeListSpecification.cs ├── Infrastructure/ │ ├── Config/ │ │ ├── DeliveryMethodConfiguration.cs │ │ ├── OrderConfiguration.cs │ │ ├── OrderItemConfiguration.cs │ │ ├── ProductConfiguration.cs │ │ └── RoleConfiguration.cs │ ├── Data/ │ │ ├── GenericRepository.cs │ │ ├── ProductRepository.cs │ │ ├── SeedData/ │ │ │ ├── delivery.json │ │ │ └── products.json │ │ ├── SpecificationEvaluator.cs │ │ ├── StoreContext.cs │ │ ├── StoreContextSeed.cs │ │ └── UnitOfWork.cs │ ├── Infrastructure.csproj │ ├── Migrations/ │ │ ├── 20250622053300_InitialCreate.Designer.cs │ │ ├── 20250622053300_InitialCreate.cs │ │ ├── 20250629083129_IdentityAdded.Designer.cs │ │ ├── 20250629083129_IdentityAdded.cs │ │ ├── 20250629085927_AddressAdded.Designer.cs │ │ ├── 20250629085927_AddressAdded.cs │ │ ├── 20250630014631_DeliveryMethodsAdded.Designer.cs │ │ ├── 20250630014631_DeliveryMethodsAdded.cs │ │ ├── 20250630074200_OrderEntityAdded.Designer.cs │ │ ├── 20250630074200_OrderEntityAdded.cs │ │ ├── 20250701034848_CouponsAdded.Designer.cs │ │ ├── 20250701034848_CouponsAdded.cs │ │ ├── 20250701045119_RolesAdded.Designer.cs │ │ ├── 20250701045119_RolesAdded.cs │ │ └── StoreContextModelSnapshot.cs │ └── Services/ │ ├── CartService.cs │ ├── CouponService.cs │ ├── PaymentService.cs │ └── ResponseCacheService.cs ├── README.MD ├── client/ │ ├── .editorconfig │ ├── .gitignore │ ├── .postcssrc.json │ ├── .vscode/ │ │ ├── extensions.json │ │ ├── launch.json │ │ └── tasks.json │ ├── README.md │ ├── angular.json │ ├── package.json │ ├── src/ │ │ ├── app/ │ │ │ ├── app.component.html │ │ │ ├── app.component.scss │ │ │ ├── app.component.ts │ │ │ ├── app.config.ts │ │ │ ├── app.routes.ts │ │ │ ├── app.spec.ts │ │ │ ├── core/ │ │ │ │ ├── guards/ │ │ │ │ │ ├── admin-guard.ts │ │ │ │ │ ├── auth-guard.ts │ │ │ │ │ ├── empty-cart-guard.ts │ │ │ │ │ └── order-complete-guard.ts │ │ │ │ ├── interceptors/ │ │ │ │ │ ├── auth-interceptor.ts │ │ │ │ │ ├── error-interceptor.ts │ │ │ │ │ └── loading-interceptor.ts │ │ │ │ └── services/ │ │ │ │ ├── account.service.ts │ │ │ │ ├── admin.service.ts │ │ │ │ ├── busy.service.ts │ │ │ │ ├── cart.service.ts │ │ │ │ ├── checkout.service.ts │ │ │ │ ├── dialog.service.ts │ │ │ │ ├── init.service.ts │ │ │ │ ├── order.service.ts │ │ │ │ ├── shop.service.ts │ │ │ │ ├── signalr.service.ts │ │ │ │ ├── snackbar.service.ts │ │ │ │ └── stripe.service.ts │ │ │ ├── features/ │ │ │ │ ├── account/ │ │ │ │ │ ├── login/ │ │ │ │ │ │ ├── login.component.html │ │ │ │ │ │ ├── login.component.scss │ │ │ │ │ │ └── login.component.ts │ │ │ │ │ ├── register/ │ │ │ │ │ │ ├── register.component.html │ │ │ │ │ │ ├── register.component.scss │ │ │ │ │ │ └── register.component.ts │ │ │ │ │ └── routes.ts │ │ │ │ ├── admin/ │ │ │ │ │ ├── admin.component.html │ │ │ │ │ ├── admin.component.scss │ │ │ │ │ └── admin.component.ts │ │ │ │ ├── cart/ │ │ │ │ │ ├── cart-item/ │ │ │ │ │ │ ├── cart-item.component.html │ │ │ │ │ │ ├── cart-item.component.scss │ │ │ │ │ │ └── cart-item.component.ts │ │ │ │ │ ├── cart.component.html │ │ │ │ │ ├── cart.component.scss │ │ │ │ │ └── cart.component.ts │ │ │ │ ├── checkout/ │ │ │ │ │ ├── checkout-delivery/ │ │ │ │ │ │ ├── checkout-delivery.component.html │ │ │ │ │ │ ├── checkout-delivery.component.scss │ │ │ │ │ │ └── checkout-delivery.component.ts │ │ │ │ │ ├── checkout-review/ │ │ │ │ │ │ ├── checkout-review.component.html │ │ │ │ │ │ ├── checkout-review.component.scss │ │ │ │ │ │ └── checkout-review.component.ts │ │ │ │ │ ├── checkout-success/ │ │ │ │ │ │ ├── checkout-success.component.html │ │ │ │ │ │ ├── checkout-success.component.scss │ │ │ │ │ │ └── checkout-success.component.ts │ │ │ │ │ ├── checkout.component.html │ │ │ │ │ ├── checkout.component.scss │ │ │ │ │ ├── checkout.component.ts │ │ │ │ │ └── routes.ts │ │ │ │ ├── home/ │ │ │ │ │ ├── home.component.html │ │ │ │ │ ├── home.component.scss │ │ │ │ │ └── home.component.ts │ │ │ │ ├── orders/ │ │ │ │ │ ├── order-detailed/ │ │ │ │ │ │ ├── order-detailed.component.html │ │ │ │ │ │ ├── order-detailed.component.scss │ │ │ │ │ │ └── order-detailed.component.ts │ │ │ │ │ ├── order.component.html │ │ │ │ │ ├── order.component.scss │ │ │ │ │ ├── order.component.ts │ │ │ │ │ └── routes.ts │ │ │ │ ├── shop/ │ │ │ │ │ ├── filters-dialog/ │ │ │ │ │ │ ├── filters-dialog.component.html │ │ │ │ │ │ ├── filters-dialog.component.scss │ │ │ │ │ │ └── filters-dialog.component.ts │ │ │ │ │ ├── product-details/ │ │ │ │ │ │ ├── product-details.component.html │ │ │ │ │ │ ├── product-details.component.scss │ │ │ │ │ │ └── product-details.component.ts │ │ │ │ │ ├── product-item/ │ │ │ │ │ │ ├── product-item.component.html │ │ │ │ │ │ ├── product-item.component.scss │ │ │ │ │ │ └── product-item.component.ts │ │ │ │ │ ├── shop.component.html │ │ │ │ │ ├── shop.component.scss │ │ │ │ │ └── shop.component.ts │ │ │ │ └── test-error/ │ │ │ │ ├── test-error.component.html │ │ │ │ ├── test-error.component.scss │ │ │ │ └── test-error.component.ts │ │ │ ├── layout/ │ │ │ │ └── header/ │ │ │ │ ├── header.component.html │ │ │ │ ├── header.component.scss │ │ │ │ └── header.component.ts │ │ │ └── shared/ │ │ │ ├── components/ │ │ │ │ ├── confirmation-dialog/ │ │ │ │ │ ├── confirmation-dialog.component.html │ │ │ │ │ ├── confirmation-dialog.component.scss │ │ │ │ │ └── confirmation-dialog.component.ts │ │ │ │ ├── empty-state/ │ │ │ │ │ ├── empty-state.component.html │ │ │ │ │ ├── empty-state.component.scss │ │ │ │ │ └── empty-state.component.ts │ │ │ │ ├── not-found/ │ │ │ │ │ ├── not-found.component.html │ │ │ │ │ ├── not-found.component.scss │ │ │ │ │ └── not-found.component.ts │ │ │ │ ├── order-summary/ │ │ │ │ │ ├── order-summary.component.html │ │ │ │ │ ├── order-summary.component.scss │ │ │ │ │ └── order-summary.component.ts │ │ │ │ ├── server-error/ │ │ │ │ │ ├── server-error.component.html │ │ │ │ │ ├── server-error.component.scss │ │ │ │ │ └── server-error.component.ts │ │ │ │ └── text-input/ │ │ │ │ ├── text-input.component.html │ │ │ │ ├── text-input.component.scss │ │ │ │ └── text-input.component.ts │ │ │ ├── directives/ │ │ │ │ └── is-admin.ts │ │ │ ├── models/ │ │ │ │ ├── cart.ts │ │ │ │ ├── deliveryMethod.ts │ │ │ │ ├── order.ts │ │ │ │ ├── orderParams.ts │ │ │ │ ├── pagination.ts │ │ │ │ ├── product.ts │ │ │ │ ├── shopParams.ts │ │ │ │ └── user.ts │ │ │ └── pipes/ │ │ │ ├── address-pipe.ts │ │ │ └── payment-card-pipe.ts │ │ ├── environments/ │ │ │ ├── environment.development.ts │ │ │ └── environment.ts │ │ ├── index.html │ │ ├── main.ts │ │ ├── styles.scss │ │ └── tailwind.css │ ├── ssl/ │ │ ├── localhost-key.pem │ │ └── localhost.pem │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── docker-compose.yml └── skinet.sln
Showing preview only (8,982K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4967 symbols across 150 files)
FILE: API/Controllers/AccountController.cs
class AccountController (line 11) | public class AccountController(SignInManager<AppUser> signInManager) : B...
method Register (line 13) | [HttpPost("register")]
method Logout (line 39) | [Authorize]
method GetUserInfo (line 47) | [HttpGet("user-info")]
method GetAuthState (line 64) | [HttpGet("auth-status")]
method CreateOrUpdateAddress (line 73) | [Authorize]
FILE: API/Controllers/AdminController.cs
class AdminController (line 12) | [Authorize(Roles = "Admin")]
method GetOrders (line 15) | [HttpGet("orders")]
method GetOrderById (line 24) | [HttpGet("orders/{id:int}")]
method RefundOrder (line 36) | [HttpPost("orders/refund/{id:int}")]
FILE: API/Controllers/BaseApiController.cs
class BaseApiController (line 9) | [ApiController]
method CreatePagedResult (line 13) | protected async Task<ActionResult> CreatePagedResult<T>(IGenericReposi...
method CreatePagedResult (line 22) | protected async Task<ActionResult> CreatePagedResult<T, TDto>(IGeneric...
FILE: API/Controllers/BuggyController.cs
class BuggyController (line 8) | public class BuggyController : BaseApiController
method GetUnauthorized (line 10) | [HttpGet("unauthorized")]
method GetBadRequest (line 16) | [HttpGet("badrequest")]
method GetNotFound (line 22) | [HttpGet("notfound")]
method GetInternalError (line 28) | [HttpGet("internalerror")]
method GetValidationError (line 34) | [HttpPost("validationerror")]
method GetSecret (line 40) | [Authorize]
method GetAdminSecret (line 50) | [Authorize(Roles = "Admin")]
FILE: API/Controllers/CartController.cs
class CartController (line 8) | public class CartController(ICartService cartService) : BaseApiController
method GetCartById (line 10) | [HttpGet]
method UpdateCart (line 18) | [HttpPost]
method DeleteCart (line 26) | [HttpDelete]
FILE: API/Controllers/CouponsController.cs
class CouponsController (line 8) | public class CouponsController(ICouponService couponService) : BaseApiCo...
method ValidateCoupon (line 10) | [HttpGet("{code}")]
FILE: API/Controllers/FallbackController.cs
class FallbackController (line 6) | public class FallbackController : Controller
method Index (line 8) | public IActionResult Index()
FILE: API/Controllers/OrdersController.cs
class OrdersController (line 13) | [Authorize]
method CreateOrder (line 16) | [HttpPost]
method GetOrdersForUser (line 77) | [HttpGet]
method GetOrderById (line 89) | [HttpGet("{id:int}")]
FILE: API/Controllers/PaymentsController.cs
class PaymentsController (line 15) | public class PaymentsController(IPaymentService paymentService,
method CreateOrUpdatePaymentIntent (line 23) | [Authorize]
method GetDeliveryMethods (line 34) | [HttpGet("delivery-methods")]
method StripeWebhook (line 40) | [HttpPost("webhook")]
method ConstructStripeEvent (line 70) | private Event ConstructStripeEvent(string json)
method HandlePaymentIntentSucceeded (line 83) | private async Task HandlePaymentIntentSucceeded(PaymentIntent intent)
FILE: API/Controllers/ProductsController.cs
class ProductsController (line 10) | public class ProductsController(IUnitOfWork unit) : BaseApiController
method GetProducts (line 12) | [Cached(100000)]
method GetProduct (line 22) | [Cached(100000)]
method CreateProduct (line 33) | [InvalidateCache("api/products|")]
method UpdateProduct (line 48) | [InvalidateCache("api/products|")]
method DeleteProduct (line 65) | [InvalidateCache("api/products|")]
method GetBrands (line 84) | [Cached(100000)]
method GetTypes (line 93) | [Cached(100000)]
method ProductExists (line 102) | private bool ProductExists(int id)
FILE: API/Controllers/WeatherForecastController.cs
class WeatherForecastController (line 5) | [ApiController]
method WeatherForecastController (line 16) | public WeatherForecastController(ILogger<WeatherForecastController> lo...
method Get (line 21) | [HttpGet(Name = "GetWeatherForecast")]
FILE: API/DTOs/AddressDto.cs
class AddressDto (line 6) | public class AddressDto
FILE: API/DTOs/CreateOrderDto.cs
class CreateOrderDto (line 7) | public class CreateOrderDto
FILE: API/DTOs/CreateProductDto.cs
class CreateProductDto (line 6) | public class CreateProductDto
FILE: API/DTOs/OrderDto.cs
class OrderDto (line 6) | public class OrderDto
FILE: API/DTOs/OrderItemDto.cs
class OrderItemDto (line 5) | public class OrderItemDto
FILE: API/DTOs/RegisterDto.cs
class RegisterDto (line 6) | public class RegisterDto
FILE: API/Errors/ApiErrorResponse.cs
class ApiErrorResponse (line 5) | public class ApiErrorResponse(int statusCode, string message, string? de...
FILE: API/Extensions/AddressMappingExtensions.cs
class AddressMappingExtensions (line 7) | public static class AddressMappingExtensions
method ToDto (line 9) | public static AddressDto? ToDto(this Address? address)
method ToEntity (line 24) | public static Address ToEntity(this AddressDto addressDto)
method UpdateFromDto (line 39) | public static void UpdateFromDto(this Address address, AddressDto addr...
FILE: API/Extensions/ClaimsPrincipalExtensions.cs
class ClaimsPrincipleExtensions (line 10) | public static class ClaimsPrincipleExtensions
method GetUserByEmail (line 12) | public static async Task<AppUser> GetUserByEmail(this UserManager<AppU...
method GetUserByEmailWithAddress (line 22) | public static async Task<AppUser> GetUserByEmailWithAddress(this UserM...
method GetEmail (line 33) | public static string GetEmail(this ClaimsPrincipal user)
FILE: API/Extensions/OrderMappingExtensions.cs
class OrderMappingExtensions (line 7) | public static class OrderMappingExtensions
method ToDto (line 9) | public static OrderDto ToDto(this Order order)
method ToDto (line 29) | public static OrderItemDto ToDto(this OrderItem orderItem)
FILE: API/Middleware/ExceptionMiddleware.cs
class ExceptionMiddleware (line 8) | public class ExceptionMiddleware(IHostEnvironment env, RequestDelegate n...
method InvokeAsync (line 10) | public async Task InvokeAsync(HttpContext context)
method HandleExceptionAsync (line 22) | private static Task HandleExceptionAsync(HttpContext context, Exceptio...
FILE: API/RequestHelpers/CachedAttribute.cs
class CachedAttribute (line 9) | [AttributeUsage(AttributeTargets.All)]
method OnActionExecutionAsync (line 12) | public async Task OnActionExecutionAsync(ActionExecutingContext contex...
method GenerateCacheKeyFromRequest (line 47) | private static string GenerateCacheKeyFromRequest(HttpRequest request)
FILE: API/RequestHelpers/InvalidateCacheAttribute.cs
class InvalidateCacheAttribute (line 7) | [AttributeUsage(AttributeTargets.Method)]
method OnActionExecutionAsync (line 10) | public async Task OnActionExecutionAsync(ActionExecutingContext contex...
FILE: API/RequestHelpers/Pagination.cs
class Pagination (line 5) | public class Pagination<T>(int pageIndex, int pageSize, int count, IRead...
FILE: API/SignalR/NotificationHub.cs
class NotificationHub (line 9) | [Authorize]
method OnConnectedAsync (line 14) | public override Task OnConnectedAsync()
method OnDisconnectedAsync (line 24) | public override Task OnDisconnectedAsync(Exception? exception)
method GetConnectionIdByEmail (line 34) | public static string? GetConnectionIdByEmail(string email)
FILE: API/WeatherForecast.cs
class WeatherForecast (line 3) | public class WeatherForecast
FILE: API/wwwroot/chunk-76XFCVV7.js
function yu (line 1) | function yu(){return vu}
function en (line 1) | function en(e){let t=vu;return vu=e,t}
method constructor (line 1) | constructor(t){super(t)}
function zr (line 1) | function zr(e){return e===AD||e?.name==="\u0275NotFound"}
function qs (line 1) | function qs(e,t){return Object.is(e,t)}
function M (line 1) | function M(e){let t=ye;return ye=e,t}
function Zs (line 1) | function Zs(){return ye}
function Jn (line 1) | function Jn(e){if($s)throw new Error("");if(ye===null)return;ye.consumer...
function lm (line 1) | function lm(){bu++}
function Ys (line 1) | function Ys(e){if(!(Jo(e)&&!e.dirty)&&!(!e.dirty&&e.lastCleanEpoch===bu)...
function _u (line 1) | function _u(e){if(e.liveConsumerNode===void 0)return;let t=$s;$s=!0;try{...
function Eu (line 1) | function Eu(){return ye?.consumerAllowSignalWrites!==!1}
function OD (line 1) | function OD(e){e.dirty=!0,_u(e),e.consumerMarkedDirty?.(e)}
function Gs (line 1) | function Gs(e){e.dirty=!1,e.lastCleanEpoch=bu}
function tn (line 1) | function tn(e){return e&&(e.nextProducerIndex=0),M(e)}
function wn (line 1) | function wn(e,t){if(M(t),!(!e||e.producerNode===void 0||e.producerIndexO...
function er (line 1) | function er(e){Qs(e);for(let t=0;t<e.producerNode.length;t++){let n=e.pr...
function Wr (line 1) | function Wr(e){if(Qs(e),Jo(e))for(let t=0;t<e.producerNode.length;t++)Ks...
function um (line 1) | function um(e,t,n){if(dm(e),e.liveConsumerNode.length===0&&fm(e))for(let...
function Ks (line 1) | function Ks(e,t){if(dm(e),e.liveConsumerNode.length===1&&fm(e))for(let r...
function Jo (line 1) | function Jo(e){return e.consumerIsAlwaysLive||(e?.liveConsumerNode?.leng...
function Qs (line 1) | function Qs(e){e.producerNode??=[],e.producerIndexOfThis??=[],e.producer...
function dm (line 1) | function dm(e){e.liveConsumerNode??=[],e.liveConsumerIndexOfThis??=[]}
function fm (line 1) | function fm(e){return e.producerNode!==void 0}
function Xs (line 1) | function Xs(e){ND?.(e)}
function ei (line 1) | function ei(e,t){let n=Object.create(kD);n.computation=e,t!==void 0&&(n....
method producerMustRecompute (line 1) | producerMustRecompute(e){return e.value===zs||e.value===Ws}
method producerRecomputeValue (line 1) | producerRecomputeValue(e){if(e.value===Ws)throw new Error("");let t=e.va...
function PD (line 1) | function PD(){throw new Error}
function pm (line 1) | function pm(e){hm(e)}
function Du (line 1) | function Du(e){hm=e}
function wu (line 1) | function wu(e,t){let n=Object.create(ti);n.value=e,t!==void 0&&(n.equal=...
function mm (line 1) | function mm(e){return Jn(e),e.value}
function Gr (line 1) | function Gr(e,t){Eu()||pm(e),e.equal(e.value,t)||(e.value=t,LD(e))}
function Iu (line 1) | function Iu(e,t){Eu()||pm(e),Gr(e,t(e.value))}
function LD (line 1) | function LD(e){e.version++,lm(),_u(e),FD?.(e)}
function k (line 1) | function k(e){return typeof e=="function"}
function qr (line 1) | function qr(e){let n=e(r=>{Error.call(r),r.stack=new Error().stack});ret...
function tr (line 3) | function tr(e,t){if(e){let n=e.indexOf(t);0<=n&&e.splice(n,1)}}
method constructor (line 3) | constructor(t){this.initialTeardown=t,this.closed=!1,this._parentage=nul...
method unsubscribe (line 3) | unsubscribe(){let t;if(!this.closed){this.closed=!0;let{_parentage:n}=th...
method add (line 3) | add(t){var n;if(t&&t!==this)if(this.closed)gm(t);else{if(t instanceof e)...
method _hasParent (line 3) | _hasParent(t){let{_parentage:n}=this;return n===t||Array.isArray(n)&&n.i...
method _addParent (line 3) | _addParent(t){let{_parentage:n}=this;this._parentage=Array.isArray(n)?(n...
method _removeParent (line 3) | _removeParent(t){let{_parentage:n}=this;n===t?this._parentage=null:Array...
method remove (line 3) | remove(t){let{_finalizers:n}=this;n&&tr(n,t),t instanceof e&&t._removePa...
function ea (line 3) | function ea(e){return e instanceof ie||e&&"closed"in e&&k(e.remove)&&k(e...
function gm (line 3) | function gm(e){k(e)?e():e.unsubscribe()}
method setTimeout (line 3) | setTimeout(e,t,...n){let{delegate:r}=Zr;return r?.setTimeout?r.setTimeou...
method clearTimeout (line 3) | clearTimeout(e){let{delegate:t}=Zr;return(t?.clearTimeout||clearTimeout)...
function ta (line 3) | function ta(e){Zr.setTimeout(()=>{let{onUnhandledError:t}=mt;if(t)t(e);e...
function nr (line 3) | function nr(){}
function ym (line 3) | function ym(e){return Tu("E",void 0,e)}
function bm (line 3) | function bm(e){return Tu("N",e,void 0)}
function Tu (line 3) | function Tu(e,t,n){return{kind:e,value:t,error:n}}
function Yr (line 3) | function Yr(e){if(mt.useDeprecatedSynchronousErrorHandling){let t=!rr;if...
function _m (line 3) | function _m(e){mt.useDeprecatedSynchronousErrorHandling&&rr&&(rr.errorTh...
method constructor (line 3) | constructor(t){super(),this.isStopped=!1,t?(this.destination=t,ea(t)&&t....
method create (line 3) | static create(t,n,r){return new gt(t,n,r)}
method next (line 3) | next(t){this.isStopped?Mu(bm(t),this):this._next(t)}
method error (line 3) | error(t){this.isStopped?Mu(ym(t),this):(this.isStopped=!0,this._error(t))}
method complete (line 3) | complete(){this.isStopped?Mu(vm,this):(this.isStopped=!0,this._complete())}
method unsubscribe (line 3) | unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.d...
method _next (line 3) | _next(t){this.destination.next(t)}
method _error (line 3) | _error(t){try{this.destination.error(t)}finally{this.unsubscribe()}}
method _complete (line 3) | _complete(){try{this.destination.complete()}finally{this.unsubscribe()}}
function Su (line 3) | function Su(e,t){return jD.call(e,t)}
method constructor (line 3) | constructor(t){this.partialObserver=t}
method next (line 3) | next(t){let{partialObserver:n}=this;if(n.next)try{n.next(t)}catch(r){na(...
method error (line 3) | error(t){let{partialObserver:n}=this;if(n.error)try{n.error(t)}catch(r){...
method complete (line 3) | complete(){let{partialObserver:t}=this;if(t.complete)try{t.complete()}ca...
method constructor (line 3) | constructor(t,n,r){super();let o;if(k(t)||!t)o={next:t??void 0,error:n??...
function na (line 3) | function na(e){mt.useDeprecatedSynchronousErrorHandling?_m(e):ta(e)}
function BD (line 3) | function BD(e){throw e}
function Mu (line 3) | function Mu(e,t){let{onStoppedNotification:n}=mt;n&&Zr.setTimeout(()=>n(...
function Ae (line 3) | function Ae(e){return e}
function Ru (line 3) | function Ru(...e){return Au(e)}
function Au (line 3) | function Au(e){return e.length===0?Ae:e.length===1?e[0]:function(n){retu...
class e (line 3) | class e{constructor(n){n&&(this._subscribe=n)}lift(n){let r=new e;return...
method constructor (line 3) | constructor(n){n&&(this._subscribe=n)}
method lift (line 3) | lift(n){let r=new e;return r.source=this,r.operator=n,r}
method subscribe (line 3) | subscribe(n,r,o){let i=HD(n)?n:new gt(n,r,o);return Yr(()=>{let{operat...
method _trySubscribe (line 3) | _trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}
method forEach (line 3) | forEach(n,r){return r=Em(r),new r((o,i)=>{let s=new gt({next:a=>{try{n...
method _subscribe (line 3) | _subscribe(n){var r;return(r=this.source)===null||r===void 0?void 0:r....
method [Kr] (line 3) | [Kr](){return this}
method pipe (line 3) | pipe(...n){return Au(n)(this)}
method toPromise (line 3) | toPromise(n){return n=Em(n),new n((r,o)=>{let i;this.subscribe(s=>i=s,...
method constructor (line 3) | constructor(){super(),this.closed=!1,this.currentObservers=null,this.o...
method lift (line 3) | lift(n){let r=new ra(this,this);return r.operator=n,r}
method _throwIfClosed (line 3) | _throwIfClosed(){if(this.closed)throw new Dm}
method next (line 3) | next(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.current...
method error (line 3) | error(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasErr...
method complete (line 3) | complete(){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isSt...
method unsubscribe (line 3) | unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.curren...
method observed (line 3) | get observed(){var n;return((n=this.observers)===null||n===void 0?void...
method _trySubscribe (line 3) | _trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}
method _subscribe (line 3) | _subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuse...
method _innerSubscribe (line 3) | _innerSubscribe(n){let{hasError:r,isStopped:o,observers:i}=this;return...
method _checkFinalizedStatuses (line 3) | _checkFinalizedStatuses(n){let{hasError:r,thrownError:o,isStopped:i}=t...
method asObservable (line 3) | asObservable(){let n=new P;return n.source=this,n}
method constructor (line 7) | constructor(n,r){this.view=n,this.node=r}
method hasPendingTasks (line 7) | get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}
method hasPendingTasksObservable (line 7) | get hasPendingTasksObservable(){return this.destroyed?new P(n=>{n.next...
method add (line 7) | add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0...
method has (line 7) | has(n){return this.pendingTasks.has(n)}
method remove (line 7) | remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this...
method ngOnDestroy (line 7) | ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pen...
method add (line 7) | add(){let n=this.internalPendingTasks.add();return()=>{this.internalPe...
method run (line 7) | run(n){let r=this.add();n().catch(this.errorHandler).finally(r)}
method constructor (line 7) | constructor(n){this.nativeElement=n}
method constructor (line 7) | constructor(n,r,o){this._declarationLView=n,this._declarationTContaine...
method ssrId (line 7) | get ssrId(){return this._declarationTContainer.tView?.ssrId||null}
method createEmbeddedView (line 7) | createEmbeddedView(n,r){return this.createEmbeddedViewImpl(n,r)}
method createEmbeddedViewImpl (line 7) | createEmbeddedViewImpl(n,r,o){let i=Bi(this._declarationLView,this._de...
method constructor (line 7) | constructor(n){this._injector=n}
method getOrCreateStandaloneInjector (line 7) | getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this...
method ngOnDestroy (line 7) | ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&...
method execute (line 7) | execute(){this.impl?.execute()}
method constructor (line 7) | constructor(){h($n,{optional:!0})}
method execute (line 7) | execute(){let n=this.sequences.size>0;n&&W(16),this.executing=!0;for(l...
method register (line 7) | register(n){let{view:r}=n;r!==void 0?((r[yr]??=[]).push(n),Pn(r),r[A]|...
method addSequence (line 7) | addSequence(n){this.sequences.add(n),this.scheduler.notify(7)}
method unregister (line 7) | unregister(n){this.executing&&this.sequences.has(n)?(n.erroredOrDestro...
method maybeTrace (line 7) | maybeTrace(n,r){return r?r.run(Lc.AFTER_NEXT_RENDER,n):n()}
method log (line 7) | log(n){console.log(n)}
method warn (line 7) | warn(n){console.warn(n)}
method constructor (line 7) | constructor(){}
method runInitializers (line 7) | runInitializers(){if(this.initialized)return;let n=[];for(let o of thi...
method allViews (line 7) | get allViews(){return[...(this.includeAllTestViews?this.allTestViews:t...
method destroyed (line 7) | get destroyed(){return this._destroyed}
method isStable (line 7) | get isStable(){return this.internalPendingTask.hasPendingTasksObservab...
method constructor (line 7) | constructor(){h($n,{optional:!0})}
method whenStable (line 7) | whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({n...
method injector (line 7) | get injector(){return this._injector}
method bootstrap (line 7) | bootstrap(n,r){return this.bootstrapImpl(n,r)}
method bootstrapImpl (line 7) | bootstrapImpl(n,r,o=ae.NULL){return this._injector.get(B).run(()=>{W(1...
method tick (line 7) | tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}
method _tick (line 7) | _tick(){W(12),this.tracingSnapshot!==null?this.tracingSnapshot.run(Lc....
method synchronize (line 7) | synchronize(){this._rendererFactory===null&&!this._injector.destroyed&...
method synchronizeOnce (line 7) | synchronizeOnce(){this.dirtyFlags&16&&(this.dirtyFlags&=-17,this.rootE...
method syncDirtyFlagsWithViews (line 7) | syncDirtyFlagsWithViews(){if(this.allViews.some(({_lView:n})=>_i(n))){...
method attachView (line 7) | attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}
method detachView (line 7) | detachView(n){let r=n;xi(this._views,r),r.detachFromAppRef()}
method _loadComponent (line 7) | _loadComponent(n){this.attachView(n.hostView);try{this.tick()}catch(o)...
method ngOnDestroy (line 7) | ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n...
method onDestroy (line 7) | onDestroy(n){return this._destroyListeners.push(n),()=>xi(this._destro...
method destroy (line 7) | destroy(){if(this._destroyed)throw new _(406,!1);let n=this._injector;...
method viewCount (line 7) | get viewCount(){return this._views.length}
method compileModuleSync (line 7) | compileModuleSync(n){return new gc(n)}
method compileModuleAsync (line 7) | compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}
method compileModuleAndAllComponentsSync (line 7) | compileModuleAndAllComponentsSync(n){let r=this.compileModuleSync(n),o...
method compileModuleAndAllComponentsAsync (line 7) | compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.comp...
method clearCache (line 7) | clearCache(){}
method clearCacheFor (line 7) | clearCacheFor(n){}
method getModuleId (line 7) | getModuleId(n){}
method initialize (line 7) | initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmp...
method ngOnDestroy (line 7) | ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}
method initialize (line 7) | initialize(){if(this.initialized)return;this.initialized=!0;let n=null...
method ngOnDestroy (line 7) | ngOnDestroy(){this.subscription.unsubscribe()}
method constructor (line 7) | constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe((...
method notify (line 7) | notify(n){if(!this.zonelessEnabled&&n===5)return;let r=!1;switch(n){ca...
method shouldScheduleTick (line 7) | shouldScheduleTick(n){return!(this.disableScheduling&&!n||this.appRef....
method tick (line 7) | tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRe...
method ngOnDestroy (line 7) | ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}
method cleanup (line 7) | cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this...
method constructor (line 7) | constructor(n){this.factories=n}
method create (line 7) | static create(n,r){if(r!=null){let o=r.factories.slice();n=n.concat(o)...
method extend (line 7) | static extend(n){return{provide:e,useFactory:r=>e.create(n,r||Bb()),de...
method find (line 7) | find(n){let r=this.factories.find(o=>o.supports(n));if(r!=null)return ...
method historyGo (line 7) | historyGo(n){throw new Error("")}
method constructor (line 7) | constructor(){super(),this._location=window.location,this._history=win...
method getBaseHrefFromDOM (line 7) | getBaseHrefFromDOM(){return gn().getBaseHref(this._doc)}
method onPopState (line 7) | onPopState(n){let r=gn().getGlobalEventTarget(this._doc,"window");retu...
method onHashChange (line 7) | onHashChange(n){let r=gn().getGlobalEventTarget(this._doc,"window");re...
method href (line 7) | get href(){return this._location.href}
method protocol (line 7) | get protocol(){return this._location.protocol}
method hostname (line 7) | get hostname(){return this._location.hostname}
method port (line 7) | get port(){return this._location.port}
method pathname (line 7) | get pathname(){return this._location.pathname}
method search (line 7) | get search(){return this._location.search}
method hash (line 7) | get hash(){return this._location.hash}
method pathname (line 7) | set pathname(n){this._location.pathname=n}
method pushState (line 7) | pushState(n,r,o){this._history.pushState(n,r,o)}
method replaceState (line 7) | replaceState(n,r,o){this._history.replaceState(n,r,o)}
method forward (line 7) | forward(){this._history.forward()}
method back (line 7) | back(){this._history.back()}
method historyGo (line 7) | historyGo(n=0){this._history.go(n)}
method getState (line 7) | getState(){return this._history.state}
method historyGo (line 7) | historyGo(n){throw new Error("")}
method constructor (line 7) | constructor(n,r){super(),this._platformLocation=n,this._baseHref=r??th...
method ngOnDestroy (line 7) | ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListene...
method onPopState (line 7) | onPopState(n){this._removeListenerFns.push(this._platformLocation.onPo...
method getBaseHref (line 7) | getBaseHref(){return this._baseHref}
method prepareExternalUrl (line 7) | prepareExternalUrl(n){return Xb(this._baseHref,n)}
method path (line 7) | path(n=!1){let r=this._platformLocation.pathname+Wn(this._platformLoca...
method pushState (line 7) | pushState(n,r,o,i){let s=this.prepareExternalUrl(o+Wn(i));this._platfo...
method replaceState (line 7) | replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+Wn(i));this._pla...
method forward (line 7) | forward(){this._platformLocation.forward()}
method back (line 7) | back(){this._platformLocation.back()}
method getState (line 7) | getState(){return this._platformLocation.getState()}
method historyGo (line 7) | historyGo(n=0){this._platformLocation.historyGo?.(n)}
method constructor (line 7) | constructor(n){this._locationStrategy=n;let r=this._locationStrategy.g...
method ngOnDestroy (line 7) | ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChan...
method path (line 7) | path(n=!1){return this.normalize(this._locationStrategy.path(n))}
method getState (line 7) | getState(){return this._locationStrategy.getState()}
method isCurrentPathEqualTo (line 7) | isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+Wn(r))}
method normalize (line 7) | normalize(n){return e.stripTrailingSlash(u0(this._basePath,Yb(n)))}
method prepareExternalUrl (line 7) | prepareExternalUrl(n){return n&&n[0]!=="/"&&(n="/"+n),this._locationSt...
method go (line 7) | go(n,r="",o=null){this._locationStrategy.pushState(o,"",n,r),this._not...
method replaceState (line 7) | replaceState(n,r="",o=null){this._locationStrategy.replaceState(o,"",n...
method forward (line 7) | forward(){this._locationStrategy.forward()}
method back (line 7) | back(){this._locationStrategy.back()}
method historyGo (line 7) | historyGo(n=0){this._locationStrategy.historyGo?.(n)}
method onUrlChange (line 7) | onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChange...
method _notifyUrlChangeListeners (line 7) | _notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(o=>...
method subscribe (line 7) | subscribe(n,r,o){return this._subject.subscribe({next:n,error:r??void ...
method constructor (line 7) | constructor(n,r){this._ngEl=n,this._renderer=r}
method klass (line 7) | set klass(n){this.initialClasses=n!=null?n.trim().split(tp):o_}
method ngClass (line 7) | set ngClass(n){this.rawClass=typeof n=="string"?n.trim().split(tp):n}
method ngDoCheck (line 7) | ngDoCheck(){for(let r of this.initialClasses)this._updateState(r,!0);l...
method _updateState (line 7) | _updateState(n,r){let o=this.stateMap.get(n);o!==void 0?(o.enabled!==r...
method _applyStateDiff (line 7) | _applyStateDiff(){for(let n of this.stateMap){let r=n[0],o=n[1];o.chan...
method _toggleClass (line 7) | _toggleClass(n,r){n=n.trim(),n.length>0&&n.split(tp).forEach(o=>{r?thi...
method constructor (line 7) | constructor(n){this._viewContainerRef=n}
method ngOnChanges (line 7) | ngOnChanges(n){if(this._shouldRecreateView(n)){let r=this._viewContain...
method _shouldRecreateView (line 7) | _shouldRecreateView(n){return!!n.ngTemplateOutlet||!!n.ngTemplateOutle...
method _createContextForwardProxy (line 7) | _createContextForwardProxy(){return new Proxy({},{set:(n,r,o)=>this.ng...
method constructor (line 7) | constructor(n,r,o){this.locale=n,this.defaultTimezone=r,this.defaultOp...
method transform (line 7) | transform(n,r,o,i){if(n==null||n===""||n!==n)return null;try{let s=r??...
method constructor (line 7) | constructor(n,r="USD"){this._locale=n,this._defaultCurrencyCode=r}
method transform (line 7) | transform(n,r=this._defaultCurrencyCode,o="symbol",i,s){if(!B0(n))retu...
method constructor (line 7) | constructor(n,r){this._zone=r,n.forEach(o=>{o.manager=this}),this._plu...
method addEventListener (line 7) | addEventListener(n,r,o,i){return this._findPluginFor(r).addEventListen...
method getZone (line 7) | getZone(){return this._zone}
method _findPluginFor (line 7) | _findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;i...
method constructor (line 7) | constructor(n,r,o,i={}){this.doc=n,this.appId=r,this.nonce=o,this.isSe...
method addStyles (line 7) | addStyles(n,r){for(let o of n)this.addUsage(o,this.inline,S_);r?.forEa...
method removeStyles (line 7) | removeStyles(n,r){for(let o of n)this.removeUsage(o,this.inline);r?.fo...
method addUsage (line 7) | addUsage(n,r,o){let i=r.get(n);i?i.usage++:r.set(n,{usage:1,elements:[...
method removeUsage (line 7) | removeUsage(n,r){let o=r.get(n);o&&(o.usage--,o.usage<=0&&(T_(o.elemen...
method ngOnDestroy (line 7) | ngOnDestroy(){for(let[,{elements:n}]of[...this.inline,...this.external...
method addHost (line 7) | addHost(n){this.hosts.add(n);for(let[r,{elements:o}]of this.inline)o.p...
method removeHost (line 7) | removeHost(n){this.hosts.delete(n)}
method addElement (line 7) | addElement(n,r){return this.nonce&&r.setAttribute("nonce",this.nonce),...
method constructor (line 7) | constructor(n,r,o,i,s,a,c,l=null,u=null){this.eventManager=n,this.shar...
method createRenderer (line 7) | createRenderer(n,r){if(!n||!r)return this.defaultRenderer;let o=this.g...
method getOrCreateRenderer (line 7) | getOrCreateRenderer(n,r){let o=this.rendererByCompId,i=o.get(r.id);if(...
method ngOnDestroy (line 7) | ngOnDestroy(){this.rendererByCompId.clear()}
method componentReplaced (line 7) | componentReplaced(n){this.rendererByCompId.delete(n)}
method build (line 7) | build(){return new XMLHttpRequest}
method constructor (line 7) | constructor(n){super(n)}
method supports (line 7) | supports(n){return!0}
method addEventListener (line 7) | addEventListener(n,r,o,i){return n.addEventListener(r,o,i),()=>this.re...
method removeEventListener (line 7) | removeEventListener(n,r,o,i){return n.removeEventListener(r,o,i)}
method constructor (line 7) | constructor(n){super(n)}
method supports (line 7) | supports(n){return e.parseEventName(n)!=null}
method addEventListener (line 7) | addEventListener(n,r,o,i){let s=e.parseEventName(r),a=e.eventCallback(...
method parseEventName (line 7) | static parseEventName(n){let r=n.toLowerCase().split("."),o=r.shift();...
method matchEventFullKeyCode (line 7) | static matchEventFullKeyCode(n,r){let o=tx[n.key]||n.key,i="";return r...
method eventCallback (line 7) | static eventCallback(n,r,o){return i=>{e.matchEventFullKeyCode(i,n)&&o...
method _normalizeKey (line 7) | static _normalizeKey(n){return n==="esc"?"escape":n}
method constructor (line 8) | constructor(n){this.handler=n}
method request (line 8) | request(n,r,o={}){let i;if(n instanceof Ro)i=n;else{let c;o.headers in...
method delete (line 8) | delete(n,r={}){return this.request("DELETE",n,r)}
method get (line 8) | get(n,r={}){return this.request("GET",n,r)}
method head (line 8) | head(n,r={}){return this.request("HEAD",n,r)}
method jsonp (line 8) | jsonp(n,r){return this.request("JSONP",n,{params:new Mt().append(r,"JS...
method options (line 8) | options(n,r={}){return this.request("OPTIONS",n,r)}
method patch (line 8) | patch(n,r,o={}){return this.request("PATCH",n,dp(o,r))}
method post (line 8) | post(n,r,o={}){return this.request("POST",n,dp(o,r))}
method put (line 8) | put(n,r,o={}){return this.request("PUT",n,dp(o,r))}
method constructor (line 8) | constructor(n,r){super(),this.backend=n,this.injector=r}
method handle (line 8) | handle(n){if(this.chain===null){let r=Array.from(new Set([...this.inje...
method constructor (line 8) | constructor(n){this.xhrFactory=n}
method handle (line 8) | handle(n){if(n.method==="JSONP")throw new _(-2800,!1);n.keepalive;let ...
method constructor (line 8) | constructor(n,r){this.doc=n,this.cookieName=r}
method getToken (line 8) | getToken(){let n=this.doc.cookie||"";return n!==this.lastCookieString&...
method constructor (line 8) | constructor(n){this._doc=n}
method getTitle (line 8) | getTitle(){return this._doc.title}
method setTitle (line 8) | setTitle(n){this._doc.title=n||""}
method constructor (line 8) | constructor(n){super(),this._doc=n}
method sanitize (line 8) | sanitize(n,r){if(r==null)return null;switch(n){case Tt.NONE:return r;c...
method bypassSecurityTrustHtml (line 8) | bypassSecurityTrustHtml(n){return zf(n)}
method bypassSecurityTrustStyle (line 8) | bypassSecurityTrustStyle(n){return Wf(n)}
method bypassSecurityTrustScript (line 8) | bypassSecurityTrustScript(n){return Gf(n)}
method bypassSecurityTrustUrl (line 8) | bypassSecurityTrustUrl(n){return qf(n)}
method bypassSecurityTrustResourceUrl (line 8) | bypassSecurityTrustResourceUrl(n){return Zf(n)}
method constructor (line 8) | constructor(n){this.rootInjector=n}
method onChildOutletCreated (line 8) | onChildOutletCreated(n,r){let o=this.getOrCreateContext(n);o.outlet=r,...
method onChildOutletDestroyed (line 8) | onChildOutletDestroyed(n){let r=this.getContext(n);r&&(r.outlet=null,r...
method onOutletDeactivated (line 8) | onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}
method onOutletReAttached (line 8) | onOutletReAttached(n){this.contexts=n}
method getOrCreateContext (line 8) | getOrCreateContext(n){let r=this.getContext(n);return r||(r=new Ml(thi...
method getContext (line 8) | getContext(n){return this.contexts.get(n)||null}
method activatedComponentRef (line 8) | get activatedComponentRef(){return this.activated}
method ngOnChanges (line 8) | ngOnChanges(n){if(n.name){let{firstChange:r,previousValue:o}=n.name;if...
method ngOnDestroy (line 8) | ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentCo...
method isTrackedInParentContexts (line 8) | isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?...
method ngOnInit (line 8) | ngOnInit(){this.initializeOutletWithName()}
method initializeOutletWithName (line 8) | initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated...
method isActivated (line 8) | get isActivated(){return!!this.activated}
method component (line 8) | get component(){if(!this.activated)throw new _(4012,!1);return this.ac...
method activatedRoute (line 8) | get activatedRoute(){if(!this.activated)throw new _(4012,!1);return th...
method activatedRouteData (line 8) | get activatedRouteData(){return this._activatedRoute?this._activatedRo...
method detach (line 8) | detach(){if(!this.activated)throw new _(4012,!1);this.location.detach(...
method attach (line 8) | attach(n,r){this.activated=n,this._activatedRoute=r,this.location.inse...
method deactivate (line 8) | deactivate(){if(this.activated){let n=this.component;this.activated.de...
method activateWith (line 8) | activateWith(n,r){if(this.isActivated)throw new _(4013,!1);this._activ...
method buildTitle (line 8) | buildTitle(n){let r,o=n.root;for(;o!==void 0;)r=this.getResolvedTitleF...
method getResolvedTitleForRoute (line 8) | getResolvedTitleForRoute(n){return n.data[Is]}
method constructor (line 8) | constructor(n){super(),this.title=n}
method updateTitle (line 8) | updateTitle(n){let r=this.buildTitle(n);r!==void 0&&this.title.setTitl...
method loadComponent (line 8) | loadComponent(n){if(this.componentLoaders.get(n))return this.component...
method loadChildren (line 8) | loadChildren(n,r){if(this.childrenLoaders.get(r))return this.childrenL...
method shouldProcessUrl (line 8) | shouldProcessUrl(n){return!0}
method extract (line 8) | extract(n){return n}
method merge (line 8) | merge(n,r){return n}
method hasRequestedNavigation (line 8) | get hasRequestedNavigation(){return this.navigationId!==0}
method constructor (line 8) | constructor(){let n=o=>this.events.next(new Dl(o)),r=o=>this.events.ne...
method complete (line 8) | complete(){this.transitions?.complete()}
method handleNavigationRequest (line 8) | handleNavigationRequest(n){let r=++this.navigationId;this.transitions?...
method setupNavigations (line 8) | setupNavigations(n){return this.transitions=new _e(null),this.transiti...
method cancelNavigationTransition (line 8) | cancelNavigationTransition(n,r,o){let i=new Zt(n.id,this.urlSerializer...
method isUpdatingInternalState (line 8) | isUpdatingInternalState(){return this.currentTransition?.extractedUrl....
method isUpdatedBrowserUrl (line 8) | isUpdatedBrowserUrl(){let n=this.urlHandlingStrategy.extract(this.urlS...
method getCurrentUrlTree (line 8) | getCurrentUrlTree(){return this.currentUrlTree}
method getRawUrlTree (line 8) | getRawUrlTree(){return this.rawUrlTree}
method createBrowserPath (line 8) | createBrowserPath({finalUrl:n,initialUrl:r,targetBrowserUrl:o}){let i=...
method commitTransition (line 8) | commitTransition({targetRouterState:n,finalUrl:r,initialUrl:o}){r&&n?(...
method getRouterState (line 8) | getRouterState(){return this.routerState}
method updateStateMemento (line 8) | updateStateMemento(){this.stateMemento=this.createStateMemento()}
method createStateMemento (line 8) | createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:...
method resetInternalState (line 8) | resetInternalState({finalUrl:n}){this.routerState=this.stateMemento.ro...
method restoredState (line 8) | restoredState(){return this.location.getState()}
method browserPageId (line 8) | get browserPageId(){return this.canceledNavigationResolution!=="comput...
method registerNonRouterCurrentEntryChangeListener (line 8) | registerNonRouterCurrentEntryChangeListener(n){return this.location.su...
method handleRouterEvent (line 8) | handleRouterEvent(n,r){n instanceof jr?this.updateStateMemento():n ins...
method setBrowserUrl (line 8) | setBrowserUrl(n,{extras:r,id:o}){let{replaceUrl:i,state:s}=r;if(this.l...
method restoreHistory (line 8) | restoreHistory(n,r=!1){if(this.canceledNavigationResolution==="compute...
method resetUrlToCurrentUrlTree (line 8) | resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializ...
method generateNgRouterState (line 8) | generateNgRouterState(n,r){return this.canceledNavigationResolution===...
method currentUrlTree (line 8) | get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}
method rawUrlTree (line 8) | get rawUrlTree(){return this.stateManager.getRawUrlTree()}
method events (line 8) | get events(){return this._events}
method routerState (line 8) | get routerState(){return this.stateManager.getRouterState()}
method constructor (line 8) | constructor(){this.resetConfig(this.config),this.navigationTransitions...
method subscribeToNavigationEvents (line 8) | subscribeToNavigationEvents(){let n=this.navigationTransitions.events....
method resetRootComponentType (line 8) | resetRootComponentType(n){this.routerState.root.component=n,this.navig...
method initialNavigation (line 8) | initialNavigation(){this.setUpLocationChangeListener(),this.navigation...
method setUpLocationChangeListener (line 8) | setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscrip...
method navigateToSyncWithBrowser (line 8) | navigateToSyncWithBrowser(n,r,o){let i={replaceUrl:!0},s=o?.navigation...
method url (line 8) | get url(){return this.serializeUrl(this.currentUrlTree)}
method getCurrentNavigation (line 8) | getCurrentNavigation(){return this.navigationTransitions.currentNaviga...
method lastSuccessfulNavigation (line 8) | get lastSuccessfulNavigation(){return this.navigationTransitions.lastS...
method resetConfig (line 8) | resetConfig(n){this.config=n.map(Fp),this.navigated=!1}
method ngOnDestroy (line 8) | ngOnDestroy(){this.dispose()}
method dispose (line 8) | dispose(){this._events.unsubscribe(),this.navigationTransitions.comple...
method createUrlTree (line 8) | createUrlTree(n,r={}){let{relativeTo:o,queryParams:i,fragment:s,queryP...
method navigateByUrl (line 8) | navigateByUrl(n,r={skipLocationChange:!1}){let o=Zn(n)?n:this.parseUrl...
method navigate (line 8) | navigate(n,r={skipLocationChange:!1}){return cA(n),this.navigateByUrl(...
method serializeUrl (line 8) | serializeUrl(n){return this.urlSerializer.serialize(n)}
method parseUrl (line 8) | parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.u...
method isActive (line 8) | isActive(n,r){let o;if(r===!0?o=v({},sA):r===!1?o=v({},aA):o=r,Zn(n))r...
method removeEmptyProps (line 8) | removeEmptyProps(n){return Object.entries(n).reduce((r,[o,i])=>(i!=nul...
method scheduleNavigation (line 8) | scheduleNavigation(n,r,o,i,s){if(this.disposed)return Promise.resolve(...
method href (line 8) | get href(){return zc(this.reactiveHref)}
method href (line 8) | set href(n){this.reactiveHref.set(n)}
method constructor (line 8) | constructor(n,r,o,i,s,a){this.router=n,this.route=r,this.tabIndexAttri...
method subscribeToNavigationEventsIfNecessary (line 8) | subscribeToNavigationEventsIfNecessary(){if(this.subscription!==void 0...
method setTabIndexIfNotOnNativeEl (line 8) | setTabIndexIfNotOnNativeEl(n){this.tabIndexAttribute!=null||this.isAnc...
method ngOnChanges (line 8) | ngOnChanges(n){this.isAnchorElement&&(this.updateHref(),this.subscribe...
method routerLink (line 8) | set routerLink(n){n==null?(this.routerLinkInput=null,this.setTabIndexI...
method onClick (line 8) | onClick(n,r,o,i,s){let a=this.urlTree;if(a===null||this.isAnchorElemen...
method ngOnDestroy (line 8) | ngOnDestroy(){this.subscription?.unsubscribe()}
method updateHref (line 8) | updateHref(){let n=this.urlTree;this.reactiveHref.set(n!==null&&this.l...
method applyAttributeValue (line 8) | applyAttributeValue(n,r){let o=this.renderer,i=this.el.nativeElement;r...
method urlTree (line 8) | get urlTree(){return this.routerLinkInput===null?null:Zn(this.routerLi...
method isActive (line 8) | get isActive(){return this._isActive}
method constructor (line 8) | constructor(n,r,o,i,s){this.router=n,this.element=r,this.renderer=o,th...
method ngAfterContentInit (line 8) | ngAfterContentInit(){C(this.links.changes,C(null)).pipe(In()).subscrib...
method subscribeToEachLinkOnChanges (line 8) | subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsu...
method routerLinkActive (line 8) | set routerLinkActive(n){let r=Array.isArray(n)?n:n.split(" ");this.cla...
method ngOnChanges (line 8) | ngOnChanges(n){this.update()}
method ngOnDestroy (line 8) | ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInp...
method update (line 8) | update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let ...
method isLinkActive (line 8) | isLinkActive(n){let r=dA(this.routerLinkActiveOptions)?this.routerLink...
method hasActiveLinks (line 8) | hasActiveLinks(){let n=this.isLinkActive(this.router);return this.link...
method constructor (line 8) | constructor(){}
method mostRecentModality (line 8) | get mostRecentModality(){return this._modality.value}
method constructor (line 8) | constructor(){let n=h(B),r=h(H),o=h(UE,{optional:!0});if(this._options...
method ngOnDestroy (line 8) | ngOnDestroy(){this._modality.complete(),this._listenerCleanups?.forEac...
method constructor (line 8) | constructor(){let n=h(zE,{optional:!0});this._detectionMode=n?.detecti...
method monitor (line 8) | monitor(n,r=!1){let o=Kt(n);if(!this._platform.isBrowser||o.nodeType!=...
method stopMonitoring (line 8) | stopMonitoring(n){let r=Kt(n),o=this._elementInfo.get(r);o&&(o.subject...
method focusVia (line 8) | focusVia(n,r,o){let i=Kt(n),s=this._getDocument().activeElement;i===s?...
method ngOnDestroy (line 8) | ngOnDestroy(){this._elementInfo.forEach((n,r)=>this.stopMonitoring(r))}
method _getDocument (line 8) | _getDocument(){return this._document||document}
method _getWindow (line 8) | _getWindow(){return this._getDocument().defaultView||window}
method _getFocusOrigin (line 8) | _getFocusOrigin(n){return this._origin?this._originFromTouchInteractio...
method _shouldBeAttributedToTouch (line 8) | _shouldBeAttributedToTouch(n){return this._detectionMode===Ns.EVENTUAL...
method _setClasses (line 8) | _setClasses(n,r){n.classList.toggle("cdk-focused",!!r),n.classList.tog...
method _setOrigin (line 8) | _setOrigin(n,r=!1){this._ngZone.runOutsideAngular(()=>{if(this._origin...
method _onFocus (line 8) | _onFocus(n,r){let o=this._elementInfo.get(r),i=At(n);!o||!o.checkChild...
method _onBlur (line 8) | _onBlur(n,r){let o=this._elementInfo.get(r);!o||o.checkChildren&&n.rel...
method _emitOrigin (line 8) | _emitOrigin(n,r){n.subject.observers.length&&this._ngZone.run(()=>n.su...
method _registerGlobalListeners (line 8) | _registerGlobalListeners(n){if(!this._platform.isBrowser)return;let r=...
method _removeGlobalListeners (line 8) | _removeGlobalListeners(n){let r=n.rootNode;if(this._rootNodeFocusListe...
method _originChanged (line 8) | _originChanged(n,r,o){this._setClasses(n,r),this._emitOrigin(o,r),this...
method _getClosestElementsInfo (line 8) | _getClosestElementsInfo(n){let r=[];return this._elementInfo.forEach((...
method _isLastInteractionFromInputLabel (line 8) | _isLastInteractionFromInputLabel(n){let{_mostRecentTarget:r,mostRecent...
method constructor (line 8) | constructor(){}
method focusOrigin (line 8) | get focusOrigin(){return this._focusOrigin}
method ngAfterViewInit (line 8) | ngAfterViewInit(){let n=this._elementRef.nativeElement;this._monitorSu...
method ngOnDestroy (line 8) | ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this...
method load (line 8) | load(n){let r=this._appRef=this._appRef||this._injector.get(zt),o=Ul.g...
method constructor (line 9) | constructor(){this._matchMedia=this._platform.isBrowser&&window.matchM...
method matchMedia (line 9) | matchMedia(n){return(this._platform.WEBKIT||this._platform.BLINK)&&EA(...
method constructor (line 9) | constructor(){}
method ngOnDestroy (line 9) | ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complet...
method isMatched (line 9) | isMatched(n){return GE(zp(n)).some(o=>this._registerQuery(o).mql.match...
method observe (line 9) | observe(n){let o=GE(zp(n)).map(s=>this._registerQuery(s).observable),i...
method _registerQuery (line 9) | _registerQuery(n){if(this._queries.has(n))return this._queries.get(n);...
method create (line 9) | create(n){return typeof MutationObserver>"u"?null:new MutationObserver...
method constructor (line 9) | constructor(){}
method ngOnDestroy (line 9) | ngOnDestroy(){this._observedElements.forEach((n,r)=>this._cleanupObser...
method observe (line 9) | observe(n){let r=Kt(n);return new P(o=>{let s=this._observeElement(r)....
method _observeElement (line 9) | _observeElement(n){return this._ngZone.runOutsideAngular(()=>{if(this....
method _unobserveElement (line 9) | _unobserveElement(n){this._observedElements.has(n)&&(this._observedEle...
method _cleanupObserver (line 9) | _cleanupObserver(n){if(this._observedElements.has(n)){let{observer:r,s...
method disabled (line 9) | get disabled(){return this._disabled}
method disabled (line 9) | set disabled(n){this._disabled=n,this._disabled?this._unsubscribe():th...
method debounce (line 9) | get debounce(){return this._debounce}
method debounce (line 9) | set debounce(n){this._debounce=Hp(n),this._subscribe()}
method constructor (line 9) | constructor(){}
method ngAfterContentInit (line 9) | ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this....
method ngOnDestroy (line 9) | ngOnDestroy(){this._unsubscribe()}
method _subscribe (line 9) | _subscribe(){this._unsubscribe();let n=this._contentObserver.observe(t...
method _unsubscribe (line 9) | _unsubscribe(){this._currentSubscription?.unsubscribe()}
method constructor (line 9) | constructor(){}
method isDisabled (line 9) | isDisabled(n){return n.hasAttribute("disabled")}
method isVisible (line 9) | isVisible(n){return CA(n)&&getComputedStyle(n).visibility==="visible"}
method isTabbable (line 9) | isTabbable(n){if(!this._platform.isBrowser)return!1;let r=IA(OA(n));if...
method isFocusable (line 9) | isFocusable(n,r){return NA(n)&&!this.isDisabled(n)&&(r?.ignoreVisibili...
method constructor (line 9) | constructor(){h(En).load(Vl)}
method create (line 9) | create(n,r=!1){return new $l(n,this._checker,this._ngZone,this._docume...
method constructor (line 9) | constructor(){let n=h(tD,{optional:!0});this._liveElement=n||this._cre...
method announce (line 9) | announce(n,...r){let o=this._defaultOptions,i,s;return r.length===1&&t...
method clear (line 9) | clear(){this._liveElement&&(this._liveElement.textContent="")}
method ngOnDestroy (line 9) | ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.r...
method _createLiveElement (line 9) | _createLiveElement(){let n="cdk-live-announcer-element",r=this._docume...
method _exposeAnnouncerToModals (line 9) | _exposeAnnouncerToModals(n){let r=this._document.querySelectorAll('bod...
method constructor (line 9) | constructor(){this._breakpointSubscription=h(Wp).observe("(forced-colo...
method getHighContrastMode (line 9) | getHighContrastMode(){if(!this._platform.isBrowser)return Yn.NONE;let ...
method ngOnDestroy (line 9) | ngOnDestroy(){this._breakpointSubscription.unsubscribe()}
method _applyBodyHighContrastModeCssClasses (line 9) | _applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContras...
method constructor (line 9) | constructor(){h(zl)._applyBodyHighContrastModeCssClasses()}
method getId (line 9) | getId(n){return this._appId!=="ng"&&(n+=this._appId),qp.hasOwnProperty...
method constructor (line 9) | constructor(){h(En).load(Vl),this._id=h(Bn)+"-"+Qp++}
method describe (line 9) | describe(n,r,o){if(!this._canBeDescribed(n,r))return;let i=Kp(r,o);typ...
method removeDescription (line 9) | removeDescription(n,r,o){if(!r||!this._isElementNode(n))return;let i=K...
method ngOnDestroy (line 9) | ngOnDestroy(){let n=this._document.querySelectorAll(`[${Gl}="${this._i...
method _createMessageElement (line 9) | _createMessageElement(n,r){let o=this._document.createElement("div");i...
method _deleteMessageElement (line 9) | _deleteMessageElement(n){this._messageRegistry.get(n)?.messageElement?...
method _createMessagesContainer (line 9) | _createMessagesContainer(){if(this._messagesContainer)return;let n="cd...
method _removeCdkDescribedByReferenceIds (line 9) | _removeCdkDescribedByReferenceIds(n){let r=ql(n,"aria-describedby").fi...
method _addMessageReference (line 9) | _addMessageReference(n,r){let o=this._messageRegistry.get(r);UA(n,"ari...
method _removeMessageReference (line 9) | _removeMessageReference(n,r){let o=this._messageRegistry.get(r);o.refe...
method _isElementDescribedByMessage (line 9) | _isElementDescribedByMessage(n,r){let o=ql(n,"aria-describedby"),i=thi...
method _canBeDescribed (line 9) | _canBeDescribed(n,r){if(!this._isElementNode(n))return!1;if(r&&typeof ...
method _isElementNode (line 9) | _isElementNode(n){return n.nodeType===this._document.ELEMENT_NODE}
method disabled (line 10) | get disabled(){return this._disabled}
method disabled (line 10) | set disabled(n){n&&this.fadeOutAllNonPersistent(),this._disabled=n,thi...
method trigger (line 10) | get trigger(){return this._trigger||this._elementRef.nativeElement}
method trigger (line 10) | set trigger(n){this._trigger=n,this._setupTriggerEventsIfEnabled()}
method constructor (line 10) | constructor(){let n=h(B),r=h(ze),o=h(em,{optional:!0}),i=h(ae);this._g...
method ngOnInit (line 10) | ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}
method ngOnDestroy (line 10) | ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}
method fadeOutAll (line 10) | fadeOutAll(){this._rippleRenderer.fadeOutAll()}
method fadeOutAllNonPersistent (line 10) | fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}
method rippleConfig (line 10) | get rippleConfig(){return{centered:this.centered,radius:this.radius,co...
method rippleDisabled (line 10) | get rippleDisabled(){return this.disabled||!!this._globalOptions.disab...
method _setupTriggerEventsIfEnabled (line 10) | _setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&th...
method launch (line 10) | launch(n,r=0,o){return typeof n=="number"?this._rippleRenderer.fadeInR...
method constructor (line 10) | constructor(){let n=h(It).createRenderer(null,null);this._eventCleanup...
method ngOnDestroy (line 10) | ngOnDestroy(){let n=this._hosts.keys();for(let r of n)this.destroyRipp...
method configureRipple (line 10) | configureRipple(n,r){n.setAttribute(tm,this._globalRippleOptions?.name...
method setDisabled (line 10) | setDisabled(n,r){let o=this._hosts.get(n);o?(o.target.rippleDisabled=r...
method _createRipple (line 10) | _createRipple(n){if(!this._document||this._hosts.has(n))return;n.query...
method destroyRipple (line 10) | destroyRipple(n){let r=this._hosts.get(n);r&&(r.renderer._removeTrigge...
method disableRipple (line 11) | get disableRipple(){return this._disableRipple}
method disableRipple (line 11) | set disableRipple(n){this._disableRipple=n,this._updateRippleDisabled()}
method disabled (line 11) | get disabled(){return this._disabled}
method disabled (line 11) | set disabled(n){this._disabled=n,this._updateRippleDisabled()}
method _tabindex (line 11) | set _tabindex(n){this.tabIndex=n}
method constructor (line 11) | constructor(){h(En).load(mD);let n=this._elementRef.nativeElement;this...
method ngAfterViewInit (line 11) | ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0),this...
method ngOnDestroy (line 11) | ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring...
method focus (line 11) | focus(n="program",r){n?this._focusMonitor.focusVia(this._elementRef.na...
method _getAriaDisabled (line 11) | _getAriaDisabled(){return this.ariaDisabled!=null?this.ariaDisabled:th...
method _getDisabledAttribute (line 11) | _getDisabledAttribute(){return this.disabledInteractive||!this.disable...
method _updateRippleDisabled (line 11) | _updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementR...
method _getTabIndex (line 11) | _getTabIndex(){return this._isAnchor?this.disabled&&!this.disabledInte...
method _setupAsAnchor (line 11) | _setupAsAnchor(){this._cleanupClick=this._ngZone.runOutsideAngular(()=...
method constructor (line 11) | constructor(){super(),this._rippleLoader.configureRipple(this._element...
method value (line 13) | get value(){return this.valueSignal()}
method constructor (line 13) | constructor(){let n=h(XA,{optional:!0});if(n){let r=n.body?n.body.dir:...
method ngOnDestroy (line 13) | ngOnDestroy(){this.change.complete()}
method constructor (line 13) | constructor(){h(zl)._applyBodyHighContrastModeCssClasses()}
method appearance (line 13) | get appearance(){return this._appearance}
method appearance (line 13) | set appearance(n){this.setAppearance(n||this._config?.defaultAppearanc...
method constructor (line 13) | constructor(){super();let n=iN(this._elementRef.nativeElement);n&&this...
method setAppearance (line 13) | setAppearance(n){if(n===this._appearance)return;let r=this._elementRef...
function Em (line 3) | function Em(e){var t;return(t=e??mt.Promise)!==null&&t!==void 0?t:Promise}
function VD (line 3) | function VD(e){return e&&k(e.next)&&k(e.error)&&k(e.complete)}
function HD (line 3) | function HD(e){return e&&e instanceof or||VD(e)&&ea(e)}
function Nu (line 3) | function Nu(e){return k(e?.lift)}
function R (line 3) | function R(e){return t=>{if(Nu(t))return t.lift(function(n){try{return e...
function x (line 3) | function x(e,t,n,r,o){return new Ou(e,t,n,r,o)}
method constructor (line 3) | constructor(t,n,r,o,i,s){super(t),this.onFinalize=i,this.shouldUnsubscri...
method unsubscribe (line 3) | unsubscribe(){var t;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()...
function Qr (line 3) | function Qr(){return R((e,t)=>{let n=null;e._refCount++;let r=x(t,void 0...
method constructor (line 3) | constructor(t,n){super(),this.source=t,this.subjectFactory=n,this._subje...
method _subscribe (line 3) | _subscribe(t){return this.getSubject().subscribe(t)}
method getSubject (line 3) | getSubject(){let t=this._subject;return(!t||t.isStopped)&&(this._subject...
method _teardown (line 3) | _teardown(){this._refCount=0;let{_connection:t}=this;this._subject=this....
method connect (line 3) | connect(){let t=this._connection;if(!t){t=this._connection=new ie;let n=...
method refCount (line 3) | refCount(){return Qr()(this)}
class e (line 3) | class e extends P{constructor(){super(),this.closed=!1,this.currentObser...
method constructor (line 3) | constructor(n){n&&(this._subscribe=n)}
method lift (line 3) | lift(n){let r=new e;return r.source=this,r.operator=n,r}
method subscribe (line 3) | subscribe(n,r,o){let i=HD(n)?n:new gt(n,r,o);return Yr(()=>{let{operat...
method _trySubscribe (line 3) | _trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}
method forEach (line 3) | forEach(n,r){return r=Em(r),new r((o,i)=>{let s=new gt({next:a=>{try{n...
method _subscribe (line 3) | _subscribe(n){var r;return(r=this.source)===null||r===void 0?void 0:r....
method [Kr] (line 3) | [Kr](){return this}
method pipe (line 3) | pipe(...n){return Au(n)(this)}
method toPromise (line 3) | toPromise(n){return n=Em(n),new n((r,o)=>{let i;this.subscribe(s=>i=s,...
method constructor (line 3) | constructor(){super(),this.closed=!1,this.currentObservers=null,this.o...
method lift (line 3) | lift(n){let r=new ra(this,this);return r.operator=n,r}
method _throwIfClosed (line 3) | _throwIfClosed(){if(this.closed)throw new Dm}
method next (line 3) | next(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.current...
method error (line 3) | error(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasErr...
method complete (line 3) | complete(){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isSt...
method unsubscribe (line 3) | unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.curren...
method observed (line 3) | get observed(){var n;return((n=this.observers)===null||n===void 0?void...
method _trySubscribe (line 3) | _trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}
method _subscribe (line 3) | _subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuse...
method _innerSubscribe (line 3) | _innerSubscribe(n){let{hasError:r,isStopped:o,observers:i}=this;return...
method _checkFinalizedStatuses (line 3) | _checkFinalizedStatuses(n){let{hasError:r,thrownError:o,isStopped:i}=t...
method asObservable (line 3) | asObservable(){let n=new P;return n.source=this,n}
method constructor (line 7) | constructor(n,r){this.view=n,this.node=r}
method hasPendingTasks (line 7) | get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}
method hasPendingTasksObservable (line 7) | get hasPendingTasksObservable(){return this.destroyed?new P(n=>{n.next...
method add (line 7) | add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0...
method has (line 7) | has(n){return this.pendingTasks.has(n)}
method remove (line 7) | remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this...
method ngOnDestroy (line 7) | ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pen...
method add (line 7) | add(){let n=this.internalPendingTasks.add();return()=>{this.internalPe...
method run (line 7) | run(n){let r=this.add();n().catch(this.errorHandler).finally(r)}
method constructor (line 7) | constructor(n){this.nativeElement=n}
method constructor (line 7) | constructor(n,r,o){this._declarationLView=n,this._declarationTContaine...
method ssrId (line 7) | get ssrId(){return this._declarationTContainer.tView?.ssrId||null}
method createEmbeddedView (line 7) | createEmbeddedView(n,r){return this.createEmbeddedViewImpl(n,r)}
method createEmbeddedViewImpl (line 7) | createEmbeddedViewImpl(n,r,o){let i=Bi(this._declarationLView,this._de...
method constructor (line 7) | constructor(n){this._injector=n}
method getOrCreateStandaloneInjector (line 7) | getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this...
method ngOnDestroy (line 7) | ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&...
method execute (line 7) | execute(){this.impl?.execute()}
method constructor (line 7) | constructor(){h($n,{optional:!0})}
method execute (line 7) | execute(){let n=this.sequences.size>0;n&&W(16),this.executing=!0;for(l...
method register (line 7) | register(n){let{view:r}=n;r!==void 0?((r[yr]??=[]).push(n),Pn(r),r[A]|...
method addSequence (line 7) | addSequence(n){this.sequences.add(n),this.scheduler.notify(7)}
method unregister (line 7) | unregister(n){this.executing&&this.sequences.has(n)?(n.erroredOrDestro...
method maybeTrace (line 7) | maybeTrace(n,r){return r?r.run(Lc.AFTER_NEXT_RENDER,n):n()}
method log (line 7) | log(n){console.log(n)}
method warn (line 7) | warn(n){console.warn(n)}
method constructor (line 7) | constructor(){}
method runInitializers (line 7) | runInitializers(){if(this.initialized)return;let n=[];for(let o of thi...
method allViews (line 7) | get allViews(){return[...(this.includeAllTestViews?this.allTestViews:t...
method destroyed (line 7) | get destroyed(){return this._destroyed}
method isStable (line 7) | get isStable(){return this.internalPendingTask.hasPendingTasksObservab...
method constructor (line 7) | constructor(){h($n,{optional:!0})}
method whenStable (line 7) | whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({n...
method injector (line 7) | get injector(){return this._injector}
method bootstrap (line 7) | bootstrap(n,r){return this.bootstrapImpl(n,r)}
method bootstrapImpl (line 7) | bootstrapImpl(n,r,o=ae.NULL){return this._injector.get(B).run(()=>{W(1...
method tick (line 7) | tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}
method _tick (line 7) | _tick(){W(12),this.tracingSnapshot!==null?this.tracingSnapshot.run(Lc....
method synchronize (line 7) | synchronize(){this._rendererFactory===null&&!this._injector.destroyed&...
method synchronizeOnce (line 7) | synchronizeOnce(){this.dirtyFlags&16&&(this.dirtyFlags&=-17,this.rootE...
method syncDirtyFlagsWithViews (line 7) | syncDirtyFlagsWithViews(){if(this.allViews.some(({_lView:n})=>_i(n))){...
method attachView (line 7) | attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}
method detachView (line 7) | detachView(n){let r=n;xi(this._views,r),r.detachFromAppRef()}
method _loadComponent (line 7) | _loadComponent(n){this.attachView(n.hostView);try{this.tick()}catch(o)...
method ngOnDestroy (line 7) | ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n...
method onDestroy (line 7) | onDestroy(n){return this._destroyListeners.push(n),()=>xi(this._destro...
method destroy (line 7) | destroy(){if(this._destroyed)throw new _(406,!1);let n=this._injector;...
method viewCount (line 7) | get viewCount(){return this._views.length}
method compileModuleSync (line 7) | compileModuleSync(n){return new gc(n)}
method compileModuleAsync (line 7) | compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}
method compileModuleAndAllComponentsSync (line 7) | compileModuleAndAllComponentsSync(n){let r=this.compileModuleSync(n),o...
method compileModuleAndAllComponentsAsync (line 7) | compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.comp...
method clearCache (line 7) | clearCache(){}
method clearCacheFor (line 7) | clearCacheFor(n){}
method getModuleId (line 7) | getModuleId(n){}
method initialize (line 7) | initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmp...
method ngOnDestroy (line 7) | ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}
method initialize (line 7) | initialize(){if(this.initialized)return;this.initialized=!0;let n=null...
method ngOnDestroy (line 7) | ngOnDestroy(){this.subscription.unsubscribe()}
method constructor (line 7) | constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe((...
method notify (line 7) | notify(n){if(!this.zonelessEnabled&&n===5)return;let r=!1;switch(n){ca...
method shouldScheduleTick (line 7) | shouldScheduleTick(n){return!(this.disableScheduling&&!n||this.appRef....
method tick (line 7) | tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRe...
method ngOnDestroy (line 7) | ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}
method cleanup (line 7) | cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this...
method constructor (line 7) | constructor(n){this.factories=n}
method create (line 7) | static create(n,r){if(r!=null){let o=r.factories.slice();n=n.concat(o)...
method extend (line 7) | static extend(n){return{provide:e,useFactory:r=>e.create(n,r||Bb()),de...
method find (line 7) | find(n){let r=this.factories.find(o=>o.supports(n));if(r!=null)return ...
method historyGo (line 7) | historyGo(n){throw new Error("")}
method constructor (line 7) | constructor(){super(),this._location=window.location,this._history=win...
method getBaseHrefFromDOM (line 7) | getBaseHrefFromDOM(){return gn().getBaseHref(this._doc)}
method onPopState (line 7) | onPopState(n){let r=gn().getGlobalEventTarget(this._doc,"window");retu...
method onHashChange (line 7) | onHashChange(n){let r=gn().getGlobalEventTarget(this._doc,"window");re...
method href (line 7) | get href(){return this._location.href}
method protocol (line 7) | get protocol(){return this._location.protocol}
method hostname (line 7) | get hostname(){return this._location.hostname}
method port (line 7) | get port(){return this._location.port}
method pathname (line 7) | get pathname(){return this._location.pathname}
method search (line 7) | get search(){return this._location.search}
method hash (line 7) | get hash(){return this._location.hash}
method pathname (line 7) | set pathname(n){this._location.pathname=n}
method pushState (line 7) | pushState(n,r,o){this._history.pushState(n,r,o)}
method replaceState (line 7) | replaceState(n,r,o){this._history.replaceState(n,r,o)}
method forward (line 7) | forward(){this._history.forward()}
method back (line 7) | back(){this._history.back()}
method historyGo (line 7) | historyGo(n=0){this._history.go(n)}
method getState (line 7) | getState(){return this._history.state}
method historyGo (line 7) | historyGo(n){throw new Error("")}
method constructor (line 7) | constructor(n,r){super(),this._platformLocation=n,this._baseHref=r??th...
method ngOnDestroy (line 7) | ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListene...
method onPopState (line 7) | onPopState(n){this._removeListenerFns.push(this._platformLocation.onPo...
method getBaseHref (line 7) | getBaseHref(){return this._baseHref}
method prepareExternalUrl (line 7) | prepareExternalUrl(n){return Xb(this._baseHref,n)}
method path (line 7) | path(n=!1){let r=this._platformLocation.pathname+Wn(this._platformLoca...
method pushState (line 7) | pushState(n,r,o,i){let s=this.prepareExternalUrl(o+Wn(i));this._platfo...
method replaceState (line 7) | replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+Wn(i));this._pla...
method forward (line 7) | forward(){this._platformLocation.forward()}
method back (line 7) | back(){this._platformLocation.back()}
method getState (line 7) | getState(){return this._platformLocation.getState()}
method historyGo (line 7) | historyGo(n=0){this._platformLocation.historyGo?.(n)}
method constructor (line 7) | constructor(n){this._locationStrategy=n;let r=this._locationStrategy.g...
method ngOnDestroy (line 7) | ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChan...
method path (line 7) | path(n=!1){return this.normalize(this._locationStrategy.path(n))}
method getState (line 7) | getState(){return this._locationStrategy.getState()}
method isCurrentPathEqualTo (line 7) | isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+Wn(r))}
method normalize (line 7) | normalize(n){return e.stripTrailingSlash(u0(this._basePath,Yb(n)))}
method prepareExternalUrl (line 7) | prepareExternalUrl(n){return n&&n[0]!=="/"&&(n="/"+n),this._locationSt...
method go (line 7) | go(n,r="",o=null){this._locationStrategy.pushState(o,"",n,r),this._not...
method replaceState (line 7) | replaceState(n,r="",o=null){this._locationStrategy.replaceState(o,"",n...
method forward (line 7) | forward(){this._locationStrategy.forward()}
method back (line 7) | back(){this._locationStrategy.back()}
method historyGo (line 7) | historyGo(n=0){this._locationStrategy.historyGo?.(n)}
method onUrlChange (line 7) | onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChange...
method _notifyUrlChangeListeners (line 7) | _notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(o=>...
method subscribe (line 7) | subscribe(n,r,o){return this._subject.subscribe({next:n,error:r??void ...
method constructor (line 7) | constructor(n,r){this._ngEl=n,this._renderer=r}
method klass (line 7) | set klass(n){this.initialClasses=n!=null?n.trim().split(tp):o_}
method ngClass (line 7) | set ngClass(n){this.rawClass=typeof n=="string"?n.trim().split(tp):n}
method ngDoCheck (line 7) | ngDoCheck(){for(let r of this.initialClasses)this._updateState(r,!0);l...
method _updateState (line 7) | _updateState(n,r){let o=this.stateMap.get(n);o!==void 0?(o.enabled!==r...
method _applyStateDiff (line 7) | _applyStateDiff(){for(let n of this.stateMap){let r=n[0],o=n[1];o.chan...
method _toggleClass (line 7) | _toggleClass(n,r){n=n.trim(),n.length>0&&n.split(tp).forEach(o=>{r?thi...
method constructor (line 7) | constructor(n){this._viewContainerRef=n}
method ngOnChanges (line 7) | ngOnChanges(n){if(this._shouldRecreateView(n)){let r=this._viewContain...
method _shouldRecreateView (line 7) | _shouldRecreateView(n){return!!n.ngTemplateOutlet||!!n.ngTemplateOutle...
method _createContextForwardProxy (line 7) | _createContextForwardProxy(){return new Proxy({},{set:(n,r,o)=>this.ng...
method constructor (line 7) | constructor(n,r,o){this.locale=n,this.defaultTimezone=r,this.defaultOp...
method transform (line 7) | transform(n,r,o,i){if(n==null||n===""||n!==n)return null;try{let s=r??...
method constructor (line 7) | constructor(n,r="USD"){this._locale=n,this._defaultCurrencyCode=r}
method transform (line 7) | transform(n,r=this._defaultCurrencyCode,o="symbol",i,s){if(!B0(n))retu...
method constructor (line 7) | constructor(n,r){this._zone=r,n.forEach(o=>{o.manager=this}),this._plu...
method addEventListener (line 7) | addEventListener(n,r,o,i){return this._findPluginFor(r).addEventListen...
method getZone (line 7) | getZone(){return this._zone}
method _findPluginFor (line 7) | _findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;i...
method constructor (line 7) | constructor(n,r,o,i={}){this.doc=n,this.appId=r,this.nonce=o,this.isSe...
method addStyles (line 7) | addStyles(n,r){for(let o of n)this.addUsage(o,this.inline,S_);r?.forEa...
method removeStyles (line 7) | removeStyles(n,r){for(let o of n)this.removeUsage(o,this.inline);r?.fo...
method addUsage (line 7) | addUsage(n,r,o){let i=r.get(n);i?i.usage++:r.set(n,{usage:1,elements:[...
method removeUsage (line 7) | removeUsage(n,r){let o=r.get(n);o&&(o.usage--,o.usage<=0&&(T_(o.elemen...
method ngOnDestroy (line 7) | ngOnDestroy(){for(let[,{elements:n}]of[...this.inline,...this.external...
method addHost (line 7) | addHost(n){this.hosts.add(n);for(let[r,{elements:o}]of this.inline)o.p...
method removeHost (line 7) | removeHost(n){this.hosts.delete(n)}
method addElement (line 7) | addElement(n,r){return this.nonce&&r.setAttribute("nonce",this.nonce),...
method constructor (line 7) | constructor(n,r,o,i,s,a,c,l=null,u=null){this.eventManager=n,this.shar...
method createRenderer (line 7) | createRenderer(n,r){if(!n||!r)return this.defaultRenderer;let o=this.g...
method getOrCreateRenderer (line 7) | getOrCreateRenderer(n,r){let o=this.rendererByCompId,i=o.get(r.id);if(...
method ngOnDestroy (line 7) | ngOnDestroy(){this.rendererByCompId.clear()}
method componentReplaced (line 7) | componentReplaced(n){this.rendererByCompId.delete(n)}
method build (line 7) | build(){return new XMLHttpRequest}
method constructor (line 7) | constructor(n){super(n)}
method supports (line 7) | supports(n){return!0}
method addEventListener (line 7) | addEventListener(n,r,o,i){return n.addEventListener(r,o,i),()=>this.re...
method removeEventListener (line 7) | removeEventListener(n,r,o,i){return n.removeEventListener(r,o,i)}
method constructor (line 7) | constructor(n){super(n)}
method supports (line 7) | supports(n){return e.parseEventName(n)!=null}
method addEventListener (line 7) | addEventListener(n,r,o,i){let s=e.parseEventName(r),a=e.eventCallback(...
method parseEventName (line 7) | static parseEventName(n){let r=n.toLowerCase().split("."),o=r.shift();...
method matchEventFullKeyCode (line 7) | static matchEventFullKeyCode(n,r){let o=tx[n.key]||n.key,i="";return r...
method eventCallback (line 7) | static eventCallback(n,r,o){return i=>{e.matchEventFullKeyCode(i,n)&&o...
method _normalizeKey (line 7) | static _normalizeKey(n){return n==="esc"?"escape":n}
method constructor (line 8) | constructor(n){this.handler=n}
method request (line 8) | request(n,r,o={}){let i;if(n instanceof Ro)i=n;else{let c;o.headers in...
method delete (line 8) | delete(n,r={}){return this.request("DELETE",n,r)}
method get (line 8) | get(n,r={}){return this.request("GET",n,r)}
method head (line 8) | head(n,r={}){return this.request("HEAD",n,r)}
method jsonp (line 8) | jsonp(n,r){return this.request("JSONP",n,{params:new Mt().append(r,"JS...
method options (line 8) | options(n,r={}){return this.request("OPTIONS",n,r)}
method patch (line 8) | patch(n,r,o={}){return this.request("PATCH",n,dp(o,r))}
method post (line 8) | post(n,r,o={}){return this.request("POST",n,dp(o,r))}
method put (line 8) | put(n,r,o={}){return this.request("PUT",n,dp(o,r))}
method constructor (line 8) | constructor(n,r){super(),this.backend=n,this.injector=r}
method handle (line 8) | handle(n){if(this.chain===null){let r=Array.from(new Set([...this.inje...
method constructor (line 8) | constructor(n){this.xhrFactory=n}
method handle (line 8) | handle(n){if(n.method==="JSONP")throw new _(-2800,!1);n.keepalive;let ...
method constructor (line 8) | constructor(n,r){this.doc=n,this.cookieName=r}
method getToken (line 8) | getToken(){let n=this.doc.cookie||"";return n!==this.lastCookieString&...
method constructor (line 8) | constructor(n){this._doc=n}
method getTitle (line 8) | getTitle(){return this._doc.title}
method setTitle (line 8) | setTitle(n){this._doc.title=n||""}
method constructor (line 8) | constructor(n){super(),this._doc=n}
method sanitize (line 8) | sanitize(n,r){if(r==null)return null;switch(n){case Tt.NONE:return r;c...
method bypassSecurityTrustHtml (line 8) | bypassSecurityTrustHtml(n){return zf(n)}
method bypassSecurityTrustStyle (line 8) | bypassSecurityTrustStyle(n){return Wf(n)}
method bypassSecurityTrustScript (line 8) | bypassSecurityTrustScript(n){return Gf(n)}
method bypassSecurityTrustUrl (line 8) | bypassSecurityTrustUrl(n){return qf(n)}
method bypassSecurityTrustResourceUrl (line 8) | bypassSecurityTrustResourceUrl(n){return Zf(n)}
method constructor (line 8) | constructor(n){this.rootInjector=n}
method onChildOutletCreated (line 8) | onChildOutletCreated(n,r){let o=this.getOrCreateContext(n);o.outlet=r,...
method onChildOutletDestroyed (line 8) | onChildOutletDestroyed(n){let r=this.getContext(n);r&&(r.outlet=null,r...
method onOutletDeactivated (line 8) | onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}
method onOutletReAttached (line 8) | onOutletReAttached(n){this.contexts=n}
method getOrCreateContext (line 8) | getOrCreateContext(n){let r=this.getContext(n);return r||(r=new Ml(thi...
method getContext (line 8) | getContext(n){return this.contexts.get(n)||null}
method activatedComponentRef (line 8) | get activatedComponentRef(){return this.activated}
method ngOnChanges (line 8) | ngOnChanges(n){if(n.name){let{firstChange:r,previousValue:o}=n.name;if...
method ngOnDestroy (line 8) | ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentCo...
method isTrackedInParentContexts (line 8) | isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?...
method ngOnInit (line 8) | ngOnInit(){this.initializeOutletWithName()}
method initializeOutletWithName (line 8) | initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated...
method isActivated (line 8) | get isActivated(){return!!this.activated}
method component (line 8) | get component(){if(!this.activated)throw new _(4012,!1);return this.ac...
method activatedRoute (line 8) | get activatedRoute(){if(!this.activated)throw new _(4012,!1);return th...
method activatedRouteData (line 8) | get activatedRouteData(){return this._activatedRoute?this._activatedRo...
method detach (line 8) | detach(){if(!this.activated)throw new _(4012,!1);this.location.detach(...
method attach (line 8) | attach(n,r){this.activated=n,this._activatedRoute=r,this.location.inse...
method deactivate (line 8) | deactivate(){if(this.activated){let n=this.component;this.activated.de...
method activateWith (line 8) | activateWith(n,r){if(this.isActivated)throw new _(4013,!1);this._activ...
method buildTitle (line 8) | buildTitle(n){let r,o=n.root;for(;o!==void 0;)r=this.getResolvedTitleF...
method getResolvedTitleForRoute (line 8) | getResolvedTitleForRoute(n){return n.data[Is]}
method constructor (line 8) | constructor(n){super(),this.title=n}
method updateTitle (line 8) | updateTitle(n){let r=this.buildTitle(n);r!==void 0&&this.title.setTitl...
method loadComponent (line 8) | loadComponent(n){if(this.componentLoaders.get(n))return this.component...
method loadChildren (line 8) | loadChildren(n,r){if(this.childrenLoaders.get(r))return this.childrenL...
method shouldProcessUrl (line 8) | shouldProcessUrl(n){return!0}
method extract (line 8) | extract(n){return n}
method merge (line 8) | merge(n,r){return n}
method hasRequestedNavigation (line 8) | get hasRequestedNavigation(){return this.navigationId!==0}
method constructor (line 8) | constructor(){let n=o=>this.events.next(new Dl(o)),r=o=>this.events.ne...
method complete (line 8) | complete(){this.transitions?.complete()}
method handleNavigationRequest (line 8) | handleNavigationRequest(n){let r=++this.navigationId;this.transitions?...
method setupNavigations (line 8) | setupNavigations(n){return this.transitions=new _e(null),this.transiti...
method cancelNavigationTransition (line 8) | cancelNavigationTransition(n,r,o){let i=new Zt(n.id,this.urlSerializer...
method isUpdatingInternalState (line 8) | isUpdatingInternalState(){return this.currentTransition?.extractedUrl....
method isUpdatedBrowserUrl (line 8) | isUpdatedBrowserUrl(){let n=this.urlHandlingStrategy.extract(this.urlS...
method getCurrentUrlTree (line 8) | getCurrentUrlTree(){return this.currentUrlTree}
method getRawUrlTree (line 8) | getRawUrlTree(){return this.rawUrlTree}
method createBrowserPath (line 8) | createBrowserPath({finalUrl:n,initialUrl:r,targetBrowserUrl:o}){let i=...
method commitTransition (line 8) | commitTransition({targetRouterState:n,finalUrl:r,initialUrl:o}){r&&n?(...
method getRouterState (line 8) | getRouterState(){return this.routerState}
method updateStateMemento (line 8) | updateStateMemento(){this.stateMemento=this.createStateMemento()}
method createStateMemento (line 8) | createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:...
method resetInternalState (line 8) | resetInternalState({finalUrl:n}){this.routerState=this.stateMemento.ro...
method restoredState (line 8) | restoredState(){return this.location.getState()}
method browserPageId (line 8) | get browserPageId(){return this.canceledNavigationResolution!=="comput...
method registerNonRouterCurrentEntryChangeListener (line 8) | registerNonRouterCurrentEntryChangeListener(n){return this.location.su...
method handleRouterEvent (line 8) | handleRouterEvent(n,r){n instanceof jr?this.updateStateMemento():n ins...
method setBrowserUrl (line 8) | setBrowserUrl(n,{extras:r,id:o}){let{replaceUrl:i,state:s}=r;if(this.l...
method restoreHistory (line 8) | restoreHistory(n,r=!1){if(this.canceledNavigationResolution==="compute...
method resetUrlToCurrentUrlTree (line 8) | resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializ...
method generateNgRouterState (line 8) | generateNgRouterState(n,r){return this.canceledNavigationResolution===...
method currentUrlTree (line 8) | get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}
method rawUrlTree (line 8) | get rawUrlTree(){return this.stateManager.getRawUrlTree()}
method events (line 8) | get events(){return this._events}
method routerState (line 8) | get routerState(){return this.stateManager.getRouterState()}
method constructor (line 8) | constructor(){this.resetConfig(this.config),this.navigationTransitions...
method subscribeToNavigationEvents (line 8) | subscribeToNavigationEvents(){let n=this.navigationTransitions.events....
method resetRootComponentType (line 8) | resetRootComponentType(n){this.routerState.root.component=n,this.navig...
method initialNavigation (line 8) | initialNavigation(){this.setUpLocationChangeListener(),this.navigation...
method setUpLocationChangeListener (line 8) | setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscrip...
method navigateToSyncWithBrowser (line 8) | navigateToSyncWithBrowser(n,r,o){let i={replaceUrl:!0},s=o?.navigation...
method url (line 8) | get url(){return this.serializeUrl(this.currentUrlTree)}
method getCurrentNavigation (line 8) | getCurrentNavigation(){return this.navigationTransitions.currentNaviga...
method lastSuccessfulNavigation (line 8) | get lastSuccessfulNavigation(){return this.navigationTransitions.lastS...
method resetConfig (line 8) | resetConfig(n){this.config=n.map(Fp),this.navigated=!1}
method ngOnDestroy (line 8) | ngOnDestroy(){this.dispose()}
method dispose (line 8) | dispose(){this._events.unsubscribe(),this.navigationTransitions.comple...
method createUrlTree (line 8) | createUrlTree(n,r={}){let{relativeTo:o,queryParams:i,fragment:s,queryP...
method navigateByUrl (line 8) | navigateByUrl(n,r={skipLocationChange:!1}){let o=Zn(n)?n:this.parseUrl...
method navigate (line 8) | navigate(n,r={skipLocationChange:!1}){return cA(n),this.navigateByUrl(...
method serializeUrl (line 8) | serializeUrl(n){return this.urlSerializer.serialize(n)}
method parseUrl (line 8) | parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.u...
method isActive (line 8) | isActive(n,r){let o;if(r===!0?o=v({},sA):r===!1?o=v({},aA):o=r,Zn(n))r...
method removeEmptyProps (line 8) | removeEmptyProps(n){return Object.entries(n).reduce((r,[o,i])=>(i!=nul...
method scheduleNavigation (line 8) | scheduleNavigation(n,r,o,i,s){if(this.disposed)return Promise.resolve(...
method href (line 8) | get href(){return zc(this.reactiveHref)}
method href (line 8) | set href(n){this.reactiveHref.set(n)}
method constructor (line 8) | constructor(n,r,o,i,s,a){this.router=n,this.route=r,this.tabIndexAttri...
method subscribeToNavigationEventsIfNecessary (line 8) | subscribeToNavigationEventsIfNecessary(){if(this.subscription!==void 0...
method setTabIndexIfNotOnNativeEl (line 8) | setTabIndexIfNotOnNativeEl(n){this.tabIndexAttribute!=null||this.isAnc...
method ngOnChanges (line 8) | ngOnChanges(n){this.isAnchorElement&&(this.updateHref(),this.subscribe...
method routerLink (line 8) | set routerLink(n){n==null?(this.routerLinkInput=null,this.setTabIndexI...
method onClick (line 8) | onClick(n,r,o,i,s){let a=this.urlTree;if(a===null||this.isAnchorElemen...
method ngOnDestroy (line 8) | ngOnDestroy(){this.subscription?.unsubscribe()}
method updateHref (line 8) | updateHref(){let n=this.urlTree;this.reactiveHref.set(n!==null&&this.l...
method applyAttributeValue (line 8) | applyAttributeValue(n,r){let o=this.renderer,i=this.el.nativeElement;r...
method urlTree (line 8) | get urlTree(){return this.routerLinkInput===null?null:Zn(this.routerLi...
method isActive (line 8) | get isActive(){return this._isActive}
method constructor (line 8) | constructor(n,r,o,i,s){this.router=n,this.element=r,this.renderer=o,th...
method ngAfterContentInit (line 8) | ngAfterContentInit(){C(this.links.changes,C(null)).pipe(In()).subscrib...
method subscribeToEachLinkOnChanges (line 8) | subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsu...
method routerLinkActive (line 8) | set routerLinkActive(n){let r=Array.isArray(n)?n:n.split(" ");this.cla...
method ngOnChanges (line 8) | ngOnChanges(n){this.update()}
method ngOnDestroy (line 8) | ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInp...
method update (line 8) | update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let ...
method isLinkActive (line 8) | isLinkActive(n){let r=dA(this.routerLinkActiveOptions)?this.routerLink...
method hasActiveLinks (line 8) | hasActiveLinks(){let n=this.isLinkActive(this.router);return this.link...
method constructor (line 8) | constructor(){}
method mostRecentModality (line 8) | get mostRecentModality(){return this._modality.value}
method constructor (line 8) | constructor(){let n=h(B),r=h(H),o=h(UE,{optional:!0});if(this._options...
method ngOnDestroy (line 8) | ngOnDestroy(){this._modality.complete(),this._listenerCleanups?.forEac...
method constructor (line 8) | constructor(){let n=h(zE,{optional:!0});this._detectionMode=n?.detecti...
method monitor (line 8) | monitor(n,r=!1){let o=Kt(n);if(!this._platform.isBrowser||o.nodeType!=...
method stopMonitoring (line 8) | stopMonitoring(n){let r=Kt(n),o=this._elementInfo.get(r);o&&(o.subject...
method focusVia (line 8) | focusVia(n,r,o){let i=Kt(n),s=this._getDocument().activeElement;i===s?...
method ngOnDestroy (line 8) | ngOnDestroy(){this._elementInfo.forEach((n,r)=>this.stopMonitoring(r))}
method _getDocument (line 8) | _getDocument(){return this._document||document}
method _getWindow (line 8) | _getWindow(){return this._getDocument().defaultView||window}
method _getFocusOrigin (line 8) | _getFocusOrigin(n){return this._origin?this._originFromTouchInteractio...
method _shouldBeAttributedToTouch (line 8) | _shouldBeAttributedToTouch(n){return this._detectionMode===Ns.EVENTUAL...
method _setClasses (line 8) | _setClasses(n,r){n.classList.toggle("cdk-focused",!!r),n.classList.tog...
method _setOrigin (line 8) | _setOrigin(n,r=!1){this._ngZone.runOutsideAngular(()=>{if(this._origin...
method _onFocus (line 8) | _onFocus(n,r){let o=this._elementInfo.get(r),i=At(n);!o||!o.checkChild...
method _onBlur (line 8) | _onBlur(n,r){let o=this._elementInfo.get(r);!o||o.checkChildren&&n.rel...
method _emitOrigin (line 8) | _emitOrigin(n,r){n.subject.observers.length&&this._ngZone.run(()=>n.su...
method _registerGlobalListeners (line 8) | _registerGlobalListeners(n){if(!this._platform.isBrowser)return;let r=...
method _removeGlobalListeners (line 8) | _removeGlobalListeners(n){let r=n.rootNode;if(this._rootNodeFocusListe...
method _originChanged (line 8) | _originChanged(n,r,o){this._setClasses(n,r),this._emitOrigin(o,r),this...
method _getClosestElementsInfo (line 8) | _getClosestElementsInfo(n){let r=[];return this._elementInfo.forEach((...
method _isLastInteractionFromInputLabel (line 8) | _isLastInteractionFromInputLabel(n){let{_mostRecentTarget:r,mostRecent...
method constructor (line 8) | constructor(){}
method focusOrigin (line 8) | get focusOrigin(){return this._focusOrigin}
method ngAfterViewInit (line 8) | ngAfterViewInit(){let n=this._elementRef.nativeElement;this._monitorSu...
method ngOnDestroy (line 8) | ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this...
method load (line 8) | load(n){let r=this._appRef=this._appRef||this._injector.get(zt),o=Ul.g...
method constructor (line 9) | constructor(){this._matchMedia=this._platform.isBrowser&&window.matchM...
method matchMedia (line 9) | matchMedia(n){return(this._platform.WEBKIT||this._platform.BLINK)&&EA(...
method constructor (line 9) | constructor(){}
method ngOnDestroy (line 9) | ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complet...
method isMatched (line 9) | isMatched(n){return GE(zp(n)).some(o=>this._registerQuery(o).mql.match...
method observe (line 9) | observe(n){let o=GE(zp(n)).map(s=>this._registerQuery(s).observable),i...
method _registerQuery (line 9) | _registerQuery(n){if(this._queries.has(n))return this._queries.get(n);...
method create (line 9) | create(n){return typeof MutationObserver>"u"?null:new MutationObserver...
method constructor (line 9) | constructor(){}
method ngOnDestroy (line 9) | ngOnDestroy(){this._observedElements.forEach((n,r)=>this._cleanupObser...
method observe (line 9) | observe(n){let r=Kt(n);return new P(o=>{let s=this._observeElement(r)....
method _observeElement (line 9) | _observeElement(n){return this._ngZone.runOutsideAngular(()=>{if(this....
method _unobserveElement (line 9) | _unobserveElement(n){this._observedElements.has(n)&&(this._observedEle...
method _cleanupObserver (line 9) | _cleanupObserver(n){if(this._observedElements.has(n)){let{observer:r,s...
method disabled (line 9) | get disabled(){return this._disabled}
method disabled (line 9) | set disabled(n){this._disabled=n,this._disabled?this._unsubscribe():th...
method debounce (line 9) | get debounce(){return this._debounce}
method debounce (line 9) | set debounce(n){this._debounce=Hp(n),this._subscribe()}
method constructor (line 9) | constructor(){}
method ngAfterContentInit (line 9) | ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this....
method ngOnDestroy (line 9) | ngOnDestroy(){this._unsubscribe()}
method _subscribe (line 9) | _subscribe(){this._unsubscribe();let n=this._contentObserver.observe(t...
method _unsubscribe (line 9) | _unsubscribe(){this._currentSubscription?.unsubscribe()}
method constructor (line 9) | constructor(){}
method isDisabled (line 9) | isDisabled(n){return n.hasAttribute("disabled")}
method isVisible (line 9) | isVisible(n){return CA(n)&&getComputedStyle(n).visibility==="visible"}
method isTabbable (line 9) | isTabbable(n){if(!this._platform.isBrowser)return!1;let r=IA(OA(n));if...
method isFocusable (line 9) | isFocusable(n,r){return NA(n)&&!this.isDisabled(n)&&(r?.ignoreVisibili...
method constructor (line 9) | constructor(){h(En).load(Vl)}
method create (line 9) | create(n,r=!1){return new $l(n,this._checker,this._ngZone,this._docume...
method constructor (line 9) | constructor(){let n=h(tD,{optional:!0});this._liveElement=n||this._cre...
method announce (line 9) | announce(n,...r){let o=this._defaultOptions,i,s;return r.length===1&&t...
method clear (line 9) | clear(){this._liveElement&&(this._liveElement.textContent="")}
method ngOnDestroy (line 9) | ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.r...
method _createLiveElement (line 9) | _createLiveElement(){let n="cdk-live-announcer-element",r=this._docume...
method _exposeAnnouncerToModals (line 9) | _exposeAnnouncerToModals(n){let r=this._document.querySelectorAll('bod...
method constructor (line 9) | constructor(){this._breakpointSubscription=h(Wp).observe("(forced-colo...
method getHighContrastMode (line 9) | getHighContrastMode(){if(!this._platform.isBrowser)return Yn.NONE;let ...
method ngOnDestroy (line 9) | ngOnDestroy(){this._breakpointSubscription.unsubscribe()}
method _applyBodyHighContrastModeCssClasses (line 9) | _applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContras...
method constructor (line 9) | constructor(){h(zl)._applyBodyHighContrastModeCssClasses()}
method getId (line 9) | getId(n){return this._appId!=="ng"&&(n+=this._appId),qp.hasOwnProperty...
method constructor (line 9) | constructor(){h(En).load(Vl),this._id=h(Bn)+"-"+Qp++}
method describe (line 9) | describe(n,r,o){if(!this._canBeDescribed(n,r))return;let i=Kp(r,o);typ...
method removeDescription (line 9) | removeDescription(n,r,o){if(!r||!this._isElementNode(n))return;let i=K...
method ngOnDestroy (line 9) | ngOnDestroy(){let n=this._document.querySelectorAll(`[${Gl}="${this._i...
method _createMessageElement (line 9) | _createMessageElement(n,r){let o=this._document.createElement("div");i...
method _deleteMessageElement (line 9) | _deleteMessageElement(n){this._messageRegistry.get(n)?.messageElement?...
method _createMessagesContainer (line 9) | _createMessagesContainer(){if(this._messagesContainer)return;let n="cd...
method _removeCdkDescribedByReferenceIds (line 9) | _removeCdkDescribedByReferenceIds(n){let r=ql(n,"aria-describedby").fi...
method _addMessageReference (line 9) | _addMessageReference(n,r){let o=this._messageRegistry.get(r);UA(n,"ari...
method _removeMessageReference (line 9) | _removeMessageReference(n,r){let o=this._messageRegistry.get(r);o.refe...
method _isElementDescribedByMessage (line 9) | _isElementDescribedByMessage(n,r){let o=ql(n,"aria-describedby"),i=thi...
method _canBeDescribed (line 9) | _canBeDescribed(n,r){if(!this._isElementNode(n))return!1;if(r&&typeof ...
method _isElementNode (line 9) | _isElementNode(n){return n.nodeType===this._document.ELEMENT_NODE}
method disabled (line 10) | get disabled(){return this._disabled}
method disabled (line 10) | set disabled(n){n&&this.fadeOutAllNonPersistent(),this._disabled=n,thi...
method trigger (line 10) | get trigger(){return this._trigger||this._elementRef.nativeElement}
method trigger (line 10) | set trigger(n){this._trigger=n,this._setupTriggerEventsIfEnabled()}
method constructor (line 10) | constructor(){let n=h(B),r=h(ze),o=h(em,{optional:!0}),i=h(ae);this._g...
method ngOnInit (line 10) | ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}
method ngOnDestroy (line 10) | ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}
method fadeOutAll (line 10) | fadeOutAll(){this._rippleRenderer.fadeOutAll()}
method fadeOutAllNonPersistent (line 10) | fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}
method rippleConfig (line 10) | get rippleConfig(){return{centered:this.centered,radius:this.radius,co...
method rippleDisabled (line 10) | get rippleDisabled(){return this.disabled||!!this._globalOptions.disab...
method _setupTriggerEventsIfEnabled (line 10) | _setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&th...
method launch (line 10) | launch(n,r=0,o){return typeof n=="number"?this._rippleRenderer.fadeInR...
method constructor (line 10) | constructor(){let n=h(It).createRenderer(null,null);this._eventCleanup...
method ngOnDestroy (line 10) | ngOnDestroy(){let n=this._hosts.keys();for(let r of n)this.destroyRipp...
method configureRipple (line 10) | configureRipple(n,r){n.setAttribute(tm,this._globalRippleOptions?.name...
method setDisabled (line 10) | setDisabled(n,r){let o=this._hosts.get(n);o?(o.target.rippleDisabled=r...
method _createRipple (line 10) | _createRipple(n){if(!this._document||this._hosts.has(n))return;n.query...
method destroyRipple (line 10) | destroyRipple(n){let r=this._hosts.get(n);r&&(r.renderer._removeTrigge...
method disableRipple (line 11) | get disableRipple(){return this._disableRipple}
method disableRipple (line 11) | set disableRipple(n){this._disableRipple=n,this._updateRippleDisabled()}
method disabled (line 11) | get disabled(){return this._disabled}
method disabled (line 11) | set disabled(n){this._disabled=n,this._updateRippleDisabled()}
method _tabindex (line 11) | set _tabindex(n){this.tabIndex=n}
method constructor (line 11) | constructor(){h(En).load(mD);let n=this._elementRef.nativeElement;this...
method ngAfterViewInit (line 11) | ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0),this...
method ngOnDestroy (line 11) | ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring...
method focus (line 11) | focus(n="program",r){n?this._focusMonitor.focusVia(this._elementRef.na...
method _getAriaDisabled (line 11) | _getAriaDisabled(){return this.ariaDisabled!=null?this.ariaDisabled:th...
method _getDisabledAttribute (line 11) | _getDisabledAttribute(){return this.disabledInteractive||!this.disable...
method _updateRippleDisabled (line 11) | _updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementR...
method _getTabIndex (line 11) | _getTabIndex(){return this._isAnchor?this.disabled&&!this.disabledInte...
method _setupAsAnchor (line 11) | _setupAsAnchor(){this._cleanupClick=this._ngZone.runOutsideAngular(()=...
method constructor (line 11) | constructor(){super(),this._rippleLoader.configureRipple(this._element...
method value (line 13) | get value(){return this.valueSignal()}
method constructor (line 13) | constructor(){let n=h(XA,{optional:!0});if(n){let r=n.body?n.body.dir:...
method ngOnDestroy (line 13) | ngOnDestroy(){this.change.complete()}
method constructor (line 13) | constructor(){h(zl)._applyBodyHighContrastModeCssClasses()}
method appearance (line 13) | get appearance(){return this._appearance}
method appearance (line 13) | set appearance(n){this.setAppearance(n||this._config?.defaultAppearanc...
method constructor (line 13) | constructor(){super();let n=iN(this._elementRef.nativeElement);n&&this...
method setAppearance (line 13) | setAppearance(n){if(n===this._appearance)return;let r=this._elementRef...
method constructor (line 3) | constructor(t,n){super(),this.destination=t,this.source=n}
method next (line 3) | next(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.next...
method error (line 3) | error(t){var n,r;(r=(n=this.destination)===null||n===void 0?void 0:n.err...
method complete (line 3) | complete(){var t,n;(n=(t=this.destination)===null||t===void 0?void 0:t.c...
method _subscribe (line 3) | _subscribe(t){var n,r;return(r=(n=this.source)===null||n===void 0?void 0...
method constructor (line 3) | constructor(t){super(),this._value=t}
method value (line 3) | get value(){return this.getValue()}
method _subscribe (line 3) | _subscribe(t){let n=super._subscribe(t);return!n.closed&&t.next(this._va...
method getValue (line 3) | getValue(){let{hasError:t,thrownError:n,_value:r}=this;if(t)throw n;retu...
method next (line 3) | next(t){super.next(this._value=t)}
method now (line 3) | now(){return(ni.delegate||Date).now()}
method constructor (line 3) | constructor(t=1/0,n=1/0,r=ni){super(),this._bufferSize=t,this._windowTim...
method next (line 3) | next(t){let{isStopped:n,_buffer:r,_infiniteTimeWindow:o,_timestampProvid...
method _subscribe (line 3) | _subscribe(t){this._throwIfClosed(),this._trimBuffer();let n=this._inner...
method _trimBuffer (line 3) | _trimBuffer(){let{_bufferSize:t,_timestampProvider:n,_buffer:r,_infinite...
method constructor (line 3) | constructor(t,n){super()}
method schedule (line 3) | schedule(t,n=0){return this}
method setInterval (line 3) | setInterval(e,t,...n){let{delegate:r}=oi;return r?.setInterval?r.setInte...
method clearInterval (line 3) | clearInterval(e){let{delegate:t}=oi;return(t?.clearInterval||clearInterv...
method constructor (line 3) | constructor(t,n){super(t,n),this.scheduler=t,this.work=n,this.pending=!1}
method schedule (line 3) | schedule(t,n=0){var r;if(this.closed)return this;this.state=t;let o=this...
method requestAsyncId (line 3) | requestAsyncId(t,n,r=0){return oi.setInterval(t.flush.bind(t,this),r)}
method recycleAsyncId (line 3) | recycleAsyncId(t,n,r=0){if(r!=null&&this.delay===r&&this.pending===!1)re...
method execute (line 3) | execute(t,n){if(this.closed)return new Error("executing a cancelled acti...
method _execute (line 3) | _execute(t,n){let r=!1,o;try{this.work(t)}catch(i){r=!0,o=i||new Error("...
method unsubscribe (line 3) | unsubscribe(){if(!this.closed){let{id:t,scheduler:n}=this,{actions:r}=n;...
method constructor (line 3) | constructor(t,n=e.now){this.schedulerActionCtor=t,this.now=n}
method schedule (line 3) | schedule(t,n=0,r){return new this.schedulerActionCtor(this,t).schedule(r...
method constructor (line 3) | constructor(t,n=Jr.now){super(t,n),this.actions=[],this._active=!1}
method flush (line 3) | flush(t){let{actions:n}=this;if(this._active){n.push(t);return}let r;thi...
function aa (line 3) | function aa(e){return e&&k(e.schedule)}
function ku (line 3) | function ku(e){return e[e.length-1]}
function ca (line 3) | function ca(e){return k(ku(e))?e.pop():void 0}
function Ot (line 3) | function Ot(e){return aa(ku(e))?e.pop():void 0}
function Im (line 3) | function Im(e,t){return typeof ku(e)=="number"?e.pop():t}
function Tm (line 3) | function Tm(e,t,n,r){function o(i){return i instanceof n?i:new n(functio...
function Cm (line 3) | function Cm(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t...
function sr (line 3) | function sr(e){return this instanceof sr?(this.v=e,this):new sr(e)}
function Sm (line 3) | function Sm(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol....
function Mm (line 3) | function Mm(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyn...
function ua (line 3) | function ua(e){return k(e?.then)}
function da (line 3) | function da(e){return k(e[Kr])}
function fa (line 3) | function fa(e){return Symbol.asyncIterator&&k(e?.[Symbol.asyncIterator])}
function ha (line 3) | function ha(e){return new TypeError(`You provided ${e!==null&&typeof e==...
function $D (line 3) | function $D(){return typeof Symbol!="function"||!Symbol.iterator?"@@iter...
function ma (line 3) | function ma(e){return k(e?.[pa])}
function ga (line 3) | function ga(e){return Sm(this,arguments,function*(){let n=e.getReader();...
function va (line 3) | function va(e){return k(e?.getReader)}
function z (line 3) | function z(e){if(e instanceof P)return e;if(e!=null){if(da(e))return zD(...
function zD (line 3) | function zD(e){return new P(t=>{let n=e[Kr]();if(k(n.subscribe))return n...
function WD (line 3) | function WD(e){return new P(t=>{for(let n=0;n<e.length&&!t.closed;n++)t....
function GD (line 3) | function GD(e){return new P(t=>{e.then(n=>{t.closed||(t.next(n),t.comple...
function qD (line 3) | function qD(e){return new P(t=>{for(let n of e)if(t.next(n),t.closed)ret...
function xm (line 3) | function xm(e){return new P(t=>{YD(e,t).catch(n=>t.error(n))})}
function ZD (line 3) | function ZD(e){return xm(ga(e))}
function YD (line 3) | function YD(e,t){var n,r,o,i;return Tm(this,void 0,void 0,function*(){tr...
function We (line 3) | function We(e,t,n,r=0,o=!1){let i=t.schedule(function(){n(),o?e.add(this...
function ya (line 3) | function ya(e,t=0){return R((n,r)=>{n.subscribe(x(r,o=>We(r,e,()=>r.next...
function ba (line 3) | function ba(e,t=0){return R((n,r)=>{r.add(e.schedule(()=>n.subscribe(r),...
function Rm (line 3) | function Rm(e,t){return z(e).pipe(ba(t),ya(t))}
function Am (line 3) | function Am(e,t){return z(e).pipe(ba(t),ya(t))}
function Nm (line 3) | function Nm(e,t){return new P(n=>{let r=0;return t.schedule(function(){r...
function Om (line 3) | function Om(e,t){return new P(n=>{let r;return We(n,t,()=>{r=e[pa](),We(...
function _a (line 3) | function _a(e,t){if(!e)throw new Error("Iterable cannot be null");return...
function km (line 3) | function km(e,t){return _a(ga(e),t)}
function Pm (line 3) | function Pm(e,t){if(e!=null){if(da(e))return Rm(e,t);if(la(e))return Nm(...
function ne (line 3) | function ne(e,t){return t?Pm(e,t):z(e)}
function C (line 3) | function C(...e){let t=Ot(e);return ne(e,t)}
function eo (line 3) | function eo(e,t){let n=k(e)?e:()=>e,r=o=>o.error(n());return new P(t?o=>...
function Pu (line 3) | function Pu(e){return!!e&&(e instanceof P||k(e.lift)&&k(e.subscribe))}
function KD (line 3) | function KD(e,t){let n=typeof t=="object";return new Promise((r,o)=>{let...
function QD (line 3) | function QD(e,t){let n=typeof t=="object";return new Promise((r,o)=>{let...
function Fm (line 3) | function Fm(e){return e instanceof Date&&!isNaN(e)}
function T (line 3) | function T(e,t){return R((n,r)=>{let o=0;n.subscribe(x(r,i=>{r.next(e.ca...
function JD (line 3) | function JD(e,t){return XD(t)?e(...t):e(t)}
function Ea (line 3) | function Ea(e){return T(t=>JD(e,t))}
function Da (line 3) | function Da(e){if(e.length===1){let t=e[0];if(ew(t))return{args:t,keys:n...
function ow (line 3) | function ow(e){return e&&typeof e=="object"&&tw(e)===nw}
function wa (line 3) | function wa(e,t){return e.reduce((n,r,o)=>(n[r]=t[o],n),{})}
function to (line 3) | function to(...e){let t=Ot(e),n=ca(e),{args:r,keys:o}=Da(e);if(r.length=...
function iw (line 3) | function iw(e,t,n=Ae){return r=>{Lm(t,()=>{let{length:o}=e,i=new Array(o...
function Lm (line 3) | function Lm(e,t,n){e?We(n,e,t):t()}
function jm (line 3) | function jm(e,t,n,r,o,i,s,a){let c=[],l=0,u=0,d=!1,p=()=>{d&&!c.length&&...
function le (line 3) | function le(e,t,n=1/0){return k(t)?le((r,o)=>T((i,s)=>t(r,i,o,s))(z(e(r,...
function In (line 3) | function In(e=1/0){return le(Ae,e)}
function Bm (line 3) | function Bm(){return In(1)}
function kt (line 3) | function kt(...e){return Bm()(ne(e,Ot(e)))}
function ii (line 3) | function ii(e){return new P(t=>{z(e()).subscribe(t)})}
function sw (line 3) | function sw(...e){let t=ca(e),{args:n,keys:r}=Da(e),o=new P(i=>{let{leng...
function si (line 3) | function si(e=0,t,n=wm){let r=-1;return t!=null&&(aa(t)?n=t:r=t),new P(o...
function aw (line 3) | function aw(...e){let t=Ot(e),n=Im(e,1/0),r=e;return r.length?r.length==...
function fe (line 3) | function fe(e,t){return R((n,r)=>{let o=0;n.subscribe(x(r,i=>e.call(t,i,...
function Um (line 3) | function Um(e){return R((t,n)=>{let r=!1,o=null,i=null,s=!1,a=()=>{if(i?...
function cw (line 3) | function cw(e,t=ir){return Um(()=>si(e,t))}
function Pt (line 3) | function Pt(e){return R((t,n)=>{let r=null,o=!1,i;r=t.subscribe(x(n,void...
function Vm (line 3) | function Vm(e,t,n,r,o){return(i,s)=>{let a=n,c=t,l=0;i.subscribe(x(s,u=>...
function nn (line 3) | function nn(e,t){return k(t)?le(e,t,1):le(e,1)}
function ar (line 3) | function ar(e,t=ir){return R((n,r)=>{let o=null,i=null,s=null,a=()=>{if(...
function Cn (line 3) | function Cn(e){return R((t,n)=>{let r=!1;t.subscribe(x(n,o=>{r=!0,n.next...
function Ge (line 3) | function Ge(e){return e<=0?()=>Ne:R((t,n)=>{let r=0;t.subscribe(x(n,o=>{...
function Hm (line 3) | function Hm(){return R((e,t)=>{e.subscribe(x(t,nr))})}
function $m (line 3) | function $m(e){return T(()=>e)}
function Fu (line 3) | function Fu(e,t){return t?n=>kt(t.pipe(Ge(1),Hm()),n.pipe(Fu(e))):le((n,...
function lw (line 3) | function lw(e,t=ir){let n=si(e,t);return Fu(()=>n)}
function Lu (line 3) | function Lu(e,t=Ae){return e=e??uw,R((n,r)=>{let o,i=!0;n.subscribe(x(r,...
function uw (line 3) | function uw(e,t){return e===t}
function Ia (line 3) | function Ia(e=dw){return R((t,n)=>{let r=!1;t.subscribe(x(n,o=>{r=!0,n.n...
function dw (line 3) | function dw(){return new Xe}
function Tn (line 3) | function Tn(e){return R((t,n)=>{try{t.subscribe(n)}finally{n.add(e)}})}
function rn (line 3) | function rn(e,t){let n=arguments.length>=2;return r=>r.pipe(e?fe((o,i)=>...
function no (line 3) | function no(e){return e<=0?()=>Ne:R((t,n)=>{let r=[];t.subscribe(x(n,o=>...
function ju (line 3) | function ju(e,t){let n=arguments.length>=2;return r=>r.pipe(e?fe((o,i)=>...
function fw (line 3) | function fw(){return R((e,t)=>{let n,r=!1;e.subscribe(x(t,o=>{let i=n;n=...
function Bu (line 3) | function Bu(e,t){return R(Vm(e,t,arguments.length>=2,!0))}
function Vu (line 3) | function Vu(e={}){let{connector:t=()=>new V,resetOnError:n=!0,resetOnCom...
function Uu (line 3) | function Uu(e,t,...n){if(t===!0){e();return}if(t===!1)return;let r=new g...
function hw (line 3) | function hw(e,t,n){let r,o=!1;return e&&typeof e=="object"?{bufferSize:r...
function ai (line 3) | function ai(e){return fe((t,n)=>e<=n)}
function ci (line 3) | function ci(...e){let t=Ot(e);return R((n,r)=>{(t?kt(e,n,t):kt(e,n)).sub...
function qe (line 3) | function qe(e,t){return R((n,r)=>{let o=null,i=0,s=!1,a=()=>s&&!o&&r.com...
function Sn (line 3) | function Sn(e){return R((t,n)=>{z(e).subscribe(x(n,()=>n.complete(),nr))...
function pw (line 3) | function pw(e,t=!1){return R((n,r)=>{let o=0;n.subscribe(x(r,i=>{let s=e...
function re (line 3) | function re(e,t,n){let r=k(e)||t||n?{next:e,error:t,complete:n}:e;return...
function zm (line 3) | function zm(e){let t=M(null);try{return e()}finally{M(t)}}
method constructor (line 3) | constructor(t,n){super(fr(t,n)),this.code=t}
function mw (line 3) | function mw(e){return`NG0${Math.abs(e)}`}
function fr (line 3) | function fr(e,t){return`${mw(e)}${t?": "+t:""}`}
function se (line 3) | function se(e){for(let t in e)if(e[t]===se)return t;throw Error("")}
function Zm (line 3) | function Zm(e,t){for(let n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n...
function Ze (line 3) | function Ze(e){if(typeof e=="string")return e;if(Array.isArray(e))return...
function Ra (line 4) | function Ra(e,t){return e?t?`${e} ${t}`:e:t||""}
function Aa (line 4) | function Aa(e){return e.__forward_ref__=Aa,e.toString=function(){return ...
function Re (line 4) | function Re(e){return Ju(e)?e():e}
function Ju (line 4) | function Ju(e){return typeof e=="function"&&e.hasOwnProperty(gw)&&e.__fo...
function Ym (line 4) | function Ym(e,t,n,r){throw new Error(`ASSERTION ERROR: ${e}`+(r==null?""...
function b (line 4) | function b(e){return{token:e.token,providedIn:e.providedIn||null,factory...
function De (line 4) | function De(e){return{providers:e.providers||[],imports:e.imports||[]}}
function hi (line 4) | function hi(e){return vw(e,Na)}
function ed (line 4) | function ed(e){return hi(e)!==null}
function vw (line 4) | function vw(e,t){return e.hasOwnProperty(t)&&e[t]||null}
function yw (line 4) | function yw(e){let t=e?.[Na]??null;return t||null}
function $u (line 4) | function $u(e){return e&&e.hasOwnProperty(Ta)?e[Ta]:null}
method constructor (line 4) | constructor(t,n){this._desc=t,this.\u0275prov=void 0,typeof n=="number"?...
method multi (line 4) | get multi(){return this}
method toString (line 4) | toString(){return`InjectionToken ${this._desc}`}
function td (line 4) | function td(e){return e&&!!e.\u0275providers}
function Rn (line 4) | function Rn(e){return typeof e=="string"?e:e==null?"":String(e)}
function Km (line 4) | function Km(e){return typeof e=="function"?e.name||e.toString():typeof e...
function sd (line 4) | function sd(e,t){throw new _(-200,e)}
function Oa (line 4) | function Oa(e,t){throw new _(-201,!1)}
function Qm (line 4) | function Qm(){return zu}
function Fe (line 4) | function Fe(e){let t=zu;return zu=e,t}
function ad (line 4) | function ad(e,t,n){let r=hi(e);if(r&&r.providedIn=="root")return r.value...
method constructor (line 4) | constructor(t){this.injector=t}
method retrieve (line 4) | retrieve(t,n){let r=lr(n)||0;try{return this.injector.get(t,r&8?null:cr,...
function ww (line 4) | function ww(e,t=0){let n=yu();if(n===void 0)throw new _(-203,!1);if(n===...
function S (line 4) | function S(e,t=0){return(Qm()||ww)(Re(e),t)}
function h (line 4) | function h(e,t){return S(e,lr(t))}
function lr (line 4) | function lr(e){return typeof e>"u"||typeof e=="number"?e:0|(e.optional&&...
function Iw (line 4) | function Iw(e){return{optional:!!(e&8),host:!!(e&1),self:!!(e&2),skipSel...
function qu (line 4) | function qu(e){let t=[];for(let n=0;n<e.length;n++){let r=Re(e[n]);if(Ar...
function cd (line 4) | function cd(e,t){return e[Wu]=t,e.prototype[Wu]=t,e}
function Cw (line 4) | function Cw(e){return e[Wu]}
function Tw (line 4) | function Tw(e,t,n,r){let o=e[Sa];throw t[Gm]&&o.unshift(t[Gm]),e.message...
function Sw (line 5) | function Sw(e,t,n,r=null){e=e&&e.charAt(0)===`
function Mn (line 7) | function Mn(e,t){let n=e.hasOwnProperty(ui);return n?e[ui]:null}
function Xm (line 7) | function Xm(e,t,n){if(e.length!==t.length)return!1;for(let r=0;r<e.lengt...
function Jm (line 7) | function Jm(e){return e.flat(Number.POSITIVE_INFINITY)}
function ka (line 7) | function ka(e,t){e.forEach(n=>Array.isArray(n)?ka(n,t):t(n))}
function ld (line 7) | function ld(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}
function pi (line 7) | function pi(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}
function eg (line 7) | function eg(e,t){let n=[];for(let r=0;r<e;r++)n.push(t);return n}
function tg (line 7) | function tg(e,t,n,r){let o=e.length;if(o==t)e.push(n,r);else if(o===1)e....
function Pa (line 7) | function Pa(e,t,n){let r=oo(e,t);return r>=0?e[r|1]=n:(r=~r,tg(e,r,t,n)),r}
function Fa (line 7) | function Fa(e,t){let n=oo(e,t);if(n>=0)return e[n|1]}
function oo (line 7) | function oo(e,t){return Mw(e,t,1)}
function Mw (line 7) | function Mw(e,t,n){let r=0,o=e.length>>n;for(;o!==r;){let i=r+(o-r>>1),s...
method get (line 7) | get(t,n=cr){if(n===cr)throw new Hs(`NullInjectorError: No provider for $...
function fd (line 7) | function fd(e){return e[id]||null}
function sn (line 7) | function sn(e){return e[nd]||null}
function hd (line 7) | function hd(e){return e[rd]||null}
function ng (line 7) | function ng(e){return e[od]||null}
function vt (line 7) | function vt(e){return{\u0275providers:e}}
function rg (line 7) | function rg(e){return vt([{provide:Ft,multi:!0,useValue:e}])}
function og (line 7) | function og(...e){return{\u0275providers:pd(!0,e),\u0275fromNgModule:!0}}
function pd (line 7) | function pd(e,...t){let n=[],r=new Set,o,i=s=>{n.push(s)};return ka(t,s=...
function ig (line 7) | function ig(e,t){for(let n=0;n<e.length;n++){let{ngModule:r,providers:o}...
function Ma (line 7) | function Ma(e,t,n,r){if(e=Re(e),!e)return!1;let o=null,i=$u(e),s=!i&&sn(...
function md (line 7) | function md(e,t){for(let n of e)td(n)&&(n=n.\u0275providers),Array.isArr...
function sg (line 7) | function sg(e){return e!==null&&typeof e=="object"&&xw in e}
function Rw (line 7) | function Rw(e){return!!(e&&e.useExisting)}
function Aw (line 7) | function Aw(e){return!!(e&&e.useFactory)}
function ur (line 7) | function ur(e){return typeof e=="function"}
function ag (line 7) | function ag(e){return!!e.useClass}
function io (line 7) | function io(){return Hu===void 0&&(Hu=new di),Hu}
method destroyed (line 7) | get destroyed(){return this._destroyed}
method constructor (line 7) | constructor(t,n,r,o){super(),this.parent=n,this.source=r,this.scopes=o,Y...
method retrieve (line 7) | retrieve(t,n){let r=lr(n)||0;try{return this.get(t,cr,r)}catch(o){if(zr(...
method destroy (line 7) | destroy(){li(this),this._destroyed=!0;let t=M(null);try{for(let r of thi...
method onDestroy (line 7) | onDestroy(t){return li(this),this._onDestroyHooks.push(t),()=>this.remov...
method runInContext (line 7) | runInContext(t){li(this);let n=en(this),r=Fe(void 0),o;try{return t()}fi...
method get (line 7) | get(t,n=cr,r){if(li(this),t.hasOwnProperty(Wm))return t[Wm](this);let o=...
method resolveInjectorInitializers (line 7) | resolveInjectorInitializers(){let t=M(null),n=en(this),r=Fe(void 0),o;tr...
method toString (line 7) | toString(){let t=[],n=this.records;for(let r of n.keys())t.push(Ze(r));r...
method processProvider (line 7) | processProvider(t){t=Re(t);let n=ur(t)?t:Re(t&&t.provide),r=Ow(t);if(!ur...
method hydrate (line 7) | hydrate(t,n){let r=M(null);try{return n.value===qm?sd(Ze(t)):n.value===C...
method injectableDefInScope (line 7) | injectableDefInScope(t){if(!t.providedIn)return!1;let n=Re(t.providedIn)...
method removeOnDestroy (line 7) | removeOnDestroy(t){let n=this._onDestroyHooks.indexOf(t);n!==-1&&this._o...
function Zu (line 7) | function Zu(e){let t=hi(e),n=t!==null?t.factory:Mn(e);if(n!==null)return...
function Nw (line 7) | function Nw(e){if(e.length>0)throw new _(204,!1);let n=yw(e);return n!==...
function Ow (line 7) | function Ow(e){if(sg(e))return ro(void 0,e.useValue);{let t=gd(e);return...
function gd (line 7) | function gd(e,t,n){let r;if(ur(e)){let o=Re(e);return Mn(o)||Zu(o)}else ...
function li (line 7) | function li(e){if(e.destroyed)throw new _(205,!1)}
function ro (line 7) | function ro(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}
function kw (line 7) | function kw(e){return!!e.deps}
function Pw (line 7) | function Pw(e){return e!==null&&typeof e=="object"&&typeof e.ngOnDestroy...
function Fw (line 7) | function Fw(e){return typeof e=="function"||typeof e=="object"&&e.ngMeta...
function Yu (line 7) | function Yu(e,t){for(let n of e)Array.isArray(n)?Yu(n,t):n&&td(n)?Yu(n.\...
function Le (line 7) | function Le(e,t){let n;e instanceof dr?(li(e),n=e):n=new Gu(e);let r,o=e...
function cg (line 7) | function cg(){return Qm()!==void 0||yu()!=null}
function Bt (line 7) | function Bt(e){return Array.isArray(e)&&typeof e[lg]=="object"}
function bt (line 7) | function bt(e){return Array.isArray(e)&&e[lg]===!0}
function ja (line 7) | function ja(e){return(e.flags&4)!==0}
function kn (line 7) | function kn(e){return e.componentOffset>-1}
function yi (line 7) | function yi(e){return(e.flags&1)===1}
function Ut (line 7) | function Ut(e){return!!e.template}
function co (line 7) | function co(e){return(e[A]&512)!==0}
function _r (line 7) | function _r(e){return(e[A]&256)===256}
function ut (line 7) | function ut(e){for(;Array.isArray(e);)e=e[yt];return e}
function Ed (line 7) | function Ed(e,t){return ut(t[e])}
function _t (line 7) | function _t(e,t){return ut(t[e.index])}
function bi (line 7) | function bi(e,t){return e.data[t]}
function Ba (line 7) | function Ba(e,t){return e[t]}
function Dd (line 7) | function Dd(e,t,n,r){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=nu...
function dt (line 7) | function dt(e,t){let n=t[e];return Bt(n)?n:n[yt]}
function dg (line 7) | function dg(e){return(e[A]&4)===4}
function Ua (line 7) | function Ua(e){return(e[A]&128)===128}
function fg (line 7) | function fg(e){return bt(e[Ee])}
function Et (line 7) | function Et(e,t){return t==null?null:e[t]}
function wd (line 7) | function wd(e){e[vr]=0}
function Id (line 7) | function Id(e){e[A]&1024||(e[A]|=1024,Ua(e)&&Pn(e))}
function hg (line 7) | function hg(e,t){for(;e>0;)t=t[gr],e--;return t}
function _i (line 7) | function _i(e){return!!(e[A]&9216||e[et]?.dirty)}
function Va (line 7) | function Va(e){e[Lt].changeDetectionScheduler?.notify(8),e[A]&64&&(e[A]|...
function Pn (line 7) | function Pn(e){e[Lt].changeDetectionScheduler?.notify(0);let t=xn(e);for...
function Cd (line 7) | function Cd(e,t){if(_r(e))throw new _(911,!1);e[on]===null&&(e[on]=[]),e...
function pg (line 7) | function pg(e,t){if(e[on]===null)return;let n=e[on].indexOf(t);n!==-1&&e...
function xn (line 7) | function xn(e){let t=e[Ee];return bt(t)?t[Ee]:t}
function Td (line 7) | function Td(e){return e[so]??=[]}
function Sd (line 7) | function Sd(e){return e.cleanup??=[]}
function mg (line 7) | function mg(e,t,n,r){let o=Td(t);o.push(n),e.firstCreatePass&&Sd(e).push...
function gg (line 7) | function gg(){return L.lFrame.elementDepthCount}
function vg (line 7) | function vg(){L.lFrame.elementDepthCount++}
function yg (line 7) | function yg(){L.lFrame.elementDepthCount--}
function Ha (line 7) | function Ha(){return L.bindingsEnabled}
function Md (line 7) | function Md(){return L.skipHydrationRootTNode!==null}
function bg (line 7) | function bg(e){return L.skipHydrationRootTNode===e}
function _g (line 7) | function _g(){L.skipHydrationRootTNode=null}
function I (line 7) | function I(){return L.lFrame.lView}
function X (line 7) | function X(){return L.lFrame.tView}
function Eg (line 7) | function Eg(e){return L.lFrame.contextLView=e,e[he]}
function Dg (line 7) | function Dg(e){return L.lFrame.contextLView=null,e}
function Te (line 7) | function Te(){let e=xd();for(;e!==null&&e.type===64;)e=e.parent;return e}
function xd (line 7) | function xd(){return L.lFrame.currentTNode}
function wg (line 7) | function wg(){let e=L.lFrame,t=e.currentTNode;return e.isParent?t:t.parent}
function Fn (line 7) | function Fn(e,t){let n=L.lFrame;n.currentTNode=e,n.isParent=t}
function $a (line 7) | function $a(){return L.lFrame.isParent}
function za (line 7) | function za(){L.lFrame.isParent=!1}
function Ig (line 7) | function Ig(){return L.lFrame.contextLView}
function Rd (line 7) | function Rd(e){Ym("Must never be called in production mode"),Lw=e}
function Ad (line 7) | function Ad(){return Ku}
function lo (line 7) | function lo(e){let t=Ku;return Ku=e,t}
function uo (line 7) | function uo(){let e=L.lFrame,t=e.bindingRootIndex;return t===-1&&(t=e.bi...
function Cg (line 7) | function Cg(){return L.lFrame.bindingIndex}
function Tg (line 7) | function Tg(e){return L.lFrame.bindingIndex=e}
function cn (line 7) | function cn(){return L.lFrame.bindingIndex++}
function Wa (line 7) | function Wa(e){let t=L.lFrame,n=t.bindingIndex;return t.bindingIndex=t.b...
function Sg (line 7) | function Sg(){return L.lFrame.inI18n}
function Mg (line 7) | function Mg(e,t){let n=L.lFrame;n.bindingIndex=n.bindingRootIndex=e,Ga(t)}
function xg (line 7) | function xg(){return L.lFrame.currentDirectiveIndex}
function Ga (line 7) | function Ga(e){L.lFrame.currentDirectiveIndex=e}
function Rg (line 7) | function Rg(e){let t=L.lFrame.currentDirectiveIndex;return t===-1?null:e...
function qa (line 7) | function qa(){return L.lFrame.currentQueryIndex}
function Di (line 7) | function Di(e){L.lFrame.currentQueryIndex=e}
function jw (line 7) | function jw(e){let t=e[N];return t.type===2?t.declTNode:t.type===1?e[je]...
function Nd (line 7) | function Nd(e,t,n){if(n&4){let o=t,i=e;for(;o=o.parent,o===null&&!(n&1);...
function Za (line 7) | function Za(e){let t=Ag(),n=e[N];L.lFrame=t,t.currentTNode=n.firstChild,...
function Ag (line 7) | function Ag(){let e=L.lFrame,t=e===null?null:e.child;return t===null?Ng(...
function Ng (line 7) | function Ng(e){let t={currentTNode:null,isParent:!0,lView:null,tView:nul...
function Og (line 7) | function Og(){let e=L.lFrame;return L.lFrame=e.parent,e.currentTNode=nul...
function Ya (line 7) | function Ya(){let e=Og();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e...
function kg (line 7) | function kg(e){return(L.lFrame.contextLView=hg(e,L.lFrame.contextLView))...
function Vt (line 7) | function Vt(){return L.lFrame.selectedIndex}
function Ln (line 7) | function Ln(e){L.lFrame.selectedIndex=e}
function wi (line 7) | function wi(){let e=L.lFrame;return bi(e.tView,e.selectedIndex)}
function Pg (line 7) | function Pg(){L.lFrame.currentNamespace=_d}
function Fg (line 7) | function Fg(){Bw()}
function Bw (line 7) | function Bw(){L.lFrame.currentNamespace=null}
function Lg (line 7) | function Lg(){return L.lFrame.currentNamespace}
function Ii (line 7) | function Ii(){return jg}
function Ci (line 7) | function Ci(e){jg=e}
function Qu (line 7) | function Qu(e,t=null,n=null,r){let o=kd(e,t,n,r);return o.resolveInjecto...
function kd (line 7) | function kd(e,t=null,n=null,r,o=new Set){let i=[n||Oe,og(e)];return r=r|...
method create (line 7) | static create(t,n){if(Array.isArray(t))return Qu({name:""},n,t,"");{let ...
class e (line 7) | class e{static __NG_ELEMENT_ID__=Uw;static __NG_ENV_ID__=n=>n}
method constructor (line 3) | constructor(n){n&&(this._subscribe=n)}
method lift (line 3) | lift(n){let r=new e;return r.source=this,r.operator=n,r}
method subscribe (line 3) | subscribe(n,r,o){let i=HD(n)?n:new gt(n,r,o);return Yr(()=>{let{operat...
method _trySubscribe (line 3) | _trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}
method forEach (line 3) | forEach(n,r){return r=Em(r),new r((o,i)=>{let s=new gt({next:a=>{try{n...
method _subscribe (line 3) | _subscribe(n){var r;return(r=this.source)===null||r===void 0?void 0:r....
method [Kr] (line 3) | [Kr](){return this}
method pipe (line 3) | pipe(...n){return Au(n)(this)}
method toPromise (line 3) | toPromise(n){return n=Em(n),new n((r,o)=>{let i;this.subscribe(s=>i=s,...
method constructor (line 3) | constructor(){super(),this.closed=!1,this.currentObservers=null,this.o...
method lift (line 3) | lift(n){let r=new ra(this,this);return r.operator=n,r}
method _throwIfClosed (line 3) | _throwIfClosed(){if(this.closed)throw new Dm}
method next (line 3) | next(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.current...
method error (line 3) | error(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasErr...
method complete (line 3) | complete(){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isSt...
method unsubscribe (line 3) | unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.curren...
method observed (line 3) | get observed(){var n;return((n=this.observers)===null||n===void 0?void...
method _trySubscribe (line 3) | _trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}
method _subscribe (line 3) | _subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuse...
method _innerSubscribe (line 3) | _innerSubscribe(n){let{hasError:r,isStopped:o,observers:i}=this;return...
method _checkFinalizedStatuses (line 3) | _checkFinalizedStatuses(n){let{hasError:r,thrownError:o,isStopped:i}=t...
method asObservable (line 3) | asObservable(){let n=new P;return n.source=this,n}
method constructor (line 7) | constructor(n,r){this.view=n,this.node=r}
method hasPendingTasks (line 7) | get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}
method hasPendingTasksObservable (line 7) | get hasPendingTasksObservable(){return this.destroyed?new P(n=>{n.next...
method add (line 7) | add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0...
method has (line 7) | has(n){return this.pendingTasks.has(n)}
method remove (line 7) | remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this...
method ngOnDestroy (line 7) | ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pen...
method add (line 7) | add(){let n=this.internalPendingTasks.add();return()=>{this.internalPe...
method run (line 7) | run(n){let r=this.add();n().catch(this.errorHandler).finally(r)}
method constructor (line 7) | constructor(n){this.nativeElement=n}
method constructor (line 7) | constructor(n,r,o){this._declarationLView=n,this._declarationTContaine...
method ssrId (line 7) | get ssrId(){return this._declarationTContainer.tView?.ssrId||null}
method createEmbeddedView (line 7) | createEmbeddedView(n,r){return this.createEmbeddedViewImpl(n,r)}
method createEmbeddedViewImpl (line 7) | createEmbeddedViewImpl(n,r,o){let i=Bi(this._declarationLView,this._de...
method constructor (line 7) | constructor(n){this._injector=n}
method getOrCreateStandaloneInjector (line 7) | getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this...
method ngOnDestroy (line 7) | ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&...
method execute (line 7) | execute(){this.impl?.execute()}
method constructor (line 7) | constructor(){h($n,{optional:!0})}
method execute (line 7) | execute(){let n=this.sequences.size>0;n&&W(16),this.executing=!0;for(l...
method register (line 7) | register(n){let{view:r}=n;r!==void 0?((r[yr]??=[]).push(n),Pn(r),r[A]|...
method addSequence (line 7) | addSequence(n){this.sequences.add(n),this.scheduler.notify(7)}
method unregister (line 7) | unregister(n){this.executing&&this.sequences.has(n)?(n.erroredOrDestro...
method maybeTrace (line 7) | maybeTrace(n,r){return r?r.run(Lc.AFTER_NEXT_RENDER,n):n()}
method log (line 7) | log(n){console.log(n)}
method warn (line 7) | warn(n){console.warn(n)}
method constructor (line 7) | constructor(){}
method runInitializers (line 7) | runInitializers(){if(this.initialized)return;let n=[];for(let o of thi...
method allViews (line 7) | get allViews(){return[...(this.includeAllTestViews?this.allTestViews:t...
method destroyed (line 7) | get destroyed(){return this._destroyed}
method isStable (line 7) | get isStable(){return this.internalPendingTask.hasPendingTasksObservab...
method constructor (line 7) | constructor(){h($n,{optional:!0})}
method whenStable (line 7) | whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({n...
method injector (line 7) | get injector(){return this._injector}
method bootstrap (line 7) | bootstrap(n,r){return this.bootstrapImpl(n,r)}
method bootstrapImpl (line 7) | bootstrapImpl(n,r,o=ae.NULL){return this._injector.get(B).run(()=>{W(1...
method tick (line 7) | tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}
method _tick (line 7) | _tick(){W(12),this.tracingSnapshot!==null?this.tracingSnapshot.run(Lc....
method synchronize (line 7) | synchronize(){this._rendererFactory===null&&!this._injector.destroyed&...
method synchronizeOnce (line 7) | synchronizeOnce(){this.dirtyFlags&16&&(this.dirtyFlags&=-17,this.rootE...
method syncDirtyFlagsWithViews (line 7) | syncDirtyFlagsWithViews(){if(this.allViews.some(({_lView:n})=>_i(n))){...
method attachView (line 7) | attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}
method detachView (line 7) | detachView(n){let r=n;xi(this._views,r),r.detachFromAppRef()}
method _loadComponent (line 7) | _loadComponent(n){this.attachView(n.hostView);try{this.tick()}catch(o)...
method ngOnDestroy (line 7) | ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n...
method onDestroy (line 7) | onDestroy(n){return this._destroyListeners.push(n),()=>xi(this._destro...
method destroy (line 7) | destroy(){if(this._destroyed)throw new _(406,!1);let n=this._injector;...
method viewCount (line 7) | get viewCount(){return this._views.length}
method compileModuleSync (line 7) | compileModuleSync(n){return new gc(n)}
method compileModuleAsync (line 7) | compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}
method compileModuleAndAllComponentsSync (line 7) | compileModuleAndAllComponentsSync(n){let r=this.compileModuleSync(n),o...
method compileModuleAndAllComponentsAsync (line 7) | compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.comp...
method clearCache (line 7) | clearCache(){}
method clearCacheFor (line 7) | clearCacheFor(n){}
method getModuleId (line 7) | getModuleId(n){}
method initialize (line 7) | initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmp...
method ngOnDestroy (line 7) | ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}
method initialize (line 7) | initialize(){if(this.initialized)return;this.initialized=!0;let n=null...
method ngOnDestroy (line 7) | ngOnDestroy(){this.subscription.unsubscribe()}
method constructor (line 7) | constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe((...
method notify (line 7) | notify(n){if(!this.zonelessEnabled&&n===5)return;let r=!1;switch(n){ca...
method shouldScheduleTick (line 7) | shouldScheduleTick(n){return!(this.disableScheduling&&!n||this.appRef....
method tick (line 7) | tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRe...
method ngOnDestroy (line 7) | ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}
method cleanup (line 7) | cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this...
method constructor (line 7) | constructor(n){this.factories=n}
method create (line 7) | static create(n,r){if(r!=null){let o=r.factories.slice();n=n.concat(o)...
method extend (line 7) | static extend(n){return{provide:e,useFactory:r=>e.create(n,r||Bb()),de...
method find (line 7) | find(n){let r=this.factories.find(o=>o.supports(n));if(r!=null)return ...
method historyGo (line 7) | historyGo(n){throw new Error("")}
method constructor (line 7) | constructor(){super(),this._location=window.location,this._history=win...
method getBaseHrefFromDOM (line 7) | getBaseHrefFromDOM(){return gn().getBaseHref(this._doc)}
method onPopState (line 7) | onPopState(n){let r=gn().getGlobalEventTarget(this._doc,"window");retu...
method onHashChange (line 7) | onHashChange(n){let r=gn().getGlobalEventTarget(this._doc,"window");re...
method href (line 7) | get href(){return this._location.href}
method protocol (line 7) | get protocol(){return this._location.protocol}
method hostname (line 7) | get hostname(){return this._location.hostname}
method port (line 7) | get port(){return this._location.port}
method pathname (line 7) | get pathname(){return this._location.pathname}
method search (line 7) | get search(){return this._location.search}
method hash (line 7) | get hash(){return this._location.hash}
method pathname (line 7) | set pathname(n){this._location.pathname=n}
method pushState (line 7) | pushState(n,r,o){this._history.pushState(n,r,o)}
method replaceState (line 7) | replaceState(n,r,o){this._history.replaceState(n,r,o)}
method forward (line 7) | forward(){this._history.forward()}
method back (line 7) | back(){this._history.back()}
method historyGo (line 7) | historyGo(n=0){this._history.go(n)}
method getState (line 7) | getState(){return this._history.state}
method historyGo (line 7) | historyGo(n){throw new Error("")}
method constructor (line 7) | constructor(n,r){super(),this._platformLocation=n,this._baseHref=r??th...
method ngOnDestroy (line 7) | ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListene...
method onPopState (line 7) | onPopState(n){this._removeListenerFns.push(this._platformLocation.onPo...
method getBaseHref (line 7) | getBaseHref(){return this._baseHref}
method prepareExternalUrl (line 7) | prepareExternalUrl(n){return Xb(this._baseHref,n)}
method path (line 7) | path(n=!1){let r=this._platformLocation.pathname+Wn(this._platformLoca...
method pushState (line 7) | pushState(n,r,o,i){let s=this.prepareExternalUrl(o+Wn(i));this._platfo...
method replaceState (line 7) | replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+Wn(i));this._pla...
method forward (line 7) | forward(){this._platformLocation.forward()}
method back (line 7) | back(){this._platformLocation.back()}
method getState (line 7) | getState(){return this._platformLocation.getState()}
method historyGo (line 7) | historyGo(n=0){this._platformLocation.historyGo?.(n)}
method constructor (line 7) | constructor(n){this._locationStrategy=n;let r=this._locationStrategy.g...
method ngOnDestroy (line 7) | ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChan...
method path (line 7) | path(n=!1){return this.normalize(this._locationStrategy.path(n))}
method getState (line 7) | getState(){return this._locationStrategy.getState()}
method isCurrentPathEqualTo (line 7) | isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+Wn(r))}
method normalize (line 7) | normalize(n){return e.stripTrailingSlash(u0(this._basePath,Yb(n)))}
method prepareExternalUrl (line 7) | prepareExternalUrl(n){return n&&n[0]!=="/"&&(n="/"+n),this._locationSt...
method go (line 7) | go(n,r="",o=null){this._locationStrategy.pushState(o,"",n,r),this._not...
method replaceState (line 7) | replaceState(n,r="",o=null){this._locationStrategy.replaceState(o,"",n...
method forward (line 7) | forward(){this._locationStrategy.forward()}
method back (line 7) | back(){this._locationStrategy.back()}
method historyGo (line 7) | historyGo(n=0){this._locationStrategy.historyGo?.(n)}
method onUrlChange (line 7) | onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChange...
method _notifyUrlChangeListeners (line 7) | _notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(o=>...
method subscribe (line 7) | subscribe(n,r,o){return this._subject.subscribe({next:n,error:r??void ...
method constructor (line 7) | constructor(n,r){this._ngEl=n,this._renderer=r}
method klass (line 7) | set klass(n){this.initialClasses=n!=null?n.trim().split(tp):o_}
method ngClass (line 7) | set ngClass(n){this.rawClass=typeof n=="string"?n.trim().split(tp):n}
method ngDoCheck (line 7) | ngDoCheck(){for(let r of this.initialClasses)this._updateState(r,!0);l...
method _updateState (line 7) | _updateState(n,r){let o=this.stateMap.get(n);o!==void 0?(o.enabled!==r...
method _applyStateDiff (line 7) | _applyStateDiff(){for(let n of this.stateMap){let r=n[0],o=n[1];o.chan...
method _toggleClass (line 7) | _toggleClass(n,r){n=n.trim(),n.length>0&&n.split(tp).forEach(o=>{r?thi...
method constructor (line 7) | constructor(n){this._viewContainerRef=n}
method ngOnChanges (line 7) | ngOnChanges(n){if(this._shouldRecreateView(n)){let r=this._viewContain...
method _shouldRecreateView (line 7) | _shouldRecreateView(n){return!!n.ngTemplateOutlet||!!n.ngTemplateOutle...
method _createContextForwardProxy (line 7) | _createContextForwardProxy(){return new Proxy({},{set:(n,r,o)=>this.ng...
method constructor (line 7) | constructor(n,r,o){this.locale=n,this.defaultTimezone=r,this.defaultOp...
method transform (line 7) | transform(n,r,o,i){if(n==null||n===""||n!==n)return null;try{let s=r??...
method constructor (line 7) | constructor(n,r="USD"){this._locale=n,this._defaultCurrencyCode=r}
method transform (line 7) | transform(n,r=this._defaultCurrencyCode,o="symbol",i,s){if(!B0(n))retu...
method constructor (line 7) | constructor(n,r){this._zone=r,n.forEach(o=>{o.manager=this}),this._plu...
method addEventListener (line 7) | addEventListener(n,r,o,i){return this._findPluginFor(r).addEventListen...
method getZone (line 7) | getZone(){return this._zone}
method _findPluginFor (line 7) | _findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;i...
method constructor (line 7) | constructor(n,r,o,i={}){this.doc=n,this.appId=r,this.nonce=o,this.isSe...
method addStyles (line 7) | addStyles(n,r){for(let o of n)this.addUsage(o,this.inline,S_);r?.forEa...
method removeStyles (line 7) | removeStyles(n,r){for(let o of n)this.removeUsage(o,this.inline);r?.fo...
method addUsage (line 7) | addUsage(n,r,o){let i=r.get(n);i?i.usage++:r.set(n,{usage:1,elements:[...
method removeUsage (line 7) | removeUsage(n,r){let o=r.get(n);o&&(o.usage--,o.usage<=0&&(T_(o.elemen...
method ngOnDestroy (line 7) | ngOnDestroy(){for(let[,{elements:n}]of[...this.inline,...this.external...
method addHost (line 7) | addHost(n){this.hosts.add(n);for(let[r,{elements:o}]of this.inline)o.p...
method removeHost (line 7) | removeHost(n){this.hosts.delete(n)}
method addElement (line 7) | addElement(n,r){return this.nonce&&r.setAttribute("nonce",this.nonce),...
method constructor (line 7) | constructor(n,r,o,i,s,a,c,l=null,u=null){this.eventManager=n,this.shar...
method createRenderer (line 7) | createRenderer(n,r){if(!n||!r)return this.defaultRenderer;let o=this.g...
method getOrCreateRenderer (line 7) | getOrCreateRenderer(n,r){let o=this.rendererByCompId,i=o.get(r.id);if(...
method ngOnDestroy (line 7) | ngOnDestroy(){this.rendererByCompId.clear()}
method componentReplaced (line 7) | componentReplaced(n){this.rendererByCompId.delete(n)}
method build (line 7) | build(){return new XMLHttpRequest}
method constructor (line 7) | constructor(n){super(n)}
method supports (line 7) | supports(n){return!0}
method addEventListener (line 7) | addEventListener(n,r,o,i){return n.addEventListener(r,o,i),()=>this.re...
method removeEventListener (line 7) | removeEventListener(n,r,o,i){return n.removeEventListener(r,o,i)}
method constructor (line 7) | constructor(n){super(n)}
method supports (line 7) | supports(n){return e.parseEventName(n)!=null}
method addEventListener (line 7) | addEventListener(n,r,o,i){let s=e.parseEventName(r),a=e.eventCallback(...
method parseEventName (line 7) | static parseEventName(n){let r=n.toLowerCase().split("."),o=r.shift();...
method matchEventFullKeyCode (line 7) | static matchEventFullKeyCode(n,r){let o=tx[n.key]||n.key,i="";return r...
method eventCallback (line 7) | static eventCallback(n,r,o){return i=>{e.matchEventFullKeyCode(i,n)&&o...
method _normalizeKey (line 7) | static _normalizeKey(n){return n==="esc"?"escape":n}
method constructor (line 8) | constructor(n){this.handler=n}
method request (line 8) | request(n,r,o={}){let i;if(n instanceof Ro)i=n;else{let c;o.headers in...
method delete (line 8) | delete(n,r={}){return this.request("DELETE",n,r)}
method get (line 8) | get(n,r={}){return this.request("GET",n,r)}
method head (line 8) | head(n,r={}){return this.request("HEAD",n,r)}
method jsonp (line 8) | jsonp(n,r){return this.request("JSONP",n,{params:new Mt().append(r,"JS...
method options (line 8) | options(n,r={}){return this.request("OPTIONS",n,r)}
method patch (line 8) | patch(n,r,o={}){return this.request("PATCH",n,dp(o,r))}
method post (line 8) | post(n,r,o={}){return this.request("POST",n,dp(o,r))}
method put (line 8) | put(n,r,o={}){return this.request("PUT",n,dp(o,r))}
method constructor (line 8) | constructor(n,r){super(),this.backend=n,this.injector=r}
method handle (line 8) | handle(n){if(this.chain===null){let r=Array.from(new Set([...this.inje...
method constructor (line 8) | constructor(n){this.xhrFactory=n}
method handle (line 8) | handle(n){if(n.method==="JSONP")throw new _(-2800,!1);n.keepalive;let ...
method constructor (line 8) | constructor(n,r){this.doc=n,this.cookieName=r}
method getToken (line 8) | getToken(){let n=this.doc.cookie||"";return n!==this.lastCookieString&...
method constructor (line 8) | constructor(n){this._doc=n}
method getTitle (line 8) | getTitle(){return this._doc.title}
method setTitle (line 8) | setTitle(n){this._doc.title=n||""}
method constructor (line 8) | constructor(n){super(),this._doc=n}
method sanitize (line 8) | sanitize(n,r){if(r==null)return null;switch(n){case Tt.NONE:return r;c...
method bypassSecurityTrustHtml (line 8) | bypassSecurityTrustHtml(n){return zf(n)}
method bypassSecurityTrustStyle (line 8) | bypassSecurityTrustStyle(n){return Wf(n)}
method bypassSecurityTrustScript (line 8) | bypassSecurityTrustScript(n){return Gf(n)}
method bypassSecurityTrustUrl (line 8) | bypassSecurityTrustUrl(n){return qf(n)}
method bypassSecurityTrustResourceUrl (line 8) | bypassSecurityTrustResourceUrl(n){return Zf(n)}
method constructor (line 8) | constructor(n){this.rootInjector=n}
method onChildOutletCreated (line 8) | onChildOutletCreated(n,r){let o=this.getOrCreateContext(n);o.outlet=r,...
method onChildOutletDestroyed (line 8) | onChildOutletDestroyed(n){let r=this.getContext(n);r&&(r.outlet=null,r...
method onOutletDeactivated (line 8) | onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}
method onOutletReAttached (line 8) | onOutletReAttached(n){this.contexts=n}
method getOrCreateContext (line 8) | getOrCreateContext(n){let r=this.getContext(n);return r||(r=new Ml(thi...
method getContext (line 8) | getContext(n){return this.contexts.get(n)||null}
method activatedComponentRef (line 8) | get activatedComponentRef(){return this.activated}
method ngOnChanges (line 8) | ngOnChanges(n){if(n.name){let{firstChange:r,previousValue:o}=n.name;if...
method ngOnDestroy (line 8) | ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentCo...
method isTrackedInParentContexts (line 8) | isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?...
method ngOnInit (line 8) | ngOnInit(){this.initializeOutletWithName()}
method initializeOutletWithName (line 8) | initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated...
method isActivated (line 8) | get isActivated(){return!!this.activated}
method component (line 8) | get component(){if(!this.activated)throw new _(4012,!1);return this.ac...
method activatedRoute (line 8) | get activatedRoute(){if(!this.activated)throw new _(4012,!1);return th...
method activatedRouteData (line 8) | get activatedRouteData(){return this._activatedRoute?this._activatedRo...
method detach (line 8) | detach(){if(!this.activated)throw new _(4012,!1);this.location.detach(...
method attach (line 8) | attach(n,r){this.activated=n,this._activatedRoute=r,this.location.inse...
method deactivate (line 8) | deactivate(){if(this.activated){let n=this.component;this.activated.de...
method activateWith (line 8) | activateWith(n,r){if(this.isActivated)throw new _(4013,!1);this._activ...
method buildTitle (line 8) | buildTitle(n){let r,o=n.root;for(;o!==void 0;)r=this.getResolvedTitleF...
method getResolvedTitleForRoute (line 8) | getResolvedTitleForRoute(n){return n.data[Is]}
method constructor (line 8) | constructor(n){super(),this.title=n}
method updateTitle (line 8) | updateTitle(n){let r=this.buildTitle(n);r!==void 0&&this.title.setTitl...
method loadComponent (line 8) | loadComponent(n){if(this.componentLoaders.get(n))return this.component...
method loadChildren (line 8) | loadChildren(n,r){if(this.childrenLoaders.get(r))return this.childrenL...
method shouldProcessUrl (line 8) | shouldProcessUrl(n){return!0}
method extract (line 8) | extract(n){return n}
method merge (line 8) | merge(n,r){return n}
method hasRequestedNavigation (line 8) | get hasRequestedNavigation(){return this.navigationId!==0}
method constructor (line 8) | constructor(){let n=o=>this.events.next(new Dl(o)),r=o=>this.events.ne...
method complete (line 8) | complete(){this.transitions?.complete()}
method handleNavigationRequest (line 8) | handleNavigationRequest(n){let r=++this.navigationId;this.transitions?...
method setupNavigations (line 8) | setupNavigations(n){return this.transitions=new _e(null),this.transiti...
method cancelNavigationTransition (line 8) | cancelNavigationTransition(n,r,o){let i=new Zt(n.id,this.urlSerializer...
method isUpdatingInternalState (line 8) | isUpdatingInternalState(){return this.currentTransition?.extractedUrl....
method isUpdatedBrowserUrl (line 8) | isUpdatedBrowserUrl(){let n=this.urlHandlingStrategy.extract(this.urlS...
method getCurrentUrlTree (line 8) | getCurrentUrlTree(){return this.currentUrlTree}
method getRawUrlTree (line 8) | getRawUrlTree(){return this.rawUrlTree}
method createBrowserPath (line 8) | createBrowserPath({finalUrl:n,initialUrl:r,targetBrowserUrl:o}){let i=...
method commitTransition (line 8) | commitTransition({targetRouterState:n,finalUrl:r,initialUrl:o}){r&&n?(...
method getRouterState (line 8) | getRouterState(){return this.routerState}
method updateStateMemento (line 8) | updateStateMemento(){this.stateMemento=this.createStateMemento()}
method createStateMemento (line 8) | createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:...
method resetInternalState (line 8) | resetInternalState({finalUrl:n}){this.routerState=this.stateMemento.ro...
method restoredState (line 8) | restoredState(){return this.location.getState()}
method browserPageId (line 8) | get browserPageId(){return this.canceledNavigationResolution!=="comput...
method registerNonRouterCurrentEntryChangeListener (line 8) | registerNonRouterCurrentEntryChangeListener(n){return this.location.su...
method handleRouterEvent (line 8) | handleRouterEvent(n,r){n instanceof jr?this.updateStateMemento():n ins...
method setBrowserUrl (line 8) | setBrowserUrl(n,{extras:r,id:o}){let{replaceUrl:i,state:s}=r;if(this.l...
method restoreHistory (line 8) | restoreHistory(n,r=!1){if(this.canceledNavigationResolution==="compute...
method resetUrlToCurrentUrlTree (line 8) | resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializ...
method generateNgRouterState (line 8) | generateNgRouterState(n,r){return this.canceledNavigationResolution===...
method currentUrlTree (line 8) | get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}
method rawUrlTree (line 8) | get rawUrlTree(){return this.stateManager.getRawUrlTree()}
method events (line 8) | get events(){return this._events}
method routerState (line 8) | get routerState(){return this.stateManager.getRouterState()}
method constructor (line 8) | constructor(){this.resetConfig(this.config),this.navigationTransitions...
method subscribeToNavigationEvents (line 8) | subscribeToNavigationEvents(){let n=this.navigationTransitions.events....
method resetRootComponentType (line 8) | resetRootComponentType(n){this.routerState.root.component=n,this.navig...
method initialNavigation (line 8) | initialNavigation(){this.setUpLocationChangeListener(),this.navigation...
method setUpLocationChangeListener (line 8) | setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscrip...
method navigateToSyncWithBrowser (line 8) | navigateToSyncWithBrowser(n,r,o){let i={replaceUrl:!0},s=o?.navigation...
method url (line 8) | get url(){return this.serializeUrl(this.currentUrlTree)}
method getCurrentNavigation (line 8) | getCurrentNavigation(){return this.navigationTransitions.currentNaviga...
method lastSuccessfulNavigation (line 8) | get lastSuccessfulNavigation(){return this.navigationTransitions.lastS...
method resetConfig (line 8) | resetConfig(n){this.config=n.map(Fp),this.navigated=!1}
method ngOnDestroy (line 8) | ngOnDestroy(){this.dispose()}
method dispose (line 8) | dispose(){this._events.unsubscribe(),this.navigationTransitions.comple...
method createUrlTree (line 8) | createUrlTree(n,r={}){let{relativeTo:o,queryParams:i,fragment:s,queryP...
method navigateByUrl (line 8) | navigateByUrl(n,r={skipLocationChange:!1}){let o=Zn(n)?n:this.parseUrl...
method navigate (line 8) | navigate(n,r={skipLocationChange:!1}){return cA(n),this.navigateByUrl(...
method serializeUrl (line 8) | serializeUrl(n){return this.urlSerializer.serialize(n)}
method parseUrl (line 8) | parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.u...
method isActive (line 8) | isActive(n,r){let o;if(r===!0?o=v({},sA):r===!1?o=v({},aA):o=r,Zn(n))r...
method removeEmptyProps (line 8) | removeEmptyProps(n){return Object.entries(n).reduce((r,[o,i])=>(i!=nul...
method scheduleNavigation (line 8) | scheduleNavigation(n,r,o,i,s){if(this.disposed)return Promise.resolve(...
method href (line 8) | get href(){return zc(this.reactiveHref)}
method href (line 8) | set href(n){this.reactiveHref.set(n)}
method constructor (line 8) | constructor(n,r,o,i,s,a){this.router=n,this.route=r,this.tabIndexAttri...
method subscribeToNavigationEventsIfNecessary (line 8) | subscribeToNavigationEventsIfNecessary(){if(this.subscription!==void 0...
method setTabIndexIfNotOnNativeEl (line 8) | setTabIndexIfNotOnNativeEl(n){this.tabIndexAttribute!=null||this.isAnc...
method ngOnChanges (line 8) | ngOnChanges(n){this.isAnchorElement&&(this.updateHref(),this.subscribe...
method routerLink (line 8) | set routerLink(n){n==null?(this.routerLinkInput=null,this.setTabIndexI...
method onClick (line 8) | onClick(n,r,o,i,s){let a=this.urlTree;if(a===null||this.isAnchorElemen...
method ngOnDestroy (line 8) | ngOnDestroy(){this.subscription?.unsubscribe()}
method updateHref (line 8) | updateHref(){let n=this.urlTree;this.reactiveHref.set(n!==null&&this.l...
method applyAttributeValue (line 8) | applyAttributeValue(n,r){let o=this.renderer,i=this.el.nativeElement;r...
method urlTree (line 8) | get urlTree(){return this.routerLinkInput===null?null:Zn(this.routerLi...
method isActive (line 8) | get isActive(){return this._isActive}
method constructor (line 8) | constructor(n,r,o,i,s){this.router=n,this.element=r,this.renderer=o,th...
method ngAfterContentInit (line 8) | ngAfterContentInit(){C(this.links.changes,C(null)).pipe(In()).subscrib...
method subscribeToEachLinkOnChanges (line 8) | subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsu...
method routerLinkActive (line 8) | set routerLinkActive(n){let r=Array.isArray(n)?n:n.split(" ");this.cla...
method ngOnChanges (line 8) | ngOnChanges(n){this.update()}
method ngOnDestroy (line 8) | ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInp...
method update (line 8) | update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let ...
method isLinkActive (line 8) | isLinkActive(n){let r=dA(this.routerLinkActiveOptions)?this.routerLink...
method hasActiveLinks (line 8) | hasActiveLinks(){let n=this.isLinkActive(this.router);return this.link...
method constructor (line 8) | constructor(){}
method mostRecentModality (line 8) | get mostRecentModality(){return this._modality.value}
method constructor (line 8) | constructor(){let n=h(B),r=h(H),o=h(UE,{optional:!0});if(this._options...
method ngOnDestroy (line 8) | ngOnDestroy(){this._modality.complete(),this._listenerCleanups?.forEac...
method constructor (line 8) | constructor(){let n=h(zE,{optional:!0});this._detectionMode=n?.detecti...
method monitor (line 8) | monitor(n,r=!1){let o=Kt(n);if(!this._platform.isBrowser||o.nodeType!=...
method stopMonitoring (line 8) | stopMonitoring(n){let r=Kt(n),o=this._elementInfo.get(r);o&&(o.subject...
method focusVia (line 8) | focusVia(n,r,o){let i=Kt(n),s=this._getDocument().activeElement;i===s?...
method ngOnDestroy (line 8) | ngOnDestroy(){this._elementInfo.forEach((n,r)=>this.stopMonitoring(r))}
method _getDocument (line 8) | _getDocument(){return this._document||document}
method _getWindow (line 8) | _getWindow(){return this._getDocument().defaultView||window}
method _getFocusOrigin (line 8) | _getFocusOrigin(n){return this._origin?this._originFromTouchInteractio...
method _shouldBeAttributedToTouch (line 8) | _shouldBeAttributedToTouch(n){return this._detectionMode===Ns.EVENTUAL...
method _setClasses (line 8) | _setClasses(n,r){n.classList.toggle("cdk-focused",!!r),n.classList.tog...
method _setOrigin (line 8) | _setOrigin(n,r=!1){this._ngZone.runOutsideAngular(()=>{if(this._origin...
method _onFocus (line 8) | _onFocus(n,r){let o=this._elementInfo.get(r),i=At(n);!o||!o.checkChild...
method _onBlur (line 8) | _onBlur(n,r){let o=this._elementInfo.get(r);!o||o.checkChildren&&n.rel...
method _emitOrigin (line 8) | _emitOrigin(n,r){n.subject.observers.length&&this._ngZone.run(()=>n.su...
method _registerGlobalListeners (line 8) | _registerGlobalListeners(n){if(!this._platform.isBrowser)return;let r=...
method _removeGlobalListeners (line 8) | _removeGlobalListeners(n){let r=n.rootNode;if(this._rootNodeFocusListe...
method _originChanged (line 8) | _originChanged(n,r,o){this._setClasses(n,r),this._emitOrigin(o,r),this...
method _getClosestElementsInfo (line 8) | _getClosestElementsInfo(n){let r=[];return this._elementInfo.forEach((...
method _isLastInteractionFromInputLabel (line 8) | _isLastInteractionFromInputLabel(n){let{_mostRecentTarget:r,mostRecent...
method constructor (line 8) | constructor(){}
method focusOrigin (line 8) | get focusOrigin(){return this._focusOrigin}
method ngAfterViewInit (line 8) | ngAfterViewInit(){let n=this._elementRef.nativeElement;this._monitorSu...
method ngOnDestroy (line 8) | ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this...
method load (line 8) | load(n){let r=this._appRef=this._appRef||this._injector.get(zt),o=Ul.g...
method constructor (line 9) | constructor(){this._matchMedia=this._platform.isBrowser&&window.matchM...
method matchMedia (line 9) | matchMedia(n){return(this._platform.WEBKIT||this._platform.BLINK)&&EA(...
method constructor (line 9) | constructor(){}
method ngOnDestroy (line 9) | ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complet...
method isMatched (line 9) | isMatched(n){return GE(zp(n)).some(o=>this._registerQuery(o).mql.match...
method observe (line 9) | observe(n){let o=GE(zp(n)).map(s=>this._registerQuery(s).observable),i...
method _registerQuery (line 9) | _registerQuery(n){if(this._queries.has(n))return this._queries.get(n);...
method create (line 9) | create(n){return typeof MutationObserver>"u"?null:new MutationObserver...
method constructor (line 9) | constructor(){}
method ngOnDestroy (line 9) | ngOnDestroy(){this._observedElements.forEach((n,r)=>this._cleanupObser...
method observe (line 9) | observe(n){let r=Kt(n);return new P(o=>{let s=this._observeElement(r)....
method _observeElement (line 9) | _observeElement(n){return this._ngZone.runOutsideAngular(()=>{if(this....
method _unobserveElement (line 9) | _unobserveElement(n){this._observedElements.has(n)&&(this._observedEle...
method _cleanupObserver (line 9) | _cleanupObserver(n){if(this._observedElements.has(n)){let{observer:r,s...
method disabled (line 9) | get disabled(){return this._disabled}
method disabled (line 9) | set disabled(n){this._disabled=n,this._disabled?this._unsubscribe():th...
method debounce (line 9) | get debounce(){return this._debounce}
method debounce (line 9) | set debounce(n){this._debounce=Hp(n),this._subscribe()}
method constructor (line 9) | constructor(){}
method ngAfterContentInit (line 9) | ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this....
method ngOnDestroy (line 9) | ngOnDestroy(){this._unsubscribe()}
method _subscribe (line 9) | _subscribe(){this._unsubscribe();let n=this._contentObserver.observe(t...
method _unsubscribe (line 9) | _unsubscribe(){this._currentSubscription?.unsubscribe()}
method constructor (line 9) | constructor(){}
method isDisabled (line 9) | isDisabled(n){return n.hasAttribute("disabled")}
method isVisible (line 9) | isVisible(n){return CA(n)&&getComputedStyle(n).visibility==="visible"}
method isTabbable (line 9) | isTabbable(n){if(!this._platform.isBrowser)return!1;let r=IA(OA(n));if...
method isFocusable (line 9) | isFocusable(n,r){return NA(n)&&!this.isDisabled(n)&&(r?.ignoreVisibili...
method constructor (line 9) | constructor(){h(En).load(Vl)}
method create (line 9) | create(n,r=!1){return new $l(n,this._checker,this._ngZone,this._docume...
method constructor (line 9) | constructor(){let n=h(tD,{optional:!0});this._liveElement=n||this._cre...
method announce (line 9) | announce(n,...r){let o=this._defaultOptions,i,s;return r.length===1&&t...
method clear (line 9) | clear(){this._liveElement&&(this._liveElement.textContent="")}
method ngOnDestroy (line 9) | ngOnDestroy(){clearTimeout(this._previousTimeout),this._liveElement?.r...
method _createLiveElement (line 9) | _createLiveElement(){let n="cdk-live-announcer-element",r=this._docume...
method _exposeAnnouncerToModals (line 9) | _exposeAnnouncerToModals(n){let r=this._document.querySelectorAll('bod...
method constructor (line 9) | constructor(){this._breakpointSubscription=h(Wp).observe("(forced-colo...
method getHighContrastMode (line 9) | getHighContrastMode(){if(!this._platform.isBrowser)return Yn.NONE;let ...
method ngOnDestroy (line 9) | ngOnDestroy(){this._breakpointSubscription.unsubscribe()}
method _applyBodyHighContrastModeCssClasses (line 9) | _applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContras...
method constructor (line 9) | constructor(){h(zl)._applyBodyHighContrastModeCssClasses()}
method getId (line 9) | getId(n){return this._appId!=="ng"&&(n+=this._appId),qp.hasOwnProperty...
method constructor (line 9) | constructor(){h(En).load(Vl),this._id=h(Bn)+"-"+Qp++}
method describe (line 9) | describe(n,r,o){if(!this._canBeDescribed(n,r))return;let i=Kp(r,o);typ...
method removeDescription (line 9) | removeDescription(n,r,o){if(!r||!this._isElementNode(n))return;let i=K...
method ngOnDestroy (line 9) | ngOnDestroy(){let n=this._document.querySelectorAll(`[${Gl}="${this._i...
method _createMessageElement (line 9) | _createMessageElement(n,r){let o=this._document.createElement("div");i...
method _deleteMessageElement (line 9) | _deleteMessageElement(n){this._messageRegistry.get(n)?.messageElement?...
method _createMessagesContainer (line 9) | _createMessagesContainer(){if(this._messagesContainer)return;let n="cd...
method _removeCdkDescribedByReferenceIds (line 9) | _removeCdkDescribedByReferenceIds(n){let r=ql(n,"aria-describedby").fi...
method _addMessageReference (line 9) | _addMessageReference(n,r){let o=this._messageRegistry.get(r);UA(n,"ari...
method _removeMessageReference (line 9) | _removeMessageReference(n,r){let o=this._messageRegistry.get(r);o.refe...
method _isElementDescribedByMessage (line 9) | _isElementDescribedByMessage(n,r){let o=ql(n,"aria-describedby"),i=thi...
method _canBeDescribed (line 9) | _canBeDescribed(n,r){if(!this._isElementNode(n))return!1;if(r&&typeof ...
method _isElementNode (line 9) | _isElementNode(n){return n.nodeType===this._document.ELEMENT_NODE}
method disabled (line 10) | get disabled(){return this._disabled}
method disabled (line 10) | set disabled(n){n&&this.fadeOutAllNonPersistent(),this._disabled=n,thi...
method trigger (line 10) | get trigger(){return this._trigger||this._elementRef.nativeElement}
method trigger (line 10) | set trigger(n){this._trigger=n,this._setupTriggerEventsIfEnabled()}
method constructor (line 10) | constructor(){let n=h(B),r=h(ze),o=h(em,{optional:!0}),i=h(ae);this._g...
method ngOnInit (line 10) | ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}
method ngOnDestroy (line 10) | ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}
method fadeOutAll (line 10) | fadeOutAll(){this._rippleRenderer.fadeOutAll()}
method fadeOutAllNonPersistent (line 10) | fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}
method rippleConfig (line 10) | get rippleConfig(){return{centered:this.centered,radius:this.radius,co...
method rippleDisabled (line 10) | get rippleDisabled(){return this.disabled||!!this._globalOptions.disab...
method _setupTriggerEventsIfEnabled (line 10) | _setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&th...
method launch (line 10) | launch(n,r=0,o){return typeof n=="number"?this._rippleRenderer.fadeInR...
method constructor (line 10) | constructor(){let n=h(It).createRenderer(null,null);this._eventCleanup...
method ngOnDestroy (line 10) | ngOnDestroy(){let n=this._hosts.keys();for(let r of n)this.destroyRipp...
method configureRipple (line 10) | configureRipple(n,r){n.setAttribute(tm,this._globalRippleOptions?.name...
method setDisabled (line 10) | setDisabled(n,r){let o=this._hosts.get(n);o?(o.target.rippleDisabled=r...
method _createRipple (line 10) | _createRipple(n){if(!this._document||this._hosts.has(n))return;n.query...
method destroyRipple (line 10) | destroyRipple(n){let r=this._hosts.get(n);r&&(r.renderer._removeTrigge...
method disableRipple (line 11) | get disableRipple(){return this._disableRipple}
method disableRipple (line 11) | set disableRipple(n){this._disableRipple=n,this._updateRippleDisabled()}
method disabled (line 11) | get disabled(){return this._disabled}
method disabled (line 11) | set disabled(n){this._disabled=n,this._updateRippleDisabled()}
method _tabindex (line 11) | set _tabindex(n){this.tabIndex=n}
method constructor (line 11) | constructor(){h(En).load(mD);let n=this._elementRef.nativeElement;this...
method ngAfterViewInit (line 11) | ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0),this...
method ngOnDestroy (line 11) | ngOnDestroy(){this._cleanupClick?.(),this._focusMonitor.stopMonitoring...
method focus (line 11) | focus(n="program",r){n?this._focusMonitor.focusVia(this._elementRef.na...
method _getAriaDisabled (line 11) | _getAriaDisabled(){return this.ariaDisabled!=null?this.ariaDisabled:th...
method _getDisabledAttribute (line 11) | _getDisabledAttribute(){return this.disabledInteractive||!this.disable...
method _updateRippleDisabled (line 11) | _updateRippleDisabled(){this._rippleLoader?.setDisabled(this._elementR...
method _getTabIndex (line 11) | _getTabIndex(){return this._isAnchor?this.disabled&&!this.disabledInte...
method _setupAsAnchor (line 11) | _setupAsAnchor(){this._cleanupClick=this._ngZone.runOutsideAngular(()=...
method constructor (line 11) | constructor(){super(),this._rippleLoader.configureRipple(this._element...
method value (line 13) | get value(){return this.valueSignal()}
method constructor (line 13) | constructor(){let n=h(XA,{optional:!0});if(n){let r=n.body?n.body.dir:...
method ngOnDestroy (line 13) | ngOnDestroy(){this.change.complete()}
method constructor (line 13) | constructor(){h(zl)._applyBodyHighContrastModeCssClasses()}
method appearance (line 13) | get appearance(){return this._appearance}
method appearance (line 13) | set appearance(n){this.setAppearance(n||this._config?.defaultAppearanc...
method constructor (line 13) | constructor(){super();let n=iN(this._elementRef.nativeElement);n&&this...
method setAppearance (line 13) | setAppearance(n){if(n===this._appearance)return;let r=this._elementRef...
method constructor (line 7) | constructor(t){super(),this._lView=t}
method destroyed (line 7) | get destroyed(){return _r(this._lView)}
method onDestroy (line 7) | onDestroy(t){let n=this._lView;return Cd(n,t),()=>pg(n,t)}
function Uw (line 7) | function Uw(){return new fi(I())}
method handleError (line 7) | handleError(t){this._console.error("ERROR",t)}
function Hw (line 7) | function Hw(){return vt([rg(()=>void h(Vw))])}
function fo (line 7) | function fo(e){return typeof e=="function"&&e[be]!==void 0}
function Ve (line 7) | function Ve(e,t){let[n,r,o]=wu(e,t?.equal),i=n,s=i[be];return i.set=r,i....
function Pd (line 7) | function Pd(){let e=this[be];if(e.readonlyFn===void 0){let t=()=>this();...
function Fd (line 7) | function Fd(e){return fo(e)&&typeof e.set=="function"}
class e (line 7) | class e{view;node;constructor(n,r){this.view=n,this.node=r}static __NG_E...
method constructor (line 3) | constructor(n){n&&(this._subscribe=n)}
method lift (line 3) | lift(n){let r=new e;return r.source=this,r.operator=n,r}
method subscribe (line 3) | subscribe(n,r,o){let i=HD(n)?n:new gt(n,r,o);return Yr(()=>{let{operat...
method _trySubscribe (line 3) | _trySubscribe(n){try{return this._subscribe(n)}catch(r){n.error(r)}}
method forEach (line 3) | forEach(n,r){return r=Em(r),new r((o,i)=>{let s=new gt({next:a=>{try{n...
method _subscribe (line 3) | _subscribe(n){var r;return(r=this.source)===null||r===void 0?void 0:r....
method [Kr] (line 3) | [Kr](){return this}
method pipe (line 3) | pipe(...n){return Au(n)(this)}
method toPromise (line 3) | toPromise(n){return n=Em(n),new n((r,o)=>{let i;this.subscribe(s=>i=s,...
method constructor (line 3) | constructor(){super(),this.closed=!1,this.currentObservers=null,this.o...
method lift (line 3) | lift(n){let r=new ra(this,this);return r.operator=n,r}
method _throwIfClosed (line 3) | _throwIfClosed(){if(this.closed)throw new Dm}
method next (line 3) | next(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.current...
method error (line 3) | error(n){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasErr...
method complete (line 3) | complete(){Yr(()=>{if(this._throwIfClosed(),!this.isStopped){this.isSt...
method unsubscribe (line 3) | unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.curren...
method observed (line 3) | get observed(){var n;return((n=this.observers)===null||n===void 0?void...
method _trySubscribe (line 3) | _trySubscribe(n){return this._throwIfClosed(),super._trySubscribe(n)}
method _subscribe (line 3) | _subscribe(n){return this._throwIfClosed(),this._checkFinalizedStatuse...
method _innerSubscribe (line 3) | _innerSubscribe(n){let{hasError:r,isStopped:o,observers:i}=this;return...
method _checkFinalizedStatuses (line 3) | _checkFinalizedStatuses(n){let{hasError:r,thrownError:o,isStopped:i}=t...
method asObservable (line 3) | asObservable(){let n=new P;return n.source=this,n}
method constructor (line 7) | constructor(n,r){this.view=n,this.node=r}
method hasPendingTasks (line 7) | get hasPendingTasks(){return this.destroyed?!1:this.pendingTask.value}
method hasPendingTasksObservable (line 7) | get hasPendingTasksObservable(){return this.destroyed?new P(n=>{n.next...
method add (line 7) | add(){!this.hasPendingTasks&&!this.destroyed&&this.pendingTask.next(!0...
method has (line 7) | has(n){return this.pendingTasks.has(n)}
method remove (line 7) | remove(n){this.pendingTasks.delete(n),this.pendingTasks.size===0&&this...
method ngOnDestroy (line 7) | ngOnDestroy(){this.pendingTasks.clear(),this.hasPendingTasks&&this.pen...
method add (line 7) | add(){let n=this.internalPendingTasks.add();return()=>{this.internalPe...
method run (line 7) | run(n){let r=this.add();n().catch(this.errorHandler).finally(r)}
method constructor (line 7) | constructor(n){this.nativeElement=n}
method constructor (line 7) | constructor(n,r,o){this._declarationLView=n,this._declarationTContaine...
method ssrId (line 7) | get ssrId(){return this._declarationTContainer.tView?.ssrId||null}
method createEmbeddedView (line 7) | createEmbeddedView(n,r){return this.createEmbeddedViewImpl(n,r)}
method createEmbeddedViewImpl (line 7) | createEmbeddedViewImpl(n,r,o){let i=Bi(this._declarationLView,this._de...
method constructor (line 7) | constructor(n){this._injector=n}
method getOrCreateStandaloneInjector (line 7) | getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this...
method ngOnDestroy (line 7) | ngOnDestroy(){try{for(let n of this.cachedInjectors.values())n!==null&...
method execute (line 7) | execute(){this.impl?.execute()}
method constructor (line 7) | constructor(){h($n,{optional:!0})}
method execute (line 7) | execute(){let n=this.sequences.size>0;n&&W(16),this.executing=!0;for(l...
method register (line 7) | register(n){let{view:r}=n;r!==void 0?((r[yr]??=[]).push(n),Pn(r),r[A]|...
method addSequence (line 7) | addSequence(n){this.sequences.add(n),this.scheduler.notify(7)}
method unregister (line 7) | unregister(n){this.executing&&this.sequences.has(n)?(n.erroredOrDestro...
method maybeTrace (line 7) | maybeTrace(n,r){return r?r.run(Lc.AFTER_NEXT_RENDER,n):n()}
method log (line 7) | log(n){console.log(n)}
method warn (line 7) | warn(n){console.warn(n)}
method constructor (line 7) | constructor(){}
method runInitializers (line 7) | runInitializers(){if(this.initialized)return;let n=[];for(let o of thi...
method allViews (line 7) | get allViews(){return[...(this.includeAllTestViews?this.allTestViews:t...
method destroyed (line 7) | get destroyed(){return this._destroyed}
method isStable (line 7) | get isStable(){return this.internalPendingTask.hasPendingTasksObservab...
method constructor (line 7) | constructor(){h($n,{optional:!0})}
method whenStable (line 7) | whenStable(){let n;return new Promise(r=>{n=this.isStable.subscribe({n...
method injector (line 7) | get injector(){return this._injector}
method bootstrap (line 7) | bootstrap(n,r){return this.bootstrapImpl(n,r)}
method bootstrapImpl (line 7) | bootstrapImpl(n,r,o=ae.NULL){return this._injector.get(B).run(()=>{W(1...
method tick (line 7) | tick(){this.zonelessEnabled||(this.dirtyFlags|=1),this._tick()}
method _tick (line 7) | _tick(){W(12),this.tracingSnapshot!==null?this.tracingSnapshot.run(Lc....
method synchronize (line 7) | synchronize(){this._rendererFactory===null&&!this._injector.destroyed&...
method synchronizeOnce (line 7) | synchronizeOnce(){this.dirtyFlags&16&&(this.dirtyFlags&=-17,this.rootE...
method syncDirtyFlagsWithViews (line 7) | syncDirtyFlagsWithViews(){if(this.allViews.some(({_lView:n})=>_i(n))){...
method attachView (line 7) | attachView(n){let r=n;this._views.push(r),r.attachToAppRef(this)}
method detachView (line 7) | detachView(n){let r=n;xi(this._views,r),r.detachFromAppRef()}
method _loadComponent (line 7) | _loadComponent(n){this.attachView(n.hostView);try{this.tick()}catch(o)...
method ngOnDestroy (line 7) | ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n...
method onDestroy (line 7) | onDestroy(n){return this._destroyListeners.push(n),()=>xi(this._destro...
method destroy (line 7) | destroy(){if(this._destroyed)throw new _(406,!1);let n=this._injector;...
method viewCount (line 7) | get viewCount(){return this._views.length}
method compileModuleSync (line 7) | compileModuleSync(n){return new gc(n)}
method compileModuleAsync (line 7) | compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}
method compileModuleAndAllComponentsSync (line 7) | compileModuleAndAllComponentsSync(n){let r=this.compileModuleSync(n),o...
method compileModuleAndAllComponentsAsync (line 7) | compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.comp...
method clearCache (line 7) | clearCache(){}
method clearCacheFor (line 7) | clearCacheFor(n){}
method getModuleId (line 7) | getModuleId(n){}
method initialize (line 7) | initialize(){this._onMicrotaskEmptySubscription||(this._onMicrotaskEmp...
method ngOnDestroy (line 7) | ngOnDestroy(){this._onMicrotaskEmptySubscription?.unsubscribe()}
method initialize (line 7) | initialize(){if(this.initialized)return;this.initialized=!0;let n=null...
method ngOnDestroy (line 7) | ngOnDestroy(){this.subscription.unsubscribe()}
method constructor (line 7) | constructor(){this.subscriptions.add(this.appRef.afterTick.subscribe((...
method notify (line 7) | notify(n){if(!this.zonelessEnabled&&n===5)return;let r=!1;switch(n){ca...
method shouldScheduleTick (line 7) | shouldScheduleTick(n){return!(this.disableScheduling&&!n||this.appRef....
method tick (line 7) | tick(){if(this.runningTick||this.appRef.destroyed)return;if(this.appRe...
method ngOnDestroy (line 7) | ngOnDestroy(){this.subscriptions.unsubscribe(),this.cleanup()}
method cleanup (line 7) | cleanup(){if(this.runningTick=!1,this.cancelScheduledCallback?.(),this...
method constructor (line 7) | constructor(n){this.factories=n}
method create (line 7) | static create(n,r){if(r!=null){let o=r.factories.slice();n=n.concat(o)...
method extend (line 7) | static extend(n){return{provide:e,useFactory:r=>e.create(n,r||Bb()),de...
method find (line 7) | find(n){let r=this.factories.find(o=>o.supports(n));if(r!=null)return ...
method historyGo (line 7) | historyGo(n){throw new Error("")}
method constructor (line 7) | constructor(){super(),this._location=window.location,this._history=win...
method getBaseHrefFromDOM (line 7) | getBaseHrefFromDOM(){return gn().getBaseHref(this._doc)}
method onPopState (line 7) | onPopState(n){let r=gn().getGlobalEventTarget(this._doc,"window");retu...
method onHashChange (line 7) | onHashChange(n){let r=gn().getGlobalEventTarget(this._doc,"window");re...
method href (line 7) | get href(){return this._location.href}
method protocol (line 7) | get protocol(){return this._location.protocol}
method hostname (line 7) | get hostname(){return this._location.hostname}
method port (line 7) | get port(){return this._location.port}
method pathname (line 7) | get pathname(){return this._location.pathname}
method search (line 7) | get search(){return this._location.search}
method hash (line 7) | get hash(){return this._location.hash}
method pathname (line 7) | set pathname(n){this._location.pathname=n}
method pushState (line 7) | pushState(n,r,o){this._history.pushState(n,r,o)}
method replaceState (line 7) | replaceState(n,r,o){this._history.replaceState(n,r,o)}
method forward (line 7) | forward(){this._history.forward()}
method back (line 7) | back(){this._history.back()}
method historyGo (line 7) | historyGo(n=0){this._history.go(n)}
method getState (line 7) | getState(){return this._history.state}
method historyGo (line 7) | historyGo(n){throw new Error("")}
method constructor (line 7) | constructor(n,r){super(),this._platformLocation=n,this._baseHref=r??th...
method ngOnDestroy (line 7) | ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListene...
method onPopState (line 7) | onPopState(n){this._removeListenerFns.push(this._platformLocation.onPo...
method getBaseHref (line 7) | getBaseHref(){return this._baseHref}
method prepareExternalUrl (line 7) | prepareExternalUrl(n){return Xb(this._baseHref,n)}
method path (line 7) | path(n=!1){let r=this._platformLocation.pathname+Wn(this._platformLoca...
method pushState (line 7) | pushState(n,r,o,i){let s=this.prepareExternalUrl(o+Wn(i));this._platfo...
method replaceState (line 7) | replaceState(n,r,o,i){let s=this.prepareExternalUrl(o+Wn(i));this._pla...
method forward (line 7) | forward(){this._platformLocation.forward()}
method back (line 7) | back(){this._platformLocation.back()}
method getState (line 7) | getState(){return this._platformLocation.getState()}
method historyGo (line 7) | historyGo(n=0){this._platformLocation.historyGo?.(n)}
method constructor (line 7) | constructor(n){this._locationStrategy=n;let r=this._locationStrategy.g...
method ngOnDestroy (line 7) | ngOnDestroy(){this._urlChangeSubscription?.unsubscribe(),this._urlChan...
method path (line 7) | path(n=!1){return this.normalize(this._locationStrategy.path(n))}
method getState (line 7) | getState(){return this._locationStrategy.getState()}
method isCurrentPathEqualTo (line 7) | isCurrentPathEqualTo(n,r=""){return this.path()==this.normalize(n+Wn(r))}
method normalize (line 7) | normalize(n){return e.stripTrailingSlash(u0(this._basePath,Yb(n)))}
method prepareExternalUrl (line 7) | prepareExternalUrl(n){return n&&n[0]!=="/"&&(n="/"+n),this._locationSt...
method go (line 7) | go(n,r="",o=null){this._locationStrategy.pushState(o,"",n,r),this._not...
method replaceState (line 7) | replaceState(n,r="",o=null){this._locationStrategy.replaceState(o,"",n...
method forward (line 7) | forward(){this._locationStrategy.forward()}
method back (line 7) | back(){this._locationStrategy.back()}
method historyGo (line 7) | historyGo(n=0){this._locationStrategy.historyGo?.(n)}
method onUrlChange (line 7) | onUrlChange(n){return this._urlChangeListeners.push(n),this._urlChange...
method _notifyUrlChangeListeners (line 7) | _notifyUrlChangeListeners(n="",r){this._urlChangeListeners.forEach(o=>...
method subscribe (line 7) | subscribe(n,r,o){return this._subject.subscribe({next:n,error:r??void ...
method constructor (line 7) | constructor(n,r){this._ngEl=n,this._renderer=r}
method klass (line 7) | set klass(n){this.initialClasses=n!=null?n.trim().split(tp):o_}
method ngClass (line 7) | set ngClass(n){this.rawClass=typeof n=="string"?n.trim().split(tp):n}
method ngDoCheck (line 7) | ngDoCheck(){for(let r of this.initialClasses)this._updateState(r,!0);l...
method _updateState (line 7) | _updateState(n,r){let o=this.stateMap.get(n);o!==void 0?(o.enabled!==r...
method _applyStateDiff (line 7) | _applyStateDiff(){for(let n of this.stateMap){let r=n[0],o=n[1];o.chan...
method _toggleClass (line 7) | _toggleClass(n,r){n=n.trim(),n.length>0&&n.split(tp).forEach(o=>{r?thi...
method constructor (line 7) | constructor(n){this._viewContainerRef=n}
method ngOnChanges (line 7) | ngOnChanges(n){if(this._shouldRecreateView(n)){let r=this._viewContain...
method _shouldRecreateView (line 7) | _shouldRecreateView(n){return!!n.ngTemplateOutlet||!!n.ngTemplateOutle...
method _createContextForwardProxy (line 7) | _createContextForwardProxy(){return new Proxy({},{set:(n,r,o)=>this.ng...
method constructor (line 7) | constructor(n,r,o){this.locale=n,this.defaultTimezone=r,this.defaultOp...
method transform (line 7) | transform(n,r,o,i){if(n==null||n===""||n!==n)return null;try{let s=r??...
method constructor (line 7) | constructor(n,r="USD"){this._locale=n,this._defaultCurrencyCode=r}
method transform (line 7) | transform(n,r=this._defaultCurrencyCode,o="symbol",i,s){if(!B0(n))retu...
method constructor (line 7) | constructor(n,r){this._zone=r,n.forEach(o=>{o.manager=this}),this._plu...
method addEventListener (line 7) | addEventListener(n,r,o,i){return this._findPluginFor(r).addEventListen...
method getZone (line 7) | getZone(){return this._zone}
method _findPluginFor (line 7) | _findPluginFor(n){let r=this._eventNameToPlugin.get(n);if(r)return r;i...
method constructor (line 7) | constructor(n,r,o,i={}){this.doc=n,this.appId=r,this.nonce=o,this.isSe...
method addStyles (line 7) | addStyles(n,r){for(let o of n)this.addUsage(o,this.inline,S_);r?.forEa...
method removeStyles (line 7) | removeStyles(n,r){for(let o of n)this.removeUsage(o,this.inline);r?.fo...
method addUsage (line 7) | addUsage(n,r,o){let i=r.get(n);i?i.usage++:r.set(n,{usage:1,elements:[...
method removeUsage (line 7) | removeUsage(n,r){let o=r.get(n);o&&(o.usage--,o.usage<=0&&(T_(o.elemen...
method ngOnDestroy (line 7) | ngOnDestroy(){for(let[,{elements:n}]of[...this.inline,...this.external...
method addHost (line 7) | addHost(n){this.hosts.add(n);for(let[r,{elements:o}]of this.inline)o.p...
method removeHost (line 7) | removeHost(n){this.hosts.delete(n)}
method addElement (line 7) | addElement(n,r){return this.nonce&&r.setAttribute("nonce",this.nonce),...
method constructor (line 7) | constructor(n,r,o,i,s,a,c,l=null,u=null){this.eventManager=n,this.shar...
method createRenderer (line 7) | createRenderer(n,r){if(!n||!r)return this.defaultRenderer;let o=this.g...
method getOrCreateRenderer (line 7) | getOrCreateRenderer(n,r){let o=this.rendererByCompId,i=o.get(r.id);if(...
method ngOnDestroy (line 7) | ngOnDestroy(){this.rendererByCompId.clear()}
method componentReplaced (line 7) | componentReplaced(n){this.rendererByCompId.delete(n)}
method build (line 7) | build(){return new XMLHttpRequest}
method constructor (line 7) | constructor(n){super(n)}
method supports (line 7) | supports(n){return!0}
method addEventListener (line 7) | addEventListener(n,r,o,i){return n.addEventListener(r,o,i),()=>this.re...
method removeEventListener (line 7) | removeEventListener(n,r,o,i){return n.removeEventListener(r,o,i)}
method constructor (line 7) | constructor(n){super(n)}
method supports (line 7) | supports(n){return e.parseEventName(n)!=null}
method addEventListener (line 7) | addEventListener(n,r,o,i){let s=e.parseEventName(r),a=e.eventCallback(...
method parseEventName (line 7) | static parseEventName(n){let r=n.toLowerCase().split("."),o=r.shift();...
method matchEventFullKeyCode (line 7) | static matchEventFullKeyCode(n,r){let o=tx[n.key]||n.key,i="";return r...
method eventCallback (line 7) | static eventCallback(n,r,o){return i=>{e.matchEventFullKeyCode(i,n)&&o...
method _normalizeKey (line 7) | static _normalizeKey(n){return n==="esc"?"escape":n}
method constructor (line 8) | constructor(n){this.handler=n}
method request (line 8) | request(n,r,o={}){let i;if(n instanceof Ro)i=n;else{let c;o.headers in...
method delete (line 8) | delete(n,r={}){return this.request("DELETE",n,r)}
method get (line 8) | get(n,r={}){return this.request("GET",n,r)}
method head (line 8) | head(n,r={}){return this.request("HEAD",n,r)}
method jsonp (line 8) | jsonp(n,r){return this.request("JSONP",n,{params:new Mt().append(r,"JS...
method options (line 8) | options(n,r={}){return this.request("OPTIONS",n,r)}
method patch (line 8) | patch(n,r,o={}){return this.request("PATCH",n,dp(o,r))}
method post (line 8) | post(n,r,o={}){return this.request("POST",n,dp(o,r))}
method put (line 8) | put(n,r,o={}){return this.request("PUT",n,dp(o,r))}
method constructor (line 8) | constructor(n,r){super(),this.backend=n,this.injector=r}
method handle (line 8) | handle(n){if(this.chain===null){let r=Array.from(new Set([...this.inje...
method constructor (line 8) | constructor(n){this.xhrFactory=n}
method handle (line 8) | handle(n){if(n.method==="JSONP")throw new _(-2800,!1);n.keepalive;let ...
method constructor (line 8) | constructor(n,r){this.doc=n,this.cookieName=r}
method getToken (line 8) | getToken(){let n=this.doc.cookie||"";return n!==this.lastCookieString&...
method constructor (line 8) | constructor(n){this._doc=n}
method getTitle (line 8) | getTitle(){return this._doc.title}
method setTitle (line 8) | setTitle(n){this._doc.title=n||""}
method constructor (line 8) | constructor(n){super(),this._doc=n}
method sanitize (line 8) | sanitize(n,r){if(r==null)return null;switch(n){case Tt.NONE:return r;c...
method bypassSecurityTrustHtml (line 8) | bypassSecurityTrustHtml(n){return zf(n)}
method bypassSecurityTrustStyle (line 8) | bypassSecurityTrustStyle(n){return Wf(n)}
method bypassSecurityTrustScript (line 8) | bypassSecurityTrustScript(n){return Gf(n)}
method bypassSecurityTrustUrl (line 8) | bypassSecurityTrustUrl(n){return qf(n)}
method bypassSecurityTrustResourceUrl (line 8) | bypassSecurityTrustResourceUrl(n){return Zf(n)}
method constructor (line 8) | constructor(n){this.rootInjector=n}
method onChildOutletCreated (line 8) | onChildOutletCreated(n,r){let o=this.getOrCreateContext(n);o.outlet=r,...
method onChildOutletDestroyed (line 8) | onChildOutletDestroyed(n){let r=this.getContext(n);r&&(r.outlet=null,r...
method onOutletDeactivated (line 8) | onOutletDeactivated(){let n=this.contexts;return this.contexts=new Map,n}
method onOutletReAttached (line 8) | onOutletReAttached(n){this.contexts=n}
method getOrCreateContext (line 8) | getOrCreateContext(n){let r=this.getContext(n);return r||(r=new Ml(thi...
method getContext (line 8) | getContext(n){return this.contexts.get(n)||null}
method activatedComponentRef (line 8) | get activatedComponentRef(){return this.activated}
method ngOnChanges (line 8) | ngOnChanges(n){if(n.name){let{firstChange:r,previousValue:o}=n.name;if...
method ngOnDestroy (line 8) | ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentCo...
method isTrackedInParentContexts (line 8) | isTrackedInParentContexts(n){return this.parentContexts.getContext(n)?...
method ngOnInit (line 8) | ngOnInit(){this.initializeOutletWithName()}
method initializeOutletWithName (line 8) | initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated...
method isActivated (line 8) | get isActivated(){return!!this.activated}
method component (line 8) | get component(){if(!this.activated)throw new _(4012,!1);return this.ac...
method activatedRoute (line 8) | get activatedRoute(){if(!this.activated)throw new _(4012,!1);return th...
method activatedRouteData (line 8) | get activatedRouteData(){return this._activatedRoute?this._activatedRo...
method detach (line 8) | detach(){if(!this.activated)throw new _(4012,!1);this.location.detach(...
method attach (line 8) | attach(n,r){this.activated=n,this._activatedRoute=r,this.location.inse...
method deactivate (line 8) | deactivate(){if(this.activated){let n=this.component;this.activated.de...
method activateWith (line 8) | activateWith(n,r){if(this.isActivated)throw new _(4013,!1);this._activ...
method buildTitle (line 8) | buildTitle(n){let r,o=n.root;for(;o!==void 0;)r=this.getResolvedTitleF...
method getResolvedTitleForRoute (line 8) | getResolvedTitleForRoute(n){return n.data[Is]}
method constructor (line 8) | constructor(n){super(),this.title=n}
method updateTitle (line 8) | updateTitle(n){let r=this.buildTitle(n);r!==void 0&&this.title.setTitl...
method loadComponent (line 8) | loadComponent(n){if(this.componentLoaders.get(n))return this.component...
method loadChildren (line 8) | loadChildren(n,r){if(this.childrenLoaders.get(r))return this.childrenL...
method shouldProcessUrl (line 8) | shouldProcessUrl(n){return!0}
method extract (line 8) | extract(n){return n}
method merge (line 8) | merge(n,r){return n}
method hasRequestedNavigation (line 8) | get hasRequestedNavigation(){return this.navigationId!==0}
method constructor (line 8) | constructor(){let n=o=>this.events.next(new Dl(o)),r=o=>this.events.ne...
method complete (line 8) | complete(){this.transitions?.complete()}
method handleNavigationRequest (line 8) | handleNavigationRequest(n){let r=++this.navigationId;this.transitions?...
method setupNavigations (line 8) | setupNavigations(n){return this.transitions=new _e(null),this.transiti...
method cancelNavigationTransition (line 8) | cancelNavigationTransition(n,r,o){let i=new Zt(n.id,this.urlSerializer...
method isUpdatingInternalState (line 8) | isUpdatingInternalState(){return this.currentTransition?.extractedUrl....
method isUpdatedBrowserUrl (line 8) | isUpdatedBrowserUrl(){let n=this.urlHandlingStrategy.extract(this.urlS...
method getCurrentUrlTree (line 8) | getCurrentUrlTree(){return this.currentUrlTree}
method getRawUrlTree (line 8) | getRawUrlTree(){return this.rawUrlTree}
method createBrowserPath (line 8) | createBrowserPath({finalUrl:n,initialUrl:r,targetBrowserUrl:o}){let i=...
method commitTransition (line 8) | commitTransition({targetRouterState:n,finalUrl:r,initialUrl:o}){r&&n?(...
method getRouterState (line 8) | getRouterState(){return this.routerState}
method updateStateMemento (line 8) | updateStateMemento(){this.stateMemento=this.createStateMemento()}
method createStateMemento (line 8) | createStateMemento(){return{rawUrlTree:this.rawUrlTree,currentUrlTree:...
method resetInternalState (line 8) | resetInternalState({finalUrl:n}){this.routerState=this.stateMemento.ro...
method restoredState (line 8) | restoredState(){return this.location.getState()}
method browserPageId (line 8) | get browserPageId(){return this.canceledNavigationResolution!=="comput...
method registerNonRouterCurrentEntryChangeListener (line 8) | registerNonRouterCurrentEntryChangeListener(n){return this.location.su...
method handleRouterEvent (line 8) | handleRouterEvent(n,r){n instanceof jr?this.updateStateMemento():n ins...
method setBrowserUrl (line 8) | setBrowserUrl(n,{extras:r,id:o}){let{replaceUrl:i,state:s}=r;if(this.l...
method restoreHistory (line 8) | restoreHistory(n,r=!1){if(this.canceledNavigationResolution==="compute...
method resetUrlToCurrentUrlTree (line 8) | resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializ...
method generateNgRouterState (line 8) | generateNgRouterState(n,r){return this.canceledNavigationResolution===...
method currentUrlTree (line 8) | get currentUrlTree(){return this.stateManager.getCurrentUrlTree()}
method rawUrlTree (line 8) | get rawUrlTree(){return this.stateManager.getRawUrlTree()}
method events (line 8) | get events(){return this._events}
method routerState (line 8) | get routerState(){return this.stateManager.getRouterState()}
method constructor (line 8) | constructor(){this.resetConfig(this.config),this.navigationTransitions...
method subscribeToNavigationEvents (line 8) | subscribeToNavigationEvents(){let n=this.navigationTransitions.events....
method resetRootComponentType (line 8) | resetRootComponentType(n){this.routerState.root.component=n,this.navig...
method initialNavigation (line 8) | initialNavigation(){this.setUpLocationChangeListener(),this.navigation...
method setUpLocationChangeListener (line 8) | setUpLocationChangeListener(){this.nonRouterCurrentEntryChangeSubscrip...
method navigateToSyncWithBrowser (line 8) | navigateToSyncWithBrowser(n,r,o){let i={replaceUrl:!0},s=o?.navigation...
method url (line 8) | get url(){return this.serializeUrl(this.currentUrlTree)}
method getCurrentNavigation (line 8) | getCurrentNavigation(){return this.navigationTransitions.currentNaviga...
method lastSuccessfulNavigation (line 8) | get lastSuccessfulNavigation(){return this.navigationTransitions.lastS...
method resetConfig (line 8) | resetConfig(n){this.config=n.map(Fp),this.navigated=!1}
method ngOnDestroy (line 8) | ngOnDestroy(){this.dispose()}
method dispose (line 8) | dispose(){this._events.unsubscribe(),this.navigationTransitions.comple...
method createUrlTree (line 8) | createUrlTree(n,r={}){let{relativeTo:o,queryParams:i,fragment:s,queryP...
method navigateByUrl (line 8) | navigateByUrl(n,r={skipLocationChange:!1}){let o=Zn(n)?n:this.parseUrl...
method navigate (line 8) | navigate(n,r={skipLocationChange:!1}){return cA(n),this.navigateByUrl(...
method serializeUrl (line 8) | serializeUrl(n){return this.urlSerializer.serialize(n)}
method parseUrl (line 8) | parseUrl(n){try{return this.urlSerializer.parse(n)}catch{return this.u...
method isActive (line 8) | isActive(n,r){let o;if(r===!0?o=v({},sA):r===!1?o=v({},aA):o=r,Zn(n))r...
method removeEmptyProps (line 8) | removeEmptyProps(n){return Object.entries(n).reduce((r,[o,i])=>(i!=nul...
method scheduleNavigation (line 8) | scheduleNavigation(n,r,o,i,s){if(this.disposed)return Promise.resolve(...
method href (line 8) | get href(){return zc(this.reactiveHref)}
method href (line 8) | set href(n){this.reactiveHref.set(n)}
method constructor (line 8) | constructor(n,r,o,i,s,a){this.router=n,this.route=r,this.tabIndexAttri...
method subscribeToNavigationEventsIfNecessary (line 8) | subscribeToNavigationEventsIfNecessary(){if(this.subscription!==void 0...
method setTabIndexIfNotOnNativeEl (line 8) | setTabIndexIfNotOnNativeEl(n){this.tabIndexAttribute!=null||this.isAnc...
method ngOnChanges (line 8) | ngOnChanges(n){this.isAnchorElement&&(this.updateHref(),this.subscribe...
method routerLink (line 8) | set routerLink(n){n==null?(this.routerLinkInput=null,this.setTabIndexI...
method onClick (line 8) | onClick(n,r,o,i,s){let a=this.urlTree;if(a===null||this.isAnchorElemen...
method ngOnDestroy (line 8) | ngOnDestroy(){this.subscription?.unsubscribe()}
method updateHref (line 8) | updateHref(){let n=this.urlTree;this.reactiveHref.set(n!==null&&this.l...
method applyAttributeValue (line 8) | applyAttributeValue(n,r){let o=this.renderer,i=this.el.nativeElement;r...
method urlTree (line 8) | get urlTree(){return this.routerLinkInput===null?null:Zn(this.routerLi...
method isActive (line 8) | get isActive(){return this._isActive}
method constructor (line 8) | constructor(n,r,o,i,s){this.router=n,this.element=r,this.renderer=o,th...
method ngAfterContentInit (line 8) | ngAfterContentInit(){C(this.links.changes,C(null)).pipe(In()).subscrib...
method subscribeToEachLinkOnChanges (line 8) | subscribeToEachLinkOnChanges(){this.linkInputChangesSubscription?.unsu...
method routerLinkActive (line 8) | set routerLinkActive(n){let r=Array.isArray(n)?n:n.split(" ");this.cla...
method ngOnChanges (line 8) | ngOnChanges(n){this.update()}
method ngOnDestroy (line 8) | ngOnDestroy(){this.routerEventsSubscription.unsubscribe(),this.linkInp...
method update (line 8) | update(){!this.links||!this.router.navigated||queueMicrotask(()=>{let ...
method isLinkActive (line 8) | isLinkActive(n){let r=dA(this.routerLinkActiveOptions)?this.routerLink...
method hasActiveLinks (line 8) | hasActiveLinks(){let n=this.isLinkActive(this.router);return this.link...
method constructor (line 8) | constructor(){}
method mostRecentModality (line 8) | get mostRecentModality(){return this._
Condensed preview — 254 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,607K chars).
[
{
"path": ".github/workflows/main_skinet-course.yml",
"chars": 2259,
"preview": "# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy\r\n# More GitHub Actions for Azure: h"
},
{
"path": ".gitignore",
"chars": 7946,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n##\n## G"
},
{
"path": ".vscode/settings.json",
"chars": 2,
"preview": "{}"
},
{
"path": "API/API.csproj",
"chars": 433,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk.Web\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <Nullable>ena"
},
{
"path": "API/API.http",
"chars": 113,
"preview": "@API_HostAddress = http://localhost:5132\n\nGET {{API_HostAddress}}/weatherforecast/\nAccept: application/json\n\n###\n"
},
{
"path": "API/Controllers/AccountController.cs",
"chars": 2476,
"preview": "using System.Security.Claims;\nusing API.DTOs;\nusing API.Extensions;\nusing Core.Entities;\nusing Microsoft.AspNetCore.Auth"
},
{
"path": "API/Controllers/AdminController.cs",
"chars": 1807,
"preview": "using System;\nusing API.DTOs;\nusing API.Extensions;\nusing Core.Entities.OrderAggregate;\nusing Core.Interfaces;\nusing Cor"
},
{
"path": "API/Controllers/BaseApiController.cs",
"chars": 1222,
"preview": "using System;\nusing API.RequestHelpers;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.AspNetCore.Mvc;\n\nnam"
},
{
"path": "API/Controllers/BuggyController.cs",
"chars": 1589,
"preview": "using System.Security.Claims;\nusing API.DTOs;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Mvc;\n"
},
{
"path": "API/Controllers/CartController.cs",
"chars": 739,
"preview": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\np"
},
{
"path": "API/Controllers/CouponsController.cs",
"chars": 481,
"preview": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\np"
},
{
"path": "API/Controllers/FallbackController.cs",
"chars": 295,
"preview": "using System;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\npublic class FallbackController : Controller\n"
},
{
"path": "API/Controllers/OrdersController.cs",
"chars": 2955,
"preview": "using System;\nusing API.DTOs;\nusing API.Extensions;\nusing Core.Entities;\nusing Core.Entities.OrderAggregate;\nusing Core."
},
{
"path": "API/Controllers/PaymentsController.cs",
"chars": 3510,
"preview": "using System;\nusing API.Extensions;\nusing API.SignalR;\nusing Core.Entities;\nusing Core.Entities.OrderAggregate;\nusing Co"
},
{
"path": "API/Controllers/ProductsController.cs",
"chars": 2908,
"preview": "using API.RequestHelpers;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Core.Specifications;\nusing Microsoft.AspNetC"
},
{
"path": "API/Controllers/WeatherForecastController.cs",
"chars": 935,
"preview": "using Microsoft.AspNetCore.Mvc;\n\nnamespace API.Controllers;\n\n[ApiController]\n[Route(\"[controller]\")]\npublic class Weathe"
},
{
"path": "API/DTOs/AddressDto.cs",
"chars": 479,
"preview": "using System;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace API.DTOs;\n\npublic class AddressDto\n{\n [Required"
},
{
"path": "API/DTOs/CreateOrderDto.cs",
"chars": 485,
"preview": "using System;\nusing System.ComponentModel.DataAnnotations;\nusing Core.Entities.OrderAggregate;\n\nnamespace API.DTOs;\n\npub"
},
{
"path": "API/DTOs/CreateProductDto.cs",
"chars": 735,
"preview": "using System;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace API.DTOs;\n\npublic class CreateProductDto\n{\n [Re"
},
{
"path": "API/DTOs/OrderDto.cs",
"chars": 751,
"preview": "using System;\nusing Core.Entities.OrderAggregate;\n\nnamespace API.DTOs;\n\npublic class OrderDto\n{\n public int Id { get;"
},
{
"path": "API/DTOs/OrderItemDto.cs",
"chars": 287,
"preview": "using System;\n\nnamespace API.DTOs;\n\npublic class OrderItemDto\n{\n public int ProductId { get; set; }\n public requir"
},
{
"path": "API/DTOs/RegisterDto.cs",
"chars": 380,
"preview": "using System;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace API.DTOs;\n\npublic class RegisterDto\n{\n [Require"
},
{
"path": "API/Errors/ApiErrorResponse.cs",
"chars": 277,
"preview": "using System;\n\nnamespace API.Errors;\n\npublic class ApiErrorResponse(int statusCode, string message, string? details)\n{\n "
},
{
"path": "API/Extensions/AddressMappingExtensions.cs",
"chars": 1487,
"preview": "using System;\nusing API.DTOs;\nusing Core.Entities;\n\nnamespace API.Extensions;\n\npublic static class AddressMappingExtensi"
},
{
"path": "API/Extensions/ClaimsPrincipalExtensions.cs",
"chars": 1255,
"preview": "using System;\nusing System.Security.Authentication;\nusing System.Security.Claims;\nusing Core.Entities;\nusing Microsoft.A"
},
{
"path": "API/Extensions/OrderMappingExtensions.cs",
"chars": 1260,
"preview": "using System;\nusing API.DTOs;\nusing Core.Entities.OrderAggregate;\n\nnamespace API.Extensions;\n\npublic static class OrderM"
},
{
"path": "API/Middleware/ExceptionMiddleware.cs",
"chars": 1125,
"preview": "using System;\nusing System.Net;\nusing System.Text.Json;\nusing API.Errors;\n\nnamespace API.Middleware;\n\npublic class Excep"
},
{
"path": "API/Program.cs",
"chars": 2508,
"preview": "using API.Middleware;\nusing API.SignalR;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Infrastructure.Data;\nusing In"
},
{
"path": "API/Properties/launchSettings.json",
"chars": 344,
"preview": "{\n \"$schema\": \"https://json.schemastore.org/launchsettings.json\",\n \"profiles\": {\n \"https\": {\n \"commandName\": "
},
{
"path": "API/RequestHelpers/CachedAttribute.cs",
"chars": 1775,
"preview": "using System;\nusing System.Text;\nusing Core.Interfaces;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.F"
},
{
"path": "API/RequestHelpers/InvalidateCacheAttribute.cs",
"chars": 693,
"preview": "using System;\nusing Core.Interfaces;\nusing Microsoft.AspNetCore.Mvc.Filters;\n\nnamespace API.RequestHelpers;\n\n[AttributeU"
},
{
"path": "API/RequestHelpers/Pagination.cs",
"chars": 360,
"preview": "using System;\n\nnamespace API.RequestHelpers;\n\npublic class Pagination<T>(int pageIndex, int pageSize, int count, IReadOn"
},
{
"path": "API/SignalR/NotificationHub.cs",
"chars": 1010,
"preview": "using System;\nusing System.Collections.Concurrent;\nusing API.Extensions;\nusing Microsoft.AspNetCore.Authorization;\nusing"
},
{
"path": "API/WeatherForecast.cs",
"chars": 240,
"preview": "namespace API;\n\npublic class WeatherForecast\n{\n public DateOnly Date { get; set; }\n\n public int TemperatureC { get"
},
{
"path": "API/appsettings.Development.json",
"chars": 302,
"preview": "{\n \"Logging\": {\n \"LogLevel\": {\n \"Default\": \"Information\",\n \"Microsoft.AspNetCore\": \"Information\"\n }\n }"
},
{
"path": "API/wwwroot/3rdpartylicenses.txt",
"chars": 24302,
"preview": "\n--------------------------------------------------------------------------------\nPackage: @angular/material\nLicense: \"M"
},
{
"path": "API/wwwroot/chunk-6SXQ2FRE.js",
"chars": 278,
"preview": "import{f as t,g as m}from\"./chunk-SP3SSILU.js\";import\"./chunk-MIKQGBUF.js\";import\"./chunk-HJYZM75B.js\";import{a as o}fro"
},
{
"path": "API/wwwroot/chunk-76XFCVV7.js",
"chars": 434202,
"preview": "var TD=Object.defineProperty,SD=Object.defineProperties;var MD=Object.getOwnPropertyDescriptors;var am=Object.getOwnProp"
},
{
"path": "API/wwwroot/chunk-BU6XFQYD.js",
"chars": 1394,
"preview": "import{P as d,T as f,Wb as c,ec as $,wa as a}from\"./chunk-76XFCVV7.js\";var y=class e{baseUrl=$.baseUrl;http=f(c);orderCo"
},
{
"path": "API/wwwroot/chunk-HJYZM75B.js",
"chars": 15661,
"preview": "import{i as I}from\"./chunk-YYNGFOZ2.js\";import{$ as p,B as L,D as k,Db as q,F as V,Fa as W,Jc as T,Kb as G,M as v,P as E"
},
{
"path": "API/wwwroot/chunk-LMQANEB2.js",
"chars": 5739,
"preview": "import{a as V}from\"./chunk-MIKQGBUF.js\";import{a as b,b as q,c as z}from\"./chunk-BU6XFQYD.js\";import{a as O}from\"./chunk"
},
{
"path": "API/wwwroot/chunk-MIKQGBUF.js",
"chars": 607,
"preview": "import{P as i,T as n,Vb as a,Wb as p,ec as o}from\"./chunk-76XFCVV7.js\";var s=class e{baseUrl=o.baseUrl;http=n(p);getOrde"
},
{
"path": "API/wwwroot/chunk-NEILRAN2.js",
"chars": 266,
"preview": "import{T as t,ac as o,ad as u,m as e,r as n}from\"./chunk-76XFCVV7.js\";var A=(m,a)=>{let r=t(u),c=t(o);return r.currentUs"
},
{
"path": "API/wwwroot/chunk-PEWDZYDO.js",
"chars": 5898,
"preview": "import{Jc as c,Q as n,R as o,T as m,Xa as g,Ya as u,gb as i,ta as s,ua as l,va as d}from\"./chunk-76XFCVV7.js\";var p=[\"*\""
},
{
"path": "API/wwwroot/chunk-SP3SSILU.js",
"chars": 180802,
"preview": "import{a as Ba}from\"./chunk-MIKQGBUF.js\";import{a as da,b as ma,d as It,e as xa}from\"./chunk-HJYZM75B.js\";import{$ as Fa"
},
{
"path": "API/wwwroot/chunk-TEKFR3M2.js",
"chars": 11442,
"preview": "import{a as Y}from\"./chunk-HJYZM75B.js\";import{a as le}from\"./chunk-VOFQZSPR.js\";import{B as $,G as ee,H as te,I as re,J"
},
{
"path": "API/wwwroot/chunk-VOFQZSPR.js",
"chars": 9603,
"preview": "import{D as P,F as L,I as V,N as B,W as x,X as M,Z as O,_ as z}from\"./chunk-YYNGFOZ2.js\";import{Aa as h,Ac as D,Cb as H,"
},
{
"path": "API/wwwroot/chunk-WAIB6SCQ.js",
"chars": 4791,
"preview": "import{a as S}from\"./chunk-PEWDZYDO.js\";import{a as D}from\"./chunk-VOFQZSPR.js\";import{B as F,D as u,F as O,G as d,H as "
},
{
"path": "API/wwwroot/chunk-YYNGFOZ2.js",
"chars": 165531,
"preview": "import{$a as w,Aa as x,Ab as ie,Ac as le,Ba as me,Bb as Z,Bc as Hi,Ca as Mi,E as Nt,Ea as Oi,Fa as pe,G as Lt,Ga as R,Gb"
},
{
"path": "API/wwwroot/chunk-Z2NTM2YJ.js",
"chars": 101686,
"preview": "import{a as oe,b as Zt,c as Xt}from\"./chunk-TEKFR3M2.js\";import{a as Bt,b as Nt,c as jt}from\"./chunk-HJYZM75B.js\";import"
},
{
"path": "API/wwwroot/index.html",
"chars": 31258,
"preview": "<!doctype html>\n<html lang=\"en\" data-beasties-container>\n<head><link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" c"
},
{
"path": "API/wwwroot/main-627RABRE.js",
"chars": 125295,
"preview": "import{a as Ri,b as Oi,c as Fi,d as zi,e as Xi,f as Ki,g as Ji}from\"./chunk-SP3SSILU.js\";import\"./chunk-MIKQGBUF.js\";imp"
},
{
"path": "API/wwwroot/polyfills-B6TNHZQ6.js",
"chars": 34579,
"preview": "var ce=globalThis;function te(t){return(ce.__Zone_symbol_prefix||\"__zone_symbol__\")+t}function ht(){let t=ce.performance"
},
{
"path": "API/wwwroot/prerendered-routes.json",
"chars": 18,
"preview": "{\n \"routes\": {}\n}"
},
{
"path": "API/wwwroot/styles-COVWXBF4.css",
"chars": 30344,
"preview": "html{--mat-sys-background: #faf9fd;--mat-sys-error: #ba1a1a;--mat-sys-error-container: #ffdad6;--mat-sys-inverse-on-surf"
},
{
"path": "Core/Core.csproj",
"chars": 325,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <PropertyGroup>\n <TargetFramework>net9.0</TargetFramework>\n <ImplicitUsings>"
},
{
"path": "Core/Entities/Address.cs",
"chars": 359,
"preview": "using System;\n\nnamespace Core.Entities;\n\npublic class Address : BaseEntity\n{\n public required string Line1 { get; set"
},
{
"path": "Core/Entities/AppCoupon.cs",
"chars": 308,
"preview": "using System;\n\nnamespace Core.Entities;\n\npublic class AppCoupon\n{\n public required string Name { get; set; }\n publ"
},
{
"path": "Core/Entities/AppUser.cs",
"chars": 246,
"preview": "using System;\nusing Microsoft.AspNetCore.Identity;\n\nnamespace Core.Entities;\n\npublic class AppUser : IdentityUser\n{\n "
},
{
"path": "Core/Entities/BaseEntity.cs",
"chars": 101,
"preview": "using System;\n\nnamespace Core.Entities;\n\npublic class BaseEntity\n{\n public int Id { get; set; }\n}\n"
},
{
"path": "Core/Entities/CartItem.cs",
"chars": 380,
"preview": "using System;\n\nnamespace Core.Entities;\n\npublic class CartItem\n{\n public int ProductId { get; set; }\n public requi"
},
{
"path": "Core/Entities/DeliveryMethod.cs",
"chars": 283,
"preview": "using System;\n\nnamespace Core.Entities;\n\npublic class DeliveryMethod : BaseEntity\n{\n public required string ShortName"
},
{
"path": "Core/Entities/OrderAggregate/Order.cs",
"chars": 810,
"preview": "using System;\nusing Core.Interfaces;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic class Order : BaseEntity, IDtoConv"
},
{
"path": "Core/Entities/OrderAggregate/OrderItem.cs",
"chars": 238,
"preview": "using System;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic class OrderItem : BaseEntity\n{\n public ProductItemOrde"
},
{
"path": "Core/Entities/OrderAggregate/OrderStatus.cs",
"chars": 192,
"preview": "using System.Runtime.Serialization;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic enum OrderStatus\n{\n Pending,\n "
},
{
"path": "Core/Entities/OrderAggregate/PaymentSummary.cs",
"chars": 245,
"preview": "using System;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic class PaymentSummary\n{\n public int Last4 { get; set; }"
},
{
"path": "Core/Entities/OrderAggregate/ProductItemOrdered.cs",
"chars": 236,
"preview": "using System;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic class ProductItemOrdered\n{\n public int ProductId { get"
},
{
"path": "Core/Entities/OrderAggregate/ShippingAddress.cs",
"chars": 415,
"preview": "using System;\n\nnamespace Core.Entities.OrderAggregate;\n\npublic class ShippingAddress\n{\n public required string Name {"
},
{
"path": "Core/Entities/Product.cs",
"chars": 407,
"preview": "using System;\n\nnamespace Core.Entities;\n\npublic class Product : BaseEntity\n{\n public required string Name { get; set;"
},
{
"path": "Core/Entities/ShoppingCart.cs",
"chars": 351,
"preview": "using System;\n\nnamespace Core.Entities;\n\npublic class ShoppingCart\n{\n public required string Id { get; set; }\n pub"
},
{
"path": "Core/Interfaces/ICartService.cs",
"chars": 250,
"preview": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface ICartService\n{\n Task<ShoppingCart?> "
},
{
"path": "Core/Interfaces/ICouponService.cs",
"chars": 158,
"preview": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface ICouponService\n{\n Task<AppCoupon?> G"
},
{
"path": "Core/Interfaces/IDtoConvertible.cs",
"chars": 81,
"preview": "using System;\n\nnamespace Core.Interfaces;\n\npublic interface IDtoConvertible\n{\n\n}\n"
},
{
"path": "Core/Interfaces/IGenericRepository.cs",
"chars": 642,
"preview": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface IGenericRepository<T> where T : BaseEnt"
},
{
"path": "Core/Interfaces/IPaymentService.cs",
"chars": 225,
"preview": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface IPaymentService\n{\n Task<ShoppingCart"
},
{
"path": "Core/Interfaces/IProductRepository.cs",
"chars": 537,
"preview": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface IProductRepository\n{\n \n Task<IRea"
},
{
"path": "Core/Interfaces/IResponseCacheService.cs",
"chars": 276,
"preview": "using System;\n\nnamespace Core.Interfaces;\n\npublic interface IResponseCacheService\n{\n Task CacheResponseAsync(string c"
},
{
"path": "Core/Interfaces/ISpecification.cs",
"chars": 667,
"preview": "using System;\nusing System.Linq.Expressions;\n\nnamespace Core.Interfaces;\n\npublic interface ISpecification<T>\n{\n Expre"
},
{
"path": "Core/Interfaces/IUnitOfWork.cs",
"chars": 220,
"preview": "using System;\nusing Core.Entities;\n\nnamespace Core.Interfaces;\n\npublic interface IUnitOfWork : IDisposable\n{\n IGeneri"
},
{
"path": "Core/Specifications/BaseSpecification.cs",
"chars": 2254,
"preview": "using System;\nusing System.Linq.Expressions;\nusing Core.Interfaces;\n\nnamespace Core.Specifications;\n\npublic class BaseSp"
},
{
"path": "Core/Specifications/BrandListSpecification.cs",
"chars": 251,
"preview": "using System;\nusing Core.Entities;\n\nnamespace Core.Specifications;\n\npublic class BrandListSpecification : BaseSpecificat"
},
{
"path": "Core/Specifications/OrderSpecParams.cs",
"chars": 135,
"preview": "using System;\n\nnamespace Core.Specifications;\n\npublic class OrderSpecParams : PagingParams\n{\n public string? Status {"
},
{
"path": "Core/Specifications/OrderSpecification.cs",
"chars": 1507,
"preview": "using System;\nusing Core.Entities.OrderAggregate;\n\nnamespace Core.Specifications;\n\npublic class OrderSpecification : Bas"
},
{
"path": "Core/Specifications/PagingParams.cs",
"chars": 327,
"preview": "using System;\n\nnamespace Core.Specifications;\n\npublic class PagingParams\n{\n private const int MaxPageSize = 50;\n p"
},
{
"path": "Core/Specifications/ProductSpecParams.cs",
"chars": 798,
"preview": "using System;\n\nnamespace Core.Specifications;\n\npublic class ProductSpecParams : PagingParams\n{\n\n private List<string>"
},
{
"path": "Core/Specifications/ProductSpecification.cs",
"chars": 969,
"preview": "using System;\nusing Core.Entities;\n\nnamespace Core.Specifications;\n\npublic class ProductSpecification : BaseSpecificatio"
},
{
"path": "Core/Specifications/TypeListSpecification.cs",
"chars": 247,
"preview": "using System;\nusing Core.Entities;\n\nnamespace Core.Specifications;\n\npublic class TypeListSpecification : BaseSpecificati"
},
{
"path": "Infrastructure/Config/DeliveryMethodConfiguration.cs",
"chars": 402,
"preview": "using System;\nusing Core.Entities;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Bui"
},
{
"path": "Infrastructure/Config/OrderConfiguration.cs",
"chars": 1019,
"preview": "using System;\nusing Core.Entities.OrderAggregate;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCo"
},
{
"path": "Infrastructure/Config/OrderItemConfiguration.cs",
"chars": 459,
"preview": "using System;\nusing Core.Entities.OrderAggregate;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCo"
},
{
"path": "Infrastructure/Config/ProductConfiguration.cs",
"chars": 433,
"preview": "using System;\nusing Core.Entities;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Bui"
},
{
"path": "Infrastructure/Config/RoleConfiguration.cs",
"chars": 552,
"preview": "using System;\nusing Microsoft.AspNetCore.Identity;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkC"
},
{
"path": "Infrastructure/Data/GenericRepository.cs",
"chars": 2113,
"preview": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Infrastructure"
},
{
"path": "Infrastructure/Data/ProductRepository.cs",
"chars": 1912,
"preview": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Infrastructure"
},
{
"path": "Infrastructure/Data/SeedData/delivery.json",
"chars": 508,
"preview": "[\n {\n \"ShortName\": \"UPS1\",\n \"Description\": \"Fastest delivery time\",\n \"DeliveryTime\": \"1-2 Days\",\n \"Price\": "
},
{
"path": "Infrastructure/Data/SeedData/products.json",
"chars": 6018,
"preview": "[\n {\n \"Name\": \"Angular Speedster Board 2000\",\n \"Description\": \"Lorem ipsum dolor sit amet, consectetuer adipiscin"
},
{
"path": "Infrastructure/Data/SpecificationEvaluator.cs",
"chars": 2060,
"preview": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Infrastructure"
},
{
"path": "Infrastructure/Data/StoreContext.cs",
"chars": 803,
"preview": "using System;\nusing Core.Entities;\nusing Core.Entities.OrderAggregate;\nusing Infrastructure.Config;\nusing Microsoft.AspN"
},
{
"path": "Infrastructure/Data/StoreContextSeed.cs",
"chars": 1516,
"preview": "using System;\nusing System.Reflection;\nusing System.Text.Json;\nusing Core.Entities;\nusing Microsoft.AspNetCore.Identity;"
},
{
"path": "Infrastructure/Data/UnitOfWork.cs",
"chars": 959,
"preview": "using System;\nusing System.Collections.Concurrent;\nusing Core.Entities;\nusing Core.Interfaces;\n\nnamespace Infrastructure"
},
{
"path": "Infrastructure/Infrastructure.csproj",
"chars": 728,
"preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n <ItemGroup>\n <None Include=\"Data\\SeedData\\**\" CopyToOutputDirectory=\"PreserveNe"
},
{
"path": "Infrastructure/Migrations/20250622053300_InitialCreate.Designer.cs",
"chars": 2283,
"preview": "// <auto-generated />\nusing Infrastructure;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Micro"
},
{
"path": "Infrastructure/Migrations/20250622053300_InitialCreate.cs",
"chars": 1574,
"preview": "using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n /// <inhe"
},
{
"path": "Infrastructure/Migrations/20250629083129_IdentityAdded.Designer.cs",
"chars": 11827,
"preview": "// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.Ent"
},
{
"path": "Infrastructure/Migrations/20250629083129_IdentityAdded.cs",
"chars": 10354,
"preview": "using System;\nusing Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{"
},
{
"path": "Infrastructure/Migrations/20250629085927_AddressAdded.Designer.cs",
"chars": 13519,
"preview": "// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.Ent"
},
{
"path": "Infrastructure/Migrations/20250629085927_AddressAdded.cs",
"chars": 2490,
"preview": "using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n /// <inhe"
},
{
"path": "Infrastructure/Migrations/20250630014631_DeliveryMethodsAdded.Designer.cs",
"chars": 14521,
"preview": "// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.Ent"
},
{
"path": "Infrastructure/Migrations/20250630014631_DeliveryMethodsAdded.cs",
"chars": 1343,
"preview": "using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n /// <inhe"
},
{
"path": "Infrastructure/Migrations/20250630074200_OrderEntityAdded.Designer.cs",
"chars": 21304,
"preview": "// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.Ent"
},
{
"path": "Infrastructure/Migrations/20250630074200_OrderEntityAdded.cs",
"chars": 4692,
"preview": "using System;\nusing Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{"
},
{
"path": "Infrastructure/Migrations/20250701034848_CouponsAdded.Designer.cs",
"chars": 21406,
"preview": "// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.Ent"
},
{
"path": "Infrastructure/Migrations/20250701034848_CouponsAdded.cs",
"chars": 763,
"preview": "using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\nnamespace Infrastructure.Migrations\n{\n /// <inhe"
},
{
"path": "Infrastructure/Migrations/20250701045119_RolesAdded.Designer.cs",
"chars": 21890,
"preview": "// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.Ent"
},
{
"path": "Infrastructure/Migrations/20250701045119_RolesAdded.cs",
"chars": 1183,
"preview": "using Microsoft.EntityFrameworkCore.Migrations;\n\n#nullable disable\n\n#pragma warning disable CA1814 // Prefer jagged arr"
},
{
"path": "Infrastructure/Migrations/StoreContextModelSnapshot.cs",
"chars": 21795,
"preview": "// <auto-generated />\nusing System;\nusing Infrastructure.Data;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.Ent"
},
{
"path": "Infrastructure/Services/CartService.cs",
"chars": 922,
"preview": "using System;\nusing System.Text.Json;\nusing Core.Entities;\nusing Core.Interfaces;\nusing StackExchange.Redis;\n\nnamespace "
},
{
"path": "Infrastructure/Services/CouponService.cs",
"chars": 1157,
"preview": "using System;\nusing Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.Extensions.Configuration;\nusing Stripe;\n\nnames"
},
{
"path": "Infrastructure/Services/PaymentService.cs",
"chars": 3973,
"preview": "using Core.Entities;\nusing Core.Interfaces;\nusing Microsoft.Extensions.Configuration;\nusing Stripe;\n\nnamespace Infrastru"
},
{
"path": "Infrastructure/Services/ResponseCacheService.cs",
"chars": 1296,
"preview": "using System;\nusing System.Text.Json;\nusing Core.Interfaces;\nusing StackExchange.Redis;\n\nnamespace Infrastructure.Servic"
},
{
"path": "README.MD",
"chars": 3784,
"preview": "# Skinet Project Repository\n\nWelcome to the brand new version of the SkiNet app created for the Udemy training course av"
},
{
"path": "client/.editorconfig",
"chars": 314,
"preview": "# Editor configuration, see https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size ="
},
{
"path": "client/.gitignore",
"chars": 587,
"preview": "# See https://docs.github.com/get-started/getting-started-with-git/ignoring-files for more about ignoring files.\n\n# Comp"
},
{
"path": "client/.postcssrc.json",
"chars": 53,
"preview": "{\n \"plugins\": {\n \"@tailwindcss/postcss\": {}\n }\n}"
},
{
"path": "client/.vscode/extensions.json",
"chars": 130,
"preview": "{\n // For more information, visit: https://go.microsoft.com/fwlink/?linkid=827846\n \"recommendations\": [\"angular.ng-tem"
},
{
"path": "client/.vscode/launch.json",
"chars": 470,
"preview": "{\n // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387\n \"version\": \"0.2.0\",\n \"configuratio"
},
{
"path": "client/.vscode/tasks.json",
"chars": 938,
"preview": "{\n // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558\n \"version\": \"2.0.0\",\n \"tasks\": [\n "
},
{
"path": "client/README.md",
"chars": 1469,
"preview": "# Client\n\nThis project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 20.0.4.\n\n## Dev"
},
{
"path": "client/angular.json",
"chars": 3332,
"preview": "{\n \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n \"version\": 1,\n \"newProjectRoot\": \"projects\",\n \""
},
{
"path": "client/package.json",
"chars": 1313,
"preview": "{\n \"name\": \"client\",\n \"version\": \"0.0.0\",\n \"scripts\": {\n \"ng\": \"ng\",\n \"start\": \"ng serve\",\n \"build\": \"ng bui"
},
{
"path": "client/src/app/app.component.html",
"chars": 97,
"preview": "<app-header></app-header>\n\n<div class=\"container mt-24\">\n <router-outlet></router-outlet>\n</div>"
},
{
"path": "client/src/app/app.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/app.component.ts",
"chars": 368,
"preview": "import { Component } from '@angular/core';\nimport { RouterOutlet } from '@angular/router';\nimport { HeaderComponent } fr"
},
{
"path": "client/src/app/app.config.ts",
"chars": 1406,
"preview": "import { ApplicationConfig, inject, provideAppInitializer, provideBrowserGlobalErrorListeners, provideZoneChangeDetectio"
},
{
"path": "client/src/app/app.routes.ts",
"chars": 1818,
"preview": "import { Routes } from '@angular/router';\nimport { HomeComponent } from './features/home/home.component';\nimport { ShopC"
},
{
"path": "client/src/app/app.spec.ts",
"chars": 664,
"preview": "import { TestBed } from '@angular/core/testing';\nimport { App } from './app';\n\ndescribe('App', () => {\n beforeEach(asyn"
},
{
"path": "client/src/app/core/guards/admin-guard.ts",
"chars": 556,
"preview": "import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { AccountService"
},
{
"path": "client/src/app/core/guards/auth-guard.ts",
"chars": 691,
"preview": "import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { AccountService"
},
{
"path": "client/src/app/core/guards/empty-cart-guard.ts",
"chars": 586,
"preview": "import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { CartService } "
},
{
"path": "client/src/app/core/guards/order-complete-guard.ts",
"chars": 428,
"preview": "import { inject } from '@angular/core';\nimport { CanActivateFn, Router } from '@angular/router';\nimport { OrderService }"
},
{
"path": "client/src/app/core/interceptors/auth-interceptor.ts",
"chars": 228,
"preview": "import { HttpInterceptorFn } from '@angular/common/http';\n\nexport const authInterceptor: HttpInterceptorFn = (req, next)"
},
{
"path": "client/src/app/core/interceptors/error-interceptor.ts",
"chars": 1401,
"preview": "import { HttpErrorResponse, HttpInterceptorFn } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimp"
},
{
"path": "client/src/app/core/interceptors/loading-interceptor.ts",
"chars": 536,
"preview": "import { HttpInterceptorFn } from '@angular/common/http';\nimport { delay, finalize, identity } from 'rxjs';\nimport { Bus"
},
{
"path": "client/src/app/core/services/account.service.ts",
"chars": 1855,
"preview": "import { computed, inject, Injectable, signal } from '@angular/core';\nimport { environment } from '../../../environments"
},
{
"path": "client/src/app/core/services/admin.service.ts",
"chars": 1131,
"preview": "import { inject, Injectable } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimp"
},
{
"path": "client/src/app/core/services/busy.service.ts",
"chars": 377,
"preview": "import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BusyService {\n loading "
},
{
"path": "client/src/app/core/services/cart.service.ts",
"chars": 3819,
"preview": "import { computed, inject, Injectable, signal } from '@angular/core';\nimport { environment } from '../../../environments"
},
{
"path": "client/src/app/core/services/checkout.service.ts",
"chars": 775,
"preview": "import { inject, Injectable } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimp"
},
{
"path": "client/src/app/core/services/dialog.service.ts",
"chars": 623,
"preview": "import { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { first"
},
{
"path": "client/src/app/core/services/init.service.ts",
"chars": 803,
"preview": "import { inject, Injectable } from '@angular/core';\nimport { forkJoin, of, tap } from 'rxjs';\nimport { CartService } fro"
},
{
"path": "client/src/app/core/services/order.service.ts",
"chars": 713,
"preview": "import { inject, Injectable } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimp"
},
{
"path": "client/src/app/core/services/shop.service.ts",
"chars": 1739,
"preview": "import { HttpClient, HttpParams } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimpor"
},
{
"path": "client/src/app/core/services/signalr.service.ts",
"chars": 1005,
"preview": "import { Injectable, signal } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimp"
},
{
"path": "client/src/app/core/services/snackbar.service.ts",
"chars": 499,
"preview": "import { inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from \"@angular/material/snack-bar\";\n\n@Injecta"
},
{
"path": "client/src/app/core/services/stripe.service.ts",
"chars": 4597,
"preview": "import { inject, Injectable } from '@angular/core';\nimport { environment } from '../../../environments/environment';\nimp"
},
{
"path": "client/src/app/features/account/login/login.component.html",
"chars": 878,
"preview": "<mat-card class=\"max-w-lg mx-auto mt-32 p-8 bg-white\">\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\n "
},
{
"path": "client/src/app/features/account/login/login.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/account/login/login.component.ts",
"chars": 1339,
"preview": "import { Component, inject } from '@angular/core';\nimport { ReactiveFormsModule, FormBuilder } from '@angular/forms';\nim"
},
{
"path": "client/src/app/features/account/register/register.component.html",
"chars": 1067,
"preview": "<mat-card class=\"max-w-lg mx-auto mt-32 p-8 bg-white\">\n <form [formGroup]=\"registerForm\" (ngSubmit)=\"onSubmit()\">\n "
},
{
"path": "client/src/app/features/account/register/register.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/account/register/register.component.ts",
"chars": 1677,
"preview": "import { Component, inject } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angula"
},
{
"path": "client/src/app/features/account/routes.ts",
"chars": 310,
"preview": "import { Route } from \"@angular/router\";\nimport { LoginComponent } from \"./login/login.component\";\nimport { RegisterComp"
},
{
"path": "client/src/app/features/admin/admin.component.html",
"chars": 3444,
"preview": "<div>\n <mat-tab-group>\n <mat-tab label=\"Orders\">\n <div class=\"flex justify-between items-center mt-2 max-w-scre"
},
{
"path": "client/src/app/features/admin/admin.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/admin/admin.component.ts",
"chars": 2962,
"preview": "import { Component, inject, OnInit } from '@angular/core';\nimport { AdminService } from '../../core/services/admin.servi"
},
{
"path": "client/src/app/features/cart/cart-item/cart-item.component.html",
"chars": 1637,
"preview": "<div class=\"rounded-lg border border-gray-200 bg-white p-4 shadow-sm mb-4\">\n <div class=\"flex items-center justify-be"
},
{
"path": "client/src/app/features/cart/cart-item/cart-item.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/cart/cart-item/cart-item.component.ts",
"chars": 1004,
"preview": "import { Component, inject, input } from '@angular/core';\nimport { CartItem } from '../../../shared/models/cart';\nimport"
},
{
"path": "client/src/app/features/cart/cart.component.html",
"chars": 549,
"preview": "<section>\n @if (cartService.cart()?.items?.length! > 0) {\n\n <div class=\"flex w-full items-start gap-6 mt-32\">\n <div"
},
{
"path": "client/src/app/features/cart/cart.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/cart/cart.component.ts",
"chars": 784,
"preview": "import { Component, inject } from '@angular/core';\nimport { CartService } from '../../core/services/cart.service';\nimpor"
},
{
"path": "client/src/app/features/checkout/checkout-delivery/checkout-delivery.component.html",
"chars": 912,
"preview": "<div class=\"w-full\">\n <mat-radio-group \n [value]=\"cartService.selectedDelivery()?.id\" \n (change)=\"updat"
},
{
"path": "client/src/app/features/checkout/checkout-delivery/checkout-delivery.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/checkout/checkout-delivery/checkout-delivery.component.ts",
"chars": 1521,
"preview": "import { Component, inject, output } from '@angular/core';\nimport { CheckoutService } from '../../../core/services/check"
},
{
"path": "client/src/app/features/checkout/checkout-review/checkout-review.component.html",
"chars": 1158,
"preview": "<div class=\"mt-4 w-full\">\n <h4 class=\"text-lg font-semibold\">Billing and delivery information</h4>\n <dl>\n <dt class"
},
{
"path": "client/src/app/features/checkout/checkout-review/checkout-review.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/checkout/checkout-review/checkout-review.component.ts",
"chars": 704,
"preview": "import { Component, inject, Input } from '@angular/core';\nimport { CartService } from '../../../core/services/cart.servi"
},
{
"path": "client/src/app/features/checkout/checkout-success/checkout-success.component.html",
"chars": 2748,
"preview": "@if (signalrService.orderSignal(); as order) {\n<section class=\"bg-white py-16\">\n <div class=\"mx-auto max-w-2xl px-4\">"
},
{
"path": "client/src/app/features/checkout/checkout-success/checkout-success.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/checkout/checkout-success/checkout-success.component.ts",
"chars": 1157,
"preview": "import { Component, inject, OnDestroy } from '@angular/core';\nimport { MatButton } from '@angular/material/button';\nimpo"
},
{
"path": "client/src/app/features/checkout/checkout.component.html",
"chars": 2925,
"preview": "<div class=\"flex mt-32 gap-6\">\n <div class=\"w-3/4\">\n <mat-stepper (selectionChange)=\"onStepChange($event)\" [li"
},
{
"path": "client/src/app/features/checkout/checkout.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/checkout/checkout.component.ts",
"chars": 6799,
"preview": "import { Component, inject, OnDestroy, OnInit, signal } from '@angular/core';\nimport { OrderSummaryComponent } from \"../"
},
{
"path": "client/src/app/features/checkout/routes.ts",
"chars": 639,
"preview": "import { Route } from \"@angular/router\";\nimport { CheckoutSuccessComponent } from \"./checkout-success/checkout-success.c"
},
{
"path": "client/src/app/features/home/home.component.html",
"chars": 812,
"preview": "<div class=\"max-w-screen-2xl mx-auto px-4 mt-32\">\n <div class=\"flex flex-col items-center py-16 justify-center mt-20 "
},
{
"path": "client/src/app/features/home/home.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/home/home.component.ts",
"chars": 272,
"preview": "import { Component } from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\n@Component({\n selector: 'app-"
},
{
"path": "client/src/app/features/orders/order-detailed/order-detailed.component.html",
"chars": 4441,
"preview": "@if (order) {\n<mat-card class=\"bg-white py-8 max-w-screen-lg mx-auto shadow-md\">\n <div class=\"px-4 w-full\">\n <"
},
{
"path": "client/src/app/features/orders/order-detailed/order-detailed.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/orders/order-detailed/order-detailed.component.ts",
"chars": 1863,
"preview": "import { Component, inject } from '@angular/core';\nimport { ActivatedRoute, Router, RouterLink } from '@angular/router';"
},
{
"path": "client/src/app/features/orders/order.component.html",
"chars": 1247,
"preview": "<div class=\"mx-auto mt-32\">\n <h2 class=\"font-semibold text-2xl mb-6 text-center\">My orders</h2>\n <div class=\"flex "
},
{
"path": "client/src/app/features/orders/order.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/orders/order.component.ts",
"chars": 689,
"preview": "import { CurrencyPipe, DatePipe } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { Ro"
},
{
"path": "client/src/app/features/orders/routes.ts",
"chars": 424,
"preview": "import { Route } from \"@angular/router\";\nimport { OrderDetailedComponent } from \"./order-detailed/order-detailed.compone"
},
{
"path": "client/src/app/features/shop/filters-dialog/filters-dialog.component.html",
"chars": 931,
"preview": "<div>\n <h3 class=\"text-3xl text-center pt-6 mb-3\">Filters</h3>\n <mat-divider></mat-divider>\n <div class=\"flex p-4\">\n "
},
{
"path": "client/src/app/features/shop/filters-dialog/filters-dialog.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/shop/filters-dialog/filters-dialog.component.ts",
"chars": 1101,
"preview": "import { Component, inject } from '@angular/core';\nimport { ShopService } from '../../../core/services/shop.service';\nim"
},
{
"path": "client/src/app/features/shop/product-details/product-details.component.html",
"chars": 1706,
"preview": "@if (product) {\n<section class=\"py-8\">\n <div class=\"max-w-screen-2xl px-4 mx-auto\">\n <div class=\"grid grid-col"
},
{
"path": "client/src/app/features/shop/product-details/product-details.component.scss",
"chars": 0,
"preview": ""
},
{
"path": "client/src/app/features/shop/product-details/product-details.component.ts",
"chars": 2367,
"preview": "import { Component, inject, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Sh"
}
]
// ... and 54 more files (download for full content)
About this extraction
This page contains the full source code of the TryCatchLearn/Skinet GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 254 files (1.5 MB), approximately 450.4k tokens, and a symbol index with 4967 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.