diff --git a/LICENSE.md b/LICENSE.md old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 index e37c7aac..9dcbb454 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ This is a .NET backend server connected to a Angular front end. It retrieves api from https://api.hatchways.io/assessment/blog/posts?tag=tech using GET method from REST API. Angular and .NET connected in simplest way possible since VS Code doesn´t provide a template for .NET and Angular synchronisation. Angular could be removed to compile only .NET using swagger. For the sake of not breaking the code no changes will be made but controllers from Web API are still there in case. # Usage + Execute "dotnet run --launch-profile https" # Authors diff --git a/bin/Debug/net8.0/TodoApi b/bin/Debug/net8.0/TodoApi index 184b4aaf..37af2168 100755 Binary files a/bin/Debug/net8.0/TodoApi and b/bin/Debug/net8.0/TodoApi differ diff --git a/bin/Debug/net8.0/TodoApi.dll b/bin/Debug/net8.0/TodoApi.dll index 2fa65792..7258b1c7 100755 Binary files a/bin/Debug/net8.0/TodoApi.dll and b/bin/Debug/net8.0/TodoApi.dll differ diff --git a/bin/Debug/net8.0/TodoApi.pdb b/bin/Debug/net8.0/TodoApi.pdb index 9b5efb62..e1884329 100755 Binary files a/bin/Debug/net8.0/TodoApi.pdb and b/bin/Debug/net8.0/TodoApi.pdb differ diff --git a/bin/Debug/net8.0/TodoApi.staticwebassets.runtime.json b/bin/Debug/net8.0/TodoApi.staticwebassets.runtime.json old mode 100644 new mode 100755 index 5c4dd8ea..7c1afe10 --- a/bin/Debug/net8.0/TodoApi.staticwebassets.runtime.json +++ b/bin/Debug/net8.0/TodoApi.staticwebassets.runtime.json @@ -1 +1 @@ -{"ContentRoots":["/home/arctichawk1/Desktop/Technical-Assessment/Assessment/DOTNET-Web-API-w-Angular /wwwroot/"],"Root":{"Children":{"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"index.html":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"index.html"},"Patterns":null},"main-DASB26HH.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"main-DASB26HH.js"},"Patterns":null},"polyfills-RX4V3J3S.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"polyfills-RX4V3J3S.js"},"Patterns":null},"styles-5INURTSO.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"styles-5INURTSO.css"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}} \ No newline at end of file +{"ContentRoots":["/home/arctichawk1/Desktop/Projects/Public/NET-Web-API-w-Angular/wwwroot/"],"Root":{"Children":{"favicon.ico":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"favicon.ico"},"Patterns":null},"index.html":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"index.html"},"Patterns":null},"polyfills-RX4V3J3S.js":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"polyfills-RX4V3J3S.js"},"Patterns":null},"styles-5INURTSO.css":{"Children":null,"Asset":{"ContentRootIndex":0,"SubPath":"styles-5INURTSO.css"},"Patterns":null}},"Asset":null,"Patterns":[{"ContentRootIndex":0,"Pattern":"**","Depth":0}]}} \ No newline at end of file diff --git a/bin/Debug/net8.0/my-app/angular.json b/bin/Debug/net8.0/my-app/angular.json index 48b35c74..2cc350f5 100755 --- a/bin/Debug/net8.0/my-app/angular.json +++ b/bin/Debug/net8.0/my-app/angular.json @@ -96,5 +96,8 @@ } } } + }, + "cli": { + "analytics": false } } diff --git a/bin/Debug/net8.0/my-app/dist/my-app/prerendered-routes.json b/bin/Debug/net8.0/my-app/dist/my-app/prerendered-routes.json old mode 100644 new mode 100755 diff --git a/bin/Debug/net8.0/package-lock.json b/bin/Debug/net8.0/package-lock.json old mode 100644 new mode 100755 diff --git a/my-app/.angular/cache/17.1.3/my-app/.tsbuildinfo b/my-app/.angular/cache/17.1.3/my-app/.tsbuildinfo index a73e7342..96f585ed 100755 --- a/my-app/.angular/cache/17.1.3/my-app/.tsbuildinfo +++ b/my-app/.angular/cache/17.1.3/my-app/.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/tslib/tslib.d.ts","../../../../src/main.ngtypecheck.ts","../../../../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../../../../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../../../../node_modules/rxjs/dist/types/internal/Operator.d.ts","../../../../node_modules/rxjs/dist/types/internal/Observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../../node_modules/rxjs/dist/types/internal/Subject.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../../../../node_modules/rxjs/dist/types/internal/Notification.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNextWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../../../../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../../../../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../../node_modules/rxjs/dist/types/index.d.ts","../../../../node_modules/@angular/core/primitives/signals/index.d.ts","../../../../node_modules/@angular/core/index.d.ts","../../../../node_modules/@angular/common/index.d.ts","../../../../node_modules/@angular/common/http/index.d.ts","../../../../node_modules/@angular/platform-browser/index.d.ts","../../../../src/app/app.config.ngtypecheck.ts","../../../../node_modules/@angular/router/index.d.ts","../../../../src/app/app.routes.ngtypecheck.ts","../../../../src/app/app.routes.ts","../../../../src/app/app.config.ts","../../../../src/app/app.component.ngtypecheck.ts","../../../../src/app/app.component.ts","../../../../src/main.ts","../../../../src/main.server.ngtypecheck.ts","../../../../src/app/app.config.server.ngtypecheck.ts","../../../../node_modules/@angular/animations/index.d.ts","../../../../node_modules/@angular/animations/browser/index.d.ts","../../../../node_modules/@angular/platform-browser/animations/index.d.ts","../../../../node_modules/@angular/platform-server/index.d.ts","../../../../src/app/app.config.server.ts","../../../../src/main.server.ts","../../../../server.ngtypecheck.ts","../../../../node_modules/@angular/ssr/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/mime/index.d.ts","../../../../node_modules/@types/send/index.d.ts","../../../../node_modules/@types/qs/index.d.ts","../../../../node_modules/@types/range-parser/index.d.ts","../../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../../node_modules/@types/http-errors/index.d.ts","../../../../node_modules/@types/serve-static/index.d.ts","../../../../node_modules/@types/connect/index.d.ts","../../../../node_modules/@types/body-parser/index.d.ts","../../../../node_modules/@types/express/index.d.ts","../../../../server.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","ecf5cb089ea438f2545e04b6c52828c68d0b0f4bfaa661986faf36da273e9892","95444fb6292d5e2f7050d7021383b719c0252bf5f88854973977db9e3e3d8006","241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","06540a9f3f2f88375ada0b89712de1c4310f7398d821c4c10ab5c6477dafb4bc",{"version":"de2d3120ed0989dbc776de71e6c0e8a6b4bf1935760cf468ff9d0e9986ef4c09","affectsGlobalScope":true},"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","97bdf234f5db52085d99c6842db560bca133f8a0413ff76bf830f5f38f088ce3","a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","b493ff8a5175cbbb4e6e8bcfa9506c08f5a7318b2278365cfca3b397c9710ebc","e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","303ee143a869e8f605e7b1d12be6c7269d4cab90d230caba792495be595d4f56","89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","a5eb4835ab561c140ffc4634bb039387d5d0cceebb86918f1696c7ac156d26fd","c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","4252b852dd791305da39f6e1242694c2e560d5e46f9bb26e2aca77252057c026","0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","ba13c7d46a560f3d4df8ffb1110e2bbec5801449af3b1240a718514b5576156e","6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","05c4e2a992bb83066a3a648bad1c310cecd4d0628d7e19545bb107ac9596103a","b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","dd6c3362aaaec60be028b4ba292806da8e7020eef7255c7414ce4a5c3a7138ef","8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","3114b315cd0687aad8b57cff36f9c8c51f5b1bc6254f1b1e8446ae583d8e2474","0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","af733cb878419f3012f0d4df36f918a69ba38d73f3232ba1ab46ef9ede6cb29c","cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","0a01b0b5a9e87d04737084731212106add30f63ec640169f1462ba2e44b6b3a8","06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","e07d62a8a9a3bb65433a62e9bbf400c6bfd2df4de60652af4d738303ee3670a1","bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","851e8d57d6dd17c71e9fa0319abd20ab2feb3fb674d0801611a09b7a25fd281c","c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","748e79252a7f476f8f28923612d7696b214e270cc909bc685afefaac8f052af0","9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","c3f32a185cd27ac232d3428a8d9b362c3f7b4892a58adaaa022828a7dcd13eed","3139c3e5e09251feec7a87f457084bee383717f3626a7f1459d053db2f34eb76","4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","3be870c8e17ec14f1c18fc248f5d2c4669e576404744ff5c63e6dafcf05b97ea","56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","6ab380571d87bd1d6f644fb6ab7837239d54b59f07dc84347b1341f866194214","547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","7c9ed7ffdc6f843ab69e5b2a3e7f667b050dd8d24d0052db81e35480f6d4e15d","7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","3656f0584d5a7ee0d0f2cc2b9cffbb43af92e80186b2ce160ebd4421d1506655","a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","90f690a1c5fcb4c2d19c80fea05c8ab590d8f6534c4c296d70af6293ede67366","be95e987818530082c43909be722a838315a0fc5deb6043de0a76f5221cbad24","9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","1f6058d60eaa8825f59d4b76bbf6cc0e6ad9770948be58de68587b0931da00cc","5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","50100b1a91f61d81ca3329a98e64b7f05cddc5e3cb26b3411adc137c9c631aca","11aceaee5663b4ed597544567d6e6a5a94b66857d7ebd62a9875ea061018cd2c","6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a","4bb6035e906946163ecfaec982389d0247ceeac6bdee7f1d07c03d9c224db3aa","8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","c82857a876075e665bbcc78213abfe9e9b0206d502379576d7abd481ade3a569","4f71d883ed6f398ba8fe11fcd003b44bb5f220f840b3eac3c395ad91304e4620","5229c3934f58413f34f1b26c01323c93a5a65a2d9f2a565f216590dfbed1fe32","9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","4c754b03f36ff35fc539f9ebb5f024adbb73ec2d3e4bfb35b385a05abb36a50e","59507446213e73654d6979f3b82dadc4efb0ed177425ae052d96a3f5a5be0d35","a914be97ca7a5be670d1545fc0691ac3fbabd023d7d084b338f6934349798a1f","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","87437ca9dabab3a41d483441696ff9220a19e713f58e0b6a99f1731af10776d7","26c5dfa9aa4e6428f4bb7d14cbf72917ace69f738fa92480b9749eebce933370","8e94328e7ca1a7a517d1aa3c569eac0f6a44f67473f6e22c2c4aff5f9f4a9b38","d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","299f0af797897d77685d606502be72846b3d1f0dc6a2d8c964e9ea3ccbacf5bc","12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","3c97b5ea66276cf463525a6aa9d5bb086bf5e05beac70a0597cda2575503b57b","b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","a31383256374723b47d8b5497a9558bbbcf95bcecfb586a36caf7bfd3693eb0e","06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","64aa66c7458cbfd0f48f88070b08c2f66ae94aba099dac981f17c2322d147c06","11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","9814545517193cf51127d7fbdc3b7335688206ec04ee3a46bba2ee036bd0dcac","0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","29df9ea9a1cbc1f522d2ba575a8ef4d0ade0c70e3bbc5831ee77d49693cd3ec5","add26620a8311383b13cf5fcc2abfc02bf5fb0cd9f50f825460d4bea19bc47ad","80b3258b5a8f6ff07152adbd36ff37aabbe66dfd658da5e60dc2f002e61064fd","3316f02119eaab1e00a15be7728b7b21eefcb57ca6393fc21f933e36d10e33a4","d6e794d5605c001618d69a630220c9ede4d02bea615115f020915936487e91d3","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","5f1b58264eaef8f330f97cc213808258e728544c820cae4896c8175a4e4f5532","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","e2ef74b4c1f7f52a30a417c6808f01b2a29e69bb0d20302527ae5001607f7180","82e55fe56541a293cf0c6917701b791f6bb69c0dc7434fead54c6037f929997b","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93",{"version":"250393b031da715a1e96a724ebda08dcc07d3438b5f7fb962902c57921546c6c","signature":"1358377c96e0b1ef51655399509cc8c44d3eae920a9263f5aa290fc7f4813ef5"},{"version":"98f31b67b543962dfae3f3e55e5fbd56c77d1bc6835a5c317dd92fa7d4a022c8","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","774a089fcb1611beaaabdc811c7aa342229701a5cf83af2c275cfc0a1c5440da","76989220f530b4849d21e03a39ef3226ec39d7ff1caa1152532cbe8461e19663","3aef3d418337dc3057498f19d423d1387e4b0ad9b5ae4fc62bbdd0b18d622872","99a7f8aaae2617e37da486bf40b07ae22b7409c7986b7b6e17779c9a927c4ed9","187f8eb60ad38d6154426da013f33ee48e8bf82b86d77dd2368970b8106bc8f0",{"version":"185b2a171da126f5c6c53ce0812588d3ba46575eeba352368c5414b6e5c0f1de","signature":"9c60c89de612b6471ab99cd4b57bb1e2b3b5821d9cf81723838d6c8324ed2c36"},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","955133b47df2272da61dbb50fda84b0e0732d96f5614a373718719b4bc429641","3846d0dcf468a1d1a07e6d00eaa37ec542956fb5fe0357590a6407af20d2ff90","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"49026435d21e3d7559d723af3ae48f73ec28f9cba651b41bd2ac991012836122","affectsGlobalScope":true},"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89",{"version":"b6a4a51bc749ad882c33d98563ff5a94716ca884bfde949a8c97bad530e4ee2c","affectsGlobalScope":true},"16b872cf5432818bdbf405428b4a1d77bb2a7ab908e8bd6609f9a541cea92f81","fe39ceafa361b6d339b518936275eff89a77e7dfe92f2efa5fb97abf9a95ca49",{"version":"4009dd21843fe4a62d1d97b584a2937ca9f045df6fbd65c8b264d8dd04b656fd","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","5f74757c479da70bc82930f50c6a5cfea4ff9f2979fd965d4ff91de0f6291a22","278fe296432b9840660d6e0d1778b4b4897a591d4b910a5f7ac8db0b476a8af7","1c611ff373ce1958aafc40b328048ac2540ba5c7f373cf2897e0d9aeaabe90a0","bea5c9fc0843a6961411ab4a04df856a8372448bc0d180da0c3a054ff31044b8","715873cecbfcebb49f293f0521bd0955d6298486e2eeb9c7bbf5e9f20a6ed152","c6cf9428f45f3d78b07df7d7aab1569994c177d36549e3a962f952d89f026bc4",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"6c7b9d2139abd8f2e83ed8fa018c3799ab3187755a6665621feb6e93d3429ac3","affectsGlobalScope":true},"5a2f6de23113659e83dc8c5edb9f3c5bcd6136f74dcc1785b3df4eef1271e1f3","021ca24be8eb8c46f99b4e03ebf872931f590c9b07b88d715c68bd30495b6c44","5899ab1898582115c432cccef063298f75477bf2cebe5473360043fddd67bcc6","6b97f4106d72ae6b4ebf4e46d2fe90f4d04dd04b3dbff6e294572440a428209d","e3baa0c5780c2c805ec33a999722a2f740b572eb3746fd0a5f93a0a5c3dbf7f6","48fedd2f8549a2ae7e62f30fdb015779c2a7b536760730c5269406cd3d17cab2",{"version":"089867511b37a534ae71f3d9bc97acc0b925b7f5dbec113f98c4b49224c694eb","affectsGlobalScope":true},"6e5b5174b4781407e96c2c0abeccd1d39d4a408565ac4dafa607594d8628a076","f5ce35485541e817c2d4105d3eb78e3e538bbb009515ed014694363fa3e94ceb","323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c",{"version":"bd88055918cf8bf30ad7c9269177f7ebeafd4c5f0d28919edccd1c1d24f7e73c","affectsGlobalScope":true},{"version":"645baafeaed6855c8796fcbae4e813021c65f36eaa3f6178535457a2366f6849","affectsGlobalScope":true},"ea3ab3727cd6c222d94003ecafa30e8550c61eadcdabbf59514aee76e86211a5","d3cdd41693c5ed6bec4f1a1c399d9501372b14bd341bc46eedacf2854c5df5a7","2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","48dab0d6e633b8052e7eaa0efb0bb3d58a733777b248765eafcb0b0349439834","d3e22aaa84d935196f465fff6645f88bb41352736c3130285eea0f2489c5f183","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","5195aeb0de306d1c5ca8033457fbcab5987657112fa6d4971cfeb7644493a369","c5dbf0003bc9f0f643e54cd00a3868d1afe85497fecb56be6f2373dc85102924",{"version":"6fa61015444e843013443f2e5ca6bee5f033cbf361f953fd932abb0c029b73b2","affectsGlobalScope":true},{"version":"300f8e9de0b0c3482be3e749462b6ebc3dab8a316801f1da0def94aed0cd2018","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","3df5b34f3449733bc4831b8d670f958a045e7a3f5d7b0e21991ef95408dbec13","76a89af04f2ba1807309320dab5169c0d1243b80738b4a2005989e40a136733e","c045b664abf3fc2a4750fa96117ab2735e4ed45ddd571b2a6a91b9917e231a02",{"version":"ca619678b887ae262316673b55bb358c517593d3b6b96c1271972716c699da32","affectsGlobalScope":true},{"version":"0c312a7c5dec6c616f754d3a4b16318ce8d1cb912dfb3dfa0e808f45e66cbb21","affectsGlobalScope":true},"6f44a190351ab5e1811abebe007cf60518044772ccc08244f9f241706afa767f","fecdf44bec4ee9c5188e5f2f58c292c9689c02520900dceaaa6e76594de6da90","2641e5e19268b6f5038ad48a6e2598965301df8a77c48c99d8df760a6a154204",{"version":"6a4a80787c57c10b3ea8314c80d9cc6e1deb99d20adca16106a337825f582420","affectsGlobalScope":true},"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","dcc9081d68c2ade5c51ac7bf5f37cce630359408e713999269b77f611a30d871","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed",{"version":"a5562ab0448c81180ef220ff104441a4d67187a2259e6008397e7531a821f0e7","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","34118be360cdd3381bbebbfd4b093c394460c8fc5df40688d58f45d86ab1448b","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","5c45abf1e13e4463eacfd5dedda06855da8748a6a6cb3334f582b52e219acc04",{"version":"eb938d816e6a680b8b52174cac4b0c53a101e40076a18dba7997b284165fb227","signature":"cdb9a6bec80e1b795ce332c1ce77969dd94d800d45da3b25253d5fcce74f53ae"}],"root":[60,262,263,270,271,370],"options":{"declaration":false,"declarationMap":false,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSourceMap":false,"inlineSources":false,"module":7,"noEmitOnError":false,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"outDir":"../../../..","skipLibCheck":true,"sourceMap":false,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":false},"fileIdsList":[[251,265],[251],[249,251,252],[249,251],[249,250],[251,254,266],[251,252,253],[251,253,254,267],[249,251,252,254,256],[325,359,367],[325,359],[322,325,359,361,362,363],[362,364,366,368],[273],[309],[310,315,343],[311,322,323,330,340,351],[311,312,322,330],[313,352],[314,315,323,331],[315,340,348],[316,318,322,330],[309,317],[318,319],[322],[320,322],[309,322],[322,323,324,340,351],[322,323,324,337,340,343],[307,356],[318,322,325,330,340,351],[322,323,325,326,330,340,348,351],[325,327,340,348,351],[273,274,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358],[322,328],[329,351,356],[318,322,330,340],[331],[332],[309,333],[334,350,356],[335],[336],[322,337,338],[337,339,352,354],[310,322,340,341,342,343],[310,340,342],[340,341],[343],[344],[309,340],[322,346,347],[346,347],[315,330,340,348],[349],[330,350],[310,325,336,351],[315,352],[340,353],[329,354],[355],[310,315,322,324,333,340,351,354,356],[340,357],[323,340,359,360],[325,359,360,365],[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,180,181,182,184,193,195,196,197,198,199,200,202,203,205,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248],[106],[64,65],[61,62,63,65],[62,65],[65,106],[61,65,183],[63,64,65],[61,65],[65],[64],[61,64,106],[62,64,65,222],[64,65,222],[64,230],[62,64,65],[74],[97],[118],[64,65,106],[65,113],[64,65,106,124],[64,65,124],[65,165],[61,65,184],[190,192],[61,65,183,190,191],[183,184,192],[190],[61,65,190,191,192],[206],[201],[204],[62,64,184,185,186,187],[106,184,185,186,187],[184,186],[64,185,186,188,189,193],[61,64],[65,208],[66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,107,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181],[194],[284,288,351],[284,340,351],[279],[281,284,348,351],[330,348],[359],[279,359],[281,284,330,351],[276,277,280,283,310,322,340,351],[276,282],[280,284,310,343,351,359],[310,359],[300,310,359],[278,279,359],[284],[278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,301,302,303,304,305,306],[284,291,292],[282,284,292,293],[283],[276,279,284],[284,288,292,293],[288],[282,284,287,351],[276,281,282,284,288,291],[310,340],[279,284,300,310,356,359],[59],[59,252,270,272,332,351,369],[59,251,253,256],[59,251,259,268],[59,251,254,256,258],[59,256],[59,254,261,269],[59,254,259,261],[369],[253]],"referencedMap":[[266,1],[265,2],[253,3],[252,4],[251,5],[267,6],[254,7],[268,8],[256,9],[272,2],[368,10],[367,11],[364,12],[369,13],[273,14],[274,14],[309,15],[310,16],[311,17],[312,18],[313,19],[314,20],[315,21],[316,22],[317,23],[318,24],[319,24],[321,25],[320,26],[322,27],[323,28],[324,29],[308,30],[325,31],[326,32],[327,33],[359,34],[328,35],[329,36],[330,37],[331,38],[332,39],[333,40],[334,41],[335,42],[336,43],[337,44],[338,44],[339,45],[340,46],[342,47],[341,48],[343,49],[344,50],[345,51],[346,52],[347,53],[348,54],[349,55],[350,56],[351,57],[352,58],[353,59],[354,60],[355,61],[356,62],[357,63],[361,64],[366,65],[249,66],[200,67],[198,67],[113,68],[64,69],[63,70],[199,71],[184,72],[106,73],[62,74],[61,75],[248,70],[213,76],[212,76],[124,77],[220,68],[221,68],[223,78],[224,68],[225,75],[226,68],[197,68],[227,68],[228,79],[229,68],[230,76],[231,80],[232,68],[233,68],[234,68],[235,68],[236,76],[237,68],[238,68],[239,68],[240,68],[241,81],[242,68],[243,68],[244,68],[245,68],[246,68],[66,75],[67,75],[68,75],[69,75],[70,75],[71,75],[72,75],[73,68],[75,82],[76,75],[74,75],[77,75],[78,75],[79,75],[80,75],[81,75],[82,75],[83,68],[84,75],[85,75],[86,75],[87,75],[88,75],[89,68],[90,75],[91,75],[92,75],[93,75],[94,75],[95,75],[96,68],[98,83],[97,75],[99,75],[100,75],[101,75],[102,75],[103,81],[104,68],[105,68],[119,84],[107,85],[108,75],[109,75],[110,68],[111,75],[112,75],[114,86],[115,75],[116,75],[117,75],[118,75],[120,75],[121,75],[122,75],[123,75],[125,87],[126,75],[127,75],[128,75],[129,68],[130,75],[131,88],[132,88],[133,88],[134,68],[135,75],[136,75],[137,75],[142,75],[138,75],[139,68],[140,75],[141,68],[143,75],[144,75],[145,75],[146,75],[147,75],[148,75],[149,68],[150,75],[151,75],[152,75],[153,75],[154,75],[155,75],[156,75],[157,75],[158,75],[159,75],[160,75],[161,75],[162,75],[163,75],[164,75],[165,75],[166,89],[167,75],[168,75],[169,75],[170,75],[171,75],[172,75],[173,68],[174,68],[175,68],[176,68],[177,68],[178,75],[179,75],[180,75],[181,75],[247,68],[183,90],[206,91],[201,91],[192,92],[190,93],[204,94],[193,95],[207,96],[202,97],[203,94],[205,98],[188,99],[189,100],[187,101],[185,75],[194,102],[65,103],[211,76],[209,104],[182,105],[195,106],[291,107],[298,108],[290,107],[305,109],[282,110],[281,111],[304,112],[299,113],[302,114],[284,115],[283,116],[279,117],[278,118],[301,119],[280,120],[285,121],[289,121],[307,122],[306,121],[293,123],[294,124],[296,125],[292,126],[295,127],[300,112],[287,128],[288,129],[297,130],[277,131],[303,132],[271,133],[370,134],[260,133],[261,135],[255,133],[264,133],[269,136],[259,137],[257,133],[258,138],[60,133],[263,133],[270,139],[262,140]],"exportedModulesMap":[[266,1],[265,2],[253,3],[252,4],[251,5],[267,6],[254,7],[268,8],[256,9],[272,2],[368,10],[367,11],[364,12],[369,13],[273,14],[274,14],[309,15],[310,16],[311,17],[312,18],[313,19],[314,20],[315,21],[316,22],[317,23],[318,24],[319,24],[321,25],[320,26],[322,27],[323,28],[324,29],[308,30],[325,31],[326,32],[327,33],[359,34],[328,35],[329,36],[330,37],[331,38],[332,39],[333,40],[334,41],[335,42],[336,43],[337,44],[338,44],[339,45],[340,46],[342,47],[341,48],[343,49],[344,50],[345,51],[346,52],[347,53],[348,54],[349,55],[350,56],[351,57],[352,58],[353,59],[354,60],[355,61],[356,62],[357,63],[361,64],[366,65],[249,66],[200,67],[198,67],[113,68],[64,69],[63,70],[199,71],[184,72],[106,73],[62,74],[61,75],[248,70],[213,76],[212,76],[124,77],[220,68],[221,68],[223,78],[224,68],[225,75],[226,68],[197,68],[227,68],[228,79],[229,68],[230,76],[231,80],[232,68],[233,68],[234,68],[235,68],[236,76],[237,68],[238,68],[239,68],[240,68],[241,81],[242,68],[243,68],[244,68],[245,68],[246,68],[66,75],[67,75],[68,75],[69,75],[70,75],[71,75],[72,75],[73,68],[75,82],[76,75],[74,75],[77,75],[78,75],[79,75],[80,75],[81,75],[82,75],[83,68],[84,75],[85,75],[86,75],[87,75],[88,75],[89,68],[90,75],[91,75],[92,75],[93,75],[94,75],[95,75],[96,68],[98,83],[97,75],[99,75],[100,75],[101,75],[102,75],[103,81],[104,68],[105,68],[119,84],[107,85],[108,75],[109,75],[110,68],[111,75],[112,75],[114,86],[115,75],[116,75],[117,75],[118,75],[120,75],[121,75],[122,75],[123,75],[125,87],[126,75],[127,75],[128,75],[129,68],[130,75],[131,88],[132,88],[133,88],[134,68],[135,75],[136,75],[137,75],[142,75],[138,75],[139,68],[140,75],[141,68],[143,75],[144,75],[145,75],[146,75],[147,75],[148,75],[149,68],[150,75],[151,75],[152,75],[153,75],[154,75],[155,75],[156,75],[157,75],[158,75],[159,75],[160,75],[161,75],[162,75],[163,75],[164,75],[165,75],[166,89],[167,75],[168,75],[169,75],[170,75],[171,75],[172,75],[173,68],[174,68],[175,68],[176,68],[177,68],[178,75],[179,75],[180,75],[181,75],[247,68],[183,90],[206,91],[201,91],[192,92],[190,93],[204,94],[193,95],[207,96],[202,97],[203,94],[205,98],[188,99],[189,100],[187,101],[185,75],[194,102],[65,103],[211,76],[209,104],[182,105],[195,106],[291,107],[298,108],[290,107],[305,109],[282,110],[281,111],[304,112],[299,113],[302,114],[284,115],[283,116],[279,117],[278,118],[301,119],[280,120],[285,121],[289,121],[307,122],[306,121],[293,123],[294,124],[296,125],[292,126],[295,127],[300,112],[287,128],[288,129],[297,130],[277,131],[303,132],[271,133],[370,141],[260,133],[261,142],[255,133],[264,133],[269,136],[259,137],[257,133],[258,138],[60,133],[263,133],[270,2]],"semanticDiagnosticsPerFile":[266,265,253,252,251,250,267,254,268,256,272,368,367,364,369,365,360,273,274,309,310,311,312,313,314,315,316,317,318,319,321,320,322,323,324,308,358,325,326,327,359,328,329,330,331,332,333,334,335,336,337,338,339,340,342,341,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,362,363,361,366,275,249,222,200,198,113,64,63,199,184,106,62,61,248,213,212,124,220,221,223,224,225,226,197,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,66,67,68,69,70,71,72,73,75,76,74,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,97,99,100,101,102,103,104,105,119,107,108,109,110,111,112,114,115,116,117,118,120,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,142,138,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,247,183,206,201,192,190,204,193,207,202,203,205,191,196,188,189,186,187,185,194,65,214,215,216,217,218,219,208,211,210,209,182,195,59,57,58,10,12,11,2,13,14,15,16,17,18,19,20,3,4,21,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,8,48,45,46,47,49,9,50,51,52,55,53,54,1,56,291,298,290,305,282,281,304,299,302,284,283,279,278,301,280,285,286,289,276,307,306,293,294,296,292,295,300,287,288,297,277,303,370,261,269,259,258,270,262]},"version":"5.3.3"} \ No newline at end of file +{"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../../node_modules/tslib/tslib.d.ts","../../../../src/main.ngtypecheck.ts","../../../../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../../../../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../../../../node_modules/rxjs/dist/types/internal/Operator.d.ts","../../../../node_modules/rxjs/dist/types/internal/Observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../../node_modules/rxjs/dist/types/internal/Subject.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../../../../node_modules/rxjs/dist/types/internal/Notification.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNextWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../../../../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../../../../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../../../../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../../../../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../../../../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../../../../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../../node_modules/rxjs/dist/types/index.d.ts","../../../../node_modules/@angular/core/primitives/signals/index.d.ts","../../../../node_modules/@angular/core/index.d.ts","../../../../node_modules/@angular/common/index.d.ts","../../../../node_modules/@angular/common/http/index.d.ts","../../../../node_modules/@angular/platform-browser/index.d.ts","../../../../src/app/app.config.ngtypecheck.ts","../../../../node_modules/@angular/router/index.d.ts","../../../../src/app/app.routes.ngtypecheck.ts","../../../../src/app/app.routes.ts","../../../../src/app/app.config.ts","../../../../src/app/app.component.ngtypecheck.ts","../../../../src/app/app.component.ts","../../../../src/main.ts","../../../../src/main.server.ngtypecheck.ts","../../../../src/app/app.config.server.ngtypecheck.ts","../../../../node_modules/@angular/animations/index.d.ts","../../../../node_modules/@angular/animations/browser/index.d.ts","../../../../node_modules/@angular/platform-browser/animations/index.d.ts","../../../../node_modules/@angular/platform-server/index.d.ts","../../../../src/app/app.config.server.ts","../../../../src/main.server.ts","../../../../server.ngtypecheck.ts","../../../../node_modules/@angular/ssr/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/file.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/filereader.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/dom-events.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/mime/index.d.ts","../../../../node_modules/@types/send/index.d.ts","../../../../node_modules/@types/qs/index.d.ts","../../../../node_modules/@types/range-parser/index.d.ts","../../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../../node_modules/@types/http-errors/index.d.ts","../../../../node_modules/@types/serve-static/index.d.ts","../../../../node_modules/@types/connect/index.d.ts","../../../../node_modules/@types/body-parser/index.d.ts","../../../../node_modules/@types/express/index.d.ts","../../../../server.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"acae90d417bee324b1372813b5a00829d31c7eb670d299cd7f8f9a648ac05688","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"62a4966981264d1f04c44eb0f4b5bdc3d81c1a54725608861e44755aa24ad6a5","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"86a34c7a13de9cabc43161348f663624b56871ed80986e41d214932ddd8d6719","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","ecf5cb089ea438f2545e04b6c52828c68d0b0f4bfaa661986faf36da273e9892","95444fb6292d5e2f7050d7021383b719c0252bf5f88854973977db9e3e3d8006","241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","06540a9f3f2f88375ada0b89712de1c4310f7398d821c4c10ab5c6477dafb4bc",{"version":"de2d3120ed0989dbc776de71e6c0e8a6b4bf1935760cf468ff9d0e9986ef4c09","affectsGlobalScope":true},"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","97bdf234f5db52085d99c6842db560bca133f8a0413ff76bf830f5f38f088ce3","a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","b493ff8a5175cbbb4e6e8bcfa9506c08f5a7318b2278365cfca3b397c9710ebc","e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","303ee143a869e8f605e7b1d12be6c7269d4cab90d230caba792495be595d4f56","89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","a5eb4835ab561c140ffc4634bb039387d5d0cceebb86918f1696c7ac156d26fd","c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","4252b852dd791305da39f6e1242694c2e560d5e46f9bb26e2aca77252057c026","0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","ba13c7d46a560f3d4df8ffb1110e2bbec5801449af3b1240a718514b5576156e","6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","05c4e2a992bb83066a3a648bad1c310cecd4d0628d7e19545bb107ac9596103a","b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","dd6c3362aaaec60be028b4ba292806da8e7020eef7255c7414ce4a5c3a7138ef","8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","3114b315cd0687aad8b57cff36f9c8c51f5b1bc6254f1b1e8446ae583d8e2474","0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","af733cb878419f3012f0d4df36f918a69ba38d73f3232ba1ab46ef9ede6cb29c","cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","0a01b0b5a9e87d04737084731212106add30f63ec640169f1462ba2e44b6b3a8","06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","e07d62a8a9a3bb65433a62e9bbf400c6bfd2df4de60652af4d738303ee3670a1","bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","851e8d57d6dd17c71e9fa0319abd20ab2feb3fb674d0801611a09b7a25fd281c","c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","748e79252a7f476f8f28923612d7696b214e270cc909bc685afefaac8f052af0","9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","c3f32a185cd27ac232d3428a8d9b362c3f7b4892a58adaaa022828a7dcd13eed","3139c3e5e09251feec7a87f457084bee383717f3626a7f1459d053db2f34eb76","4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","3be870c8e17ec14f1c18fc248f5d2c4669e576404744ff5c63e6dafcf05b97ea","56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","6ab380571d87bd1d6f644fb6ab7837239d54b59f07dc84347b1341f866194214","547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","7c9ed7ffdc6f843ab69e5b2a3e7f667b050dd8d24d0052db81e35480f6d4e15d","7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","3656f0584d5a7ee0d0f2cc2b9cffbb43af92e80186b2ce160ebd4421d1506655","a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","90f690a1c5fcb4c2d19c80fea05c8ab590d8f6534c4c296d70af6293ede67366","be95e987818530082c43909be722a838315a0fc5deb6043de0a76f5221cbad24","9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","1f6058d60eaa8825f59d4b76bbf6cc0e6ad9770948be58de68587b0931da00cc","5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","50100b1a91f61d81ca3329a98e64b7f05cddc5e3cb26b3411adc137c9c631aca","11aceaee5663b4ed597544567d6e6a5a94b66857d7ebd62a9875ea061018cd2c","6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","669b754ec246dd7471e19b655b73bda6c2ca5bb7ccb1a4dff44a9ae45b6a716a","4bb6035e906946163ecfaec982389d0247ceeac6bdee7f1d07c03d9c224db3aa","8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","c82857a876075e665bbcc78213abfe9e9b0206d502379576d7abd481ade3a569","4f71d883ed6f398ba8fe11fcd003b44bb5f220f840b3eac3c395ad91304e4620","5229c3934f58413f34f1b26c01323c93a5a65a2d9f2a565f216590dfbed1fe32","9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","4c754b03f36ff35fc539f9ebb5f024adbb73ec2d3e4bfb35b385a05abb36a50e","59507446213e73654d6979f3b82dadc4efb0ed177425ae052d96a3f5a5be0d35","a914be97ca7a5be670d1545fc0691ac3fbabd023d7d084b338f6934349798a1f","8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","87437ca9dabab3a41d483441696ff9220a19e713f58e0b6a99f1731af10776d7","26c5dfa9aa4e6428f4bb7d14cbf72917ace69f738fa92480b9749eebce933370","8e94328e7ca1a7a517d1aa3c569eac0f6a44f67473f6e22c2c4aff5f9f4a9b38","d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","299f0af797897d77685d606502be72846b3d1f0dc6a2d8c964e9ea3ccbacf5bc","12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","3c97b5ea66276cf463525a6aa9d5bb086bf5e05beac70a0597cda2575503b57b","b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","a31383256374723b47d8b5497a9558bbbcf95bcecfb586a36caf7bfd3693eb0e","06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","64aa66c7458cbfd0f48f88070b08c2f66ae94aba099dac981f17c2322d147c06","11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","9814545517193cf51127d7fbdc3b7335688206ec04ee3a46bba2ee036bd0dcac","0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","29df9ea9a1cbc1f522d2ba575a8ef4d0ade0c70e3bbc5831ee77d49693cd3ec5","add26620a8311383b13cf5fcc2abfc02bf5fb0cd9f50f825460d4bea19bc47ad","80b3258b5a8f6ff07152adbd36ff37aabbe66dfd658da5e60dc2f002e61064fd","3316f02119eaab1e00a15be7728b7b21eefcb57ca6393fc21f933e36d10e33a4","d6e794d5605c001618d69a630220c9ede4d02bea615115f020915936487e91d3","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","5f1b58264eaef8f330f97cc213808258e728544c820cae4896c8175a4e4f5532","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","e2ef74b4c1f7f52a30a417c6808f01b2a29e69bb0d20302527ae5001607f7180","82e55fe56541a293cf0c6917701b791f6bb69c0dc7434fead54c6037f929997b","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93",{"version":"b8da2731f13edb96f1006b91c3bc939ab9f99c2a9fdbb195f50a7dccfb1c8c1c","signature":"1358377c96e0b1ef51655399509cc8c44d3eae920a9263f5aa290fc7f4813ef5"},{"version":"98f31b67b543962dfae3f3e55e5fbd56c77d1bc6835a5c317dd92fa7d4a022c8","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","774a089fcb1611beaaabdc811c7aa342229701a5cf83af2c275cfc0a1c5440da","76989220f530b4849d21e03a39ef3226ec39d7ff1caa1152532cbe8461e19663","3aef3d418337dc3057498f19d423d1387e4b0ad9b5ae4fc62bbdd0b18d622872","99a7f8aaae2617e37da486bf40b07ae22b7409c7986b7b6e17779c9a927c4ed9","187f8eb60ad38d6154426da013f33ee48e8bf82b86d77dd2368970b8106bc8f0",{"version":"185b2a171da126f5c6c53ce0812588d3ba46575eeba352368c5414b6e5c0f1de","signature":"9c60c89de612b6471ab99cd4b57bb1e2b3b5821d9cf81723838d6c8324ed2c36"},"ddd578018a259d1c494c834bdd8707769d07d1eb64f87f5217560cd2181b9e93","955133b47df2272da61dbb50fda84b0e0732d96f5614a373718719b4bc429641","3846d0dcf468a1d1a07e6d00eaa37ec542956fb5fe0357590a6407af20d2ff90","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"49026435d21e3d7559d723af3ae48f73ec28f9cba651b41bd2ac991012836122","affectsGlobalScope":true},"39b1a50d543770780b0409a4caacb87f3ff1d510aedfeb7dc06ed44188256f89",{"version":"b6a4a51bc749ad882c33d98563ff5a94716ca884bfde949a8c97bad530e4ee2c","affectsGlobalScope":true},"16b872cf5432818bdbf405428b4a1d77bb2a7ab908e8bd6609f9a541cea92f81","fe39ceafa361b6d339b518936275eff89a77e7dfe92f2efa5fb97abf9a95ca49",{"version":"4009dd21843fe4a62d1d97b584a2937ca9f045df6fbd65c8b264d8dd04b656fd","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","5f74757c479da70bc82930f50c6a5cfea4ff9f2979fd965d4ff91de0f6291a22","278fe296432b9840660d6e0d1778b4b4897a591d4b910a5f7ac8db0b476a8af7","1c611ff373ce1958aafc40b328048ac2540ba5c7f373cf2897e0d9aeaabe90a0","bea5c9fc0843a6961411ab4a04df856a8372448bc0d180da0c3a054ff31044b8","715873cecbfcebb49f293f0521bd0955d6298486e2eeb9c7bbf5e9f20a6ed152","c6cf9428f45f3d78b07df7d7aab1569994c177d36549e3a962f952d89f026bc4",{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true},{"version":"6c7b9d2139abd8f2e83ed8fa018c3799ab3187755a6665621feb6e93d3429ac3","affectsGlobalScope":true},"5a2f6de23113659e83dc8c5edb9f3c5bcd6136f74dcc1785b3df4eef1271e1f3","021ca24be8eb8c46f99b4e03ebf872931f590c9b07b88d715c68bd30495b6c44","5899ab1898582115c432cccef063298f75477bf2cebe5473360043fddd67bcc6","6b97f4106d72ae6b4ebf4e46d2fe90f4d04dd04b3dbff6e294572440a428209d","e3baa0c5780c2c805ec33a999722a2f740b572eb3746fd0a5f93a0a5c3dbf7f6","48fedd2f8549a2ae7e62f30fdb015779c2a7b536760730c5269406cd3d17cab2",{"version":"089867511b37a534ae71f3d9bc97acc0b925b7f5dbec113f98c4b49224c694eb","affectsGlobalScope":true},"6e5b5174b4781407e96c2c0abeccd1d39d4a408565ac4dafa607594d8628a076","f5ce35485541e817c2d4105d3eb78e3e538bbb009515ed014694363fa3e94ceb","323506ce173f7f865f42f493885ee3dacd18db6359ea1141d57676d3781ce10c",{"version":"bd88055918cf8bf30ad7c9269177f7ebeafd4c5f0d28919edccd1c1d24f7e73c","affectsGlobalScope":true},{"version":"645baafeaed6855c8796fcbae4e813021c65f36eaa3f6178535457a2366f6849","affectsGlobalScope":true},"ea3ab3727cd6c222d94003ecafa30e8550c61eadcdabbf59514aee76e86211a5","d3cdd41693c5ed6bec4f1a1c399d9501372b14bd341bc46eedacf2854c5df5a7","2de7a21c92226fb8abbeed7a0a9bd8aa6d37e4c68a8c7ff7938c644267e9fcc1","6d6070c5c81ba0bfe58988c69e3ba3149fc86421fd383f253aeb071cbf29cd41","48dab0d6e633b8052e7eaa0efb0bb3d58a733777b248765eafcb0b0349439834","d3e22aaa84d935196f465fff6645f88bb41352736c3130285eea0f2489c5f183","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","5195aeb0de306d1c5ca8033457fbcab5987657112fa6d4971cfeb7644493a369","c5dbf0003bc9f0f643e54cd00a3868d1afe85497fecb56be6f2373dc85102924",{"version":"6fa61015444e843013443f2e5ca6bee5f033cbf361f953fd932abb0c029b73b2","affectsGlobalScope":true},{"version":"300f8e9de0b0c3482be3e749462b6ebc3dab8a316801f1da0def94aed0cd2018","affectsGlobalScope":true},"4e228e78c1e9b0a75c70588d59288f63a6258e8b1fe4a67b0c53fe03461421d9","3df5b34f3449733bc4831b8d670f958a045e7a3f5d7b0e21991ef95408dbec13","76a89af04f2ba1807309320dab5169c0d1243b80738b4a2005989e40a136733e","c045b664abf3fc2a4750fa96117ab2735e4ed45ddd571b2a6a91b9917e231a02",{"version":"ca619678b887ae262316673b55bb358c517593d3b6b96c1271972716c699da32","affectsGlobalScope":true},{"version":"0c312a7c5dec6c616f754d3a4b16318ce8d1cb912dfb3dfa0e808f45e66cbb21","affectsGlobalScope":true},"6f44a190351ab5e1811abebe007cf60518044772ccc08244f9f241706afa767f","fecdf44bec4ee9c5188e5f2f58c292c9689c02520900dceaaa6e76594de6da90","2641e5e19268b6f5038ad48a6e2598965301df8a77c48c99d8df760a6a154204",{"version":"6a4a80787c57c10b3ea8314c80d9cc6e1deb99d20adca16106a337825f582420","affectsGlobalScope":true},"f2b9440f98d6f94c8105883a2b65aee2fce0248f71f41beafd0a80636f3a565d",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","d3f2d715f57df3f04bf7b16dde01dec10366f64fce44503c92b8f78f614c1769","b78cd10245a90e27e62d0558564f5d9a16576294eee724a59ae21b91f9269e4a","dcc9081d68c2ade5c51ac7bf5f37cce630359408e713999269b77f611a30d871","2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed",{"version":"a5562ab0448c81180ef220ff104441a4d67187a2259e6008397e7531a821f0e7","affectsGlobalScope":true},"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","34118be360cdd3381bbebbfd4b093c394460c8fc5df40688d58f45d86ab1448b","104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","5c45abf1e13e4463eacfd5dedda06855da8748a6a6cb3334f582b52e219acc04",{"version":"eb938d816e6a680b8b52174cac4b0c53a101e40076a18dba7997b284165fb227","signature":"cdb9a6bec80e1b795ce332c1ce77969dd94d800d45da3b25253d5fcce74f53ae"}],"root":[60,262,263,270,271,370],"options":{"declaration":false,"declarationMap":false,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"inlineSourceMap":true,"inlineSources":true,"module":7,"noEmitOnError":false,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noImplicitReturns":true,"noPropertyAccessFromIndexSignature":true,"outDir":"../../../..","skipLibCheck":true,"sourceMap":false,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","useDefineForClassFields":false},"fileIdsList":[[251,265],[251],[249,251,252],[249,251],[249,250],[251,254,266],[251,252,253],[251,253,254,267],[249,251,252,254,256],[325,359,367],[325,359],[322,325,359,361,362,363],[362,364,366,368],[273],[309],[310,315,343],[311,322,323,330,340,351],[311,312,322,330],[313,352],[314,315,323,331],[315,340,348],[316,318,322,330],[309,317],[318,319],[322],[320,322],[309,322],[322,323,324,340,351],[322,323,324,337,340,343],[307,356],[318,322,325,330,340,351],[322,323,325,326,330,340,348,351],[325,327,340,348,351],[273,274,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358],[322,328],[329,351,356],[318,322,330,340],[331],[332],[309,333],[334,350,356],[335],[336],[322,337,338],[337,339,352,354],[310,322,340,341,342,343],[310,340,342],[340,341],[343],[344],[309,340],[322,346,347],[346,347],[315,330,340,348],[349],[330,350],[310,325,336,351],[315,352],[340,353],[329,354],[355],[310,315,322,324,333,340,351,354,356],[340,357],[323,340,359,360],[325,359,360,365],[61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,77,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,117,118,119,120,121,122,123,124,125,126,127,128,130,131,132,133,134,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,180,181,182,184,193,195,196,197,198,199,200,202,203,205,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248],[106],[64,65],[61,62,63,65],[62,65],[65,106],[61,65,183],[63,64,65],[61,65],[65],[64],[61,64,106],[62,64,65,222],[64,65,222],[64,230],[62,64,65],[74],[97],[118],[64,65,106],[65,113],[64,65,106,124],[64,65,124],[65,165],[61,65,184],[190,192],[61,65,183,190,191],[183,184,192],[190],[61,65,190,191,192],[206],[201],[204],[62,64,184,185,186,187],[106,184,185,186,187],[184,186],[64,185,186,188,189,193],[61,64],[65,208],[66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,107,108,109,110,111,112,114,115,116,117,118,119,120,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181],[194],[284,288,351],[284,340,351],[279],[281,284,348,351],[330,348],[359],[279,359],[281,284,330,351],[276,277,280,283,310,322,340,351],[276,282],[280,284,310,343,351,359],[310,359],[300,310,359],[278,279,359],[284],[278,279,280,281,282,283,284,285,286,288,289,290,291,292,293,294,295,296,297,298,299,301,302,303,304,305,306],[284,291,292],[282,284,292,293],[283],[276,279,284],[284,288,292,293],[288],[282,284,287,351],[276,281,282,284,288,291],[310,340],[279,284,300,310,356,359],[59],[59,252,270,272,332,351,369],[59,251,253,256],[59,251,259,268],[59,251,254,256,258],[59,256],[59,254,261,269],[59,254,259,261],[369],[253]],"referencedMap":[[266,1],[265,2],[253,3],[252,4],[251,5],[267,6],[254,7],[268,8],[256,9],[272,2],[368,10],[367,11],[364,12],[369,13],[273,14],[274,14],[309,15],[310,16],[311,17],[312,18],[313,19],[314,20],[315,21],[316,22],[317,23],[318,24],[319,24],[321,25],[320,26],[322,27],[323,28],[324,29],[308,30],[325,31],[326,32],[327,33],[359,34],[328,35],[329,36],[330,37],[331,38],[332,39],[333,40],[334,41],[335,42],[336,43],[337,44],[338,44],[339,45],[340,46],[342,47],[341,48],[343,49],[344,50],[345,51],[346,52],[347,53],[348,54],[349,55],[350,56],[351,57],[352,58],[353,59],[354,60],[355,61],[356,62],[357,63],[361,64],[366,65],[249,66],[200,67],[198,67],[113,68],[64,69],[63,70],[199,71],[184,72],[106,73],[62,74],[61,75],[248,70],[213,76],[212,76],[124,77],[220,68],[221,68],[223,78],[224,68],[225,75],[226,68],[197,68],[227,68],[228,79],[229,68],[230,76],[231,80],[232,68],[233,68],[234,68],[235,68],[236,76],[237,68],[238,68],[239,68],[240,68],[241,81],[242,68],[243,68],[244,68],[245,68],[246,68],[66,75],[67,75],[68,75],[69,75],[70,75],[71,75],[72,75],[73,68],[75,82],[76,75],[74,75],[77,75],[78,75],[79,75],[80,75],[81,75],[82,75],[83,68],[84,75],[85,75],[86,75],[87,75],[88,75],[89,68],[90,75],[91,75],[92,75],[93,75],[94,75],[95,75],[96,68],[98,83],[97,75],[99,75],[100,75],[101,75],[102,75],[103,81],[104,68],[105,68],[119,84],[107,85],[108,75],[109,75],[110,68],[111,75],[112,75],[114,86],[115,75],[116,75],[117,75],[118,75],[120,75],[121,75],[122,75],[123,75],[125,87],[126,75],[127,75],[128,75],[129,68],[130,75],[131,88],[132,88],[133,88],[134,68],[135,75],[136,75],[137,75],[142,75],[138,75],[139,68],[140,75],[141,68],[143,75],[144,75],[145,75],[146,75],[147,75],[148,75],[149,68],[150,75],[151,75],[152,75],[153,75],[154,75],[155,75],[156,75],[157,75],[158,75],[159,75],[160,75],[161,75],[162,75],[163,75],[164,75],[165,75],[166,89],[167,75],[168,75],[169,75],[170,75],[171,75],[172,75],[173,68],[174,68],[175,68],[176,68],[177,68],[178,75],[179,75],[180,75],[181,75],[247,68],[183,90],[206,91],[201,91],[192,92],[190,93],[204,94],[193,95],[207,96],[202,97],[203,94],[205,98],[188,99],[189,100],[187,101],[185,75],[194,102],[65,103],[211,76],[209,104],[182,105],[195,106],[291,107],[298,108],[290,107],[305,109],[282,110],[281,111],[304,112],[299,113],[302,114],[284,115],[283,116],[279,117],[278,118],[301,119],[280,120],[285,121],[289,121],[307,122],[306,121],[293,123],[294,124],[296,125],[292,126],[295,127],[300,112],[287,128],[288,129],[297,130],[277,131],[303,132],[271,133],[370,134],[260,133],[261,135],[255,133],[264,133],[269,136],[259,137],[257,133],[258,138],[60,133],[263,133],[270,139],[262,140]],"exportedModulesMap":[[266,1],[265,2],[253,3],[252,4],[251,5],[267,6],[254,7],[268,8],[256,9],[272,2],[368,10],[367,11],[364,12],[369,13],[273,14],[274,14],[309,15],[310,16],[311,17],[312,18],[313,19],[314,20],[315,21],[316,22],[317,23],[318,24],[319,24],[321,25],[320,26],[322,27],[323,28],[324,29],[308,30],[325,31],[326,32],[327,33],[359,34],[328,35],[329,36],[330,37],[331,38],[332,39],[333,40],[334,41],[335,42],[336,43],[337,44],[338,44],[339,45],[340,46],[342,47],[341,48],[343,49],[344,50],[345,51],[346,52],[347,53],[348,54],[349,55],[350,56],[351,57],[352,58],[353,59],[354,60],[355,61],[356,62],[357,63],[361,64],[366,65],[249,66],[200,67],[198,67],[113,68],[64,69],[63,70],[199,71],[184,72],[106,73],[62,74],[61,75],[248,70],[213,76],[212,76],[124,77],[220,68],[221,68],[223,78],[224,68],[225,75],[226,68],[197,68],[227,68],[228,79],[229,68],[230,76],[231,80],[232,68],[233,68],[234,68],[235,68],[236,76],[237,68],[238,68],[239,68],[240,68],[241,81],[242,68],[243,68],[244,68],[245,68],[246,68],[66,75],[67,75],[68,75],[69,75],[70,75],[71,75],[72,75],[73,68],[75,82],[76,75],[74,75],[77,75],[78,75],[79,75],[80,75],[81,75],[82,75],[83,68],[84,75],[85,75],[86,75],[87,75],[88,75],[89,68],[90,75],[91,75],[92,75],[93,75],[94,75],[95,75],[96,68],[98,83],[97,75],[99,75],[100,75],[101,75],[102,75],[103,81],[104,68],[105,68],[119,84],[107,85],[108,75],[109,75],[110,68],[111,75],[112,75],[114,86],[115,75],[116,75],[117,75],[118,75],[120,75],[121,75],[122,75],[123,75],[125,87],[126,75],[127,75],[128,75],[129,68],[130,75],[131,88],[132,88],[133,88],[134,68],[135,75],[136,75],[137,75],[142,75],[138,75],[139,68],[140,75],[141,68],[143,75],[144,75],[145,75],[146,75],[147,75],[148,75],[149,68],[150,75],[151,75],[152,75],[153,75],[154,75],[155,75],[156,75],[157,75],[158,75],[159,75],[160,75],[161,75],[162,75],[163,75],[164,75],[165,75],[166,89],[167,75],[168,75],[169,75],[170,75],[171,75],[172,75],[173,68],[174,68],[175,68],[176,68],[177,68],[178,75],[179,75],[180,75],[181,75],[247,68],[183,90],[206,91],[201,91],[192,92],[190,93],[204,94],[193,95],[207,96],[202,97],[203,94],[205,98],[188,99],[189,100],[187,101],[185,75],[194,102],[65,103],[211,76],[209,104],[182,105],[195,106],[291,107],[298,108],[290,107],[305,109],[282,110],[281,111],[304,112],[299,113],[302,114],[284,115],[283,116],[279,117],[278,118],[301,119],[280,120],[285,121],[289,121],[307,122],[306,121],[293,123],[294,124],[296,125],[292,126],[295,127],[300,112],[287,128],[288,129],[297,130],[277,131],[303,132],[271,133],[370,141],[260,133],[261,142],[255,133],[264,133],[269,136],[259,137],[257,133],[258,138],[60,133],[263,133],[270,2]],"semanticDiagnosticsPerFile":[266,265,253,252,251,250,267,254,268,256,272,368,367,364,369,365,360,273,274,309,310,311,312,313,314,315,316,317,318,319,321,320,322,323,324,308,358,325,326,327,359,328,329,330,331,332,333,334,335,336,337,338,339,340,342,341,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,362,363,361,366,275,249,222,200,198,113,64,63,199,184,106,62,61,248,213,212,124,220,221,223,224,225,226,197,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,66,67,68,69,70,71,72,73,75,76,74,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,98,97,99,100,101,102,103,104,105,119,107,108,109,110,111,112,114,115,116,117,118,120,121,122,123,125,126,127,128,129,130,131,132,133,134,135,136,137,142,138,139,140,141,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,247,183,206,201,192,190,204,193,207,202,203,205,191,196,188,189,186,187,185,194,65,214,215,216,217,218,219,208,211,210,209,182,195,59,57,58,10,12,11,2,13,14,15,16,17,18,19,20,3,4,21,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,8,48,45,46,47,49,9,50,51,52,55,53,54,1,56,291,298,290,305,282,281,304,299,302,284,283,279,278,301,280,285,286,289,276,307,306,293,294,296,292,295,300,287,288,297,277,303,370,261,269,259,258,270,262]},"version":"5.3.3"} \ No newline at end of file diff --git a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_core.js b/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_core.js deleted file mode 100755 index aa855a57..00000000 --- a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_core.js +++ /dev/null @@ -1,873 +0,0 @@ -import { - ALLOW_MULTIPLE_PLATFORMS, - ANIMATION_MODULE_TYPE, - APP_BOOTSTRAP_LISTENER, - APP_ID, - APP_INITIALIZER, - AfterRenderEventManager, - AfterRenderPhase, - ApplicationInitStatus, - ApplicationModule, - ApplicationRef, - Attribute, - COMPILER_OPTIONS, - CONTAINER_HEADER_OFFSET, - CSP_NONCE, - CUSTOM_ELEMENTS_SCHEMA, - ChangeDetectionScheduler, - ChangeDetectionStrategy, - ChangeDetectorRef, - Compiler, - CompilerFactory, - Component, - ComponentFactory, - ComponentFactory$1, - ComponentFactoryResolver$1, - ComponentRef, - ComponentRef$1, - Console, - ContentChild, - ContentChildren, - DEFAULT_CURRENCY_CODE, - DEFAULT_LOCALE_ID, - DEFER_BLOCK_CONFIG, - DEFER_BLOCK_DEPENDENCY_INTERCEPTOR, - DebugElement, - DebugEventListener, - DebugNode, - DefaultIterableDiffer, - DeferBlockBehavior, - DeferBlockState, - DestroyRef, - Directive, - ENVIRONMENT_INITIALIZER, - EffectScheduler, - ElementRef, - EmbeddedViewRef, - EnvironmentInjector, - ErrorHandler, - EventEmitter, - FactoryTarget, - Host, - HostBinding, - HostListener, - IMAGE_CONFIG, - IMAGE_CONFIG_DEFAULTS, - INJECTOR, - INJECTOR_SCOPE, - IS_HYDRATION_DOM_REUSE_ENABLED, - Inject, - InjectFlags, - Injectable, - InjectionToken, - Injector, - Input, - InputFlags, - IterableDiffers, - KeyValueDiffers, - LContext, - LOCALE_ID, - LifecycleHooksFeature, - LocaleDataIndex, - MissingTranslationStrategy, - ModuleWithComponentFactories, - NG_COMP_DEF, - NG_DIR_DEF, - NG_ELEMENT_ID, - NG_INJ_DEF, - NG_MOD_DEF, - NG_PIPE_DEF, - NG_PROV_DEF, - NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, - NO_CHANGE, - NO_ERRORS_SCHEMA, - NgModule, - NgModuleFactory, - NgModuleFactory$1, - NgModuleRef, - NgModuleRef$1, - NgProbeToken, - NgZone, - NoopNgZone, - Optional, - Output, - PACKAGE_ROOT_URL, - PLATFORM_ID, - PLATFORM_INITIALIZER, - PendingTasks, - Pipe, - PlatformRef, - Query, - QueryList, - ReflectionCapabilities, - Renderer2, - RendererFactory2, - RendererStyleFlags2, - RuntimeError, - SSR_CONTENT_INTEGRITY_MARKER, - Sanitizer, - SecurityContext, - Self, - SimpleChange, - SkipSelf, - TESTABILITY, - TESTABILITY_GETTER, - TRANSLATIONS, - TRANSLATIONS_FORMAT, - TemplateRef, - Testability, - TestabilityRegistry, - TransferState, - Type, - USE_RUNTIME_DEPS_TRACKER_FOR_JIT, - VERSION, - Version, - ViewChild, - ViewChildren, - ViewContainerRef, - ViewEncapsulation$1, - ViewRef, - ViewRef$1, - XSS_SECURITY_URL, - _global, - _sanitizeHtml, - _sanitizeUrl, - afterNextRender, - afterRender, - allowSanitizationBypassAndThrow, - annotateForHydration, - asNativeElements, - assertInInjectionContext, - assertNotInReactiveContext, - assertPlatform, - booleanAttribute, - bypassSanitizationTrustHtml, - bypassSanitizationTrustResourceUrl, - bypassSanitizationTrustScript, - bypassSanitizationTrustStyle, - bypassSanitizationTrustUrl, - clearResolutionOfComponentResourcesQueue, - compileComponent, - compileDirective, - compileNgModule, - compileNgModuleDefs, - compileNgModuleFactory, - compilePipe, - computed, - convertToBitFlags, - createComponent, - createEnvironmentInjector, - createInjector, - createNgModule, - createNgModuleRef, - createPlatform, - createPlatformFactory, - defaultIterableDiffers, - defaultKeyValueDiffers, - defineInjectable, - depsTracker, - destroyPlatform, - devModeEqual, - effect, - enableProdMode, - findLocaleData, - flushModuleScopingQueueAsMuchAsPossible, - formatRuntimeError, - forwardRef, - generateStandaloneInDeclarationsError, - getAsyncClassMetadataFn, - getDebugNode, - getDeferBlocks, - getDirectives, - getEnsureDirtyViewsAreAlwaysReachable, - getHostElement, - getInjectableDef, - getLContext, - getLocaleCurrencyCode, - getLocalePluralCase, - getModuleFactory, - getNgModuleById, - getPlatform, - getSanitizationBypassType, - importProvidersFrom, - inject, - injectChangeDetectorRef, - input, - internalAfterNextRender, - internalCreateApplication, - isBoundToModule, - isComponentDefPendingResolution, - isDevMode, - isEnvironmentProviders, - isInjectable, - isNgModule, - isPromise, - isSignal, - isStandalone, - isSubscribable, - makeEnvironmentProviders, - makeStateKey, - mergeApplicationConfig, - noSideEffects, - numberAttribute, - patchComponentDefWithScope, - performanceMarkFeature, - platformCore, - provideZoneChangeDetection, - provideZonelessChangeDetection, - readHydrationInfo, - reflectComponentType, - registerLocaleData, - registerNgModuleType, - renderDeferBlockState, - resetCompiledComponents, - resetJitOptions, - resolveComponentResources, - resolveForwardRef, - restoreComponentResolutionQueue, - runInInjectionContext, - setAllowDuplicateNgModuleIdsForTest, - setAlternateWeakRefImpl, - setClassMetadata, - setClassMetadataAsync, - setCurrentInjector, - setDocument, - setEnsureDirtyViewsAreAlwaysReachable, - setInjectorProfilerContext, - setLocaleId, - setTestabilityGetter, - signal, - store, - stringify, - transitiveScopesFor, - triggerResourceLoading, - truncateMiddle, - unregisterAllLocaleData, - untracked, - unwrapSafeValue, - whenStable, - withDomHydration, - ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, - ɵgetUnknownElementStrictMode, - ɵgetUnknownPropertyStrictMode, - ɵsetClassDebugInfo, - ɵsetUnknownElementStrictMode, - ɵsetUnknownPropertyStrictMode, - ɵɵCopyDefinitionFeature, - ɵɵHostDirectivesFeature, - ɵɵInheritDefinitionFeature, - ɵɵInputTransformsFeature, - ɵɵNgOnChangesFeature, - ɵɵProvidersFeature, - ɵɵStandaloneFeature, - ɵɵadvance, - ɵɵattribute, - ɵɵattributeInterpolate1, - ɵɵattributeInterpolate2, - ɵɵattributeInterpolate3, - ɵɵattributeInterpolate4, - ɵɵattributeInterpolate5, - ɵɵattributeInterpolate6, - ɵɵattributeInterpolate7, - ɵɵattributeInterpolate8, - ɵɵattributeInterpolateV, - ɵɵclassMap, - ɵɵclassMapInterpolate1, - ɵɵclassMapInterpolate2, - ɵɵclassMapInterpolate3, - ɵɵclassMapInterpolate4, - ɵɵclassMapInterpolate5, - ɵɵclassMapInterpolate6, - ɵɵclassMapInterpolate7, - ɵɵclassMapInterpolate8, - ɵɵclassMapInterpolateV, - ɵɵclassProp, - ɵɵcomponentInstance, - ɵɵconditional, - ɵɵcontentQuery, - ɵɵdefer, - ɵɵdeferEnableTimerScheduling, - ɵɵdeferOnHover, - ɵɵdeferOnIdle, - ɵɵdeferOnImmediate, - ɵɵdeferOnInteraction, - ɵɵdeferOnTimer, - ɵɵdeferOnViewport, - ɵɵdeferPrefetchOnHover, - ɵɵdeferPrefetchOnIdle, - ɵɵdeferPrefetchOnImmediate, - ɵɵdeferPrefetchOnInteraction, - ɵɵdeferPrefetchOnTimer, - ɵɵdeferPrefetchOnViewport, - ɵɵdeferPrefetchWhen, - ɵɵdeferWhen, - ɵɵdefineComponent, - ɵɵdefineDirective, - ɵɵdefineInjectable, - ɵɵdefineInjector, - ɵɵdefineNgModule, - ɵɵdefinePipe, - ɵɵdirectiveInject, - ɵɵdisableBindings, - ɵɵelement, - ɵɵelementContainer, - ɵɵelementContainerEnd, - ɵɵelementContainerStart, - ɵɵelementEnd, - ɵɵelementStart, - ɵɵenableBindings, - ɵɵgetComponentDepsFactory, - ɵɵgetCurrentView, - ɵɵgetInheritedFactory, - ɵɵhostProperty, - ɵɵi18n, - ɵɵi18nApply, - ɵɵi18nAttributes, - ɵɵi18nEnd, - ɵɵi18nExp, - ɵɵi18nPostprocess, - ɵɵi18nStart, - ɵɵinject, - ɵɵinjectAttribute, - ɵɵinvalidFactory, - ɵɵinvalidFactoryDep, - ɵɵlistener, - ɵɵloadQuery, - ɵɵnamespaceHTML, - ɵɵnamespaceMathML, - ɵɵnamespaceSVG, - ɵɵnextContext, - ɵɵngDeclareClassMetadata, - ɵɵngDeclareComponent, - ɵɵngDeclareDirective, - ɵɵngDeclareFactory, - ɵɵngDeclareInjectable, - ɵɵngDeclareInjector, - ɵɵngDeclareNgModule, - ɵɵngDeclarePipe, - ɵɵpipe, - ɵɵpipeBind1, - ɵɵpipeBind2, - ɵɵpipeBind3, - ɵɵpipeBind4, - ɵɵpipeBindV, - ɵɵprojection, - ɵɵprojectionDef, - ɵɵproperty, - ɵɵpropertyInterpolate, - ɵɵpropertyInterpolate1, - ɵɵpropertyInterpolate2, - ɵɵpropertyInterpolate3, - ɵɵpropertyInterpolate4, - ɵɵpropertyInterpolate5, - ɵɵpropertyInterpolate6, - ɵɵpropertyInterpolate7, - ɵɵpropertyInterpolate8, - ɵɵpropertyInterpolateV, - ɵɵpureFunction0, - ɵɵpureFunction1, - ɵɵpureFunction2, - ɵɵpureFunction3, - ɵɵpureFunction4, - ɵɵpureFunction5, - ɵɵpureFunction6, - ɵɵpureFunction7, - ɵɵpureFunction8, - ɵɵpureFunctionV, - ɵɵqueryRefresh, - ɵɵreference, - ɵɵrepeater, - ɵɵrepeaterCreate, - ɵɵrepeaterTrackByIdentity, - ɵɵrepeaterTrackByIndex, - ɵɵresetView, - ɵɵresolveBody, - ɵɵresolveDocument, - ɵɵresolveWindow, - ɵɵrestoreView, - ɵɵsanitizeHtml, - ɵɵsanitizeResourceUrl, - ɵɵsanitizeScript, - ɵɵsanitizeStyle, - ɵɵsanitizeUrl, - ɵɵsanitizeUrlOrResourceUrl, - ɵɵsetComponentScope, - ɵɵsetNgModuleScope, - ɵɵstyleMap, - ɵɵstyleMapInterpolate1, - ɵɵstyleMapInterpolate2, - ɵɵstyleMapInterpolate3, - ɵɵstyleMapInterpolate4, - ɵɵstyleMapInterpolate5, - ɵɵstyleMapInterpolate6, - ɵɵstyleMapInterpolate7, - ɵɵstyleMapInterpolate8, - ɵɵstyleMapInterpolateV, - ɵɵstyleProp, - ɵɵstylePropInterpolate1, - ɵɵstylePropInterpolate2, - ɵɵstylePropInterpolate3, - ɵɵstylePropInterpolate4, - ɵɵstylePropInterpolate5, - ɵɵstylePropInterpolate6, - ɵɵstylePropInterpolate7, - ɵɵstylePropInterpolate8, - ɵɵstylePropInterpolateV, - ɵɵsyntheticHostListener, - ɵɵsyntheticHostProperty, - ɵɵtemplate, - ɵɵtemplateRefExtractor, - ɵɵtext, - ɵɵtextInterpolate, - ɵɵtextInterpolate1, - ɵɵtextInterpolate2, - ɵɵtextInterpolate3, - ɵɵtextInterpolate4, - ɵɵtextInterpolate5, - ɵɵtextInterpolate6, - ɵɵtextInterpolate7, - ɵɵtextInterpolate8, - ɵɵtextInterpolateV, - ɵɵtrustConstantHtml, - ɵɵtrustConstantResourceUrl, - ɵɵvalidateIframeAttribute, - ɵɵviewQuery -} from "./chunk-JNM7CA4Q.js"; -export { - ANIMATION_MODULE_TYPE, - APP_BOOTSTRAP_LISTENER, - APP_ID, - APP_INITIALIZER, - AfterRenderPhase, - ApplicationInitStatus, - ApplicationModule, - ApplicationRef, - Attribute, - COMPILER_OPTIONS, - CSP_NONCE, - CUSTOM_ELEMENTS_SCHEMA, - ChangeDetectionStrategy, - ChangeDetectorRef, - Compiler, - CompilerFactory, - Component, - ComponentFactory$1 as ComponentFactory, - ComponentFactoryResolver$1 as ComponentFactoryResolver, - ComponentRef$1 as ComponentRef, - ContentChild, - ContentChildren, - DEFAULT_CURRENCY_CODE, - DebugElement, - DebugEventListener, - DebugNode, - DefaultIterableDiffer, - DestroyRef, - Directive, - ENVIRONMENT_INITIALIZER, - ElementRef, - EmbeddedViewRef, - EnvironmentInjector, - ErrorHandler, - EventEmitter, - Host, - HostBinding, - HostListener, - INJECTOR, - Inject, - InjectFlags, - Injectable, - InjectionToken, - Injector, - Input, - IterableDiffers, - KeyValueDiffers, - LOCALE_ID, - MissingTranslationStrategy, - ModuleWithComponentFactories, - NO_ERRORS_SCHEMA, - NgModule, - NgModuleFactory$1 as NgModuleFactory, - NgModuleRef$1 as NgModuleRef, - NgProbeToken, - NgZone, - Optional, - Output, - PACKAGE_ROOT_URL, - PLATFORM_ID, - PLATFORM_INITIALIZER, - Pipe, - PlatformRef, - Query, - QueryList, - Renderer2, - RendererFactory2, - RendererStyleFlags2, - Sanitizer, - SecurityContext, - Self, - SimpleChange, - SkipSelf, - TRANSLATIONS, - TRANSLATIONS_FORMAT, - TemplateRef, - Testability, - TestabilityRegistry, - TransferState, - Type, - VERSION, - Version, - ViewChild, - ViewChildren, - ViewContainerRef, - ViewEncapsulation$1 as ViewEncapsulation, - ViewRef, - afterNextRender, - afterRender, - asNativeElements, - assertInInjectionContext, - assertNotInReactiveContext, - assertPlatform, - booleanAttribute, - computed, - createComponent, - createEnvironmentInjector, - createNgModule, - createNgModuleRef, - createPlatform, - createPlatformFactory, - defineInjectable, - destroyPlatform, - effect, - enableProdMode, - forwardRef, - getDebugNode, - getModuleFactory, - getNgModuleById, - getPlatform, - importProvidersFrom, - inject, - input, - isDevMode, - isSignal, - isStandalone, - makeEnvironmentProviders, - makeStateKey, - mergeApplicationConfig, - numberAttribute, - platformCore, - provideZoneChangeDetection, - reflectComponentType, - resolveForwardRef, - runInInjectionContext, - setTestabilityGetter, - signal, - untracked, - ALLOW_MULTIPLE_PLATFORMS as ɵALLOW_MULTIPLE_PLATFORMS, - AfterRenderEventManager as ɵAfterRenderEventManager, - CONTAINER_HEADER_OFFSET as ɵCONTAINER_HEADER_OFFSET, - ChangeDetectionScheduler as ɵChangeDetectionScheduler, - ComponentFactory$1 as ɵComponentFactory, - Console as ɵConsole, - DEFAULT_LOCALE_ID as ɵDEFAULT_LOCALE_ID, - DEFER_BLOCK_CONFIG as ɵDEFER_BLOCK_CONFIG, - DEFER_BLOCK_DEPENDENCY_INTERCEPTOR as ɵDEFER_BLOCK_DEPENDENCY_INTERCEPTOR, - DeferBlockBehavior as ɵDeferBlockBehavior, - DeferBlockState as ɵDeferBlockState, - EffectScheduler as ɵEffectScheduler, - IMAGE_CONFIG as ɵIMAGE_CONFIG, - IMAGE_CONFIG_DEFAULTS as ɵIMAGE_CONFIG_DEFAULTS, - INJECTOR_SCOPE as ɵINJECTOR_SCOPE, - ɵINPUT_SIGNAL_BRAND_WRITE_TYPE, - IS_HYDRATION_DOM_REUSE_ENABLED as ɵIS_HYDRATION_DOM_REUSE_ENABLED, - LContext as ɵLContext, - LifecycleHooksFeature as ɵLifecycleHooksFeature, - LocaleDataIndex as ɵLocaleDataIndex, - NG_COMP_DEF as ɵNG_COMP_DEF, - NG_DIR_DEF as ɵNG_DIR_DEF, - NG_ELEMENT_ID as ɵNG_ELEMENT_ID, - NG_INJ_DEF as ɵNG_INJ_DEF, - NG_MOD_DEF as ɵNG_MOD_DEF, - NG_PIPE_DEF as ɵNG_PIPE_DEF, - NG_PROV_DEF as ɵNG_PROV_DEF, - NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR as ɵNOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR, - NO_CHANGE as ɵNO_CHANGE, - NgModuleFactory as ɵNgModuleFactory, - NoopNgZone as ɵNoopNgZone, - PendingTasks as ɵPendingTasks, - ReflectionCapabilities as ɵReflectionCapabilities, - ComponentFactory as ɵRender3ComponentFactory, - ComponentRef as ɵRender3ComponentRef, - NgModuleRef as ɵRender3NgModuleRef, - RuntimeError as ɵRuntimeError, - SSR_CONTENT_INTEGRITY_MARKER as ɵSSR_CONTENT_INTEGRITY_MARKER, - TESTABILITY as ɵTESTABILITY, - TESTABILITY_GETTER as ɵTESTABILITY_GETTER, - USE_RUNTIME_DEPS_TRACKER_FOR_JIT as ɵUSE_RUNTIME_DEPS_TRACKER_FOR_JIT, - ViewRef$1 as ɵViewRef, - XSS_SECURITY_URL as ɵXSS_SECURITY_URL, - _sanitizeHtml as ɵ_sanitizeHtml, - _sanitizeUrl as ɵ_sanitizeUrl, - allowSanitizationBypassAndThrow as ɵallowSanitizationBypassAndThrow, - annotateForHydration as ɵannotateForHydration, - bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, - bypassSanitizationTrustResourceUrl as ɵbypassSanitizationTrustResourceUrl, - bypassSanitizationTrustScript as ɵbypassSanitizationTrustScript, - bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, - bypassSanitizationTrustUrl as ɵbypassSanitizationTrustUrl, - clearResolutionOfComponentResourcesQueue as ɵclearResolutionOfComponentResourcesQueue, - compileComponent as ɵcompileComponent, - compileDirective as ɵcompileDirective, - compileNgModule as ɵcompileNgModule, - compileNgModuleDefs as ɵcompileNgModuleDefs, - compileNgModuleFactory as ɵcompileNgModuleFactory, - compilePipe as ɵcompilePipe, - convertToBitFlags as ɵconvertToBitFlags, - createInjector as ɵcreateInjector, - defaultIterableDiffers as ɵdefaultIterableDiffers, - defaultKeyValueDiffers as ɵdefaultKeyValueDiffers, - depsTracker as ɵdepsTracker, - devModeEqual as ɵdevModeEqual, - findLocaleData as ɵfindLocaleData, - flushModuleScopingQueueAsMuchAsPossible as ɵflushModuleScopingQueueAsMuchAsPossible, - formatRuntimeError as ɵformatRuntimeError, - generateStandaloneInDeclarationsError as ɵgenerateStandaloneInDeclarationsError, - getAsyncClassMetadataFn as ɵgetAsyncClassMetadataFn, - getDebugNode as ɵgetDebugNode, - getDeferBlocks as ɵgetDeferBlocks, - getDirectives as ɵgetDirectives, - getEnsureDirtyViewsAreAlwaysReachable as ɵgetEnsureDirtyViewsAreAlwaysReachable, - getHostElement as ɵgetHostElement, - getInjectableDef as ɵgetInjectableDef, - getLContext as ɵgetLContext, - getLocaleCurrencyCode as ɵgetLocaleCurrencyCode, - getLocalePluralCase as ɵgetLocalePluralCase, - getSanitizationBypassType as ɵgetSanitizationBypassType, - ɵgetUnknownElementStrictMode, - ɵgetUnknownPropertyStrictMode, - _global as ɵglobal, - injectChangeDetectorRef as ɵinjectChangeDetectorRef, - internalAfterNextRender as ɵinternalAfterNextRender, - internalCreateApplication as ɵinternalCreateApplication, - isBoundToModule as ɵisBoundToModule, - isComponentDefPendingResolution as ɵisComponentDefPendingResolution, - isEnvironmentProviders as ɵisEnvironmentProviders, - isInjectable as ɵisInjectable, - isNgModule as ɵisNgModule, - isPromise as ɵisPromise, - isSubscribable as ɵisSubscribable, - noSideEffects as ɵnoSideEffects, - patchComponentDefWithScope as ɵpatchComponentDefWithScope, - performanceMarkFeature as ɵperformanceMarkFeature, - provideZonelessChangeDetection as ɵprovideZonelessChangeDetection, - readHydrationInfo as ɵreadHydrationInfo, - registerLocaleData as ɵregisterLocaleData, - renderDeferBlockState as ɵrenderDeferBlockState, - resetCompiledComponents as ɵresetCompiledComponents, - resetJitOptions as ɵresetJitOptions, - resolveComponentResources as ɵresolveComponentResources, - restoreComponentResolutionQueue as ɵrestoreComponentResolutionQueue, - setAllowDuplicateNgModuleIdsForTest as ɵsetAllowDuplicateNgModuleIdsForTest, - setAlternateWeakRefImpl as ɵsetAlternateWeakRefImpl, - ɵsetClassDebugInfo, - setClassMetadata as ɵsetClassMetadata, - setClassMetadataAsync as ɵsetClassMetadataAsync, - setCurrentInjector as ɵsetCurrentInjector, - setDocument as ɵsetDocument, - setEnsureDirtyViewsAreAlwaysReachable as ɵsetEnsureDirtyViewsAreAlwaysReachable, - setInjectorProfilerContext as ɵsetInjectorProfilerContext, - setLocaleId as ɵsetLocaleId, - ɵsetUnknownElementStrictMode, - ɵsetUnknownPropertyStrictMode, - store as ɵstore, - stringify as ɵstringify, - transitiveScopesFor as ɵtransitiveScopesFor, - triggerResourceLoading as ɵtriggerResourceLoading, - truncateMiddle as ɵtruncateMiddle, - unregisterAllLocaleData as ɵunregisterLocaleData, - unwrapSafeValue as ɵunwrapSafeValue, - whenStable as ɵwhenStable, - withDomHydration as ɵwithDomHydration, - ɵɵCopyDefinitionFeature, - FactoryTarget as ɵɵFactoryTarget, - ɵɵHostDirectivesFeature, - ɵɵInheritDefinitionFeature, - InputFlags as ɵɵInputFlags, - ɵɵInputTransformsFeature, - ɵɵNgOnChangesFeature, - ɵɵProvidersFeature, - ɵɵStandaloneFeature, - ɵɵadvance, - ɵɵattribute, - ɵɵattributeInterpolate1, - ɵɵattributeInterpolate2, - ɵɵattributeInterpolate3, - ɵɵattributeInterpolate4, - ɵɵattributeInterpolate5, - ɵɵattributeInterpolate6, - ɵɵattributeInterpolate7, - ɵɵattributeInterpolate8, - ɵɵattributeInterpolateV, - ɵɵclassMap, - ɵɵclassMapInterpolate1, - ɵɵclassMapInterpolate2, - ɵɵclassMapInterpolate3, - ɵɵclassMapInterpolate4, - ɵɵclassMapInterpolate5, - ɵɵclassMapInterpolate6, - ɵɵclassMapInterpolate7, - ɵɵclassMapInterpolate8, - ɵɵclassMapInterpolateV, - ɵɵclassProp, - ɵɵcomponentInstance, - ɵɵconditional, - ɵɵcontentQuery, - ɵɵdefer, - ɵɵdeferEnableTimerScheduling, - ɵɵdeferOnHover, - ɵɵdeferOnIdle, - ɵɵdeferOnImmediate, - ɵɵdeferOnInteraction, - ɵɵdeferOnTimer, - ɵɵdeferOnViewport, - ɵɵdeferPrefetchOnHover, - ɵɵdeferPrefetchOnIdle, - ɵɵdeferPrefetchOnImmediate, - ɵɵdeferPrefetchOnInteraction, - ɵɵdeferPrefetchOnTimer, - ɵɵdeferPrefetchOnViewport, - ɵɵdeferPrefetchWhen, - ɵɵdeferWhen, - ɵɵdefineComponent, - ɵɵdefineDirective, - ɵɵdefineInjectable, - ɵɵdefineInjector, - ɵɵdefineNgModule, - ɵɵdefinePipe, - ɵɵdirectiveInject, - ɵɵdisableBindings, - ɵɵelement, - ɵɵelementContainer, - ɵɵelementContainerEnd, - ɵɵelementContainerStart, - ɵɵelementEnd, - ɵɵelementStart, - ɵɵenableBindings, - ɵɵgetComponentDepsFactory, - ɵɵgetCurrentView, - ɵɵgetInheritedFactory, - ɵɵhostProperty, - ɵɵi18n, - ɵɵi18nApply, - ɵɵi18nAttributes, - ɵɵi18nEnd, - ɵɵi18nExp, - ɵɵi18nPostprocess, - ɵɵi18nStart, - ɵɵinject, - ɵɵinjectAttribute, - ɵɵinvalidFactory, - ɵɵinvalidFactoryDep, - ɵɵlistener, - ɵɵloadQuery, - ɵɵnamespaceHTML, - ɵɵnamespaceMathML, - ɵɵnamespaceSVG, - ɵɵnextContext, - ɵɵngDeclareClassMetadata, - ɵɵngDeclareComponent, - ɵɵngDeclareDirective, - ɵɵngDeclareFactory, - ɵɵngDeclareInjectable, - ɵɵngDeclareInjector, - ɵɵngDeclareNgModule, - ɵɵngDeclarePipe, - ɵɵpipe, - ɵɵpipeBind1, - ɵɵpipeBind2, - ɵɵpipeBind3, - ɵɵpipeBind4, - ɵɵpipeBindV, - ɵɵprojection, - ɵɵprojectionDef, - ɵɵproperty, - ɵɵpropertyInterpolate, - ɵɵpropertyInterpolate1, - ɵɵpropertyInterpolate2, - ɵɵpropertyInterpolate3, - ɵɵpropertyInterpolate4, - ɵɵpropertyInterpolate5, - ɵɵpropertyInterpolate6, - ɵɵpropertyInterpolate7, - ɵɵpropertyInterpolate8, - ɵɵpropertyInterpolateV, - ɵɵpureFunction0, - ɵɵpureFunction1, - ɵɵpureFunction2, - ɵɵpureFunction3, - ɵɵpureFunction4, - ɵɵpureFunction5, - ɵɵpureFunction6, - ɵɵpureFunction7, - ɵɵpureFunction8, - ɵɵpureFunctionV, - ɵɵqueryRefresh, - ɵɵreference, - registerNgModuleType as ɵɵregisterNgModuleType, - ɵɵrepeater, - ɵɵrepeaterCreate, - ɵɵrepeaterTrackByIdentity, - ɵɵrepeaterTrackByIndex, - ɵɵresetView, - ɵɵresolveBody, - ɵɵresolveDocument, - ɵɵresolveWindow, - ɵɵrestoreView, - ɵɵsanitizeHtml, - ɵɵsanitizeResourceUrl, - ɵɵsanitizeScript, - ɵɵsanitizeStyle, - ɵɵsanitizeUrl, - ɵɵsanitizeUrlOrResourceUrl, - ɵɵsetComponentScope, - ɵɵsetNgModuleScope, - ɵɵstyleMap, - ɵɵstyleMapInterpolate1, - ɵɵstyleMapInterpolate2, - ɵɵstyleMapInterpolate3, - ɵɵstyleMapInterpolate4, - ɵɵstyleMapInterpolate5, - ɵɵstyleMapInterpolate6, - ɵɵstyleMapInterpolate7, - ɵɵstyleMapInterpolate8, - ɵɵstyleMapInterpolateV, - ɵɵstyleProp, - ɵɵstylePropInterpolate1, - ɵɵstylePropInterpolate2, - ɵɵstylePropInterpolate3, - ɵɵstylePropInterpolate4, - ɵɵstylePropInterpolate5, - ɵɵstylePropInterpolate6, - ɵɵstylePropInterpolate7, - ɵɵstylePropInterpolate8, - ɵɵstylePropInterpolateV, - ɵɵsyntheticHostListener, - ɵɵsyntheticHostProperty, - ɵɵtemplate, - ɵɵtemplateRefExtractor, - ɵɵtext, - ɵɵtextInterpolate, - ɵɵtextInterpolate1, - ɵɵtextInterpolate2, - ɵɵtextInterpolate3, - ɵɵtextInterpolate4, - ɵɵtextInterpolate5, - ɵɵtextInterpolate6, - ɵɵtextInterpolate7, - ɵɵtextInterpolate8, - ɵɵtextInterpolateV, - ɵɵtrustConstantHtml, - ɵɵtrustConstantResourceUrl, - ɵɵvalidateIframeAttribute, - ɵɵviewQuery -}; -//# sourceMappingURL=@angular_core.js.map diff --git a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_core.js.map b/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_core.js.map deleted file mode 100755 index 98652118..00000000 --- a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_core.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_platform-browser.js b/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_platform-browser.js deleted file mode 100755 index 6b9937c4..00000000 --- a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_platform-browser.js +++ /dev/null @@ -1,80 +0,0 @@ -import { - BrowserDomAdapter, - BrowserGetTestability, - BrowserModule, - By, - DomEventsPlugin, - DomRendererFactory2, - DomSanitizer, - DomSanitizerImpl, - EVENT_MANAGER_PLUGINS, - EventManager, - EventManagerPlugin, - HAMMER_GESTURE_CONFIG, - HAMMER_LOADER, - HammerGestureConfig, - HammerGesturesPlugin, - HammerModule, - HydrationFeatureKind, - INTERNAL_BROWSER_PLATFORM_PROVIDERS, - KeyEventsPlugin, - Meta, - REMOVE_STYLES_ON_COMPONENT_DESTROY, - SharedStylesHost, - Title, - TransferState, - VERSION, - bootstrapApplication, - createApplication, - disableDebugTools, - enableDebugTools, - getDOM, - initDomAdapter, - makeStateKey, - platformBrowser, - provideClientHydration, - provideProtractorTestingSupport, - withHttpTransferCacheOptions, - withNoHttpTransferCache -} from "./chunk-L6IRO5SR.js"; -import "./chunk-JNM7CA4Q.js"; -export { - BrowserModule, - By, - DomSanitizer, - EVENT_MANAGER_PLUGINS, - EventManager, - EventManagerPlugin, - HAMMER_GESTURE_CONFIG, - HAMMER_LOADER, - HammerGestureConfig, - HammerModule, - HydrationFeatureKind, - Meta, - REMOVE_STYLES_ON_COMPONENT_DESTROY, - Title, - TransferState, - VERSION, - bootstrapApplication, - createApplication, - disableDebugTools, - enableDebugTools, - makeStateKey, - platformBrowser, - provideClientHydration, - provideProtractorTestingSupport, - withHttpTransferCacheOptions, - withNoHttpTransferCache, - BrowserDomAdapter as ɵBrowserDomAdapter, - BrowserGetTestability as ɵBrowserGetTestability, - DomEventsPlugin as ɵDomEventsPlugin, - DomRendererFactory2 as ɵDomRendererFactory2, - DomSanitizerImpl as ɵDomSanitizerImpl, - HammerGesturesPlugin as ɵHammerGesturesPlugin, - INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, - KeyEventsPlugin as ɵKeyEventsPlugin, - SharedStylesHost as ɵSharedStylesHost, - getDOM as ɵgetDOM, - initDomAdapter as ɵinitDomAdapter -}; -//# sourceMappingURL=@angular_platform-browser.js.map diff --git a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_platform-browser.js.map b/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_platform-browser.js.map deleted file mode 100755 index 98652118..00000000 --- a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_platform-browser.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_router.js b/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_router.js deleted file mode 100755 index cc032271..00000000 --- a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_router.js +++ /dev/null @@ -1,5583 +0,0 @@ -import { - DOCUMENT, - HashLocationStrategy, - LOCATION_INITIALIZED, - Location, - LocationStrategy, - PathLocationStrategy, - Title, - ViewportScroller -} from "./chunk-L6IRO5SR.js"; -import { - APP_BOOTSTRAP_LISTENER, - APP_INITIALIZER, - ApplicationRef, - Attribute, - BehaviorSubject, - ChangeDetectorRef, - Compiler, - Component, - ConnectableObservable, - Console, - ContentChildren, - Directive, - EMPTY, - ENVIRONMENT_INITIALIZER, - ElementRef, - EmptyError, - EnvironmentInjector, - EventEmitter, - HostBinding, - HostListener, - Inject, - InjectFlags, - Injectable, - InjectionToken, - Injector, - Input, - InputFlags, - NgModule, - NgModuleFactory$1, - NgZone, - Optional, - Output, - PendingTasks, - Renderer2, - RuntimeError, - SkipSelf, - Subject, - Subscription, - Version, - ViewContainerRef, - __spreadProps, - __spreadValues, - afterNextRender, - booleanAttribute, - catchError, - combineLatest, - concat, - concatMap, - createEnvironmentInjector, - defaultIfEmpty, - defer, - filter, - finalize, - first, - from, - inject, - isInjectable, - isNgModule, - isObservable, - isPromise, - isStandalone, - last, - makeEnvironmentProviders, - map, - mapTo, - mergeAll, - mergeMap, - of, - pipe, - refCount, - reflectComponentType, - runInInjectionContext, - scan, - setClassMetadata, - startWith, - switchMap, - take, - takeLast, - takeUntil, - tap, - throwError, - ɵɵInputTransformsFeature, - ɵɵNgOnChangesFeature, - ɵɵStandaloneFeature, - ɵɵattribute, - ɵɵcontentQuery, - ɵɵdefineComponent, - ɵɵdefineDirective, - ɵɵdefineInjectable, - ɵɵdefineInjector, - ɵɵdefineNgModule, - ɵɵdirectiveInject, - ɵɵelement, - ɵɵgetInheritedFactory, - ɵɵinject, - ɵɵinjectAttribute, - ɵɵinvalidFactory, - ɵɵlistener, - ɵɵloadQuery, - ɵɵqueryRefresh, - ɵɵsanitizeUrlOrResourceUrl -} from "./chunk-JNM7CA4Q.js"; - -// node_modules/@angular/router/fesm2022/router.mjs -var PRIMARY_OUTLET = "primary"; -var RouteTitleKey = Symbol("RouteTitle"); -var ParamsAsMap = class { - constructor(params) { - this.params = params || {}; - } - has(name) { - return Object.prototype.hasOwnProperty.call(this.params, name); - } - get(name) { - if (this.has(name)) { - const v = this.params[name]; - return Array.isArray(v) ? v[0] : v; - } - return null; - } - getAll(name) { - if (this.has(name)) { - const v = this.params[name]; - return Array.isArray(v) ? v : [v]; - } - return []; - } - get keys() { - return Object.keys(this.params); - } -}; -function convertToParamMap(params) { - return new ParamsAsMap(params); -} -function defaultUrlMatcher(segments, segmentGroup, route) { - const parts = route.path.split("/"); - if (parts.length > segments.length) { - return null; - } - if (route.pathMatch === "full" && (segmentGroup.hasChildren() || parts.length < segments.length)) { - return null; - } - const posParams = {}; - for (let index = 0; index < parts.length; index++) { - const part = parts[index]; - const segment = segments[index]; - const isParameter = part.startsWith(":"); - if (isParameter) { - posParams[part.substring(1)] = segment; - } else if (part !== segment.path) { - return null; - } - } - return { - consumed: segments.slice(0, parts.length), - posParams - }; -} -function shallowEqualArrays(a, b) { - if (a.length !== b.length) - return false; - for (let i = 0; i < a.length; ++i) { - if (!shallowEqual(a[i], b[i])) - return false; - } - return true; -} -function shallowEqual(a, b) { - const k1 = a ? getDataKeys(a) : void 0; - const k2 = b ? getDataKeys(b) : void 0; - if (!k1 || !k2 || k1.length != k2.length) { - return false; - } - let key; - for (let i = 0; i < k1.length; i++) { - key = k1[i]; - if (!equalArraysOrString(a[key], b[key])) { - return false; - } - } - return true; -} -function getDataKeys(obj) { - return [...Object.keys(obj), ...Object.getOwnPropertySymbols(obj)]; -} -function equalArraysOrString(a, b) { - if (Array.isArray(a) && Array.isArray(b)) { - if (a.length !== b.length) - return false; - const aSorted = [...a].sort(); - const bSorted = [...b].sort(); - return aSorted.every((val, index) => bSorted[index] === val); - } else { - return a === b; - } -} -function last2(a) { - return a.length > 0 ? a[a.length - 1] : null; -} -function wrapIntoObservable(value) { - if (isObservable(value)) { - return value; - } - if (isPromise(value)) { - return from(Promise.resolve(value)); - } - return of(value); -} -var pathCompareMap = { - "exact": equalSegmentGroups, - "subset": containsSegmentGroup -}; -var paramCompareMap = { - "exact": equalParams, - "subset": containsParams, - "ignored": () => true -}; -function containsTree(container, containee, options) { - return pathCompareMap[options.paths](container.root, containee.root, options.matrixParams) && paramCompareMap[options.queryParams](container.queryParams, containee.queryParams) && !(options.fragment === "exact" && container.fragment !== containee.fragment); -} -function equalParams(container, containee) { - return shallowEqual(container, containee); -} -function equalSegmentGroups(container, containee, matrixParams) { - if (!equalPath(container.segments, containee.segments)) - return false; - if (!matrixParamsMatch(container.segments, containee.segments, matrixParams)) { - return false; - } - if (container.numberOfChildren !== containee.numberOfChildren) - return false; - for (const c in containee.children) { - if (!container.children[c]) - return false; - if (!equalSegmentGroups(container.children[c], containee.children[c], matrixParams)) - return false; - } - return true; -} -function containsParams(container, containee) { - return Object.keys(containee).length <= Object.keys(container).length && Object.keys(containee).every((key) => equalArraysOrString(container[key], containee[key])); -} -function containsSegmentGroup(container, containee, matrixParams) { - return containsSegmentGroupHelper(container, containee, containee.segments, matrixParams); -} -function containsSegmentGroupHelper(container, containee, containeePaths, matrixParams) { - if (container.segments.length > containeePaths.length) { - const current = container.segments.slice(0, containeePaths.length); - if (!equalPath(current, containeePaths)) - return false; - if (containee.hasChildren()) - return false; - if (!matrixParamsMatch(current, containeePaths, matrixParams)) - return false; - return true; - } else if (container.segments.length === containeePaths.length) { - if (!equalPath(container.segments, containeePaths)) - return false; - if (!matrixParamsMatch(container.segments, containeePaths, matrixParams)) - return false; - for (const c in containee.children) { - if (!container.children[c]) - return false; - if (!containsSegmentGroup(container.children[c], containee.children[c], matrixParams)) { - return false; - } - } - return true; - } else { - const current = containeePaths.slice(0, container.segments.length); - const next = containeePaths.slice(container.segments.length); - if (!equalPath(container.segments, current)) - return false; - if (!matrixParamsMatch(container.segments, current, matrixParams)) - return false; - if (!container.children[PRIMARY_OUTLET]) - return false; - return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next, matrixParams); - } -} -function matrixParamsMatch(containerPaths, containeePaths, options) { - return containeePaths.every((containeeSegment, i) => { - return paramCompareMap[options](containerPaths[i].parameters, containeeSegment.parameters); - }); -} -var UrlTree = class { - constructor(root = new UrlSegmentGroup([], {}), queryParams = {}, fragment = null) { - this.root = root; - this.queryParams = queryParams; - this.fragment = fragment; - if (typeof ngDevMode === "undefined" || ngDevMode) { - if (root.segments.length > 0) { - throw new RuntimeError(4015, "The root `UrlSegmentGroup` should not contain `segments`. Instead, these segments belong in the `children` so they can be associated with a named outlet."); - } - } - } - get queryParamMap() { - this._queryParamMap ??= convertToParamMap(this.queryParams); - return this._queryParamMap; - } - /** @docsNotRequired */ - toString() { - return DEFAULT_SERIALIZER.serialize(this); - } -}; -var UrlSegmentGroup = class { - constructor(segments, children) { - this.segments = segments; - this.children = children; - this.parent = null; - Object.values(children).forEach((v) => v.parent = this); - } - /** Whether the segment has child segments */ - hasChildren() { - return this.numberOfChildren > 0; - } - /** Number of child segments */ - get numberOfChildren() { - return Object.keys(this.children).length; - } - /** @docsNotRequired */ - toString() { - return serializePaths(this); - } -}; -var UrlSegment = class { - constructor(path, parameters) { - this.path = path; - this.parameters = parameters; - } - get parameterMap() { - this._parameterMap ??= convertToParamMap(this.parameters); - return this._parameterMap; - } - /** @docsNotRequired */ - toString() { - return serializePath(this); - } -}; -function equalSegments(as, bs) { - return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters)); -} -function equalPath(as, bs) { - if (as.length !== bs.length) - return false; - return as.every((a, i) => a.path === bs[i].path); -} -function mapChildrenIntoArray(segment, fn) { - let res = []; - Object.entries(segment.children).forEach(([childOutlet, child]) => { - if (childOutlet === PRIMARY_OUTLET) { - res = res.concat(fn(child, childOutlet)); - } - }); - Object.entries(segment.children).forEach(([childOutlet, child]) => { - if (childOutlet !== PRIMARY_OUTLET) { - res = res.concat(fn(child, childOutlet)); - } - }); - return res; -} -var _UrlSerializer = class _UrlSerializer { -}; -_UrlSerializer.ɵfac = function UrlSerializer_Factory(t) { - return new (t || _UrlSerializer)(); -}; -_UrlSerializer.ɵprov = ɵɵdefineInjectable({ - token: _UrlSerializer, - factory: () => (() => new DefaultUrlSerializer())(), - providedIn: "root" -}); -var UrlSerializer = _UrlSerializer; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(UrlSerializer, [{ - type: Injectable, - args: [{ - providedIn: "root", - useFactory: () => new DefaultUrlSerializer() - }] - }], null, null); -})(); -var DefaultUrlSerializer = class { - /** Parses a url into a `UrlTree` */ - parse(url) { - const p = new UrlParser(url); - return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment()); - } - /** Converts a `UrlTree` into a url */ - serialize(tree2) { - const segment = `/${serializeSegment(tree2.root, true)}`; - const query = serializeQueryParams(tree2.queryParams); - const fragment = typeof tree2.fragment === `string` ? `#${encodeUriFragment(tree2.fragment)}` : ""; - return `${segment}${query}${fragment}`; - } -}; -var DEFAULT_SERIALIZER = new DefaultUrlSerializer(); -function serializePaths(segment) { - return segment.segments.map((p) => serializePath(p)).join("/"); -} -function serializeSegment(segment, root) { - if (!segment.hasChildren()) { - return serializePaths(segment); - } - if (root) { - const primary = segment.children[PRIMARY_OUTLET] ? serializeSegment(segment.children[PRIMARY_OUTLET], false) : ""; - const children = []; - Object.entries(segment.children).forEach(([k, v]) => { - if (k !== PRIMARY_OUTLET) { - children.push(`${k}:${serializeSegment(v, false)}`); - } - }); - return children.length > 0 ? `${primary}(${children.join("//")})` : primary; - } else { - const children = mapChildrenIntoArray(segment, (v, k) => { - if (k === PRIMARY_OUTLET) { - return [serializeSegment(segment.children[PRIMARY_OUTLET], false)]; - } - return [`${k}:${serializeSegment(v, false)}`]; - }); - if (Object.keys(segment.children).length === 1 && segment.children[PRIMARY_OUTLET] != null) { - return `${serializePaths(segment)}/${children[0]}`; - } - return `${serializePaths(segment)}/(${children.join("//")})`; - } -} -function encodeUriString(s) { - return encodeURIComponent(s).replace(/%40/g, "@").replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ","); -} -function encodeUriQuery(s) { - return encodeUriString(s).replace(/%3B/gi, ";"); -} -function encodeUriFragment(s) { - return encodeURI(s); -} -function encodeUriSegment(s) { - return encodeUriString(s).replace(/\(/g, "%28").replace(/\)/g, "%29").replace(/%26/gi, "&"); -} -function decode(s) { - return decodeURIComponent(s); -} -function decodeQuery(s) { - return decode(s.replace(/\+/g, "%20")); -} -function serializePath(path) { - return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`; -} -function serializeMatrixParams(params) { - return Object.entries(params).map(([key, value]) => `;${encodeUriSegment(key)}=${encodeUriSegment(value)}`).join(""); -} -function serializeQueryParams(params) { - const strParams = Object.entries(params).map(([name, value]) => { - return Array.isArray(value) ? value.map((v) => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join("&") : `${encodeUriQuery(name)}=${encodeUriQuery(value)}`; - }).filter((s) => s); - return strParams.length ? `?${strParams.join("&")}` : ""; -} -var SEGMENT_RE = /^[^\/()?;#]+/; -function matchSegments(str) { - const match2 = str.match(SEGMENT_RE); - return match2 ? match2[0] : ""; -} -var MATRIX_PARAM_SEGMENT_RE = /^[^\/()?;=#]+/; -function matchMatrixKeySegments(str) { - const match2 = str.match(MATRIX_PARAM_SEGMENT_RE); - return match2 ? match2[0] : ""; -} -var QUERY_PARAM_RE = /^[^=?&#]+/; -function matchQueryParams(str) { - const match2 = str.match(QUERY_PARAM_RE); - return match2 ? match2[0] : ""; -} -var QUERY_PARAM_VALUE_RE = /^[^&#]+/; -function matchUrlQueryParamValue(str) { - const match2 = str.match(QUERY_PARAM_VALUE_RE); - return match2 ? match2[0] : ""; -} -var UrlParser = class { - constructor(url) { - this.url = url; - this.remaining = url; - } - parseRootSegment() { - this.consumeOptional("/"); - if (this.remaining === "" || this.peekStartsWith("?") || this.peekStartsWith("#")) { - return new UrlSegmentGroup([], {}); - } - return new UrlSegmentGroup([], this.parseChildren()); - } - parseQueryParams() { - const params = {}; - if (this.consumeOptional("?")) { - do { - this.parseQueryParam(params); - } while (this.consumeOptional("&")); - } - return params; - } - parseFragment() { - return this.consumeOptional("#") ? decodeURIComponent(this.remaining) : null; - } - parseChildren() { - if (this.remaining === "") { - return {}; - } - this.consumeOptional("/"); - const segments = []; - if (!this.peekStartsWith("(")) { - segments.push(this.parseSegment()); - } - while (this.peekStartsWith("/") && !this.peekStartsWith("//") && !this.peekStartsWith("/(")) { - this.capture("/"); - segments.push(this.parseSegment()); - } - let children = {}; - if (this.peekStartsWith("/(")) { - this.capture("/"); - children = this.parseParens(true); - } - let res = {}; - if (this.peekStartsWith("(")) { - res = this.parseParens(false); - } - if (segments.length > 0 || Object.keys(children).length > 0) { - res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children); - } - return res; - } - // parse a segment with its matrix parameters - // ie `name;k1=v1;k2` - parseSegment() { - const path = matchSegments(this.remaining); - if (path === "" && this.peekStartsWith(";")) { - throw new RuntimeError(4009, (typeof ngDevMode === "undefined" || ngDevMode) && `Empty path url segment cannot have parameters: '${this.remaining}'.`); - } - this.capture(path); - return new UrlSegment(decode(path), this.parseMatrixParams()); - } - parseMatrixParams() { - const params = {}; - while (this.consumeOptional(";")) { - this.parseParam(params); - } - return params; - } - parseParam(params) { - const key = matchMatrixKeySegments(this.remaining); - if (!key) { - return; - } - this.capture(key); - let value = ""; - if (this.consumeOptional("=")) { - const valueMatch = matchSegments(this.remaining); - if (valueMatch) { - value = valueMatch; - this.capture(value); - } - } - params[decode(key)] = decode(value); - } - // Parse a single query parameter `name[=value]` - parseQueryParam(params) { - const key = matchQueryParams(this.remaining); - if (!key) { - return; - } - this.capture(key); - let value = ""; - if (this.consumeOptional("=")) { - const valueMatch = matchUrlQueryParamValue(this.remaining); - if (valueMatch) { - value = valueMatch; - this.capture(value); - } - } - const decodedKey = decodeQuery(key); - const decodedVal = decodeQuery(value); - if (params.hasOwnProperty(decodedKey)) { - let currentVal = params[decodedKey]; - if (!Array.isArray(currentVal)) { - currentVal = [currentVal]; - params[decodedKey] = currentVal; - } - currentVal.push(decodedVal); - } else { - params[decodedKey] = decodedVal; - } - } - // parse `(a/b//outlet_name:c/d)` - parseParens(allowPrimary) { - const segments = {}; - this.capture("("); - while (!this.consumeOptional(")") && this.remaining.length > 0) { - const path = matchSegments(this.remaining); - const next = this.remaining[path.length]; - if (next !== "/" && next !== ")" && next !== ";") { - throw new RuntimeError(4010, (typeof ngDevMode === "undefined" || ngDevMode) && `Cannot parse url '${this.url}'`); - } - let outletName = void 0; - if (path.indexOf(":") > -1) { - outletName = path.slice(0, path.indexOf(":")); - this.capture(outletName); - this.capture(":"); - } else if (allowPrimary) { - outletName = PRIMARY_OUTLET; - } - const children = this.parseChildren(); - segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] : new UrlSegmentGroup([], children); - this.consumeOptional("//"); - } - return segments; - } - peekStartsWith(str) { - return this.remaining.startsWith(str); - } - // Consumes the prefix when it is present and returns whether it has been consumed - consumeOptional(str) { - if (this.peekStartsWith(str)) { - this.remaining = this.remaining.substring(str.length); - return true; - } - return false; - } - capture(str) { - if (!this.consumeOptional(str)) { - throw new RuntimeError(4011, (typeof ngDevMode === "undefined" || ngDevMode) && `Expected "${str}".`); - } - } -}; -function createRoot(rootCandidate) { - return rootCandidate.segments.length > 0 ? new UrlSegmentGroup([], { - [PRIMARY_OUTLET]: rootCandidate - }) : rootCandidate; -} -function squashSegmentGroup(segmentGroup) { - const newChildren = {}; - for (const [childOutlet, child] of Object.entries(segmentGroup.children)) { - const childCandidate = squashSegmentGroup(child); - if (childOutlet === PRIMARY_OUTLET && childCandidate.segments.length === 0 && childCandidate.hasChildren()) { - for (const [grandChildOutlet, grandChild] of Object.entries(childCandidate.children)) { - newChildren[grandChildOutlet] = grandChild; - } - } else if (childCandidate.segments.length > 0 || childCandidate.hasChildren()) { - newChildren[childOutlet] = childCandidate; - } - } - const s = new UrlSegmentGroup(segmentGroup.segments, newChildren); - return mergeTrivialChildren(s); -} -function mergeTrivialChildren(s) { - if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) { - const c = s.children[PRIMARY_OUTLET]; - return new UrlSegmentGroup(s.segments.concat(c.segments), c.children); - } - return s; -} -function isUrlTree(v) { - return v instanceof UrlTree; -} -function createUrlTreeFromSnapshot(relativeTo, commands, queryParams = null, fragment = null) { - const relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeTo); - return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, queryParams, fragment); -} -function createSegmentGroupFromRoute(route) { - let targetGroup; - function createSegmentGroupFromRouteRecursive(currentRoute) { - const childOutlets = {}; - for (const childSnapshot of currentRoute.children) { - const root = createSegmentGroupFromRouteRecursive(childSnapshot); - childOutlets[childSnapshot.outlet] = root; - } - const segmentGroup = new UrlSegmentGroup(currentRoute.url, childOutlets); - if (currentRoute === route) { - targetGroup = segmentGroup; - } - return segmentGroup; - } - const rootCandidate = createSegmentGroupFromRouteRecursive(route.root); - const rootSegmentGroup = createRoot(rootCandidate); - return targetGroup ?? rootSegmentGroup; -} -function createUrlTreeFromSegmentGroup(relativeTo, commands, queryParams, fragment) { - let root = relativeTo; - while (root.parent) { - root = root.parent; - } - if (commands.length === 0) { - return tree(root, root, root, queryParams, fragment); - } - const nav = computeNavigation(commands); - if (nav.toRoot()) { - return tree(root, root, new UrlSegmentGroup([], {}), queryParams, fragment); - } - const position = findStartingPositionForTargetGroup(nav, root, relativeTo); - const newSegmentGroup = position.processChildren ? updateSegmentGroupChildren(position.segmentGroup, position.index, nav.commands) : updateSegmentGroup(position.segmentGroup, position.index, nav.commands); - return tree(root, position.segmentGroup, newSegmentGroup, queryParams, fragment); -} -function isMatrixParams(command) { - return typeof command === "object" && command != null && !command.outlets && !command.segmentPath; -} -function isCommandWithOutlets(command) { - return typeof command === "object" && command != null && command.outlets; -} -function tree(oldRoot, oldSegmentGroup, newSegmentGroup, queryParams, fragment) { - let qp = {}; - if (queryParams) { - Object.entries(queryParams).forEach(([name, value]) => { - qp[name] = Array.isArray(value) ? value.map((v) => `${v}`) : `${value}`; - }); - } - let rootCandidate; - if (oldRoot === oldSegmentGroup) { - rootCandidate = newSegmentGroup; - } else { - rootCandidate = replaceSegment(oldRoot, oldSegmentGroup, newSegmentGroup); - } - const newRoot = createRoot(squashSegmentGroup(rootCandidate)); - return new UrlTree(newRoot, qp, fragment); -} -function replaceSegment(current, oldSegment, newSegment) { - const children = {}; - Object.entries(current.children).forEach(([outletName, c]) => { - if (c === oldSegment) { - children[outletName] = newSegment; - } else { - children[outletName] = replaceSegment(c, oldSegment, newSegment); - } - }); - return new UrlSegmentGroup(current.segments, children); -} -var Navigation = class { - constructor(isAbsolute, numberOfDoubleDots, commands) { - this.isAbsolute = isAbsolute; - this.numberOfDoubleDots = numberOfDoubleDots; - this.commands = commands; - if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) { - throw new RuntimeError(4003, (typeof ngDevMode === "undefined" || ngDevMode) && "Root segment cannot have matrix parameters"); - } - const cmdWithOutlet = commands.find(isCommandWithOutlets); - if (cmdWithOutlet && cmdWithOutlet !== last2(commands)) { - throw new RuntimeError(4004, (typeof ngDevMode === "undefined" || ngDevMode) && "{outlets:{}} has to be the last command"); - } - } - toRoot() { - return this.isAbsolute && this.commands.length === 1 && this.commands[0] == "/"; - } -}; -function computeNavigation(commands) { - if (typeof commands[0] === "string" && commands.length === 1 && commands[0] === "/") { - return new Navigation(true, 0, commands); - } - let numberOfDoubleDots = 0; - let isAbsolute = false; - const res = commands.reduce((res2, cmd, cmdIdx) => { - if (typeof cmd === "object" && cmd != null) { - if (cmd.outlets) { - const outlets = {}; - Object.entries(cmd.outlets).forEach(([name, commands2]) => { - outlets[name] = typeof commands2 === "string" ? commands2.split("/") : commands2; - }); - return [...res2, { - outlets - }]; - } - if (cmd.segmentPath) { - return [...res2, cmd.segmentPath]; - } - } - if (!(typeof cmd === "string")) { - return [...res2, cmd]; - } - if (cmdIdx === 0) { - cmd.split("/").forEach((urlPart, partIndex) => { - if (partIndex == 0 && urlPart === ".") { - } else if (partIndex == 0 && urlPart === "") { - isAbsolute = true; - } else if (urlPart === "..") { - numberOfDoubleDots++; - } else if (urlPart != "") { - res2.push(urlPart); - } - }); - return res2; - } - return [...res2, cmd]; - }, []); - return new Navigation(isAbsolute, numberOfDoubleDots, res); -} -var Position = class { - constructor(segmentGroup, processChildren, index) { - this.segmentGroup = segmentGroup; - this.processChildren = processChildren; - this.index = index; - } -}; -function findStartingPositionForTargetGroup(nav, root, target) { - if (nav.isAbsolute) { - return new Position(root, true, 0); - } - if (!target) { - return new Position(root, false, NaN); - } - if (target.parent === null) { - return new Position(target, true, 0); - } - const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1; - const index = target.segments.length - 1 + modifier; - return createPositionApplyingDoubleDots(target, index, nav.numberOfDoubleDots); -} -function createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) { - let g = group; - let ci = index; - let dd = numberOfDoubleDots; - while (dd > ci) { - dd -= ci; - g = g.parent; - if (!g) { - throw new RuntimeError(4005, (typeof ngDevMode === "undefined" || ngDevMode) && "Invalid number of '../'"); - } - ci = g.segments.length; - } - return new Position(g, false, ci - dd); -} -function getOutlets(commands) { - if (isCommandWithOutlets(commands[0])) { - return commands[0].outlets; - } - return { - [PRIMARY_OUTLET]: commands - }; -} -function updateSegmentGroup(segmentGroup, startIndex, commands) { - segmentGroup ??= new UrlSegmentGroup([], {}); - if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) { - return updateSegmentGroupChildren(segmentGroup, startIndex, commands); - } - const m = prefixedWith(segmentGroup, startIndex, commands); - const slicedCommands = commands.slice(m.commandIndex); - if (m.match && m.pathIndex < segmentGroup.segments.length) { - const g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {}); - g.children[PRIMARY_OUTLET] = new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children); - return updateSegmentGroupChildren(g, 0, slicedCommands); - } else if (m.match && slicedCommands.length === 0) { - return new UrlSegmentGroup(segmentGroup.segments, {}); - } else if (m.match && !segmentGroup.hasChildren()) { - return createNewSegmentGroup(segmentGroup, startIndex, commands); - } else if (m.match) { - return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands); - } else { - return createNewSegmentGroup(segmentGroup, startIndex, commands); - } -} -function updateSegmentGroupChildren(segmentGroup, startIndex, commands) { - if (commands.length === 0) { - return new UrlSegmentGroup(segmentGroup.segments, {}); - } else { - const outlets = getOutlets(commands); - const children = {}; - if (Object.keys(outlets).some((o) => o !== PRIMARY_OUTLET) && segmentGroup.children[PRIMARY_OUTLET] && segmentGroup.numberOfChildren === 1 && segmentGroup.children[PRIMARY_OUTLET].segments.length === 0) { - const childrenOfEmptyChild = updateSegmentGroupChildren(segmentGroup.children[PRIMARY_OUTLET], startIndex, commands); - return new UrlSegmentGroup(segmentGroup.segments, childrenOfEmptyChild.children); - } - Object.entries(outlets).forEach(([outlet, commands2]) => { - if (typeof commands2 === "string") { - commands2 = [commands2]; - } - if (commands2 !== null) { - children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands2); - } - }); - Object.entries(segmentGroup.children).forEach(([childOutlet, child]) => { - if (outlets[childOutlet] === void 0) { - children[childOutlet] = child; - } - }); - return new UrlSegmentGroup(segmentGroup.segments, children); - } -} -function prefixedWith(segmentGroup, startIndex, commands) { - let currentCommandIndex = 0; - let currentPathIndex = startIndex; - const noMatch2 = { - match: false, - pathIndex: 0, - commandIndex: 0 - }; - while (currentPathIndex < segmentGroup.segments.length) { - if (currentCommandIndex >= commands.length) - return noMatch2; - const path = segmentGroup.segments[currentPathIndex]; - const command = commands[currentCommandIndex]; - if (isCommandWithOutlets(command)) { - break; - } - const curr = `${command}`; - const next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null; - if (currentPathIndex > 0 && curr === void 0) - break; - if (curr && next && typeof next === "object" && next.outlets === void 0) { - if (!compare(curr, next, path)) - return noMatch2; - currentCommandIndex += 2; - } else { - if (!compare(curr, {}, path)) - return noMatch2; - currentCommandIndex++; - } - currentPathIndex++; - } - return { - match: true, - pathIndex: currentPathIndex, - commandIndex: currentCommandIndex - }; -} -function createNewSegmentGroup(segmentGroup, startIndex, commands) { - const paths = segmentGroup.segments.slice(0, startIndex); - let i = 0; - while (i < commands.length) { - const command = commands[i]; - if (isCommandWithOutlets(command)) { - const children = createNewSegmentChildren(command.outlets); - return new UrlSegmentGroup(paths, children); - } - if (i === 0 && isMatrixParams(commands[0])) { - const p = segmentGroup.segments[startIndex]; - paths.push(new UrlSegment(p.path, stringify(commands[0]))); - i++; - continue; - } - const curr = isCommandWithOutlets(command) ? command.outlets[PRIMARY_OUTLET] : `${command}`; - const next = i < commands.length - 1 ? commands[i + 1] : null; - if (curr && next && isMatrixParams(next)) { - paths.push(new UrlSegment(curr, stringify(next))); - i += 2; - } else { - paths.push(new UrlSegment(curr, {})); - i++; - } - } - return new UrlSegmentGroup(paths, {}); -} -function createNewSegmentChildren(outlets) { - const children = {}; - Object.entries(outlets).forEach(([outlet, commands]) => { - if (typeof commands === "string") { - commands = [commands]; - } - if (commands !== null) { - children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands); - } - }); - return children; -} -function stringify(params) { - const res = {}; - Object.entries(params).forEach(([k, v]) => res[k] = `${v}`); - return res; -} -function compare(path, params, segment) { - return path == segment.path && shallowEqual(params, segment.parameters); -} -var IMPERATIVE_NAVIGATION = "imperative"; -var EventType; -(function(EventType2) { - EventType2[EventType2["NavigationStart"] = 0] = "NavigationStart"; - EventType2[EventType2["NavigationEnd"] = 1] = "NavigationEnd"; - EventType2[EventType2["NavigationCancel"] = 2] = "NavigationCancel"; - EventType2[EventType2["NavigationError"] = 3] = "NavigationError"; - EventType2[EventType2["RoutesRecognized"] = 4] = "RoutesRecognized"; - EventType2[EventType2["ResolveStart"] = 5] = "ResolveStart"; - EventType2[EventType2["ResolveEnd"] = 6] = "ResolveEnd"; - EventType2[EventType2["GuardsCheckStart"] = 7] = "GuardsCheckStart"; - EventType2[EventType2["GuardsCheckEnd"] = 8] = "GuardsCheckEnd"; - EventType2[EventType2["RouteConfigLoadStart"] = 9] = "RouteConfigLoadStart"; - EventType2[EventType2["RouteConfigLoadEnd"] = 10] = "RouteConfigLoadEnd"; - EventType2[EventType2["ChildActivationStart"] = 11] = "ChildActivationStart"; - EventType2[EventType2["ChildActivationEnd"] = 12] = "ChildActivationEnd"; - EventType2[EventType2["ActivationStart"] = 13] = "ActivationStart"; - EventType2[EventType2["ActivationEnd"] = 14] = "ActivationEnd"; - EventType2[EventType2["Scroll"] = 15] = "Scroll"; - EventType2[EventType2["NavigationSkipped"] = 16] = "NavigationSkipped"; -})(EventType || (EventType = {})); -var RouterEvent = class { - constructor(id, url) { - this.id = id; - this.url = url; - } -}; -var NavigationStart = class extends RouterEvent { - constructor(id, url, navigationTrigger = "imperative", restoredState = null) { - super(id, url); - this.type = EventType.NavigationStart; - this.navigationTrigger = navigationTrigger; - this.restoredState = restoredState; - } - /** @docsNotRequired */ - toString() { - return `NavigationStart(id: ${this.id}, url: '${this.url}')`; - } -}; -var NavigationEnd = class extends RouterEvent { - constructor(id, url, urlAfterRedirects) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.type = EventType.NavigationEnd; - } - /** @docsNotRequired */ - toString() { - return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`; - } -}; -var NavigationCancellationCode; -(function(NavigationCancellationCode2) { - NavigationCancellationCode2[NavigationCancellationCode2["Redirect"] = 0] = "Redirect"; - NavigationCancellationCode2[NavigationCancellationCode2["SupersededByNewNavigation"] = 1] = "SupersededByNewNavigation"; - NavigationCancellationCode2[NavigationCancellationCode2["NoDataFromResolver"] = 2] = "NoDataFromResolver"; - NavigationCancellationCode2[NavigationCancellationCode2["GuardRejected"] = 3] = "GuardRejected"; -})(NavigationCancellationCode || (NavigationCancellationCode = {})); -var NavigationSkippedCode; -(function(NavigationSkippedCode2) { - NavigationSkippedCode2[NavigationSkippedCode2["IgnoredSameUrlNavigation"] = 0] = "IgnoredSameUrlNavigation"; - NavigationSkippedCode2[NavigationSkippedCode2["IgnoredByUrlHandlingStrategy"] = 1] = "IgnoredByUrlHandlingStrategy"; -})(NavigationSkippedCode || (NavigationSkippedCode = {})); -var NavigationCancel = class extends RouterEvent { - constructor(id, url, reason, code) { - super(id, url); - this.reason = reason; - this.code = code; - this.type = EventType.NavigationCancel; - } - /** @docsNotRequired */ - toString() { - return `NavigationCancel(id: ${this.id}, url: '${this.url}')`; - } -}; -var NavigationSkipped = class extends RouterEvent { - constructor(id, url, reason, code) { - super(id, url); - this.reason = reason; - this.code = code; - this.type = EventType.NavigationSkipped; - } -}; -var NavigationError = class extends RouterEvent { - constructor(id, url, error, target) { - super(id, url); - this.error = error; - this.target = target; - this.type = EventType.NavigationError; - } - /** @docsNotRequired */ - toString() { - return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`; - } -}; -var RoutesRecognized = class extends RouterEvent { - constructor(id, url, urlAfterRedirects, state) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.state = state; - this.type = EventType.RoutesRecognized; - } - /** @docsNotRequired */ - toString() { - return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; - } -}; -var GuardsCheckStart = class extends RouterEvent { - constructor(id, url, urlAfterRedirects, state) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.state = state; - this.type = EventType.GuardsCheckStart; - } - toString() { - return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; - } -}; -var GuardsCheckEnd = class extends RouterEvent { - constructor(id, url, urlAfterRedirects, state, shouldActivate) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.state = state; - this.shouldActivate = shouldActivate; - this.type = EventType.GuardsCheckEnd; - } - toString() { - return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`; - } -}; -var ResolveStart = class extends RouterEvent { - constructor(id, url, urlAfterRedirects, state) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.state = state; - this.type = EventType.ResolveStart; - } - toString() { - return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; - } -}; -var ResolveEnd = class extends RouterEvent { - constructor(id, url, urlAfterRedirects, state) { - super(id, url); - this.urlAfterRedirects = urlAfterRedirects; - this.state = state; - this.type = EventType.ResolveEnd; - } - toString() { - return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`; - } -}; -var RouteConfigLoadStart = class { - constructor(route) { - this.route = route; - this.type = EventType.RouteConfigLoadStart; - } - toString() { - return `RouteConfigLoadStart(path: ${this.route.path})`; - } -}; -var RouteConfigLoadEnd = class { - constructor(route) { - this.route = route; - this.type = EventType.RouteConfigLoadEnd; - } - toString() { - return `RouteConfigLoadEnd(path: ${this.route.path})`; - } -}; -var ChildActivationStart = class { - constructor(snapshot) { - this.snapshot = snapshot; - this.type = EventType.ChildActivationStart; - } - toString() { - const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; - return `ChildActivationStart(path: '${path}')`; - } -}; -var ChildActivationEnd = class { - constructor(snapshot) { - this.snapshot = snapshot; - this.type = EventType.ChildActivationEnd; - } - toString() { - const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; - return `ChildActivationEnd(path: '${path}')`; - } -}; -var ActivationStart = class { - constructor(snapshot) { - this.snapshot = snapshot; - this.type = EventType.ActivationStart; - } - toString() { - const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; - return `ActivationStart(path: '${path}')`; - } -}; -var ActivationEnd = class { - constructor(snapshot) { - this.snapshot = snapshot; - this.type = EventType.ActivationEnd; - } - toString() { - const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || ""; - return `ActivationEnd(path: '${path}')`; - } -}; -var Scroll = class { - constructor(routerEvent, position, anchor) { - this.routerEvent = routerEvent; - this.position = position; - this.anchor = anchor; - this.type = EventType.Scroll; - } - toString() { - const pos = this.position ? `${this.position[0]}, ${this.position[1]}` : null; - return `Scroll(anchor: '${this.anchor}', position: '${pos}')`; - } -}; -var BeforeActivateRoutes = class { -}; -var RedirectRequest = class { - constructor(url) { - this.url = url; - } -}; -function stringifyEvent(routerEvent) { - switch (routerEvent.type) { - case EventType.ActivationEnd: - return `ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; - case EventType.ActivationStart: - return `ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; - case EventType.ChildActivationEnd: - return `ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; - case EventType.ChildActivationStart: - return `ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ""}')`; - case EventType.GuardsCheckEnd: - return `GuardsCheckEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`; - case EventType.GuardsCheckStart: - return `GuardsCheckStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; - case EventType.NavigationCancel: - return `NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`; - case EventType.NavigationSkipped: - return `NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`; - case EventType.NavigationEnd: - return `NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}')`; - case EventType.NavigationError: - return `NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${routerEvent.error})`; - case EventType.NavigationStart: - return `NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`; - case EventType.ResolveEnd: - return `ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; - case EventType.ResolveStart: - return `ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; - case EventType.RouteConfigLoadEnd: - return `RouteConfigLoadEnd(path: ${routerEvent.route.path})`; - case EventType.RouteConfigLoadStart: - return `RouteConfigLoadStart(path: ${routerEvent.route.path})`; - case EventType.RoutesRecognized: - return `RoutesRecognized(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`; - case EventType.Scroll: - const pos = routerEvent.position ? `${routerEvent.position[0]}, ${routerEvent.position[1]}` : null; - return `Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`; - } -} -var OutletContext = class { - constructor() { - this.outlet = null; - this.route = null; - this.injector = null; - this.children = new ChildrenOutletContexts(); - this.attachRef = null; - } -}; -var _ChildrenOutletContexts = class _ChildrenOutletContexts { - constructor() { - this.contexts = /* @__PURE__ */ new Map(); - } - /** Called when a `RouterOutlet` directive is instantiated */ - onChildOutletCreated(childName, outlet) { - const context = this.getOrCreateContext(childName); - context.outlet = outlet; - this.contexts.set(childName, context); - } - /** - * Called when a `RouterOutlet` directive is destroyed. - * We need to keep the context as the outlet could be destroyed inside a NgIf and might be - * re-created later. - */ - onChildOutletDestroyed(childName) { - const context = this.getContext(childName); - if (context) { - context.outlet = null; - context.attachRef = null; - } - } - /** - * Called when the corresponding route is deactivated during navigation. - * Because the component get destroyed, all children outlet are destroyed. - */ - onOutletDeactivated() { - const contexts = this.contexts; - this.contexts = /* @__PURE__ */ new Map(); - return contexts; - } - onOutletReAttached(contexts) { - this.contexts = contexts; - } - getOrCreateContext(childName) { - let context = this.getContext(childName); - if (!context) { - context = new OutletContext(); - this.contexts.set(childName, context); - } - return context; - } - getContext(childName) { - return this.contexts.get(childName) || null; - } -}; -_ChildrenOutletContexts.ɵfac = function ChildrenOutletContexts_Factory(t) { - return new (t || _ChildrenOutletContexts)(); -}; -_ChildrenOutletContexts.ɵprov = ɵɵdefineInjectable({ - token: _ChildrenOutletContexts, - factory: _ChildrenOutletContexts.ɵfac, - providedIn: "root" -}); -var ChildrenOutletContexts = _ChildrenOutletContexts; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ChildrenOutletContexts, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var Tree = class { - constructor(root) { - this._root = root; - } - get root() { - return this._root.value; - } - /** - * @internal - */ - parent(t) { - const p = this.pathFromRoot(t); - return p.length > 1 ? p[p.length - 2] : null; - } - /** - * @internal - */ - children(t) { - const n = findNode(t, this._root); - return n ? n.children.map((t2) => t2.value) : []; - } - /** - * @internal - */ - firstChild(t) { - const n = findNode(t, this._root); - return n && n.children.length > 0 ? n.children[0].value : null; - } - /** - * @internal - */ - siblings(t) { - const p = findPath(t, this._root); - if (p.length < 2) - return []; - const c = p[p.length - 2].children.map((c2) => c2.value); - return c.filter((cc) => cc !== t); - } - /** - * @internal - */ - pathFromRoot(t) { - return findPath(t, this._root).map((s) => s.value); - } -}; -function findNode(value, node) { - if (value === node.value) - return node; - for (const child of node.children) { - const node2 = findNode(value, child); - if (node2) - return node2; - } - return null; -} -function findPath(value, node) { - if (value === node.value) - return [node]; - for (const child of node.children) { - const path = findPath(value, child); - if (path.length) { - path.unshift(node); - return path; - } - } - return []; -} -var TreeNode = class { - constructor(value, children) { - this.value = value; - this.children = children; - } - toString() { - return `TreeNode(${this.value})`; - } -}; -function nodeChildrenAsMap(node) { - const map2 = {}; - if (node) { - node.children.forEach((child) => map2[child.value.outlet] = child); - } - return map2; -} -var RouterState = class extends Tree { - /** @internal */ - constructor(root, snapshot) { - super(root); - this.snapshot = snapshot; - setRouterState(this, root); - } - toString() { - return this.snapshot.toString(); - } -}; -function createEmptyState(rootComponent) { - const snapshot = createEmptyStateSnapshot(rootComponent); - const emptyUrl = new BehaviorSubject([new UrlSegment("", {})]); - const emptyParams = new BehaviorSubject({}); - const emptyData = new BehaviorSubject({}); - const emptyQueryParams = new BehaviorSubject({}); - const fragment = new BehaviorSubject(""); - const activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root); - activated.snapshot = snapshot.root; - return new RouterState(new TreeNode(activated, []), snapshot); -} -function createEmptyStateSnapshot(rootComponent) { - const emptyParams = {}; - const emptyData = {}; - const emptyQueryParams = {}; - const fragment = ""; - const activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, {}); - return new RouterStateSnapshot("", new TreeNode(activated, [])); -} -var ActivatedRoute = class { - /** @internal */ - constructor(urlSubject, paramsSubject, queryParamsSubject, fragmentSubject, dataSubject, outlet, component, futureSnapshot) { - this.urlSubject = urlSubject; - this.paramsSubject = paramsSubject; - this.queryParamsSubject = queryParamsSubject; - this.fragmentSubject = fragmentSubject; - this.dataSubject = dataSubject; - this.outlet = outlet; - this.component = component; - this._futureSnapshot = futureSnapshot; - this.title = this.dataSubject?.pipe(map((d) => d[RouteTitleKey])) ?? of(void 0); - this.url = urlSubject; - this.params = paramsSubject; - this.queryParams = queryParamsSubject; - this.fragment = fragmentSubject; - this.data = dataSubject; - } - /** The configuration used to match this route. */ - get routeConfig() { - return this._futureSnapshot.routeConfig; - } - /** The root of the router state. */ - get root() { - return this._routerState.root; - } - /** The parent of this route in the router state tree. */ - get parent() { - return this._routerState.parent(this); - } - /** The first child of this route in the router state tree. */ - get firstChild() { - return this._routerState.firstChild(this); - } - /** The children of this route in the router state tree. */ - get children() { - return this._routerState.children(this); - } - /** The path from the root of the router state tree to this route. */ - get pathFromRoot() { - return this._routerState.pathFromRoot(this); - } - /** - * An Observable that contains a map of the required and optional parameters - * specific to the route. - * The map supports retrieving single and multiple values from the same parameter. - */ - get paramMap() { - this._paramMap ??= this.params.pipe(map((p) => convertToParamMap(p))); - return this._paramMap; - } - /** - * An Observable that contains a map of the query parameters available to all routes. - * The map supports retrieving single and multiple values from the query parameter. - */ - get queryParamMap() { - this._queryParamMap ??= this.queryParams.pipe(map((p) => convertToParamMap(p))); - return this._queryParamMap; - } - toString() { - return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`; - } -}; -function getInherited(route, parent, paramsInheritanceStrategy = "emptyOnly") { - let inherited; - const { - routeConfig - } = route; - if (parent !== null && (paramsInheritanceStrategy === "always" || // inherit parent data if route is empty path - routeConfig?.path === "" || // inherit parent data if parent was componentless - !parent.component && !parent.routeConfig?.loadComponent)) { - inherited = { - params: __spreadValues(__spreadValues({}, parent.params), route.params), - data: __spreadValues(__spreadValues({}, parent.data), route.data), - resolve: __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, route.data), parent.data), routeConfig?.data), route._resolvedData) - }; - } else { - inherited = { - params: __spreadValues({}, route.params), - data: __spreadValues({}, route.data), - resolve: __spreadValues(__spreadValues({}, route.data), route._resolvedData ?? {}) - }; - } - if (routeConfig && hasStaticTitle(routeConfig)) { - inherited.resolve[RouteTitleKey] = routeConfig.title; - } - return inherited; -} -var ActivatedRouteSnapshot = class { - /** The resolved route title */ - get title() { - return this.data?.[RouteTitleKey]; - } - /** @internal */ - constructor(url, params, queryParams, fragment, data, outlet, component, routeConfig, resolve) { - this.url = url; - this.params = params; - this.queryParams = queryParams; - this.fragment = fragment; - this.data = data; - this.outlet = outlet; - this.component = component; - this.routeConfig = routeConfig; - this._resolve = resolve; - } - /** The root of the router state */ - get root() { - return this._routerState.root; - } - /** The parent of this route in the router state tree */ - get parent() { - return this._routerState.parent(this); - } - /** The first child of this route in the router state tree */ - get firstChild() { - return this._routerState.firstChild(this); - } - /** The children of this route in the router state tree */ - get children() { - return this._routerState.children(this); - } - /** The path from the root of the router state tree to this route */ - get pathFromRoot() { - return this._routerState.pathFromRoot(this); - } - get paramMap() { - this._paramMap ??= convertToParamMap(this.params); - return this._paramMap; - } - get queryParamMap() { - this._queryParamMap ??= convertToParamMap(this.queryParams); - return this._queryParamMap; - } - toString() { - const url = this.url.map((segment) => segment.toString()).join("/"); - const matched = this.routeConfig ? this.routeConfig.path : ""; - return `Route(url:'${url}', path:'${matched}')`; - } -}; -var RouterStateSnapshot = class extends Tree { - /** @internal */ - constructor(url, root) { - super(root); - this.url = url; - setRouterState(this, root); - } - toString() { - return serializeNode(this._root); - } -}; -function setRouterState(state, node) { - node.value._routerState = state; - node.children.forEach((c) => setRouterState(state, c)); -} -function serializeNode(node) { - const c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(", ")} } ` : ""; - return `${node.value}${c}`; -} -function advanceActivatedRoute(route) { - if (route.snapshot) { - const currentSnapshot = route.snapshot; - const nextSnapshot = route._futureSnapshot; - route.snapshot = nextSnapshot; - if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) { - route.queryParamsSubject.next(nextSnapshot.queryParams); - } - if (currentSnapshot.fragment !== nextSnapshot.fragment) { - route.fragmentSubject.next(nextSnapshot.fragment); - } - if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) { - route.paramsSubject.next(nextSnapshot.params); - } - if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) { - route.urlSubject.next(nextSnapshot.url); - } - if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) { - route.dataSubject.next(nextSnapshot.data); - } - } else { - route.snapshot = route._futureSnapshot; - route.dataSubject.next(route._futureSnapshot.data); - } -} -function equalParamsAndUrlSegments(a, b) { - const equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url); - const parentsMismatch = !a.parent !== !b.parent; - return equalUrlParams && !parentsMismatch && (!a.parent || equalParamsAndUrlSegments(a.parent, b.parent)); -} -function hasStaticTitle(config) { - return typeof config.title === "string" || config.title === null; -} -var _RouterOutlet = class _RouterOutlet { - constructor() { - this.activated = null; - this._activatedRoute = null; - this.name = PRIMARY_OUTLET; - this.activateEvents = new EventEmitter(); - this.deactivateEvents = new EventEmitter(); - this.attachEvents = new EventEmitter(); - this.detachEvents = new EventEmitter(); - this.parentContexts = inject(ChildrenOutletContexts); - this.location = inject(ViewContainerRef); - this.changeDetector = inject(ChangeDetectorRef); - this.environmentInjector = inject(EnvironmentInjector); - this.inputBinder = inject(INPUT_BINDER, { - optional: true - }); - this.supportsBindingToComponentInputs = true; - } - /** @internal */ - get activatedComponentRef() { - return this.activated; - } - /** @nodoc */ - ngOnChanges(changes) { - if (changes["name"]) { - const { - firstChange, - previousValue - } = changes["name"]; - if (firstChange) { - return; - } - if (this.isTrackedInParentContexts(previousValue)) { - this.deactivate(); - this.parentContexts.onChildOutletDestroyed(previousValue); - } - this.initializeOutletWithName(); - } - } - /** @nodoc */ - ngOnDestroy() { - if (this.isTrackedInParentContexts(this.name)) { - this.parentContexts.onChildOutletDestroyed(this.name); - } - this.inputBinder?.unsubscribeFromRouteData(this); - } - isTrackedInParentContexts(outletName) { - return this.parentContexts.getContext(outletName)?.outlet === this; - } - /** @nodoc */ - ngOnInit() { - this.initializeOutletWithName(); - } - initializeOutletWithName() { - this.parentContexts.onChildOutletCreated(this.name, this); - if (this.activated) { - return; - } - const context = this.parentContexts.getContext(this.name); - if (context?.route) { - if (context.attachRef) { - this.attach(context.attachRef, context.route); - } else { - this.activateWith(context.route, context.injector); - } - } - } - get isActivated() { - return !!this.activated; - } - /** - * @returns The currently activated component instance. - * @throws An error if the outlet is not activated. - */ - get component() { - if (!this.activated) - throw new RuntimeError(4012, (typeof ngDevMode === "undefined" || ngDevMode) && "Outlet is not activated"); - return this.activated.instance; - } - get activatedRoute() { - if (!this.activated) - throw new RuntimeError(4012, (typeof ngDevMode === "undefined" || ngDevMode) && "Outlet is not activated"); - return this._activatedRoute; - } - get activatedRouteData() { - if (this._activatedRoute) { - return this._activatedRoute.snapshot.data; - } - return {}; - } - /** - * Called when the `RouteReuseStrategy` instructs to detach the subtree - */ - detach() { - if (!this.activated) - throw new RuntimeError(4012, (typeof ngDevMode === "undefined" || ngDevMode) && "Outlet is not activated"); - this.location.detach(); - const cmp = this.activated; - this.activated = null; - this._activatedRoute = null; - this.detachEvents.emit(cmp.instance); - return cmp; - } - /** - * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree - */ - attach(ref, activatedRoute) { - this.activated = ref; - this._activatedRoute = activatedRoute; - this.location.insert(ref.hostView); - this.inputBinder?.bindActivatedRouteToOutletComponent(this); - this.attachEvents.emit(ref.instance); - } - deactivate() { - if (this.activated) { - const c = this.component; - this.activated.destroy(); - this.activated = null; - this._activatedRoute = null; - this.deactivateEvents.emit(c); - } - } - activateWith(activatedRoute, environmentInjector) { - if (this.isActivated) { - throw new RuntimeError(4013, (typeof ngDevMode === "undefined" || ngDevMode) && "Cannot activate an already activated outlet"); - } - this._activatedRoute = activatedRoute; - const location = this.location; - const snapshot = activatedRoute.snapshot; - const component = snapshot.component; - const childContexts = this.parentContexts.getOrCreateContext(this.name).children; - const injector = new OutletInjector(activatedRoute, childContexts, location.injector); - this.activated = location.createComponent(component, { - index: location.length, - injector, - environmentInjector: environmentInjector ?? this.environmentInjector - }); - this.changeDetector.markForCheck(); - this.inputBinder?.bindActivatedRouteToOutletComponent(this); - this.activateEvents.emit(this.activated.instance); - } -}; -_RouterOutlet.ɵfac = function RouterOutlet_Factory(t) { - return new (t || _RouterOutlet)(); -}; -_RouterOutlet.ɵdir = ɵɵdefineDirective({ - type: _RouterOutlet, - selectors: [["router-outlet"]], - inputs: { - name: "name" - }, - outputs: { - activateEvents: "activate", - deactivateEvents: "deactivate", - attachEvents: "attach", - detachEvents: "detach" - }, - exportAs: ["outlet"], - standalone: true, - features: [ɵɵNgOnChangesFeature] -}); -var RouterOutlet = _RouterOutlet; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterOutlet, [{ - type: Directive, - args: [{ - selector: "router-outlet", - exportAs: "outlet", - standalone: true - }] - }], null, { - name: [{ - type: Input - }], - activateEvents: [{ - type: Output, - args: ["activate"] - }], - deactivateEvents: [{ - type: Output, - args: ["deactivate"] - }], - attachEvents: [{ - type: Output, - args: ["attach"] - }], - detachEvents: [{ - type: Output, - args: ["detach"] - }] - }); -})(); -var OutletInjector = class { - constructor(route, childContexts, parent) { - this.route = route; - this.childContexts = childContexts; - this.parent = parent; - } - get(token, notFoundValue) { - if (token === ActivatedRoute) { - return this.route; - } - if (token === ChildrenOutletContexts) { - return this.childContexts; - } - return this.parent.get(token, notFoundValue); - } -}; -var INPUT_BINDER = new InjectionToken(""); -var _RoutedComponentInputBinder = class _RoutedComponentInputBinder { - constructor() { - this.outletDataSubscriptions = /* @__PURE__ */ new Map(); - } - bindActivatedRouteToOutletComponent(outlet) { - this.unsubscribeFromRouteData(outlet); - this.subscribeToRouteData(outlet); - } - unsubscribeFromRouteData(outlet) { - this.outletDataSubscriptions.get(outlet)?.unsubscribe(); - this.outletDataSubscriptions.delete(outlet); - } - subscribeToRouteData(outlet) { - const { - activatedRoute - } = outlet; - const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data]).pipe(switchMap(([queryParams, params, data], index) => { - data = __spreadValues(__spreadValues(__spreadValues({}, queryParams), params), data); - if (index === 0) { - return of(data); - } - return Promise.resolve(data); - })).subscribe((data) => { - if (!outlet.isActivated || !outlet.activatedComponentRef || outlet.activatedRoute !== activatedRoute || activatedRoute.component === null) { - this.unsubscribeFromRouteData(outlet); - return; - } - const mirror = reflectComponentType(activatedRoute.component); - if (!mirror) { - this.unsubscribeFromRouteData(outlet); - return; - } - for (const { - templateName - } of mirror.inputs) { - outlet.activatedComponentRef.setInput(templateName, data[templateName]); - } - }); - this.outletDataSubscriptions.set(outlet, dataSubscription); - } -}; -_RoutedComponentInputBinder.ɵfac = function RoutedComponentInputBinder_Factory(t) { - return new (t || _RoutedComponentInputBinder)(); -}; -_RoutedComponentInputBinder.ɵprov = ɵɵdefineInjectable({ - token: _RoutedComponentInputBinder, - factory: _RoutedComponentInputBinder.ɵfac -}); -var RoutedComponentInputBinder = _RoutedComponentInputBinder; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RoutedComponentInputBinder, [{ - type: Injectable - }], null, null); -})(); -function createRouterState(routeReuseStrategy, curr, prevState) { - const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : void 0); - return new RouterState(root, curr); -} -function createNode(routeReuseStrategy, curr, prevState) { - if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) { - const value = prevState.value; - value._futureSnapshot = curr.value; - const children = createOrReuseChildren(routeReuseStrategy, curr, prevState); - return new TreeNode(value, children); - } else { - if (routeReuseStrategy.shouldAttach(curr.value)) { - const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value); - if (detachedRouteHandle !== null) { - const tree2 = detachedRouteHandle.route; - tree2.value._futureSnapshot = curr.value; - tree2.children = curr.children.map((c) => createNode(routeReuseStrategy, c)); - return tree2; - } - } - const value = createActivatedRoute(curr.value); - const children = curr.children.map((c) => createNode(routeReuseStrategy, c)); - return new TreeNode(value, children); - } -} -function createOrReuseChildren(routeReuseStrategy, curr, prevState) { - return curr.children.map((child) => { - for (const p of prevState.children) { - if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) { - return createNode(routeReuseStrategy, child, p); - } - } - return createNode(routeReuseStrategy, child); - }); -} -function createActivatedRoute(c) { - return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c); -} -var NAVIGATION_CANCELING_ERROR = "ngNavigationCancelingError"; -function redirectingNavigationError(urlSerializer, redirect) { - const { - redirectTo, - navigationBehaviorOptions - } = isUrlTree(redirect) ? { - redirectTo: redirect, - navigationBehaviorOptions: void 0 - } : redirect; - const error = navigationCancelingError(ngDevMode && `Redirecting to "${urlSerializer.serialize(redirectTo)}"`, NavigationCancellationCode.Redirect); - error.url = redirectTo; - error.navigationBehaviorOptions = navigationBehaviorOptions; - return error; -} -function navigationCancelingError(message, code) { - const error = new Error(`NavigationCancelingError: ${message || ""}`); - error[NAVIGATION_CANCELING_ERROR] = true; - error.cancellationCode = code; - return error; -} -function isRedirectingNavigationCancelingError(error) { - return isNavigationCancelingError(error) && isUrlTree(error.url); -} -function isNavigationCancelingError(error) { - return !!error && error[NAVIGATION_CANCELING_ERROR]; -} -var _ɵEmptyOutletComponent = class _ɵEmptyOutletComponent { -}; -_ɵEmptyOutletComponent.ɵfac = function ɵEmptyOutletComponent_Factory(t) { - return new (t || _ɵEmptyOutletComponent)(); -}; -_ɵEmptyOutletComponent.ɵcmp = ɵɵdefineComponent({ - type: _ɵEmptyOutletComponent, - selectors: [["ng-component"]], - standalone: true, - features: [ɵɵStandaloneFeature], - decls: 1, - vars: 0, - template: function ɵEmptyOutletComponent_Template(rf, ctx) { - if (rf & 1) { - ɵɵelement(0, "router-outlet"); - } - }, - dependencies: [RouterOutlet], - encapsulation: 2 -}); -var ɵEmptyOutletComponent = _ɵEmptyOutletComponent; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ɵEmptyOutletComponent, [{ - type: Component, - args: [{ - template: ``, - imports: [RouterOutlet], - standalone: true - }] - }], null, null); -})(); -function getOrCreateRouteInjectorIfNeeded(route, currentInjector) { - if (route.providers && !route._injector) { - route._injector = createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`); - } - return route._injector ?? currentInjector; -} -function validateConfig(config, parentPath = "", requireStandaloneComponents = false) { - for (let i = 0; i < config.length; i++) { - const route = config[i]; - const fullPath = getFullPath(parentPath, route); - validateNode(route, fullPath, requireStandaloneComponents); - } -} -function assertStandalone(fullPath, component) { - if (component && isNgModule(component)) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}'. You are using 'loadComponent' with a module, but it must be used with standalone components. Use 'loadChildren' instead.`); - } else if (component && !isStandalone(component)) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}'. The component must be standalone.`); - } -} -function validateNode(route, fullPath, requireStandaloneComponents) { - if (typeof ngDevMode === "undefined" || ngDevMode) { - if (!route) { - throw new RuntimeError(4014, ` - Invalid configuration of route '${fullPath}': Encountered undefined route. - The reason might be an extra comma. - - Example: - const routes: Routes = [ - { path: '', redirectTo: '/dashboard', pathMatch: 'full' }, - { path: 'dashboard', component: DashboardComponent },, << two commas - { path: 'detail/:id', component: HeroDetailComponent } - ]; - `); - } - if (Array.isArray(route)) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': Array cannot be specified`); - } - if (!route.redirectTo && !route.component && !route.loadComponent && !route.children && !route.loadChildren && route.outlet && route.outlet !== PRIMARY_OUTLET) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`); - } - if (route.redirectTo && route.children) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`); - } - if (route.redirectTo && route.loadChildren) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`); - } - if (route.children && route.loadChildren) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`); - } - if (route.redirectTo && (route.component || route.loadComponent)) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and component/loadComponent cannot be used together`); - } - if (route.component && route.loadComponent) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': component and loadComponent cannot be used together`); - } - if (route.redirectTo && route.canActivate) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation so canActivate will never be executed.`); - } - if (route.path && route.matcher) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`); - } - if (route.redirectTo === void 0 && !route.component && !route.loadComponent && !route.children && !route.loadChildren) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`); - } - if (route.path === void 0 && route.matcher === void 0) { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`); - } - if (typeof route.path === "string" && route.path.charAt(0) === "/") { - throw new RuntimeError(4014, `Invalid configuration of route '${fullPath}': path cannot start with a slash`); - } - if (route.path === "" && route.redirectTo !== void 0 && route.pathMatch === void 0) { - const exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`; - throw new RuntimeError(4014, `Invalid configuration of route '{path: "${fullPath}", redirectTo: "${route.redirectTo}"}': please provide 'pathMatch'. ${exp}`); - } - if (requireStandaloneComponents) { - assertStandalone(fullPath, route.component); - } - } - if (route.children) { - validateConfig(route.children, fullPath, requireStandaloneComponents); - } -} -function getFullPath(parentPath, currentRoute) { - if (!currentRoute) { - return parentPath; - } - if (!parentPath && !currentRoute.path) { - return ""; - } else if (parentPath && !currentRoute.path) { - return `${parentPath}/`; - } else if (!parentPath && currentRoute.path) { - return currentRoute.path; - } else { - return `${parentPath}/${currentRoute.path}`; - } -} -function standardizeConfig(r) { - const children = r.children && r.children.map(standardizeConfig); - const c = children ? __spreadProps(__spreadValues({}, r), { - children - }) : __spreadValues({}, r); - if (!c.component && !c.loadComponent && (children || c.loadChildren) && c.outlet && c.outlet !== PRIMARY_OUTLET) { - c.component = ɵEmptyOutletComponent; - } - return c; -} -function getOutlet(route) { - return route.outlet || PRIMARY_OUTLET; -} -function sortByMatchingOutlets(routes, outletName) { - const sortedConfig = routes.filter((r) => getOutlet(r) === outletName); - sortedConfig.push(...routes.filter((r) => getOutlet(r) !== outletName)); - return sortedConfig; -} -function getClosestRouteInjector(snapshot) { - if (!snapshot) - return null; - if (snapshot.routeConfig?._injector) { - return snapshot.routeConfig._injector; - } - for (let s = snapshot.parent; s; s = s.parent) { - const route = s.routeConfig; - if (route?._loadedInjector) - return route._loadedInjector; - if (route?._injector) - return route._injector; - } - return null; -} -var warnedAboutUnsupportedInputBinding = false; -var activateRoutes = (rootContexts, routeReuseStrategy, forwardEvent, inputBindingEnabled) => map((t) => { - new ActivateRoutes(routeReuseStrategy, t.targetRouterState, t.currentRouterState, forwardEvent, inputBindingEnabled).activate(rootContexts); - return t; -}); -var ActivateRoutes = class { - constructor(routeReuseStrategy, futureState, currState, forwardEvent, inputBindingEnabled) { - this.routeReuseStrategy = routeReuseStrategy; - this.futureState = futureState; - this.currState = currState; - this.forwardEvent = forwardEvent; - this.inputBindingEnabled = inputBindingEnabled; - } - activate(parentContexts) { - const futureRoot = this.futureState._root; - const currRoot = this.currState ? this.currState._root : null; - this.deactivateChildRoutes(futureRoot, currRoot, parentContexts); - advanceActivatedRoute(this.futureState.root); - this.activateChildRoutes(futureRoot, currRoot, parentContexts); - } - // De-activate the child route that are not re-used for the future state - deactivateChildRoutes(futureNode, currNode, contexts) { - const children = nodeChildrenAsMap(currNode); - futureNode.children.forEach((futureChild) => { - const childOutletName = futureChild.value.outlet; - this.deactivateRoutes(futureChild, children[childOutletName], contexts); - delete children[childOutletName]; - }); - Object.values(children).forEach((v) => { - this.deactivateRouteAndItsChildren(v, contexts); - }); - } - deactivateRoutes(futureNode, currNode, parentContext) { - const future = futureNode.value; - const curr = currNode ? currNode.value : null; - if (future === curr) { - if (future.component) { - const context = parentContext.getContext(future.outlet); - if (context) { - this.deactivateChildRoutes(futureNode, currNode, context.children); - } - } else { - this.deactivateChildRoutes(futureNode, currNode, parentContext); - } - } else { - if (curr) { - this.deactivateRouteAndItsChildren(currNode, parentContext); - } - } - } - deactivateRouteAndItsChildren(route, parentContexts) { - if (route.value.component && this.routeReuseStrategy.shouldDetach(route.value.snapshot)) { - this.detachAndStoreRouteSubtree(route, parentContexts); - } else { - this.deactivateRouteAndOutlet(route, parentContexts); - } - } - detachAndStoreRouteSubtree(route, parentContexts) { - const context = parentContexts.getContext(route.value.outlet); - const contexts = context && route.value.component ? context.children : parentContexts; - const children = nodeChildrenAsMap(route); - for (const treeNode of Object.values(children)) { - this.deactivateRouteAndItsChildren(treeNode, contexts); - } - if (context && context.outlet) { - const componentRef = context.outlet.detach(); - const contexts2 = context.children.onOutletDeactivated(); - this.routeReuseStrategy.store(route.value.snapshot, { - componentRef, - route, - contexts: contexts2 - }); - } - } - deactivateRouteAndOutlet(route, parentContexts) { - const context = parentContexts.getContext(route.value.outlet); - const contexts = context && route.value.component ? context.children : parentContexts; - const children = nodeChildrenAsMap(route); - for (const treeNode of Object.values(children)) { - this.deactivateRouteAndItsChildren(treeNode, contexts); - } - if (context) { - if (context.outlet) { - context.outlet.deactivate(); - context.children.onOutletDeactivated(); - } - context.attachRef = null; - context.route = null; - } - } - activateChildRoutes(futureNode, currNode, contexts) { - const children = nodeChildrenAsMap(currNode); - futureNode.children.forEach((c) => { - this.activateRoutes(c, children[c.value.outlet], contexts); - this.forwardEvent(new ActivationEnd(c.value.snapshot)); - }); - if (futureNode.children.length) { - this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot)); - } - } - activateRoutes(futureNode, currNode, parentContexts) { - const future = futureNode.value; - const curr = currNode ? currNode.value : null; - advanceActivatedRoute(future); - if (future === curr) { - if (future.component) { - const context = parentContexts.getOrCreateContext(future.outlet); - this.activateChildRoutes(futureNode, currNode, context.children); - } else { - this.activateChildRoutes(futureNode, currNode, parentContexts); - } - } else { - if (future.component) { - const context = parentContexts.getOrCreateContext(future.outlet); - if (this.routeReuseStrategy.shouldAttach(future.snapshot)) { - const stored = this.routeReuseStrategy.retrieve(future.snapshot); - this.routeReuseStrategy.store(future.snapshot, null); - context.children.onOutletReAttached(stored.contexts); - context.attachRef = stored.componentRef; - context.route = stored.route.value; - if (context.outlet) { - context.outlet.attach(stored.componentRef, stored.route.value); - } - advanceActivatedRoute(stored.route.value); - this.activateChildRoutes(futureNode, null, context.children); - } else { - const injector = getClosestRouteInjector(future.snapshot); - context.attachRef = null; - context.route = future; - context.injector = injector; - if (context.outlet) { - context.outlet.activateWith(future, context.injector); - } - this.activateChildRoutes(futureNode, null, context.children); - } - } else { - this.activateChildRoutes(futureNode, null, parentContexts); - } - } - if (typeof ngDevMode === "undefined" || ngDevMode) { - const context = parentContexts.getOrCreateContext(future.outlet); - const outlet = context.outlet; - if (outlet && this.inputBindingEnabled && !outlet.supportsBindingToComponentInputs && !warnedAboutUnsupportedInputBinding) { - console.warn(`'withComponentInputBinding' feature is enabled but this application is using an outlet that may not support binding to component inputs.`); - warnedAboutUnsupportedInputBinding = true; - } - } - } -}; -var CanActivate = class { - constructor(path) { - this.path = path; - this.route = this.path[this.path.length - 1]; - } -}; -var CanDeactivate = class { - constructor(component, route) { - this.component = component; - this.route = route; - } -}; -function getAllRouteGuards(future, curr, parentContexts) { - const futureRoot = future._root; - const currRoot = curr ? curr._root : null; - return getChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]); -} -function getCanActivateChild(p) { - const canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null; - if (!canActivateChild || canActivateChild.length === 0) - return null; - return { - node: p, - guards: canActivateChild - }; -} -function getTokenOrFunctionIdentity(tokenOrFunction, injector) { - const NOT_FOUND = Symbol(); - const result = injector.get(tokenOrFunction, NOT_FOUND); - if (result === NOT_FOUND) { - if (typeof tokenOrFunction === "function" && !isInjectable(tokenOrFunction)) { - return tokenOrFunction; - } else { - return injector.get(tokenOrFunction); - } - } - return result; -} -function getChildRouteGuards(futureNode, currNode, contexts, futurePath, checks = { - canDeactivateChecks: [], - canActivateChecks: [] -}) { - const prevChildren = nodeChildrenAsMap(currNode); - futureNode.children.forEach((c) => { - getRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]), checks); - delete prevChildren[c.value.outlet]; - }); - Object.entries(prevChildren).forEach(([k, v]) => deactivateRouteAndItsChildren(v, contexts.getContext(k), checks)); - return checks; -} -function getRouteGuards(futureNode, currNode, parentContexts, futurePath, checks = { - canDeactivateChecks: [], - canActivateChecks: [] -}) { - const future = futureNode.value; - const curr = currNode ? currNode.value : null; - const context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null; - if (curr && future.routeConfig === curr.routeConfig) { - const shouldRun = shouldRunGuardsAndResolvers(curr, future, future.routeConfig.runGuardsAndResolvers); - if (shouldRun) { - checks.canActivateChecks.push(new CanActivate(futurePath)); - } else { - future.data = curr.data; - future._resolvedData = curr._resolvedData; - } - if (future.component) { - getChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath, checks); - } else { - getChildRouteGuards(futureNode, currNode, parentContexts, futurePath, checks); - } - if (shouldRun && context && context.outlet && context.outlet.isActivated) { - checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, curr)); - } - } else { - if (curr) { - deactivateRouteAndItsChildren(currNode, context, checks); - } - checks.canActivateChecks.push(new CanActivate(futurePath)); - if (future.component) { - getChildRouteGuards(futureNode, null, context ? context.children : null, futurePath, checks); - } else { - getChildRouteGuards(futureNode, null, parentContexts, futurePath, checks); - } - } - return checks; -} -function shouldRunGuardsAndResolvers(curr, future, mode) { - if (typeof mode === "function") { - return mode(curr, future); - } - switch (mode) { - case "pathParamsChange": - return !equalPath(curr.url, future.url); - case "pathParamsOrQueryParamsChange": - return !equalPath(curr.url, future.url) || !shallowEqual(curr.queryParams, future.queryParams); - case "always": - return true; - case "paramsOrQueryParamsChange": - return !equalParamsAndUrlSegments(curr, future) || !shallowEqual(curr.queryParams, future.queryParams); - case "paramsChange": - default: - return !equalParamsAndUrlSegments(curr, future); - } -} -function deactivateRouteAndItsChildren(route, context, checks) { - const children = nodeChildrenAsMap(route); - const r = route.value; - Object.entries(children).forEach(([childName, node]) => { - if (!r.component) { - deactivateRouteAndItsChildren(node, context, checks); - } else if (context) { - deactivateRouteAndItsChildren(node, context.children.getContext(childName), checks); - } else { - deactivateRouteAndItsChildren(node, null, checks); - } - }); - if (!r.component) { - checks.canDeactivateChecks.push(new CanDeactivate(null, r)); - } else if (context && context.outlet && context.outlet.isActivated) { - checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r)); - } else { - checks.canDeactivateChecks.push(new CanDeactivate(null, r)); - } -} -function isFunction(v) { - return typeof v === "function"; -} -function isBoolean(v) { - return typeof v === "boolean"; -} -function isCanLoad(guard) { - return guard && isFunction(guard.canLoad); -} -function isCanActivate(guard) { - return guard && isFunction(guard.canActivate); -} -function isCanActivateChild(guard) { - return guard && isFunction(guard.canActivateChild); -} -function isCanDeactivate(guard) { - return guard && isFunction(guard.canDeactivate); -} -function isCanMatch(guard) { - return guard && isFunction(guard.canMatch); -} -function isEmptyError(e) { - return e instanceof EmptyError || e?.name === "EmptyError"; -} -var INITIAL_VALUE = Symbol("INITIAL_VALUE"); -function prioritizedGuardValue() { - return switchMap((obs) => { - return combineLatest(obs.map((o) => o.pipe(take(1), startWith(INITIAL_VALUE)))).pipe(map((results) => { - for (const result of results) { - if (result === true) { - continue; - } else if (result === INITIAL_VALUE) { - return INITIAL_VALUE; - } else if (result === false || result instanceof UrlTree) { - return result; - } - } - return true; - }), filter((item) => item !== INITIAL_VALUE), take(1)); - }); -} -function checkGuards(injector, forwardEvent) { - return mergeMap((t) => { - const { - targetSnapshot, - currentSnapshot, - guards: { - canActivateChecks, - canDeactivateChecks - } - } = t; - if (canDeactivateChecks.length === 0 && canActivateChecks.length === 0) { - return of(__spreadProps(__spreadValues({}, t), { - guardsResult: true - })); - } - return runCanDeactivateChecks(canDeactivateChecks, targetSnapshot, currentSnapshot, injector).pipe(mergeMap((canDeactivate) => { - return canDeactivate && isBoolean(canDeactivate) ? runCanActivateChecks(targetSnapshot, canActivateChecks, injector, forwardEvent) : of(canDeactivate); - }), map((guardsResult) => __spreadProps(__spreadValues({}, t), { - guardsResult - }))); - }); -} -function runCanDeactivateChecks(checks, futureRSS, currRSS, injector) { - return from(checks).pipe(mergeMap((check) => runCanDeactivate(check.component, check.route, currRSS, futureRSS, injector)), first((result) => { - return result !== true; - }, true)); -} -function runCanActivateChecks(futureSnapshot, checks, injector, forwardEvent) { - return from(checks).pipe(concatMap((check) => { - return concat(fireChildActivationStart(check.route.parent, forwardEvent), fireActivationStart(check.route, forwardEvent), runCanActivateChild(futureSnapshot, check.path, injector), runCanActivate(futureSnapshot, check.route, injector)); - }), first((result) => { - return result !== true; - }, true)); -} -function fireActivationStart(snapshot, forwardEvent) { - if (snapshot !== null && forwardEvent) { - forwardEvent(new ActivationStart(snapshot)); - } - return of(true); -} -function fireChildActivationStart(snapshot, forwardEvent) { - if (snapshot !== null && forwardEvent) { - forwardEvent(new ChildActivationStart(snapshot)); - } - return of(true); -} -function runCanActivate(futureRSS, futureARS, injector) { - const canActivate = futureARS.routeConfig ? futureARS.routeConfig.canActivate : null; - if (!canActivate || canActivate.length === 0) - return of(true); - const canActivateObservables = canActivate.map((canActivate2) => { - return defer(() => { - const closestInjector = getClosestRouteInjector(futureARS) ?? injector; - const guard = getTokenOrFunctionIdentity(canActivate2, closestInjector); - const guardVal = isCanActivate(guard) ? guard.canActivate(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS)); - return wrapIntoObservable(guardVal).pipe(first()); - }); - }); - return of(canActivateObservables).pipe(prioritizedGuardValue()); -} -function runCanActivateChild(futureRSS, path, injector) { - const futureARS = path[path.length - 1]; - const canActivateChildGuards = path.slice(0, path.length - 1).reverse().map((p) => getCanActivateChild(p)).filter((_) => _ !== null); - const canActivateChildGuardsMapped = canActivateChildGuards.map((d) => { - return defer(() => { - const guardsMapped = d.guards.map((canActivateChild) => { - const closestInjector = getClosestRouteInjector(d.node) ?? injector; - const guard = getTokenOrFunctionIdentity(canActivateChild, closestInjector); - const guardVal = isCanActivateChild(guard) ? guard.canActivateChild(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS)); - return wrapIntoObservable(guardVal).pipe(first()); - }); - return of(guardsMapped).pipe(prioritizedGuardValue()); - }); - }); - return of(canActivateChildGuardsMapped).pipe(prioritizedGuardValue()); -} -function runCanDeactivate(component, currARS, currRSS, futureRSS, injector) { - const canDeactivate = currARS && currARS.routeConfig ? currARS.routeConfig.canDeactivate : null; - if (!canDeactivate || canDeactivate.length === 0) - return of(true); - const canDeactivateObservables = canDeactivate.map((c) => { - const closestInjector = getClosestRouteInjector(currARS) ?? injector; - const guard = getTokenOrFunctionIdentity(c, closestInjector); - const guardVal = isCanDeactivate(guard) ? guard.canDeactivate(component, currARS, currRSS, futureRSS) : runInInjectionContext(closestInjector, () => guard(component, currARS, currRSS, futureRSS)); - return wrapIntoObservable(guardVal).pipe(first()); - }); - return of(canDeactivateObservables).pipe(prioritizedGuardValue()); -} -function runCanLoadGuards(injector, route, segments, urlSerializer) { - const canLoad = route.canLoad; - if (canLoad === void 0 || canLoad.length === 0) { - return of(true); - } - const canLoadObservables = canLoad.map((injectionToken) => { - const guard = getTokenOrFunctionIdentity(injectionToken, injector); - const guardVal = isCanLoad(guard) ? guard.canLoad(route, segments) : runInInjectionContext(injector, () => guard(route, segments)); - return wrapIntoObservable(guardVal); - }); - return of(canLoadObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer)); -} -function redirectIfUrlTree(urlSerializer) { - return pipe(tap((result) => { - if (!isUrlTree(result)) - return; - throw redirectingNavigationError(urlSerializer, result); - }), map((result) => result === true)); -} -function runCanMatchGuards(injector, route, segments, urlSerializer) { - const canMatch = route.canMatch; - if (!canMatch || canMatch.length === 0) - return of(true); - const canMatchObservables = canMatch.map((injectionToken) => { - const guard = getTokenOrFunctionIdentity(injectionToken, injector); - const guardVal = isCanMatch(guard) ? guard.canMatch(route, segments) : runInInjectionContext(injector, () => guard(route, segments)); - return wrapIntoObservable(guardVal); - }); - return of(canMatchObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer)); -} -var NoMatch = class { - constructor(segmentGroup) { - this.segmentGroup = segmentGroup || null; - } -}; -var AbsoluteRedirect = class extends Error { - constructor(urlTree) { - super(); - this.urlTree = urlTree; - } -}; -function noMatch$1(segmentGroup) { - return throwError(new NoMatch(segmentGroup)); -} -function namedOutletsRedirect(redirectTo) { - return throwError(new RuntimeError(4e3, (typeof ngDevMode === "undefined" || ngDevMode) && `Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`)); -} -function canLoadFails(route) { - return throwError(navigationCancelingError((typeof ngDevMode === "undefined" || ngDevMode) && `Cannot load children because the guard of the route "path: '${route.path}'" returned false`, NavigationCancellationCode.GuardRejected)); -} -var ApplyRedirects = class { - constructor(urlSerializer, urlTree) { - this.urlSerializer = urlSerializer; - this.urlTree = urlTree; - } - lineralizeSegments(route, urlTree) { - let res = []; - let c = urlTree.root; - while (true) { - res = res.concat(c.segments); - if (c.numberOfChildren === 0) { - return of(res); - } - if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) { - return namedOutletsRedirect(route.redirectTo); - } - c = c.children[PRIMARY_OUTLET]; - } - } - applyRedirectCommands(segments, redirectTo, posParams) { - const newTree = this.applyRedirectCreateUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams); - if (redirectTo.startsWith("/")) { - throw new AbsoluteRedirect(newTree); - } - return newTree; - } - applyRedirectCreateUrlTree(redirectTo, urlTree, segments, posParams) { - const newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams); - return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment); - } - createQueryParams(redirectToParams, actualParams) { - const res = {}; - Object.entries(redirectToParams).forEach(([k, v]) => { - const copySourceValue = typeof v === "string" && v.startsWith(":"); - if (copySourceValue) { - const sourceName = v.substring(1); - res[k] = actualParams[sourceName]; - } else { - res[k] = v; - } - }); - return res; - } - createSegmentGroup(redirectTo, group, segments, posParams) { - const updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams); - let children = {}; - Object.entries(group.children).forEach(([name, child]) => { - children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams); - }); - return new UrlSegmentGroup(updatedSegments, children); - } - createSegments(redirectTo, redirectToSegments, actualSegments, posParams) { - return redirectToSegments.map((s) => s.path.startsWith(":") ? this.findPosParam(redirectTo, s, posParams) : this.findOrReturn(s, actualSegments)); - } - findPosParam(redirectTo, redirectToUrlSegment, posParams) { - const pos = posParams[redirectToUrlSegment.path.substring(1)]; - if (!pos) - throw new RuntimeError(4001, (typeof ngDevMode === "undefined" || ngDevMode) && `Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`); - return pos; - } - findOrReturn(redirectToUrlSegment, actualSegments) { - let idx = 0; - for (const s of actualSegments) { - if (s.path === redirectToUrlSegment.path) { - actualSegments.splice(idx); - return s; - } - idx++; - } - return redirectToUrlSegment; - } -}; -var noMatch = { - matched: false, - consumedSegments: [], - remainingSegments: [], - parameters: {}, - positionalParamSegments: {} -}; -function matchWithChecks(segmentGroup, route, segments, injector, urlSerializer) { - const result = match(segmentGroup, route, segments); - if (!result.matched) { - return of(result); - } - injector = getOrCreateRouteInjectorIfNeeded(route, injector); - return runCanMatchGuards(injector, route, segments, urlSerializer).pipe(map((v) => v === true ? result : __spreadValues({}, noMatch))); -} -function match(segmentGroup, route, segments) { - if (route.path === "**") { - return createWildcardMatchResult(segments); - } - if (route.path === "") { - if (route.pathMatch === "full" && (segmentGroup.hasChildren() || segments.length > 0)) { - return __spreadValues({}, noMatch); - } - return { - matched: true, - consumedSegments: [], - remainingSegments: segments, - parameters: {}, - positionalParamSegments: {} - }; - } - const matcher = route.matcher || defaultUrlMatcher; - const res = matcher(segments, segmentGroup, route); - if (!res) - return __spreadValues({}, noMatch); - const posParams = {}; - Object.entries(res.posParams ?? {}).forEach(([k, v]) => { - posParams[k] = v.path; - }); - const parameters = res.consumed.length > 0 ? __spreadValues(__spreadValues({}, posParams), res.consumed[res.consumed.length - 1].parameters) : posParams; - return { - matched: true, - consumedSegments: res.consumed, - remainingSegments: segments.slice(res.consumed.length), - // TODO(atscott): investigate combining parameters and positionalParamSegments - parameters, - positionalParamSegments: res.posParams ?? {} - }; -} -function createWildcardMatchResult(segments) { - return { - matched: true, - parameters: segments.length > 0 ? last2(segments).parameters : {}, - consumedSegments: segments, - remainingSegments: [], - positionalParamSegments: {} - }; -} -function split(segmentGroup, consumedSegments, slicedSegments, config) { - if (slicedSegments.length > 0 && containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) { - const s2 = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children))); - return { - segmentGroup: s2, - slicedSegments: [] - }; - } - if (slicedSegments.length === 0 && containsEmptyPathMatches(segmentGroup, slicedSegments, config)) { - const s2 = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, config, segmentGroup.children)); - return { - segmentGroup: s2, - slicedSegments - }; - } - const s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children); - return { - segmentGroup: s, - slicedSegments - }; -} -function addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, routes, children) { - const res = {}; - for (const r of routes) { - if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) { - const s = new UrlSegmentGroup([], {}); - res[getOutlet(r)] = s; - } - } - return __spreadValues(__spreadValues({}, children), res); -} -function createChildrenForEmptyPaths(routes, primarySegment) { - const res = {}; - res[PRIMARY_OUTLET] = primarySegment; - for (const r of routes) { - if (r.path === "" && getOutlet(r) !== PRIMARY_OUTLET) { - const s = new UrlSegmentGroup([], {}); - res[getOutlet(r)] = s; - } - } - return res; -} -function containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) { - return routes.some((r) => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET); -} -function containsEmptyPathMatches(segmentGroup, slicedSegments, routes) { - return routes.some((r) => emptyPathMatch(segmentGroup, slicedSegments, r)); -} -function emptyPathMatch(segmentGroup, slicedSegments, r) { - if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === "full") { - return false; - } - return r.path === ""; -} -function isImmediateMatch(route, rawSegment, segments, outlet) { - if (getOutlet(route) !== outlet && (outlet === PRIMARY_OUTLET || !emptyPathMatch(rawSegment, segments, route))) { - return false; - } - return match(rawSegment, route, segments).matched; -} -function noLeftoversInUrl(segmentGroup, segments, outlet) { - return segments.length === 0 && !segmentGroup.children[outlet]; -} -var NoLeftoversInUrl = class { -}; -function recognize$1(injector, configLoader, rootComponentType, config, urlTree, urlSerializer, paramsInheritanceStrategy = "emptyOnly") { - return new Recognizer(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer).recognize(); -} -var MAX_ALLOWED_REDIRECTS = 31; -var Recognizer = class { - constructor(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer) { - this.injector = injector; - this.configLoader = configLoader; - this.rootComponentType = rootComponentType; - this.config = config; - this.urlTree = urlTree; - this.paramsInheritanceStrategy = paramsInheritanceStrategy; - this.urlSerializer = urlSerializer; - this.applyRedirects = new ApplyRedirects(this.urlSerializer, this.urlTree); - this.absoluteRedirectCount = 0; - this.allowRedirects = true; - } - noMatchError(e) { - return new RuntimeError(4002, typeof ngDevMode === "undefined" || ngDevMode ? `Cannot match any routes. URL Segment: '${e.segmentGroup}'` : `'${e.segmentGroup}'`); - } - recognize() { - const rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup; - return this.match(rootSegmentGroup).pipe(map((children) => { - const root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze(__spreadValues({}, this.urlTree.queryParams)), this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null, {}); - const rootNode = new TreeNode(root, children); - const routeState = new RouterStateSnapshot("", rootNode); - const tree2 = createUrlTreeFromSnapshot(root, [], this.urlTree.queryParams, this.urlTree.fragment); - tree2.queryParams = this.urlTree.queryParams; - routeState.url = this.urlSerializer.serialize(tree2); - this.inheritParamsAndData(routeState._root, null); - return { - state: routeState, - tree: tree2 - }; - })); - } - match(rootSegmentGroup) { - const expanded$ = this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET); - return expanded$.pipe(catchError((e) => { - if (e instanceof AbsoluteRedirect) { - this.urlTree = e.urlTree; - return this.match(e.urlTree.root); - } - if (e instanceof NoMatch) { - throw this.noMatchError(e); - } - throw e; - })); - } - inheritParamsAndData(routeNode, parent) { - const route = routeNode.value; - const i = getInherited(route, parent, this.paramsInheritanceStrategy); - route.params = Object.freeze(i.params); - route.data = Object.freeze(i.data); - routeNode.children.forEach((n) => this.inheritParamsAndData(n, route)); - } - processSegmentGroup(injector, config, segmentGroup, outlet) { - if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) { - return this.processChildren(injector, config, segmentGroup); - } - return this.processSegment(injector, config, segmentGroup, segmentGroup.segments, outlet, true).pipe(map((child) => child instanceof TreeNode ? [child] : [])); - } - /** - * Matches every child outlet in the `segmentGroup` to a `Route` in the config. Returns `null` if - * we cannot find a match for _any_ of the children. - * - * @param config - The `Routes` to match against - * @param segmentGroup - The `UrlSegmentGroup` whose children need to be matched against the - * config. - */ - processChildren(injector, config, segmentGroup) { - const childOutlets = []; - for (const child of Object.keys(segmentGroup.children)) { - if (child === "primary") { - childOutlets.unshift(child); - } else { - childOutlets.push(child); - } - } - return from(childOutlets).pipe(concatMap((childOutlet) => { - const child = segmentGroup.children[childOutlet]; - const sortedConfig = sortByMatchingOutlets(config, childOutlet); - return this.processSegmentGroup(injector, sortedConfig, child, childOutlet); - }), scan((children, outletChildren) => { - children.push(...outletChildren); - return children; - }), defaultIfEmpty(null), last(), mergeMap((children) => { - if (children === null) - return noMatch$1(segmentGroup); - const mergedChildren = mergeEmptyPathMatches(children); - if (typeof ngDevMode === "undefined" || ngDevMode) { - checkOutletNameUniqueness(mergedChildren); - } - sortActivatedRouteSnapshots(mergedChildren); - return of(mergedChildren); - })); - } - processSegment(injector, routes, segmentGroup, segments, outlet, allowRedirects) { - return from(routes).pipe(concatMap((r) => { - return this.processSegmentAgainstRoute(r._injector ?? injector, routes, r, segmentGroup, segments, outlet, allowRedirects).pipe(catchError((e) => { - if (e instanceof NoMatch) { - return of(null); - } - throw e; - })); - }), first((x) => !!x), catchError((e) => { - if (isEmptyError(e)) { - if (noLeftoversInUrl(segmentGroup, segments, outlet)) { - return of(new NoLeftoversInUrl()); - } - return noMatch$1(segmentGroup); - } - throw e; - })); - } - processSegmentAgainstRoute(injector, routes, route, rawSegment, segments, outlet, allowRedirects) { - if (!isImmediateMatch(route, rawSegment, segments, outlet)) - return noMatch$1(rawSegment); - if (route.redirectTo === void 0) { - return this.matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet); - } - if (this.allowRedirects && allowRedirects) { - return this.expandSegmentAgainstRouteUsingRedirect(injector, rawSegment, routes, route, segments, outlet); - } - return noMatch$1(rawSegment); - } - expandSegmentAgainstRouteUsingRedirect(injector, segmentGroup, routes, route, segments, outlet) { - const { - matched, - consumedSegments, - positionalParamSegments, - remainingSegments - } = match(segmentGroup, route, segments); - if (!matched) - return noMatch$1(segmentGroup); - if (route.redirectTo.startsWith("/")) { - this.absoluteRedirectCount++; - if (this.absoluteRedirectCount > MAX_ALLOWED_REDIRECTS) { - if (ngDevMode) { - throw new RuntimeError(4016, `Detected possible infinite redirect when redirecting from '${this.urlTree}' to '${route.redirectTo}'. -This is currently a dev mode only error but will become a call stack size exceeded error in production in a future major version.`); - } - this.allowRedirects = false; - } - } - const newTree = this.applyRedirects.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments); - return this.applyRedirects.lineralizeSegments(route, newTree).pipe(mergeMap((newSegments) => { - return this.processSegment(injector, routes, segmentGroup, newSegments.concat(remainingSegments), outlet, false); - })); - } - matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet) { - const matchResult = matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer); - if (route.path === "**") { - rawSegment.children = {}; - } - return matchResult.pipe(switchMap((result) => { - if (!result.matched) { - return noMatch$1(rawSegment); - } - injector = route._injector ?? injector; - return this.getChildConfig(injector, route, segments).pipe(switchMap(({ - routes: childConfig - }) => { - const childInjector = route._loadedInjector ?? injector; - const { - consumedSegments, - remainingSegments, - parameters - } = result; - const snapshot = new ActivatedRouteSnapshot(consumedSegments, parameters, Object.freeze(__spreadValues({}, this.urlTree.queryParams)), this.urlTree.fragment, getData(route), getOutlet(route), route.component ?? route._loadedComponent ?? null, route, getResolve(route)); - const { - segmentGroup, - slicedSegments - } = split(rawSegment, consumedSegments, remainingSegments, childConfig); - if (slicedSegments.length === 0 && segmentGroup.hasChildren()) { - return this.processChildren(childInjector, childConfig, segmentGroup).pipe(map((children) => { - if (children === null) { - return null; - } - return new TreeNode(snapshot, children); - })); - } - if (childConfig.length === 0 && slicedSegments.length === 0) { - return of(new TreeNode(snapshot, [])); - } - const matchedOnOutlet = getOutlet(route) === outlet; - return this.processSegment(childInjector, childConfig, segmentGroup, slicedSegments, matchedOnOutlet ? PRIMARY_OUTLET : outlet, true).pipe(map((child) => { - return new TreeNode(snapshot, child instanceof TreeNode ? [child] : []); - })); - })); - })); - } - getChildConfig(injector, route, segments) { - if (route.children) { - return of({ - routes: route.children, - injector - }); - } - if (route.loadChildren) { - if (route._loadedRoutes !== void 0) { - return of({ - routes: route._loadedRoutes, - injector: route._loadedInjector - }); - } - return runCanLoadGuards(injector, route, segments, this.urlSerializer).pipe(mergeMap((shouldLoadResult) => { - if (shouldLoadResult) { - return this.configLoader.loadChildren(injector, route).pipe(tap((cfg) => { - route._loadedRoutes = cfg.routes; - route._loadedInjector = cfg.injector; - })); - } - return canLoadFails(route); - })); - } - return of({ - routes: [], - injector - }); - } -}; -function sortActivatedRouteSnapshots(nodes) { - nodes.sort((a, b) => { - if (a.value.outlet === PRIMARY_OUTLET) - return -1; - if (b.value.outlet === PRIMARY_OUTLET) - return 1; - return a.value.outlet.localeCompare(b.value.outlet); - }); -} -function hasEmptyPathConfig(node) { - const config = node.value.routeConfig; - return config && config.path === ""; -} -function mergeEmptyPathMatches(nodes) { - const result = []; - const mergedNodes = /* @__PURE__ */ new Set(); - for (const node of nodes) { - if (!hasEmptyPathConfig(node)) { - result.push(node); - continue; - } - const duplicateEmptyPathNode = result.find((resultNode) => node.value.routeConfig === resultNode.value.routeConfig); - if (duplicateEmptyPathNode !== void 0) { - duplicateEmptyPathNode.children.push(...node.children); - mergedNodes.add(duplicateEmptyPathNode); - } else { - result.push(node); - } - } - for (const mergedNode of mergedNodes) { - const mergedChildren = mergeEmptyPathMatches(mergedNode.children); - result.push(new TreeNode(mergedNode.value, mergedChildren)); - } - return result.filter((n) => !mergedNodes.has(n)); -} -function checkOutletNameUniqueness(nodes) { - const names = {}; - nodes.forEach((n) => { - const routeWithSameOutletName = names[n.value.outlet]; - if (routeWithSameOutletName) { - const p = routeWithSameOutletName.url.map((s) => s.toString()).join("/"); - const c = n.value.url.map((s) => s.toString()).join("/"); - throw new RuntimeError(4006, (typeof ngDevMode === "undefined" || ngDevMode) && `Two segments cannot have the same outlet name: '${p}' and '${c}'.`); - } - names[n.value.outlet] = n.value; - }); -} -function getData(route) { - return route.data || {}; -} -function getResolve(route) { - return route.resolve || {}; -} -function recognize(injector, configLoader, rootComponentType, config, serializer, paramsInheritanceStrategy) { - return mergeMap((t) => recognize$1(injector, configLoader, rootComponentType, config, t.extractedUrl, serializer, paramsInheritanceStrategy).pipe(map(({ - state: targetSnapshot, - tree: urlAfterRedirects - }) => { - return __spreadProps(__spreadValues({}, t), { - targetSnapshot, - urlAfterRedirects - }); - }))); -} -function resolveData(paramsInheritanceStrategy, injector) { - return mergeMap((t) => { - const { - targetSnapshot, - guards: { - canActivateChecks - } - } = t; - if (!canActivateChecks.length) { - return of(t); - } - const routesWithResolversToRun = new Set(canActivateChecks.map((check) => check.route)); - const routesNeedingDataUpdates = /* @__PURE__ */ new Set(); - for (const route of routesWithResolversToRun) { - if (routesNeedingDataUpdates.has(route)) { - continue; - } - for (const newRoute of flattenRouteTree(route)) { - routesNeedingDataUpdates.add(newRoute); - } - } - let routesProcessed = 0; - return from(routesNeedingDataUpdates).pipe(concatMap((route) => { - if (routesWithResolversToRun.has(route)) { - return runResolve(route, targetSnapshot, paramsInheritanceStrategy, injector); - } else { - route.data = getInherited(route, route.parent, paramsInheritanceStrategy).resolve; - return of(void 0); - } - }), tap(() => routesProcessed++), takeLast(1), mergeMap((_) => routesProcessed === routesNeedingDataUpdates.size ? of(t) : EMPTY)); - }); -} -function flattenRouteTree(route) { - const descendants = route.children.map((child) => flattenRouteTree(child)).flat(); - return [route, ...descendants]; -} -function runResolve(futureARS, futureRSS, paramsInheritanceStrategy, injector) { - const config = futureARS.routeConfig; - const resolve = futureARS._resolve; - if (config?.title !== void 0 && !hasStaticTitle(config)) { - resolve[RouteTitleKey] = config.title; - } - return resolveNode(resolve, futureARS, futureRSS, injector).pipe(map((resolvedData) => { - futureARS._resolvedData = resolvedData; - futureARS.data = getInherited(futureARS, futureARS.parent, paramsInheritanceStrategy).resolve; - return null; - })); -} -function resolveNode(resolve, futureARS, futureRSS, injector) { - const keys = getDataKeys(resolve); - if (keys.length === 0) { - return of({}); - } - const data = {}; - return from(keys).pipe(mergeMap((key) => getResolver(resolve[key], futureARS, futureRSS, injector).pipe(first(), tap((value) => { - data[key] = value; - }))), takeLast(1), mapTo(data), catchError((e) => isEmptyError(e) ? EMPTY : throwError(e))); -} -function getResolver(injectionToken, futureARS, futureRSS, injector) { - const closestInjector = getClosestRouteInjector(futureARS) ?? injector; - const resolver = getTokenOrFunctionIdentity(injectionToken, closestInjector); - const resolverValue = resolver.resolve ? resolver.resolve(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => resolver(futureARS, futureRSS)); - return wrapIntoObservable(resolverValue); -} -function switchTap(next) { - return switchMap((v) => { - const nextResult = next(v); - if (nextResult) { - return from(nextResult).pipe(map(() => v)); - } - return of(v); - }); -} -var _TitleStrategy = class _TitleStrategy { - /** - * @returns The `title` of the deepest primary route. - */ - buildTitle(snapshot) { - let pageTitle; - let route = snapshot.root; - while (route !== void 0) { - pageTitle = this.getResolvedTitleForRoute(route) ?? pageTitle; - route = route.children.find((child) => child.outlet === PRIMARY_OUTLET); - } - return pageTitle; - } - /** - * Given an `ActivatedRouteSnapshot`, returns the final value of the - * `Route.title` property, which can either be a static string or a resolved value. - */ - getResolvedTitleForRoute(snapshot) { - return snapshot.data[RouteTitleKey]; - } -}; -_TitleStrategy.ɵfac = function TitleStrategy_Factory(t) { - return new (t || _TitleStrategy)(); -}; -_TitleStrategy.ɵprov = ɵɵdefineInjectable({ - token: _TitleStrategy, - factory: () => (() => inject(DefaultTitleStrategy))(), - providedIn: "root" -}); -var TitleStrategy = _TitleStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TitleStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root", - useFactory: () => inject(DefaultTitleStrategy) - }] - }], null, null); -})(); -var _DefaultTitleStrategy = class _DefaultTitleStrategy extends TitleStrategy { - constructor(title) { - super(); - this.title = title; - } - /** - * Sets the title of the browser to the given value. - * - * @param title The `pageTitle` from the deepest primary route. - */ - updateTitle(snapshot) { - const title = this.buildTitle(snapshot); - if (title !== void 0) { - this.title.setTitle(title); - } - } -}; -_DefaultTitleStrategy.ɵfac = function DefaultTitleStrategy_Factory(t) { - return new (t || _DefaultTitleStrategy)(ɵɵinject(Title)); -}; -_DefaultTitleStrategy.ɵprov = ɵɵdefineInjectable({ - token: _DefaultTitleStrategy, - factory: _DefaultTitleStrategy.ɵfac, - providedIn: "root" -}); -var DefaultTitleStrategy = _DefaultTitleStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DefaultTitleStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], () => [{ - type: Title - }], null); -})(); -var ROUTER_CONFIGURATION = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "router config" : "", { - providedIn: "root", - factory: () => ({}) -}); -var ROUTES = new InjectionToken(ngDevMode ? "ROUTES" : ""); -var _RouterConfigLoader = class _RouterConfigLoader { - constructor() { - this.componentLoaders = /* @__PURE__ */ new WeakMap(); - this.childrenLoaders = /* @__PURE__ */ new WeakMap(); - this.compiler = inject(Compiler); - } - loadComponent(route) { - if (this.componentLoaders.get(route)) { - return this.componentLoaders.get(route); - } else if (route._loadedComponent) { - return of(route._loadedComponent); - } - if (this.onLoadStartListener) { - this.onLoadStartListener(route); - } - const loadRunner = wrapIntoObservable(route.loadComponent()).pipe(map(maybeUnwrapDefaultExport), tap((component) => { - if (this.onLoadEndListener) { - this.onLoadEndListener(route); - } - (typeof ngDevMode === "undefined" || ngDevMode) && assertStandalone(route.path ?? "", component); - route._loadedComponent = component; - }), finalize(() => { - this.componentLoaders.delete(route); - })); - const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount()); - this.componentLoaders.set(route, loader); - return loader; - } - loadChildren(parentInjector, route) { - if (this.childrenLoaders.get(route)) { - return this.childrenLoaders.get(route); - } else if (route._loadedRoutes) { - return of({ - routes: route._loadedRoutes, - injector: route._loadedInjector - }); - } - if (this.onLoadStartListener) { - this.onLoadStartListener(route); - } - const moduleFactoryOrRoutes$ = loadChildren(route, this.compiler, parentInjector, this.onLoadEndListener); - const loadRunner = moduleFactoryOrRoutes$.pipe(finalize(() => { - this.childrenLoaders.delete(route); - })); - const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount()); - this.childrenLoaders.set(route, loader); - return loader; - } -}; -_RouterConfigLoader.ɵfac = function RouterConfigLoader_Factory(t) { - return new (t || _RouterConfigLoader)(); -}; -_RouterConfigLoader.ɵprov = ɵɵdefineInjectable({ - token: _RouterConfigLoader, - factory: _RouterConfigLoader.ɵfac, - providedIn: "root" -}); -var RouterConfigLoader = _RouterConfigLoader; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterConfigLoader, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -function loadChildren(route, compiler, parentInjector, onLoadEndListener) { - return wrapIntoObservable(route.loadChildren()).pipe(map(maybeUnwrapDefaultExport), mergeMap((t) => { - if (t instanceof NgModuleFactory$1 || Array.isArray(t)) { - return of(t); - } else { - return from(compiler.compileModuleAsync(t)); - } - }), map((factoryOrRoutes) => { - if (onLoadEndListener) { - onLoadEndListener(route); - } - let injector; - let rawRoutes; - let requireStandaloneComponents = false; - if (Array.isArray(factoryOrRoutes)) { - rawRoutes = factoryOrRoutes; - requireStandaloneComponents = true; - } else { - injector = factoryOrRoutes.create(parentInjector).injector; - rawRoutes = injector.get(ROUTES, [], { - optional: true, - self: true - }).flat(); - } - const routes = rawRoutes.map(standardizeConfig); - (typeof ngDevMode === "undefined" || ngDevMode) && validateConfig(routes, route.path, requireStandaloneComponents); - return { - routes, - injector - }; - })); -} -function isWrappedDefaultExport(value) { - return value && typeof value === "object" && "default" in value; -} -function maybeUnwrapDefaultExport(input) { - return isWrappedDefaultExport(input) ? input["default"] : input; -} -var _UrlHandlingStrategy = class _UrlHandlingStrategy { -}; -_UrlHandlingStrategy.ɵfac = function UrlHandlingStrategy_Factory(t) { - return new (t || _UrlHandlingStrategy)(); -}; -_UrlHandlingStrategy.ɵprov = ɵɵdefineInjectable({ - token: _UrlHandlingStrategy, - factory: () => (() => inject(DefaultUrlHandlingStrategy))(), - providedIn: "root" -}); -var UrlHandlingStrategy = _UrlHandlingStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(UrlHandlingStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root", - useFactory: () => inject(DefaultUrlHandlingStrategy) - }] - }], null, null); -})(); -var _DefaultUrlHandlingStrategy = class _DefaultUrlHandlingStrategy { - shouldProcessUrl(url) { - return true; - } - extract(url) { - return url; - } - merge(newUrlPart, wholeUrl) { - return newUrlPart; - } -}; -_DefaultUrlHandlingStrategy.ɵfac = function DefaultUrlHandlingStrategy_Factory(t) { - return new (t || _DefaultUrlHandlingStrategy)(); -}; -_DefaultUrlHandlingStrategy.ɵprov = ɵɵdefineInjectable({ - token: _DefaultUrlHandlingStrategy, - factory: _DefaultUrlHandlingStrategy.ɵfac, - providedIn: "root" -}); -var DefaultUrlHandlingStrategy = _DefaultUrlHandlingStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DefaultUrlHandlingStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? "view transition helper" : ""); -var VIEW_TRANSITION_OPTIONS = new InjectionToken(ngDevMode ? "view transition options" : ""); -function createViewTransition(injector, from2, to) { - const transitionOptions = injector.get(VIEW_TRANSITION_OPTIONS); - const document = injector.get(DOCUMENT); - return injector.get(NgZone).runOutsideAngular(() => { - if (!document.startViewTransition || transitionOptions.skipNextTransition) { - transitionOptions.skipNextTransition = false; - return Promise.resolve(); - } - let resolveViewTransitionStarted; - const viewTransitionStarted = new Promise((resolve) => { - resolveViewTransitionStarted = resolve; - }); - const transition = document.startViewTransition(() => { - resolveViewTransitionStarted(); - return createRenderPromise(injector); - }); - const { - onViewTransitionCreated - } = transitionOptions; - if (onViewTransitionCreated) { - runInInjectionContext(injector, () => onViewTransitionCreated({ - transition, - from: from2, - to - })); - } - return viewTransitionStarted; - }); -} -function createRenderPromise(injector) { - return new Promise((resolve) => { - afterNextRender(resolve, { - injector - }); - }); -} -var _NavigationTransitions = class _NavigationTransitions { - get hasRequestedNavigation() { - return this.navigationId !== 0; - } - constructor() { - this.currentNavigation = null; - this.currentTransition = null; - this.lastSuccessfulNavigation = null; - this.events = new Subject(); - this.transitionAbortSubject = new Subject(); - this.configLoader = inject(RouterConfigLoader); - this.environmentInjector = inject(EnvironmentInjector); - this.urlSerializer = inject(UrlSerializer); - this.rootContexts = inject(ChildrenOutletContexts); - this.location = inject(Location); - this.inputBindingEnabled = inject(INPUT_BINDER, { - optional: true - }) !== null; - this.titleStrategy = inject(TitleStrategy); - this.options = inject(ROUTER_CONFIGURATION, { - optional: true - }) || {}; - this.paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || "emptyOnly"; - this.urlHandlingStrategy = inject(UrlHandlingStrategy); - this.createViewTransition = inject(CREATE_VIEW_TRANSITION, { - optional: true - }); - this.navigationId = 0; - this.afterPreactivation = () => of(void 0); - this.rootComponentType = null; - const onLoadStart = (r) => this.events.next(new RouteConfigLoadStart(r)); - const onLoadEnd = (r) => this.events.next(new RouteConfigLoadEnd(r)); - this.configLoader.onLoadEndListener = onLoadEnd; - this.configLoader.onLoadStartListener = onLoadStart; - } - complete() { - this.transitions?.complete(); - } - handleNavigationRequest(request) { - const id = ++this.navigationId; - this.transitions?.next(__spreadProps(__spreadValues(__spreadValues({}, this.transitions.value), request), { - id - })); - } - setupNavigations(router, initialUrlTree, initialRouterState) { - this.transitions = new BehaviorSubject({ - id: 0, - currentUrlTree: initialUrlTree, - currentRawUrl: initialUrlTree, - extractedUrl: this.urlHandlingStrategy.extract(initialUrlTree), - urlAfterRedirects: this.urlHandlingStrategy.extract(initialUrlTree), - rawUrl: initialUrlTree, - extras: {}, - resolve: null, - reject: null, - promise: Promise.resolve(true), - source: IMPERATIVE_NAVIGATION, - restoredState: null, - currentSnapshot: initialRouterState.snapshot, - targetSnapshot: null, - currentRouterState: initialRouterState, - targetRouterState: null, - guards: { - canActivateChecks: [], - canDeactivateChecks: [] - }, - guardsResult: null - }); - return this.transitions.pipe( - filter((t) => t.id !== 0), - // Extract URL - map((t) => __spreadProps(__spreadValues({}, t), { - extractedUrl: this.urlHandlingStrategy.extract(t.rawUrl) - })), - // Using switchMap so we cancel executing navigations when a new one comes in - switchMap((overallTransitionState) => { - this.currentTransition = overallTransitionState; - let completed = false; - let errored = false; - return of(overallTransitionState).pipe( - // Store the Navigation object - tap((t) => { - this.currentNavigation = { - id: t.id, - initialUrl: t.rawUrl, - extractedUrl: t.extractedUrl, - trigger: t.source, - extras: t.extras, - previousNavigation: !this.lastSuccessfulNavigation ? null : __spreadProps(__spreadValues({}, this.lastSuccessfulNavigation), { - previousNavigation: null - }) - }; - }), - switchMap((t) => { - const urlTransition = !router.navigated || this.isUpdatingInternalState() || this.isUpdatedBrowserUrl(); - const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation; - if (!urlTransition && onSameUrlNavigation !== "reload") { - const reason = typeof ngDevMode === "undefined" || ngDevMode ? `Navigation to ${t.rawUrl} was ignored because it is the same as the current Router URL.` : ""; - this.events.next(new NavigationSkipped(t.id, this.urlSerializer.serialize(t.rawUrl), reason, NavigationSkippedCode.IgnoredSameUrlNavigation)); - t.resolve(null); - return EMPTY; - } - if (this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl)) { - return of(t).pipe( - // Fire NavigationStart event - switchMap((t2) => { - const transition = this.transitions?.getValue(); - this.events.next(new NavigationStart(t2.id, this.urlSerializer.serialize(t2.extractedUrl), t2.source, t2.restoredState)); - if (transition !== this.transitions?.getValue()) { - return EMPTY; - } - return Promise.resolve(t2); - }), - // Recognize - recognize(this.environmentInjector, this.configLoader, this.rootComponentType, router.config, this.urlSerializer, this.paramsInheritanceStrategy), - // Update URL if in `eager` update mode - tap((t2) => { - overallTransitionState.targetSnapshot = t2.targetSnapshot; - overallTransitionState.urlAfterRedirects = t2.urlAfterRedirects; - this.currentNavigation = __spreadProps(__spreadValues({}, this.currentNavigation), { - finalUrl: t2.urlAfterRedirects - }); - const routesRecognized = new RoutesRecognized(t2.id, this.urlSerializer.serialize(t2.extractedUrl), this.urlSerializer.serialize(t2.urlAfterRedirects), t2.targetSnapshot); - this.events.next(routesRecognized); - }) - ); - } else if (urlTransition && this.urlHandlingStrategy.shouldProcessUrl(t.currentRawUrl)) { - const { - id, - extractedUrl, - source, - restoredState, - extras - } = t; - const navStart = new NavigationStart(id, this.urlSerializer.serialize(extractedUrl), source, restoredState); - this.events.next(navStart); - const targetSnapshot = createEmptyState(this.rootComponentType).snapshot; - this.currentTransition = overallTransitionState = __spreadProps(__spreadValues({}, t), { - targetSnapshot, - urlAfterRedirects: extractedUrl, - extras: __spreadProps(__spreadValues({}, extras), { - skipLocationChange: false, - replaceUrl: false - }) - }); - this.currentNavigation.finalUrl = extractedUrl; - return of(overallTransitionState); - } else { - const reason = typeof ngDevMode === "undefined" || ngDevMode ? `Navigation was ignored because the UrlHandlingStrategy indicated neither the current URL ${t.currentRawUrl} nor target URL ${t.rawUrl} should be processed.` : ""; - this.events.next(new NavigationSkipped(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, NavigationSkippedCode.IgnoredByUrlHandlingStrategy)); - t.resolve(null); - return EMPTY; - } - }), - // --- GUARDS --- - tap((t) => { - const guardsStart = new GuardsCheckStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot); - this.events.next(guardsStart); - }), - map((t) => { - this.currentTransition = overallTransitionState = __spreadProps(__spreadValues({}, t), { - guards: getAllRouteGuards(t.targetSnapshot, t.currentSnapshot, this.rootContexts) - }); - return overallTransitionState; - }), - checkGuards(this.environmentInjector, (evt) => this.events.next(evt)), - tap((t) => { - overallTransitionState.guardsResult = t.guardsResult; - if (isUrlTree(t.guardsResult)) { - throw redirectingNavigationError(this.urlSerializer, t.guardsResult); - } - const guardsEnd = new GuardsCheckEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot, !!t.guardsResult); - this.events.next(guardsEnd); - }), - filter((t) => { - if (!t.guardsResult) { - this.cancelNavigationTransition(t, "", NavigationCancellationCode.GuardRejected); - return false; - } - return true; - }), - // --- RESOLVE --- - switchTap((t) => { - if (t.guards.canActivateChecks.length) { - return of(t).pipe(tap((t2) => { - const resolveStart = new ResolveStart(t2.id, this.urlSerializer.serialize(t2.extractedUrl), this.urlSerializer.serialize(t2.urlAfterRedirects), t2.targetSnapshot); - this.events.next(resolveStart); - }), switchMap((t2) => { - let dataResolved = false; - return of(t2).pipe(resolveData(this.paramsInheritanceStrategy, this.environmentInjector), tap({ - next: () => dataResolved = true, - complete: () => { - if (!dataResolved) { - this.cancelNavigationTransition(t2, typeof ngDevMode === "undefined" || ngDevMode ? `At least one route resolver didn't emit any value.` : "", NavigationCancellationCode.NoDataFromResolver); - } - } - })); - }), tap((t2) => { - const resolveEnd = new ResolveEnd(t2.id, this.urlSerializer.serialize(t2.extractedUrl), this.urlSerializer.serialize(t2.urlAfterRedirects), t2.targetSnapshot); - this.events.next(resolveEnd); - })); - } - return void 0; - }), - // --- LOAD COMPONENTS --- - switchTap((t) => { - const loadComponents = (route) => { - const loaders = []; - if (route.routeConfig?.loadComponent && !route.routeConfig._loadedComponent) { - loaders.push(this.configLoader.loadComponent(route.routeConfig).pipe(tap((loadedComponent) => { - route.component = loadedComponent; - }), map(() => void 0))); - } - for (const child of route.children) { - loaders.push(...loadComponents(child)); - } - return loaders; - }; - return combineLatest(loadComponents(t.targetSnapshot.root)).pipe(defaultIfEmpty(null), take(1)); - }), - switchTap(() => this.afterPreactivation()), - switchMap(() => { - const { - currentSnapshot, - targetSnapshot - } = overallTransitionState; - const viewTransitionStarted = this.createViewTransition?.(this.environmentInjector, currentSnapshot.root, targetSnapshot.root); - return viewTransitionStarted ? from(viewTransitionStarted).pipe(map(() => overallTransitionState)) : of(overallTransitionState); - }), - map((t) => { - const targetRouterState = createRouterState(router.routeReuseStrategy, t.targetSnapshot, t.currentRouterState); - this.currentTransition = overallTransitionState = __spreadProps(__spreadValues({}, t), { - targetRouterState - }); - this.currentNavigation.targetRouterState = targetRouterState; - return overallTransitionState; - }), - tap(() => { - this.events.next(new BeforeActivateRoutes()); - }), - activateRoutes(this.rootContexts, router.routeReuseStrategy, (evt) => this.events.next(evt), this.inputBindingEnabled), - // Ensure that if some observable used to drive the transition doesn't - // complete, the navigation still finalizes This should never happen, but - // this is done as a safety measure to avoid surfacing this error (#49567). - take(1), - tap({ - next: (t) => { - completed = true; - this.lastSuccessfulNavigation = this.currentNavigation; - this.events.next(new NavigationEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects))); - this.titleStrategy?.updateTitle(t.targetRouterState.snapshot); - t.resolve(true); - }, - complete: () => { - completed = true; - } - }), - // There used to be a lot more logic happening directly within the - // transition Observable. Some of this logic has been refactored out to - // other places but there may still be errors that happen there. This gives - // us a way to cancel the transition from the outside. This may also be - // required in the future to support something like the abort signal of the - // Navigation API where the navigation gets aborted from outside the - // transition. - takeUntil(this.transitionAbortSubject.pipe(tap((err) => { - throw err; - }))), - finalize(() => { - if (!completed && !errored) { - const cancelationReason = typeof ngDevMode === "undefined" || ngDevMode ? `Navigation ID ${overallTransitionState.id} is not equal to the current navigation id ${this.navigationId}` : ""; - this.cancelNavigationTransition(overallTransitionState, cancelationReason, NavigationCancellationCode.SupersededByNewNavigation); - } - if (this.currentNavigation?.id === overallTransitionState.id) { - this.currentNavigation = null; - } - }), - catchError((e) => { - errored = true; - if (isNavigationCancelingError(e)) { - this.events.next(new NavigationCancel(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e.message, e.cancellationCode)); - if (!isRedirectingNavigationCancelingError(e)) { - overallTransitionState.resolve(false); - } else { - this.events.next(new RedirectRequest(e.url)); - } - } else { - this.events.next(new NavigationError(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e, overallTransitionState.targetSnapshot ?? void 0)); - try { - overallTransitionState.resolve(router.errorHandler(e)); - } catch (ee) { - if (this.options.resolveNavigationPromiseOnError) { - overallTransitionState.resolve(false); - } else { - overallTransitionState.reject(ee); - } - } - } - return EMPTY; - }) - ); - }) - ); - } - cancelNavigationTransition(t, reason, code) { - const navCancel = new NavigationCancel(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, code); - this.events.next(navCancel); - t.resolve(false); - } - /** - * @returns Whether we're navigating to somewhere that is not what the Router is - * currently set to. - */ - isUpdatingInternalState() { - return this.currentTransition?.extractedUrl.toString() !== this.currentTransition?.currentUrlTree.toString(); - } - /** - * @returns Whether we're updating the browser URL to something new (navigation is going - * to somewhere not displayed in the URL bar and we will update the URL - * bar if navigation succeeds). - */ - isUpdatedBrowserUrl() { - const extractedBrowserUrl = this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(true))); - return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() && !this.currentTransition?.extras.skipLocationChange; - } -}; -_NavigationTransitions.ɵfac = function NavigationTransitions_Factory(t) { - return new (t || _NavigationTransitions)(); -}; -_NavigationTransitions.ɵprov = ɵɵdefineInjectable({ - token: _NavigationTransitions, - factory: _NavigationTransitions.ɵfac, - providedIn: "root" -}); -var NavigationTransitions = _NavigationTransitions; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NavigationTransitions, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], () => [], null); -})(); -function isBrowserTriggeredNavigation(source) { - return source !== IMPERATIVE_NAVIGATION; -} -var _RouteReuseStrategy = class _RouteReuseStrategy { -}; -_RouteReuseStrategy.ɵfac = function RouteReuseStrategy_Factory(t) { - return new (t || _RouteReuseStrategy)(); -}; -_RouteReuseStrategy.ɵprov = ɵɵdefineInjectable({ - token: _RouteReuseStrategy, - factory: () => (() => inject(DefaultRouteReuseStrategy))(), - providedIn: "root" -}); -var RouteReuseStrategy = _RouteReuseStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouteReuseStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root", - useFactory: () => inject(DefaultRouteReuseStrategy) - }] - }], null, null); -})(); -var BaseRouteReuseStrategy = class { - /** - * Whether the given route should detach for later reuse. - * Always returns false for `BaseRouteReuseStrategy`. - * */ - shouldDetach(route) { - return false; - } - /** - * A no-op; the route is never stored since this strategy never detaches routes for later re-use. - */ - store(route, detachedTree) { - } - /** Returns `false`, meaning the route (and its subtree) is never reattached */ - shouldAttach(route) { - return false; - } - /** Returns `null` because this strategy does not store routes for later re-use. */ - retrieve(route) { - return null; - } - /** - * Determines if a route should be reused. - * This strategy returns `true` when the future route config and current route config are - * identical. - */ - shouldReuseRoute(future, curr) { - return future.routeConfig === curr.routeConfig; - } -}; -var _DefaultRouteReuseStrategy = class _DefaultRouteReuseStrategy extends BaseRouteReuseStrategy { -}; -_DefaultRouteReuseStrategy.ɵfac = /* @__PURE__ */ (() => { - let ɵDefaultRouteReuseStrategy_BaseFactory; - return function DefaultRouteReuseStrategy_Factory(t) { - return (ɵDefaultRouteReuseStrategy_BaseFactory || (ɵDefaultRouteReuseStrategy_BaseFactory = ɵɵgetInheritedFactory(_DefaultRouteReuseStrategy)))(t || _DefaultRouteReuseStrategy); - }; -})(); -_DefaultRouteReuseStrategy.ɵprov = ɵɵdefineInjectable({ - token: _DefaultRouteReuseStrategy, - factory: _DefaultRouteReuseStrategy.ɵfac, - providedIn: "root" -}); -var DefaultRouteReuseStrategy = _DefaultRouteReuseStrategy; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(DefaultRouteReuseStrategy, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var _StateManager = class _StateManager { -}; -_StateManager.ɵfac = function StateManager_Factory(t) { - return new (t || _StateManager)(); -}; -_StateManager.ɵprov = ɵɵdefineInjectable({ - token: _StateManager, - factory: () => (() => inject(HistoryStateManager))(), - providedIn: "root" -}); -var StateManager = _StateManager; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(StateManager, [{ - type: Injectable, - args: [{ - providedIn: "root", - useFactory: () => inject(HistoryStateManager) - }] - }], null, null); -})(); -var _HistoryStateManager = class _HistoryStateManager extends StateManager { - constructor() { - super(...arguments); - this.location = inject(Location); - this.urlSerializer = inject(UrlSerializer); - this.options = inject(ROUTER_CONFIGURATION, { - optional: true - }) || {}; - this.canceledNavigationResolution = this.options.canceledNavigationResolution || "replace"; - this.urlHandlingStrategy = inject(UrlHandlingStrategy); - this.urlUpdateStrategy = this.options.urlUpdateStrategy || "deferred"; - this.currentUrlTree = new UrlTree(); - this.rawUrlTree = this.currentUrlTree; - this.currentPageId = 0; - this.lastSuccessfulId = -1; - this.routerState = createEmptyState(null); - this.stateMemento = this.createStateMemento(); - } - getCurrentUrlTree() { - return this.currentUrlTree; - } - getRawUrlTree() { - return this.rawUrlTree; - } - restoredState() { - return this.location.getState(); - } - /** - * The ɵrouterPageId of whatever page is currently active in the browser history. This is - * important for computing the target page id for new navigations because we need to ensure each - * page id in the browser history is 1 more than the previous entry. - */ - get browserPageId() { - if (this.canceledNavigationResolution !== "computed") { - return this.currentPageId; - } - return this.restoredState()?.ɵrouterPageId ?? this.currentPageId; - } - getRouterState() { - return this.routerState; - } - createStateMemento() { - return { - rawUrlTree: this.rawUrlTree, - currentUrlTree: this.currentUrlTree, - routerState: this.routerState - }; - } - registerNonRouterCurrentEntryChangeListener(listener) { - return this.location.subscribe((event) => { - if (event["type"] === "popstate") { - listener(event["url"], event.state); - } - }); - } - handleRouterEvent(e, currentTransition) { - if (e instanceof NavigationStart) { - this.stateMemento = this.createStateMemento(); - } else if (e instanceof NavigationSkipped) { - this.rawUrlTree = currentTransition.initialUrl; - } else if (e instanceof RoutesRecognized) { - if (this.urlUpdateStrategy === "eager") { - if (!currentTransition.extras.skipLocationChange) { - const rawUrl = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl); - this.setBrowserUrl(rawUrl, currentTransition); - } - } - } else if (e instanceof BeforeActivateRoutes) { - this.currentUrlTree = currentTransition.finalUrl; - this.rawUrlTree = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl); - this.routerState = currentTransition.targetRouterState; - if (this.urlUpdateStrategy === "deferred") { - if (!currentTransition.extras.skipLocationChange) { - this.setBrowserUrl(this.rawUrlTree, currentTransition); - } - } - } else if (e instanceof NavigationCancel && (e.code === NavigationCancellationCode.GuardRejected || e.code === NavigationCancellationCode.NoDataFromResolver)) { - this.restoreHistory(currentTransition); - } else if (e instanceof NavigationError) { - this.restoreHistory(currentTransition, true); - } else if (e instanceof NavigationEnd) { - this.lastSuccessfulId = e.id; - this.currentPageId = this.browserPageId; - } - } - setBrowserUrl(url, transition) { - const path = this.urlSerializer.serialize(url); - if (this.location.isCurrentPathEqualTo(path) || !!transition.extras.replaceUrl) { - const currentBrowserPageId = this.browserPageId; - const state = __spreadValues(__spreadValues({}, transition.extras.state), this.generateNgRouterState(transition.id, currentBrowserPageId)); - this.location.replaceState(path, "", state); - } else { - const state = __spreadValues(__spreadValues({}, transition.extras.state), this.generateNgRouterState(transition.id, this.browserPageId + 1)); - this.location.go(path, "", state); - } - } - /** - * Performs the necessary rollback action to restore the browser URL to the - * state before the transition. - */ - restoreHistory(navigation, restoringFromCaughtError = false) { - if (this.canceledNavigationResolution === "computed") { - const currentBrowserPageId = this.browserPageId; - const targetPagePosition = this.currentPageId - currentBrowserPageId; - if (targetPagePosition !== 0) { - this.location.historyGo(targetPagePosition); - } else if (this.currentUrlTree === navigation.finalUrl && targetPagePosition === 0) { - this.resetState(navigation); - this.resetUrlToCurrentUrlTree(); - } else { - } - } else if (this.canceledNavigationResolution === "replace") { - if (restoringFromCaughtError) { - this.resetState(navigation); - } - this.resetUrlToCurrentUrlTree(); - } - } - resetState(navigation) { - this.routerState = this.stateMemento.routerState; - this.currentUrlTree = this.stateMemento.currentUrlTree; - this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, navigation.finalUrl ?? this.rawUrlTree); - } - resetUrlToCurrentUrlTree() { - this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree), "", this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId)); - } - generateNgRouterState(navigationId, routerPageId) { - if (this.canceledNavigationResolution === "computed") { - return { - navigationId, - ɵrouterPageId: routerPageId - }; - } - return { - navigationId - }; - } -}; -_HistoryStateManager.ɵfac = /* @__PURE__ */ (() => { - let ɵHistoryStateManager_BaseFactory; - return function HistoryStateManager_Factory(t) { - return (ɵHistoryStateManager_BaseFactory || (ɵHistoryStateManager_BaseFactory = ɵɵgetInheritedFactory(_HistoryStateManager)))(t || _HistoryStateManager); - }; -})(); -_HistoryStateManager.ɵprov = ɵɵdefineInjectable({ - token: _HistoryStateManager, - factory: _HistoryStateManager.ɵfac, - providedIn: "root" -}); -var HistoryStateManager = _HistoryStateManager; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(HistoryStateManager, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var NavigationResult; -(function(NavigationResult2) { - NavigationResult2[NavigationResult2["COMPLETE"] = 0] = "COMPLETE"; - NavigationResult2[NavigationResult2["FAILED"] = 1] = "FAILED"; - NavigationResult2[NavigationResult2["REDIRECTING"] = 2] = "REDIRECTING"; -})(NavigationResult || (NavigationResult = {})); -function afterNextNavigation(router, action) { - router.events.pipe(filter((e) => e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped), map((e) => { - if (e instanceof NavigationEnd || e instanceof NavigationSkipped) { - return NavigationResult.COMPLETE; - } - const redirecting = e instanceof NavigationCancel ? e.code === NavigationCancellationCode.Redirect || e.code === NavigationCancellationCode.SupersededByNewNavigation : false; - return redirecting ? NavigationResult.REDIRECTING : NavigationResult.FAILED; - }), filter((result) => result !== NavigationResult.REDIRECTING), take(1)).subscribe(() => { - action(); - }); -} -function defaultErrorHandler(error) { - throw error; -} -var exactMatchOptions = { - paths: "exact", - fragment: "ignored", - matrixParams: "ignored", - queryParams: "exact" -}; -var subsetMatchOptions = { - paths: "subset", - fragment: "ignored", - matrixParams: "ignored", - queryParams: "subset" -}; -var _Router = class _Router { - get currentUrlTree() { - return this.stateManager.getCurrentUrlTree(); - } - get rawUrlTree() { - return this.stateManager.getRawUrlTree(); - } - /** - * An event stream for routing events. - */ - get events() { - return this._events; - } - /** - * The current state of routing in this NgModule. - */ - get routerState() { - return this.stateManager.getRouterState(); - } - constructor() { - this.disposed = false; - this.isNgZoneEnabled = false; - this.console = inject(Console); - this.stateManager = inject(StateManager); - this.options = inject(ROUTER_CONFIGURATION, { - optional: true - }) || {}; - this.pendingTasks = inject(PendingTasks); - this.urlUpdateStrategy = this.options.urlUpdateStrategy || "deferred"; - this.navigationTransitions = inject(NavigationTransitions); - this.urlSerializer = inject(UrlSerializer); - this.location = inject(Location); - this.urlHandlingStrategy = inject(UrlHandlingStrategy); - this._events = new Subject(); - this.errorHandler = this.options.errorHandler || defaultErrorHandler; - this.navigated = false; - this.routeReuseStrategy = inject(RouteReuseStrategy); - this.onSameUrlNavigation = this.options.onSameUrlNavigation || "ignore"; - this.config = inject(ROUTES, { - optional: true - })?.flat() ?? []; - this.componentInputBindingEnabled = !!inject(INPUT_BINDER, { - optional: true - }); - this.eventsSubscription = new Subscription(); - this.isNgZoneEnabled = inject(NgZone) instanceof NgZone && NgZone.isInAngularZone(); - this.resetConfig(this.config); - this.navigationTransitions.setupNavigations(this, this.currentUrlTree, this.routerState).subscribe({ - error: (e) => { - this.console.warn(ngDevMode ? `Unhandled Navigation Error: ${e}` : e); - } - }); - this.subscribeToNavigationEvents(); - } - subscribeToNavigationEvents() { - const subscription = this.navigationTransitions.events.subscribe((e) => { - try { - const currentTransition = this.navigationTransitions.currentTransition; - const currentNavigation = this.navigationTransitions.currentNavigation; - if (currentTransition !== null && currentNavigation !== null) { - this.stateManager.handleRouterEvent(e, currentNavigation); - if (e instanceof NavigationCancel && e.code !== NavigationCancellationCode.Redirect && e.code !== NavigationCancellationCode.SupersededByNewNavigation) { - this.navigated = true; - } else if (e instanceof NavigationEnd) { - this.navigated = true; - } else if (e instanceof RedirectRequest) { - const mergedTree = this.urlHandlingStrategy.merge(e.url, currentTransition.currentRawUrl); - const extras = { - // Persist transient navigation info from the original navigation request. - info: currentTransition.extras.info, - skipLocationChange: currentTransition.extras.skipLocationChange, - // The URL is already updated at this point if we have 'eager' URL - // updates or if the navigation was triggered by the browser (back - // button, URL bar, etc). We want to replace that item in history - // if the navigation is rejected. - replaceUrl: this.urlUpdateStrategy === "eager" || isBrowserTriggeredNavigation(currentTransition.source) - }; - this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras, { - resolve: currentTransition.resolve, - reject: currentTransition.reject, - promise: currentTransition.promise - }); - } - } - if (isPublicRouterEvent(e)) { - this._events.next(e); - } - } catch (e2) { - this.navigationTransitions.transitionAbortSubject.next(e2); - } - }); - this.eventsSubscription.add(subscription); - } - /** @internal */ - resetRootComponentType(rootComponentType) { - this.routerState.root.component = rootComponentType; - this.navigationTransitions.rootComponentType = rootComponentType; - } - /** - * Sets up the location change listener and performs the initial navigation. - */ - initialNavigation() { - this.setUpLocationChangeListener(); - if (!this.navigationTransitions.hasRequestedNavigation) { - this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, this.stateManager.restoredState()); - } - } - /** - * Sets up the location change listener. This listener detects navigations triggered from outside - * the Router (the browser back/forward buttons, for example) and schedules a corresponding Router - * navigation so that the correct events, guards, etc. are triggered. - */ - setUpLocationChangeListener() { - this.nonRouterCurrentEntryChangeSubscription ??= this.stateManager.registerNonRouterCurrentEntryChangeListener((url, state) => { - setTimeout(() => { - this.navigateToSyncWithBrowser(url, "popstate", state); - }, 0); - }); - } - /** - * Schedules a router navigation to synchronize Router state with the browser state. - * - * This is done as a response to a popstate event and the initial navigation. These - * two scenarios represent times when the browser URL/state has been updated and - * the Router needs to respond to ensure its internal state matches. - */ - navigateToSyncWithBrowser(url, source, state) { - const extras = { - replaceUrl: true - }; - const restoredState = state?.navigationId ? state : null; - if (state) { - const stateCopy = __spreadValues({}, state); - delete stateCopy.navigationId; - delete stateCopy.ɵrouterPageId; - if (Object.keys(stateCopy).length !== 0) { - extras.state = stateCopy; - } - } - const urlTree = this.parseUrl(url); - this.scheduleNavigation(urlTree, source, restoredState, extras); - } - /** The current URL. */ - get url() { - return this.serializeUrl(this.currentUrlTree); - } - /** - * Returns the current `Navigation` object when the router is navigating, - * and `null` when idle. - */ - getCurrentNavigation() { - return this.navigationTransitions.currentNavigation; - } - /** - * The `Navigation` object of the most recent navigation to succeed and `null` if there - * has not been a successful navigation yet. - */ - get lastSuccessfulNavigation() { - return this.navigationTransitions.lastSuccessfulNavigation; - } - /** - * Resets the route configuration used for navigation and generating links. - * - * @param config The route array for the new configuration. - * - * @usageNotes - * - * ``` - * router.resetConfig([ - * { path: 'team/:id', component: TeamCmp, children: [ - * { path: 'simple', component: SimpleCmp }, - * { path: 'user/:name', component: UserCmp } - * ]} - * ]); - * ``` - */ - resetConfig(config) { - (typeof ngDevMode === "undefined" || ngDevMode) && validateConfig(config); - this.config = config.map(standardizeConfig); - this.navigated = false; - } - /** @nodoc */ - ngOnDestroy() { - this.dispose(); - } - /** Disposes of the router. */ - dispose() { - this.navigationTransitions.complete(); - if (this.nonRouterCurrentEntryChangeSubscription) { - this.nonRouterCurrentEntryChangeSubscription.unsubscribe(); - this.nonRouterCurrentEntryChangeSubscription = void 0; - } - this.disposed = true; - this.eventsSubscription.unsubscribe(); - } - /** - * Appends URL segments to the current URL tree to create a new URL tree. - * - * @param commands An array of URL fragments with which to construct the new URL tree. - * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path - * segments, followed by the parameters for each segment. - * The fragments are applied to the current URL tree or the one provided in the `relativeTo` - * property of the options object, if supplied. - * @param navigationExtras Options that control the navigation strategy. - * @returns The new URL tree. - * - * @usageNotes - * - * ``` - * // create /team/33/user/11 - * router.createUrlTree(['/team', 33, 'user', 11]); - * - * // create /team/33;expand=true/user/11 - * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]); - * - * // you can collapse static segments like this (this works only with the first passed-in value): - * router.createUrlTree(['/team/33/user', userId]); - * - * // If the first segment can contain slashes, and you do not want the router to split it, - * // you can do the following: - * router.createUrlTree([{segmentPath: '/one/two'}]); - * - * // create /team/33/(user/11//right:chat) - * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]); - * - * // remove the right secondary node - * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]); - * - * // assuming the current url is `/team/33/user/11` and the route points to `user/11` - * - * // navigate to /team/33/user/11/details - * router.createUrlTree(['details'], {relativeTo: route}); - * - * // navigate to /team/33/user/22 - * router.createUrlTree(['../22'], {relativeTo: route}); - * - * // navigate to /team/44/user/22 - * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route}); - * - * Note that a value of `null` or `undefined` for `relativeTo` indicates that the - * tree should be created relative to the root. - * ``` - */ - createUrlTree(commands, navigationExtras = {}) { - const { - relativeTo, - queryParams, - fragment, - queryParamsHandling, - preserveFragment - } = navigationExtras; - const f = preserveFragment ? this.currentUrlTree.fragment : fragment; - let q = null; - switch (queryParamsHandling) { - case "merge": - q = __spreadValues(__spreadValues({}, this.currentUrlTree.queryParams), queryParams); - break; - case "preserve": - q = this.currentUrlTree.queryParams; - break; - default: - q = queryParams || null; - } - if (q !== null) { - q = this.removeEmptyProps(q); - } - let relativeToUrlSegmentGroup; - try { - const relativeToSnapshot = relativeTo ? relativeTo.snapshot : this.routerState.snapshot.root; - relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeToSnapshot); - } catch (e) { - if (typeof commands[0] !== "string" || !commands[0].startsWith("/")) { - commands = []; - } - relativeToUrlSegmentGroup = this.currentUrlTree.root; - } - return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, q, f ?? null); - } - /** - * Navigates to a view using an absolute route path. - * - * @param url An absolute path for a defined route. The function does not apply any delta to the - * current URL. - * @param extras An object containing properties that modify the navigation strategy. - * - * @returns A Promise that resolves to 'true' when navigation succeeds, - * to 'false' when navigation fails, or is rejected on error. - * - * @usageNotes - * - * The following calls request navigation to an absolute path. - * - * ``` - * router.navigateByUrl("/team/33/user/11"); - * - * // Navigate without updating the URL - * router.navigateByUrl("/team/33/user/11", { skipLocationChange: true }); - * ``` - * - * @see [Routing and Navigation guide](guide/router) - * - */ - navigateByUrl(url, extras = { - skipLocationChange: false - }) { - if (typeof ngDevMode === "undefined" || ngDevMode) { - if (this.isNgZoneEnabled && !NgZone.isInAngularZone()) { - this.console.warn(`Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?`); - } - } - const urlTree = isUrlTree(url) ? url : this.parseUrl(url); - const mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree); - return this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras); - } - /** - * Navigate based on the provided array of commands and a starting point. - * If no starting route is provided, the navigation is absolute. - * - * @param commands An array of URL fragments with which to construct the target URL. - * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path - * segments, followed by the parameters for each segment. - * The fragments are applied to the current URL or the one provided in the `relativeTo` property - * of the options object, if supplied. - * @param extras An options object that determines how the URL should be constructed or - * interpreted. - * - * @returns A Promise that resolves to `true` when navigation succeeds, or `false` when navigation - * fails. The Promise is rejected when an error occurs if `resolveNavigationPromiseOnError` is - * not `true`. - * - * @usageNotes - * - * The following calls request navigation to a dynamic route path relative to the current URL. - * - * ``` - * router.navigate(['team', 33, 'user', 11], {relativeTo: route}); - * - * // Navigate without updating the URL, overriding the default behavior - * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true}); - * ``` - * - * @see [Routing and Navigation guide](guide/router) - * - */ - navigate(commands, extras = { - skipLocationChange: false - }) { - validateCommands(commands); - return this.navigateByUrl(this.createUrlTree(commands, extras), extras); - } - /** Serializes a `UrlTree` into a string */ - serializeUrl(url) { - return this.urlSerializer.serialize(url); - } - /** Parses a string into a `UrlTree` */ - parseUrl(url) { - try { - return this.urlSerializer.parse(url); - } catch { - return this.urlSerializer.parse("/"); - } - } - isActive(url, matchOptions) { - let options; - if (matchOptions === true) { - options = __spreadValues({}, exactMatchOptions); - } else if (matchOptions === false) { - options = __spreadValues({}, subsetMatchOptions); - } else { - options = matchOptions; - } - if (isUrlTree(url)) { - return containsTree(this.currentUrlTree, url, options); - } - const urlTree = this.parseUrl(url); - return containsTree(this.currentUrlTree, urlTree, options); - } - removeEmptyProps(params) { - return Object.entries(params).reduce((result, [key, value]) => { - if (value !== null && value !== void 0) { - result[key] = value; - } - return result; - }, {}); - } - scheduleNavigation(rawUrl, source, restoredState, extras, priorPromise) { - if (this.disposed) { - return Promise.resolve(false); - } - let resolve; - let reject; - let promise; - if (priorPromise) { - resolve = priorPromise.resolve; - reject = priorPromise.reject; - promise = priorPromise.promise; - } else { - promise = new Promise((res, rej) => { - resolve = res; - reject = rej; - }); - } - const taskId = this.pendingTasks.add(); - afterNextNavigation(this, () => { - queueMicrotask(() => this.pendingTasks.remove(taskId)); - }); - this.navigationTransitions.handleNavigationRequest({ - source, - restoredState, - currentUrlTree: this.currentUrlTree, - currentRawUrl: this.currentUrlTree, - rawUrl, - extras, - resolve, - reject, - promise, - currentSnapshot: this.routerState.snapshot, - currentRouterState: this.routerState - }); - return promise.catch((e) => { - return Promise.reject(e); - }); - } -}; -_Router.ɵfac = function Router_Factory(t) { - return new (t || _Router)(); -}; -_Router.ɵprov = ɵɵdefineInjectable({ - token: _Router, - factory: _Router.ɵfac, - providedIn: "root" -}); -var Router = _Router; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Router, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], () => [], null); -})(); -function validateCommands(commands) { - for (let i = 0; i < commands.length; i++) { - const cmd = commands[i]; - if (cmd == null) { - throw new RuntimeError(4008, (typeof ngDevMode === "undefined" || ngDevMode) && `The requested path contains ${cmd} segment at index ${i}`); - } - } -} -function isPublicRouterEvent(e) { - return !(e instanceof BeforeActivateRoutes) && !(e instanceof RedirectRequest); -} -var _RouterLink = class _RouterLink { - constructor(router, route, tabIndexAttribute, renderer, el, locationStrategy) { - this.router = router; - this.route = route; - this.tabIndexAttribute = tabIndexAttribute; - this.renderer = renderer; - this.el = el; - this.locationStrategy = locationStrategy; - this.href = null; - this.commands = null; - this.onChanges = new Subject(); - this.preserveFragment = false; - this.skipLocationChange = false; - this.replaceUrl = false; - const tagName = el.nativeElement.tagName?.toLowerCase(); - this.isAnchorElement = tagName === "a" || tagName === "area"; - if (this.isAnchorElement) { - this.subscription = router.events.subscribe((s) => { - if (s instanceof NavigationEnd) { - this.updateHref(); - } - }); - } else { - this.setTabIndexIfNotOnNativeEl("0"); - } - } - /** - * Modifies the tab index if there was not a tabindex attribute on the element during - * instantiation. - */ - setTabIndexIfNotOnNativeEl(newTabIndex) { - if (this.tabIndexAttribute != null || this.isAnchorElement) { - return; - } - this.applyAttributeValue("tabindex", newTabIndex); - } - /** @nodoc */ - ngOnChanges(changes) { - if (this.isAnchorElement) { - this.updateHref(); - } - this.onChanges.next(this); - } - /** - * Commands to pass to {@link Router#createUrlTree}. - * - **array**: commands to pass to {@link Router#createUrlTree}. - * - **string**: shorthand for array of commands with just the string, i.e. `['/route']` - * - **null|undefined**: effectively disables the `routerLink` - * @see {@link Router#createUrlTree} - */ - set routerLink(commands) { - if (commands != null) { - this.commands = Array.isArray(commands) ? commands : [commands]; - this.setTabIndexIfNotOnNativeEl("0"); - } else { - this.commands = null; - this.setTabIndexIfNotOnNativeEl(null); - } - } - /** @nodoc */ - onClick(button, ctrlKey, shiftKey, altKey, metaKey) { - const urlTree = this.urlTree; - if (urlTree === null) { - return true; - } - if (this.isAnchorElement) { - if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) { - return true; - } - if (typeof this.target === "string" && this.target != "_self") { - return true; - } - } - const extras = { - skipLocationChange: this.skipLocationChange, - replaceUrl: this.replaceUrl, - state: this.state, - info: this.info - }; - this.router.navigateByUrl(urlTree, extras); - return !this.isAnchorElement; - } - /** @nodoc */ - ngOnDestroy() { - this.subscription?.unsubscribe(); - } - updateHref() { - const urlTree = this.urlTree; - this.href = urlTree !== null && this.locationStrategy ? this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(urlTree)) : null; - const sanitizedValue = this.href === null ? null : ( - // This class represents a directive that can be added to both `` elements, - // as well as other elements. As a result, we can't define security context at - // compile time. So the security context is deferred to runtime. - // The `ɵɵsanitizeUrlOrResourceUrl` selects the necessary sanitizer function - // based on the tag and property names. The logic mimics the one from - // `packages/compiler/src/schema/dom_security_schema.ts`, which is used at compile time. - // - // Note: we should investigate whether we can switch to using `@HostBinding('attr.href')` - // instead of applying a value via a renderer, after a final merge of the - // `RouterLinkWithHref` directive. - ɵɵsanitizeUrlOrResourceUrl(this.href, this.el.nativeElement.tagName.toLowerCase(), "href") - ); - this.applyAttributeValue("href", sanitizedValue); - } - applyAttributeValue(attrName, attrValue) { - const renderer = this.renderer; - const nativeElement = this.el.nativeElement; - if (attrValue !== null) { - renderer.setAttribute(nativeElement, attrName, attrValue); - } else { - renderer.removeAttribute(nativeElement, attrName); - } - } - get urlTree() { - if (this.commands === null) { - return null; - } - return this.router.createUrlTree(this.commands, { - // If the `relativeTo` input is not defined, we want to use `this.route` by default. - // Otherwise, we should use the value provided by the user in the input. - relativeTo: this.relativeTo !== void 0 ? this.relativeTo : this.route, - queryParams: this.queryParams, - fragment: this.fragment, - queryParamsHandling: this.queryParamsHandling, - preserveFragment: this.preserveFragment - }); - } -}; -_RouterLink.ɵfac = function RouterLink_Factory(t) { - return new (t || _RouterLink)(ɵɵdirectiveInject(Router), ɵɵdirectiveInject(ActivatedRoute), ɵɵinjectAttribute("tabindex"), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(LocationStrategy)); -}; -_RouterLink.ɵdir = ɵɵdefineDirective({ - type: _RouterLink, - selectors: [["", "routerLink", ""]], - hostVars: 1, - hostBindings: function RouterLink_HostBindings(rf, ctx) { - if (rf & 1) { - ɵɵlistener("click", function RouterLink_click_HostBindingHandler($event) { - return ctx.onClick($event.button, $event.ctrlKey, $event.shiftKey, $event.altKey, $event.metaKey); - }); - } - if (rf & 2) { - ɵɵattribute("target", ctx.target); - } - }, - inputs: { - target: "target", - queryParams: "queryParams", - fragment: "fragment", - queryParamsHandling: "queryParamsHandling", - state: "state", - info: "info", - relativeTo: "relativeTo", - preserveFragment: [InputFlags.HasDecoratorInputTransform, "preserveFragment", "preserveFragment", booleanAttribute], - skipLocationChange: [InputFlags.HasDecoratorInputTransform, "skipLocationChange", "skipLocationChange", booleanAttribute], - replaceUrl: [InputFlags.HasDecoratorInputTransform, "replaceUrl", "replaceUrl", booleanAttribute], - routerLink: "routerLink" - }, - standalone: true, - features: [ɵɵInputTransformsFeature, ɵɵNgOnChangesFeature] -}); -var RouterLink = _RouterLink; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterLink, [{ - type: Directive, - args: [{ - selector: "[routerLink]", - standalone: true - }] - }], () => [{ - type: Router - }, { - type: ActivatedRoute - }, { - type: void 0, - decorators: [{ - type: Attribute, - args: ["tabindex"] - }] - }, { - type: Renderer2 - }, { - type: ElementRef - }, { - type: LocationStrategy - }], { - target: [{ - type: HostBinding, - args: ["attr.target"] - }, { - type: Input - }], - queryParams: [{ - type: Input - }], - fragment: [{ - type: Input - }], - queryParamsHandling: [{ - type: Input - }], - state: [{ - type: Input - }], - info: [{ - type: Input - }], - relativeTo: [{ - type: Input - }], - preserveFragment: [{ - type: Input, - args: [{ - transform: booleanAttribute - }] - }], - skipLocationChange: [{ - type: Input, - args: [{ - transform: booleanAttribute - }] - }], - replaceUrl: [{ - type: Input, - args: [{ - transform: booleanAttribute - }] - }], - routerLink: [{ - type: Input - }], - onClick: [{ - type: HostListener, - args: ["click", ["$event.button", "$event.ctrlKey", "$event.shiftKey", "$event.altKey", "$event.metaKey"]] - }] - }); -})(); -var _RouterLinkActive = class _RouterLinkActive { - get isActive() { - return this._isActive; - } - constructor(router, element, renderer, cdr, link) { - this.router = router; - this.element = element; - this.renderer = renderer; - this.cdr = cdr; - this.link = link; - this.classes = []; - this._isActive = false; - this.routerLinkActiveOptions = { - exact: false - }; - this.isActiveChange = new EventEmitter(); - this.routerEventsSubscription = router.events.subscribe((s) => { - if (s instanceof NavigationEnd) { - this.update(); - } - }); - } - /** @nodoc */ - ngAfterContentInit() { - of(this.links.changes, of(null)).pipe(mergeAll()).subscribe((_) => { - this.update(); - this.subscribeToEachLinkOnChanges(); - }); - } - subscribeToEachLinkOnChanges() { - this.linkInputChangesSubscription?.unsubscribe(); - const allLinkChanges = [...this.links.toArray(), this.link].filter((link) => !!link).map((link) => link.onChanges); - this.linkInputChangesSubscription = from(allLinkChanges).pipe(mergeAll()).subscribe((link) => { - if (this._isActive !== this.isLinkActive(this.router)(link)) { - this.update(); - } - }); - } - set routerLinkActive(data) { - const classes = Array.isArray(data) ? data : data.split(" "); - this.classes = classes.filter((c) => !!c); - } - /** @nodoc */ - ngOnChanges(changes) { - this.update(); - } - /** @nodoc */ - ngOnDestroy() { - this.routerEventsSubscription.unsubscribe(); - this.linkInputChangesSubscription?.unsubscribe(); - } - update() { - if (!this.links || !this.router.navigated) - return; - queueMicrotask(() => { - const hasActiveLinks = this.hasActiveLinks(); - if (this._isActive !== hasActiveLinks) { - this._isActive = hasActiveLinks; - this.cdr.markForCheck(); - this.classes.forEach((c) => { - if (hasActiveLinks) { - this.renderer.addClass(this.element.nativeElement, c); - } else { - this.renderer.removeClass(this.element.nativeElement, c); - } - }); - if (hasActiveLinks && this.ariaCurrentWhenActive !== void 0) { - this.renderer.setAttribute(this.element.nativeElement, "aria-current", this.ariaCurrentWhenActive.toString()); - } else { - this.renderer.removeAttribute(this.element.nativeElement, "aria-current"); - } - this.isActiveChange.emit(hasActiveLinks); - } - }); - } - isLinkActive(router) { - const options = isActiveMatchOptions(this.routerLinkActiveOptions) ? this.routerLinkActiveOptions : ( - // While the types should disallow `undefined` here, it's possible without strict inputs - this.routerLinkActiveOptions.exact || false - ); - return (link) => { - const urlTree = link.urlTree; - return urlTree ? router.isActive(urlTree, options) : false; - }; - } - hasActiveLinks() { - const isActiveCheckFn = this.isLinkActive(this.router); - return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn); - } -}; -_RouterLinkActive.ɵfac = function RouterLinkActive_Factory(t) { - return new (t || _RouterLinkActive)(ɵɵdirectiveInject(Router), ɵɵdirectiveInject(ElementRef), ɵɵdirectiveInject(Renderer2), ɵɵdirectiveInject(ChangeDetectorRef), ɵɵdirectiveInject(RouterLink, 8)); -}; -_RouterLinkActive.ɵdir = ɵɵdefineDirective({ - type: _RouterLinkActive, - selectors: [["", "routerLinkActive", ""]], - contentQueries: function RouterLinkActive_ContentQueries(rf, ctx, dirIndex) { - if (rf & 1) { - ɵɵcontentQuery(dirIndex, RouterLink, 5); - } - if (rf & 2) { - let _t; - ɵɵqueryRefresh(_t = ɵɵloadQuery()) && (ctx.links = _t); - } - }, - inputs: { - routerLinkActiveOptions: "routerLinkActiveOptions", - ariaCurrentWhenActive: "ariaCurrentWhenActive", - routerLinkActive: "routerLinkActive" - }, - outputs: { - isActiveChange: "isActiveChange" - }, - exportAs: ["routerLinkActive"], - standalone: true, - features: [ɵɵNgOnChangesFeature] -}); -var RouterLinkActive = _RouterLinkActive; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterLinkActive, [{ - type: Directive, - args: [{ - selector: "[routerLinkActive]", - exportAs: "routerLinkActive", - standalone: true - }] - }], () => [{ - type: Router - }, { - type: ElementRef - }, { - type: Renderer2 - }, { - type: ChangeDetectorRef - }, { - type: RouterLink, - decorators: [{ - type: Optional - }] - }], { - links: [{ - type: ContentChildren, - args: [RouterLink, { - descendants: true - }] - }], - routerLinkActiveOptions: [{ - type: Input - }], - ariaCurrentWhenActive: [{ - type: Input - }], - isActiveChange: [{ - type: Output - }], - routerLinkActive: [{ - type: Input - }] - }); -})(); -function isActiveMatchOptions(options) { - return !!options.paths; -} -var PreloadingStrategy = class { -}; -var _PreloadAllModules = class _PreloadAllModules { - preload(route, fn) { - return fn().pipe(catchError(() => of(null))); - } -}; -_PreloadAllModules.ɵfac = function PreloadAllModules_Factory(t) { - return new (t || _PreloadAllModules)(); -}; -_PreloadAllModules.ɵprov = ɵɵdefineInjectable({ - token: _PreloadAllModules, - factory: _PreloadAllModules.ɵfac, - providedIn: "root" -}); -var PreloadAllModules = _PreloadAllModules; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PreloadAllModules, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var _NoPreloading = class _NoPreloading { - preload(route, fn) { - return of(null); - } -}; -_NoPreloading.ɵfac = function NoPreloading_Factory(t) { - return new (t || _NoPreloading)(); -}; -_NoPreloading.ɵprov = ɵɵdefineInjectable({ - token: _NoPreloading, - factory: _NoPreloading.ɵfac, - providedIn: "root" -}); -var NoPreloading = _NoPreloading; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(NoPreloading, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], null, null); -})(); -var _RouterPreloader = class _RouterPreloader { - constructor(router, compiler, injector, preloadingStrategy, loader) { - this.router = router; - this.injector = injector; - this.preloadingStrategy = preloadingStrategy; - this.loader = loader; - } - setUpPreloading() { - this.subscription = this.router.events.pipe(filter((e) => e instanceof NavigationEnd), concatMap(() => this.preload())).subscribe(() => { - }); - } - preload() { - return this.processRoutes(this.injector, this.router.config); - } - /** @nodoc */ - ngOnDestroy() { - if (this.subscription) { - this.subscription.unsubscribe(); - } - } - processRoutes(injector, routes) { - const res = []; - for (const route of routes) { - if (route.providers && !route._injector) { - route._injector = createEnvironmentInjector(route.providers, injector, `Route: ${route.path}`); - } - const injectorForCurrentRoute = route._injector ?? injector; - const injectorForChildren = route._loadedInjector ?? injectorForCurrentRoute; - if (route.loadChildren && !route._loadedRoutes && route.canLoad === void 0 || route.loadComponent && !route._loadedComponent) { - res.push(this.preloadConfig(injectorForCurrentRoute, route)); - } - if (route.children || route._loadedRoutes) { - res.push(this.processRoutes(injectorForChildren, route.children ?? route._loadedRoutes)); - } - } - return from(res).pipe(mergeAll()); - } - preloadConfig(injector, route) { - return this.preloadingStrategy.preload(route, () => { - let loadedChildren$; - if (route.loadChildren && route.canLoad === void 0) { - loadedChildren$ = this.loader.loadChildren(injector, route); - } else { - loadedChildren$ = of(null); - } - const recursiveLoadChildren$ = loadedChildren$.pipe(mergeMap((config) => { - if (config === null) { - return of(void 0); - } - route._loadedRoutes = config.routes; - route._loadedInjector = config.injector; - return this.processRoutes(config.injector ?? injector, config.routes); - })); - if (route.loadComponent && !route._loadedComponent) { - const loadComponent$ = this.loader.loadComponent(route); - return from([recursiveLoadChildren$, loadComponent$]).pipe(mergeAll()); - } else { - return recursiveLoadChildren$; - } - }); - } -}; -_RouterPreloader.ɵfac = function RouterPreloader_Factory(t) { - return new (t || _RouterPreloader)(ɵɵinject(Router), ɵɵinject(Compiler), ɵɵinject(EnvironmentInjector), ɵɵinject(PreloadingStrategy), ɵɵinject(RouterConfigLoader)); -}; -_RouterPreloader.ɵprov = ɵɵdefineInjectable({ - token: _RouterPreloader, - factory: _RouterPreloader.ɵfac, - providedIn: "root" -}); -var RouterPreloader = _RouterPreloader; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterPreloader, [{ - type: Injectable, - args: [{ - providedIn: "root" - }] - }], () => [{ - type: Router - }, { - type: Compiler - }, { - type: EnvironmentInjector - }, { - type: PreloadingStrategy - }, { - type: RouterConfigLoader - }], null); -})(); -var ROUTER_SCROLLER = new InjectionToken(""); -var _RouterScroller = class _RouterScroller { - /** @nodoc */ - constructor(urlSerializer, transitions, viewportScroller, zone, options = {}) { - this.urlSerializer = urlSerializer; - this.transitions = transitions; - this.viewportScroller = viewportScroller; - this.zone = zone; - this.options = options; - this.lastId = 0; - this.lastSource = "imperative"; - this.restoredId = 0; - this.store = {}; - options.scrollPositionRestoration ||= "disabled"; - options.anchorScrolling ||= "disabled"; - } - init() { - if (this.options.scrollPositionRestoration !== "disabled") { - this.viewportScroller.setHistoryScrollRestoration("manual"); - } - this.routerEventsSubscription = this.createScrollEvents(); - this.scrollEventsSubscription = this.consumeScrollEvents(); - } - createScrollEvents() { - return this.transitions.events.subscribe((e) => { - if (e instanceof NavigationStart) { - this.store[this.lastId] = this.viewportScroller.getScrollPosition(); - this.lastSource = e.navigationTrigger; - this.restoredId = e.restoredState ? e.restoredState.navigationId : 0; - } else if (e instanceof NavigationEnd) { - this.lastId = e.id; - this.scheduleScrollEvent(e, this.urlSerializer.parse(e.urlAfterRedirects).fragment); - } else if (e instanceof NavigationSkipped && e.code === NavigationSkippedCode.IgnoredSameUrlNavigation) { - this.lastSource = void 0; - this.restoredId = 0; - this.scheduleScrollEvent(e, this.urlSerializer.parse(e.url).fragment); - } - }); - } - consumeScrollEvents() { - return this.transitions.events.subscribe((e) => { - if (!(e instanceof Scroll)) - return; - if (e.position) { - if (this.options.scrollPositionRestoration === "top") { - this.viewportScroller.scrollToPosition([0, 0]); - } else if (this.options.scrollPositionRestoration === "enabled") { - this.viewportScroller.scrollToPosition(e.position); - } - } else { - if (e.anchor && this.options.anchorScrolling === "enabled") { - this.viewportScroller.scrollToAnchor(e.anchor); - } else if (this.options.scrollPositionRestoration !== "disabled") { - this.viewportScroller.scrollToPosition([0, 0]); - } - } - }); - } - scheduleScrollEvent(routerEvent, anchor) { - this.zone.runOutsideAngular(() => { - setTimeout(() => { - this.zone.run(() => { - this.transitions.events.next(new Scroll(routerEvent, this.lastSource === "popstate" ? this.store[this.restoredId] : null, anchor)); - }); - }, 0); - }); - } - /** @nodoc */ - ngOnDestroy() { - this.routerEventsSubscription?.unsubscribe(); - this.scrollEventsSubscription?.unsubscribe(); - } -}; -_RouterScroller.ɵfac = function RouterScroller_Factory(t) { - ɵɵinvalidFactory(); -}; -_RouterScroller.ɵprov = ɵɵdefineInjectable({ - token: _RouterScroller, - factory: _RouterScroller.ɵfac -}); -var RouterScroller = _RouterScroller; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterScroller, [{ - type: Injectable - }], () => [{ - type: UrlSerializer - }, { - type: NavigationTransitions - }, { - type: ViewportScroller - }, { - type: NgZone - }, { - type: void 0 - }], null); -})(); -function provideRouter(routes, ...features) { - return makeEnvironmentProviders([{ - provide: ROUTES, - multi: true, - useValue: routes - }, typeof ngDevMode === "undefined" || ngDevMode ? { - provide: ROUTER_IS_PROVIDED, - useValue: true - } : [], { - provide: ActivatedRoute, - useFactory: rootRoute, - deps: [Router] - }, { - provide: APP_BOOTSTRAP_LISTENER, - multi: true, - useFactory: getBootstrapListener - }, features.map((feature) => feature.ɵproviders)]); -} -function rootRoute(router) { - return router.routerState.root; -} -function routerFeature(kind, providers) { - return { - ɵkind: kind, - ɵproviders: providers - }; -} -var ROUTER_IS_PROVIDED = new InjectionToken("", { - providedIn: "root", - factory: () => false -}); -var routerIsProvidedDevModeCheck = { - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useFactory() { - return () => { - if (!inject(ROUTER_IS_PROVIDED)) { - console.warn("`provideRoutes` was called without `provideRouter` or `RouterModule.forRoot`. This is likely a mistake."); - } - }; - } -}; -function provideRoutes(routes) { - return [{ - provide: ROUTES, - multi: true, - useValue: routes - }, typeof ngDevMode === "undefined" || ngDevMode ? routerIsProvidedDevModeCheck : []]; -} -function withInMemoryScrolling(options = {}) { - const providers = [{ - provide: ROUTER_SCROLLER, - useFactory: () => { - const viewportScroller = inject(ViewportScroller); - const zone = inject(NgZone); - const transitions = inject(NavigationTransitions); - const urlSerializer = inject(UrlSerializer); - return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, options); - } - }]; - return routerFeature(4, providers); -} -function getBootstrapListener() { - const injector = inject(Injector); - return (bootstrappedComponentRef) => { - const ref = injector.get(ApplicationRef); - if (bootstrappedComponentRef !== ref.components[0]) { - return; - } - const router = injector.get(Router); - const bootstrapDone = injector.get(BOOTSTRAP_DONE); - if (injector.get(INITIAL_NAVIGATION) === 1) { - router.initialNavigation(); - } - injector.get(ROUTER_PRELOADER, null, InjectFlags.Optional)?.setUpPreloading(); - injector.get(ROUTER_SCROLLER, null, InjectFlags.Optional)?.init(); - router.resetRootComponentType(ref.componentTypes[0]); - if (!bootstrapDone.closed) { - bootstrapDone.next(); - bootstrapDone.complete(); - bootstrapDone.unsubscribe(); - } - }; -} -var BOOTSTRAP_DONE = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "bootstrap done indicator" : "", { - factory: () => { - return new Subject(); - } -}); -var INITIAL_NAVIGATION = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "initial navigation" : "", { - providedIn: "root", - factory: () => 1 - /* InitialNavigation.EnabledNonBlocking */ -}); -function withEnabledBlockingInitialNavigation() { - const providers = [{ - provide: INITIAL_NAVIGATION, - useValue: 0 - /* InitialNavigation.EnabledBlocking */ - }, { - provide: APP_INITIALIZER, - multi: true, - deps: [Injector], - useFactory: (injector) => { - const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve()); - return () => { - return locationInitialized.then(() => { - return new Promise((resolve) => { - const router = injector.get(Router); - const bootstrapDone = injector.get(BOOTSTRAP_DONE); - afterNextNavigation(router, () => { - resolve(true); - }); - injector.get(NavigationTransitions).afterPreactivation = () => { - resolve(true); - return bootstrapDone.closed ? of(void 0) : bootstrapDone; - }; - router.initialNavigation(); - }); - }); - }; - } - }]; - return routerFeature(2, providers); -} -function withDisabledInitialNavigation() { - const providers = [{ - provide: APP_INITIALIZER, - multi: true, - useFactory: () => { - const router = inject(Router); - return () => { - router.setUpLocationChangeListener(); - }; - } - }, { - provide: INITIAL_NAVIGATION, - useValue: 2 - /* InitialNavigation.Disabled */ - }]; - return routerFeature(3, providers); -} -function withDebugTracing() { - let providers = []; - if (typeof ngDevMode === "undefined" || ngDevMode) { - providers = [{ - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useFactory: () => { - const router = inject(Router); - return () => router.events.subscribe((e) => { - console.group?.(`Router Event: ${e.constructor.name}`); - console.log(stringifyEvent(e)); - console.log(e); - console.groupEnd?.(); - }); - } - }]; - } else { - providers = []; - } - return routerFeature(1, providers); -} -var ROUTER_PRELOADER = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "router preloader" : ""); -function withPreloading(preloadingStrategy) { - const providers = [{ - provide: ROUTER_PRELOADER, - useExisting: RouterPreloader - }, { - provide: PreloadingStrategy, - useExisting: preloadingStrategy - }]; - return routerFeature(0, providers); -} -function withRouterConfig(options) { - const providers = [{ - provide: ROUTER_CONFIGURATION, - useValue: options - }]; - return routerFeature(5, providers); -} -function withHashLocation() { - const providers = [{ - provide: LocationStrategy, - useClass: HashLocationStrategy - }]; - return routerFeature(6, providers); -} -function withNavigationErrorHandler(fn) { - const providers = [{ - provide: ENVIRONMENT_INITIALIZER, - multi: true, - useValue: () => { - const injector = inject(EnvironmentInjector); - inject(Router).events.subscribe((e) => { - if (e instanceof NavigationError) { - runInInjectionContext(injector, () => fn(e)); - } - }); - } - }]; - return routerFeature(7, providers); -} -function withComponentInputBinding() { - const providers = [RoutedComponentInputBinder, { - provide: INPUT_BINDER, - useExisting: RoutedComponentInputBinder - }]; - return routerFeature(8, providers); -} -function withViewTransitions(options) { - const providers = [{ - provide: CREATE_VIEW_TRANSITION, - useValue: createViewTransition - }, { - provide: VIEW_TRANSITION_OPTIONS, - useValue: __spreadValues({ - skipNextTransition: !!options?.skipInitialTransition - }, options) - }]; - return routerFeature(9, providers); -} -var ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent]; -var ROUTER_FORROOT_GUARD = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "router duplicate forRoot guard" : "ROUTER_FORROOT_GUARD"); -var ROUTER_PROVIDERS = [ - Location, - { - provide: UrlSerializer, - useClass: DefaultUrlSerializer - }, - Router, - ChildrenOutletContexts, - { - provide: ActivatedRoute, - useFactory: rootRoute, - deps: [Router] - }, - RouterConfigLoader, - // Only used to warn when `provideRoutes` is used without `RouterModule` or `provideRouter`. Can - // be removed when `provideRoutes` is removed. - typeof ngDevMode === "undefined" || ngDevMode ? { - provide: ROUTER_IS_PROVIDED, - useValue: true - } : [] -]; -var _RouterModule = class _RouterModule { - constructor(guard) { - } - /** - * Creates and configures a module with all the router providers and directives. - * Optionally sets up an application listener to perform an initial navigation. - * - * When registering the NgModule at the root, import as follows: - * - * ``` - * @NgModule({ - * imports: [RouterModule.forRoot(ROUTES)] - * }) - * class MyNgModule {} - * ``` - * - * @param routes An array of `Route` objects that define the navigation paths for the application. - * @param config An `ExtraOptions` configuration object that controls how navigation is performed. - * @return The new `NgModule`. - * - */ - static forRoot(routes, config) { - return { - ngModule: _RouterModule, - providers: [ROUTER_PROVIDERS, typeof ngDevMode === "undefined" || ngDevMode ? config?.enableTracing ? withDebugTracing().ɵproviders : [] : [], { - provide: ROUTES, - multi: true, - useValue: routes - }, { - provide: ROUTER_FORROOT_GUARD, - useFactory: provideForRootGuard, - deps: [[Router, new Optional(), new SkipSelf()]] - }, { - provide: ROUTER_CONFIGURATION, - useValue: config ? config : {} - }, config?.useHash ? provideHashLocationStrategy() : providePathLocationStrategy(), provideRouterScroller(), config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [], config?.initialNavigation ? provideInitialNavigation(config) : [], config?.bindToComponentInputs ? withComponentInputBinding().ɵproviders : [], config?.enableViewTransitions ? withViewTransitions().ɵproviders : [], provideRouterInitializer()] - }; - } - /** - * Creates a module with all the router directives and a provider registering routes, - * without creating a new Router service. - * When registering for submodules and lazy-loaded submodules, create the NgModule as follows: - * - * ``` - * @NgModule({ - * imports: [RouterModule.forChild(ROUTES)] - * }) - * class MyNgModule {} - * ``` - * - * @param routes An array of `Route` objects that define the navigation paths for the submodule. - * @return The new NgModule. - * - */ - static forChild(routes) { - return { - ngModule: _RouterModule, - providers: [{ - provide: ROUTES, - multi: true, - useValue: routes - }] - }; - } -}; -_RouterModule.ɵfac = function RouterModule_Factory(t) { - return new (t || _RouterModule)(ɵɵinject(ROUTER_FORROOT_GUARD, 8)); -}; -_RouterModule.ɵmod = ɵɵdefineNgModule({ - type: _RouterModule, - imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent], - exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent] -}); -_RouterModule.ɵinj = ɵɵdefineInjector({}); -var RouterModule = _RouterModule; -(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(RouterModule, [{ - type: NgModule, - args: [{ - imports: ROUTER_DIRECTIVES, - exports: ROUTER_DIRECTIVES - }] - }], () => [{ - type: void 0, - decorators: [{ - type: Optional - }, { - type: Inject, - args: [ROUTER_FORROOT_GUARD] - }] - }], null); -})(); -function provideRouterScroller() { - return { - provide: ROUTER_SCROLLER, - useFactory: () => { - const viewportScroller = inject(ViewportScroller); - const zone = inject(NgZone); - const config = inject(ROUTER_CONFIGURATION); - const transitions = inject(NavigationTransitions); - const urlSerializer = inject(UrlSerializer); - if (config.scrollOffset) { - viewportScroller.setOffset(config.scrollOffset); - } - return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, config); - } - }; -} -function provideHashLocationStrategy() { - return { - provide: LocationStrategy, - useClass: HashLocationStrategy - }; -} -function providePathLocationStrategy() { - return { - provide: LocationStrategy, - useClass: PathLocationStrategy - }; -} -function provideForRootGuard(router) { - if ((typeof ngDevMode === "undefined" || ngDevMode) && router) { - throw new RuntimeError(4007, `The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector. Lazy loaded modules should use RouterModule.forChild() instead.`); - } - return "guarded"; -} -function provideInitialNavigation(config) { - return [config.initialNavigation === "disabled" ? withDisabledInitialNavigation().ɵproviders : [], config.initialNavigation === "enabledBlocking" ? withEnabledBlockingInitialNavigation().ɵproviders : []]; -} -var ROUTER_INITIALIZER = new InjectionToken(typeof ngDevMode === "undefined" || ngDevMode ? "Router Initializer" : ""); -function provideRouterInitializer() { - return [ - // ROUTER_INITIALIZER token should be removed. It's public API but shouldn't be. We can just - // have `getBootstrapListener` directly attached to APP_BOOTSTRAP_LISTENER. - { - provide: ROUTER_INITIALIZER, - useFactory: getBootstrapListener - }, - { - provide: APP_BOOTSTRAP_LISTENER, - multi: true, - useExisting: ROUTER_INITIALIZER - } - ]; -} -function mapToCanMatch(providers) { - return providers.map((provider) => (...params) => inject(provider).canMatch(...params)); -} -function mapToCanActivate(providers) { - return providers.map((provider) => (...params) => inject(provider).canActivate(...params)); -} -function mapToCanActivateChild(providers) { - return providers.map((provider) => (...params) => inject(provider).canActivateChild(...params)); -} -function mapToCanDeactivate(providers) { - return providers.map((provider) => (...params) => inject(provider).canDeactivate(...params)); -} -function mapToResolve(provider) { - return (...params) => inject(provider).resolve(...params); -} -var VERSION = new Version("17.1.3"); -export { - ActivatedRoute, - ActivatedRouteSnapshot, - ActivationEnd, - ActivationStart, - BaseRouteReuseStrategy, - ChildActivationEnd, - ChildActivationStart, - ChildrenOutletContexts, - DefaultTitleStrategy, - DefaultUrlSerializer, - EventType, - GuardsCheckEnd, - GuardsCheckStart, - NavigationCancel, - NavigationCancellationCode, - NavigationEnd, - NavigationError, - NavigationSkipped, - NavigationSkippedCode, - NavigationStart, - NoPreloading, - OutletContext, - PRIMARY_OUTLET, - PreloadAllModules, - PreloadingStrategy, - ROUTER_CONFIGURATION, - ROUTER_INITIALIZER, - ROUTES, - ResolveEnd, - ResolveStart, - RouteConfigLoadEnd, - RouteConfigLoadStart, - RouteReuseStrategy, - Router, - RouterEvent, - RouterLink, - RouterLinkActive, - RouterLink as RouterLinkWithHref, - RouterModule, - RouterOutlet, - RouterPreloader, - RouterState, - RouterStateSnapshot, - RoutesRecognized, - Scroll, - TitleStrategy, - UrlHandlingStrategy, - UrlSegment, - UrlSegmentGroup, - UrlSerializer, - UrlTree, - VERSION, - convertToParamMap, - createUrlTreeFromSnapshot, - defaultUrlMatcher, - mapToCanActivate, - mapToCanActivateChild, - mapToCanDeactivate, - mapToCanMatch, - mapToResolve, - provideRouter, - provideRoutes, - withComponentInputBinding, - withDebugTracing, - withDisabledInitialNavigation, - withEnabledBlockingInitialNavigation, - withHashLocation, - withInMemoryScrolling, - withNavigationErrorHandler, - withPreloading, - withRouterConfig, - withViewTransitions, - ɵEmptyOutletComponent, - ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, - afterNextNavigation as ɵafterNextNavigation, - loadChildren as ɵloadChildren -}; -/*! Bundled license information: - -@angular/router/fesm2022/router.mjs: - (** - * @license Angular v17.1.3 - * (c) 2010-2022 Google LLC. https://angular.io/ - * License: MIT - *) -*/ -//# sourceMappingURL=@angular_router.js.map diff --git a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_router.js.map b/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_router.js.map deleted file mode 100755 index afbc898b..00000000 --- a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/@angular_router.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../../../../node_modules/@angular/router/fesm2022/router.mjs"], - "sourcesContent": ["/**\n * @license Angular v17.1.3\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { ɵisPromise, ɵRuntimeError, Injectable, EventEmitter, inject, ViewContainerRef, ChangeDetectorRef, EnvironmentInjector, Directive, Input, Output, InjectionToken, reflectComponentType, Component, createEnvironmentInjector, ɵisNgModule, isStandalone, ɵisInjectable, runInInjectionContext, Compiler, NgModuleFactory, NgZone, afterNextRender, ɵConsole, ɵPendingTasks, ɵɵsanitizeUrlOrResourceUrl, booleanAttribute, Attribute, HostBinding, HostListener, Optional, ContentChildren, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, ENVIRONMENT_INITIALIZER, Injector, ApplicationRef, InjectFlags, APP_INITIALIZER, SkipSelf, NgModule, Inject, Version } from '@angular/core';\nimport { isObservable, from, of, BehaviorSubject, combineLatest, EmptyError, concat, defer, pipe, throwError, EMPTY, ConnectableObservable, Subject, Subscription } from 'rxjs';\nimport * as i3 from '@angular/common';\nimport { DOCUMENT, Location, ViewportScroller, LOCATION_INITIALIZED, LocationStrategy, HashLocationStrategy, PathLocationStrategy } from '@angular/common';\nimport { map, switchMap, take, startWith, filter, mergeMap, first, concatMap, tap, catchError, scan, defaultIfEmpty, last as last$1, takeLast, mapTo, finalize, refCount, takeUntil, mergeAll } from 'rxjs/operators';\nimport * as i1 from '@angular/platform-browser';\n\n/**\n * The primary routing outlet.\n *\n * @publicApi\n */\nconst PRIMARY_OUTLET = 'primary';\n/**\n * A private symbol used to store the value of `Route.title` inside the `Route.data` if it is a\n * static string or `Route.resolve` if anything else. This allows us to reuse the existing route\n * data/resolvers to support the title feature without new instrumentation in the `Router` pipeline.\n */\nconst RouteTitleKey = /* @__PURE__ */Symbol('RouteTitle');\nclass ParamsAsMap {\n constructor(params) {\n this.params = params || {};\n }\n has(name) {\n return Object.prototype.hasOwnProperty.call(this.params, name);\n }\n get(name) {\n if (this.has(name)) {\n const v = this.params[name];\n return Array.isArray(v) ? v[0] : v;\n }\n return null;\n }\n getAll(name) {\n if (this.has(name)) {\n const v = this.params[name];\n return Array.isArray(v) ? v : [v];\n }\n return [];\n }\n get keys() {\n return Object.keys(this.params);\n }\n}\n/**\n * Converts a `Params` instance to a `ParamMap`.\n * @param params The instance to convert.\n * @returns The new map instance.\n *\n * @publicApi\n */\nfunction convertToParamMap(params) {\n return new ParamsAsMap(params);\n}\n/**\n * Matches the route configuration (`route`) against the actual URL (`segments`).\n *\n * When no matcher is defined on a `Route`, this is the matcher used by the Router by default.\n *\n * @param segments The remaining unmatched segments in the current navigation\n * @param segmentGroup The current segment group being matched\n * @param route The `Route` to match against.\n *\n * @see {@link UrlMatchResult}\n * @see {@link Route}\n *\n * @returns The resulting match information or `null` if the `route` should not match.\n * @publicApi\n */\nfunction defaultUrlMatcher(segments, segmentGroup, route) {\n const parts = route.path.split('/');\n if (parts.length > segments.length) {\n // The actual URL is shorter than the config, no match\n return null;\n }\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || parts.length < segments.length)) {\n // The config is longer than the actual URL but we are looking for a full match, return null\n return null;\n }\n const posParams = {};\n // Check each config part against the actual URL\n for (let index = 0; index < parts.length; index++) {\n const part = parts[index];\n const segment = segments[index];\n const isParameter = part.startsWith(':');\n if (isParameter) {\n posParams[part.substring(1)] = segment;\n } else if (part !== segment.path) {\n // The actual URL part does not match the config, no match\n return null;\n }\n }\n return {\n consumed: segments.slice(0, parts.length),\n posParams\n };\n}\nfunction shallowEqualArrays(a, b) {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; ++i) {\n if (!shallowEqual(a[i], b[i])) return false;\n }\n return true;\n}\nfunction shallowEqual(a, b) {\n // While `undefined` should never be possible, it would sometimes be the case in IE 11\n // and pre-chromium Edge. The check below accounts for this edge case.\n const k1 = a ? getDataKeys(a) : undefined;\n const k2 = b ? getDataKeys(b) : undefined;\n if (!k1 || !k2 || k1.length != k2.length) {\n return false;\n }\n let key;\n for (let i = 0; i < k1.length; i++) {\n key = k1[i];\n if (!equalArraysOrString(a[key], b[key])) {\n return false;\n }\n }\n return true;\n}\n/**\n * Gets the keys of an object, including `symbol` keys.\n */\nfunction getDataKeys(obj) {\n return [...Object.keys(obj), ...Object.getOwnPropertySymbols(obj)];\n}\n/**\n * Test equality for arrays of strings or a string.\n */\nfunction equalArraysOrString(a, b) {\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n const aSorted = [...a].sort();\n const bSorted = [...b].sort();\n return aSorted.every((val, index) => bSorted[index] === val);\n } else {\n return a === b;\n }\n}\n/**\n * Return the last element of an array.\n */\nfunction last(a) {\n return a.length > 0 ? a[a.length - 1] : null;\n}\nfunction wrapIntoObservable(value) {\n if (isObservable(value)) {\n return value;\n }\n if (ɵisPromise(value)) {\n // Use `Promise.resolve()` to wrap promise-like instances.\n // Required ie when a Resolver returns a AngularJS `$q` promise to correctly trigger the\n // change detection.\n return from(Promise.resolve(value));\n }\n return of(value);\n}\nconst pathCompareMap = {\n 'exact': equalSegmentGroups,\n 'subset': containsSegmentGroup\n};\nconst paramCompareMap = {\n 'exact': equalParams,\n 'subset': containsParams,\n 'ignored': () => true\n};\nfunction containsTree(container, containee, options) {\n return pathCompareMap[options.paths](container.root, containee.root, options.matrixParams) && paramCompareMap[options.queryParams](container.queryParams, containee.queryParams) && !(options.fragment === 'exact' && container.fragment !== containee.fragment);\n}\nfunction equalParams(container, containee) {\n // TODO: This does not handle array params correctly.\n return shallowEqual(container, containee);\n}\nfunction equalSegmentGroups(container, containee, matrixParams) {\n if (!equalPath(container.segments, containee.segments)) return false;\n if (!matrixParamsMatch(container.segments, containee.segments, matrixParams)) {\n return false;\n }\n if (container.numberOfChildren !== containee.numberOfChildren) return false;\n for (const c in containee.children) {\n if (!container.children[c]) return false;\n if (!equalSegmentGroups(container.children[c], containee.children[c], matrixParams)) return false;\n }\n return true;\n}\nfunction containsParams(container, containee) {\n return Object.keys(containee).length <= Object.keys(container).length && Object.keys(containee).every(key => equalArraysOrString(container[key], containee[key]));\n}\nfunction containsSegmentGroup(container, containee, matrixParams) {\n return containsSegmentGroupHelper(container, containee, containee.segments, matrixParams);\n}\nfunction containsSegmentGroupHelper(container, containee, containeePaths, matrixParams) {\n if (container.segments.length > containeePaths.length) {\n const current = container.segments.slice(0, containeePaths.length);\n if (!equalPath(current, containeePaths)) return false;\n if (containee.hasChildren()) return false;\n if (!matrixParamsMatch(current, containeePaths, matrixParams)) return false;\n return true;\n } else if (container.segments.length === containeePaths.length) {\n if (!equalPath(container.segments, containeePaths)) return false;\n if (!matrixParamsMatch(container.segments, containeePaths, matrixParams)) return false;\n for (const c in containee.children) {\n if (!container.children[c]) return false;\n if (!containsSegmentGroup(container.children[c], containee.children[c], matrixParams)) {\n return false;\n }\n }\n return true;\n } else {\n const current = containeePaths.slice(0, container.segments.length);\n const next = containeePaths.slice(container.segments.length);\n if (!equalPath(container.segments, current)) return false;\n if (!matrixParamsMatch(container.segments, current, matrixParams)) return false;\n if (!container.children[PRIMARY_OUTLET]) return false;\n return containsSegmentGroupHelper(container.children[PRIMARY_OUTLET], containee, next, matrixParams);\n }\n}\nfunction matrixParamsMatch(containerPaths, containeePaths, options) {\n return containeePaths.every((containeeSegment, i) => {\n return paramCompareMap[options](containerPaths[i].parameters, containeeSegment.parameters);\n });\n}\n/**\n * @description\n *\n * Represents the parsed URL.\n *\n * Since a router state is a tree, and the URL is nothing but a serialized state, the URL is a\n * serialized tree.\n * UrlTree is a data structure that provides a lot of affordances in dealing with URLs\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree =\n * router.parseUrl('/team/33/(user/victor//support:help)?debug=true#fragment');\n * const f = tree.fragment; // return 'fragment'\n * const q = tree.queryParams; // returns {debug: 'true'}\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments; // returns 2 segments 'team' and '33'\n * g.children[PRIMARY_OUTLET].segments; // returns 2 segments 'user' and 'victor'\n * g.children['support'].segments; // return 1 segment 'help'\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass UrlTree {\n constructor( /** The root segment group of the URL tree */\n root = new UrlSegmentGroup([], {}), /** The query params of the URL */\n queryParams = {}, /** The fragment of the URL */\n fragment = null) {\n this.root = root;\n this.queryParams = queryParams;\n this.fragment = fragment;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (root.segments.length > 0) {\n throw new ɵRuntimeError(4015 /* RuntimeErrorCode.INVALID_ROOT_URL_SEGMENT */, 'The root `UrlSegmentGroup` should not contain `segments`. ' + 'Instead, these segments belong in the `children` so they can be associated with a named outlet.');\n }\n }\n }\n get queryParamMap() {\n this._queryParamMap ??= convertToParamMap(this.queryParams);\n return this._queryParamMap;\n }\n /** @docsNotRequired */\n toString() {\n return DEFAULT_SERIALIZER.serialize(this);\n }\n}\n/**\n * @description\n *\n * Represents the parsed URL segment group.\n *\n * See `UrlTree` for more information.\n *\n * @publicApi\n */\nclass UrlSegmentGroup {\n constructor( /** The URL segments of this group. See `UrlSegment` for more information */\n segments, /** The list of children of this group */\n children) {\n this.segments = segments;\n this.children = children;\n /** The parent node in the url tree */\n this.parent = null;\n Object.values(children).forEach(v => v.parent = this);\n }\n /** Whether the segment has child segments */\n hasChildren() {\n return this.numberOfChildren > 0;\n }\n /** Number of child segments */\n get numberOfChildren() {\n return Object.keys(this.children).length;\n }\n /** @docsNotRequired */\n toString() {\n return serializePaths(this);\n }\n}\n/**\n * @description\n *\n * Represents a single URL segment.\n *\n * A UrlSegment is a part of a URL between the two slashes. It contains a path and the matrix\n * parameters associated with the segment.\n *\n * @usageNotes\n * ### Example\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const tree: UrlTree = router.parseUrl('/team;id=33');\n * const g: UrlSegmentGroup = tree.root.children[PRIMARY_OUTLET];\n * const s: UrlSegment[] = g.segments;\n * s[0].path; // returns 'team'\n * s[0].parameters; // returns {id: 33}\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass UrlSegment {\n constructor( /** The path part of a URL segment */\n path, /** The matrix parameters associated with a segment */\n parameters) {\n this.path = path;\n this.parameters = parameters;\n }\n get parameterMap() {\n this._parameterMap ??= convertToParamMap(this.parameters);\n return this._parameterMap;\n }\n /** @docsNotRequired */\n toString() {\n return serializePath(this);\n }\n}\nfunction equalSegments(as, bs) {\n return equalPath(as, bs) && as.every((a, i) => shallowEqual(a.parameters, bs[i].parameters));\n}\nfunction equalPath(as, bs) {\n if (as.length !== bs.length) return false;\n return as.every((a, i) => a.path === bs[i].path);\n}\nfunction mapChildrenIntoArray(segment, fn) {\n let res = [];\n Object.entries(segment.children).forEach(([childOutlet, child]) => {\n if (childOutlet === PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n Object.entries(segment.children).forEach(([childOutlet, child]) => {\n if (childOutlet !== PRIMARY_OUTLET) {\n res = res.concat(fn(child, childOutlet));\n }\n });\n return res;\n}\n/**\n * @description\n *\n * Serializes and deserializes a URL string into a URL tree.\n *\n * The url serialization strategy is customizable. You can\n * make all URLs case insensitive by providing a custom UrlSerializer.\n *\n * See `DefaultUrlSerializer` for an example of a URL serializer.\n *\n * @publicApi\n */\nclass UrlSerializer {\n static {\n this.ɵfac = function UrlSerializer_Factory(t) {\n return new (t || UrlSerializer)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UrlSerializer,\n factory: () => (() => new DefaultUrlSerializer())(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UrlSerializer, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => new DefaultUrlSerializer()\n }]\n }], null, null);\n})();\n/**\n * @description\n *\n * A default implementation of the `UrlSerializer`.\n *\n * Example URLs:\n *\n * ```\n * /inbox/33(popup:compose)\n * /inbox/33;open=true/messages/44\n * ```\n *\n * DefaultUrlSerializer uses parentheses to serialize secondary segments (e.g., popup:compose), the\n * colon syntax to specify the outlet, and the ';parameter=value' syntax (e.g., open=true) to\n * specify route specific parameters.\n *\n * @publicApi\n */\nclass DefaultUrlSerializer {\n /** Parses a url into a `UrlTree` */\n parse(url) {\n const p = new UrlParser(url);\n return new UrlTree(p.parseRootSegment(), p.parseQueryParams(), p.parseFragment());\n }\n /** Converts a `UrlTree` into a url */\n serialize(tree) {\n const segment = `/${serializeSegment(tree.root, true)}`;\n const query = serializeQueryParams(tree.queryParams);\n const fragment = typeof tree.fragment === `string` ? `#${encodeUriFragment(tree.fragment)}` : '';\n return `${segment}${query}${fragment}`;\n }\n}\nconst DEFAULT_SERIALIZER = new DefaultUrlSerializer();\nfunction serializePaths(segment) {\n return segment.segments.map(p => serializePath(p)).join('/');\n}\nfunction serializeSegment(segment, root) {\n if (!segment.hasChildren()) {\n return serializePaths(segment);\n }\n if (root) {\n const primary = segment.children[PRIMARY_OUTLET] ? serializeSegment(segment.children[PRIMARY_OUTLET], false) : '';\n const children = [];\n Object.entries(segment.children).forEach(([k, v]) => {\n if (k !== PRIMARY_OUTLET) {\n children.push(`${k}:${serializeSegment(v, false)}`);\n }\n });\n return children.length > 0 ? `${primary}(${children.join('//')})` : primary;\n } else {\n const children = mapChildrenIntoArray(segment, (v, k) => {\n if (k === PRIMARY_OUTLET) {\n return [serializeSegment(segment.children[PRIMARY_OUTLET], false)];\n }\n return [`${k}:${serializeSegment(v, false)}`];\n });\n // use no parenthesis if the only child is a primary outlet route\n if (Object.keys(segment.children).length === 1 && segment.children[PRIMARY_OUTLET] != null) {\n return `${serializePaths(segment)}/${children[0]}`;\n }\n return `${serializePaths(segment)}/(${children.join('//')})`;\n }\n}\n/**\n * Encodes a URI string with the default encoding. This function will only ever be called from\n * `encodeUriQuery` or `encodeUriSegment` as it's the base set of encodings to be used. We need\n * a custom encoding because encodeURIComponent is too aggressive and encodes stuff that doesn't\n * have to be encoded per https://url.spec.whatwg.org.\n */\nfunction encodeUriString(s) {\n return encodeURIComponent(s).replace(/%40/g, '@').replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',');\n}\n/**\n * This function should be used to encode both keys and values in a query string key/value. In\n * the following URL, you need to call encodeUriQuery on \"k\" and \"v\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriQuery(s) {\n return encodeUriString(s).replace(/%3B/gi, ';');\n}\n/**\n * This function should be used to encode a URL fragment. In the following URL, you need to call\n * encodeUriFragment on \"f\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriFragment(s) {\n return encodeURI(s);\n}\n/**\n * This function should be run on any URI segment as well as the key and value in a key/value\n * pair for matrix params. In the following URL, you need to call encodeUriSegment on \"html\",\n * \"mk\", and \"mv\":\n *\n * http://www.site.org/html;mk=mv?k=v#f\n */\nfunction encodeUriSegment(s) {\n return encodeUriString(s).replace(/\\(/g, '%28').replace(/\\)/g, '%29').replace(/%26/gi, '&');\n}\nfunction decode(s) {\n return decodeURIComponent(s);\n}\n// Query keys/values should have the \"+\" replaced first, as \"+\" in a query string is \" \".\n// decodeURIComponent function will not decode \"+\" as a space.\nfunction decodeQuery(s) {\n return decode(s.replace(/\\+/g, '%20'));\n}\nfunction serializePath(path) {\n return `${encodeUriSegment(path.path)}${serializeMatrixParams(path.parameters)}`;\n}\nfunction serializeMatrixParams(params) {\n return Object.entries(params).map(([key, value]) => `;${encodeUriSegment(key)}=${encodeUriSegment(value)}`).join('');\n}\nfunction serializeQueryParams(params) {\n const strParams = Object.entries(params).map(([name, value]) => {\n return Array.isArray(value) ? value.map(v => `${encodeUriQuery(name)}=${encodeUriQuery(v)}`).join('&') : `${encodeUriQuery(name)}=${encodeUriQuery(value)}`;\n }).filter(s => s);\n return strParams.length ? `?${strParams.join('&')}` : '';\n}\nconst SEGMENT_RE = /^[^\\/()?;#]+/;\nfunction matchSegments(str) {\n const match = str.match(SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst MATRIX_PARAM_SEGMENT_RE = /^[^\\/()?;=#]+/;\nfunction matchMatrixKeySegments(str) {\n const match = str.match(MATRIX_PARAM_SEGMENT_RE);\n return match ? match[0] : '';\n}\nconst QUERY_PARAM_RE = /^[^=?&#]+/;\n// Return the name of the query param at the start of the string or an empty string\nfunction matchQueryParams(str) {\n const match = str.match(QUERY_PARAM_RE);\n return match ? match[0] : '';\n}\nconst QUERY_PARAM_VALUE_RE = /^[^&#]+/;\n// Return the value of the query param at the start of the string or an empty string\nfunction matchUrlQueryParamValue(str) {\n const match = str.match(QUERY_PARAM_VALUE_RE);\n return match ? match[0] : '';\n}\nclass UrlParser {\n constructor(url) {\n this.url = url;\n this.remaining = url;\n }\n parseRootSegment() {\n this.consumeOptional('/');\n if (this.remaining === '' || this.peekStartsWith('?') || this.peekStartsWith('#')) {\n return new UrlSegmentGroup([], {});\n }\n // The root segment group never has segments\n return new UrlSegmentGroup([], this.parseChildren());\n }\n parseQueryParams() {\n const params = {};\n if (this.consumeOptional('?')) {\n do {\n this.parseQueryParam(params);\n } while (this.consumeOptional('&'));\n }\n return params;\n }\n parseFragment() {\n return this.consumeOptional('#') ? decodeURIComponent(this.remaining) : null;\n }\n parseChildren() {\n if (this.remaining === '') {\n return {};\n }\n this.consumeOptional('/');\n const segments = [];\n if (!this.peekStartsWith('(')) {\n segments.push(this.parseSegment());\n }\n while (this.peekStartsWith('/') && !this.peekStartsWith('//') && !this.peekStartsWith('/(')) {\n this.capture('/');\n segments.push(this.parseSegment());\n }\n let children = {};\n if (this.peekStartsWith('/(')) {\n this.capture('/');\n children = this.parseParens(true);\n }\n let res = {};\n if (this.peekStartsWith('(')) {\n res = this.parseParens(false);\n }\n if (segments.length > 0 || Object.keys(children).length > 0) {\n res[PRIMARY_OUTLET] = new UrlSegmentGroup(segments, children);\n }\n return res;\n }\n // parse a segment with its matrix parameters\n // ie `name;k1=v1;k2`\n parseSegment() {\n const path = matchSegments(this.remaining);\n if (path === '' && this.peekStartsWith(';')) {\n throw new ɵRuntimeError(4009 /* RuntimeErrorCode.EMPTY_PATH_WITH_PARAMS */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Empty path url segment cannot have parameters: '${this.remaining}'.`);\n }\n this.capture(path);\n return new UrlSegment(decode(path), this.parseMatrixParams());\n }\n parseMatrixParams() {\n const params = {};\n while (this.consumeOptional(';')) {\n this.parseParam(params);\n }\n return params;\n }\n parseParam(params) {\n const key = matchMatrixKeySegments(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let value = '';\n if (this.consumeOptional('=')) {\n const valueMatch = matchSegments(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n params[decode(key)] = decode(value);\n }\n // Parse a single query parameter `name[=value]`\n parseQueryParam(params) {\n const key = matchQueryParams(this.remaining);\n if (!key) {\n return;\n }\n this.capture(key);\n let value = '';\n if (this.consumeOptional('=')) {\n const valueMatch = matchUrlQueryParamValue(this.remaining);\n if (valueMatch) {\n value = valueMatch;\n this.capture(value);\n }\n }\n const decodedKey = decodeQuery(key);\n const decodedVal = decodeQuery(value);\n if (params.hasOwnProperty(decodedKey)) {\n // Append to existing values\n let currentVal = params[decodedKey];\n if (!Array.isArray(currentVal)) {\n currentVal = [currentVal];\n params[decodedKey] = currentVal;\n }\n currentVal.push(decodedVal);\n } else {\n // Create a new value\n params[decodedKey] = decodedVal;\n }\n }\n // parse `(a/b//outlet_name:c/d)`\n parseParens(allowPrimary) {\n const segments = {};\n this.capture('(');\n while (!this.consumeOptional(')') && this.remaining.length > 0) {\n const path = matchSegments(this.remaining);\n const next = this.remaining[path.length];\n // if is is not one of these characters, then the segment was unescaped\n // or the group was not closed\n if (next !== '/' && next !== ')' && next !== ';') {\n throw new ɵRuntimeError(4010 /* RuntimeErrorCode.UNPARSABLE_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Cannot parse url '${this.url}'`);\n }\n let outletName = undefined;\n if (path.indexOf(':') > -1) {\n outletName = path.slice(0, path.indexOf(':'));\n this.capture(outletName);\n this.capture(':');\n } else if (allowPrimary) {\n outletName = PRIMARY_OUTLET;\n }\n const children = this.parseChildren();\n segments[outletName] = Object.keys(children).length === 1 ? children[PRIMARY_OUTLET] : new UrlSegmentGroup([], children);\n this.consumeOptional('//');\n }\n return segments;\n }\n peekStartsWith(str) {\n return this.remaining.startsWith(str);\n }\n // Consumes the prefix when it is present and returns whether it has been consumed\n consumeOptional(str) {\n if (this.peekStartsWith(str)) {\n this.remaining = this.remaining.substring(str.length);\n return true;\n }\n return false;\n }\n capture(str) {\n if (!this.consumeOptional(str)) {\n throw new ɵRuntimeError(4011 /* RuntimeErrorCode.UNEXPECTED_VALUE_IN_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Expected \"${str}\".`);\n }\n }\n}\nfunction createRoot(rootCandidate) {\n return rootCandidate.segments.length > 0 ? new UrlSegmentGroup([], {\n [PRIMARY_OUTLET]: rootCandidate\n }) : rootCandidate;\n}\n/**\n * Recursively\n * - merges primary segment children into their parents\n * - drops empty children (those which have no segments and no children themselves). This latter\n * prevents serializing a group into something like `/a(aux:)`, where `aux` is an empty child\n * segment.\n * - merges named outlets without a primary segment sibling into the children. This prevents\n * serializing a URL like `//(a:a)(b:b) instead of `/(a:a//b:b)` when the aux b route lives on the\n * root but the `a` route lives under an empty path primary route.\n */\nfunction squashSegmentGroup(segmentGroup) {\n const newChildren = {};\n for (const [childOutlet, child] of Object.entries(segmentGroup.children)) {\n const childCandidate = squashSegmentGroup(child);\n // moves named children in an empty path primary child into this group\n if (childOutlet === PRIMARY_OUTLET && childCandidate.segments.length === 0 && childCandidate.hasChildren()) {\n for (const [grandChildOutlet, grandChild] of Object.entries(childCandidate.children)) {\n newChildren[grandChildOutlet] = grandChild;\n }\n } // don't add empty children\n else if (childCandidate.segments.length > 0 || childCandidate.hasChildren()) {\n newChildren[childOutlet] = childCandidate;\n }\n }\n const s = new UrlSegmentGroup(segmentGroup.segments, newChildren);\n return mergeTrivialChildren(s);\n}\n/**\n * When possible, merges the primary outlet child into the parent `UrlSegmentGroup`.\n *\n * When a segment group has only one child which is a primary outlet, merges that child into the\n * parent. That is, the child segment group's segments are merged into the `s` and the child's\n * children become the children of `s`. Think of this like a 'squash', merging the child segment\n * group into the parent.\n */\nfunction mergeTrivialChildren(s) {\n if (s.numberOfChildren === 1 && s.children[PRIMARY_OUTLET]) {\n const c = s.children[PRIMARY_OUTLET];\n return new UrlSegmentGroup(s.segments.concat(c.segments), c.children);\n }\n return s;\n}\nfunction isUrlTree(v) {\n return v instanceof UrlTree;\n}\n\n/**\n * Creates a `UrlTree` relative to an `ActivatedRouteSnapshot`.\n *\n * @publicApi\n *\n *\n * @param relativeTo The `ActivatedRouteSnapshot` to apply the commands to\n * @param commands An array of URL fragments with which to construct the new URL tree.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the one provided in the `relativeTo` parameter.\n * @param queryParams The query parameters for the `UrlTree`. `null` if the `UrlTree` does not have\n * any query parameters.\n * @param fragment The fragment for the `UrlTree`. `null` if the `UrlTree` does not have a fragment.\n *\n * @usageNotes\n *\n * ```\n * // create /team/33/user/11\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * createUrlTreeFromSnapshot(snapshot, ['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it,\n * // you can do the following:\n * createUrlTreeFromSnapshot(snapshot, [{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right:\n * 'chat'}}], null, null);\n *\n * // remove the right secondary node\n * createUrlTreeFromSnapshot(snapshot, ['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // For the examples below, assume the current URL is for the `/team/33/user/11` and the\n * `ActivatedRouteSnapshot` points to `user/11`:\n *\n * // navigate to /team/33/user/11/details\n * createUrlTreeFromSnapshot(snapshot, ['details']);\n *\n * // navigate to /team/33/user/22\n * createUrlTreeFromSnapshot(snapshot, ['../22']);\n *\n * // navigate to /team/44/user/22\n * createUrlTreeFromSnapshot(snapshot, ['../../team/44/user/22']);\n * ```\n */\nfunction createUrlTreeFromSnapshot(relativeTo, commands, queryParams = null, fragment = null) {\n const relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeTo);\n return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, queryParams, fragment);\n}\nfunction createSegmentGroupFromRoute(route) {\n let targetGroup;\n function createSegmentGroupFromRouteRecursive(currentRoute) {\n const childOutlets = {};\n for (const childSnapshot of currentRoute.children) {\n const root = createSegmentGroupFromRouteRecursive(childSnapshot);\n childOutlets[childSnapshot.outlet] = root;\n }\n const segmentGroup = new UrlSegmentGroup(currentRoute.url, childOutlets);\n if (currentRoute === route) {\n targetGroup = segmentGroup;\n }\n return segmentGroup;\n }\n const rootCandidate = createSegmentGroupFromRouteRecursive(route.root);\n const rootSegmentGroup = createRoot(rootCandidate);\n return targetGroup ?? rootSegmentGroup;\n}\nfunction createUrlTreeFromSegmentGroup(relativeTo, commands, queryParams, fragment) {\n let root = relativeTo;\n while (root.parent) {\n root = root.parent;\n }\n // There are no commands so the `UrlTree` goes to the same path as the one created from the\n // `UrlSegmentGroup`. All we need to do is update the `queryParams` and `fragment` without\n // applying any other logic.\n if (commands.length === 0) {\n return tree(root, root, root, queryParams, fragment);\n }\n const nav = computeNavigation(commands);\n if (nav.toRoot()) {\n return tree(root, root, new UrlSegmentGroup([], {}), queryParams, fragment);\n }\n const position = findStartingPositionForTargetGroup(nav, root, relativeTo);\n const newSegmentGroup = position.processChildren ? updateSegmentGroupChildren(position.segmentGroup, position.index, nav.commands) : updateSegmentGroup(position.segmentGroup, position.index, nav.commands);\n return tree(root, position.segmentGroup, newSegmentGroup, queryParams, fragment);\n}\nfunction isMatrixParams(command) {\n return typeof command === 'object' && command != null && !command.outlets && !command.segmentPath;\n}\n/**\n * Determines if a given command has an `outlets` map. When we encounter a command\n * with an outlets k/v map, we need to apply each outlet individually to the existing segment.\n */\nfunction isCommandWithOutlets(command) {\n return typeof command === 'object' && command != null && command.outlets;\n}\nfunction tree(oldRoot, oldSegmentGroup, newSegmentGroup, queryParams, fragment) {\n let qp = {};\n if (queryParams) {\n Object.entries(queryParams).forEach(([name, value]) => {\n qp[name] = Array.isArray(value) ? value.map(v => `${v}`) : `${value}`;\n });\n }\n let rootCandidate;\n if (oldRoot === oldSegmentGroup) {\n rootCandidate = newSegmentGroup;\n } else {\n rootCandidate = replaceSegment(oldRoot, oldSegmentGroup, newSegmentGroup);\n }\n const newRoot = createRoot(squashSegmentGroup(rootCandidate));\n return new UrlTree(newRoot, qp, fragment);\n}\n/**\n * Replaces the `oldSegment` which is located in some child of the `current` with the `newSegment`.\n * This also has the effect of creating new `UrlSegmentGroup` copies to update references. This\n * shouldn't be necessary but the fallback logic for an invalid ActivatedRoute in the creation uses\n * the Router's current url tree. If we don't create new segment groups, we end up modifying that\n * value.\n */\nfunction replaceSegment(current, oldSegment, newSegment) {\n const children = {};\n Object.entries(current.children).forEach(([outletName, c]) => {\n if (c === oldSegment) {\n children[outletName] = newSegment;\n } else {\n children[outletName] = replaceSegment(c, oldSegment, newSegment);\n }\n });\n return new UrlSegmentGroup(current.segments, children);\n}\nclass Navigation {\n constructor(isAbsolute, numberOfDoubleDots, commands) {\n this.isAbsolute = isAbsolute;\n this.numberOfDoubleDots = numberOfDoubleDots;\n this.commands = commands;\n if (isAbsolute && commands.length > 0 && isMatrixParams(commands[0])) {\n throw new ɵRuntimeError(4003 /* RuntimeErrorCode.ROOT_SEGMENT_MATRIX_PARAMS */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Root segment cannot have matrix parameters');\n }\n const cmdWithOutlet = commands.find(isCommandWithOutlets);\n if (cmdWithOutlet && cmdWithOutlet !== last(commands)) {\n throw new ɵRuntimeError(4004 /* RuntimeErrorCode.MISPLACED_OUTLETS_COMMAND */, (typeof ngDevMode === 'undefined' || ngDevMode) && '{outlets:{}} has to be the last command');\n }\n }\n toRoot() {\n return this.isAbsolute && this.commands.length === 1 && this.commands[0] == '/';\n }\n}\n/** Transforms commands to a normalized `Navigation` */\nfunction computeNavigation(commands) {\n if (typeof commands[0] === 'string' && commands.length === 1 && commands[0] === '/') {\n return new Navigation(true, 0, commands);\n }\n let numberOfDoubleDots = 0;\n let isAbsolute = false;\n const res = commands.reduce((res, cmd, cmdIdx) => {\n if (typeof cmd === 'object' && cmd != null) {\n if (cmd.outlets) {\n const outlets = {};\n Object.entries(cmd.outlets).forEach(([name, commands]) => {\n outlets[name] = typeof commands === 'string' ? commands.split('/') : commands;\n });\n return [...res, {\n outlets\n }];\n }\n if (cmd.segmentPath) {\n return [...res, cmd.segmentPath];\n }\n }\n if (!(typeof cmd === 'string')) {\n return [...res, cmd];\n }\n if (cmdIdx === 0) {\n cmd.split('/').forEach((urlPart, partIndex) => {\n if (partIndex == 0 && urlPart === '.') {\n // skip './a'\n } else if (partIndex == 0 && urlPart === '') {\n // '/a'\n isAbsolute = true;\n } else if (urlPart === '..') {\n // '../a'\n numberOfDoubleDots++;\n } else if (urlPart != '') {\n res.push(urlPart);\n }\n });\n return res;\n }\n return [...res, cmd];\n }, []);\n return new Navigation(isAbsolute, numberOfDoubleDots, res);\n}\nclass Position {\n constructor(segmentGroup, processChildren, index) {\n this.segmentGroup = segmentGroup;\n this.processChildren = processChildren;\n this.index = index;\n }\n}\nfunction findStartingPositionForTargetGroup(nav, root, target) {\n if (nav.isAbsolute) {\n return new Position(root, true, 0);\n }\n if (!target) {\n // `NaN` is used only to maintain backwards compatibility with incorrectly mocked\n // `ActivatedRouteSnapshot` in tests. In prior versions of this code, the position here was\n // determined based on an internal property that was rarely mocked, resulting in `NaN`. In\n // reality, this code path should _never_ be touched since `target` is not allowed to be falsey.\n return new Position(root, false, NaN);\n }\n if (target.parent === null) {\n return new Position(target, true, 0);\n }\n const modifier = isMatrixParams(nav.commands[0]) ? 0 : 1;\n const index = target.segments.length - 1 + modifier;\n return createPositionApplyingDoubleDots(target, index, nav.numberOfDoubleDots);\n}\nfunction createPositionApplyingDoubleDots(group, index, numberOfDoubleDots) {\n let g = group;\n let ci = index;\n let dd = numberOfDoubleDots;\n while (dd > ci) {\n dd -= ci;\n g = g.parent;\n if (!g) {\n throw new ɵRuntimeError(4005 /* RuntimeErrorCode.INVALID_DOUBLE_DOTS */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Invalid number of \\'../\\'');\n }\n ci = g.segments.length;\n }\n return new Position(g, false, ci - dd);\n}\nfunction getOutlets(commands) {\n if (isCommandWithOutlets(commands[0])) {\n return commands[0].outlets;\n }\n return {\n [PRIMARY_OUTLET]: commands\n };\n}\nfunction updateSegmentGroup(segmentGroup, startIndex, commands) {\n segmentGroup ??= new UrlSegmentGroup([], {});\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return updateSegmentGroupChildren(segmentGroup, startIndex, commands);\n }\n const m = prefixedWith(segmentGroup, startIndex, commands);\n const slicedCommands = commands.slice(m.commandIndex);\n if (m.match && m.pathIndex < segmentGroup.segments.length) {\n const g = new UrlSegmentGroup(segmentGroup.segments.slice(0, m.pathIndex), {});\n g.children[PRIMARY_OUTLET] = new UrlSegmentGroup(segmentGroup.segments.slice(m.pathIndex), segmentGroup.children);\n return updateSegmentGroupChildren(g, 0, slicedCommands);\n } else if (m.match && slicedCommands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n } else if (m.match && !segmentGroup.hasChildren()) {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n } else if (m.match) {\n return updateSegmentGroupChildren(segmentGroup, 0, slicedCommands);\n } else {\n return createNewSegmentGroup(segmentGroup, startIndex, commands);\n }\n}\nfunction updateSegmentGroupChildren(segmentGroup, startIndex, commands) {\n if (commands.length === 0) {\n return new UrlSegmentGroup(segmentGroup.segments, {});\n } else {\n const outlets = getOutlets(commands);\n const children = {};\n // If the set of commands applies to anything other than the primary outlet and the child\n // segment is an empty path primary segment on its own, we want to apply the commands to the\n // empty child path rather than here. The outcome is that the empty primary child is effectively\n // removed from the final output UrlTree. Imagine the following config:\n //\n // {path: '', children: [{path: '**', outlet: 'popup'}]}.\n //\n // Navigation to /(popup:a) will activate the child outlet correctly Given a follow-up\n // navigation with commands\n // ['/', {outlets: {'popup': 'b'}}], we _would not_ want to apply the outlet commands to the\n // root segment because that would result in\n // //(popup:a)(popup:b) since the outlet command got applied one level above where it appears in\n // the `ActivatedRoute` rather than updating the existing one.\n //\n // Because empty paths do not appear in the URL segments and the fact that the segments used in\n // the output `UrlTree` are squashed to eliminate these empty paths where possible\n // https://github.com/angular/angular/blob/13f10de40e25c6900ca55bd83b36bd533dacfa9e/packages/router/src/url_tree.ts#L755\n // it can be hard to determine what is the right thing to do when applying commands to a\n // `UrlSegmentGroup` that is created from an \"unsquashed\"/expanded `ActivatedRoute` tree.\n // This code effectively \"squashes\" empty path primary routes when they have no siblings on\n // the same level of the tree.\n if (Object.keys(outlets).some(o => o !== PRIMARY_OUTLET) && segmentGroup.children[PRIMARY_OUTLET] && segmentGroup.numberOfChildren === 1 && segmentGroup.children[PRIMARY_OUTLET].segments.length === 0) {\n const childrenOfEmptyChild = updateSegmentGroupChildren(segmentGroup.children[PRIMARY_OUTLET], startIndex, commands);\n return new UrlSegmentGroup(segmentGroup.segments, childrenOfEmptyChild.children);\n }\n Object.entries(outlets).forEach(([outlet, commands]) => {\n if (typeof commands === 'string') {\n commands = [commands];\n }\n if (commands !== null) {\n children[outlet] = updateSegmentGroup(segmentGroup.children[outlet], startIndex, commands);\n }\n });\n Object.entries(segmentGroup.children).forEach(([childOutlet, child]) => {\n if (outlets[childOutlet] === undefined) {\n children[childOutlet] = child;\n }\n });\n return new UrlSegmentGroup(segmentGroup.segments, children);\n }\n}\nfunction prefixedWith(segmentGroup, startIndex, commands) {\n let currentCommandIndex = 0;\n let currentPathIndex = startIndex;\n const noMatch = {\n match: false,\n pathIndex: 0,\n commandIndex: 0\n };\n while (currentPathIndex < segmentGroup.segments.length) {\n if (currentCommandIndex >= commands.length) return noMatch;\n const path = segmentGroup.segments[currentPathIndex];\n const command = commands[currentCommandIndex];\n // Do not try to consume command as part of the prefixing if it has outlets because it can\n // contain outlets other than the one being processed. Consuming the outlets command would\n // result in other outlets being ignored.\n if (isCommandWithOutlets(command)) {\n break;\n }\n const curr = `${command}`;\n const next = currentCommandIndex < commands.length - 1 ? commands[currentCommandIndex + 1] : null;\n if (currentPathIndex > 0 && curr === undefined) break;\n if (curr && next && typeof next === 'object' && next.outlets === undefined) {\n if (!compare(curr, next, path)) return noMatch;\n currentCommandIndex += 2;\n } else {\n if (!compare(curr, {}, path)) return noMatch;\n currentCommandIndex++;\n }\n currentPathIndex++;\n }\n return {\n match: true,\n pathIndex: currentPathIndex,\n commandIndex: currentCommandIndex\n };\n}\nfunction createNewSegmentGroup(segmentGroup, startIndex, commands) {\n const paths = segmentGroup.segments.slice(0, startIndex);\n let i = 0;\n while (i < commands.length) {\n const command = commands[i];\n if (isCommandWithOutlets(command)) {\n const children = createNewSegmentChildren(command.outlets);\n return new UrlSegmentGroup(paths, children);\n }\n // if we start with an object literal, we need to reuse the path part from the segment\n if (i === 0 && isMatrixParams(commands[0])) {\n const p = segmentGroup.segments[startIndex];\n paths.push(new UrlSegment(p.path, stringify(commands[0])));\n i++;\n continue;\n }\n const curr = isCommandWithOutlets(command) ? command.outlets[PRIMARY_OUTLET] : `${command}`;\n const next = i < commands.length - 1 ? commands[i + 1] : null;\n if (curr && next && isMatrixParams(next)) {\n paths.push(new UrlSegment(curr, stringify(next)));\n i += 2;\n } else {\n paths.push(new UrlSegment(curr, {}));\n i++;\n }\n }\n return new UrlSegmentGroup(paths, {});\n}\nfunction createNewSegmentChildren(outlets) {\n const children = {};\n Object.entries(outlets).forEach(([outlet, commands]) => {\n if (typeof commands === 'string') {\n commands = [commands];\n }\n if (commands !== null) {\n children[outlet] = createNewSegmentGroup(new UrlSegmentGroup([], {}), 0, commands);\n }\n });\n return children;\n}\nfunction stringify(params) {\n const res = {};\n Object.entries(params).forEach(([k, v]) => res[k] = `${v}`);\n return res;\n}\nfunction compare(path, params, segment) {\n return path == segment.path && shallowEqual(params, segment.parameters);\n}\nconst IMPERATIVE_NAVIGATION = 'imperative';\n/**\n * Identifies the type of a router event.\n *\n * @publicApi\n */\nvar EventType;\n(function (EventType) {\n EventType[EventType[\"NavigationStart\"] = 0] = \"NavigationStart\";\n EventType[EventType[\"NavigationEnd\"] = 1] = \"NavigationEnd\";\n EventType[EventType[\"NavigationCancel\"] = 2] = \"NavigationCancel\";\n EventType[EventType[\"NavigationError\"] = 3] = \"NavigationError\";\n EventType[EventType[\"RoutesRecognized\"] = 4] = \"RoutesRecognized\";\n EventType[EventType[\"ResolveStart\"] = 5] = \"ResolveStart\";\n EventType[EventType[\"ResolveEnd\"] = 6] = \"ResolveEnd\";\n EventType[EventType[\"GuardsCheckStart\"] = 7] = \"GuardsCheckStart\";\n EventType[EventType[\"GuardsCheckEnd\"] = 8] = \"GuardsCheckEnd\";\n EventType[EventType[\"RouteConfigLoadStart\"] = 9] = \"RouteConfigLoadStart\";\n EventType[EventType[\"RouteConfigLoadEnd\"] = 10] = \"RouteConfigLoadEnd\";\n EventType[EventType[\"ChildActivationStart\"] = 11] = \"ChildActivationStart\";\n EventType[EventType[\"ChildActivationEnd\"] = 12] = \"ChildActivationEnd\";\n EventType[EventType[\"ActivationStart\"] = 13] = \"ActivationStart\";\n EventType[EventType[\"ActivationEnd\"] = 14] = \"ActivationEnd\";\n EventType[EventType[\"Scroll\"] = 15] = \"Scroll\";\n EventType[EventType[\"NavigationSkipped\"] = 16] = \"NavigationSkipped\";\n})(EventType || (EventType = {}));\n/**\n * Base for events the router goes through, as opposed to events tied to a specific\n * route. Fired one time for any given navigation.\n *\n * The following code shows how a class subscribes to router events.\n *\n * ```ts\n * import {Event, RouterEvent, Router} from '@angular/router';\n *\n * class MyService {\n * constructor(public router: Router) {\n * router.events.pipe(\n * filter((e: Event | RouterEvent): e is RouterEvent => e instanceof RouterEvent)\n * ).subscribe((e: RouterEvent) => {\n * // Do something\n * });\n * }\n * }\n * ```\n *\n * @see {@link Event}\n * @see [Router events summary](guide/router-reference#router-events)\n * @publicApi\n */\nclass RouterEvent {\n constructor( /** A unique ID that the router assigns to every router navigation. */\n id, /** The URL that is the destination for this navigation. */\n url) {\n this.id = id;\n this.url = url;\n }\n}\n/**\n * An event triggered when a navigation starts.\n *\n * @publicApi\n */\nclass NavigationStart extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n navigationTrigger = 'imperative', /** @docsNotRequired */\n restoredState = null) {\n super(id, url);\n this.type = EventType.NavigationStart;\n this.navigationTrigger = navigationTrigger;\n this.restoredState = restoredState;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationStart(id: ${this.id}, url: '${this.url}')`;\n }\n}\n/**\n * An event triggered when a navigation ends successfully.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationCancel}\n * @see {@link NavigationError}\n *\n * @publicApi\n */\nclass NavigationEnd extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.type = EventType.NavigationEnd;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`;\n }\n}\n/**\n * A code for the `NavigationCancel` event of the `Router` to indicate the\n * reason a navigation failed.\n *\n * @publicApi\n */\nvar NavigationCancellationCode;\n(function (NavigationCancellationCode) {\n /**\n * A navigation failed because a guard returned a `UrlTree` to redirect.\n */\n NavigationCancellationCode[NavigationCancellationCode[\"Redirect\"] = 0] = \"Redirect\";\n /**\n * A navigation failed because a more recent navigation started.\n */\n NavigationCancellationCode[NavigationCancellationCode[\"SupersededByNewNavigation\"] = 1] = \"SupersededByNewNavigation\";\n /**\n * A navigation failed because one of the resolvers completed without emitting a value.\n */\n NavigationCancellationCode[NavigationCancellationCode[\"NoDataFromResolver\"] = 2] = \"NoDataFromResolver\";\n /**\n * A navigation failed because a guard returned `false`.\n */\n NavigationCancellationCode[NavigationCancellationCode[\"GuardRejected\"] = 3] = \"GuardRejected\";\n})(NavigationCancellationCode || (NavigationCancellationCode = {}));\n/**\n * A code for the `NavigationSkipped` event of the `Router` to indicate the\n * reason a navigation was skipped.\n *\n * @publicApi\n */\nvar NavigationSkippedCode;\n(function (NavigationSkippedCode) {\n /**\n * A navigation was skipped because the navigation URL was the same as the current Router URL.\n */\n NavigationSkippedCode[NavigationSkippedCode[\"IgnoredSameUrlNavigation\"] = 0] = \"IgnoredSameUrlNavigation\";\n /**\n * A navigation was skipped because the configured `UrlHandlingStrategy` return `false` for both\n * the current Router URL and the target of the navigation.\n *\n * @see {@link UrlHandlingStrategy}\n */\n NavigationSkippedCode[NavigationSkippedCode[\"IgnoredByUrlHandlingStrategy\"] = 1] = \"IgnoredByUrlHandlingStrategy\";\n})(NavigationSkippedCode || (NavigationSkippedCode = {}));\n/**\n * An event triggered when a navigation is canceled, directly or indirectly.\n * This can happen for several reasons including when a route guard\n * returns `false` or initiates a redirect by returning a `UrlTree`.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationEnd}\n * @see {@link NavigationError}\n *\n * @publicApi\n */\nclass NavigationCancel extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url,\n /**\n * A description of why the navigation was cancelled. For debug purposes only. Use `code`\n * instead for a stable cancellation reason that can be used in production.\n */\n reason,\n /**\n * A code to indicate why the navigation was canceled. This cancellation code is stable for\n * the reason and can be relied on whereas the `reason` string could change and should not be\n * used in production.\n */\n code) {\n super(id, url);\n this.reason = reason;\n this.code = code;\n this.type = EventType.NavigationCancel;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationCancel(id: ${this.id}, url: '${this.url}')`;\n }\n}\n/**\n * An event triggered when a navigation is skipped.\n * This can happen for a couple reasons including onSameUrlHandling\n * is set to `ignore` and the navigation URL is not different than the\n * current state.\n *\n * @publicApi\n */\nclass NavigationSkipped extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url,\n /**\n * A description of why the navigation was skipped. For debug purposes only. Use `code`\n * instead for a stable skipped reason that can be used in production.\n */\n reason,\n /**\n * A code to indicate why the navigation was skipped. This code is stable for\n * the reason and can be relied on whereas the `reason` string could change and should not be\n * used in production.\n */\n code) {\n super(id, url);\n this.reason = reason;\n this.code = code;\n this.type = EventType.NavigationSkipped;\n }\n}\n/**\n * An event triggered when a navigation fails due to an unexpected error.\n *\n * @see {@link NavigationStart}\n * @see {@link NavigationEnd}\n * @see {@link NavigationCancel}\n *\n * @publicApi\n */\nclass NavigationError extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n error,\n /**\n * The target of the navigation when the error occurred.\n *\n * Note that this can be `undefined` because an error could have occurred before the\n * `RouterStateSnapshot` was created for the navigation.\n */\n target) {\n super(id, url);\n this.error = error;\n this.target = target;\n this.type = EventType.NavigationError;\n }\n /** @docsNotRequired */\n toString() {\n return `NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`;\n }\n}\n/**\n * An event triggered when routes are recognized.\n *\n * @publicApi\n */\nclass RoutesRecognized extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = EventType.RoutesRecognized;\n }\n /** @docsNotRequired */\n toString() {\n return `RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the start of the Guard phase of routing.\n *\n * @see {@link GuardsCheckEnd}\n *\n * @publicApi\n */\nclass GuardsCheckStart extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = EventType.GuardsCheckStart;\n }\n toString() {\n return `GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the end of the Guard phase of routing.\n *\n * @see {@link GuardsCheckStart}\n *\n * @publicApi\n */\nclass GuardsCheckEnd extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state, /** @docsNotRequired */\n shouldActivate) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.shouldActivate = shouldActivate;\n this.type = EventType.GuardsCheckEnd;\n }\n toString() {\n return `GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`;\n }\n}\n/**\n * An event triggered at the start of the Resolve phase of routing.\n *\n * Runs in the \"resolve\" phase whether or not there is anything to resolve.\n * In future, may change to only run when there are things to be resolved.\n *\n * @see {@link ResolveEnd}\n *\n * @publicApi\n */\nclass ResolveStart extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = EventType.ResolveStart;\n }\n toString() {\n return `ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered at the end of the Resolve phase of routing.\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ResolveEnd extends RouterEvent {\n constructor( /** @docsNotRequired */\n id, /** @docsNotRequired */\n url, /** @docsNotRequired */\n urlAfterRedirects, /** @docsNotRequired */\n state) {\n super(id, url);\n this.urlAfterRedirects = urlAfterRedirects;\n this.state = state;\n this.type = EventType.ResolveEnd;\n }\n toString() {\n return `ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`;\n }\n}\n/**\n * An event triggered before lazy loading a route configuration.\n *\n * @see {@link RouteConfigLoadEnd}\n *\n * @publicApi\n */\nclass RouteConfigLoadStart {\n constructor( /** @docsNotRequired */\n route) {\n this.route = route;\n this.type = EventType.RouteConfigLoadStart;\n }\n toString() {\n return `RouteConfigLoadStart(path: ${this.route.path})`;\n }\n}\n/**\n * An event triggered when a route has been lazy loaded.\n *\n * @see {@link RouteConfigLoadStart}\n *\n * @publicApi\n */\nclass RouteConfigLoadEnd {\n constructor( /** @docsNotRequired */\n route) {\n this.route = route;\n this.type = EventType.RouteConfigLoadEnd;\n }\n toString() {\n return `RouteConfigLoadEnd(path: ${this.route.path})`;\n }\n}\n/**\n * An event triggered at the start of the child-activation\n * part of the Resolve phase of routing.\n * @see {@link ChildActivationEnd}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ChildActivationStart {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = EventType.ChildActivationStart;\n }\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationStart(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the end of the child-activation part\n * of the Resolve phase of routing.\n * @see {@link ChildActivationStart}\n * @see {@link ResolveStart}\n * @publicApi\n */\nclass ChildActivationEnd {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = EventType.ChildActivationEnd;\n }\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ChildActivationEnd(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the start of the activation part\n * of the Resolve phase of routing.\n * @see {@link ActivationEnd}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ActivationStart {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = EventType.ActivationStart;\n }\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationStart(path: '${path}')`;\n }\n}\n/**\n * An event triggered at the end of the activation part\n * of the Resolve phase of routing.\n * @see {@link ActivationStart}\n * @see {@link ResolveStart}\n *\n * @publicApi\n */\nclass ActivationEnd {\n constructor( /** @docsNotRequired */\n snapshot) {\n this.snapshot = snapshot;\n this.type = EventType.ActivationEnd;\n }\n toString() {\n const path = this.snapshot.routeConfig && this.snapshot.routeConfig.path || '';\n return `ActivationEnd(path: '${path}')`;\n }\n}\n/**\n * An event triggered by scrolling.\n *\n * @publicApi\n */\nclass Scroll {\n constructor( /** @docsNotRequired */\n routerEvent, /** @docsNotRequired */\n position, /** @docsNotRequired */\n anchor) {\n this.routerEvent = routerEvent;\n this.position = position;\n this.anchor = anchor;\n this.type = EventType.Scroll;\n }\n toString() {\n const pos = this.position ? `${this.position[0]}, ${this.position[1]}` : null;\n return `Scroll(anchor: '${this.anchor}', position: '${pos}')`;\n }\n}\nclass BeforeActivateRoutes {}\nclass RedirectRequest {\n constructor(url) {\n this.url = url;\n }\n}\nfunction stringifyEvent(routerEvent) {\n switch (routerEvent.type) {\n case EventType.ActivationEnd:\n return `ActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case EventType.ActivationStart:\n return `ActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case EventType.ChildActivationEnd:\n return `ChildActivationEnd(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case EventType.ChildActivationStart:\n return `ChildActivationStart(path: '${routerEvent.snapshot.routeConfig?.path || ''}')`;\n case EventType.GuardsCheckEnd:\n return `GuardsCheckEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state}, shouldActivate: ${routerEvent.shouldActivate})`;\n case EventType.GuardsCheckStart:\n return `GuardsCheckStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case EventType.NavigationCancel:\n return `NavigationCancel(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case EventType.NavigationSkipped:\n return `NavigationSkipped(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case EventType.NavigationEnd:\n return `NavigationEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}')`;\n case EventType.NavigationError:\n return `NavigationError(id: ${routerEvent.id}, url: '${routerEvent.url}', error: ${routerEvent.error})`;\n case EventType.NavigationStart:\n return `NavigationStart(id: ${routerEvent.id}, url: '${routerEvent.url}')`;\n case EventType.ResolveEnd:\n return `ResolveEnd(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case EventType.ResolveStart:\n return `ResolveStart(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case EventType.RouteConfigLoadEnd:\n return `RouteConfigLoadEnd(path: ${routerEvent.route.path})`;\n case EventType.RouteConfigLoadStart:\n return `RouteConfigLoadStart(path: ${routerEvent.route.path})`;\n case EventType.RoutesRecognized:\n return `RoutesRecognized(id: ${routerEvent.id}, url: '${routerEvent.url}', urlAfterRedirects: '${routerEvent.urlAfterRedirects}', state: ${routerEvent.state})`;\n case EventType.Scroll:\n const pos = routerEvent.position ? `${routerEvent.position[0]}, ${routerEvent.position[1]}` : null;\n return `Scroll(anchor: '${routerEvent.anchor}', position: '${pos}')`;\n }\n}\n\n/**\n * Store contextual information about a `RouterOutlet`\n *\n * @publicApi\n */\nclass OutletContext {\n constructor() {\n this.outlet = null;\n this.route = null;\n this.injector = null;\n this.children = new ChildrenOutletContexts();\n this.attachRef = null;\n }\n}\n/**\n * Store contextual information about the children (= nested) `RouterOutlet`\n *\n * @publicApi\n */\nclass ChildrenOutletContexts {\n constructor() {\n // contexts for child outlets, by name.\n this.contexts = new Map();\n }\n /** Called when a `RouterOutlet` directive is instantiated */\n onChildOutletCreated(childName, outlet) {\n const context = this.getOrCreateContext(childName);\n context.outlet = outlet;\n this.contexts.set(childName, context);\n }\n /**\n * Called when a `RouterOutlet` directive is destroyed.\n * We need to keep the context as the outlet could be destroyed inside a NgIf and might be\n * re-created later.\n */\n onChildOutletDestroyed(childName) {\n const context = this.getContext(childName);\n if (context) {\n context.outlet = null;\n context.attachRef = null;\n }\n }\n /**\n * Called when the corresponding route is deactivated during navigation.\n * Because the component get destroyed, all children outlet are destroyed.\n */\n onOutletDeactivated() {\n const contexts = this.contexts;\n this.contexts = new Map();\n return contexts;\n }\n onOutletReAttached(contexts) {\n this.contexts = contexts;\n }\n getOrCreateContext(childName) {\n let context = this.getContext(childName);\n if (!context) {\n context = new OutletContext();\n this.contexts.set(childName, context);\n }\n return context;\n }\n getContext(childName) {\n return this.contexts.get(childName) || null;\n }\n static {\n this.ɵfac = function ChildrenOutletContexts_Factory(t) {\n return new (t || ChildrenOutletContexts)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ChildrenOutletContexts,\n factory: ChildrenOutletContexts.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ChildrenOutletContexts, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nclass Tree {\n constructor(root) {\n this._root = root;\n }\n get root() {\n return this._root.value;\n }\n /**\n * @internal\n */\n parent(t) {\n const p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n /**\n * @internal\n */\n children(t) {\n const n = findNode(t, this._root);\n return n ? n.children.map(t => t.value) : [];\n }\n /**\n * @internal\n */\n firstChild(t) {\n const n = findNode(t, this._root);\n return n && n.children.length > 0 ? n.children[0].value : null;\n }\n /**\n * @internal\n */\n siblings(t) {\n const p = findPath(t, this._root);\n if (p.length < 2) return [];\n const c = p[p.length - 2].children.map(c => c.value);\n return c.filter(cc => cc !== t);\n }\n /**\n * @internal\n */\n pathFromRoot(t) {\n return findPath(t, this._root).map(s => s.value);\n }\n}\n// DFS for the node matching the value\nfunction findNode(value, node) {\n if (value === node.value) return node;\n for (const child of node.children) {\n const node = findNode(value, child);\n if (node) return node;\n }\n return null;\n}\n// Return the path to the node with the given value using DFS\nfunction findPath(value, node) {\n if (value === node.value) return [node];\n for (const child of node.children) {\n const path = findPath(value, child);\n if (path.length) {\n path.unshift(node);\n return path;\n }\n }\n return [];\n}\nclass TreeNode {\n constructor(value, children) {\n this.value = value;\n this.children = children;\n }\n toString() {\n return `TreeNode(${this.value})`;\n }\n}\n// Return the list of T indexed by outlet name\nfunction nodeChildrenAsMap(node) {\n const map = {};\n if (node) {\n node.children.forEach(child => map[child.value.outlet] = child);\n }\n return map;\n}\n\n/**\n * Represents the state of the router as a tree of activated routes.\n *\n * @usageNotes\n *\n * Every node in the route tree is an `ActivatedRoute` instance\n * that knows about the \"consumed\" URL segments, the extracted parameters,\n * and the resolved data.\n * Use the `ActivatedRoute` properties to traverse the tree from any node.\n *\n * The following fragment shows how a component gets the root node\n * of the current state to establish its own route tree:\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const root: ActivatedRoute = state.root;\n * const child = root.firstChild;\n * const id: Observable = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * @see {@link ActivatedRoute}\n * @see [Getting route information](guide/router#getting-route-information)\n *\n * @publicApi\n */\nclass RouterState extends Tree {\n /** @internal */\n constructor(root, /** The current snapshot of the router state */\n snapshot) {\n super(root);\n this.snapshot = snapshot;\n setRouterState(this, root);\n }\n toString() {\n return this.snapshot.toString();\n }\n}\nfunction createEmptyState(rootComponent) {\n const snapshot = createEmptyStateSnapshot(rootComponent);\n const emptyUrl = new BehaviorSubject([new UrlSegment('', {})]);\n const emptyParams = new BehaviorSubject({});\n const emptyData = new BehaviorSubject({});\n const emptyQueryParams = new BehaviorSubject({});\n const fragment = new BehaviorSubject('');\n const activated = new ActivatedRoute(emptyUrl, emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, snapshot.root);\n activated.snapshot = snapshot.root;\n return new RouterState(new TreeNode(activated, []), snapshot);\n}\nfunction createEmptyStateSnapshot(rootComponent) {\n const emptyParams = {};\n const emptyData = {};\n const emptyQueryParams = {};\n const fragment = '';\n const activated = new ActivatedRouteSnapshot([], emptyParams, emptyQueryParams, fragment, emptyData, PRIMARY_OUTLET, rootComponent, null, {});\n return new RouterStateSnapshot('', new TreeNode(activated, []));\n}\n/**\n * Provides access to information about a route associated with a component\n * that is loaded in an outlet.\n * Use to traverse the `RouterState` tree and extract information from nodes.\n *\n * The following example shows how to construct a component using information from a\n * currently activated route.\n *\n * Note: the observables in this class only emit when the current and previous values differ based\n * on shallow equality. For example, changing deeply nested properties in resolved `data` will not\n * cause the `ActivatedRoute.data` `Observable` to emit a new value.\n *\n * {@example router/activated-route/module.ts region=\"activated-route\"\n * header=\"activated-route.component.ts\"}\n *\n * @see [Getting route information](guide/router#getting-route-information)\n *\n * @publicApi\n */\nclass ActivatedRoute {\n /** @internal */\n constructor( /** @internal */\n urlSubject, /** @internal */\n paramsSubject, /** @internal */\n queryParamsSubject, /** @internal */\n fragmentSubject, /** @internal */\n dataSubject, /** The outlet name of the route, a constant. */\n outlet, /** The component of the route, a constant. */\n component, futureSnapshot) {\n this.urlSubject = urlSubject;\n this.paramsSubject = paramsSubject;\n this.queryParamsSubject = queryParamsSubject;\n this.fragmentSubject = fragmentSubject;\n this.dataSubject = dataSubject;\n this.outlet = outlet;\n this.component = component;\n this._futureSnapshot = futureSnapshot;\n this.title = this.dataSubject?.pipe(map(d => d[RouteTitleKey])) ?? of(undefined);\n // TODO(atscott): Verify that these can be changed to `.asObservable()` with TGP.\n this.url = urlSubject;\n this.params = paramsSubject;\n this.queryParams = queryParamsSubject;\n this.fragment = fragmentSubject;\n this.data = dataSubject;\n }\n /** The configuration used to match this route. */\n get routeConfig() {\n return this._futureSnapshot.routeConfig;\n }\n /** The root of the router state. */\n get root() {\n return this._routerState.root;\n }\n /** The parent of this route in the router state tree. */\n get parent() {\n return this._routerState.parent(this);\n }\n /** The first child of this route in the router state tree. */\n get firstChild() {\n return this._routerState.firstChild(this);\n }\n /** The children of this route in the router state tree. */\n get children() {\n return this._routerState.children(this);\n }\n /** The path from the root of the router state tree to this route. */\n get pathFromRoot() {\n return this._routerState.pathFromRoot(this);\n }\n /**\n * An Observable that contains a map of the required and optional parameters\n * specific to the route.\n * The map supports retrieving single and multiple values from the same parameter.\n */\n get paramMap() {\n this._paramMap ??= this.params.pipe(map(p => convertToParamMap(p)));\n return this._paramMap;\n }\n /**\n * An Observable that contains a map of the query parameters available to all routes.\n * The map supports retrieving single and multiple values from the query parameter.\n */\n get queryParamMap() {\n this._queryParamMap ??= this.queryParams.pipe(map(p => convertToParamMap(p)));\n return this._queryParamMap;\n }\n toString() {\n return this.snapshot ? this.snapshot.toString() : `Future(${this._futureSnapshot})`;\n }\n}\n/**\n * Returns the inherited params, data, and resolve for a given route.\n *\n * By default, we do not inherit parent data unless the current route is path-less or the parent\n * route is component-less.\n */\nfunction getInherited(route, parent, paramsInheritanceStrategy = 'emptyOnly') {\n let inherited;\n const {\n routeConfig\n } = route;\n if (parent !== null && (paramsInheritanceStrategy === 'always' ||\n // inherit parent data if route is empty path\n routeConfig?.path === '' ||\n // inherit parent data if parent was componentless\n !parent.component && !parent.routeConfig?.loadComponent)) {\n inherited = {\n params: {\n ...parent.params,\n ...route.params\n },\n data: {\n ...parent.data,\n ...route.data\n },\n resolve: {\n // Snapshots are created with data inherited from parent and guards (i.e. canActivate) can\n // change data because it's not frozen...\n // This first line could be deleted chose to break/disallow mutating the `data` object in\n // guards.\n // Note that data from parents still override this mutated data so anyone relying on this\n // might be surprised that it doesn't work if parent data is inherited but otherwise does.\n ...route.data,\n // Ensure inherited resolved data overrides inherited static data\n ...parent.data,\n // static data from the current route overrides any inherited data\n ...routeConfig?.data,\n // resolved data from current route overrides everything\n ...route._resolvedData\n }\n };\n } else {\n inherited = {\n params: {\n ...route.params\n },\n data: {\n ...route.data\n },\n resolve: {\n ...route.data,\n ...(route._resolvedData ?? {})\n }\n };\n }\n if (routeConfig && hasStaticTitle(routeConfig)) {\n inherited.resolve[RouteTitleKey] = routeConfig.title;\n }\n return inherited;\n}\n/**\n * @description\n *\n * Contains the information about a route associated with a component loaded in an\n * outlet at a particular moment in time. ActivatedRouteSnapshot can also be used to\n * traverse the router state tree.\n *\n * The following example initializes a component with route information extracted\n * from the snapshot of the root node at the time of creation.\n *\n * ```\n * @Component({templateUrl:'./my-component.html'})\n * class MyComponent {\n * constructor(route: ActivatedRoute) {\n * const id: string = route.snapshot.params.id;\n * const url: string = route.snapshot.url.join('');\n * const user = route.snapshot.data.user;\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass ActivatedRouteSnapshot {\n /** The resolved route title */\n get title() {\n // Note: This _must_ be a getter because the data is mutated in the resolvers. Title will not be\n // available at the time of class instantiation.\n return this.data?.[RouteTitleKey];\n }\n /** @internal */\n constructor( /** The URL segments matched by this route */\n url,\n /**\n * The matrix parameters scoped to this route.\n *\n * You can compute all params (or data) in the router state or to get params outside\n * of an activated component by traversing the `RouterState` tree as in the following\n * example:\n * ```\n * collectRouteParams(router: Router) {\n * let params = {};\n * let stack: ActivatedRouteSnapshot[] = [router.routerState.snapshot.root];\n * while (stack.length > 0) {\n * const route = stack.pop()!;\n * params = {...params, ...route.params};\n * stack.push(...route.children);\n * }\n * return params;\n * }\n * ```\n */\n params, /** The query parameters shared by all the routes */\n queryParams, /** The URL fragment shared by all the routes */\n fragment, /** The static and resolved data of this route */\n data, /** The outlet name of the route */\n outlet, /** The component of the route */\n component, routeConfig, resolve) {\n this.url = url;\n this.params = params;\n this.queryParams = queryParams;\n this.fragment = fragment;\n this.data = data;\n this.outlet = outlet;\n this.component = component;\n this.routeConfig = routeConfig;\n this._resolve = resolve;\n }\n /** The root of the router state */\n get root() {\n return this._routerState.root;\n }\n /** The parent of this route in the router state tree */\n get parent() {\n return this._routerState.parent(this);\n }\n /** The first child of this route in the router state tree */\n get firstChild() {\n return this._routerState.firstChild(this);\n }\n /** The children of this route in the router state tree */\n get children() {\n return this._routerState.children(this);\n }\n /** The path from the root of the router state tree to this route */\n get pathFromRoot() {\n return this._routerState.pathFromRoot(this);\n }\n get paramMap() {\n this._paramMap ??= convertToParamMap(this.params);\n return this._paramMap;\n }\n get queryParamMap() {\n this._queryParamMap ??= convertToParamMap(this.queryParams);\n return this._queryParamMap;\n }\n toString() {\n const url = this.url.map(segment => segment.toString()).join('/');\n const matched = this.routeConfig ? this.routeConfig.path : '';\n return `Route(url:'${url}', path:'${matched}')`;\n }\n}\n/**\n * @description\n *\n * Represents the state of the router at a moment in time.\n *\n * This is a tree of activated route snapshots. Every node in this tree knows about\n * the \"consumed\" URL segments, the extracted parameters, and the resolved data.\n *\n * The following example shows how a component is initialized with information\n * from the snapshot of the root node's state at the time of creation.\n *\n * ```\n * @Component({templateUrl:'template.html'})\n * class MyComponent {\n * constructor(router: Router) {\n * const state: RouterState = router.routerState;\n * const snapshot: RouterStateSnapshot = state.snapshot;\n * const root: ActivatedRouteSnapshot = snapshot.root;\n * const child = root.firstChild;\n * const id: Observable = child.params.map(p => p.id);\n * //...\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass RouterStateSnapshot extends Tree {\n /** @internal */\n constructor( /** The url from which this snapshot was created */\n url, root) {\n super(root);\n this.url = url;\n setRouterState(this, root);\n }\n toString() {\n return serializeNode(this._root);\n }\n}\nfunction setRouterState(state, node) {\n node.value._routerState = state;\n node.children.forEach(c => setRouterState(state, c));\n}\nfunction serializeNode(node) {\n const c = node.children.length > 0 ? ` { ${node.children.map(serializeNode).join(', ')} } ` : '';\n return `${node.value}${c}`;\n}\n/**\n * The expectation is that the activate route is created with the right set of parameters.\n * So we push new values into the observables only when they are not the initial values.\n * And we detect that by checking if the snapshot field is set.\n */\nfunction advanceActivatedRoute(route) {\n if (route.snapshot) {\n const currentSnapshot = route.snapshot;\n const nextSnapshot = route._futureSnapshot;\n route.snapshot = nextSnapshot;\n if (!shallowEqual(currentSnapshot.queryParams, nextSnapshot.queryParams)) {\n route.queryParamsSubject.next(nextSnapshot.queryParams);\n }\n if (currentSnapshot.fragment !== nextSnapshot.fragment) {\n route.fragmentSubject.next(nextSnapshot.fragment);\n }\n if (!shallowEqual(currentSnapshot.params, nextSnapshot.params)) {\n route.paramsSubject.next(nextSnapshot.params);\n }\n if (!shallowEqualArrays(currentSnapshot.url, nextSnapshot.url)) {\n route.urlSubject.next(nextSnapshot.url);\n }\n if (!shallowEqual(currentSnapshot.data, nextSnapshot.data)) {\n route.dataSubject.next(nextSnapshot.data);\n }\n } else {\n route.snapshot = route._futureSnapshot;\n // this is for resolved data\n route.dataSubject.next(route._futureSnapshot.data);\n }\n}\nfunction equalParamsAndUrlSegments(a, b) {\n const equalUrlParams = shallowEqual(a.params, b.params) && equalSegments(a.url, b.url);\n const parentsMismatch = !a.parent !== !b.parent;\n return equalUrlParams && !parentsMismatch && (!a.parent || equalParamsAndUrlSegments(a.parent, b.parent));\n}\nfunction hasStaticTitle(config) {\n return typeof config.title === 'string' || config.title === null;\n}\n\n/**\n * @description\n *\n * Acts as a placeholder that Angular dynamically fills based on the current router state.\n *\n * Each outlet can have a unique name, determined by the optional `name` attribute.\n * The name cannot be set or changed dynamically. If not set, default value is \"primary\".\n *\n * ```\n * \n * \n * \n * ```\n *\n * Named outlets can be the targets of secondary routes.\n * The `Route` object for a secondary route has an `outlet` property to identify the target outlet:\n *\n * `{path: , component: , outlet: }`\n *\n * Using named outlets and secondary routes, you can target multiple outlets in\n * the same `RouterLink` directive.\n *\n * The router keeps track of separate branches in a navigation tree for each named outlet and\n * generates a representation of that tree in the URL.\n * The URL for a secondary route uses the following syntax to specify both the primary and secondary\n * routes at the same time:\n *\n * `http://base-path/primary-route-path(outlet-name:route-path)`\n *\n * A router outlet emits an activate event when a new component is instantiated,\n * deactivate event when a component is destroyed.\n * An attached event emits when the `RouteReuseStrategy` instructs the outlet to reattach the\n * subtree, and the detached event emits when the `RouteReuseStrategy` instructs the outlet to\n * detach the subtree.\n *\n * ```\n * \n * ```\n *\n * @see [Routing tutorial](guide/router-tutorial-toh#named-outlets \"Example of a named\n * outlet and secondary route configuration\").\n * @see {@link RouterLink}\n * @see {@link Route}\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterOutlet {\n constructor() {\n this.activated = null;\n this._activatedRoute = null;\n /**\n * The name of the outlet\n *\n * @see [named outlets](guide/router-tutorial-toh#displaying-multiple-routes-in-named-outlets)\n */\n this.name = PRIMARY_OUTLET;\n this.activateEvents = new EventEmitter();\n this.deactivateEvents = new EventEmitter();\n /**\n * Emits an attached component instance when the `RouteReuseStrategy` instructs to re-attach a\n * previously detached subtree.\n **/\n this.attachEvents = new EventEmitter();\n /**\n * Emits a detached component instance when the `RouteReuseStrategy` instructs to detach the\n * subtree.\n */\n this.detachEvents = new EventEmitter();\n this.parentContexts = inject(ChildrenOutletContexts);\n this.location = inject(ViewContainerRef);\n this.changeDetector = inject(ChangeDetectorRef);\n this.environmentInjector = inject(EnvironmentInjector);\n this.inputBinder = inject(INPUT_BINDER, {\n optional: true\n });\n /** @nodoc */\n this.supportsBindingToComponentInputs = true;\n }\n /** @internal */\n get activatedComponentRef() {\n return this.activated;\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (changes['name']) {\n const {\n firstChange,\n previousValue\n } = changes['name'];\n if (firstChange) {\n // The first change is handled by ngOnInit. Because ngOnChanges doesn't get called when no\n // input is set at all, we need to centrally handle the first change there.\n return;\n }\n // unregister with the old name\n if (this.isTrackedInParentContexts(previousValue)) {\n this.deactivate();\n this.parentContexts.onChildOutletDestroyed(previousValue);\n }\n // register the new name\n this.initializeOutletWithName();\n }\n }\n /** @nodoc */\n ngOnDestroy() {\n // Ensure that the registered outlet is this one before removing it on the context.\n if (this.isTrackedInParentContexts(this.name)) {\n this.parentContexts.onChildOutletDestroyed(this.name);\n }\n this.inputBinder?.unsubscribeFromRouteData(this);\n }\n isTrackedInParentContexts(outletName) {\n return this.parentContexts.getContext(outletName)?.outlet === this;\n }\n /** @nodoc */\n ngOnInit() {\n this.initializeOutletWithName();\n }\n initializeOutletWithName() {\n this.parentContexts.onChildOutletCreated(this.name, this);\n if (this.activated) {\n return;\n }\n // If the outlet was not instantiated at the time the route got activated we need to populate\n // the outlet when it is initialized (ie inside a NgIf)\n const context = this.parentContexts.getContext(this.name);\n if (context?.route) {\n if (context.attachRef) {\n // `attachRef` is populated when there is an existing component to mount\n this.attach(context.attachRef, context.route);\n } else {\n // otherwise the component defined in the configuration is created\n this.activateWith(context.route, context.injector);\n }\n }\n }\n get isActivated() {\n return !!this.activated;\n }\n /**\n * @returns The currently activated component instance.\n * @throws An error if the outlet is not activated.\n */\n get component() {\n if (!this.activated) throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n return this.activated.instance;\n }\n get activatedRoute() {\n if (!this.activated) throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n return this._activatedRoute;\n }\n get activatedRouteData() {\n if (this._activatedRoute) {\n return this._activatedRoute.snapshot.data;\n }\n return {};\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to detach the subtree\n */\n detach() {\n if (!this.activated) throw new ɵRuntimeError(4012 /* RuntimeErrorCode.OUTLET_NOT_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Outlet is not activated');\n this.location.detach();\n const cmp = this.activated;\n this.activated = null;\n this._activatedRoute = null;\n this.detachEvents.emit(cmp.instance);\n return cmp;\n }\n /**\n * Called when the `RouteReuseStrategy` instructs to re-attach a previously detached subtree\n */\n attach(ref, activatedRoute) {\n this.activated = ref;\n this._activatedRoute = activatedRoute;\n this.location.insert(ref.hostView);\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n this.attachEvents.emit(ref.instance);\n }\n deactivate() {\n if (this.activated) {\n const c = this.component;\n this.activated.destroy();\n this.activated = null;\n this._activatedRoute = null;\n this.deactivateEvents.emit(c);\n }\n }\n activateWith(activatedRoute, environmentInjector) {\n if (this.isActivated) {\n throw new ɵRuntimeError(4013 /* RuntimeErrorCode.OUTLET_ALREADY_ACTIVATED */, (typeof ngDevMode === 'undefined' || ngDevMode) && 'Cannot activate an already activated outlet');\n }\n this._activatedRoute = activatedRoute;\n const location = this.location;\n const snapshot = activatedRoute.snapshot;\n const component = snapshot.component;\n const childContexts = this.parentContexts.getOrCreateContext(this.name).children;\n const injector = new OutletInjector(activatedRoute, childContexts, location.injector);\n this.activated = location.createComponent(component, {\n index: location.length,\n injector,\n environmentInjector: environmentInjector ?? this.environmentInjector\n });\n // Calling `markForCheck` to make sure we will run the change detection when the\n // `RouterOutlet` is inside a `ChangeDetectionStrategy.OnPush` component.\n this.changeDetector.markForCheck();\n this.inputBinder?.bindActivatedRouteToOutletComponent(this);\n this.activateEvents.emit(this.activated.instance);\n }\n static {\n this.ɵfac = function RouterOutlet_Factory(t) {\n return new (t || RouterOutlet)();\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RouterOutlet,\n selectors: [[\"router-outlet\"]],\n inputs: {\n name: \"name\"\n },\n outputs: {\n activateEvents: \"activate\",\n deactivateEvents: \"deactivate\",\n attachEvents: \"attach\",\n detachEvents: \"detach\"\n },\n exportAs: [\"outlet\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterOutlet, [{\n type: Directive,\n args: [{\n selector: 'router-outlet',\n exportAs: 'outlet',\n standalone: true\n }]\n }], null, {\n name: [{\n type: Input\n }],\n activateEvents: [{\n type: Output,\n args: ['activate']\n }],\n deactivateEvents: [{\n type: Output,\n args: ['deactivate']\n }],\n attachEvents: [{\n type: Output,\n args: ['attach']\n }],\n detachEvents: [{\n type: Output,\n args: ['detach']\n }]\n });\n})();\nclass OutletInjector {\n constructor(route, childContexts, parent) {\n this.route = route;\n this.childContexts = childContexts;\n this.parent = parent;\n }\n get(token, notFoundValue) {\n if (token === ActivatedRoute) {\n return this.route;\n }\n if (token === ChildrenOutletContexts) {\n return this.childContexts;\n }\n return this.parent.get(token, notFoundValue);\n }\n}\nconst INPUT_BINDER = new InjectionToken('');\n/**\n * Injectable used as a tree-shakable provider for opting in to binding router data to component\n * inputs.\n *\n * The RouterOutlet registers itself with this service when an `ActivatedRoute` is attached or\n * activated. When this happens, the service subscribes to the `ActivatedRoute` observables (params,\n * queryParams, data) and sets the inputs of the component using `ComponentRef.setInput`.\n * Importantly, when an input does not have an item in the route data with a matching key, this\n * input is set to `undefined`. If it were not done this way, the previous information would be\n * retained if the data got removed from the route (i.e. if a query parameter is removed).\n *\n * The `RouterOutlet` should unregister itself when destroyed via `unsubscribeFromRouteData` so that\n * the subscriptions are cleaned up.\n */\nclass RoutedComponentInputBinder {\n constructor() {\n this.outletDataSubscriptions = new Map();\n }\n bindActivatedRouteToOutletComponent(outlet) {\n this.unsubscribeFromRouteData(outlet);\n this.subscribeToRouteData(outlet);\n }\n unsubscribeFromRouteData(outlet) {\n this.outletDataSubscriptions.get(outlet)?.unsubscribe();\n this.outletDataSubscriptions.delete(outlet);\n }\n subscribeToRouteData(outlet) {\n const {\n activatedRoute\n } = outlet;\n const dataSubscription = combineLatest([activatedRoute.queryParams, activatedRoute.params, activatedRoute.data]).pipe(switchMap(([queryParams, params, data], index) => {\n data = {\n ...queryParams,\n ...params,\n ...data\n };\n // Get the first result from the data subscription synchronously so it's available to\n // the component as soon as possible (and doesn't require a second change detection).\n if (index === 0) {\n return of(data);\n }\n // Promise.resolve is used to avoid synchronously writing the wrong data when\n // two of the Observables in the `combineLatest` stream emit one after\n // another.\n return Promise.resolve(data);\n })).subscribe(data => {\n // Outlet may have been deactivated or changed names to be associated with a different\n // route\n if (!outlet.isActivated || !outlet.activatedComponentRef || outlet.activatedRoute !== activatedRoute || activatedRoute.component === null) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n const mirror = reflectComponentType(activatedRoute.component);\n if (!mirror) {\n this.unsubscribeFromRouteData(outlet);\n return;\n }\n for (const {\n templateName\n } of mirror.inputs) {\n outlet.activatedComponentRef.setInput(templateName, data[templateName]);\n }\n });\n this.outletDataSubscriptions.set(outlet, dataSubscription);\n }\n static {\n this.ɵfac = function RoutedComponentInputBinder_Factory(t) {\n return new (t || RoutedComponentInputBinder)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RoutedComponentInputBinder,\n factory: RoutedComponentInputBinder.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RoutedComponentInputBinder, [{\n type: Injectable\n }], null, null);\n})();\nfunction createRouterState(routeReuseStrategy, curr, prevState) {\n const root = createNode(routeReuseStrategy, curr._root, prevState ? prevState._root : undefined);\n return new RouterState(root, curr);\n}\nfunction createNode(routeReuseStrategy, curr, prevState) {\n // reuse an activated route that is currently displayed on the screen\n if (prevState && routeReuseStrategy.shouldReuseRoute(curr.value, prevState.value.snapshot)) {\n const value = prevState.value;\n value._futureSnapshot = curr.value;\n const children = createOrReuseChildren(routeReuseStrategy, curr, prevState);\n return new TreeNode(value, children);\n } else {\n if (routeReuseStrategy.shouldAttach(curr.value)) {\n // retrieve an activated route that is used to be displayed, but is not currently displayed\n const detachedRouteHandle = routeReuseStrategy.retrieve(curr.value);\n if (detachedRouteHandle !== null) {\n const tree = detachedRouteHandle.route;\n tree.value._futureSnapshot = curr.value;\n tree.children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return tree;\n }\n }\n const value = createActivatedRoute(curr.value);\n const children = curr.children.map(c => createNode(routeReuseStrategy, c));\n return new TreeNode(value, children);\n }\n}\nfunction createOrReuseChildren(routeReuseStrategy, curr, prevState) {\n return curr.children.map(child => {\n for (const p of prevState.children) {\n if (routeReuseStrategy.shouldReuseRoute(child.value, p.value.snapshot)) {\n return createNode(routeReuseStrategy, child, p);\n }\n }\n return createNode(routeReuseStrategy, child);\n });\n}\nfunction createActivatedRoute(c) {\n return new ActivatedRoute(new BehaviorSubject(c.url), new BehaviorSubject(c.params), new BehaviorSubject(c.queryParams), new BehaviorSubject(c.fragment), new BehaviorSubject(c.data), c.outlet, c.component, c);\n}\nconst NAVIGATION_CANCELING_ERROR = 'ngNavigationCancelingError';\nfunction redirectingNavigationError(urlSerializer, redirect) {\n const {\n redirectTo,\n navigationBehaviorOptions\n } = isUrlTree(redirect) ? {\n redirectTo: redirect,\n navigationBehaviorOptions: undefined\n } : redirect;\n const error = navigationCancelingError(ngDevMode && `Redirecting to \"${urlSerializer.serialize(redirectTo)}\"`, NavigationCancellationCode.Redirect);\n error.url = redirectTo;\n error.navigationBehaviorOptions = navigationBehaviorOptions;\n return error;\n}\nfunction navigationCancelingError(message, code) {\n const error = new Error(`NavigationCancelingError: ${message || ''}`);\n error[NAVIGATION_CANCELING_ERROR] = true;\n error.cancellationCode = code;\n return error;\n}\nfunction isRedirectingNavigationCancelingError(error) {\n return isNavigationCancelingError(error) && isUrlTree(error.url);\n}\nfunction isNavigationCancelingError(error) {\n return !!error && error[NAVIGATION_CANCELING_ERROR];\n}\n\n/**\n * This component is used internally within the router to be a placeholder when an empty\n * router-outlet is needed. For example, with a config such as:\n *\n * `{path: 'parent', outlet: 'nav', children: [...]}`\n *\n * In order to render, there needs to be a component on this config, which will default\n * to this `EmptyOutletComponent`.\n */\nclass ɵEmptyOutletComponent {\n static {\n this.ɵfac = function ɵEmptyOutletComponent_Factory(t) {\n return new (t || ɵEmptyOutletComponent)();\n };\n }\n static {\n this.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ɵEmptyOutletComponent,\n selectors: [[\"ng-component\"]],\n standalone: true,\n features: [i0.ɵɵStandaloneFeature],\n decls: 1,\n vars: 0,\n template: function ɵEmptyOutletComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"router-outlet\");\n }\n },\n dependencies: [RouterOutlet],\n encapsulation: 2\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(ɵEmptyOutletComponent, [{\n type: Component,\n args: [{\n template: ``,\n imports: [RouterOutlet],\n standalone: true\n }]\n }], null, null);\n})();\n\n/**\n * Creates an `EnvironmentInjector` if the `Route` has providers and one does not already exist\n * and returns the injector. Otherwise, if the `Route` does not have `providers`, returns the\n * `currentInjector`.\n *\n * @param route The route that might have providers\n * @param currentInjector The parent injector of the `Route`\n */\nfunction getOrCreateRouteInjectorIfNeeded(route, currentInjector) {\n if (route.providers && !route._injector) {\n route._injector = createEnvironmentInjector(route.providers, currentInjector, `Route: ${route.path}`);\n }\n return route._injector ?? currentInjector;\n}\nfunction getLoadedRoutes(route) {\n return route._loadedRoutes;\n}\nfunction getLoadedInjector(route) {\n return route._loadedInjector;\n}\nfunction getLoadedComponent(route) {\n return route._loadedComponent;\n}\nfunction getProvidersInjector(route) {\n return route._injector;\n}\nfunction validateConfig(config, parentPath = '', requireStandaloneComponents = false) {\n // forEach doesn't iterate undefined values\n for (let i = 0; i < config.length; i++) {\n const route = config[i];\n const fullPath = getFullPath(parentPath, route);\n validateNode(route, fullPath, requireStandaloneComponents);\n }\n}\nfunction assertStandalone(fullPath, component) {\n if (component && ɵisNgModule(component)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. You are using 'loadComponent' with a module, ` + `but it must be used with standalone components. Use 'loadChildren' instead.`);\n } else if (component && !isStandalone(component)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. The component must be standalone.`);\n }\n}\nfunction validateNode(route, fullPath, requireStandaloneComponents) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!route) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `\n Invalid configuration of route '${fullPath}': Encountered undefined route.\n The reason might be an extra comma.\n\n Example:\n const routes: Routes = [\n { path: '', redirectTo: '/dashboard', pathMatch: 'full' },\n { path: 'dashboard', component: DashboardComponent },, << two commas\n { path: 'detail/:id', component: HeroDetailComponent }\n ];\n `);\n }\n if (Array.isArray(route)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': Array cannot be specified`);\n }\n if (!route.redirectTo && !route.component && !route.loadComponent && !route.children && !route.loadChildren && route.outlet && route.outlet !== PRIMARY_OUTLET) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': a componentless route without children or loadChildren cannot have a named outlet set`);\n }\n if (route.redirectTo && route.children) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and children cannot be used together`);\n }\n if (route.redirectTo && route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and loadChildren cannot be used together`);\n }\n if (route.children && route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': children and loadChildren cannot be used together`);\n }\n if (route.redirectTo && (route.component || route.loadComponent)) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and component/loadComponent cannot be used together`);\n }\n if (route.component && route.loadComponent) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': component and loadComponent cannot be used together`);\n }\n if (route.redirectTo && route.canActivate) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': redirectTo and canActivate cannot be used together. Redirects happen before activation ` + `so canActivate will never be executed.`);\n }\n if (route.path && route.matcher) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path and matcher cannot be used together`);\n }\n if (route.redirectTo === void 0 && !route.component && !route.loadComponent && !route.children && !route.loadChildren) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}'. One of the following must be provided: component, loadComponent, redirectTo, children or loadChildren`);\n }\n if (route.path === void 0 && route.matcher === void 0) {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': routes must have either a path or a matcher specified`);\n }\n if (typeof route.path === 'string' && route.path.charAt(0) === '/') {\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '${fullPath}': path cannot start with a slash`);\n }\n if (route.path === '' && route.redirectTo !== void 0 && route.pathMatch === void 0) {\n const exp = `The default value of 'pathMatch' is 'prefix', but often the intent is to use 'full'.`;\n throw new ɵRuntimeError(4014 /* RuntimeErrorCode.INVALID_ROUTE_CONFIG */, `Invalid configuration of route '{path: \"${fullPath}\", redirectTo: \"${route.redirectTo}\"}': please provide 'pathMatch'. ${exp}`);\n }\n if (requireStandaloneComponents) {\n assertStandalone(fullPath, route.component);\n }\n }\n if (route.children) {\n validateConfig(route.children, fullPath, requireStandaloneComponents);\n }\n}\nfunction getFullPath(parentPath, currentRoute) {\n if (!currentRoute) {\n return parentPath;\n }\n if (!parentPath && !currentRoute.path) {\n return '';\n } else if (parentPath && !currentRoute.path) {\n return `${parentPath}/`;\n } else if (!parentPath && currentRoute.path) {\n return currentRoute.path;\n } else {\n return `${parentPath}/${currentRoute.path}`;\n }\n}\n/**\n * Makes a copy of the config and adds any default required properties.\n */\nfunction standardizeConfig(r) {\n const children = r.children && r.children.map(standardizeConfig);\n const c = children ? {\n ...r,\n children\n } : {\n ...r\n };\n if (!c.component && !c.loadComponent && (children || c.loadChildren) && c.outlet && c.outlet !== PRIMARY_OUTLET) {\n c.component = ɵEmptyOutletComponent;\n }\n return c;\n}\n/** Returns the `route.outlet` or PRIMARY_OUTLET if none exists. */\nfunction getOutlet(route) {\n return route.outlet || PRIMARY_OUTLET;\n}\n/**\n * Sorts the `routes` such that the ones with an outlet matching `outletName` come first.\n * The order of the configs is otherwise preserved.\n */\nfunction sortByMatchingOutlets(routes, outletName) {\n const sortedConfig = routes.filter(r => getOutlet(r) === outletName);\n sortedConfig.push(...routes.filter(r => getOutlet(r) !== outletName));\n return sortedConfig;\n}\n/**\n * Gets the first injector in the snapshot's parent tree.\n *\n * If the `Route` has a static list of providers, the returned injector will be the one created from\n * those. If it does not exist, the returned injector may come from the parents, which may be from a\n * loaded config or their static providers.\n *\n * Returns `null` if there is neither this nor any parents have a stored injector.\n *\n * Generally used for retrieving the injector to use for getting tokens for guards/resolvers and\n * also used for getting the correct injector to use for creating components.\n */\nfunction getClosestRouteInjector(snapshot) {\n if (!snapshot) return null;\n // If the current route has its own injector, which is created from the static providers on the\n // route itself, we should use that. Otherwise, we start at the parent since we do not want to\n // include the lazy loaded injector from this route.\n if (snapshot.routeConfig?._injector) {\n return snapshot.routeConfig._injector;\n }\n for (let s = snapshot.parent; s; s = s.parent) {\n const route = s.routeConfig;\n // Note that the order here is important. `_loadedInjector` stored on the route with\n // `loadChildren: () => NgModule` so it applies to child routes with priority. The `_injector`\n // is created from the static providers on that parent route, so it applies to the children as\n // well, but only if there is no lazy loaded NgModuleRef injector.\n if (route?._loadedInjector) return route._loadedInjector;\n if (route?._injector) return route._injector;\n }\n return null;\n}\nlet warnedAboutUnsupportedInputBinding = false;\nconst activateRoutes = (rootContexts, routeReuseStrategy, forwardEvent, inputBindingEnabled) => map(t => {\n new ActivateRoutes(routeReuseStrategy, t.targetRouterState, t.currentRouterState, forwardEvent, inputBindingEnabled).activate(rootContexts);\n return t;\n});\nclass ActivateRoutes {\n constructor(routeReuseStrategy, futureState, currState, forwardEvent, inputBindingEnabled) {\n this.routeReuseStrategy = routeReuseStrategy;\n this.futureState = futureState;\n this.currState = currState;\n this.forwardEvent = forwardEvent;\n this.inputBindingEnabled = inputBindingEnabled;\n }\n activate(parentContexts) {\n const futureRoot = this.futureState._root;\n const currRoot = this.currState ? this.currState._root : null;\n this.deactivateChildRoutes(futureRoot, currRoot, parentContexts);\n advanceActivatedRoute(this.futureState.root);\n this.activateChildRoutes(futureRoot, currRoot, parentContexts);\n }\n // De-activate the child route that are not re-used for the future state\n deactivateChildRoutes(futureNode, currNode, contexts) {\n const children = nodeChildrenAsMap(currNode);\n // Recurse on the routes active in the future state to de-activate deeper children\n futureNode.children.forEach(futureChild => {\n const childOutletName = futureChild.value.outlet;\n this.deactivateRoutes(futureChild, children[childOutletName], contexts);\n delete children[childOutletName];\n });\n // De-activate the routes that will not be re-used\n Object.values(children).forEach(v => {\n this.deactivateRouteAndItsChildren(v, contexts);\n });\n }\n deactivateRoutes(futureNode, currNode, parentContext) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n if (future === curr) {\n // Reusing the node, check to see if the children need to be de-activated\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const context = parentContext.getContext(future.outlet);\n if (context) {\n this.deactivateChildRoutes(futureNode, currNode, context.children);\n }\n } else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.deactivateChildRoutes(futureNode, currNode, parentContext);\n }\n } else {\n if (curr) {\n // Deactivate the current route which will not be re-used\n this.deactivateRouteAndItsChildren(currNode, parentContext);\n }\n }\n }\n deactivateRouteAndItsChildren(route, parentContexts) {\n // If there is no component, the Route is never attached to an outlet (because there is no\n // component to attach).\n if (route.value.component && this.routeReuseStrategy.shouldDetach(route.value.snapshot)) {\n this.detachAndStoreRouteSubtree(route, parentContexts);\n } else {\n this.deactivateRouteAndOutlet(route, parentContexts);\n }\n }\n detachAndStoreRouteSubtree(route, parentContexts) {\n const context = parentContexts.getContext(route.value.outlet);\n const contexts = context && route.value.component ? context.children : parentContexts;\n const children = nodeChildrenAsMap(route);\n for (const treeNode of Object.values(children)) {\n this.deactivateRouteAndItsChildren(treeNode, contexts);\n }\n if (context && context.outlet) {\n const componentRef = context.outlet.detach();\n const contexts = context.children.onOutletDeactivated();\n this.routeReuseStrategy.store(route.value.snapshot, {\n componentRef,\n route,\n contexts\n });\n }\n }\n deactivateRouteAndOutlet(route, parentContexts) {\n const context = parentContexts.getContext(route.value.outlet);\n // The context could be `null` if we are on a componentless route but there may still be\n // children that need deactivating.\n const contexts = context && route.value.component ? context.children : parentContexts;\n const children = nodeChildrenAsMap(route);\n for (const treeNode of Object.values(children)) {\n this.deactivateRouteAndItsChildren(treeNode, contexts);\n }\n if (context) {\n if (context.outlet) {\n // Destroy the component\n context.outlet.deactivate();\n // Destroy the contexts for all the outlets that were in the component\n context.children.onOutletDeactivated();\n }\n // Clear the information about the attached component on the context but keep the reference to\n // the outlet. Clear even if outlet was not yet activated to avoid activating later with old\n // info\n context.attachRef = null;\n context.route = null;\n }\n }\n activateChildRoutes(futureNode, currNode, contexts) {\n const children = nodeChildrenAsMap(currNode);\n futureNode.children.forEach(c => {\n this.activateRoutes(c, children[c.value.outlet], contexts);\n this.forwardEvent(new ActivationEnd(c.value.snapshot));\n });\n if (futureNode.children.length) {\n this.forwardEvent(new ChildActivationEnd(futureNode.value.snapshot));\n }\n }\n activateRoutes(futureNode, currNode, parentContexts) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n advanceActivatedRoute(future);\n // reusing the node\n if (future === curr) {\n if (future.component) {\n // If we have a normal route, we need to go through an outlet.\n const context = parentContexts.getOrCreateContext(future.outlet);\n this.activateChildRoutes(futureNode, currNode, context.children);\n } else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, currNode, parentContexts);\n }\n } else {\n if (future.component) {\n // if we have a normal route, we need to place the component into the outlet and recurse.\n const context = parentContexts.getOrCreateContext(future.outlet);\n if (this.routeReuseStrategy.shouldAttach(future.snapshot)) {\n const stored = this.routeReuseStrategy.retrieve(future.snapshot);\n this.routeReuseStrategy.store(future.snapshot, null);\n context.children.onOutletReAttached(stored.contexts);\n context.attachRef = stored.componentRef;\n context.route = stored.route.value;\n if (context.outlet) {\n // Attach right away when the outlet has already been instantiated\n // Otherwise attach from `RouterOutlet.ngOnInit` when it is instantiated\n context.outlet.attach(stored.componentRef, stored.route.value);\n }\n advanceActivatedRoute(stored.route.value);\n this.activateChildRoutes(futureNode, null, context.children);\n } else {\n const injector = getClosestRouteInjector(future.snapshot);\n context.attachRef = null;\n context.route = future;\n context.injector = injector;\n if (context.outlet) {\n // Activate the outlet when it has already been instantiated\n // Otherwise it will get activated from its `ngOnInit` when instantiated\n context.outlet.activateWith(future, context.injector);\n }\n this.activateChildRoutes(futureNode, null, context.children);\n }\n } else {\n // if we have a componentless route, we recurse but keep the same outlet map.\n this.activateChildRoutes(futureNode, null, parentContexts);\n }\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const context = parentContexts.getOrCreateContext(future.outlet);\n const outlet = context.outlet;\n if (outlet && this.inputBindingEnabled && !outlet.supportsBindingToComponentInputs && !warnedAboutUnsupportedInputBinding) {\n console.warn(`'withComponentInputBinding' feature is enabled but ` + `this application is using an outlet that may not support binding to component inputs.`);\n warnedAboutUnsupportedInputBinding = true;\n }\n }\n }\n}\nclass CanActivate {\n constructor(path) {\n this.path = path;\n this.route = this.path[this.path.length - 1];\n }\n}\nclass CanDeactivate {\n constructor(component, route) {\n this.component = component;\n this.route = route;\n }\n}\nfunction getAllRouteGuards(future, curr, parentContexts) {\n const futureRoot = future._root;\n const currRoot = curr ? curr._root : null;\n return getChildRouteGuards(futureRoot, currRoot, parentContexts, [futureRoot.value]);\n}\nfunction getCanActivateChild(p) {\n const canActivateChild = p.routeConfig ? p.routeConfig.canActivateChild : null;\n if (!canActivateChild || canActivateChild.length === 0) return null;\n return {\n node: p,\n guards: canActivateChild\n };\n}\nfunction getTokenOrFunctionIdentity(tokenOrFunction, injector) {\n const NOT_FOUND = Symbol();\n const result = injector.get(tokenOrFunction, NOT_FOUND);\n if (result === NOT_FOUND) {\n if (typeof tokenOrFunction === 'function' && !ɵisInjectable(tokenOrFunction)) {\n // We think the token is just a function so return it as-is\n return tokenOrFunction;\n } else {\n // This will throw the not found error\n return injector.get(tokenOrFunction);\n }\n }\n return result;\n}\nfunction getChildRouteGuards(futureNode, currNode, contexts, futurePath, checks = {\n canDeactivateChecks: [],\n canActivateChecks: []\n}) {\n const prevChildren = nodeChildrenAsMap(currNode);\n // Process the children of the future route\n futureNode.children.forEach(c => {\n getRouteGuards(c, prevChildren[c.value.outlet], contexts, futurePath.concat([c.value]), checks);\n delete prevChildren[c.value.outlet];\n });\n // Process any children left from the current route (not active for the future route)\n Object.entries(prevChildren).forEach(([k, v]) => deactivateRouteAndItsChildren(v, contexts.getContext(k), checks));\n return checks;\n}\nfunction getRouteGuards(futureNode, currNode, parentContexts, futurePath, checks = {\n canDeactivateChecks: [],\n canActivateChecks: []\n}) {\n const future = futureNode.value;\n const curr = currNode ? currNode.value : null;\n const context = parentContexts ? parentContexts.getContext(futureNode.value.outlet) : null;\n // reusing the node\n if (curr && future.routeConfig === curr.routeConfig) {\n const shouldRun = shouldRunGuardsAndResolvers(curr, future, future.routeConfig.runGuardsAndResolvers);\n if (shouldRun) {\n checks.canActivateChecks.push(new CanActivate(futurePath));\n } else {\n // we need to set the data\n future.data = curr.data;\n future._resolvedData = curr._resolvedData;\n }\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n getChildRouteGuards(futureNode, currNode, context ? context.children : null, futurePath, checks);\n // if we have a componentless route, we recurse but keep the same outlet map.\n } else {\n getChildRouteGuards(futureNode, currNode, parentContexts, futurePath, checks);\n }\n if (shouldRun && context && context.outlet && context.outlet.isActivated) {\n checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, curr));\n }\n } else {\n if (curr) {\n deactivateRouteAndItsChildren(currNode, context, checks);\n }\n checks.canActivateChecks.push(new CanActivate(futurePath));\n // If we have a component, we need to go through an outlet.\n if (future.component) {\n getChildRouteGuards(futureNode, null, context ? context.children : null, futurePath, checks);\n // if we have a componentless route, we recurse but keep the same outlet map.\n } else {\n getChildRouteGuards(futureNode, null, parentContexts, futurePath, checks);\n }\n }\n return checks;\n}\nfunction shouldRunGuardsAndResolvers(curr, future, mode) {\n if (typeof mode === 'function') {\n return mode(curr, future);\n }\n switch (mode) {\n case 'pathParamsChange':\n return !equalPath(curr.url, future.url);\n case 'pathParamsOrQueryParamsChange':\n return !equalPath(curr.url, future.url) || !shallowEqual(curr.queryParams, future.queryParams);\n case 'always':\n return true;\n case 'paramsOrQueryParamsChange':\n return !equalParamsAndUrlSegments(curr, future) || !shallowEqual(curr.queryParams, future.queryParams);\n case 'paramsChange':\n default:\n return !equalParamsAndUrlSegments(curr, future);\n }\n}\nfunction deactivateRouteAndItsChildren(route, context, checks) {\n const children = nodeChildrenAsMap(route);\n const r = route.value;\n Object.entries(children).forEach(([childName, node]) => {\n if (!r.component) {\n deactivateRouteAndItsChildren(node, context, checks);\n } else if (context) {\n deactivateRouteAndItsChildren(node, context.children.getContext(childName), checks);\n } else {\n deactivateRouteAndItsChildren(node, null, checks);\n }\n });\n if (!r.component) {\n checks.canDeactivateChecks.push(new CanDeactivate(null, r));\n } else if (context && context.outlet && context.outlet.isActivated) {\n checks.canDeactivateChecks.push(new CanDeactivate(context.outlet.component, r));\n } else {\n checks.canDeactivateChecks.push(new CanDeactivate(null, r));\n }\n}\n\n/**\n * Simple function check, but generic so type inference will flow. Example:\n *\n * function product(a: number, b: number) {\n * return a * b;\n * }\n *\n * if (isFunction(fn)) {\n * return fn(1, 2);\n * } else {\n * throw \"Must provide the `product` function\";\n * }\n */\nfunction isFunction(v) {\n return typeof v === 'function';\n}\nfunction isBoolean(v) {\n return typeof v === 'boolean';\n}\nfunction isCanLoad(guard) {\n return guard && isFunction(guard.canLoad);\n}\nfunction isCanActivate(guard) {\n return guard && isFunction(guard.canActivate);\n}\nfunction isCanActivateChild(guard) {\n return guard && isFunction(guard.canActivateChild);\n}\nfunction isCanDeactivate(guard) {\n return guard && isFunction(guard.canDeactivate);\n}\nfunction isCanMatch(guard) {\n return guard && isFunction(guard.canMatch);\n}\nfunction isEmptyError(e) {\n return e instanceof EmptyError || e?.name === 'EmptyError';\n}\nconst INITIAL_VALUE = /* @__PURE__ */Symbol('INITIAL_VALUE');\nfunction prioritizedGuardValue() {\n return switchMap(obs => {\n return combineLatest(obs.map(o => o.pipe(take(1), startWith(INITIAL_VALUE)))).pipe(map(results => {\n for (const result of results) {\n if (result === true) {\n // If result is true, check the next one\n continue;\n } else if (result === INITIAL_VALUE) {\n // If guard has not finished, we need to stop processing.\n return INITIAL_VALUE;\n } else if (result === false || result instanceof UrlTree) {\n // Result finished and was not true. Return the result.\n // Note that we only allow false/UrlTree. Other values are considered invalid and\n // ignored.\n return result;\n }\n }\n // Everything resolved to true. Return true.\n return true;\n }), filter(item => item !== INITIAL_VALUE), take(1));\n });\n}\nfunction checkGuards(injector, forwardEvent) {\n return mergeMap(t => {\n const {\n targetSnapshot,\n currentSnapshot,\n guards: {\n canActivateChecks,\n canDeactivateChecks\n }\n } = t;\n if (canDeactivateChecks.length === 0 && canActivateChecks.length === 0) {\n return of({\n ...t,\n guardsResult: true\n });\n }\n return runCanDeactivateChecks(canDeactivateChecks, targetSnapshot, currentSnapshot, injector).pipe(mergeMap(canDeactivate => {\n return canDeactivate && isBoolean(canDeactivate) ? runCanActivateChecks(targetSnapshot, canActivateChecks, injector, forwardEvent) : of(canDeactivate);\n }), map(guardsResult => ({\n ...t,\n guardsResult\n })));\n });\n}\nfunction runCanDeactivateChecks(checks, futureRSS, currRSS, injector) {\n return from(checks).pipe(mergeMap(check => runCanDeactivate(check.component, check.route, currRSS, futureRSS, injector)), first(result => {\n return result !== true;\n }, true));\n}\nfunction runCanActivateChecks(futureSnapshot, checks, injector, forwardEvent) {\n return from(checks).pipe(concatMap(check => {\n return concat(fireChildActivationStart(check.route.parent, forwardEvent), fireActivationStart(check.route, forwardEvent), runCanActivateChild(futureSnapshot, check.path, injector), runCanActivate(futureSnapshot, check.route, injector));\n }), first(result => {\n return result !== true;\n }, true));\n}\n/**\n * This should fire off `ActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n */\nfunction fireActivationStart(snapshot, forwardEvent) {\n if (snapshot !== null && forwardEvent) {\n forwardEvent(new ActivationStart(snapshot));\n }\n return of(true);\n}\n/**\n * This should fire off `ChildActivationStart` events for each route being activated at this\n * level.\n * In other words, if you're activating `a` and `b` below, `path` will contain the\n * `ActivatedRouteSnapshot`s for both and we will fire `ChildActivationStart` for both. Always\n * return\n * `true` so checks continue to run.\n */\nfunction fireChildActivationStart(snapshot, forwardEvent) {\n if (snapshot !== null && forwardEvent) {\n forwardEvent(new ChildActivationStart(snapshot));\n }\n return of(true);\n}\nfunction runCanActivate(futureRSS, futureARS, injector) {\n const canActivate = futureARS.routeConfig ? futureARS.routeConfig.canActivate : null;\n if (!canActivate || canActivate.length === 0) return of(true);\n const canActivateObservables = canActivate.map(canActivate => {\n return defer(() => {\n const closestInjector = getClosestRouteInjector(futureARS) ?? injector;\n const guard = getTokenOrFunctionIdentity(canActivate, closestInjector);\n const guardVal = isCanActivate(guard) ? guard.canActivate(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n });\n return of(canActivateObservables).pipe(prioritizedGuardValue());\n}\nfunction runCanActivateChild(futureRSS, path, injector) {\n const futureARS = path[path.length - 1];\n const canActivateChildGuards = path.slice(0, path.length - 1).reverse().map(p => getCanActivateChild(p)).filter(_ => _ !== null);\n const canActivateChildGuardsMapped = canActivateChildGuards.map(d => {\n return defer(() => {\n const guardsMapped = d.guards.map(canActivateChild => {\n const closestInjector = getClosestRouteInjector(d.node) ?? injector;\n const guard = getTokenOrFunctionIdentity(canActivateChild, closestInjector);\n const guardVal = isCanActivateChild(guard) ? guard.canActivateChild(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => guard(futureARS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n return of(guardsMapped).pipe(prioritizedGuardValue());\n });\n });\n return of(canActivateChildGuardsMapped).pipe(prioritizedGuardValue());\n}\nfunction runCanDeactivate(component, currARS, currRSS, futureRSS, injector) {\n const canDeactivate = currARS && currARS.routeConfig ? currARS.routeConfig.canDeactivate : null;\n if (!canDeactivate || canDeactivate.length === 0) return of(true);\n const canDeactivateObservables = canDeactivate.map(c => {\n const closestInjector = getClosestRouteInjector(currARS) ?? injector;\n const guard = getTokenOrFunctionIdentity(c, closestInjector);\n const guardVal = isCanDeactivate(guard) ? guard.canDeactivate(component, currARS, currRSS, futureRSS) : runInInjectionContext(closestInjector, () => guard(component, currARS, currRSS, futureRSS));\n return wrapIntoObservable(guardVal).pipe(first());\n });\n return of(canDeactivateObservables).pipe(prioritizedGuardValue());\n}\nfunction runCanLoadGuards(injector, route, segments, urlSerializer) {\n const canLoad = route.canLoad;\n if (canLoad === undefined || canLoad.length === 0) {\n return of(true);\n }\n const canLoadObservables = canLoad.map(injectionToken => {\n const guard = getTokenOrFunctionIdentity(injectionToken, injector);\n const guardVal = isCanLoad(guard) ? guard.canLoad(route, segments) : runInInjectionContext(injector, () => guard(route, segments));\n return wrapIntoObservable(guardVal);\n });\n return of(canLoadObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer));\n}\nfunction redirectIfUrlTree(urlSerializer) {\n return pipe(tap(result => {\n if (!isUrlTree(result)) return;\n throw redirectingNavigationError(urlSerializer, result);\n }), map(result => result === true));\n}\nfunction runCanMatchGuards(injector, route, segments, urlSerializer) {\n const canMatch = route.canMatch;\n if (!canMatch || canMatch.length === 0) return of(true);\n const canMatchObservables = canMatch.map(injectionToken => {\n const guard = getTokenOrFunctionIdentity(injectionToken, injector);\n const guardVal = isCanMatch(guard) ? guard.canMatch(route, segments) : runInInjectionContext(injector, () => guard(route, segments));\n return wrapIntoObservable(guardVal);\n });\n return of(canMatchObservables).pipe(prioritizedGuardValue(), redirectIfUrlTree(urlSerializer));\n}\nclass NoMatch {\n constructor(segmentGroup) {\n this.segmentGroup = segmentGroup || null;\n }\n}\nclass AbsoluteRedirect extends Error {\n constructor(urlTree) {\n super();\n this.urlTree = urlTree;\n }\n}\nfunction noMatch$1(segmentGroup) {\n return throwError(new NoMatch(segmentGroup));\n}\nfunction absoluteRedirect(newTree) {\n return throwError(new AbsoluteRedirect(newTree));\n}\nfunction namedOutletsRedirect(redirectTo) {\n return throwError(new ɵRuntimeError(4000 /* RuntimeErrorCode.NAMED_OUTLET_REDIRECT */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Only absolute redirects can have named outlets. redirectTo: '${redirectTo}'`));\n}\nfunction canLoadFails(route) {\n return throwError(navigationCancelingError((typeof ngDevMode === 'undefined' || ngDevMode) && `Cannot load children because the guard of the route \"path: '${route.path}'\" returned false`, NavigationCancellationCode.GuardRejected));\n}\nclass ApplyRedirects {\n constructor(urlSerializer, urlTree) {\n this.urlSerializer = urlSerializer;\n this.urlTree = urlTree;\n }\n lineralizeSegments(route, urlTree) {\n let res = [];\n let c = urlTree.root;\n while (true) {\n res = res.concat(c.segments);\n if (c.numberOfChildren === 0) {\n return of(res);\n }\n if (c.numberOfChildren > 1 || !c.children[PRIMARY_OUTLET]) {\n return namedOutletsRedirect(route.redirectTo);\n }\n c = c.children[PRIMARY_OUTLET];\n }\n }\n applyRedirectCommands(segments, redirectTo, posParams) {\n const newTree = this.applyRedirectCreateUrlTree(redirectTo, this.urlSerializer.parse(redirectTo), segments, posParams);\n if (redirectTo.startsWith('/')) {\n throw new AbsoluteRedirect(newTree);\n }\n return newTree;\n }\n applyRedirectCreateUrlTree(redirectTo, urlTree, segments, posParams) {\n const newRoot = this.createSegmentGroup(redirectTo, urlTree.root, segments, posParams);\n return new UrlTree(newRoot, this.createQueryParams(urlTree.queryParams, this.urlTree.queryParams), urlTree.fragment);\n }\n createQueryParams(redirectToParams, actualParams) {\n const res = {};\n Object.entries(redirectToParams).forEach(([k, v]) => {\n const copySourceValue = typeof v === 'string' && v.startsWith(':');\n if (copySourceValue) {\n const sourceName = v.substring(1);\n res[k] = actualParams[sourceName];\n } else {\n res[k] = v;\n }\n });\n return res;\n }\n createSegmentGroup(redirectTo, group, segments, posParams) {\n const updatedSegments = this.createSegments(redirectTo, group.segments, segments, posParams);\n let children = {};\n Object.entries(group.children).forEach(([name, child]) => {\n children[name] = this.createSegmentGroup(redirectTo, child, segments, posParams);\n });\n return new UrlSegmentGroup(updatedSegments, children);\n }\n createSegments(redirectTo, redirectToSegments, actualSegments, posParams) {\n return redirectToSegments.map(s => s.path.startsWith(':') ? this.findPosParam(redirectTo, s, posParams) : this.findOrReturn(s, actualSegments));\n }\n findPosParam(redirectTo, redirectToUrlSegment, posParams) {\n const pos = posParams[redirectToUrlSegment.path.substring(1)];\n if (!pos) throw new ɵRuntimeError(4001 /* RuntimeErrorCode.MISSING_REDIRECT */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Cannot redirect to '${redirectTo}'. Cannot find '${redirectToUrlSegment.path}'.`);\n return pos;\n }\n findOrReturn(redirectToUrlSegment, actualSegments) {\n let idx = 0;\n for (const s of actualSegments) {\n if (s.path === redirectToUrlSegment.path) {\n actualSegments.splice(idx);\n return s;\n }\n idx++;\n }\n return redirectToUrlSegment;\n }\n}\nconst noMatch = {\n matched: false,\n consumedSegments: [],\n remainingSegments: [],\n parameters: {},\n positionalParamSegments: {}\n};\nfunction matchWithChecks(segmentGroup, route, segments, injector, urlSerializer) {\n const result = match(segmentGroup, route, segments);\n if (!result.matched) {\n return of(result);\n }\n // Only create the Route's `EnvironmentInjector` if it matches the attempted\n // navigation\n injector = getOrCreateRouteInjectorIfNeeded(route, injector);\n return runCanMatchGuards(injector, route, segments, urlSerializer).pipe(map(v => v === true ? result : {\n ...noMatch\n }));\n}\nfunction match(segmentGroup, route, segments) {\n if (route.path === '**') {\n return createWildcardMatchResult(segments);\n }\n if (route.path === '') {\n if (route.pathMatch === 'full' && (segmentGroup.hasChildren() || segments.length > 0)) {\n return {\n ...noMatch\n };\n }\n return {\n matched: true,\n consumedSegments: [],\n remainingSegments: segments,\n parameters: {},\n positionalParamSegments: {}\n };\n }\n const matcher = route.matcher || defaultUrlMatcher;\n const res = matcher(segments, segmentGroup, route);\n if (!res) return {\n ...noMatch\n };\n const posParams = {};\n Object.entries(res.posParams ?? {}).forEach(([k, v]) => {\n posParams[k] = v.path;\n });\n const parameters = res.consumed.length > 0 ? {\n ...posParams,\n ...res.consumed[res.consumed.length - 1].parameters\n } : posParams;\n return {\n matched: true,\n consumedSegments: res.consumed,\n remainingSegments: segments.slice(res.consumed.length),\n // TODO(atscott): investigate combining parameters and positionalParamSegments\n parameters,\n positionalParamSegments: res.posParams ?? {}\n };\n}\nfunction createWildcardMatchResult(segments) {\n return {\n matched: true,\n parameters: segments.length > 0 ? last(segments).parameters : {},\n consumedSegments: segments,\n remainingSegments: [],\n positionalParamSegments: {}\n };\n}\nfunction split(segmentGroup, consumedSegments, slicedSegments, config) {\n if (slicedSegments.length > 0 && containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, config)) {\n const s = new UrlSegmentGroup(consumedSegments, createChildrenForEmptyPaths(config, new UrlSegmentGroup(slicedSegments, segmentGroup.children)));\n return {\n segmentGroup: s,\n slicedSegments: []\n };\n }\n if (slicedSegments.length === 0 && containsEmptyPathMatches(segmentGroup, slicedSegments, config)) {\n const s = new UrlSegmentGroup(segmentGroup.segments, addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, config, segmentGroup.children));\n return {\n segmentGroup: s,\n slicedSegments\n };\n }\n const s = new UrlSegmentGroup(segmentGroup.segments, segmentGroup.children);\n return {\n segmentGroup: s,\n slicedSegments\n };\n}\nfunction addEmptyPathsToChildrenIfNeeded(segmentGroup, slicedSegments, routes, children) {\n const res = {};\n for (const r of routes) {\n if (emptyPathMatch(segmentGroup, slicedSegments, r) && !children[getOutlet(r)]) {\n const s = new UrlSegmentGroup([], {});\n res[getOutlet(r)] = s;\n }\n }\n return {\n ...children,\n ...res\n };\n}\nfunction createChildrenForEmptyPaths(routes, primarySegment) {\n const res = {};\n res[PRIMARY_OUTLET] = primarySegment;\n for (const r of routes) {\n if (r.path === '' && getOutlet(r) !== PRIMARY_OUTLET) {\n const s = new UrlSegmentGroup([], {});\n res[getOutlet(r)] = s;\n }\n }\n return res;\n}\nfunction containsEmptyPathMatchesWithNamedOutlets(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r) && getOutlet(r) !== PRIMARY_OUTLET);\n}\nfunction containsEmptyPathMatches(segmentGroup, slicedSegments, routes) {\n return routes.some(r => emptyPathMatch(segmentGroup, slicedSegments, r));\n}\nfunction emptyPathMatch(segmentGroup, slicedSegments, r) {\n if ((segmentGroup.hasChildren() || slicedSegments.length > 0) && r.pathMatch === 'full') {\n return false;\n }\n return r.path === '';\n}\n/**\n * Determines if `route` is a path match for the `rawSegment`, `segments`, and `outlet` without\n * verifying that its children are a full match for the remainder of the `rawSegment` children as\n * well.\n */\nfunction isImmediateMatch(route, rawSegment, segments, outlet) {\n // We allow matches to empty paths when the outlets differ so we can match a url like `/(b:b)` to\n // a config like\n // * `{path: '', children: [{path: 'b', outlet: 'b'}]}`\n // or even\n // * `{path: '', outlet: 'a', children: [{path: 'b', outlet: 'b'}]`\n //\n // The exception here is when the segment outlet is for the primary outlet. This would\n // result in a match inside the named outlet because all children there are written as primary\n // outlets. So we need to prevent child named outlet matches in a url like `/b` in a config like\n // * `{path: '', outlet: 'x' children: [{path: 'b'}]}`\n // This should only match if the url is `/(x:b)`.\n if (getOutlet(route) !== outlet && (outlet === PRIMARY_OUTLET || !emptyPathMatch(rawSegment, segments, route))) {\n return false;\n }\n return match(rawSegment, route, segments).matched;\n}\nfunction noLeftoversInUrl(segmentGroup, segments, outlet) {\n return segments.length === 0 && !segmentGroup.children[outlet];\n}\n\n/**\n * Class used to indicate there were no additional route config matches but that all segments of\n * the URL were consumed during matching so the route was URL matched. When this happens, we still\n * try to match child configs in case there are empty path children.\n */\nclass NoLeftoversInUrl {}\nfunction recognize$1(injector, configLoader, rootComponentType, config, urlTree, urlSerializer, paramsInheritanceStrategy = 'emptyOnly') {\n return new Recognizer(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer).recognize();\n}\nconst MAX_ALLOWED_REDIRECTS = 31;\nclass Recognizer {\n constructor(injector, configLoader, rootComponentType, config, urlTree, paramsInheritanceStrategy, urlSerializer) {\n this.injector = injector;\n this.configLoader = configLoader;\n this.rootComponentType = rootComponentType;\n this.config = config;\n this.urlTree = urlTree;\n this.paramsInheritanceStrategy = paramsInheritanceStrategy;\n this.urlSerializer = urlSerializer;\n this.applyRedirects = new ApplyRedirects(this.urlSerializer, this.urlTree);\n this.absoluteRedirectCount = 0;\n this.allowRedirects = true;\n }\n noMatchError(e) {\n return new ɵRuntimeError(4002 /* RuntimeErrorCode.NO_MATCH */, typeof ngDevMode === 'undefined' || ngDevMode ? `Cannot match any routes. URL Segment: '${e.segmentGroup}'` : `'${e.segmentGroup}'`);\n }\n recognize() {\n const rootSegmentGroup = split(this.urlTree.root, [], [], this.config).segmentGroup;\n return this.match(rootSegmentGroup).pipe(map(children => {\n // Use Object.freeze to prevent readers of the Router state from modifying it outside\n // of a navigation, resulting in the router being out of sync with the browser.\n const root = new ActivatedRouteSnapshot([], Object.freeze({}), Object.freeze({\n ...this.urlTree.queryParams\n }), this.urlTree.fragment, {}, PRIMARY_OUTLET, this.rootComponentType, null, {});\n const rootNode = new TreeNode(root, children);\n const routeState = new RouterStateSnapshot('', rootNode);\n const tree = createUrlTreeFromSnapshot(root, [], this.urlTree.queryParams, this.urlTree.fragment);\n // https://github.com/angular/angular/issues/47307\n // Creating the tree stringifies the query params\n // We don't want to do this here so reassign them to the original.\n tree.queryParams = this.urlTree.queryParams;\n routeState.url = this.urlSerializer.serialize(tree);\n this.inheritParamsAndData(routeState._root, null);\n return {\n state: routeState,\n tree\n };\n }));\n }\n match(rootSegmentGroup) {\n const expanded$ = this.processSegmentGroup(this.injector, this.config, rootSegmentGroup, PRIMARY_OUTLET);\n return expanded$.pipe(catchError(e => {\n if (e instanceof AbsoluteRedirect) {\n this.urlTree = e.urlTree;\n return this.match(e.urlTree.root);\n }\n if (e instanceof NoMatch) {\n throw this.noMatchError(e);\n }\n throw e;\n }));\n }\n inheritParamsAndData(routeNode, parent) {\n const route = routeNode.value;\n const i = getInherited(route, parent, this.paramsInheritanceStrategy);\n route.params = Object.freeze(i.params);\n route.data = Object.freeze(i.data);\n routeNode.children.forEach(n => this.inheritParamsAndData(n, route));\n }\n processSegmentGroup(injector, config, segmentGroup, outlet) {\n if (segmentGroup.segments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(injector, config, segmentGroup);\n }\n return this.processSegment(injector, config, segmentGroup, segmentGroup.segments, outlet, true).pipe(map(child => child instanceof TreeNode ? [child] : []));\n }\n /**\n * Matches every child outlet in the `segmentGroup` to a `Route` in the config. Returns `null` if\n * we cannot find a match for _any_ of the children.\n *\n * @param config - The `Routes` to match against\n * @param segmentGroup - The `UrlSegmentGroup` whose children need to be matched against the\n * config.\n */\n processChildren(injector, config, segmentGroup) {\n // Expand outlets one at a time, starting with the primary outlet. We need to do it this way\n // because an absolute redirect from the primary outlet takes precedence.\n const childOutlets = [];\n for (const child of Object.keys(segmentGroup.children)) {\n if (child === 'primary') {\n childOutlets.unshift(child);\n } else {\n childOutlets.push(child);\n }\n }\n return from(childOutlets).pipe(concatMap(childOutlet => {\n const child = segmentGroup.children[childOutlet];\n // Sort the config so that routes with outlets that match the one being activated\n // appear first, followed by routes for other outlets, which might match if they have\n // an empty path.\n const sortedConfig = sortByMatchingOutlets(config, childOutlet);\n return this.processSegmentGroup(injector, sortedConfig, child, childOutlet);\n }), scan((children, outletChildren) => {\n children.push(...outletChildren);\n return children;\n }), defaultIfEmpty(null), last$1(), mergeMap(children => {\n if (children === null) return noMatch$1(segmentGroup);\n // Because we may have matched two outlets to the same empty path segment, we can have\n // multiple activated results for the same outlet. We should merge the children of\n // these results so the final return value is only one `TreeNode` per outlet.\n const mergedChildren = mergeEmptyPathMatches(children);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // This should really never happen - we are only taking the first match for each\n // outlet and merge the empty path matches.\n checkOutletNameUniqueness(mergedChildren);\n }\n sortActivatedRouteSnapshots(mergedChildren);\n return of(mergedChildren);\n }));\n }\n processSegment(injector, routes, segmentGroup, segments, outlet, allowRedirects) {\n return from(routes).pipe(concatMap(r => {\n return this.processSegmentAgainstRoute(r._injector ?? injector, routes, r, segmentGroup, segments, outlet, allowRedirects).pipe(catchError(e => {\n if (e instanceof NoMatch) {\n return of(null);\n }\n throw e;\n }));\n }), first(x => !!x), catchError(e => {\n if (isEmptyError(e)) {\n if (noLeftoversInUrl(segmentGroup, segments, outlet)) {\n return of(new NoLeftoversInUrl());\n }\n return noMatch$1(segmentGroup);\n }\n throw e;\n }));\n }\n processSegmentAgainstRoute(injector, routes, route, rawSegment, segments, outlet, allowRedirects) {\n if (!isImmediateMatch(route, rawSegment, segments, outlet)) return noMatch$1(rawSegment);\n if (route.redirectTo === undefined) {\n return this.matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet);\n }\n if (this.allowRedirects && allowRedirects) {\n return this.expandSegmentAgainstRouteUsingRedirect(injector, rawSegment, routes, route, segments, outlet);\n }\n return noMatch$1(rawSegment);\n }\n expandSegmentAgainstRouteUsingRedirect(injector, segmentGroup, routes, route, segments, outlet) {\n const {\n matched,\n consumedSegments,\n positionalParamSegments,\n remainingSegments\n } = match(segmentGroup, route, segments);\n if (!matched) return noMatch$1(segmentGroup);\n // TODO(atscott): Move all of this under an if(ngDevMode) as a breaking change and allow stack\n // size exceeded in production\n if (route.redirectTo.startsWith('/')) {\n this.absoluteRedirectCount++;\n if (this.absoluteRedirectCount > MAX_ALLOWED_REDIRECTS) {\n if (ngDevMode) {\n throw new ɵRuntimeError(4016 /* RuntimeErrorCode.INFINITE_REDIRECT */, `Detected possible infinite redirect when redirecting from '${this.urlTree}' to '${route.redirectTo}'.\\n` + `This is currently a dev mode only error but will become a` + ` call stack size exceeded error in production in a future major version.`);\n }\n this.allowRedirects = false;\n }\n }\n const newTree = this.applyRedirects.applyRedirectCommands(consumedSegments, route.redirectTo, positionalParamSegments);\n return this.applyRedirects.lineralizeSegments(route, newTree).pipe(mergeMap(newSegments => {\n return this.processSegment(injector, routes, segmentGroup, newSegments.concat(remainingSegments), outlet, false);\n }));\n }\n matchSegmentAgainstRoute(injector, rawSegment, route, segments, outlet) {\n const matchResult = matchWithChecks(rawSegment, route, segments, injector, this.urlSerializer);\n if (route.path === '**') {\n // Prior versions of the route matching algorithm would stop matching at the wildcard route.\n // We should investigate a better strategy for any existing children. Otherwise, these\n // child segments are silently dropped from the navigation.\n // https://github.com/angular/angular/issues/40089\n rawSegment.children = {};\n }\n return matchResult.pipe(switchMap(result => {\n if (!result.matched) {\n return noMatch$1(rawSegment);\n }\n // If the route has an injector created from providers, we should start using that.\n injector = route._injector ?? injector;\n return this.getChildConfig(injector, route, segments).pipe(switchMap(({\n routes: childConfig\n }) => {\n const childInjector = route._loadedInjector ?? injector;\n const {\n consumedSegments,\n remainingSegments,\n parameters\n } = result;\n const snapshot = new ActivatedRouteSnapshot(consumedSegments, parameters, Object.freeze({\n ...this.urlTree.queryParams\n }), this.urlTree.fragment, getData(route), getOutlet(route), route.component ?? route._loadedComponent ?? null, route, getResolve(route));\n const {\n segmentGroup,\n slicedSegments\n } = split(rawSegment, consumedSegments, remainingSegments, childConfig);\n if (slicedSegments.length === 0 && segmentGroup.hasChildren()) {\n return this.processChildren(childInjector, childConfig, segmentGroup).pipe(map(children => {\n if (children === null) {\n return null;\n }\n return new TreeNode(snapshot, children);\n }));\n }\n if (childConfig.length === 0 && slicedSegments.length === 0) {\n return of(new TreeNode(snapshot, []));\n }\n const matchedOnOutlet = getOutlet(route) === outlet;\n // If we matched a config due to empty path match on a different outlet, we need to\n // continue passing the current outlet for the segment rather than switch to PRIMARY.\n // Note that we switch to primary when we have a match because outlet configs look like\n // this: {path: 'a', outlet: 'a', children: [\n // {path: 'b', component: B},\n // {path: 'c', component: C},\n // ]}\n // Notice that the children of the named outlet are configured with the primary outlet\n return this.processSegment(childInjector, childConfig, segmentGroup, slicedSegments, matchedOnOutlet ? PRIMARY_OUTLET : outlet, true).pipe(map(child => {\n return new TreeNode(snapshot, child instanceof TreeNode ? [child] : []);\n }));\n }));\n }));\n }\n getChildConfig(injector, route, segments) {\n if (route.children) {\n // The children belong to the same module\n return of({\n routes: route.children,\n injector\n });\n }\n if (route.loadChildren) {\n // lazy children belong to the loaded module\n if (route._loadedRoutes !== undefined) {\n return of({\n routes: route._loadedRoutes,\n injector: route._loadedInjector\n });\n }\n return runCanLoadGuards(injector, route, segments, this.urlSerializer).pipe(mergeMap(shouldLoadResult => {\n if (shouldLoadResult) {\n return this.configLoader.loadChildren(injector, route).pipe(tap(cfg => {\n route._loadedRoutes = cfg.routes;\n route._loadedInjector = cfg.injector;\n }));\n }\n return canLoadFails(route);\n }));\n }\n return of({\n routes: [],\n injector\n });\n }\n}\nfunction sortActivatedRouteSnapshots(nodes) {\n nodes.sort((a, b) => {\n if (a.value.outlet === PRIMARY_OUTLET) return -1;\n if (b.value.outlet === PRIMARY_OUTLET) return 1;\n return a.value.outlet.localeCompare(b.value.outlet);\n });\n}\nfunction hasEmptyPathConfig(node) {\n const config = node.value.routeConfig;\n return config && config.path === '';\n}\n/**\n * Finds `TreeNode`s with matching empty path route configs and merges them into `TreeNode` with\n * the children from each duplicate. This is necessary because different outlets can match a\n * single empty path route config and the results need to then be merged.\n */\nfunction mergeEmptyPathMatches(nodes) {\n const result = [];\n // The set of nodes which contain children that were merged from two duplicate empty path nodes.\n const mergedNodes = new Set();\n for (const node of nodes) {\n if (!hasEmptyPathConfig(node)) {\n result.push(node);\n continue;\n }\n const duplicateEmptyPathNode = result.find(resultNode => node.value.routeConfig === resultNode.value.routeConfig);\n if (duplicateEmptyPathNode !== undefined) {\n duplicateEmptyPathNode.children.push(...node.children);\n mergedNodes.add(duplicateEmptyPathNode);\n } else {\n result.push(node);\n }\n }\n // For each node which has children from multiple sources, we need to recompute a new `TreeNode`\n // by also merging those children. This is necessary when there are multiple empty path configs\n // in a row. Put another way: whenever we combine children of two nodes, we need to also check\n // if any of those children can be combined into a single node as well.\n for (const mergedNode of mergedNodes) {\n const mergedChildren = mergeEmptyPathMatches(mergedNode.children);\n result.push(new TreeNode(mergedNode.value, mergedChildren));\n }\n return result.filter(n => !mergedNodes.has(n));\n}\nfunction checkOutletNameUniqueness(nodes) {\n const names = {};\n nodes.forEach(n => {\n const routeWithSameOutletName = names[n.value.outlet];\n if (routeWithSameOutletName) {\n const p = routeWithSameOutletName.url.map(s => s.toString()).join('/');\n const c = n.value.url.map(s => s.toString()).join('/');\n throw new ɵRuntimeError(4006 /* RuntimeErrorCode.TWO_SEGMENTS_WITH_SAME_OUTLET */, (typeof ngDevMode === 'undefined' || ngDevMode) && `Two segments cannot have the same outlet name: '${p}' and '${c}'.`);\n }\n names[n.value.outlet] = n.value;\n });\n}\nfunction getData(route) {\n return route.data || {};\n}\nfunction getResolve(route) {\n return route.resolve || {};\n}\nfunction recognize(injector, configLoader, rootComponentType, config, serializer, paramsInheritanceStrategy) {\n return mergeMap(t => recognize$1(injector, configLoader, rootComponentType, config, t.extractedUrl, serializer, paramsInheritanceStrategy).pipe(map(({\n state: targetSnapshot,\n tree: urlAfterRedirects\n }) => {\n return {\n ...t,\n targetSnapshot,\n urlAfterRedirects\n };\n })));\n}\nfunction resolveData(paramsInheritanceStrategy, injector) {\n return mergeMap(t => {\n const {\n targetSnapshot,\n guards: {\n canActivateChecks\n }\n } = t;\n if (!canActivateChecks.length) {\n return of(t);\n }\n // Iterating a Set in javascript happens in insertion order so it is safe to use a `Set` to\n // preserve the correct order that the resolvers should run in.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#description\n const routesWithResolversToRun = new Set(canActivateChecks.map(check => check.route));\n const routesNeedingDataUpdates = new Set();\n for (const route of routesWithResolversToRun) {\n if (routesNeedingDataUpdates.has(route)) {\n continue;\n }\n // All children under the route with a resolver to run need to recompute inherited data.\n for (const newRoute of flattenRouteTree(route)) {\n routesNeedingDataUpdates.add(newRoute);\n }\n }\n let routesProcessed = 0;\n return from(routesNeedingDataUpdates).pipe(concatMap(route => {\n if (routesWithResolversToRun.has(route)) {\n return runResolve(route, targetSnapshot, paramsInheritanceStrategy, injector);\n } else {\n route.data = getInherited(route, route.parent, paramsInheritanceStrategy).resolve;\n return of(void 0);\n }\n }), tap(() => routesProcessed++), takeLast(1), mergeMap(_ => routesProcessed === routesNeedingDataUpdates.size ? of(t) : EMPTY));\n });\n}\n/**\n * Returns the `ActivatedRouteSnapshot` tree as an array, using DFS to traverse the route tree.\n */\nfunction flattenRouteTree(route) {\n const descendants = route.children.map(child => flattenRouteTree(child)).flat();\n return [route, ...descendants];\n}\nfunction runResolve(futureARS, futureRSS, paramsInheritanceStrategy, injector) {\n const config = futureARS.routeConfig;\n const resolve = futureARS._resolve;\n if (config?.title !== undefined && !hasStaticTitle(config)) {\n resolve[RouteTitleKey] = config.title;\n }\n return resolveNode(resolve, futureARS, futureRSS, injector).pipe(map(resolvedData => {\n futureARS._resolvedData = resolvedData;\n futureARS.data = getInherited(futureARS, futureARS.parent, paramsInheritanceStrategy).resolve;\n return null;\n }));\n}\nfunction resolveNode(resolve, futureARS, futureRSS, injector) {\n const keys = getDataKeys(resolve);\n if (keys.length === 0) {\n return of({});\n }\n const data = {};\n return from(keys).pipe(mergeMap(key => getResolver(resolve[key], futureARS, futureRSS, injector).pipe(first(), tap(value => {\n data[key] = value;\n }))), takeLast(1), mapTo(data), catchError(e => isEmptyError(e) ? EMPTY : throwError(e)));\n}\nfunction getResolver(injectionToken, futureARS, futureRSS, injector) {\n const closestInjector = getClosestRouteInjector(futureARS) ?? injector;\n const resolver = getTokenOrFunctionIdentity(injectionToken, closestInjector);\n const resolverValue = resolver.resolve ? resolver.resolve(futureARS, futureRSS) : runInInjectionContext(closestInjector, () => resolver(futureARS, futureRSS));\n return wrapIntoObservable(resolverValue);\n}\n\n/**\n * Perform a side effect through a switchMap for every emission on the source Observable,\n * but return an Observable that is identical to the source. It's essentially the same as\n * the `tap` operator, but if the side effectful `next` function returns an ObservableInput,\n * it will wait before continuing with the original value.\n */\nfunction switchTap(next) {\n return switchMap(v => {\n const nextResult = next(v);\n if (nextResult) {\n return from(nextResult).pipe(map(() => v));\n }\n return of(v);\n });\n}\n\n/**\n * Provides a strategy for setting the page title after a router navigation.\n *\n * The built-in implementation traverses the router state snapshot and finds the deepest primary\n * outlet with `title` property. Given the `Routes` below, navigating to\n * `/base/child(popup:aux)` would result in the document title being set to \"child\".\n * ```\n * [\n * {path: 'base', title: 'base', children: [\n * {path: 'child', title: 'child'},\n * ],\n * {path: 'aux', outlet: 'popup', title: 'popupTitle'}\n * ]\n * ```\n *\n * This class can be used as a base class for custom title strategies. That is, you can create your\n * own class that extends the `TitleStrategy`. Note that in the above example, the `title`\n * from the named outlet is never used. However, a custom strategy might be implemented to\n * incorporate titles in named outlets.\n *\n * @publicApi\n * @see [Page title guide](guide/router#setting-the-page-title)\n */\nclass TitleStrategy {\n /**\n * @returns The `title` of the deepest primary route.\n */\n buildTitle(snapshot) {\n let pageTitle;\n let route = snapshot.root;\n while (route !== undefined) {\n pageTitle = this.getResolvedTitleForRoute(route) ?? pageTitle;\n route = route.children.find(child => child.outlet === PRIMARY_OUTLET);\n }\n return pageTitle;\n }\n /**\n * Given an `ActivatedRouteSnapshot`, returns the final value of the\n * `Route.title` property, which can either be a static string or a resolved value.\n */\n getResolvedTitleForRoute(snapshot) {\n return snapshot.data[RouteTitleKey];\n }\n static {\n this.ɵfac = function TitleStrategy_Factory(t) {\n return new (t || TitleStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TitleStrategy,\n factory: () => (() => inject(DefaultTitleStrategy))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(TitleStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(DefaultTitleStrategy)\n }]\n }], null, null);\n})();\n/**\n * The default `TitleStrategy` used by the router that updates the title using the `Title` service.\n */\nclass DefaultTitleStrategy extends TitleStrategy {\n constructor(title) {\n super();\n this.title = title;\n }\n /**\n * Sets the title of the browser to the given value.\n *\n * @param title The `pageTitle` from the deepest primary route.\n */\n updateTitle(snapshot) {\n const title = this.buildTitle(snapshot);\n if (title !== undefined) {\n this.title.setTitle(title);\n }\n }\n static {\n this.ɵfac = function DefaultTitleStrategy_Factory(t) {\n return new (t || DefaultTitleStrategy)(i0.ɵɵinject(i1.Title));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DefaultTitleStrategy,\n factory: DefaultTitleStrategy.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultTitleStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: i1.Title\n }], null);\n})();\n\n/**\n * A [DI token](guide/glossary/#di-token) for the router service.\n *\n * @publicApi\n */\nconst ROUTER_CONFIGURATION = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'router config' : '', {\n providedIn: 'root',\n factory: () => ({})\n});\n\n/**\n * The [DI token](guide/glossary/#di-token) for a router configuration.\n *\n * `ROUTES` is a low level API for router configuration via dependency injection.\n *\n * We recommend that in almost all cases to use higher level APIs such as `RouterModule.forRoot()`,\n * `provideRouter`, or `Router.resetConfig()`.\n *\n * @publicApi\n */\nconst ROUTES = new InjectionToken(ngDevMode ? 'ROUTES' : '');\nclass RouterConfigLoader {\n constructor() {\n this.componentLoaders = new WeakMap();\n this.childrenLoaders = new WeakMap();\n this.compiler = inject(Compiler);\n }\n loadComponent(route) {\n if (this.componentLoaders.get(route)) {\n return this.componentLoaders.get(route);\n } else if (route._loadedComponent) {\n return of(route._loadedComponent);\n }\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const loadRunner = wrapIntoObservable(route.loadComponent()).pipe(map(maybeUnwrapDefaultExport), tap(component => {\n if (this.onLoadEndListener) {\n this.onLoadEndListener(route);\n }\n (typeof ngDevMode === 'undefined' || ngDevMode) && assertStandalone(route.path ?? '', component);\n route._loadedComponent = component;\n }), finalize(() => {\n this.componentLoaders.delete(route);\n }));\n // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much\n const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount());\n this.componentLoaders.set(route, loader);\n return loader;\n }\n loadChildren(parentInjector, route) {\n if (this.childrenLoaders.get(route)) {\n return this.childrenLoaders.get(route);\n } else if (route._loadedRoutes) {\n return of({\n routes: route._loadedRoutes,\n injector: route._loadedInjector\n });\n }\n if (this.onLoadStartListener) {\n this.onLoadStartListener(route);\n }\n const moduleFactoryOrRoutes$ = loadChildren(route, this.compiler, parentInjector, this.onLoadEndListener);\n const loadRunner = moduleFactoryOrRoutes$.pipe(finalize(() => {\n this.childrenLoaders.delete(route);\n }));\n // Use custom ConnectableObservable as share in runners pipe increasing the bundle size too much\n const loader = new ConnectableObservable(loadRunner, () => new Subject()).pipe(refCount());\n this.childrenLoaders.set(route, loader);\n return loader;\n }\n static {\n this.ɵfac = function RouterConfigLoader_Factory(t) {\n return new (t || RouterConfigLoader)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouterConfigLoader,\n factory: RouterConfigLoader.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterConfigLoader, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/**\n * Executes a `route.loadChildren` callback and converts the result to an array of child routes and\n * an injector if that callback returned a module.\n *\n * This function is used for the route discovery during prerendering\n * in @angular-devkit/build-angular. If there are any updates to the contract here, it will require\n * an update to the extractor.\n */\nfunction loadChildren(route, compiler, parentInjector, onLoadEndListener) {\n return wrapIntoObservable(route.loadChildren()).pipe(map(maybeUnwrapDefaultExport), mergeMap(t => {\n if (t instanceof NgModuleFactory || Array.isArray(t)) {\n return of(t);\n } else {\n return from(compiler.compileModuleAsync(t));\n }\n }), map(factoryOrRoutes => {\n if (onLoadEndListener) {\n onLoadEndListener(route);\n }\n // This injector comes from the `NgModuleRef` when lazy loading an `NgModule`. There is\n // no injector associated with lazy loading a `Route` array.\n let injector;\n let rawRoutes;\n let requireStandaloneComponents = false;\n if (Array.isArray(factoryOrRoutes)) {\n rawRoutes = factoryOrRoutes;\n requireStandaloneComponents = true;\n } else {\n injector = factoryOrRoutes.create(parentInjector).injector;\n // When loading a module that doesn't provide `RouterModule.forChild()` preloader\n // will get stuck in an infinite loop. The child module's Injector will look to\n // its parent `Injector` when it doesn't find any ROUTES so it will return routes\n // for it's parent module instead.\n rawRoutes = injector.get(ROUTES, [], {\n optional: true,\n self: true\n }).flat();\n }\n const routes = rawRoutes.map(standardizeConfig);\n (typeof ngDevMode === 'undefined' || ngDevMode) && validateConfig(routes, route.path, requireStandaloneComponents);\n return {\n routes,\n injector\n };\n }));\n}\nfunction isWrappedDefaultExport(value) {\n // We use `in` here with a string key `'default'`, because we expect `DefaultExport` objects to be\n // dynamically imported ES modules with a spec-mandated `default` key. Thus we don't expect that\n // `default` will be a renamed property.\n return value && typeof value === 'object' && 'default' in value;\n}\nfunction maybeUnwrapDefaultExport(input) {\n // As per `isWrappedDefaultExport`, the `default` key here is generated by the browser and not\n // subject to property renaming, so we reference it with bracket access.\n return isWrappedDefaultExport(input) ? input['default'] : input;\n}\n\n/**\n * @description\n *\n * Provides a way to migrate AngularJS applications to Angular.\n *\n * @publicApi\n */\nclass UrlHandlingStrategy {\n static {\n this.ɵfac = function UrlHandlingStrategy_Factory(t) {\n return new (t || UrlHandlingStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: UrlHandlingStrategy,\n factory: () => (() => inject(DefaultUrlHandlingStrategy))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(UrlHandlingStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(DefaultUrlHandlingStrategy)\n }]\n }], null, null);\n})();\n/**\n * @publicApi\n */\nclass DefaultUrlHandlingStrategy {\n shouldProcessUrl(url) {\n return true;\n }\n extract(url) {\n return url;\n }\n merge(newUrlPart, wholeUrl) {\n return newUrlPart;\n }\n static {\n this.ɵfac = function DefaultUrlHandlingStrategy_Factory(t) {\n return new (t || DefaultUrlHandlingStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DefaultUrlHandlingStrategy,\n factory: DefaultUrlHandlingStrategy.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultUrlHandlingStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n\n/// \nconst CREATE_VIEW_TRANSITION = new InjectionToken(ngDevMode ? 'view transition helper' : '');\nconst VIEW_TRANSITION_OPTIONS = new InjectionToken(ngDevMode ? 'view transition options' : '');\n/**\n * A helper function for using browser view transitions. This function skips the call to\n * `startViewTransition` if the browser does not support it.\n *\n * @returns A Promise that resolves when the view transition callback begins.\n */\nfunction createViewTransition(injector, from, to) {\n const transitionOptions = injector.get(VIEW_TRANSITION_OPTIONS);\n const document = injector.get(DOCUMENT);\n // Create promises outside the Angular zone to avoid causing extra change detections\n return injector.get(NgZone).runOutsideAngular(() => {\n if (!document.startViewTransition || transitionOptions.skipNextTransition) {\n transitionOptions.skipNextTransition = false;\n return Promise.resolve();\n }\n let resolveViewTransitionStarted;\n const viewTransitionStarted = new Promise(resolve => {\n resolveViewTransitionStarted = resolve;\n });\n const transition = document.startViewTransition(() => {\n resolveViewTransitionStarted();\n // We don't actually update dom within the transition callback. The resolving of the above\n // promise unblocks the Router navigation, which synchronously activates and deactivates\n // routes (the DOM update). This view transition waits for the next change detection to\n // complete (below), which includes the update phase of the routed components.\n return createRenderPromise(injector);\n });\n const {\n onViewTransitionCreated\n } = transitionOptions;\n if (onViewTransitionCreated) {\n runInInjectionContext(injector, () => onViewTransitionCreated({\n transition,\n from,\n to\n }));\n }\n return viewTransitionStarted;\n });\n}\n/**\n * Creates a promise that resolves after next render.\n */\nfunction createRenderPromise(injector) {\n return new Promise(resolve => {\n afterNextRender(resolve, {\n injector\n });\n });\n}\nclass NavigationTransitions {\n get hasRequestedNavigation() {\n return this.navigationId !== 0;\n }\n constructor() {\n this.currentNavigation = null;\n this.currentTransition = null;\n this.lastSuccessfulNavigation = null;\n /**\n * These events are used to communicate back to the Router about the state of the transition. The\n * Router wants to respond to these events in various ways. Because the `NavigationTransition`\n * class is not public, this event subject is not publicly exposed.\n */\n this.events = new Subject();\n /**\n * Used to abort the current transition with an error.\n */\n this.transitionAbortSubject = new Subject();\n this.configLoader = inject(RouterConfigLoader);\n this.environmentInjector = inject(EnvironmentInjector);\n this.urlSerializer = inject(UrlSerializer);\n this.rootContexts = inject(ChildrenOutletContexts);\n this.location = inject(Location);\n this.inputBindingEnabled = inject(INPUT_BINDER, {\n optional: true\n }) !== null;\n this.titleStrategy = inject(TitleStrategy);\n this.options = inject(ROUTER_CONFIGURATION, {\n optional: true\n }) || {};\n this.paramsInheritanceStrategy = this.options.paramsInheritanceStrategy || 'emptyOnly';\n this.urlHandlingStrategy = inject(UrlHandlingStrategy);\n this.createViewTransition = inject(CREATE_VIEW_TRANSITION, {\n optional: true\n });\n this.navigationId = 0;\n /**\n * Hook that enables you to pause navigation after the preactivation phase.\n * Used by `RouterModule`.\n *\n * @internal\n */\n this.afterPreactivation = () => of(void 0);\n /** @internal */\n this.rootComponentType = null;\n const onLoadStart = r => this.events.next(new RouteConfigLoadStart(r));\n const onLoadEnd = r => this.events.next(new RouteConfigLoadEnd(r));\n this.configLoader.onLoadEndListener = onLoadEnd;\n this.configLoader.onLoadStartListener = onLoadStart;\n }\n complete() {\n this.transitions?.complete();\n }\n handleNavigationRequest(request) {\n const id = ++this.navigationId;\n this.transitions?.next({\n ...this.transitions.value,\n ...request,\n id\n });\n }\n setupNavigations(router, initialUrlTree, initialRouterState) {\n this.transitions = new BehaviorSubject({\n id: 0,\n currentUrlTree: initialUrlTree,\n currentRawUrl: initialUrlTree,\n extractedUrl: this.urlHandlingStrategy.extract(initialUrlTree),\n urlAfterRedirects: this.urlHandlingStrategy.extract(initialUrlTree),\n rawUrl: initialUrlTree,\n extras: {},\n resolve: null,\n reject: null,\n promise: Promise.resolve(true),\n source: IMPERATIVE_NAVIGATION,\n restoredState: null,\n currentSnapshot: initialRouterState.snapshot,\n targetSnapshot: null,\n currentRouterState: initialRouterState,\n targetRouterState: null,\n guards: {\n canActivateChecks: [],\n canDeactivateChecks: []\n },\n guardsResult: null\n });\n return this.transitions.pipe(filter(t => t.id !== 0),\n // Extract URL\n map(t => ({\n ...t,\n extractedUrl: this.urlHandlingStrategy.extract(t.rawUrl)\n })),\n // Using switchMap so we cancel executing navigations when a new one comes in\n switchMap(overallTransitionState => {\n this.currentTransition = overallTransitionState;\n let completed = false;\n let errored = false;\n return of(overallTransitionState).pipe(\n // Store the Navigation object\n tap(t => {\n this.currentNavigation = {\n id: t.id,\n initialUrl: t.rawUrl,\n extractedUrl: t.extractedUrl,\n trigger: t.source,\n extras: t.extras,\n previousNavigation: !this.lastSuccessfulNavigation ? null : {\n ...this.lastSuccessfulNavigation,\n previousNavigation: null\n }\n };\n }), switchMap(t => {\n const urlTransition = !router.navigated || this.isUpdatingInternalState() || this.isUpdatedBrowserUrl();\n const onSameUrlNavigation = t.extras.onSameUrlNavigation ?? router.onSameUrlNavigation;\n if (!urlTransition && onSameUrlNavigation !== 'reload') {\n const reason = typeof ngDevMode === 'undefined' || ngDevMode ? `Navigation to ${t.rawUrl} was ignored because it is the same as the current Router URL.` : '';\n this.events.next(new NavigationSkipped(t.id, this.urlSerializer.serialize(t.rawUrl), reason, NavigationSkippedCode.IgnoredSameUrlNavigation));\n t.resolve(null);\n return EMPTY;\n }\n if (this.urlHandlingStrategy.shouldProcessUrl(t.rawUrl)) {\n return of(t).pipe(\n // Fire NavigationStart event\n switchMap(t => {\n const transition = this.transitions?.getValue();\n this.events.next(new NavigationStart(t.id, this.urlSerializer.serialize(t.extractedUrl), t.source, t.restoredState));\n if (transition !== this.transitions?.getValue()) {\n return EMPTY;\n }\n // This delay is required to match old behavior that forced\n // navigation to always be async\n return Promise.resolve(t);\n }),\n // Recognize\n recognize(this.environmentInjector, this.configLoader, this.rootComponentType, router.config, this.urlSerializer, this.paramsInheritanceStrategy),\n // Update URL if in `eager` update mode\n tap(t => {\n overallTransitionState.targetSnapshot = t.targetSnapshot;\n overallTransitionState.urlAfterRedirects = t.urlAfterRedirects;\n this.currentNavigation = {\n ...this.currentNavigation,\n finalUrl: t.urlAfterRedirects\n };\n // Fire RoutesRecognized\n const routesRecognized = new RoutesRecognized(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(routesRecognized);\n }));\n } else if (urlTransition && this.urlHandlingStrategy.shouldProcessUrl(t.currentRawUrl)) {\n /* When the current URL shouldn't be processed, but the previous one\n * was, we handle this \"error condition\" by navigating to the\n * previously successful URL, but leaving the URL intact.*/\n const {\n id,\n extractedUrl,\n source,\n restoredState,\n extras\n } = t;\n const navStart = new NavigationStart(id, this.urlSerializer.serialize(extractedUrl), source, restoredState);\n this.events.next(navStart);\n const targetSnapshot = createEmptyState(this.rootComponentType).snapshot;\n this.currentTransition = overallTransitionState = {\n ...t,\n targetSnapshot,\n urlAfterRedirects: extractedUrl,\n extras: {\n ...extras,\n skipLocationChange: false,\n replaceUrl: false\n }\n };\n this.currentNavigation.finalUrl = extractedUrl;\n return of(overallTransitionState);\n } else {\n /* When neither the current or previous URL can be processed, do\n * nothing other than update router's internal reference to the\n * current \"settled\" URL. This way the next navigation will be coming\n * from the current URL in the browser.\n */\n const reason = typeof ngDevMode === 'undefined' || ngDevMode ? `Navigation was ignored because the UrlHandlingStrategy` + ` indicated neither the current URL ${t.currentRawUrl} nor target URL ${t.rawUrl} should be processed.` : '';\n this.events.next(new NavigationSkipped(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, NavigationSkippedCode.IgnoredByUrlHandlingStrategy));\n t.resolve(null);\n return EMPTY;\n }\n }),\n // --- GUARDS ---\n tap(t => {\n const guardsStart = new GuardsCheckStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(guardsStart);\n }), map(t => {\n this.currentTransition = overallTransitionState = {\n ...t,\n guards: getAllRouteGuards(t.targetSnapshot, t.currentSnapshot, this.rootContexts)\n };\n return overallTransitionState;\n }), checkGuards(this.environmentInjector, evt => this.events.next(evt)), tap(t => {\n overallTransitionState.guardsResult = t.guardsResult;\n if (isUrlTree(t.guardsResult)) {\n throw redirectingNavigationError(this.urlSerializer, t.guardsResult);\n }\n const guardsEnd = new GuardsCheckEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot, !!t.guardsResult);\n this.events.next(guardsEnd);\n }), filter(t => {\n if (!t.guardsResult) {\n this.cancelNavigationTransition(t, '', NavigationCancellationCode.GuardRejected);\n return false;\n }\n return true;\n }),\n // --- RESOLVE ---\n switchTap(t => {\n if (t.guards.canActivateChecks.length) {\n return of(t).pipe(tap(t => {\n const resolveStart = new ResolveStart(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(resolveStart);\n }), switchMap(t => {\n let dataResolved = false;\n return of(t).pipe(resolveData(this.paramsInheritanceStrategy, this.environmentInjector), tap({\n next: () => dataResolved = true,\n complete: () => {\n if (!dataResolved) {\n this.cancelNavigationTransition(t, typeof ngDevMode === 'undefined' || ngDevMode ? `At least one route resolver didn't emit any value.` : '', NavigationCancellationCode.NoDataFromResolver);\n }\n }\n }));\n }), tap(t => {\n const resolveEnd = new ResolveEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects), t.targetSnapshot);\n this.events.next(resolveEnd);\n }));\n }\n return undefined;\n }),\n // --- LOAD COMPONENTS ---\n switchTap(t => {\n const loadComponents = route => {\n const loaders = [];\n if (route.routeConfig?.loadComponent && !route.routeConfig._loadedComponent) {\n loaders.push(this.configLoader.loadComponent(route.routeConfig).pipe(tap(loadedComponent => {\n route.component = loadedComponent;\n }), map(() => void 0)));\n }\n for (const child of route.children) {\n loaders.push(...loadComponents(child));\n }\n return loaders;\n };\n return combineLatest(loadComponents(t.targetSnapshot.root)).pipe(defaultIfEmpty(null), take(1));\n }), switchTap(() => this.afterPreactivation()), switchMap(() => {\n const {\n currentSnapshot,\n targetSnapshot\n } = overallTransitionState;\n const viewTransitionStarted = this.createViewTransition?.(this.environmentInjector, currentSnapshot.root, targetSnapshot.root);\n // If view transitions are enabled, block the navigation until the view\n // transition callback starts. Otherwise, continue immediately.\n return viewTransitionStarted ? from(viewTransitionStarted).pipe(map(() => overallTransitionState)) : of(overallTransitionState);\n }), map(t => {\n const targetRouterState = createRouterState(router.routeReuseStrategy, t.targetSnapshot, t.currentRouterState);\n this.currentTransition = overallTransitionState = {\n ...t,\n targetRouterState\n };\n this.currentNavigation.targetRouterState = targetRouterState;\n return overallTransitionState;\n }), tap(() => {\n this.events.next(new BeforeActivateRoutes());\n }), activateRoutes(this.rootContexts, router.routeReuseStrategy, evt => this.events.next(evt), this.inputBindingEnabled),\n // Ensure that if some observable used to drive the transition doesn't\n // complete, the navigation still finalizes This should never happen, but\n // this is done as a safety measure to avoid surfacing this error (#49567).\n take(1), tap({\n next: t => {\n completed = true;\n this.lastSuccessfulNavigation = this.currentNavigation;\n this.events.next(new NavigationEnd(t.id, this.urlSerializer.serialize(t.extractedUrl), this.urlSerializer.serialize(t.urlAfterRedirects)));\n this.titleStrategy?.updateTitle(t.targetRouterState.snapshot);\n t.resolve(true);\n },\n complete: () => {\n completed = true;\n }\n }),\n // There used to be a lot more logic happening directly within the\n // transition Observable. Some of this logic has been refactored out to\n // other places but there may still be errors that happen there. This gives\n // us a way to cancel the transition from the outside. This may also be\n // required in the future to support something like the abort signal of the\n // Navigation API where the navigation gets aborted from outside the\n // transition.\n takeUntil(this.transitionAbortSubject.pipe(tap(err => {\n throw err;\n }))), finalize(() => {\n /* When the navigation stream finishes either through error or success,\n * we set the `completed` or `errored` flag. However, there are some\n * situations where we could get here without either of those being set.\n * For instance, a redirect during NavigationStart. Therefore, this is a\n * catch-all to make sure the NavigationCancel event is fired when a\n * navigation gets cancelled but not caught by other means. */\n if (!completed && !errored) {\n const cancelationReason = typeof ngDevMode === 'undefined' || ngDevMode ? `Navigation ID ${overallTransitionState.id} is not equal to the current navigation id ${this.navigationId}` : '';\n this.cancelNavigationTransition(overallTransitionState, cancelationReason, NavigationCancellationCode.SupersededByNewNavigation);\n }\n // Only clear current navigation if it is still set to the one that\n // finalized.\n if (this.currentNavigation?.id === overallTransitionState.id) {\n this.currentNavigation = null;\n }\n }), catchError(e => {\n errored = true;\n /* This error type is issued during Redirect, and is handled as a\n * cancellation rather than an error. */\n if (isNavigationCancelingError(e)) {\n this.events.next(new NavigationCancel(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e.message, e.cancellationCode));\n // When redirecting, we need to delay resolving the navigation\n // promise and push it to the redirect navigation\n if (!isRedirectingNavigationCancelingError(e)) {\n overallTransitionState.resolve(false);\n } else {\n this.events.next(new RedirectRequest(e.url));\n }\n /* All other errors should reset to the router's internal URL reference\n * to the pre-error state. */\n } else {\n this.events.next(new NavigationError(overallTransitionState.id, this.urlSerializer.serialize(overallTransitionState.extractedUrl), e, overallTransitionState.targetSnapshot ?? undefined));\n try {\n overallTransitionState.resolve(router.errorHandler(e));\n } catch (ee) {\n // TODO(atscott): consider flipping the default behavior of\n // resolveNavigationPromiseOnError to be `resolve(false)` when\n // undefined. This is the most sane thing to do given that\n // applications very rarely handle the promise rejection and, as a\n // result, would get \"unhandled promise rejection\" console logs.\n // The vast majority of applications would not be affected by this\n // change so omitting a migration seems reasonable. Instead,\n // applications that rely on rejection can specifically opt-in to the\n // old behavior.\n if (this.options.resolveNavigationPromiseOnError) {\n overallTransitionState.resolve(false);\n } else {\n overallTransitionState.reject(ee);\n }\n }\n }\n return EMPTY;\n }));\n // casting because `pipe` returns observable({}) when called with 8+ arguments\n }));\n }\n cancelNavigationTransition(t, reason, code) {\n const navCancel = new NavigationCancel(t.id, this.urlSerializer.serialize(t.extractedUrl), reason, code);\n this.events.next(navCancel);\n t.resolve(false);\n }\n /**\n * @returns Whether we're navigating to somewhere that is not what the Router is\n * currently set to.\n */\n isUpdatingInternalState() {\n // TODO(atscott): The serializer should likely be used instead of\n // `UrlTree.toString()`. Custom serializers are often written to handle\n // things better than the default one (objects, for example will be\n // [Object object] with the custom serializer and be \"the same\" when they\n // aren't).\n // (Same for isUpdatedBrowserUrl)\n return this.currentTransition?.extractedUrl.toString() !== this.currentTransition?.currentUrlTree.toString();\n }\n /**\n * @returns Whether we're updating the browser URL to something new (navigation is going\n * to somewhere not displayed in the URL bar and we will update the URL\n * bar if navigation succeeds).\n */\n isUpdatedBrowserUrl() {\n // The extracted URL is the part of the URL that this application cares about. `extract` may\n // return only part of the browser URL and that part may have not changed even if some other\n // portion of the URL did.\n const extractedBrowserUrl = this.urlHandlingStrategy.extract(this.urlSerializer.parse(this.location.path(true)));\n return extractedBrowserUrl.toString() !== this.currentTransition?.extractedUrl.toString() && !this.currentTransition?.extras.skipLocationChange;\n }\n static {\n this.ɵfac = function NavigationTransitions_Factory(t) {\n return new (t || NavigationTransitions)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NavigationTransitions,\n factory: NavigationTransitions.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NavigationTransitions, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [], null);\n})();\nfunction isBrowserTriggeredNavigation(source) {\n return source !== IMPERATIVE_NAVIGATION;\n}\n\n/**\n * @description\n *\n * Provides a way to customize when activated routes get reused.\n *\n * @publicApi\n */\nclass RouteReuseStrategy {\n static {\n this.ɵfac = function RouteReuseStrategy_Factory(t) {\n return new (t || RouteReuseStrategy)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouteReuseStrategy,\n factory: () => (() => inject(DefaultRouteReuseStrategy))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouteReuseStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(DefaultRouteReuseStrategy)\n }]\n }], null, null);\n})();\n/**\n * @description\n *\n * This base route reuse strategy only reuses routes when the matched router configs are\n * identical. This prevents components from being destroyed and recreated\n * when just the route parameters, query parameters or fragment change\n * (that is, the existing component is _reused_).\n *\n * This strategy does not store any routes for later reuse.\n *\n * Angular uses this strategy by default.\n *\n *\n * It can be used as a base class for custom route reuse strategies, i.e. you can create your own\n * class that extends the `BaseRouteReuseStrategy` one.\n * @publicApi\n */\nclass BaseRouteReuseStrategy {\n /**\n * Whether the given route should detach for later reuse.\n * Always returns false for `BaseRouteReuseStrategy`.\n * */\n shouldDetach(route) {\n return false;\n }\n /**\n * A no-op; the route is never stored since this strategy never detaches routes for later re-use.\n */\n store(route, detachedTree) {}\n /** Returns `false`, meaning the route (and its subtree) is never reattached */\n shouldAttach(route) {\n return false;\n }\n /** Returns `null` because this strategy does not store routes for later re-use. */\n retrieve(route) {\n return null;\n }\n /**\n * Determines if a route should be reused.\n * This strategy returns `true` when the future route config and current route config are\n * identical.\n */\n shouldReuseRoute(future, curr) {\n return future.routeConfig === curr.routeConfig;\n }\n}\nclass DefaultRouteReuseStrategy extends BaseRouteReuseStrategy {\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵDefaultRouteReuseStrategy_BaseFactory;\n return function DefaultRouteReuseStrategy_Factory(t) {\n return (ɵDefaultRouteReuseStrategy_BaseFactory || (ɵDefaultRouteReuseStrategy_BaseFactory = i0.ɵɵgetInheritedFactory(DefaultRouteReuseStrategy)))(t || DefaultRouteReuseStrategy);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: DefaultRouteReuseStrategy,\n factory: DefaultRouteReuseStrategy.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(DefaultRouteReuseStrategy, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nclass StateManager {\n static {\n this.ɵfac = function StateManager_Factory(t) {\n return new (t || StateManager)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: StateManager,\n factory: () => (() => inject(HistoryStateManager))(),\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(StateManager, [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: () => inject(HistoryStateManager)\n }]\n }], null, null);\n})();\nclass HistoryStateManager extends StateManager {\n constructor() {\n super(...arguments);\n this.location = inject(Location);\n this.urlSerializer = inject(UrlSerializer);\n this.options = inject(ROUTER_CONFIGURATION, {\n optional: true\n }) || {};\n this.canceledNavigationResolution = this.options.canceledNavigationResolution || 'replace';\n this.urlHandlingStrategy = inject(UrlHandlingStrategy);\n this.urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';\n this.currentUrlTree = new UrlTree();\n this.rawUrlTree = this.currentUrlTree;\n /**\n * The id of the currently active page in the router.\n * Updated to the transition's target id on a successful navigation.\n *\n * This is used to track what page the router last activated. When an attempted navigation fails,\n * the router can then use this to compute how to restore the state back to the previously active\n * page.\n */\n this.currentPageId = 0;\n this.lastSuccessfulId = -1;\n this.routerState = createEmptyState(null);\n this.stateMemento = this.createStateMemento();\n }\n getCurrentUrlTree() {\n return this.currentUrlTree;\n }\n getRawUrlTree() {\n return this.rawUrlTree;\n }\n restoredState() {\n return this.location.getState();\n }\n /**\n * The ɵrouterPageId of whatever page is currently active in the browser history. This is\n * important for computing the target page id for new navigations because we need to ensure each\n * page id in the browser history is 1 more than the previous entry.\n */\n get browserPageId() {\n if (this.canceledNavigationResolution !== 'computed') {\n return this.currentPageId;\n }\n return this.restoredState()?.ɵrouterPageId ?? this.currentPageId;\n }\n getRouterState() {\n return this.routerState;\n }\n createStateMemento() {\n return {\n rawUrlTree: this.rawUrlTree,\n currentUrlTree: this.currentUrlTree,\n routerState: this.routerState\n };\n }\n registerNonRouterCurrentEntryChangeListener(listener) {\n return this.location.subscribe(event => {\n if (event['type'] === 'popstate') {\n listener(event['url'], event.state);\n }\n });\n }\n handleRouterEvent(e, currentTransition) {\n if (e instanceof NavigationStart) {\n this.stateMemento = this.createStateMemento();\n } else if (e instanceof NavigationSkipped) {\n this.rawUrlTree = currentTransition.initialUrl;\n } else if (e instanceof RoutesRecognized) {\n if (this.urlUpdateStrategy === 'eager') {\n if (!currentTransition.extras.skipLocationChange) {\n const rawUrl = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl);\n this.setBrowserUrl(rawUrl, currentTransition);\n }\n }\n } else if (e instanceof BeforeActivateRoutes) {\n this.currentUrlTree = currentTransition.finalUrl;\n this.rawUrlTree = this.urlHandlingStrategy.merge(currentTransition.finalUrl, currentTransition.initialUrl);\n this.routerState = currentTransition.targetRouterState;\n if (this.urlUpdateStrategy === 'deferred') {\n if (!currentTransition.extras.skipLocationChange) {\n this.setBrowserUrl(this.rawUrlTree, currentTransition);\n }\n }\n } else if (e instanceof NavigationCancel && (e.code === NavigationCancellationCode.GuardRejected || e.code === NavigationCancellationCode.NoDataFromResolver)) {\n this.restoreHistory(currentTransition);\n } else if (e instanceof NavigationError) {\n this.restoreHistory(currentTransition, true);\n } else if (e instanceof NavigationEnd) {\n this.lastSuccessfulId = e.id;\n this.currentPageId = this.browserPageId;\n }\n }\n setBrowserUrl(url, transition) {\n const path = this.urlSerializer.serialize(url);\n if (this.location.isCurrentPathEqualTo(path) || !!transition.extras.replaceUrl) {\n // replacements do not update the target page\n const currentBrowserPageId = this.browserPageId;\n const state = {\n ...transition.extras.state,\n ...this.generateNgRouterState(transition.id, currentBrowserPageId)\n };\n this.location.replaceState(path, '', state);\n } else {\n const state = {\n ...transition.extras.state,\n ...this.generateNgRouterState(transition.id, this.browserPageId + 1)\n };\n this.location.go(path, '', state);\n }\n }\n /**\n * Performs the necessary rollback action to restore the browser URL to the\n * state before the transition.\n */\n restoreHistory(navigation, restoringFromCaughtError = false) {\n if (this.canceledNavigationResolution === 'computed') {\n const currentBrowserPageId = this.browserPageId;\n const targetPagePosition = this.currentPageId - currentBrowserPageId;\n if (targetPagePosition !== 0) {\n this.location.historyGo(targetPagePosition);\n } else if (this.currentUrlTree === navigation.finalUrl && targetPagePosition === 0) {\n // We got to the activation stage (where currentUrlTree is set to the navigation's\n // finalUrl), but we weren't moving anywhere in history (skipLocationChange or replaceUrl).\n // We still need to reset the router state back to what it was when the navigation started.\n this.resetState(navigation);\n this.resetUrlToCurrentUrlTree();\n } else {\n // The browser URL and router state was not updated before the navigation cancelled so\n // there's no restoration needed.\n }\n } else if (this.canceledNavigationResolution === 'replace') {\n // TODO(atscott): It seems like we should _always_ reset the state here. It would be a no-op\n // for `deferred` navigations that haven't change the internal state yet because guards\n // reject. For 'eager' navigations, it seems like we also really should reset the state\n // because the navigation was cancelled. Investigate if this can be done by running TGP.\n if (restoringFromCaughtError) {\n this.resetState(navigation);\n }\n this.resetUrlToCurrentUrlTree();\n }\n }\n resetState(navigation) {\n this.routerState = this.stateMemento.routerState;\n this.currentUrlTree = this.stateMemento.currentUrlTree;\n // Note here that we use the urlHandlingStrategy to get the reset `rawUrlTree` because it may be\n // configured to handle only part of the navigation URL. This means we would only want to reset\n // the part of the navigation handled by the Angular router rather than the whole URL. In\n // addition, the URLHandlingStrategy may be configured to specifically preserve parts of the URL\n // when merging, such as the query params so they are not lost on a refresh.\n this.rawUrlTree = this.urlHandlingStrategy.merge(this.currentUrlTree, navigation.finalUrl ?? this.rawUrlTree);\n }\n resetUrlToCurrentUrlTree() {\n this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree), '', this.generateNgRouterState(this.lastSuccessfulId, this.currentPageId));\n }\n generateNgRouterState(navigationId, routerPageId) {\n if (this.canceledNavigationResolution === 'computed') {\n return {\n navigationId,\n ɵrouterPageId: routerPageId\n };\n }\n return {\n navigationId\n };\n }\n static {\n this.ɵfac = /* @__PURE__ */(() => {\n let ɵHistoryStateManager_BaseFactory;\n return function HistoryStateManager_Factory(t) {\n return (ɵHistoryStateManager_BaseFactory || (ɵHistoryStateManager_BaseFactory = i0.ɵɵgetInheritedFactory(HistoryStateManager)))(t || HistoryStateManager);\n };\n })();\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HistoryStateManager,\n factory: HistoryStateManager.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(HistoryStateManager, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\nvar NavigationResult;\n(function (NavigationResult) {\n NavigationResult[NavigationResult[\"COMPLETE\"] = 0] = \"COMPLETE\";\n NavigationResult[NavigationResult[\"FAILED\"] = 1] = \"FAILED\";\n NavigationResult[NavigationResult[\"REDIRECTING\"] = 2] = \"REDIRECTING\";\n})(NavigationResult || (NavigationResult = {}));\n/**\n * Performs the given action once the router finishes its next/current navigation.\n *\n * The navigation is considered complete under the following conditions:\n * - `NavigationCancel` event emits and the code is not `NavigationCancellationCode.Redirect` or\n * `NavigationCancellationCode.SupersededByNewNavigation`. In these cases, the\n * redirecting/superseding navigation must finish.\n * - `NavigationError`, `NavigationEnd`, or `NavigationSkipped` event emits\n */\nfunction afterNextNavigation(router, action) {\n router.events.pipe(filter(e => e instanceof NavigationEnd || e instanceof NavigationCancel || e instanceof NavigationError || e instanceof NavigationSkipped), map(e => {\n if (e instanceof NavigationEnd || e instanceof NavigationSkipped) {\n return NavigationResult.COMPLETE;\n }\n const redirecting = e instanceof NavigationCancel ? e.code === NavigationCancellationCode.Redirect || e.code === NavigationCancellationCode.SupersededByNewNavigation : false;\n return redirecting ? NavigationResult.REDIRECTING : NavigationResult.FAILED;\n }), filter(result => result !== NavigationResult.REDIRECTING), take(1)).subscribe(() => {\n action();\n });\n}\nfunction defaultErrorHandler(error) {\n throw error;\n}\n/**\n * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `true`\n * (exact = true).\n */\nconst exactMatchOptions = {\n paths: 'exact',\n fragment: 'ignored',\n matrixParams: 'ignored',\n queryParams: 'exact'\n};\n/**\n * The equivalent `IsActiveMatchOptions` options for `Router.isActive` is called with `false`\n * (exact = false).\n */\nconst subsetMatchOptions = {\n paths: 'subset',\n fragment: 'ignored',\n matrixParams: 'ignored',\n queryParams: 'subset'\n};\n/**\n * @description\n *\n * A service that provides navigation among views and URL manipulation capabilities.\n *\n * @see {@link Route}\n * @see [Routing and Navigation Guide](guide/router).\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass Router {\n get currentUrlTree() {\n return this.stateManager.getCurrentUrlTree();\n }\n get rawUrlTree() {\n return this.stateManager.getRawUrlTree();\n }\n /**\n * An event stream for routing events.\n */\n get events() {\n // TODO(atscott): This _should_ be events.asObservable(). However, this change requires internal\n // cleanup: tests are doing `(route.events as Subject).next(...)`. This isn't\n // allowed/supported but we still have to fix these or file bugs against the teams before making\n // the change.\n return this._events;\n }\n /**\n * The current state of routing in this NgModule.\n */\n get routerState() {\n return this.stateManager.getRouterState();\n }\n constructor() {\n this.disposed = false;\n this.isNgZoneEnabled = false;\n this.console = inject(ɵConsole);\n this.stateManager = inject(StateManager);\n this.options = inject(ROUTER_CONFIGURATION, {\n optional: true\n }) || {};\n this.pendingTasks = inject(ɵPendingTasks);\n this.urlUpdateStrategy = this.options.urlUpdateStrategy || 'deferred';\n this.navigationTransitions = inject(NavigationTransitions);\n this.urlSerializer = inject(UrlSerializer);\n this.location = inject(Location);\n this.urlHandlingStrategy = inject(UrlHandlingStrategy);\n /**\n * The private `Subject` type for the public events exposed in the getter. This is used internally\n * to push events to. The separate field allows us to expose separate types in the public API\n * (i.e., an Observable rather than the Subject).\n */\n this._events = new Subject();\n /**\n * A handler for navigation errors in this NgModule.\n *\n * @deprecated Subscribe to the `Router` events and watch for `NavigationError` instead.\n * `provideRouter` has the `withNavigationErrorHandler` feature to make this easier.\n * @see {@link withNavigationErrorHandler}\n */\n this.errorHandler = this.options.errorHandler || defaultErrorHandler;\n /**\n * True if at least one navigation event has occurred,\n * false otherwise.\n */\n this.navigated = false;\n /**\n * A strategy for re-using routes.\n *\n * @deprecated Configure using `providers` instead:\n * `{provide: RouteReuseStrategy, useClass: MyStrategy}`.\n */\n this.routeReuseStrategy = inject(RouteReuseStrategy);\n /**\n * How to handle a navigation request to the current URL.\n *\n *\n * @deprecated Configure this through `provideRouter` or `RouterModule.forRoot` instead.\n * @see {@link withRouterConfig}\n * @see {@link provideRouter}\n * @see {@link RouterModule}\n */\n this.onSameUrlNavigation = this.options.onSameUrlNavigation || 'ignore';\n this.config = inject(ROUTES, {\n optional: true\n })?.flat() ?? [];\n /**\n * Indicates whether the application has opted in to binding Router data to component inputs.\n *\n * This option is enabled by the `withComponentInputBinding` feature of `provideRouter` or\n * `bindToComponentInputs` in the `ExtraOptions` of `RouterModule.forRoot`.\n */\n this.componentInputBindingEnabled = !!inject(INPUT_BINDER, {\n optional: true\n });\n this.eventsSubscription = new Subscription();\n this.isNgZoneEnabled = inject(NgZone) instanceof NgZone && NgZone.isInAngularZone();\n this.resetConfig(this.config);\n this.navigationTransitions.setupNavigations(this, this.currentUrlTree, this.routerState).subscribe({\n error: e => {\n this.console.warn(ngDevMode ? `Unhandled Navigation Error: ${e}` : e);\n }\n });\n this.subscribeToNavigationEvents();\n }\n subscribeToNavigationEvents() {\n const subscription = this.navigationTransitions.events.subscribe(e => {\n try {\n const currentTransition = this.navigationTransitions.currentTransition;\n const currentNavigation = this.navigationTransitions.currentNavigation;\n if (currentTransition !== null && currentNavigation !== null) {\n this.stateManager.handleRouterEvent(e, currentNavigation);\n if (e instanceof NavigationCancel && e.code !== NavigationCancellationCode.Redirect && e.code !== NavigationCancellationCode.SupersededByNewNavigation) {\n // It seems weird that `navigated` is set to `true` when the navigation is rejected,\n // however it's how things were written initially. Investigation would need to be done\n // to determine if this can be removed.\n this.navigated = true;\n } else if (e instanceof NavigationEnd) {\n this.navigated = true;\n } else if (e instanceof RedirectRequest) {\n const mergedTree = this.urlHandlingStrategy.merge(e.url, currentTransition.currentRawUrl);\n const extras = {\n // Persist transient navigation info from the original navigation request.\n info: currentTransition.extras.info,\n skipLocationChange: currentTransition.extras.skipLocationChange,\n // The URL is already updated at this point if we have 'eager' URL\n // updates or if the navigation was triggered by the browser (back\n // button, URL bar, etc). We want to replace that item in history\n // if the navigation is rejected.\n replaceUrl: this.urlUpdateStrategy === 'eager' || isBrowserTriggeredNavigation(currentTransition.source)\n };\n this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras, {\n resolve: currentTransition.resolve,\n reject: currentTransition.reject,\n promise: currentTransition.promise\n });\n }\n }\n // Note that it's important to have the Router process the events _before_ the event is\n // pushed through the public observable. This ensures the correct router state is in place\n // before applications observe the events.\n if (isPublicRouterEvent(e)) {\n this._events.next(e);\n }\n } catch (e) {\n this.navigationTransitions.transitionAbortSubject.next(e);\n }\n });\n this.eventsSubscription.add(subscription);\n }\n /** @internal */\n resetRootComponentType(rootComponentType) {\n // TODO: vsavkin router 4.0 should make the root component set to null\n // this will simplify the lifecycle of the router.\n this.routerState.root.component = rootComponentType;\n this.navigationTransitions.rootComponentType = rootComponentType;\n }\n /**\n * Sets up the location change listener and performs the initial navigation.\n */\n initialNavigation() {\n this.setUpLocationChangeListener();\n if (!this.navigationTransitions.hasRequestedNavigation) {\n this.navigateToSyncWithBrowser(this.location.path(true), IMPERATIVE_NAVIGATION, this.stateManager.restoredState());\n }\n }\n /**\n * Sets up the location change listener. This listener detects navigations triggered from outside\n * the Router (the browser back/forward buttons, for example) and schedules a corresponding Router\n * navigation so that the correct events, guards, etc. are triggered.\n */\n setUpLocationChangeListener() {\n // Don't need to use Zone.wrap any more, because zone.js\n // already patch onPopState, so location change callback will\n // run into ngZone\n this.nonRouterCurrentEntryChangeSubscription ??= this.stateManager.registerNonRouterCurrentEntryChangeListener((url, state) => {\n // The `setTimeout` was added in #12160 and is likely to support Angular/AngularJS\n // hybrid apps.\n setTimeout(() => {\n this.navigateToSyncWithBrowser(url, 'popstate', state);\n }, 0);\n });\n }\n /**\n * Schedules a router navigation to synchronize Router state with the browser state.\n *\n * This is done as a response to a popstate event and the initial navigation. These\n * two scenarios represent times when the browser URL/state has been updated and\n * the Router needs to respond to ensure its internal state matches.\n */\n navigateToSyncWithBrowser(url, source, state) {\n const extras = {\n replaceUrl: true\n };\n // TODO: restoredState should always include the entire state, regardless\n // of navigationId. This requires a breaking change to update the type on\n // NavigationStart’s restoredState, which currently requires navigationId\n // to always be present. The Router used to only restore history state if\n // a navigationId was present.\n // The stored navigationId is used by the RouterScroller to retrieve the scroll\n // position for the page.\n const restoredState = state?.navigationId ? state : null;\n // Separate to NavigationStart.restoredState, we must also restore the state to\n // history.state and generate a new navigationId, since it will be overwritten\n if (state) {\n const stateCopy = {\n ...state\n };\n delete stateCopy.navigationId;\n delete stateCopy.ɵrouterPageId;\n if (Object.keys(stateCopy).length !== 0) {\n extras.state = stateCopy;\n }\n }\n const urlTree = this.parseUrl(url);\n this.scheduleNavigation(urlTree, source, restoredState, extras);\n }\n /** The current URL. */\n get url() {\n return this.serializeUrl(this.currentUrlTree);\n }\n /**\n * Returns the current `Navigation` object when the router is navigating,\n * and `null` when idle.\n */\n getCurrentNavigation() {\n return this.navigationTransitions.currentNavigation;\n }\n /**\n * The `Navigation` object of the most recent navigation to succeed and `null` if there\n * has not been a successful navigation yet.\n */\n get lastSuccessfulNavigation() {\n return this.navigationTransitions.lastSuccessfulNavigation;\n }\n /**\n * Resets the route configuration used for navigation and generating links.\n *\n * @param config The route array for the new configuration.\n *\n * @usageNotes\n *\n * ```\n * router.resetConfig([\n * { path: 'team/:id', component: TeamCmp, children: [\n * { path: 'simple', component: SimpleCmp },\n * { path: 'user/:name', component: UserCmp }\n * ]}\n * ]);\n * ```\n */\n resetConfig(config) {\n (typeof ngDevMode === 'undefined' || ngDevMode) && validateConfig(config);\n this.config = config.map(standardizeConfig);\n this.navigated = false;\n }\n /** @nodoc */\n ngOnDestroy() {\n this.dispose();\n }\n /** Disposes of the router. */\n dispose() {\n this.navigationTransitions.complete();\n if (this.nonRouterCurrentEntryChangeSubscription) {\n this.nonRouterCurrentEntryChangeSubscription.unsubscribe();\n this.nonRouterCurrentEntryChangeSubscription = undefined;\n }\n this.disposed = true;\n this.eventsSubscription.unsubscribe();\n }\n /**\n * Appends URL segments to the current URL tree to create a new URL tree.\n *\n * @param commands An array of URL fragments with which to construct the new URL tree.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the current URL tree or the one provided in the `relativeTo`\n * property of the options object, if supplied.\n * @param navigationExtras Options that control the navigation strategy.\n * @returns The new URL tree.\n *\n * @usageNotes\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static segments like this (this works only with the first passed-in value):\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // If the first segment can contain slashes, and you do not want the router to split it,\n * // you can do the following:\n * router.createUrlTree([{segmentPath: '/one/two'}]);\n *\n * // create /team/33/(user/11//right:chat)\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: 'chat'}}]);\n *\n * // remove the right secondary node\n * router.createUrlTree(['/team', 33, {outlets: {primary: 'user/11', right: null}}]);\n *\n * // assuming the current url is `/team/33/user/11` and the route points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], {relativeTo: route});\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], {relativeTo: route});\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], {relativeTo: route});\n *\n * Note that a value of `null` or `undefined` for `relativeTo` indicates that the\n * tree should be created relative to the root.\n * ```\n */\n createUrlTree(commands, navigationExtras = {}) {\n const {\n relativeTo,\n queryParams,\n fragment,\n queryParamsHandling,\n preserveFragment\n } = navigationExtras;\n const f = preserveFragment ? this.currentUrlTree.fragment : fragment;\n let q = null;\n switch (queryParamsHandling) {\n case 'merge':\n q = {\n ...this.currentUrlTree.queryParams,\n ...queryParams\n };\n break;\n case 'preserve':\n q = this.currentUrlTree.queryParams;\n break;\n default:\n q = queryParams || null;\n }\n if (q !== null) {\n q = this.removeEmptyProps(q);\n }\n let relativeToUrlSegmentGroup;\n try {\n const relativeToSnapshot = relativeTo ? relativeTo.snapshot : this.routerState.snapshot.root;\n relativeToUrlSegmentGroup = createSegmentGroupFromRoute(relativeToSnapshot);\n } catch (e) {\n // This is strictly for backwards compatibility with tests that create\n // invalid `ActivatedRoute` mocks.\n // Note: the difference between having this fallback for invalid `ActivatedRoute` setups and\n // just throwing is ~500 test failures. Fixing all of those tests by hand is not feasible at\n // the moment.\n if (typeof commands[0] !== 'string' || !commands[0].startsWith('/')) {\n // Navigations that were absolute in the old way of creating UrlTrees\n // would still work because they wouldn't attempt to match the\n // segments in the `ActivatedRoute` to the `currentUrlTree` but\n // instead just replace the root segment with the navigation result.\n // Non-absolute navigations would fail to apply the commands because\n // the logic could not find the segment to replace (so they'd act like there were no\n // commands).\n commands = [];\n }\n relativeToUrlSegmentGroup = this.currentUrlTree.root;\n }\n return createUrlTreeFromSegmentGroup(relativeToUrlSegmentGroup, commands, q, f ?? null);\n }\n /**\n * Navigates to a view using an absolute route path.\n *\n * @param url An absolute path for a defined route. The function does not apply any delta to the\n * current URL.\n * @param extras An object containing properties that modify the navigation strategy.\n *\n * @returns A Promise that resolves to 'true' when navigation succeeds,\n * to 'false' when navigation fails, or is rejected on error.\n *\n * @usageNotes\n *\n * The following calls request navigation to an absolute path.\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n *\n * // Navigate without updating the URL\n * router.navigateByUrl(\"/team/33/user/11\", { skipLocationChange: true });\n * ```\n *\n * @see [Routing and Navigation guide](guide/router)\n *\n */\n navigateByUrl(url, extras = {\n skipLocationChange: false\n }) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (this.isNgZoneEnabled && !NgZone.isInAngularZone()) {\n this.console.warn(`Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?`);\n }\n }\n const urlTree = isUrlTree(url) ? url : this.parseUrl(url);\n const mergedTree = this.urlHandlingStrategy.merge(urlTree, this.rawUrlTree);\n return this.scheduleNavigation(mergedTree, IMPERATIVE_NAVIGATION, null, extras);\n }\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no starting route is provided, the navigation is absolute.\n *\n * @param commands An array of URL fragments with which to construct the target URL.\n * If the path is static, can be the literal URL string. For a dynamic path, pass an array of path\n * segments, followed by the parameters for each segment.\n * The fragments are applied to the current URL or the one provided in the `relativeTo` property\n * of the options object, if supplied.\n * @param extras An options object that determines how the URL should be constructed or\n * interpreted.\n *\n * @returns A Promise that resolves to `true` when navigation succeeds, or `false` when navigation\n * fails. The Promise is rejected when an error occurs if `resolveNavigationPromiseOnError` is\n * not `true`.\n *\n * @usageNotes\n *\n * The following calls request navigation to a dynamic route path relative to the current URL.\n *\n * ```\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route});\n *\n * // Navigate without updating the URL, overriding the default behavior\n * router.navigate(['team', 33, 'user', 11], {relativeTo: route, skipLocationChange: true});\n * ```\n *\n * @see [Routing and Navigation guide](guide/router)\n *\n */\n navigate(commands, extras = {\n skipLocationChange: false\n }) {\n validateCommands(commands);\n return this.navigateByUrl(this.createUrlTree(commands, extras), extras);\n }\n /** Serializes a `UrlTree` into a string */\n serializeUrl(url) {\n return this.urlSerializer.serialize(url);\n }\n /** Parses a string into a `UrlTree` */\n parseUrl(url) {\n try {\n return this.urlSerializer.parse(url);\n } catch {\n return this.urlSerializer.parse('/');\n }\n }\n isActive(url, matchOptions) {\n let options;\n if (matchOptions === true) {\n options = {\n ...exactMatchOptions\n };\n } else if (matchOptions === false) {\n options = {\n ...subsetMatchOptions\n };\n } else {\n options = matchOptions;\n }\n if (isUrlTree(url)) {\n return containsTree(this.currentUrlTree, url, options);\n }\n const urlTree = this.parseUrl(url);\n return containsTree(this.currentUrlTree, urlTree, options);\n }\n removeEmptyProps(params) {\n return Object.entries(params).reduce((result, [key, value]) => {\n if (value !== null && value !== undefined) {\n result[key] = value;\n }\n return result;\n }, {});\n }\n scheduleNavigation(rawUrl, source, restoredState, extras, priorPromise) {\n if (this.disposed) {\n return Promise.resolve(false);\n }\n let resolve;\n let reject;\n let promise;\n if (priorPromise) {\n resolve = priorPromise.resolve;\n reject = priorPromise.reject;\n promise = priorPromise.promise;\n } else {\n promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n }\n // Indicate that the navigation is happening.\n const taskId = this.pendingTasks.add();\n afterNextNavigation(this, () => {\n // Remove pending task in a microtask to allow for cancelled\n // initial navigations and redirects within the same task.\n queueMicrotask(() => this.pendingTasks.remove(taskId));\n });\n this.navigationTransitions.handleNavigationRequest({\n source,\n restoredState,\n currentUrlTree: this.currentUrlTree,\n currentRawUrl: this.currentUrlTree,\n rawUrl,\n extras,\n resolve,\n reject,\n promise,\n currentSnapshot: this.routerState.snapshot,\n currentRouterState: this.routerState\n });\n // Make sure that the error is propagated even though `processNavigations` catch\n // handler does not rethrow\n return promise.catch(e => {\n return Promise.reject(e);\n });\n }\n static {\n this.ɵfac = function Router_Factory(t) {\n return new (t || Router)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: Router,\n factory: Router.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Router, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [], null);\n})();\nfunction validateCommands(commands) {\n for (let i = 0; i < commands.length; i++) {\n const cmd = commands[i];\n if (cmd == null) {\n throw new ɵRuntimeError(4008 /* RuntimeErrorCode.NULLISH_COMMAND */, (typeof ngDevMode === 'undefined' || ngDevMode) && `The requested path contains ${cmd} segment at index ${i}`);\n }\n }\n}\nfunction isPublicRouterEvent(e) {\n return !(e instanceof BeforeActivateRoutes) && !(e instanceof RedirectRequest);\n}\n\n/**\n * @description\n *\n * When applied to an element in a template, makes that element a link\n * that initiates navigation to a route. Navigation opens one or more routed components\n * in one or more `` locations on the page.\n *\n * Given a route configuration `[{ path: 'user/:name', component: UserCmp }]`,\n * the following creates a static link to the route:\n * `link to user component`\n *\n * You can use dynamic values to generate the link.\n * For a dynamic link, pass an array of path segments,\n * followed by the params for each segment.\n * For example, `['/team', teamId, 'user', userName, {details: true}]`\n * generates a link to `/team/11/user/bob;details=true`.\n *\n * Multiple static segments can be merged into one term and combined with dynamic segments.\n * For example, `['/team/11/user', userName, {details: true}]`\n *\n * The input that you provide to the link is treated as a delta to the current URL.\n * For instance, suppose the current URL is `/user/(box//aux:team)`.\n * The link `Jim` creates the URL\n * `/user/(jim//aux:team)`.\n * See {@link Router#createUrlTree} for more information.\n *\n * @usageNotes\n *\n * You can use absolute or relative paths in a link, set query parameters,\n * control how parameters are handled, and keep a history of navigation states.\n *\n * ### Relative link paths\n *\n * The first segment name can be prepended with `/`, `./`, or `../`.\n * * If the first segment begins with `/`, the router looks up the route from the root of the\n * app.\n * * If the first segment begins with `./`, or doesn't begin with a slash, the router\n * looks in the children of the current activated route.\n * * If the first segment begins with `../`, the router goes up one level in the route tree.\n *\n * ### Setting and handling query params and fragments\n *\n * The following link adds a query parameter and a fragment to the generated URL:\n *\n * ```\n * \n * link to user component\n * \n * ```\n * By default, the directive constructs the new URL using the given query parameters.\n * The example generates the link: `/user/bob?debug=true#education`.\n *\n * You can instruct the directive to handle query parameters differently\n * by specifying the `queryParamsHandling` option in the link.\n * Allowed values are:\n *\n * - `'merge'`: Merge the given `queryParams` into the current query params.\n * - `'preserve'`: Preserve the current query params.\n *\n * For example:\n *\n * ```\n * \n * link to user component\n * \n * ```\n *\n * See {@link UrlCreationOptions#queryParamsHandling}.\n *\n * ### Preserving navigation history\n *\n * You can provide a `state` value to be persisted to the browser's\n * [`History.state` property](https://developer.mozilla.org/en-US/docs/Web/API/History#Properties).\n * For example:\n *\n * ```\n * \n * link to user component\n * \n * ```\n *\n * Use {@link Router#getCurrentNavigation} to retrieve a saved\n * navigation-state value. For example, to capture the `tracingId` during the `NavigationStart`\n * event:\n *\n * ```\n * // Get NavigationStart events\n * router.events.pipe(filter(e => e instanceof NavigationStart)).subscribe(e => {\n * const navigation = router.getCurrentNavigation();\n * tracingService.trace({id: navigation.extras.state.tracingId});\n * });\n * ```\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterLink {\n constructor(router, route, tabIndexAttribute, renderer, el, locationStrategy) {\n this.router = router;\n this.route = route;\n this.tabIndexAttribute = tabIndexAttribute;\n this.renderer = renderer;\n this.el = el;\n this.locationStrategy = locationStrategy;\n /**\n * Represents an `href` attribute value applied to a host element,\n * when a host element is ``. For other tags, the value is `null`.\n */\n this.href = null;\n this.commands = null;\n /** @internal */\n this.onChanges = new Subject();\n /**\n * Passed to {@link Router#createUrlTree} as part of the\n * `UrlCreationOptions`.\n * @see {@link UrlCreationOptions#preserveFragment}\n * @see {@link Router#createUrlTree}\n */\n this.preserveFragment = false;\n /**\n * Passed to {@link Router#navigateByUrl} as part of the\n * `NavigationBehaviorOptions`.\n * @see {@link NavigationBehaviorOptions#skipLocationChange}\n * @see {@link Router#navigateByUrl}\n */\n this.skipLocationChange = false;\n /**\n * Passed to {@link Router#navigateByUrl} as part of the\n * `NavigationBehaviorOptions`.\n * @see {@link NavigationBehaviorOptions#replaceUrl}\n * @see {@link Router#navigateByUrl}\n */\n this.replaceUrl = false;\n const tagName = el.nativeElement.tagName?.toLowerCase();\n this.isAnchorElement = tagName === 'a' || tagName === 'area';\n if (this.isAnchorElement) {\n this.subscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.updateHref();\n }\n });\n } else {\n this.setTabIndexIfNotOnNativeEl('0');\n }\n }\n /**\n * Modifies the tab index if there was not a tabindex attribute on the element during\n * instantiation.\n */\n setTabIndexIfNotOnNativeEl(newTabIndex) {\n if (this.tabIndexAttribute != null /* both `null` and `undefined` */ || this.isAnchorElement) {\n return;\n }\n this.applyAttributeValue('tabindex', newTabIndex);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (this.isAnchorElement) {\n this.updateHref();\n }\n // This is subscribed to by `RouterLinkActive` so that it knows to update when there are changes\n // to the RouterLinks it's tracking.\n this.onChanges.next(this);\n }\n /**\n * Commands to pass to {@link Router#createUrlTree}.\n * - **array**: commands to pass to {@link Router#createUrlTree}.\n * - **string**: shorthand for array of commands with just the string, i.e. `['/route']`\n * - **null|undefined**: effectively disables the `routerLink`\n * @see {@link Router#createUrlTree}\n */\n set routerLink(commands) {\n if (commands != null) {\n this.commands = Array.isArray(commands) ? commands : [commands];\n this.setTabIndexIfNotOnNativeEl('0');\n } else {\n this.commands = null;\n this.setTabIndexIfNotOnNativeEl(null);\n }\n }\n /** @nodoc */\n onClick(button, ctrlKey, shiftKey, altKey, metaKey) {\n const urlTree = this.urlTree;\n if (urlTree === null) {\n return true;\n }\n if (this.isAnchorElement) {\n if (button !== 0 || ctrlKey || shiftKey || altKey || metaKey) {\n return true;\n }\n if (typeof this.target === 'string' && this.target != '_self') {\n return true;\n }\n }\n const extras = {\n skipLocationChange: this.skipLocationChange,\n replaceUrl: this.replaceUrl,\n state: this.state,\n info: this.info\n };\n this.router.navigateByUrl(urlTree, extras);\n // Return `false` for `` elements to prevent default action\n // and cancel the native behavior, since the navigation is handled\n // by the Router.\n return !this.isAnchorElement;\n }\n /** @nodoc */\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n updateHref() {\n const urlTree = this.urlTree;\n this.href = urlTree !== null && this.locationStrategy ? this.locationStrategy?.prepareExternalUrl(this.router.serializeUrl(urlTree)) : null;\n const sanitizedValue = this.href === null ? null :\n // This class represents a directive that can be added to both `` elements,\n // as well as other elements. As a result, we can't define security context at\n // compile time. So the security context is deferred to runtime.\n // The `ɵɵsanitizeUrlOrResourceUrl` selects the necessary sanitizer function\n // based on the tag and property names. The logic mimics the one from\n // `packages/compiler/src/schema/dom_security_schema.ts`, which is used at compile time.\n //\n // Note: we should investigate whether we can switch to using `@HostBinding('attr.href')`\n // instead of applying a value via a renderer, after a final merge of the\n // `RouterLinkWithHref` directive.\n ɵɵsanitizeUrlOrResourceUrl(this.href, this.el.nativeElement.tagName.toLowerCase(), 'href');\n this.applyAttributeValue('href', sanitizedValue);\n }\n applyAttributeValue(attrName, attrValue) {\n const renderer = this.renderer;\n const nativeElement = this.el.nativeElement;\n if (attrValue !== null) {\n renderer.setAttribute(nativeElement, attrName, attrValue);\n } else {\n renderer.removeAttribute(nativeElement, attrName);\n }\n }\n get urlTree() {\n if (this.commands === null) {\n return null;\n }\n return this.router.createUrlTree(this.commands, {\n // If the `relativeTo` input is not defined, we want to use `this.route` by default.\n // Otherwise, we should use the value provided by the user in the input.\n relativeTo: this.relativeTo !== undefined ? this.relativeTo : this.route,\n queryParams: this.queryParams,\n fragment: this.fragment,\n queryParamsHandling: this.queryParamsHandling,\n preserveFragment: this.preserveFragment\n });\n }\n static {\n this.ɵfac = function RouterLink_Factory(t) {\n return new (t || RouterLink)(i0.ɵɵdirectiveInject(Router), i0.ɵɵdirectiveInject(ActivatedRoute), i0.ɵɵinjectAttribute('tabindex'), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i3.LocationStrategy));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RouterLink,\n selectors: [[\"\", \"routerLink\", \"\"]],\n hostVars: 1,\n hostBindings: function RouterLink_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function RouterLink_click_HostBindingHandler($event) {\n return ctx.onClick($event.button, $event.ctrlKey, $event.shiftKey, $event.altKey, $event.metaKey);\n });\n }\n if (rf & 2) {\n i0.ɵɵattribute(\"target\", ctx.target);\n }\n },\n inputs: {\n target: \"target\",\n queryParams: \"queryParams\",\n fragment: \"fragment\",\n queryParamsHandling: \"queryParamsHandling\",\n state: \"state\",\n info: \"info\",\n relativeTo: \"relativeTo\",\n preserveFragment: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"preserveFragment\", \"preserveFragment\", booleanAttribute],\n skipLocationChange: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"skipLocationChange\", \"skipLocationChange\", booleanAttribute],\n replaceUrl: [i0.ɵɵInputFlags.HasDecoratorInputTransform, \"replaceUrl\", \"replaceUrl\", booleanAttribute],\n routerLink: \"routerLink\"\n },\n standalone: true,\n features: [i0.ɵɵInputTransformsFeature, i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterLink, [{\n type: Directive,\n args: [{\n selector: '[routerLink]',\n standalone: true\n }]\n }], () => [{\n type: Router\n }, {\n type: ActivatedRoute\n }, {\n type: undefined,\n decorators: [{\n type: Attribute,\n args: ['tabindex']\n }]\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ElementRef\n }, {\n type: i3.LocationStrategy\n }], {\n target: [{\n type: HostBinding,\n args: ['attr.target']\n }, {\n type: Input\n }],\n queryParams: [{\n type: Input\n }],\n fragment: [{\n type: Input\n }],\n queryParamsHandling: [{\n type: Input\n }],\n state: [{\n type: Input\n }],\n info: [{\n type: Input\n }],\n relativeTo: [{\n type: Input\n }],\n preserveFragment: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n skipLocationChange: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n replaceUrl: [{\n type: Input,\n args: [{\n transform: booleanAttribute\n }]\n }],\n routerLink: [{\n type: Input\n }],\n onClick: [{\n type: HostListener,\n args: ['click', ['$event.button', '$event.ctrlKey', '$event.shiftKey', '$event.altKey', '$event.metaKey']]\n }]\n });\n})();\n\n/**\n *\n * @description\n *\n * Tracks whether the linked route of an element is currently active, and allows you\n * to specify one or more CSS classes to add to the element when the linked route\n * is active.\n *\n * Use this directive to create a visual distinction for elements associated with an active route.\n * For example, the following code highlights the word \"Bob\" when the router\n * activates the associated route:\n *\n * ```\n * Bob\n * ```\n *\n * Whenever the URL is either '/user' or '/user/bob', the \"active-link\" class is\n * added to the anchor tag. If the URL changes, the class is removed.\n *\n * You can set more than one class using a space-separated string or an array.\n * For example:\n *\n * ```\n * Bob\n * Bob\n * ```\n *\n * To add the classes only when the URL matches the link exactly, add the option `exact: true`:\n *\n * ```\n * Bob\n * ```\n *\n * To directly check the `isActive` status of the link, assign the `RouterLinkActive`\n * instance to a template variable.\n * For example, the following checks the status without assigning any CSS classes:\n *\n * ```\n * \n * Bob {{ rla.isActive ? '(already open)' : ''}}\n * \n * ```\n *\n * You can apply the `RouterLinkActive` directive to an ancestor of linked elements.\n * For example, the following sets the active-link class on the `
` parent tag\n * when the URL is either '/user/jim' or '/user/bob'.\n *\n * ```\n *
\n * Jim\n * Bob\n *
\n * ```\n *\n * The `RouterLinkActive` directive can also be used to set the aria-current attribute\n * to provide an alternative distinction for active elements to visually impaired users.\n *\n * For example, the following code adds the 'active' class to the Home Page link when it is\n * indeed active and in such case also sets its aria-current attribute to 'page':\n *\n * ```\n * Home Page\n * ```\n *\n * @ngModule RouterModule\n *\n * @publicApi\n */\nclass RouterLinkActive {\n get isActive() {\n return this._isActive;\n }\n constructor(router, element, renderer, cdr, link) {\n this.router = router;\n this.element = element;\n this.renderer = renderer;\n this.cdr = cdr;\n this.link = link;\n this.classes = [];\n this._isActive = false;\n /**\n * Options to configure how to determine if the router link is active.\n *\n * These options are passed to the `Router.isActive()` function.\n *\n * @see {@link Router#isActive}\n */\n this.routerLinkActiveOptions = {\n exact: false\n };\n /**\n *\n * You can use the output `isActiveChange` to get notified each time the link becomes\n * active or inactive.\n *\n * Emits:\n * true -> Route is active\n * false -> Route is inactive\n *\n * ```\n * Bob\n * ```\n */\n this.isActiveChange = new EventEmitter();\n this.routerEventsSubscription = router.events.subscribe(s => {\n if (s instanceof NavigationEnd) {\n this.update();\n }\n });\n }\n /** @nodoc */\n ngAfterContentInit() {\n // `of(null)` is used to force subscribe body to execute once immediately (like `startWith`).\n of(this.links.changes, of(null)).pipe(mergeAll()).subscribe(_ => {\n this.update();\n this.subscribeToEachLinkOnChanges();\n });\n }\n subscribeToEachLinkOnChanges() {\n this.linkInputChangesSubscription?.unsubscribe();\n const allLinkChanges = [...this.links.toArray(), this.link].filter(link => !!link).map(link => link.onChanges);\n this.linkInputChangesSubscription = from(allLinkChanges).pipe(mergeAll()).subscribe(link => {\n if (this._isActive !== this.isLinkActive(this.router)(link)) {\n this.update();\n }\n });\n }\n set routerLinkActive(data) {\n const classes = Array.isArray(data) ? data : data.split(' ');\n this.classes = classes.filter(c => !!c);\n }\n /** @nodoc */\n ngOnChanges(changes) {\n this.update();\n }\n /** @nodoc */\n ngOnDestroy() {\n this.routerEventsSubscription.unsubscribe();\n this.linkInputChangesSubscription?.unsubscribe();\n }\n update() {\n if (!this.links || !this.router.navigated) return;\n queueMicrotask(() => {\n const hasActiveLinks = this.hasActiveLinks();\n if (this._isActive !== hasActiveLinks) {\n this._isActive = hasActiveLinks;\n this.cdr.markForCheck();\n this.classes.forEach(c => {\n if (hasActiveLinks) {\n this.renderer.addClass(this.element.nativeElement, c);\n } else {\n this.renderer.removeClass(this.element.nativeElement, c);\n }\n });\n if (hasActiveLinks && this.ariaCurrentWhenActive !== undefined) {\n this.renderer.setAttribute(this.element.nativeElement, 'aria-current', this.ariaCurrentWhenActive.toString());\n } else {\n this.renderer.removeAttribute(this.element.nativeElement, 'aria-current');\n }\n // Emit on isActiveChange after classes are updated\n this.isActiveChange.emit(hasActiveLinks);\n }\n });\n }\n isLinkActive(router) {\n const options = isActiveMatchOptions(this.routerLinkActiveOptions) ? this.routerLinkActiveOptions :\n // While the types should disallow `undefined` here, it's possible without strict inputs\n this.routerLinkActiveOptions.exact || false;\n return link => {\n const urlTree = link.urlTree;\n return urlTree ? router.isActive(urlTree, options) : false;\n };\n }\n hasActiveLinks() {\n const isActiveCheckFn = this.isLinkActive(this.router);\n return this.link && isActiveCheckFn(this.link) || this.links.some(isActiveCheckFn);\n }\n static {\n this.ɵfac = function RouterLinkActive_Factory(t) {\n return new (t || RouterLinkActive)(i0.ɵɵdirectiveInject(Router), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(RouterLink, 8));\n };\n }\n static {\n this.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: RouterLinkActive,\n selectors: [[\"\", \"routerLinkActive\", \"\"]],\n contentQueries: function RouterLinkActive_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, RouterLink, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.links = _t);\n }\n },\n inputs: {\n routerLinkActiveOptions: \"routerLinkActiveOptions\",\n ariaCurrentWhenActive: \"ariaCurrentWhenActive\",\n routerLinkActive: \"routerLinkActive\"\n },\n outputs: {\n isActiveChange: \"isActiveChange\"\n },\n exportAs: [\"routerLinkActive\"],\n standalone: true,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterLinkActive, [{\n type: Directive,\n args: [{\n selector: '[routerLinkActive]',\n exportAs: 'routerLinkActive',\n standalone: true\n }]\n }], () => [{\n type: Router\n }, {\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: RouterLink,\n decorators: [{\n type: Optional\n }]\n }], {\n links: [{\n type: ContentChildren,\n args: [RouterLink, {\n descendants: true\n }]\n }],\n routerLinkActiveOptions: [{\n type: Input\n }],\n ariaCurrentWhenActive: [{\n type: Input\n }],\n isActiveChange: [{\n type: Output\n }],\n routerLinkActive: [{\n type: Input\n }]\n });\n})();\n/**\n * Use instead of `'paths' in options` to be compatible with property renaming\n */\nfunction isActiveMatchOptions(options) {\n return !!options.paths;\n}\n\n/**\n * @description\n *\n * Provides a preloading strategy.\n *\n * @publicApi\n */\nclass PreloadingStrategy {}\n/**\n * @description\n *\n * Provides a preloading strategy that preloads all modules as quickly as possible.\n *\n * ```\n * RouterModule.forRoot(ROUTES, {preloadingStrategy: PreloadAllModules})\n * ```\n *\n * @publicApi\n */\nclass PreloadAllModules {\n preload(route, fn) {\n return fn().pipe(catchError(() => of(null)));\n }\n static {\n this.ɵfac = function PreloadAllModules_Factory(t) {\n return new (t || PreloadAllModules)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: PreloadAllModules,\n factory: PreloadAllModules.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(PreloadAllModules, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/**\n * @description\n *\n * Provides a preloading strategy that does not preload any modules.\n *\n * This strategy is enabled by default.\n *\n * @publicApi\n */\nclass NoPreloading {\n preload(route, fn) {\n return of(null);\n }\n static {\n this.ɵfac = function NoPreloading_Factory(t) {\n return new (t || NoPreloading)();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: NoPreloading,\n factory: NoPreloading.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(NoPreloading, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], null, null);\n})();\n/**\n * The preloader optimistically loads all router configurations to\n * make navigations into lazily-loaded sections of the application faster.\n *\n * The preloader runs in the background. When the router bootstraps, the preloader\n * starts listening to all navigation events. After every such event, the preloader\n * will check if any configurations can be loaded lazily.\n *\n * If a route is protected by `canLoad` guards, the preloaded will not load it.\n *\n * @publicApi\n */\nclass RouterPreloader {\n constructor(router, compiler, injector, preloadingStrategy, loader) {\n this.router = router;\n this.injector = injector;\n this.preloadingStrategy = preloadingStrategy;\n this.loader = loader;\n }\n setUpPreloading() {\n this.subscription = this.router.events.pipe(filter(e => e instanceof NavigationEnd), concatMap(() => this.preload())).subscribe(() => {});\n }\n preload() {\n return this.processRoutes(this.injector, this.router.config);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n processRoutes(injector, routes) {\n const res = [];\n for (const route of routes) {\n if (route.providers && !route._injector) {\n route._injector = createEnvironmentInjector(route.providers, injector, `Route: ${route.path}`);\n }\n const injectorForCurrentRoute = route._injector ?? injector;\n const injectorForChildren = route._loadedInjector ?? injectorForCurrentRoute;\n // Note that `canLoad` is only checked as a condition that prevents `loadChildren` and not\n // `loadComponent`. `canLoad` guards only block loading of child routes by design. This\n // happens as a consequence of needing to descend into children for route matching immediately\n // while component loading is deferred until route activation. Because `canLoad` guards can\n // have side effects, we cannot execute them here so we instead skip preloading altogether\n // when present. Lastly, it remains to be decided whether `canLoad` should behave this way\n // at all. Code splitting and lazy loading is separate from client-side authorization checks\n // and should not be used as a security measure to prevent loading of code.\n if (route.loadChildren && !route._loadedRoutes && route.canLoad === undefined || route.loadComponent && !route._loadedComponent) {\n res.push(this.preloadConfig(injectorForCurrentRoute, route));\n }\n if (route.children || route._loadedRoutes) {\n res.push(this.processRoutes(injectorForChildren, route.children ?? route._loadedRoutes));\n }\n }\n return from(res).pipe(mergeAll());\n }\n preloadConfig(injector, route) {\n return this.preloadingStrategy.preload(route, () => {\n let loadedChildren$;\n if (route.loadChildren && route.canLoad === undefined) {\n loadedChildren$ = this.loader.loadChildren(injector, route);\n } else {\n loadedChildren$ = of(null);\n }\n const recursiveLoadChildren$ = loadedChildren$.pipe(mergeMap(config => {\n if (config === null) {\n return of(void 0);\n }\n route._loadedRoutes = config.routes;\n route._loadedInjector = config.injector;\n // If the loaded config was a module, use that as the module/module injector going\n // forward. Otherwise, continue using the current module/module injector.\n return this.processRoutes(config.injector ?? injector, config.routes);\n }));\n if (route.loadComponent && !route._loadedComponent) {\n const loadComponent$ = this.loader.loadComponent(route);\n return from([recursiveLoadChildren$, loadComponent$]).pipe(mergeAll());\n } else {\n return recursiveLoadChildren$;\n }\n });\n }\n static {\n this.ɵfac = function RouterPreloader_Factory(t) {\n return new (t || RouterPreloader)(i0.ɵɵinject(Router), i0.ɵɵinject(i0.Compiler), i0.ɵɵinject(i0.EnvironmentInjector), i0.ɵɵinject(PreloadingStrategy), i0.ɵɵinject(RouterConfigLoader));\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouterPreloader,\n factory: RouterPreloader.ɵfac,\n providedIn: 'root'\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterPreloader, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], () => [{\n type: Router\n }, {\n type: i0.Compiler\n }, {\n type: i0.EnvironmentInjector\n }, {\n type: PreloadingStrategy\n }, {\n type: RouterConfigLoader\n }], null);\n})();\nconst ROUTER_SCROLLER = new InjectionToken('');\nclass RouterScroller {\n /** @nodoc */\n constructor(urlSerializer, transitions, viewportScroller, zone, options = {}) {\n this.urlSerializer = urlSerializer;\n this.transitions = transitions;\n this.viewportScroller = viewportScroller;\n this.zone = zone;\n this.options = options;\n this.lastId = 0;\n this.lastSource = 'imperative';\n this.restoredId = 0;\n this.store = {};\n // Default both options to 'disabled'\n options.scrollPositionRestoration ||= 'disabled';\n options.anchorScrolling ||= 'disabled';\n }\n init() {\n // we want to disable the automatic scrolling because having two places\n // responsible for scrolling results race conditions, especially given\n // that browser don't implement this behavior consistently\n if (this.options.scrollPositionRestoration !== 'disabled') {\n this.viewportScroller.setHistoryScrollRestoration('manual');\n }\n this.routerEventsSubscription = this.createScrollEvents();\n this.scrollEventsSubscription = this.consumeScrollEvents();\n }\n createScrollEvents() {\n return this.transitions.events.subscribe(e => {\n if (e instanceof NavigationStart) {\n // store the scroll position of the current stable navigations.\n this.store[this.lastId] = this.viewportScroller.getScrollPosition();\n this.lastSource = e.navigationTrigger;\n this.restoredId = e.restoredState ? e.restoredState.navigationId : 0;\n } else if (e instanceof NavigationEnd) {\n this.lastId = e.id;\n this.scheduleScrollEvent(e, this.urlSerializer.parse(e.urlAfterRedirects).fragment);\n } else if (e instanceof NavigationSkipped && e.code === NavigationSkippedCode.IgnoredSameUrlNavigation) {\n this.lastSource = undefined;\n this.restoredId = 0;\n this.scheduleScrollEvent(e, this.urlSerializer.parse(e.url).fragment);\n }\n });\n }\n consumeScrollEvents() {\n return this.transitions.events.subscribe(e => {\n if (!(e instanceof Scroll)) return;\n // a popstate event. The pop state event will always ignore anchor scrolling.\n if (e.position) {\n if (this.options.scrollPositionRestoration === 'top') {\n this.viewportScroller.scrollToPosition([0, 0]);\n } else if (this.options.scrollPositionRestoration === 'enabled') {\n this.viewportScroller.scrollToPosition(e.position);\n }\n // imperative navigation \"forward\"\n } else {\n if (e.anchor && this.options.anchorScrolling === 'enabled') {\n this.viewportScroller.scrollToAnchor(e.anchor);\n } else if (this.options.scrollPositionRestoration !== 'disabled') {\n this.viewportScroller.scrollToPosition([0, 0]);\n }\n }\n });\n }\n scheduleScrollEvent(routerEvent, anchor) {\n this.zone.runOutsideAngular(() => {\n // The scroll event needs to be delayed until after change detection. Otherwise, we may\n // attempt to restore the scroll position before the router outlet has fully rendered the\n // component by executing its update block of the template function.\n setTimeout(() => {\n this.zone.run(() => {\n this.transitions.events.next(new Scroll(routerEvent, this.lastSource === 'popstate' ? this.store[this.restoredId] : null, anchor));\n });\n }, 0);\n });\n }\n /** @nodoc */\n ngOnDestroy() {\n this.routerEventsSubscription?.unsubscribe();\n this.scrollEventsSubscription?.unsubscribe();\n }\n static {\n this.ɵfac = function RouterScroller_Factory(t) {\n i0.ɵɵinvalidFactory();\n };\n }\n static {\n this.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: RouterScroller,\n factory: RouterScroller.ɵfac\n });\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterScroller, [{\n type: Injectable\n }], () => [{\n type: UrlSerializer\n }, {\n type: NavigationTransitions\n }, {\n type: i3.ViewportScroller\n }, {\n type: i0.NgZone\n }, {\n type: undefined\n }], null);\n})();\n\n/**\n * Sets up providers necessary to enable `Router` functionality for the application.\n * Allows to configure a set of routes as well as extra features that should be enabled.\n *\n * @usageNotes\n *\n * Basic example of how you can add a Router to your application:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent, {\n * providers: [provideRouter(appRoutes)]\n * });\n * ```\n *\n * You can also enable optional features in the Router by adding functions from the `RouterFeatures`\n * type:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes,\n * withDebugTracing(),\n * withRouterConfig({paramsInheritanceStrategy: 'always'}))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link RouterFeatures}\n *\n * @publicApi\n * @param routes A set of `Route`s to use for the application routing table.\n * @param features Optional features to configure additional router behaviors.\n * @returns A set of providers to setup a Router.\n */\nfunction provideRouter(routes, ...features) {\n return makeEnvironmentProviders([{\n provide: ROUTES,\n multi: true,\n useValue: routes\n }, typeof ngDevMode === 'undefined' || ngDevMode ? {\n provide: ROUTER_IS_PROVIDED,\n useValue: true\n } : [], {\n provide: ActivatedRoute,\n useFactory: rootRoute,\n deps: [Router]\n }, {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n useFactory: getBootstrapListener\n }, features.map(feature => feature.ɵproviders)]);\n}\nfunction rootRoute(router) {\n return router.routerState.root;\n}\n/**\n * Helper function to create an object that represents a Router feature.\n */\nfunction routerFeature(kind, providers) {\n return {\n ɵkind: kind,\n ɵproviders: providers\n };\n}\n/**\n * An Injection token used to indicate whether `provideRouter` or `RouterModule.forRoot` was ever\n * called.\n */\nconst ROUTER_IS_PROVIDED = new InjectionToken('', {\n providedIn: 'root',\n factory: () => false\n});\nconst routerIsProvidedDevModeCheck = {\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory() {\n return () => {\n if (!inject(ROUTER_IS_PROVIDED)) {\n console.warn('`provideRoutes` was called without `provideRouter` or `RouterModule.forRoot`. ' + 'This is likely a mistake.');\n }\n };\n }\n};\n/**\n * Registers a [DI provider](guide/glossary#provider) for a set of routes.\n * @param routes The route configuration to provide.\n *\n * @usageNotes\n *\n * ```\n * @NgModule({\n * providers: [provideRoutes(ROUTES)]\n * })\n * class LazyLoadedChildModule {}\n * ```\n *\n * @deprecated If necessary, provide routes using the `ROUTES` `InjectionToken`.\n * @see {@link ROUTES}\n * @publicApi\n */\nfunction provideRoutes(routes) {\n return [{\n provide: ROUTES,\n multi: true,\n useValue: routes\n }, typeof ngDevMode === 'undefined' || ngDevMode ? routerIsProvidedDevModeCheck : []];\n}\n/**\n * Enables customizable scrolling behavior for router navigations.\n *\n * @usageNotes\n *\n * Basic example of how you can enable scrolling feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withInMemoryScrolling())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n * @see {@link ViewportScroller}\n *\n * @publicApi\n * @param options Set of configuration parameters to customize scrolling behavior, see\n * `InMemoryScrollingOptions` for additional information.\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withInMemoryScrolling(options = {}) {\n const providers = [{\n provide: ROUTER_SCROLLER,\n useFactory: () => {\n const viewportScroller = inject(ViewportScroller);\n const zone = inject(NgZone);\n const transitions = inject(NavigationTransitions);\n const urlSerializer = inject(UrlSerializer);\n return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, options);\n }\n }];\n return routerFeature(4 /* RouterFeatureKind.InMemoryScrollingFeature */, providers);\n}\nfunction getBootstrapListener() {\n const injector = inject(Injector);\n return bootstrappedComponentRef => {\n const ref = injector.get(ApplicationRef);\n if (bootstrappedComponentRef !== ref.components[0]) {\n return;\n }\n const router = injector.get(Router);\n const bootstrapDone = injector.get(BOOTSTRAP_DONE);\n if (injector.get(INITIAL_NAVIGATION) === 1 /* InitialNavigation.EnabledNonBlocking */) {\n router.initialNavigation();\n }\n injector.get(ROUTER_PRELOADER, null, InjectFlags.Optional)?.setUpPreloading();\n injector.get(ROUTER_SCROLLER, null, InjectFlags.Optional)?.init();\n router.resetRootComponentType(ref.componentTypes[0]);\n if (!bootstrapDone.closed) {\n bootstrapDone.next();\n bootstrapDone.complete();\n bootstrapDone.unsubscribe();\n }\n };\n}\n/**\n * A subject used to indicate that the bootstrapping phase is done. When initial navigation is\n * `enabledBlocking`, the first navigation waits until bootstrapping is finished before continuing\n * to the activation phase.\n */\nconst BOOTSTRAP_DONE = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'bootstrap done indicator' : '', {\n factory: () => {\n return new Subject();\n }\n});\nconst INITIAL_NAVIGATION = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'initial navigation' : '', {\n providedIn: 'root',\n factory: () => 1 /* InitialNavigation.EnabledNonBlocking */\n});\n/**\n * Configures initial navigation to start before the root component is created.\n *\n * The bootstrap is blocked until the initial navigation is complete. This value is required for\n * [server-side rendering](guide/ssr) to work.\n *\n * @usageNotes\n *\n * Basic example of how you can enable this navigation behavior:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withEnabledBlockingInitialNavigation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @publicApi\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withEnabledBlockingInitialNavigation() {\n const providers = [{\n provide: INITIAL_NAVIGATION,\n useValue: 0 /* InitialNavigation.EnabledBlocking */\n }, {\n provide: APP_INITIALIZER,\n multi: true,\n deps: [Injector],\n useFactory: injector => {\n const locationInitialized = injector.get(LOCATION_INITIALIZED, Promise.resolve());\n return () => {\n return locationInitialized.then(() => {\n return new Promise(resolve => {\n const router = injector.get(Router);\n const bootstrapDone = injector.get(BOOTSTRAP_DONE);\n afterNextNavigation(router, () => {\n // Unblock APP_INITIALIZER in case the initial navigation was canceled or errored\n // without a redirect.\n resolve(true);\n });\n injector.get(NavigationTransitions).afterPreactivation = () => {\n // Unblock APP_INITIALIZER once we get to `afterPreactivation`. At this point, we\n // assume activation will complete successfully (even though this is not\n // guaranteed).\n resolve(true);\n return bootstrapDone.closed ? of(void 0) : bootstrapDone;\n };\n router.initialNavigation();\n });\n });\n };\n }\n }];\n return routerFeature(2 /* RouterFeatureKind.EnabledBlockingInitialNavigationFeature */, providers);\n}\n/**\n * Disables initial navigation.\n *\n * Use if there is a reason to have more control over when the router starts its initial navigation\n * due to some complex initialization logic.\n *\n * @usageNotes\n *\n * Basic example of how you can disable initial navigation:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withDisabledInitialNavigation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withDisabledInitialNavigation() {\n const providers = [{\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: () => {\n const router = inject(Router);\n return () => {\n router.setUpLocationChangeListener();\n };\n }\n }, {\n provide: INITIAL_NAVIGATION,\n useValue: 2 /* InitialNavigation.Disabled */\n }];\n return routerFeature(3 /* RouterFeatureKind.DisabledInitialNavigationFeature */, providers);\n}\n/**\n * Enables logging of all internal navigation events to the console.\n * Extra logging might be useful for debugging purposes to inspect Router event sequence.\n *\n * @usageNotes\n *\n * Basic example of how you can enable debug tracing:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withDebugTracing())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withDebugTracing() {\n let providers = [];\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n providers = [{\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useFactory: () => {\n const router = inject(Router);\n return () => router.events.subscribe(e => {\n // tslint:disable:no-console\n console.group?.(`Router Event: ${e.constructor.name}`);\n console.log(stringifyEvent(e));\n console.log(e);\n console.groupEnd?.();\n // tslint:enable:no-console\n });\n }\n }];\n } else {\n providers = [];\n }\n return routerFeature(1 /* RouterFeatureKind.DebugTracingFeature */, providers);\n}\nconst ROUTER_PRELOADER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'router preloader' : '');\n/**\n * Allows to configure a preloading strategy to use. The strategy is configured by providing a\n * reference to a class that implements a `PreloadingStrategy`.\n *\n * @usageNotes\n *\n * Basic example of how you can configure preloading:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withPreloading(PreloadAllModules))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @param preloadingStrategy A reference to a class that implements a `PreloadingStrategy` that\n * should be used.\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withPreloading(preloadingStrategy) {\n const providers = [{\n provide: ROUTER_PRELOADER,\n useExisting: RouterPreloader\n }, {\n provide: PreloadingStrategy,\n useExisting: preloadingStrategy\n }];\n return routerFeature(0 /* RouterFeatureKind.PreloadingFeature */, providers);\n}\n/**\n * Allows to provide extra parameters to configure Router.\n *\n * @usageNotes\n *\n * Basic example of how you can provide extra configuration options:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withRouterConfig({\n * onSameUrlNavigation: 'reload'\n * }))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n *\n * @param options A set of parameters to configure Router, see `RouterConfigOptions` for\n * additional information.\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withRouterConfig(options) {\n const providers = [{\n provide: ROUTER_CONFIGURATION,\n useValue: options\n }];\n return routerFeature(5 /* RouterFeatureKind.RouterConfigurationFeature */, providers);\n}\n/**\n * Provides the location strategy that uses the URL fragment instead of the history API.\n *\n * @usageNotes\n *\n * Basic example of how you can use the hash location option:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withHashLocation())\n * ]\n * }\n * );\n * ```\n *\n * @see {@link provideRouter}\n * @see {@link HashLocationStrategy}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withHashLocation() {\n const providers = [{\n provide: LocationStrategy,\n useClass: HashLocationStrategy\n }];\n return routerFeature(6 /* RouterFeatureKind.RouterHashLocationFeature */, providers);\n}\n/**\n * Subscribes to the Router's navigation events and calls the given function when a\n * `NavigationError` happens.\n *\n * This function is run inside application's [injection context](guide/dependency-injection-context)\n * so you can use the [`inject`](api/core/inject) function.\n *\n * @usageNotes\n *\n * Basic example of how you can use the error handler option:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withNavigationErrorHandler((e: NavigationError) =>\n * inject(MyErrorTracker).trackError(e)))\n * ]\n * }\n * );\n * ```\n *\n * @see {@link NavigationError}\n * @see {@link core/inject}\n * @see {@link runInInjectionContext}\n *\n * @returns A set of providers for use with `provideRouter`.\n *\n * @publicApi\n */\nfunction withNavigationErrorHandler(fn) {\n const providers = [{\n provide: ENVIRONMENT_INITIALIZER,\n multi: true,\n useValue: () => {\n const injector = inject(EnvironmentInjector);\n inject(Router).events.subscribe(e => {\n if (e instanceof NavigationError) {\n runInInjectionContext(injector, () => fn(e));\n }\n });\n }\n }];\n return routerFeature(7 /* RouterFeatureKind.NavigationErrorHandlerFeature */, providers);\n}\n/**\n * Enables binding information from the `Router` state directly to the inputs of the component in\n * `Route` configurations.\n *\n * @usageNotes\n *\n * Basic example of how you can enable the feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withComponentInputBinding())\n * ]\n * }\n * );\n * ```\n *\n * @returns A set of providers for use with `provideRouter`.\n */\nfunction withComponentInputBinding() {\n const providers = [RoutedComponentInputBinder, {\n provide: INPUT_BINDER,\n useExisting: RoutedComponentInputBinder\n }];\n return routerFeature(8 /* RouterFeatureKind.ComponentInputBindingFeature */, providers);\n}\n/**\n * Enables view transitions in the Router by running the route activation and deactivation inside of\n * `document.startViewTransition`.\n *\n * Note: The View Transitions API is not available in all browsers. If the browser does not support\n * view transitions, the Router will not attempt to start a view transition and continue processing\n * the navigation as usual.\n *\n * @usageNotes\n *\n * Basic example of how you can enable the feature:\n * ```\n * const appRoutes: Routes = [];\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideRouter(appRoutes, withViewTransitions())\n * ]\n * }\n * );\n * ```\n *\n * @returns A set of providers for use with `provideRouter`.\n * @see https://developer.chrome.com/docs/web-platform/view-transitions/\n * @see https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API\n * @experimental\n */\nfunction withViewTransitions(options) {\n const providers = [{\n provide: CREATE_VIEW_TRANSITION,\n useValue: createViewTransition\n }, {\n provide: VIEW_TRANSITION_OPTIONS,\n useValue: {\n skipNextTransition: !!options?.skipInitialTransition,\n ...options\n }\n }];\n return routerFeature(9 /* RouterFeatureKind.ViewTransitionsFeature */, providers);\n}\n\n/**\n * The directives defined in the `RouterModule`.\n */\nconst ROUTER_DIRECTIVES = [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent];\n/**\n * @docsNotRequired\n */\nconst ROUTER_FORROOT_GUARD = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'router duplicate forRoot guard' : 'ROUTER_FORROOT_GUARD');\n// TODO(atscott): All of these except `ActivatedRoute` are `providedIn: 'root'`. They are only kept\n// here to avoid a breaking change whereby the provider order matters based on where the\n// `RouterModule`/`RouterTestingModule` is imported. These can/should be removed as a \"breaking\"\n// change in a major version.\nconst ROUTER_PROVIDERS = [Location, {\n provide: UrlSerializer,\n useClass: DefaultUrlSerializer\n}, Router, ChildrenOutletContexts, {\n provide: ActivatedRoute,\n useFactory: rootRoute,\n deps: [Router]\n}, RouterConfigLoader,\n// Only used to warn when `provideRoutes` is used without `RouterModule` or `provideRouter`. Can\n// be removed when `provideRoutes` is removed.\ntypeof ngDevMode === 'undefined' || ngDevMode ? {\n provide: ROUTER_IS_PROVIDED,\n useValue: true\n} : []];\n/**\n * @description\n *\n * Adds directives and providers for in-app navigation among views defined in an application.\n * Use the Angular `Router` service to declaratively specify application states and manage state\n * transitions.\n *\n * You can import this NgModule multiple times, once for each lazy-loaded bundle.\n * However, only one `Router` service can be active.\n * To ensure this, there are two ways to register routes when importing this module:\n *\n * * The `forRoot()` method creates an `NgModule` that contains all the directives, the given\n * routes, and the `Router` service itself.\n * * The `forChild()` method creates an `NgModule` that contains all the directives and the given\n * routes, but does not include the `Router` service.\n *\n * @see [Routing and Navigation guide](guide/router) for an\n * overview of how the `Router` service should be used.\n *\n * @publicApi\n */\nclass RouterModule {\n constructor(guard) {}\n /**\n * Creates and configures a module with all the router providers and directives.\n * Optionally sets up an application listener to perform an initial navigation.\n *\n * When registering the NgModule at the root, import as follows:\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forRoot(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * @param routes An array of `Route` objects that define the navigation paths for the application.\n * @param config An `ExtraOptions` configuration object that controls how navigation is performed.\n * @return The new `NgModule`.\n *\n */\n static forRoot(routes, config) {\n return {\n ngModule: RouterModule,\n providers: [ROUTER_PROVIDERS, typeof ngDevMode === 'undefined' || ngDevMode ? config?.enableTracing ? withDebugTracing().ɵproviders : [] : [], {\n provide: ROUTES,\n multi: true,\n useValue: routes\n }, {\n provide: ROUTER_FORROOT_GUARD,\n useFactory: provideForRootGuard,\n deps: [[Router, new Optional(), new SkipSelf()]]\n }, {\n provide: ROUTER_CONFIGURATION,\n useValue: config ? config : {}\n }, config?.useHash ? provideHashLocationStrategy() : providePathLocationStrategy(), provideRouterScroller(), config?.preloadingStrategy ? withPreloading(config.preloadingStrategy).ɵproviders : [], config?.initialNavigation ? provideInitialNavigation(config) : [], config?.bindToComponentInputs ? withComponentInputBinding().ɵproviders : [], config?.enableViewTransitions ? withViewTransitions().ɵproviders : [], provideRouterInitializer()]\n };\n }\n /**\n * Creates a module with all the router directives and a provider registering routes,\n * without creating a new Router service.\n * When registering for submodules and lazy-loaded submodules, create the NgModule as follows:\n *\n * ```\n * @NgModule({\n * imports: [RouterModule.forChild(ROUTES)]\n * })\n * class MyNgModule {}\n * ```\n *\n * @param routes An array of `Route` objects that define the navigation paths for the submodule.\n * @return The new NgModule.\n *\n */\n static forChild(routes) {\n return {\n ngModule: RouterModule,\n providers: [{\n provide: ROUTES,\n multi: true,\n useValue: routes\n }]\n };\n }\n static {\n this.ɵfac = function RouterModule_Factory(t) {\n return new (t || RouterModule)(i0.ɵɵinject(ROUTER_FORROOT_GUARD, 8));\n };\n }\n static {\n this.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: RouterModule,\n imports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent],\n exports: [RouterOutlet, RouterLink, RouterLinkActive, ɵEmptyOutletComponent]\n });\n }\n static {\n this.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({});\n }\n}\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(RouterModule, [{\n type: NgModule,\n args: [{\n imports: ROUTER_DIRECTIVES,\n exports: ROUTER_DIRECTIVES\n }]\n }], () => [{\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ROUTER_FORROOT_GUARD]\n }]\n }], null);\n})();\n/**\n * For internal use by `RouterModule` only. Note that this differs from `withInMemoryRouterScroller`\n * because it reads from the `ExtraOptions` which should not be used in the standalone world.\n */\nfunction provideRouterScroller() {\n return {\n provide: ROUTER_SCROLLER,\n useFactory: () => {\n const viewportScroller = inject(ViewportScroller);\n const zone = inject(NgZone);\n const config = inject(ROUTER_CONFIGURATION);\n const transitions = inject(NavigationTransitions);\n const urlSerializer = inject(UrlSerializer);\n if (config.scrollOffset) {\n viewportScroller.setOffset(config.scrollOffset);\n }\n return new RouterScroller(urlSerializer, transitions, viewportScroller, zone, config);\n }\n };\n}\n// Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` should\n// provide hash location directly via `{provide: LocationStrategy, useClass: HashLocationStrategy}`.\nfunction provideHashLocationStrategy() {\n return {\n provide: LocationStrategy,\n useClass: HashLocationStrategy\n };\n}\n// Note: For internal use only with `RouterModule`. Standalone setup via `provideRouter` does not\n// need this at all because `PathLocationStrategy` is the default factory for `LocationStrategy`.\nfunction providePathLocationStrategy() {\n return {\n provide: LocationStrategy,\n useClass: PathLocationStrategy\n };\n}\nfunction provideForRootGuard(router) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && router) {\n throw new ɵRuntimeError(4007 /* RuntimeErrorCode.FOR_ROOT_CALLED_TWICE */, `The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector.` + ` Lazy loaded modules should use RouterModule.forChild() instead.`);\n }\n return 'guarded';\n}\n// Note: For internal use only with `RouterModule`. Standalone router setup with `provideRouter`\n// users call `withXInitialNavigation` directly.\nfunction provideInitialNavigation(config) {\n return [config.initialNavigation === 'disabled' ? withDisabledInitialNavigation().ɵproviders : [], config.initialNavigation === 'enabledBlocking' ? withEnabledBlockingInitialNavigation().ɵproviders : []];\n}\n// TODO(atscott): This should not be in the public API\n/**\n * A [DI token](guide/glossary/#di-token) for the router initializer that\n * is called after the app is bootstrapped.\n *\n * @publicApi\n */\nconst ROUTER_INITIALIZER = new InjectionToken(typeof ngDevMode === 'undefined' || ngDevMode ? 'Router Initializer' : '');\nfunction provideRouterInitializer() {\n return [\n // ROUTER_INITIALIZER token should be removed. It's public API but shouldn't be. We can just\n // have `getBootstrapListener` directly attached to APP_BOOTSTRAP_LISTENER.\n {\n provide: ROUTER_INITIALIZER,\n useFactory: getBootstrapListener\n }, {\n provide: APP_BOOTSTRAP_LISTENER,\n multi: true,\n useExisting: ROUTER_INITIALIZER\n }];\n}\n\n/**\n * Maps an array of injectable classes with canMatch functions to an array of equivalent\n * `CanMatchFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanMatch(providers) {\n return providers.map(provider => (...params) => inject(provider).canMatch(...params));\n}\n/**\n * Maps an array of injectable classes with canActivate functions to an array of equivalent\n * `CanActivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanActivate(providers) {\n return providers.map(provider => (...params) => inject(provider).canActivate(...params));\n}\n/**\n * Maps an array of injectable classes with canActivateChild functions to an array of equivalent\n * `CanActivateChildFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanActivateChild(providers) {\n return providers.map(provider => (...params) => inject(provider).canActivateChild(...params));\n}\n/**\n * Maps an array of injectable classes with canDeactivate functions to an array of equivalent\n * `CanDeactivateFn` for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='CanActivate'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToCanDeactivate(providers) {\n return providers.map(provider => (...params) => inject(provider).canDeactivate(...params));\n}\n/**\n * Maps an injectable class with a resolve function to an equivalent `ResolveFn`\n * for use in a `Route` definition.\n *\n * Usage {@example router/utils/functional_guards.ts region='Resolve'}\n *\n * @publicApi\n * @see {@link Route}\n */\nfunction mapToResolve(provider) {\n return (...params) => inject(provider).resolve(...params);\n}\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the router package.\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('17.1.3');\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n// This file is not used to build this module. It is only used during editing\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ActivatedRoute, ActivatedRouteSnapshot, ActivationEnd, ActivationStart, BaseRouteReuseStrategy, ChildActivationEnd, ChildActivationStart, ChildrenOutletContexts, DefaultTitleStrategy, DefaultUrlSerializer, EventType, GuardsCheckEnd, GuardsCheckStart, NavigationCancel, NavigationCancellationCode, NavigationEnd, NavigationError, NavigationSkipped, NavigationSkippedCode, NavigationStart, NoPreloading, OutletContext, PRIMARY_OUTLET, PreloadAllModules, PreloadingStrategy, ROUTER_CONFIGURATION, ROUTER_INITIALIZER, ROUTES, ResolveEnd, ResolveStart, RouteConfigLoadEnd, RouteConfigLoadStart, RouteReuseStrategy, Router, RouterEvent, RouterLink, RouterLinkActive, RouterLink as RouterLinkWithHref, RouterModule, RouterOutlet, RouterPreloader, RouterState, RouterStateSnapshot, RoutesRecognized, Scroll, TitleStrategy, UrlHandlingStrategy, UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree, VERSION, convertToParamMap, createUrlTreeFromSnapshot, defaultUrlMatcher, mapToCanActivate, mapToCanActivateChild, mapToCanDeactivate, mapToCanMatch, mapToResolve, provideRouter, provideRoutes, withComponentInputBinding, withDebugTracing, withDisabledInitialNavigation, withEnabledBlockingInitialNavigation, withHashLocation, withInMemoryScrolling, withNavigationErrorHandler, withPreloading, withRouterConfig, withViewTransitions, ɵEmptyOutletComponent, ROUTER_PROVIDERS as ɵROUTER_PROVIDERS, afterNextNavigation as ɵafterNextNavigation, loadChildren as ɵloadChildren };\n"], - "mappings": "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", - "names": ["last", "tree", "match", "res", "commands", "noMatch", "EventType", "NavigationCancellationCode", "NavigationSkippedCode", "t", "c", "node", "map", "contexts", "canActivate", "last", "s", "tree", "from", "t", "NavigationResult", "e"] -} diff --git a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/chunk-JNM7CA4Q.js b/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/chunk-JNM7CA4Q.js deleted file mode 100755 index 95731b7d..00000000 --- a/my-app/.angular/cache/17.1.3/vite/deps_temp_f5a2fd8f/chunk-JNM7CA4Q.js +++ /dev/null @@ -1,23966 +0,0 @@ -var __defProp = Object.defineProperty; -var __defProps = Object.defineProperties; -var __getOwnPropDescs = Object.getOwnPropertyDescriptors; -var __getOwnPropSymbols = Object.getOwnPropertySymbols; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __propIsEnum = Object.prototype.propertyIsEnumerable; -var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; -var __spreadValues = (a, b) => { - for (var prop in b ||= {}) - if (__hasOwnProp.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - if (__getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(b)) { - if (__propIsEnum.call(b, prop)) - __defNormalProp(a, prop, b[prop]); - } - return a; -}; -var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); -var __objRest = (source, exclude) => { - var target = {}; - for (var prop in source) - if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) - target[prop] = source[prop]; - if (source != null && __getOwnPropSymbols) - for (var prop of __getOwnPropSymbols(source)) { - if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) - target[prop] = source[prop]; - } - return target; -}; -var __async = (__this, __arguments, generator) => { - return new Promise((resolve, reject) => { - var fulfilled = (value) => { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - }; - var rejected = (value) => { - try { - step(generator.throw(value)); - } catch (e) { - reject(e); - } - }; - var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); - step((generator = generator.apply(__this, __arguments)).next()); - }); -}; - -// node_modules/@angular/core/fesm2022/primitives/signals.mjs -function defaultEquals(a, b) { - return Object.is(a, b); -} -var activeConsumer = null; -var inNotificationPhase = false; -var epoch = 1; -var SIGNAL = Symbol("SIGNAL"); -function setActiveConsumer(consumer) { - const prev = activeConsumer; - activeConsumer = consumer; - return prev; -} -function getActiveConsumer() { - return activeConsumer; -} -function isInNotificationPhase() { - return inNotificationPhase; -} -var REACTIVE_NODE = { - version: 0, - lastCleanEpoch: 0, - dirty: false, - producerNode: void 0, - producerLastReadVersion: void 0, - producerIndexOfThis: void 0, - nextProducerIndex: 0, - liveConsumerNode: void 0, - liveConsumerIndexOfThis: void 0, - consumerAllowSignalWrites: false, - consumerIsAlwaysLive: false, - producerMustRecompute: () => false, - producerRecomputeValue: () => { - }, - consumerMarkedDirty: () => { - }, - consumerOnSignalRead: () => { - } -}; -function producerAccessed(node) { - if (inNotificationPhase) { - throw new Error(typeof ngDevMode !== "undefined" && ngDevMode ? `Assertion error: signal read during notification phase` : ""); - } - if (activeConsumer === null) { - return; - } - activeConsumer.consumerOnSignalRead(node); - const idx = activeConsumer.nextProducerIndex++; - assertConsumerNode(activeConsumer); - if (idx < activeConsumer.producerNode.length && activeConsumer.producerNode[idx] !== node) { - if (consumerIsLive(activeConsumer)) { - const staleProducer = activeConsumer.producerNode[idx]; - producerRemoveLiveConsumerAtIndex(staleProducer, activeConsumer.producerIndexOfThis[idx]); - } - } - if (activeConsumer.producerNode[idx] !== node) { - activeConsumer.producerNode[idx] = node; - activeConsumer.producerIndexOfThis[idx] = consumerIsLive(activeConsumer) ? producerAddLiveConsumer(node, activeConsumer, idx) : 0; - } - activeConsumer.producerLastReadVersion[idx] = node.version; -} -function producerIncrementEpoch() { - epoch++; -} -function producerUpdateValueVersion(node) { - if (consumerIsLive(node) && !node.dirty) { - return; - } - if (!node.dirty && node.lastCleanEpoch === epoch) { - return; - } - if (!node.producerMustRecompute(node) && !consumerPollProducersForChange(node)) { - node.dirty = false; - node.lastCleanEpoch = epoch; - return; - } - node.producerRecomputeValue(node); - node.dirty = false; - node.lastCleanEpoch = epoch; -} -function producerNotifyConsumers(node) { - if (node.liveConsumerNode === void 0) { - return; - } - const prev = inNotificationPhase; - inNotificationPhase = true; - try { - for (const consumer of node.liveConsumerNode) { - if (!consumer.dirty) { - consumerMarkDirty(consumer); - } - } - } finally { - inNotificationPhase = prev; - } -} -function producerUpdatesAllowed() { - return activeConsumer?.consumerAllowSignalWrites !== false; -} -function consumerMarkDirty(node) { - node.dirty = true; - producerNotifyConsumers(node); - node.consumerMarkedDirty?.(node); -} -function consumerBeforeComputation(node) { - node && (node.nextProducerIndex = 0); - return setActiveConsumer(node); -} -function consumerAfterComputation(node, prevConsumer) { - setActiveConsumer(prevConsumer); - if (!node || node.producerNode === void 0 || node.producerIndexOfThis === void 0 || node.producerLastReadVersion === void 0) { - return; - } - if (consumerIsLive(node)) { - for (let i = node.nextProducerIndex; i < node.producerNode.length; i++) { - producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]); - } - } - while (node.producerNode.length > node.nextProducerIndex) { - node.producerNode.pop(); - node.producerLastReadVersion.pop(); - node.producerIndexOfThis.pop(); - } -} -function consumerPollProducersForChange(node) { - assertConsumerNode(node); - for (let i = 0; i < node.producerNode.length; i++) { - const producer = node.producerNode[i]; - const seenVersion = node.producerLastReadVersion[i]; - if (seenVersion !== producer.version) { - return true; - } - producerUpdateValueVersion(producer); - if (seenVersion !== producer.version) { - return true; - } - } - return false; -} -function consumerDestroy(node) { - assertConsumerNode(node); - if (consumerIsLive(node)) { - for (let i = 0; i < node.producerNode.length; i++) { - producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]); - } - } - node.producerNode.length = node.producerLastReadVersion.length = node.producerIndexOfThis.length = 0; - if (node.liveConsumerNode) { - node.liveConsumerNode.length = node.liveConsumerIndexOfThis.length = 0; - } -} -function producerAddLiveConsumer(node, consumer, indexOfThis) { - assertProducerNode(node); - assertConsumerNode(node); - if (node.liveConsumerNode.length === 0) { - for (let i = 0; i < node.producerNode.length; i++) { - node.producerIndexOfThis[i] = producerAddLiveConsumer(node.producerNode[i], node, i); - } - } - node.liveConsumerIndexOfThis.push(indexOfThis); - return node.liveConsumerNode.push(consumer) - 1; -} -function producerRemoveLiveConsumerAtIndex(node, idx) { - assertProducerNode(node); - assertConsumerNode(node); - if (typeof ngDevMode !== "undefined" && ngDevMode && idx >= node.liveConsumerNode.length) { - throw new Error(`Assertion error: active consumer index ${idx} is out of bounds of ${node.liveConsumerNode.length} consumers)`); - } - if (node.liveConsumerNode.length === 1) { - for (let i = 0; i < node.producerNode.length; i++) { - producerRemoveLiveConsumerAtIndex(node.producerNode[i], node.producerIndexOfThis[i]); - } - } - const lastIdx = node.liveConsumerNode.length - 1; - node.liveConsumerNode[idx] = node.liveConsumerNode[lastIdx]; - node.liveConsumerIndexOfThis[idx] = node.liveConsumerIndexOfThis[lastIdx]; - node.liveConsumerNode.length--; - node.liveConsumerIndexOfThis.length--; - if (idx < node.liveConsumerNode.length) { - const idxProducer = node.liveConsumerIndexOfThis[idx]; - const consumer = node.liveConsumerNode[idx]; - assertConsumerNode(consumer); - consumer.producerIndexOfThis[idxProducer] = idx; - } -} -function consumerIsLive(node) { - return node.consumerIsAlwaysLive || (node?.liveConsumerNode?.length ?? 0) > 0; -} -function assertConsumerNode(node) { - node.producerNode ??= []; - node.producerIndexOfThis ??= []; - node.producerLastReadVersion ??= []; -} -function assertProducerNode(node) { - node.liveConsumerNode ??= []; - node.liveConsumerIndexOfThis ??= []; -} -function createComputed(computation) { - const node = Object.create(COMPUTED_NODE); - node.computation = computation; - const computed2 = () => { - producerUpdateValueVersion(node); - producerAccessed(node); - if (node.value === ERRORED) { - throw node.error; - } - return node.value; - }; - computed2[SIGNAL] = node; - return computed2; -} -var UNSET = Symbol("UNSET"); -var COMPUTING = Symbol("COMPUTING"); -var ERRORED = Symbol("ERRORED"); -var COMPUTED_NODE = (() => { - return __spreadProps(__spreadValues({}, REACTIVE_NODE), { - value: UNSET, - dirty: true, - error: null, - equal: defaultEquals, - producerMustRecompute(node) { - return node.value === UNSET || node.value === COMPUTING; - }, - producerRecomputeValue(node) { - if (node.value === COMPUTING) { - throw new Error("Detected cycle in computations."); - } - const oldValue = node.value; - node.value = COMPUTING; - const prevConsumer = consumerBeforeComputation(node); - let newValue; - try { - newValue = node.computation(); - } catch (err) { - newValue = ERRORED; - node.error = err; - } finally { - consumerAfterComputation(node, prevConsumer); - } - if (oldValue !== UNSET && oldValue !== ERRORED && newValue !== ERRORED && node.equal(oldValue, newValue)) { - node.value = oldValue; - return; - } - node.value = newValue; - node.version++; - } - }); -})(); -function defaultThrowError() { - throw new Error(); -} -var throwInvalidWriteToSignalErrorFn = defaultThrowError; -function throwInvalidWriteToSignalError() { - throwInvalidWriteToSignalErrorFn(); -} -function setThrowInvalidWriteToSignalError(fn) { - throwInvalidWriteToSignalErrorFn = fn; -} -var postSignalSetFn = null; -function createSignal(initialValue) { - const node = Object.create(SIGNAL_NODE); - node.value = initialValue; - const getter = () => { - producerAccessed(node); - return node.value; - }; - getter[SIGNAL] = node; - return getter; -} -function signalSetFn(node, newValue) { - if (!producerUpdatesAllowed()) { - throwInvalidWriteToSignalError(); - } - if (!node.equal(node.value, newValue)) { - node.value = newValue; - signalValueChanged(node); - } -} -function signalUpdateFn(node, updater) { - if (!producerUpdatesAllowed()) { - throwInvalidWriteToSignalError(); - } - signalSetFn(node, updater(node.value)); -} -var SIGNAL_NODE = (() => { - return __spreadProps(__spreadValues({}, REACTIVE_NODE), { - equal: defaultEquals, - value: void 0 - }); -})(); -function signalValueChanged(node) { - node.version++; - producerIncrementEpoch(); - producerNotifyConsumers(node); - postSignalSetFn?.(); -} -function createWatch(fn, schedule, allowSignalWrites) { - const node = Object.create(WATCH_NODE); - if (allowSignalWrites) { - node.consumerAllowSignalWrites = true; - } - node.fn = fn; - node.schedule = schedule; - const registerOnCleanup = (cleanupFn) => { - node.cleanupFn = cleanupFn; - }; - function isWatchNodeDestroyed(node2) { - return node2.fn === null && node2.schedule === null; - } - function destroyWatchNode(node2) { - if (!isWatchNodeDestroyed(node2)) { - consumerDestroy(node2); - node2.cleanupFn(); - node2.fn = null; - node2.schedule = null; - node2.cleanupFn = NOOP_CLEANUP_FN; - } - } - const run = () => { - if (node.fn === null) { - return; - } - if (isInNotificationPhase()) { - throw new Error(`Schedulers cannot synchronously execute watches while scheduling.`); - } - node.dirty = false; - if (node.hasRun && !consumerPollProducersForChange(node)) { - return; - } - node.hasRun = true; - const prevConsumer = consumerBeforeComputation(node); - try { - node.cleanupFn(); - node.cleanupFn = NOOP_CLEANUP_FN; - node.fn(registerOnCleanup); - } finally { - consumerAfterComputation(node, prevConsumer); - } - }; - node.ref = { - notify: () => consumerMarkDirty(node), - run, - cleanup: () => node.cleanupFn(), - destroy: () => destroyWatchNode(node), - [SIGNAL]: node - }; - return node.ref; -} -var NOOP_CLEANUP_FN = () => { -}; -var WATCH_NODE = (() => { - return __spreadProps(__spreadValues({}, REACTIVE_NODE), { - consumerIsAlwaysLive: true, - consumerAllowSignalWrites: false, - consumerMarkedDirty: (node) => { - if (node.schedule !== null) { - node.schedule(node.ref); - } - }, - hasRun: false, - cleanupFn: NOOP_CLEANUP_FN - }); -})(); - -// node_modules/tslib/tslib.es6.mjs -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { - d2.__proto__ = b2; - } || function(d2, b2) { - for (var p in b2) - if (Object.prototype.hasOwnProperty.call(b2, p)) - d2[p] = b2[p]; - }; - return extendStatics(d, b); -}; -function __extends(d, b) { - if (typeof b !== "function" && b !== null) - throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); - extendStatics(d, b); - function __() { - this.constructor = d; - } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { - if (t[0] & 1) - throw t[1]; - return t[1]; - }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { - return this; - }), g; - function verb(n) { - return function(v) { - return step([n, v]); - }; - } - function step(op) { - if (f) - throw new TypeError("Generator is already executing."); - while (g && (g = 0, op[0] && (_ = 0)), _) - try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) - return t; - if (y = 0, t) - op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: - case 1: - t = op; - break; - case 4: - _.label++; - return { value: op[1], done: false }; - case 5: - _.label++; - y = op[1]; - op = [0]; - continue; - case 7: - op = _.ops.pop(); - _.trys.pop(); - continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { - _ = 0; - continue; - } - if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { - _.label = op[1]; - break; - } - if (op[0] === 6 && _.label < t[1]) { - _.label = t[1]; - t = op; - break; - } - if (t && _.label < t[2]) { - _.label = t[2]; - _.ops.push(op); - break; - } - if (t[2]) - _.ops.pop(); - _.trys.pop(); - continue; - } - op = body.call(thisArg, _); - } catch (e) { - op = [6, e]; - y = 0; - } finally { - f = t = 0; - } - if (op[0] & 5) - throw op[1]; - return { value: op[0] ? op[1] : void 0, done: true }; - } -} -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) - return m.call(o); - if (o && typeof o.length === "number") - return { - next: function() { - if (o && i >= o.length) - o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) - return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) - ar.push(r.value); - } catch (error) { - e = { error }; - } finally { - try { - if (r && !r.done && (m = i["return"])) - m.call(i); - } finally { - if (e) - throw e.error; - } - } - return ar; -} -function __spreadArray(to, from2, pack) { - if (pack || arguments.length === 2) - for (var i = 0, l = from2.length, ar; i < l; i++) { - if (ar || !(i in from2)) { - if (!ar) - ar = Array.prototype.slice.call(from2, 0, i); - ar[i] = from2[i]; - } - } - return to.concat(ar || Array.prototype.slice.call(from2)); -} -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) - throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i; - function verb(n) { - if (g[n]) - i[n] = function(v) { - return new Promise(function(a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - function fulfill(value) { - resume("next", value); - } - function reject(value) { - resume("throw", value); - } - function settle(f, v) { - if (f(v), q.shift(), q.length) - resume(q[0][0], q[0][1]); - } -} -function __asyncValues(o) { - if (!Symbol.asyncIterator) - throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i); - function verb(n) { - i[n] = o[n] && function(v) { - return new Promise(function(resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function(v2) { - resolve({ value: v2, done: d }); - }, reject); - } -} - -// node_modules/rxjs/dist/esm5/internal/util/isFunction.js -function isFunction(value) { - return typeof value === "function"; -} - -// node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js -function createErrorClass(createImpl) { - var _super = function(instance) { - Error.call(instance); - instance.stack = new Error().stack; - }; - var ctorFunc = createImpl(_super); - ctorFunc.prototype = Object.create(Error.prototype); - ctorFunc.prototype.constructor = ctorFunc; - return ctorFunc; -} - -// node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js -var UnsubscriptionError = createErrorClass(function(_super) { - return function UnsubscriptionErrorImpl(errors) { - _super(this); - this.message = errors ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function(err, i) { - return i + 1 + ") " + err.toString(); - }).join("\n ") : ""; - this.name = "UnsubscriptionError"; - this.errors = errors; - }; -}); - -// node_modules/rxjs/dist/esm5/internal/util/arrRemove.js -function arrRemove(arr, item) { - if (arr) { - var index = arr.indexOf(item); - 0 <= index && arr.splice(index, 1); - } -} - -// node_modules/rxjs/dist/esm5/internal/Subscription.js -var Subscription = function() { - function Subscription2(initialTeardown) { - this.initialTeardown = initialTeardown; - this.closed = false; - this._parentage = null; - this._finalizers = null; - } - Subscription2.prototype.unsubscribe = function() { - var e_1, _a, e_2, _b; - var errors; - if (!this.closed) { - this.closed = true; - var _parentage = this._parentage; - if (_parentage) { - this._parentage = null; - if (Array.isArray(_parentage)) { - try { - for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) { - var parent_1 = _parentage_1_1.value; - parent_1.remove(this); - } - } catch (e_1_1) { - e_1 = { error: e_1_1 }; - } finally { - try { - if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) - _a.call(_parentage_1); - } finally { - if (e_1) - throw e_1.error; - } - } - } else { - _parentage.remove(this); - } - } - var initialFinalizer = this.initialTeardown; - if (isFunction(initialFinalizer)) { - try { - initialFinalizer(); - } catch (e) { - errors = e instanceof UnsubscriptionError ? e.errors : [e]; - } - } - var _finalizers = this._finalizers; - if (_finalizers) { - this._finalizers = null; - try { - for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) { - var finalizer = _finalizers_1_1.value; - try { - execFinalizer(finalizer); - } catch (err) { - errors = errors !== null && errors !== void 0 ? errors : []; - if (err instanceof UnsubscriptionError) { - errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors)); - } else { - errors.push(err); - } - } - } - } catch (e_2_1) { - e_2 = { error: e_2_1 }; - } finally { - try { - if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) - _b.call(_finalizers_1); - } finally { - if (e_2) - throw e_2.error; - } - } - } - if (errors) { - throw new UnsubscriptionError(errors); - } - } - }; - Subscription2.prototype.add = function(teardown) { - var _a; - if (teardown && teardown !== this) { - if (this.closed) { - execFinalizer(teardown); - } else { - if (teardown instanceof Subscription2) { - if (teardown.closed || teardown._hasParent(this)) { - return; - } - teardown._addParent(this); - } - (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown); - } - } - }; - Subscription2.prototype._hasParent = function(parent) { - var _parentage = this._parentage; - return _parentage === parent || Array.isArray(_parentage) && _parentage.includes(parent); - }; - Subscription2.prototype._addParent = function(parent) { - var _parentage = this._parentage; - this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent; - }; - Subscription2.prototype._removeParent = function(parent) { - var _parentage = this._parentage; - if (_parentage === parent) { - this._parentage = null; - } else if (Array.isArray(_parentage)) { - arrRemove(_parentage, parent); - } - }; - Subscription2.prototype.remove = function(teardown) { - var _finalizers = this._finalizers; - _finalizers && arrRemove(_finalizers, teardown); - if (teardown instanceof Subscription2) { - teardown._removeParent(this); - } - }; - Subscription2.EMPTY = function() { - var empty2 = new Subscription2(); - empty2.closed = true; - return empty2; - }(); - return Subscription2; -}(); -var EMPTY_SUBSCRIPTION = Subscription.EMPTY; -function isSubscription(value) { - return value instanceof Subscription || value && "closed" in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe); -} -function execFinalizer(finalizer) { - if (isFunction(finalizer)) { - finalizer(); - } else { - finalizer.unsubscribe(); - } -} - -// node_modules/rxjs/dist/esm5/internal/config.js -var config = { - onUnhandledError: null, - onStoppedNotification: null, - Promise: void 0, - useDeprecatedSynchronousErrorHandling: false, - useDeprecatedNextContext: false -}; - -// node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js -var timeoutProvider = { - setTimeout: function(handler, timeout2) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - var delegate = timeoutProvider.delegate; - if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) { - return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout2], __read(args))); - } - return setTimeout.apply(void 0, __spreadArray([handler, timeout2], __read(args))); - }, - clearTimeout: function(handle) { - var delegate = timeoutProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle); - }, - delegate: void 0 -}; - -// node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js -function reportUnhandledError(err) { - timeoutProvider.setTimeout(function() { - var onUnhandledError = config.onUnhandledError; - if (onUnhandledError) { - onUnhandledError(err); - } else { - throw err; - } - }); -} - -// node_modules/rxjs/dist/esm5/internal/util/noop.js -function noop() { -} - -// node_modules/rxjs/dist/esm5/internal/NotificationFactories.js -var COMPLETE_NOTIFICATION = function() { - return createNotification("C", void 0, void 0); -}(); -function errorNotification(error) { - return createNotification("E", void 0, error); -} -function nextNotification(value) { - return createNotification("N", value, void 0); -} -function createNotification(kind, value, error) { - return { - kind, - value, - error - }; -} - -// node_modules/rxjs/dist/esm5/internal/util/errorContext.js -var context = null; -function errorContext(cb) { - if (config.useDeprecatedSynchronousErrorHandling) { - var isRoot = !context; - if (isRoot) { - context = { errorThrown: false, error: null }; - } - cb(); - if (isRoot) { - var _a = context, errorThrown = _a.errorThrown, error = _a.error; - context = null; - if (errorThrown) { - throw error; - } - } - } else { - cb(); - } -} -function captureError(err) { - if (config.useDeprecatedSynchronousErrorHandling && context) { - context.errorThrown = true; - context.error = err; - } -} - -// node_modules/rxjs/dist/esm5/internal/Subscriber.js -var Subscriber = function(_super) { - __extends(Subscriber2, _super); - function Subscriber2(destination) { - var _this = _super.call(this) || this; - _this.isStopped = false; - if (destination) { - _this.destination = destination; - if (isSubscription(destination)) { - destination.add(_this); - } - } else { - _this.destination = EMPTY_OBSERVER; - } - return _this; - } - Subscriber2.create = function(next, error, complete) { - return new SafeSubscriber(next, error, complete); - }; - Subscriber2.prototype.next = function(value) { - if (this.isStopped) { - handleStoppedNotification(nextNotification(value), this); - } else { - this._next(value); - } - }; - Subscriber2.prototype.error = function(err) { - if (this.isStopped) { - handleStoppedNotification(errorNotification(err), this); - } else { - this.isStopped = true; - this._error(err); - } - }; - Subscriber2.prototype.complete = function() { - if (this.isStopped) { - handleStoppedNotification(COMPLETE_NOTIFICATION, this); - } else { - this.isStopped = true; - this._complete(); - } - }; - Subscriber2.prototype.unsubscribe = function() { - if (!this.closed) { - this.isStopped = true; - _super.prototype.unsubscribe.call(this); - this.destination = null; - } - }; - Subscriber2.prototype._next = function(value) { - this.destination.next(value); - }; - Subscriber2.prototype._error = function(err) { - try { - this.destination.error(err); - } finally { - this.unsubscribe(); - } - }; - Subscriber2.prototype._complete = function() { - try { - this.destination.complete(); - } finally { - this.unsubscribe(); - } - }; - return Subscriber2; -}(Subscription); -var _bind = Function.prototype.bind; -function bind(fn, thisArg) { - return _bind.call(fn, thisArg); -} -var ConsumerObserver = function() { - function ConsumerObserver2(partialObserver) { - this.partialObserver = partialObserver; - } - ConsumerObserver2.prototype.next = function(value) { - var partialObserver = this.partialObserver; - if (partialObserver.next) { - try { - partialObserver.next(value); - } catch (error) { - handleUnhandledError(error); - } - } - }; - ConsumerObserver2.prototype.error = function(err) { - var partialObserver = this.partialObserver; - if (partialObserver.error) { - try { - partialObserver.error(err); - } catch (error) { - handleUnhandledError(error); - } - } else { - handleUnhandledError(err); - } - }; - ConsumerObserver2.prototype.complete = function() { - var partialObserver = this.partialObserver; - if (partialObserver.complete) { - try { - partialObserver.complete(); - } catch (error) { - handleUnhandledError(error); - } - } - }; - return ConsumerObserver2; -}(); -var SafeSubscriber = function(_super) { - __extends(SafeSubscriber2, _super); - function SafeSubscriber2(observerOrNext, error, complete) { - var _this = _super.call(this) || this; - var partialObserver; - if (isFunction(observerOrNext) || !observerOrNext) { - partialObserver = { - next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : void 0, - error: error !== null && error !== void 0 ? error : void 0, - complete: complete !== null && complete !== void 0 ? complete : void 0 - }; - } else { - var context_1; - if (_this && config.useDeprecatedNextContext) { - context_1 = Object.create(observerOrNext); - context_1.unsubscribe = function() { - return _this.unsubscribe(); - }; - partialObserver = { - next: observerOrNext.next && bind(observerOrNext.next, context_1), - error: observerOrNext.error && bind(observerOrNext.error, context_1), - complete: observerOrNext.complete && bind(observerOrNext.complete, context_1) - }; - } else { - partialObserver = observerOrNext; - } - } - _this.destination = new ConsumerObserver(partialObserver); - return _this; - } - return SafeSubscriber2; -}(Subscriber); -function handleUnhandledError(error) { - if (config.useDeprecatedSynchronousErrorHandling) { - captureError(error); - } else { - reportUnhandledError(error); - } -} -function defaultErrorHandler(err) { - throw err; -} -function handleStoppedNotification(notification, subscriber) { - var onStoppedNotification = config.onStoppedNotification; - onStoppedNotification && timeoutProvider.setTimeout(function() { - return onStoppedNotification(notification, subscriber); - }); -} -var EMPTY_OBSERVER = { - closed: true, - next: noop, - error: defaultErrorHandler, - complete: noop -}; - -// node_modules/rxjs/dist/esm5/internal/symbol/observable.js -var observable = function() { - return typeof Symbol === "function" && Symbol.observable || "@@observable"; -}(); - -// node_modules/rxjs/dist/esm5/internal/util/identity.js -function identity(x) { - return x; -} - -// node_modules/rxjs/dist/esm5/internal/util/pipe.js -function pipe() { - var fns = []; - for (var _i = 0; _i < arguments.length; _i++) { - fns[_i] = arguments[_i]; - } - return pipeFromArray(fns); -} -function pipeFromArray(fns) { - if (fns.length === 0) { - return identity; - } - if (fns.length === 1) { - return fns[0]; - } - return function piped(input2) { - return fns.reduce(function(prev, fn) { - return fn(prev); - }, input2); - }; -} - -// node_modules/rxjs/dist/esm5/internal/Observable.js -var Observable = function() { - function Observable2(subscribe) { - if (subscribe) { - this._subscribe = subscribe; - } - } - Observable2.prototype.lift = function(operator) { - var observable2 = new Observable2(); - observable2.source = this; - observable2.operator = operator; - return observable2; - }; - Observable2.prototype.subscribe = function(observerOrNext, error, complete) { - var _this = this; - var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete); - errorContext(function() { - var _a = _this, operator = _a.operator, source = _a.source; - subscriber.add(operator ? operator.call(subscriber, source) : source ? _this._subscribe(subscriber) : _this._trySubscribe(subscriber)); - }); - return subscriber; - }; - Observable2.prototype._trySubscribe = function(sink) { - try { - return this._subscribe(sink); - } catch (err) { - sink.error(err); - } - }; - Observable2.prototype.forEach = function(next, promiseCtor) { - var _this = this; - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor(function(resolve, reject) { - var subscriber = new SafeSubscriber({ - next: function(value) { - try { - next(value); - } catch (err) { - reject(err); - subscriber.unsubscribe(); - } - }, - error: reject, - complete: resolve - }); - _this.subscribe(subscriber); - }); - }; - Observable2.prototype._subscribe = function(subscriber) { - var _a; - return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber); - }; - Observable2.prototype[observable] = function() { - return this; - }; - Observable2.prototype.pipe = function() { - var operations = []; - for (var _i = 0; _i < arguments.length; _i++) { - operations[_i] = arguments[_i]; - } - return pipeFromArray(operations)(this); - }; - Observable2.prototype.toPromise = function(promiseCtor) { - var _this = this; - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor(function(resolve, reject) { - var value; - _this.subscribe(function(x) { - return value = x; - }, function(err) { - return reject(err); - }, function() { - return resolve(value); - }); - }); - }; - Observable2.create = function(subscribe) { - return new Observable2(subscribe); - }; - return Observable2; -}(); -function getPromiseCtor(promiseCtor) { - var _a; - return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise; -} -function isObserver(value) { - return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete); -} -function isSubscriber(value) { - return value && value instanceof Subscriber || isObserver(value) && isSubscription(value); -} - -// node_modules/rxjs/dist/esm5/internal/util/lift.js -function hasLift(source) { - return isFunction(source === null || source === void 0 ? void 0 : source.lift); -} -function operate(init) { - return function(source) { - if (hasLift(source)) { - return source.lift(function(liftedSource) { - try { - return init(liftedSource, this); - } catch (err) { - this.error(err); - } - }); - } - throw new TypeError("Unable to lift unknown Observable type"); - }; -} - -// node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js -function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) { - return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize); -} -var OperatorSubscriber = function(_super) { - __extends(OperatorSubscriber2, _super); - function OperatorSubscriber2(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) { - var _this = _super.call(this, destination) || this; - _this.onFinalize = onFinalize; - _this.shouldUnsubscribe = shouldUnsubscribe; - _this._next = onNext ? function(value) { - try { - onNext(value); - } catch (err) { - destination.error(err); - } - } : _super.prototype._next; - _this._error = onError ? function(err) { - try { - onError(err); - } catch (err2) { - destination.error(err2); - } finally { - this.unsubscribe(); - } - } : _super.prototype._error; - _this._complete = onComplete ? function() { - try { - onComplete(); - } catch (err) { - destination.error(err); - } finally { - this.unsubscribe(); - } - } : _super.prototype._complete; - return _this; - } - OperatorSubscriber2.prototype.unsubscribe = function() { - var _a; - if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { - var closed_1 = this.closed; - _super.prototype.unsubscribe.call(this); - !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); - } - }; - return OperatorSubscriber2; -}(Subscriber); - -// node_modules/rxjs/dist/esm5/internal/operators/refCount.js -function refCount() { - return operate(function(source, subscriber) { - var connection = null; - source._refCount++; - var refCounter = createOperatorSubscriber(subscriber, void 0, void 0, void 0, function() { - if (!source || source._refCount <= 0 || 0 < --source._refCount) { - connection = null; - return; - } - var sharedConnection = source._connection; - var conn = connection; - connection = null; - if (sharedConnection && (!conn || sharedConnection === conn)) { - sharedConnection.unsubscribe(); - } - subscriber.unsubscribe(); - }); - source.subscribe(refCounter); - if (!refCounter.closed) { - connection = source.connect(); - } - }); -} - -// node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js -var ConnectableObservable = function(_super) { - __extends(ConnectableObservable2, _super); - function ConnectableObservable2(source, subjectFactory) { - var _this = _super.call(this) || this; - _this.source = source; - _this.subjectFactory = subjectFactory; - _this._subject = null; - _this._refCount = 0; - _this._connection = null; - if (hasLift(source)) { - _this.lift = source.lift; - } - return _this; - } - ConnectableObservable2.prototype._subscribe = function(subscriber) { - return this.getSubject().subscribe(subscriber); - }; - ConnectableObservable2.prototype.getSubject = function() { - var subject = this._subject; - if (!subject || subject.isStopped) { - this._subject = this.subjectFactory(); - } - return this._subject; - }; - ConnectableObservable2.prototype._teardown = function() { - this._refCount = 0; - var _connection = this._connection; - this._subject = this._connection = null; - _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe(); - }; - ConnectableObservable2.prototype.connect = function() { - var _this = this; - var connection = this._connection; - if (!connection) { - connection = this._connection = new Subscription(); - var subject_1 = this.getSubject(); - connection.add(this.source.subscribe(createOperatorSubscriber(subject_1, void 0, function() { - _this._teardown(); - subject_1.complete(); - }, function(err) { - _this._teardown(); - subject_1.error(err); - }, function() { - return _this._teardown(); - }))); - if (connection.closed) { - this._connection = null; - connection = Subscription.EMPTY; - } - } - return connection; - }; - ConnectableObservable2.prototype.refCount = function() { - return refCount()(this); - }; - return ConnectableObservable2; -}(Observable); - -// node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js -var performanceTimestampProvider = { - now: function() { - return (performanceTimestampProvider.delegate || performance).now(); - }, - delegate: void 0 -}; - -// node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js -var animationFrameProvider = { - schedule: function(callback) { - var request = requestAnimationFrame; - var cancel = cancelAnimationFrame; - var delegate = animationFrameProvider.delegate; - if (delegate) { - request = delegate.requestAnimationFrame; - cancel = delegate.cancelAnimationFrame; - } - var handle = request(function(timestamp2) { - cancel = void 0; - callback(timestamp2); - }); - return new Subscription(function() { - return cancel === null || cancel === void 0 ? void 0 : cancel(handle); - }); - }, - requestAnimationFrame: function() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var delegate = animationFrameProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args))); - }, - cancelAnimationFrame: function() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var delegate = animationFrameProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args))); - }, - delegate: void 0 -}; - -// node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js -function animationFramesFactory(timestampProvider) { - return new Observable(function(subscriber) { - var provider = timestampProvider || performanceTimestampProvider; - var start = provider.now(); - var id = 0; - var run = function() { - if (!subscriber.closed) { - id = animationFrameProvider.requestAnimationFrame(function(timestamp2) { - id = 0; - var now = provider.now(); - subscriber.next({ - timestamp: timestampProvider ? now : timestamp2, - elapsed: now - start - }); - run(); - }); - } - }; - run(); - return function() { - if (id) { - animationFrameProvider.cancelAnimationFrame(id); - } - }; - }); -} -var DEFAULT_ANIMATION_FRAMES = animationFramesFactory(); - -// node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js -var ObjectUnsubscribedError = createErrorClass(function(_super) { - return function ObjectUnsubscribedErrorImpl() { - _super(this); - this.name = "ObjectUnsubscribedError"; - this.message = "object unsubscribed"; - }; -}); - -// node_modules/rxjs/dist/esm5/internal/Subject.js -var Subject = function(_super) { - __extends(Subject2, _super); - function Subject2() { - var _this = _super.call(this) || this; - _this.closed = false; - _this.currentObservers = null; - _this.observers = []; - _this.isStopped = false; - _this.hasError = false; - _this.thrownError = null; - return _this; - } - Subject2.prototype.lift = function(operator) { - var subject = new AnonymousSubject(this, this); - subject.operator = operator; - return subject; - }; - Subject2.prototype._throwIfClosed = function() { - if (this.closed) { - throw new ObjectUnsubscribedError(); - } - }; - Subject2.prototype.next = function(value) { - var _this = this; - errorContext(function() { - var e_1, _a; - _this._throwIfClosed(); - if (!_this.isStopped) { - if (!_this.currentObservers) { - _this.currentObservers = Array.from(_this.observers); - } - try { - for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) { - var observer = _c.value; - observer.next(value); - } - } catch (e_1_1) { - e_1 = { error: e_1_1 }; - } finally { - try { - if (_c && !_c.done && (_a = _b.return)) - _a.call(_b); - } finally { - if (e_1) - throw e_1.error; - } - } - } - }); - }; - Subject2.prototype.error = function(err) { - var _this = this; - errorContext(function() { - _this._throwIfClosed(); - if (!_this.isStopped) { - _this.hasError = _this.isStopped = true; - _this.thrownError = err; - var observers = _this.observers; - while (observers.length) { - observers.shift().error(err); - } - } - }); - }; - Subject2.prototype.complete = function() { - var _this = this; - errorContext(function() { - _this._throwIfClosed(); - if (!_this.isStopped) { - _this.isStopped = true; - var observers = _this.observers; - while (observers.length) { - observers.shift().complete(); - } - } - }); - }; - Subject2.prototype.unsubscribe = function() { - this.isStopped = this.closed = true; - this.observers = this.currentObservers = null; - }; - Object.defineProperty(Subject2.prototype, "observed", { - get: function() { - var _a; - return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0; - }, - enumerable: false, - configurable: true - }); - Subject2.prototype._trySubscribe = function(subscriber) { - this._throwIfClosed(); - return _super.prototype._trySubscribe.call(this, subscriber); - }; - Subject2.prototype._subscribe = function(subscriber) { - this._throwIfClosed(); - this._checkFinalizedStatuses(subscriber); - return this._innerSubscribe(subscriber); - }; - Subject2.prototype._innerSubscribe = function(subscriber) { - var _this = this; - var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers; - if (hasError || isStopped) { - return EMPTY_SUBSCRIPTION; - } - this.currentObservers = null; - observers.push(subscriber); - return new Subscription(function() { - _this.currentObservers = null; - arrRemove(observers, subscriber); - }); - }; - Subject2.prototype._checkFinalizedStatuses = function(subscriber) { - var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped; - if (hasError) { - subscriber.error(thrownError); - } else if (isStopped) { - subscriber.complete(); - } - }; - Subject2.prototype.asObservable = function() { - var observable2 = new Observable(); - observable2.source = this; - return observable2; - }; - Subject2.create = function(destination, source) { - return new AnonymousSubject(destination, source); - }; - return Subject2; -}(Observable); -var AnonymousSubject = function(_super) { - __extends(AnonymousSubject2, _super); - function AnonymousSubject2(destination, source) { - var _this = _super.call(this) || this; - _this.destination = destination; - _this.source = source; - return _this; - } - AnonymousSubject2.prototype.next = function(value) { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value); - }; - AnonymousSubject2.prototype.error = function(err) { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err); - }; - AnonymousSubject2.prototype.complete = function() { - var _a, _b; - (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a); - }; - AnonymousSubject2.prototype._subscribe = function(subscriber) { - var _a, _b; - return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION; - }; - return AnonymousSubject2; -}(Subject); - -// node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js -var BehaviorSubject = function(_super) { - __extends(BehaviorSubject2, _super); - function BehaviorSubject2(_value) { - var _this = _super.call(this) || this; - _this._value = _value; - return _this; - } - Object.defineProperty(BehaviorSubject2.prototype, "value", { - get: function() { - return this.getValue(); - }, - enumerable: false, - configurable: true - }); - BehaviorSubject2.prototype._subscribe = function(subscriber) { - var subscription = _super.prototype._subscribe.call(this, subscriber); - !subscription.closed && subscriber.next(this._value); - return subscription; - }; - BehaviorSubject2.prototype.getValue = function() { - var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value; - if (hasError) { - throw thrownError; - } - this._throwIfClosed(); - return _value; - }; - BehaviorSubject2.prototype.next = function(value) { - _super.prototype.next.call(this, this._value = value); - }; - return BehaviorSubject2; -}(Subject); - -// node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js -var dateTimestampProvider = { - now: function() { - return (dateTimestampProvider.delegate || Date).now(); - }, - delegate: void 0 -}; - -// node_modules/rxjs/dist/esm5/internal/ReplaySubject.js -var ReplaySubject = function(_super) { - __extends(ReplaySubject2, _super); - function ReplaySubject2(_bufferSize, _windowTime, _timestampProvider) { - if (_bufferSize === void 0) { - _bufferSize = Infinity; - } - if (_windowTime === void 0) { - _windowTime = Infinity; - } - if (_timestampProvider === void 0) { - _timestampProvider = dateTimestampProvider; - } - var _this = _super.call(this) || this; - _this._bufferSize = _bufferSize; - _this._windowTime = _windowTime; - _this._timestampProvider = _timestampProvider; - _this._buffer = []; - _this._infiniteTimeWindow = true; - _this._infiniteTimeWindow = _windowTime === Infinity; - _this._bufferSize = Math.max(1, _bufferSize); - _this._windowTime = Math.max(1, _windowTime); - return _this; - } - ReplaySubject2.prototype.next = function(value) { - var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime; - if (!isStopped) { - _buffer.push(value); - !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime); - } - this._trimBuffer(); - _super.prototype.next.call(this, value); - }; - ReplaySubject2.prototype._subscribe = function(subscriber) { - this._throwIfClosed(); - this._trimBuffer(); - var subscription = this._innerSubscribe(subscriber); - var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer; - var copy = _buffer.slice(); - for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) { - subscriber.next(copy[i]); - } - this._checkFinalizedStatuses(subscriber); - return subscription; - }; - ReplaySubject2.prototype._trimBuffer = function() { - var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow; - var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize; - _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize); - if (!_infiniteTimeWindow) { - var now = _timestampProvider.now(); - var last3 = 0; - for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) { - last3 = i; - } - last3 && _buffer.splice(0, last3 + 1); - } - }; - return ReplaySubject2; -}(Subject); - -// node_modules/rxjs/dist/esm5/internal/AsyncSubject.js -var AsyncSubject = function(_super) { - __extends(AsyncSubject2, _super); - function AsyncSubject2() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._value = null; - _this._hasValue = false; - _this._isComplete = false; - return _this; - } - AsyncSubject2.prototype._checkFinalizedStatuses = function(subscriber) { - var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete; - if (hasError) { - subscriber.error(thrownError); - } else if (isStopped || _isComplete) { - _hasValue && subscriber.next(_value); - subscriber.complete(); - } - }; - AsyncSubject2.prototype.next = function(value) { - if (!this.isStopped) { - this._value = value; - this._hasValue = true; - } - }; - AsyncSubject2.prototype.complete = function() { - var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete; - if (!_isComplete) { - this._isComplete = true; - _hasValue && _super.prototype.next.call(this, _value); - _super.prototype.complete.call(this); - } - }; - return AsyncSubject2; -}(Subject); - -// node_modules/rxjs/dist/esm5/internal/scheduler/Action.js -var Action = function(_super) { - __extends(Action2, _super); - function Action2(scheduler, work) { - return _super.call(this) || this; - } - Action2.prototype.schedule = function(state, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - return this; - }; - return Action2; -}(Subscription); - -// node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js -var intervalProvider = { - setInterval: function(handler, timeout2) { - var args = []; - for (var _i = 2; _i < arguments.length; _i++) { - args[_i - 2] = arguments[_i]; - } - var delegate = intervalProvider.delegate; - if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) { - return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout2], __read(args))); - } - return setInterval.apply(void 0, __spreadArray([handler, timeout2], __read(args))); - }, - clearInterval: function(handle) { - var delegate = intervalProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle); - }, - delegate: void 0 -}; - -// node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js -var AsyncAction = function(_super) { - __extends(AsyncAction2, _super); - function AsyncAction2(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - _this.pending = false; - return _this; - } - AsyncAction2.prototype.schedule = function(state, delay2) { - var _a; - if (delay2 === void 0) { - delay2 = 0; - } - if (this.closed) { - return this; - } - this.state = state; - var id = this.id; - var scheduler = this.scheduler; - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, delay2); - } - this.pending = true; - this.delay = delay2; - this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay2); - return this; - }; - AsyncAction2.prototype.requestAsyncId = function(scheduler, _id, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay2); - }; - AsyncAction2.prototype.recycleAsyncId = function(_scheduler, id, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - if (delay2 != null && this.delay === delay2 && this.pending === false) { - return id; - } - if (id != null) { - intervalProvider.clearInterval(id); - } - return void 0; - }; - AsyncAction2.prototype.execute = function(state, delay2) { - if (this.closed) { - return new Error("executing a cancelled action"); - } - this.pending = false; - var error = this._execute(state, delay2); - if (error) { - return error; - } else if (this.pending === false && this.id != null) { - this.id = this.recycleAsyncId(this.scheduler, this.id, null); - } - }; - AsyncAction2.prototype._execute = function(state, _delay) { - var errored = false; - var errorValue; - try { - this.work(state); - } catch (e) { - errored = true; - errorValue = e ? e : new Error("Scheduled action threw falsy error"); - } - if (errored) { - this.unsubscribe(); - return errorValue; - } - }; - AsyncAction2.prototype.unsubscribe = function() { - if (!this.closed) { - var _a = this, id = _a.id, scheduler = _a.scheduler; - var actions = scheduler.actions; - this.work = this.state = this.scheduler = null; - this.pending = false; - arrRemove(actions, this); - if (id != null) { - this.id = this.recycleAsyncId(scheduler, id, null); - } - this.delay = null; - _super.prototype.unsubscribe.call(this); - } - }; - return AsyncAction2; -}(Action); - -// node_modules/rxjs/dist/esm5/internal/util/Immediate.js -var nextHandle = 1; -var resolved; -var activeHandles = {}; -function findAndClearHandle(handle) { - if (handle in activeHandles) { - delete activeHandles[handle]; - return true; - } - return false; -} -var Immediate = { - setImmediate: function(cb) { - var handle = nextHandle++; - activeHandles[handle] = true; - if (!resolved) { - resolved = Promise.resolve(); - } - resolved.then(function() { - return findAndClearHandle(handle) && cb(); - }); - return handle; - }, - clearImmediate: function(handle) { - findAndClearHandle(handle); - } -}; - -// node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js -var setImmediate = Immediate.setImmediate; -var clearImmediate = Immediate.clearImmediate; -var immediateProvider = { - setImmediate: function() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var delegate = immediateProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args))); - }, - clearImmediate: function(handle) { - var delegate = immediateProvider.delegate; - return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle); - }, - delegate: void 0 -}; - -// node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js -var AsapAction = function(_super) { - __extends(AsapAction2, _super); - function AsapAction2(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - return _this; - } - AsapAction2.prototype.requestAsyncId = function(scheduler, id, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - if (delay2 !== null && delay2 > 0) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay2); - } - scheduler.actions.push(this); - return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, void 0))); - }; - AsapAction2.prototype.recycleAsyncId = function(scheduler, id, delay2) { - var _a; - if (delay2 === void 0) { - delay2 = 0; - } - if (delay2 != null ? delay2 > 0 : this.delay > 0) { - return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay2); - } - var actions = scheduler.actions; - if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) { - immediateProvider.clearImmediate(id); - if (scheduler._scheduled === id) { - scheduler._scheduled = void 0; - } - } - return void 0; - }; - return AsapAction2; -}(AsyncAction); - -// node_modules/rxjs/dist/esm5/internal/Scheduler.js -var Scheduler = function() { - function Scheduler2(schedulerActionCtor, now) { - if (now === void 0) { - now = Scheduler2.now; - } - this.schedulerActionCtor = schedulerActionCtor; - this.now = now; - } - Scheduler2.prototype.schedule = function(work, delay2, state) { - if (delay2 === void 0) { - delay2 = 0; - } - return new this.schedulerActionCtor(this, work).schedule(state, delay2); - }; - Scheduler2.now = dateTimestampProvider.now; - return Scheduler2; -}(); - -// node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js -var AsyncScheduler = function(_super) { - __extends(AsyncScheduler2, _super); - function AsyncScheduler2(SchedulerAction, now) { - if (now === void 0) { - now = Scheduler.now; - } - var _this = _super.call(this, SchedulerAction, now) || this; - _this.actions = []; - _this._active = false; - return _this; - } - AsyncScheduler2.prototype.flush = function(action) { - var actions = this.actions; - if (this._active) { - actions.push(action); - return; - } - var error; - this._active = true; - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while (action = actions.shift()); - this._active = false; - if (error) { - while (action = actions.shift()) { - action.unsubscribe(); - } - throw error; - } - }; - return AsyncScheduler2; -}(Scheduler); - -// node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js -var AsapScheduler = function(_super) { - __extends(AsapScheduler2, _super); - function AsapScheduler2() { - return _super !== null && _super.apply(this, arguments) || this; - } - AsapScheduler2.prototype.flush = function(action) { - this._active = true; - var flushId = this._scheduled; - this._scheduled = void 0; - var actions = this.actions; - var error; - action = action || actions.shift(); - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while ((action = actions[0]) && action.id === flushId && actions.shift()); - this._active = false; - if (error) { - while ((action = actions[0]) && action.id === flushId && actions.shift()) { - action.unsubscribe(); - } - throw error; - } - }; - return AsapScheduler2; -}(AsyncScheduler); - -// node_modules/rxjs/dist/esm5/internal/scheduler/asap.js -var asapScheduler = new AsapScheduler(AsapAction); - -// node_modules/rxjs/dist/esm5/internal/scheduler/async.js -var asyncScheduler = new AsyncScheduler(AsyncAction); - -// node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js -var QueueAction = function(_super) { - __extends(QueueAction2, _super); - function QueueAction2(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - return _this; - } - QueueAction2.prototype.schedule = function(state, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - if (delay2 > 0) { - return _super.prototype.schedule.call(this, state, delay2); - } - this.delay = delay2; - this.state = state; - this.scheduler.flush(this); - return this; - }; - QueueAction2.prototype.execute = function(state, delay2) { - return delay2 > 0 || this.closed ? _super.prototype.execute.call(this, state, delay2) : this._execute(state, delay2); - }; - QueueAction2.prototype.requestAsyncId = function(scheduler, id, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - if (delay2 != null && delay2 > 0 || delay2 == null && this.delay > 0) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay2); - } - scheduler.flush(this); - return 0; - }; - return QueueAction2; -}(AsyncAction); - -// node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js -var QueueScheduler = function(_super) { - __extends(QueueScheduler2, _super); - function QueueScheduler2() { - return _super !== null && _super.apply(this, arguments) || this; - } - return QueueScheduler2; -}(AsyncScheduler); - -// node_modules/rxjs/dist/esm5/internal/scheduler/queue.js -var queueScheduler = new QueueScheduler(QueueAction); - -// node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js -var AnimationFrameAction = function(_super) { - __extends(AnimationFrameAction2, _super); - function AnimationFrameAction2(scheduler, work) { - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - return _this; - } - AnimationFrameAction2.prototype.requestAsyncId = function(scheduler, id, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - if (delay2 !== null && delay2 > 0) { - return _super.prototype.requestAsyncId.call(this, scheduler, id, delay2); - } - scheduler.actions.push(this); - return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(function() { - return scheduler.flush(void 0); - })); - }; - AnimationFrameAction2.prototype.recycleAsyncId = function(scheduler, id, delay2) { - var _a; - if (delay2 === void 0) { - delay2 = 0; - } - if (delay2 != null ? delay2 > 0 : this.delay > 0) { - return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay2); - } - var actions = scheduler.actions; - if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) { - animationFrameProvider.cancelAnimationFrame(id); - scheduler._scheduled = void 0; - } - return void 0; - }; - return AnimationFrameAction2; -}(AsyncAction); - -// node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js -var AnimationFrameScheduler = function(_super) { - __extends(AnimationFrameScheduler2, _super); - function AnimationFrameScheduler2() { - return _super !== null && _super.apply(this, arguments) || this; - } - AnimationFrameScheduler2.prototype.flush = function(action) { - this._active = true; - var flushId = this._scheduled; - this._scheduled = void 0; - var actions = this.actions; - var error; - action = action || actions.shift(); - do { - if (error = action.execute(action.state, action.delay)) { - break; - } - } while ((action = actions[0]) && action.id === flushId && actions.shift()); - this._active = false; - if (error) { - while ((action = actions[0]) && action.id === flushId && actions.shift()) { - action.unsubscribe(); - } - throw error; - } - }; - return AnimationFrameScheduler2; -}(AsyncScheduler); - -// node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js -var animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction); - -// node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js -var VirtualTimeScheduler = function(_super) { - __extends(VirtualTimeScheduler2, _super); - function VirtualTimeScheduler2(schedulerActionCtor, maxFrames) { - if (schedulerActionCtor === void 0) { - schedulerActionCtor = VirtualAction; - } - if (maxFrames === void 0) { - maxFrames = Infinity; - } - var _this = _super.call(this, schedulerActionCtor, function() { - return _this.frame; - }) || this; - _this.maxFrames = maxFrames; - _this.frame = 0; - _this.index = -1; - return _this; - } - VirtualTimeScheduler2.prototype.flush = function() { - var _a = this, actions = _a.actions, maxFrames = _a.maxFrames; - var error; - var action; - while ((action = actions[0]) && action.delay <= maxFrames) { - actions.shift(); - this.frame = action.delay; - if (error = action.execute(action.state, action.delay)) { - break; - } - } - if (error) { - while (action = actions.shift()) { - action.unsubscribe(); - } - throw error; - } - }; - VirtualTimeScheduler2.frameTimeFactor = 10; - return VirtualTimeScheduler2; -}(AsyncScheduler); -var VirtualAction = function(_super) { - __extends(VirtualAction2, _super); - function VirtualAction2(scheduler, work, index) { - if (index === void 0) { - index = scheduler.index += 1; - } - var _this = _super.call(this, scheduler, work) || this; - _this.scheduler = scheduler; - _this.work = work; - _this.index = index; - _this.active = true; - _this.index = scheduler.index = index; - return _this; - } - VirtualAction2.prototype.schedule = function(state, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - if (Number.isFinite(delay2)) { - if (!this.id) { - return _super.prototype.schedule.call(this, state, delay2); - } - this.active = false; - var action = new VirtualAction2(this.scheduler, this.work); - this.add(action); - return action.schedule(state, delay2); - } else { - return Subscription.EMPTY; - } - }; - VirtualAction2.prototype.requestAsyncId = function(scheduler, id, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - this.delay = scheduler.frame + delay2; - var actions = scheduler.actions; - actions.push(this); - actions.sort(VirtualAction2.sortActions); - return 1; - }; - VirtualAction2.prototype.recycleAsyncId = function(scheduler, id, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - return void 0; - }; - VirtualAction2.prototype._execute = function(state, delay2) { - if (this.active === true) { - return _super.prototype._execute.call(this, state, delay2); - } - }; - VirtualAction2.sortActions = function(a, b) { - if (a.delay === b.delay) { - if (a.index === b.index) { - return 0; - } else if (a.index > b.index) { - return 1; - } else { - return -1; - } - } else if (a.delay > b.delay) { - return 1; - } else { - return -1; - } - }; - return VirtualAction2; -}(AsyncAction); - -// node_modules/rxjs/dist/esm5/internal/observable/empty.js -var EMPTY = new Observable(function(subscriber) { - return subscriber.complete(); -}); - -// node_modules/rxjs/dist/esm5/internal/util/isScheduler.js -function isScheduler(value) { - return value && isFunction(value.schedule); -} - -// node_modules/rxjs/dist/esm5/internal/util/args.js -function last(arr) { - return arr[arr.length - 1]; -} -function popResultSelector(args) { - return isFunction(last(args)) ? args.pop() : void 0; -} -function popScheduler(args) { - return isScheduler(last(args)) ? args.pop() : void 0; -} - -// node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js -var isArrayLike = function(x) { - return x && typeof x.length === "number" && typeof x !== "function"; -}; - -// node_modules/rxjs/dist/esm5/internal/util/isPromise.js -function isPromise(value) { - return isFunction(value === null || value === void 0 ? void 0 : value.then); -} - -// node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js -function isInteropObservable(input2) { - return isFunction(input2[observable]); -} - -// node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js -function isAsyncIterable(obj) { - return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]); -} - -// node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js -function createInvalidObservableTypeError(input2) { - return new TypeError("You provided " + (input2 !== null && typeof input2 === "object" ? "an invalid object" : "'" + input2 + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable."); -} - -// node_modules/rxjs/dist/esm5/internal/symbol/iterator.js -function getSymbolIterator() { - if (typeof Symbol !== "function" || !Symbol.iterator) { - return "@@iterator"; - } - return Symbol.iterator; -} -var iterator = getSymbolIterator(); - -// node_modules/rxjs/dist/esm5/internal/util/isIterable.js -function isIterable(input2) { - return isFunction(input2 === null || input2 === void 0 ? void 0 : input2[iterator]); -} - -// node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js -function readableStreamLikeToAsyncGenerator(readableStream) { - return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() { - var reader, _a, value, done; - return __generator(this, function(_b) { - switch (_b.label) { - case 0: - reader = readableStream.getReader(); - _b.label = 1; - case 1: - _b.trys.push([1, , 9, 10]); - _b.label = 2; - case 2: - if (false) - return [3, 8]; - return [4, __await(reader.read())]; - case 3: - _a = _b.sent(), value = _a.value, done = _a.done; - if (!done) - return [3, 5]; - return [4, __await(void 0)]; - case 4: - return [2, _b.sent()]; - case 5: - return [4, __await(value)]; - case 6: - return [4, _b.sent()]; - case 7: - _b.sent(); - return [3, 2]; - case 8: - return [3, 10]; - case 9: - reader.releaseLock(); - return [7]; - case 10: - return [2]; - } - }); - }); -} -function isReadableStreamLike(obj) { - return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader); -} - -// node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js -function innerFrom(input2) { - if (input2 instanceof Observable) { - return input2; - } - if (input2 != null) { - if (isInteropObservable(input2)) { - return fromInteropObservable(input2); - } - if (isArrayLike(input2)) { - return fromArrayLike(input2); - } - if (isPromise(input2)) { - return fromPromise(input2); - } - if (isAsyncIterable(input2)) { - return fromAsyncIterable(input2); - } - if (isIterable(input2)) { - return fromIterable(input2); - } - if (isReadableStreamLike(input2)) { - return fromReadableStreamLike(input2); - } - } - throw createInvalidObservableTypeError(input2); -} -function fromInteropObservable(obj) { - return new Observable(function(subscriber) { - var obs = obj[observable](); - if (isFunction(obs.subscribe)) { - return obs.subscribe(subscriber); - } - throw new TypeError("Provided object does not correctly implement Symbol.observable"); - }); -} -function fromArrayLike(array) { - return new Observable(function(subscriber) { - for (var i = 0; i < array.length && !subscriber.closed; i++) { - subscriber.next(array[i]); - } - subscriber.complete(); - }); -} -function fromPromise(promise) { - return new Observable(function(subscriber) { - promise.then(function(value) { - if (!subscriber.closed) { - subscriber.next(value); - subscriber.complete(); - } - }, function(err) { - return subscriber.error(err); - }).then(null, reportUnhandledError); - }); -} -function fromIterable(iterable) { - return new Observable(function(subscriber) { - var e_1, _a; - try { - for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) { - var value = iterable_1_1.value; - subscriber.next(value); - if (subscriber.closed) { - return; - } - } - } catch (e_1_1) { - e_1 = { error: e_1_1 }; - } finally { - try { - if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) - _a.call(iterable_1); - } finally { - if (e_1) - throw e_1.error; - } - } - subscriber.complete(); - }); -} -function fromAsyncIterable(asyncIterable) { - return new Observable(function(subscriber) { - process(asyncIterable, subscriber).catch(function(err) { - return subscriber.error(err); - }); - }); -} -function fromReadableStreamLike(readableStream) { - return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream)); -} -function process(asyncIterable, subscriber) { - var asyncIterable_1, asyncIterable_1_1; - var e_2, _a; - return __awaiter(this, void 0, void 0, function() { - var value, e_2_1; - return __generator(this, function(_b) { - switch (_b.label) { - case 0: - _b.trys.push([0, 5, 6, 11]); - asyncIterable_1 = __asyncValues(asyncIterable); - _b.label = 1; - case 1: - return [4, asyncIterable_1.next()]; - case 2: - if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) - return [3, 4]; - value = asyncIterable_1_1.value; - subscriber.next(value); - if (subscriber.closed) { - return [2]; - } - _b.label = 3; - case 3: - return [3, 1]; - case 4: - return [3, 11]; - case 5: - e_2_1 = _b.sent(); - e_2 = { error: e_2_1 }; - return [3, 11]; - case 6: - _b.trys.push([6, , 9, 10]); - if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) - return [3, 8]; - return [4, _a.call(asyncIterable_1)]; - case 7: - _b.sent(); - _b.label = 8; - case 8: - return [3, 10]; - case 9: - if (e_2) - throw e_2.error; - return [7]; - case 10: - return [7]; - case 11: - subscriber.complete(); - return [2]; - } - }); - }); -} - -// node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js -function executeSchedule(parentSubscription, scheduler, work, delay2, repeat2) { - if (delay2 === void 0) { - delay2 = 0; - } - if (repeat2 === void 0) { - repeat2 = false; - } - var scheduleSubscription = scheduler.schedule(function() { - work(); - if (repeat2) { - parentSubscription.add(this.schedule(null, delay2)); - } else { - this.unsubscribe(); - } - }, delay2); - parentSubscription.add(scheduleSubscription); - if (!repeat2) { - return scheduleSubscription; - } -} - -// node_modules/rxjs/dist/esm5/internal/operators/observeOn.js -function observeOn(scheduler, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - return operate(function(source, subscriber) { - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - return executeSchedule(subscriber, scheduler, function() { - return subscriber.next(value); - }, delay2); - }, function() { - return executeSchedule(subscriber, scheduler, function() { - return subscriber.complete(); - }, delay2); - }, function(err) { - return executeSchedule(subscriber, scheduler, function() { - return subscriber.error(err); - }, delay2); - })); - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js -function subscribeOn(scheduler, delay2) { - if (delay2 === void 0) { - delay2 = 0; - } - return operate(function(source, subscriber) { - subscriber.add(scheduler.schedule(function() { - return source.subscribe(subscriber); - }, delay2)); - }); -} - -// node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js -function scheduleObservable(input2, scheduler) { - return innerFrom(input2).pipe(subscribeOn(scheduler), observeOn(scheduler)); -} - -// node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js -function schedulePromise(input2, scheduler) { - return innerFrom(input2).pipe(subscribeOn(scheduler), observeOn(scheduler)); -} - -// node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js -function scheduleArray(input2, scheduler) { - return new Observable(function(subscriber) { - var i = 0; - return scheduler.schedule(function() { - if (i === input2.length) { - subscriber.complete(); - } else { - subscriber.next(input2[i++]); - if (!subscriber.closed) { - this.schedule(); - } - } - }); - }); -} - -// node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js -function scheduleIterable(input2, scheduler) { - return new Observable(function(subscriber) { - var iterator2; - executeSchedule(subscriber, scheduler, function() { - iterator2 = input2[iterator](); - executeSchedule(subscriber, scheduler, function() { - var _a; - var value; - var done; - try { - _a = iterator2.next(), value = _a.value, done = _a.done; - } catch (err) { - subscriber.error(err); - return; - } - if (done) { - subscriber.complete(); - } else { - subscriber.next(value); - } - }, 0, true); - }); - return function() { - return isFunction(iterator2 === null || iterator2 === void 0 ? void 0 : iterator2.return) && iterator2.return(); - }; - }); -} - -// node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js -function scheduleAsyncIterable(input2, scheduler) { - if (!input2) { - throw new Error("Iterable cannot be null"); - } - return new Observable(function(subscriber) { - executeSchedule(subscriber, scheduler, function() { - var iterator2 = input2[Symbol.asyncIterator](); - executeSchedule(subscriber, scheduler, function() { - iterator2.next().then(function(result) { - if (result.done) { - subscriber.complete(); - } else { - subscriber.next(result.value); - } - }); - }, 0, true); - }); - }); -} - -// node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js -function scheduleReadableStreamLike(input2, scheduler) { - return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input2), scheduler); -} - -// node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js -function scheduled(input2, scheduler) { - if (input2 != null) { - if (isInteropObservable(input2)) { - return scheduleObservable(input2, scheduler); - } - if (isArrayLike(input2)) { - return scheduleArray(input2, scheduler); - } - if (isPromise(input2)) { - return schedulePromise(input2, scheduler); - } - if (isAsyncIterable(input2)) { - return scheduleAsyncIterable(input2, scheduler); - } - if (isIterable(input2)) { - return scheduleIterable(input2, scheduler); - } - if (isReadableStreamLike(input2)) { - return scheduleReadableStreamLike(input2, scheduler); - } - } - throw createInvalidObservableTypeError(input2); -} - -// node_modules/rxjs/dist/esm5/internal/observable/from.js -function from(input2, scheduler) { - return scheduler ? scheduled(input2, scheduler) : innerFrom(input2); -} - -// node_modules/rxjs/dist/esm5/internal/observable/of.js -function of() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var scheduler = popScheduler(args); - return from(args, scheduler); -} - -// node_modules/rxjs/dist/esm5/internal/observable/throwError.js -function throwError(errorOrErrorFactory, scheduler) { - var errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : function() { - return errorOrErrorFactory; - }; - var init = function(subscriber) { - return subscriber.error(errorFactory()); - }; - return new Observable(scheduler ? function(subscriber) { - return scheduler.schedule(init, 0, subscriber); - } : init); -} - -// node_modules/rxjs/dist/esm5/internal/Notification.js -var NotificationKind; -(function(NotificationKind2) { - NotificationKind2["NEXT"] = "N"; - NotificationKind2["ERROR"] = "E"; - NotificationKind2["COMPLETE"] = "C"; -})(NotificationKind || (NotificationKind = {})); -var Notification = function() { - function Notification2(kind, value, error) { - this.kind = kind; - this.value = value; - this.error = error; - this.hasValue = kind === "N"; - } - Notification2.prototype.observe = function(observer) { - return observeNotification(this, observer); - }; - Notification2.prototype.do = function(nextHandler, errorHandler, completeHandler) { - var _a = this, kind = _a.kind, value = _a.value, error = _a.error; - return kind === "N" ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === "E" ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler(); - }; - Notification2.prototype.accept = function(nextOrObserver, error, complete) { - var _a; - return isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next) ? this.observe(nextOrObserver) : this.do(nextOrObserver, error, complete); - }; - Notification2.prototype.toObservable = function() { - var _a = this, kind = _a.kind, value = _a.value, error = _a.error; - var result = kind === "N" ? of(value) : kind === "E" ? throwError(function() { - return error; - }) : kind === "C" ? EMPTY : 0; - if (!result) { - throw new TypeError("Unexpected notification kind " + kind); - } - return result; - }; - Notification2.createNext = function(value) { - return new Notification2("N", value); - }; - Notification2.createError = function(err) { - return new Notification2("E", void 0, err); - }; - Notification2.createComplete = function() { - return Notification2.completeNotification; - }; - Notification2.completeNotification = new Notification2("C"); - return Notification2; -}(); -function observeNotification(notification, observer) { - var _a, _b, _c; - var _d = notification, kind = _d.kind, value = _d.value, error = _d.error; - if (typeof kind !== "string") { - throw new TypeError('Invalid notification, missing "kind"'); - } - kind === "N" ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === "E" ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer); -} - -// node_modules/rxjs/dist/esm5/internal/util/isObservable.js -function isObservable(obj) { - return !!obj && (obj instanceof Observable || isFunction(obj.lift) && isFunction(obj.subscribe)); -} - -// node_modules/rxjs/dist/esm5/internal/util/EmptyError.js -var EmptyError = createErrorClass(function(_super) { - return function EmptyErrorImpl() { - _super(this); - this.name = "EmptyError"; - this.message = "no elements in sequence"; - }; -}); - -// node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js -var ArgumentOutOfRangeError = createErrorClass(function(_super) { - return function ArgumentOutOfRangeErrorImpl() { - _super(this); - this.name = "ArgumentOutOfRangeError"; - this.message = "argument out of range"; - }; -}); - -// node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js -var NotFoundError = createErrorClass(function(_super) { - return function NotFoundErrorImpl(message) { - _super(this); - this.name = "NotFoundError"; - this.message = message; - }; -}); - -// node_modules/rxjs/dist/esm5/internal/util/SequenceError.js -var SequenceError = createErrorClass(function(_super) { - return function SequenceErrorImpl(message) { - _super(this); - this.name = "SequenceError"; - this.message = message; - }; -}); - -// node_modules/rxjs/dist/esm5/internal/operators/timeout.js -var TimeoutError = createErrorClass(function(_super) { - return function TimeoutErrorImpl(info) { - if (info === void 0) { - info = null; - } - _super(this); - this.message = "Timeout has occurred"; - this.name = "TimeoutError"; - this.info = info; - }; -}); - -// node_modules/rxjs/dist/esm5/internal/operators/map.js -function map(project, thisArg) { - return operate(function(source, subscriber) { - var index = 0; - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - subscriber.next(project.call(thisArg, value, index++)); - })); - }); -} - -// node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js -var isArray = Array.isArray; -function callOrApply(fn, args) { - return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args); -} -function mapOneOrManyArgs(fn) { - return map(function(args) { - return callOrApply(fn, args); - }); -} - -// node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js -var isArray2 = Array.isArray; -var getPrototypeOf = Object.getPrototypeOf; -var objectProto = Object.prototype; -var getKeys = Object.keys; -function argsArgArrayOrObject(args) { - if (args.length === 1) { - var first_1 = args[0]; - if (isArray2(first_1)) { - return { args: first_1, keys: null }; - } - if (isPOJO(first_1)) { - var keys = getKeys(first_1); - return { - args: keys.map(function(key) { - return first_1[key]; - }), - keys - }; - } - } - return { args, keys: null }; -} -function isPOJO(obj) { - return obj && typeof obj === "object" && getPrototypeOf(obj) === objectProto; -} - -// node_modules/rxjs/dist/esm5/internal/util/createObject.js -function createObject(keys, values) { - return keys.reduce(function(result, key, i) { - return result[key] = values[i], result; - }, {}); -} - -// node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js -function combineLatest() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - var scheduler = popScheduler(args); - var resultSelector = popResultSelector(args); - var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys; - if (observables.length === 0) { - return from([], scheduler); - } - var result = new Observable(combineLatestInit(observables, scheduler, keys ? function(values) { - return createObject(keys, values); - } : identity)); - return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result; -} -function combineLatestInit(observables, scheduler, valueTransform) { - if (valueTransform === void 0) { - valueTransform = identity; - } - return function(subscriber) { - maybeSchedule(scheduler, function() { - var length = observables.length; - var values = new Array(length); - var active = length; - var remainingFirstValues = length; - var _loop_1 = function(i2) { - maybeSchedule(scheduler, function() { - var source = from(observables[i2], scheduler); - var hasFirstValue = false; - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - values[i2] = value; - if (!hasFirstValue) { - hasFirstValue = true; - remainingFirstValues--; - } - if (!remainingFirstValues) { - subscriber.next(valueTransform(values.slice())); - } - }, function() { - if (!--active) { - subscriber.complete(); - } - })); - }, subscriber); - }; - for (var i = 0; i < length; i++) { - _loop_1(i); - } - }, subscriber); - }; -} -function maybeSchedule(scheduler, execute, subscription) { - if (scheduler) { - executeSchedule(subscription, scheduler, execute); - } else { - execute(); - } -} - -// node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js -function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand2, innerSubScheduler, additionalFinalizer) { - var buffer2 = []; - var active = 0; - var index = 0; - var isComplete = false; - var checkComplete = function() { - if (isComplete && !buffer2.length && !active) { - subscriber.complete(); - } - }; - var outerNext = function(value) { - return active < concurrent ? doInnerSub(value) : buffer2.push(value); - }; - var doInnerSub = function(value) { - expand2 && subscriber.next(value); - active++; - var innerComplete = false; - innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function(innerValue) { - onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue); - if (expand2) { - outerNext(innerValue); - } else { - subscriber.next(innerValue); - } - }, function() { - innerComplete = true; - }, void 0, function() { - if (innerComplete) { - try { - active--; - var _loop_1 = function() { - var bufferedValue = buffer2.shift(); - if (innerSubScheduler) { - executeSchedule(subscriber, innerSubScheduler, function() { - return doInnerSub(bufferedValue); - }); - } else { - doInnerSub(bufferedValue); - } - }; - while (buffer2.length && active < concurrent) { - _loop_1(); - } - checkComplete(); - } catch (err) { - subscriber.error(err); - } - } - })); - }; - source.subscribe(createOperatorSubscriber(subscriber, outerNext, function() { - isComplete = true; - checkComplete(); - })); - return function() { - additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer(); - }; -} - -// node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js -function mergeMap(project, resultSelector, concurrent) { - if (concurrent === void 0) { - concurrent = Infinity; - } - if (isFunction(resultSelector)) { - return mergeMap(function(a, i) { - return map(function(b, ii) { - return resultSelector(a, b, i, ii); - })(innerFrom(project(a, i))); - }, concurrent); - } else if (typeof resultSelector === "number") { - concurrent = resultSelector; - } - return operate(function(source, subscriber) { - return mergeInternals(source, subscriber, project, concurrent); - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js -function mergeAll(concurrent) { - if (concurrent === void 0) { - concurrent = Infinity; - } - return mergeMap(identity, concurrent); -} - -// node_modules/rxjs/dist/esm5/internal/operators/concatAll.js -function concatAll() { - return mergeAll(1); -} - -// node_modules/rxjs/dist/esm5/internal/observable/concat.js -function concat() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i] = arguments[_i]; - } - return concatAll()(from(args, popScheduler(args))); -} - -// node_modules/rxjs/dist/esm5/internal/observable/defer.js -function defer(observableFactory) { - return new Observable(function(subscriber) { - innerFrom(observableFactory()).subscribe(subscriber); - }); -} - -// node_modules/rxjs/dist/esm5/internal/observable/never.js -var NEVER = new Observable(noop); - -// node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js -var isArray3 = Array.isArray; - -// node_modules/rxjs/dist/esm5/internal/operators/filter.js -function filter(predicate, thisArg) { - return operate(function(source, subscriber) { - var index = 0; - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - return predicate.call(thisArg, value, index++) && subscriber.next(value); - })); - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/catchError.js -function catchError(selector) { - return operate(function(source, subscriber) { - var innerSub = null; - var syncUnsub = false; - var handledResult; - innerSub = source.subscribe(createOperatorSubscriber(subscriber, void 0, void 0, function(err) { - handledResult = innerFrom(selector(err, catchError(selector)(source))); - if (innerSub) { - innerSub.unsubscribe(); - innerSub = null; - handledResult.subscribe(subscriber); - } else { - syncUnsub = true; - } - })); - if (syncUnsub) { - innerSub.unsubscribe(); - innerSub = null; - handledResult.subscribe(subscriber); - } - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js -function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) { - return function(source, subscriber) { - var hasState = hasSeed; - var state = seed; - var index = 0; - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - var i = index++; - state = hasState ? accumulator(state, value, i) : (hasState = true, value); - emitOnNext && subscriber.next(state); - }, emitBeforeComplete && function() { - hasState && subscriber.next(state); - subscriber.complete(); - })); - }; -} - -// node_modules/rxjs/dist/esm5/internal/operators/concatMap.js -function concatMap(project, resultSelector) { - return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1); -} - -// node_modules/rxjs/dist/esm5/internal/operators/defaultIfEmpty.js -function defaultIfEmpty(defaultValue) { - return operate(function(source, subscriber) { - var hasValue = false; - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - hasValue = true; - subscriber.next(value); - }, function() { - if (!hasValue) { - subscriber.next(defaultValue); - } - subscriber.complete(); - })); - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/take.js -function take(count2) { - return count2 <= 0 ? function() { - return EMPTY; - } : operate(function(source, subscriber) { - var seen = 0; - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - if (++seen <= count2) { - subscriber.next(value); - if (count2 <= seen) { - subscriber.complete(); - } - } - })); - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/mapTo.js -function mapTo(value) { - return map(function() { - return value; - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/throwIfEmpty.js -function throwIfEmpty(errorFactory) { - if (errorFactory === void 0) { - errorFactory = defaultErrorFactory; - } - return operate(function(source, subscriber) { - var hasValue = false; - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - hasValue = true; - subscriber.next(value); - }, function() { - return hasValue ? subscriber.complete() : subscriber.error(errorFactory()); - })); - }); -} -function defaultErrorFactory() { - return new EmptyError(); -} - -// node_modules/rxjs/dist/esm5/internal/operators/finalize.js -function finalize(callback) { - return operate(function(source, subscriber) { - try { - source.subscribe(subscriber); - } finally { - subscriber.add(callback); - } - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/first.js -function first(predicate, defaultValue) { - var hasDefaultValue = arguments.length >= 2; - return function(source) { - return source.pipe(predicate ? filter(function(v, i) { - return predicate(v, i, source); - }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function() { - return new EmptyError(); - })); - }; -} - -// node_modules/rxjs/dist/esm5/internal/operators/takeLast.js -function takeLast(count2) { - return count2 <= 0 ? function() { - return EMPTY; - } : operate(function(source, subscriber) { - var buffer2 = []; - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - buffer2.push(value); - count2 < buffer2.length && buffer2.shift(); - }, function() { - var e_1, _a; - try { - for (var buffer_1 = __values(buffer2), buffer_1_1 = buffer_1.next(); !buffer_1_1.done; buffer_1_1 = buffer_1.next()) { - var value = buffer_1_1.value; - subscriber.next(value); - } - } catch (e_1_1) { - e_1 = { error: e_1_1 }; - } finally { - try { - if (buffer_1_1 && !buffer_1_1.done && (_a = buffer_1.return)) - _a.call(buffer_1); - } finally { - if (e_1) - throw e_1.error; - } - } - subscriber.complete(); - }, void 0, function() { - buffer2 = null; - })); - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/last.js -function last2(predicate, defaultValue) { - var hasDefaultValue = arguments.length >= 2; - return function(source) { - return source.pipe(predicate ? filter(function(v, i) { - return predicate(v, i, source); - }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function() { - return new EmptyError(); - })); - }; -} - -// node_modules/rxjs/dist/esm5/internal/operators/scan.js -function scan(accumulator, seed) { - return operate(scanInternals(accumulator, seed, arguments.length >= 2, true)); -} - -// node_modules/rxjs/dist/esm5/internal/operators/startWith.js -function startWith() { - var values = []; - for (var _i = 0; _i < arguments.length; _i++) { - values[_i] = arguments[_i]; - } - var scheduler = popScheduler(values); - return operate(function(source, subscriber) { - (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber); - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/switchMap.js -function switchMap(project, resultSelector) { - return operate(function(source, subscriber) { - var innerSubscriber = null; - var index = 0; - var isComplete = false; - var checkComplete = function() { - return isComplete && !innerSubscriber && subscriber.complete(); - }; - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe(); - var innerIndex = 0; - var outerIndex = index++; - innerFrom(project(value, outerIndex)).subscribe(innerSubscriber = createOperatorSubscriber(subscriber, function(innerValue) { - return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); - }, function() { - innerSubscriber = null; - checkComplete(); - })); - }, function() { - isComplete = true; - checkComplete(); - })); - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js -function takeUntil(notifier) { - return operate(function(source, subscriber) { - innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, function() { - return subscriber.complete(); - }, noop)); - !subscriber.closed && source.subscribe(subscriber); - }); -} - -// node_modules/rxjs/dist/esm5/internal/operators/tap.js -function tap(observerOrNext, error, complete) { - var tapObserver = isFunction(observerOrNext) || error || complete ? { next: observerOrNext, error, complete } : observerOrNext; - return tapObserver ? operate(function(source, subscriber) { - var _a; - (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver); - var isUnsub = true; - source.subscribe(createOperatorSubscriber(subscriber, function(value) { - var _a2; - (_a2 = tapObserver.next) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver, value); - subscriber.next(value); - }, function() { - var _a2; - isUnsub = false; - (_a2 = tapObserver.complete) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver); - subscriber.complete(); - }, function(err) { - var _a2; - isUnsub = false; - (_a2 = tapObserver.error) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver, err); - subscriber.error(err); - }, function() { - var _a2, _b; - if (isUnsub) { - (_a2 = tapObserver.unsubscribe) === null || _a2 === void 0 ? void 0 : _a2.call(tapObserver); - } - (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver); - })); - }) : identity; -} - -// node_modules/@angular/core/fesm2022/core.mjs -var ERROR_DETAILS_PAGE_BASE_URL = "https://angular.io/errors"; -var XSS_SECURITY_URL = "https://g.co/ng/security#xss"; -var RuntimeError = class extends Error { - constructor(code, message) { - super(formatRuntimeError(code, message)); - this.code = code; - } -}; -function formatRuntimeError(code, message) { - const fullCode = `NG0${Math.abs(code)}`; - let errorMessage = `${fullCode}${message ? ": " + message : ""}`; - if (ngDevMode && code < 0) { - const addPeriodSeparator = !errorMessage.match(/[.,;!?\n]$/); - const separator = addPeriodSeparator ? "." : ""; - errorMessage = `${errorMessage}${separator} Find more at ${ERROR_DETAILS_PAGE_BASE_URL}/${fullCode}`; - } - return errorMessage; -} -var REQUIRED_UNSET_VALUE = Symbol("InputSignalNode#UNSET"); -var INPUT_SIGNAL_NODE = (() => { - return __spreadProps(__spreadValues({}, SIGNAL_NODE), { - transformFn: void 0, - applyValueToInputSignal(node, value) { - signalSetFn(node, value); - } - }); -})(); -var ɵINPUT_SIGNAL_BRAND_READ_TYPE = Symbol(); -var ɵINPUT_SIGNAL_BRAND_WRITE_TYPE = Symbol(); -function createInputSignal(initialValue, options) { - const node = Object.create(INPUT_SIGNAL_NODE); - node.value = initialValue; - node.transformFn = options?.transform; - function inputValueFn() { - producerAccessed(node); - if (node.value === REQUIRED_UNSET_VALUE) { - throw new RuntimeError(-950, ngDevMode && "Input is required but no value is available yet."); - } - return node.value; - } - inputValueFn[SIGNAL] = node; - return inputValueFn; -} -function inputFunction(initialValue, opts) { - return createInputSignal(initialValue, opts); -} -function inputRequiredFunction(opts) { - return createInputSignal(REQUIRED_UNSET_VALUE, opts); -} -var input = (() => { - inputFunction.required = inputRequiredFunction; - return inputFunction; -})(); -function getClosureSafeProperty(objWithPropertyToExtract) { - for (let key in objWithPropertyToExtract) { - if (objWithPropertyToExtract[key] === getClosureSafeProperty) { - return key; - } - } - throw Error("Could not find renamed property on target object."); -} -function fillProperties(target, source) { - for (const key in source) { - if (source.hasOwnProperty(key) && !target.hasOwnProperty(key)) { - target[key] = source[key]; - } - } -} -function stringify(token) { - if (typeof token === "string") { - return token; - } - if (Array.isArray(token)) { - return "[" + token.map(stringify).join(", ") + "]"; - } - if (token == null) { - return "" + token; - } - if (token.overriddenName) { - return `${token.overriddenName}`; - } - if (token.name) { - return `${token.name}`; - } - const res = token.toString(); - if (res == null) { - return "" + res; - } - const newLineIndex = res.indexOf("\n"); - return newLineIndex === -1 ? res : res.substring(0, newLineIndex); -} -function concatStringsWithSpace(before, after) { - return before == null || before === "" ? after === null ? "" : after : after == null || after === "" ? before : before + " " + after; -} -function truncateMiddle(str, maxLength = 100) { - if (!str || maxLength < 1 || str.length <= maxLength) - return str; - if (maxLength == 1) - return str.substring(0, 1) + "..."; - const halfLimit = Math.round(maxLength / 2); - return str.substring(0, halfLimit) + "..." + str.substring(str.length - halfLimit); -} -var __forward_ref__ = getClosureSafeProperty({ __forward_ref__: getClosureSafeProperty }); -function forwardRef(forwardRefFn) { - forwardRefFn.__forward_ref__ = forwardRef; - forwardRefFn.toString = function() { - return stringify(this()); - }; - return forwardRefFn; -} -function resolveForwardRef(type) { - return isForwardRef(type) ? type() : type; -} -function isForwardRef(fn) { - return typeof fn === "function" && fn.hasOwnProperty(__forward_ref__) && fn.__forward_ref__ === forwardRef; -} -function isEnvironmentProviders(value) { - return value && !!value.ɵproviders; -} -var NG_COMP_DEF = getClosureSafeProperty({ ɵcmp: getClosureSafeProperty }); -var NG_DIR_DEF = getClosureSafeProperty({ ɵdir: getClosureSafeProperty }); -var NG_PIPE_DEF = getClosureSafeProperty({ ɵpipe: getClosureSafeProperty }); -var NG_MOD_DEF = getClosureSafeProperty({ ɵmod: getClosureSafeProperty }); -var NG_FACTORY_DEF = getClosureSafeProperty({ ɵfac: getClosureSafeProperty }); -var NG_ELEMENT_ID = getClosureSafeProperty({ __NG_ELEMENT_ID__: getClosureSafeProperty }); -var NG_ENV_ID = getClosureSafeProperty({ __NG_ENV_ID__: getClosureSafeProperty }); -function renderStringify(value) { - if (typeof value === "string") - return value; - if (value == null) - return ""; - return String(value); -} -function stringifyForError(value) { - if (typeof value === "function") - return value.name || value.toString(); - if (typeof value === "object" && value != null && typeof value.type === "function") { - return value.type.name || value.type.toString(); - } - return renderStringify(value); -} -function debugStringifyTypeForError(type) { - let componentDef = type[NG_COMP_DEF] || null; - if (componentDef !== null && componentDef.debugInfo) { - return stringifyTypeFromDebugInfo(componentDef.debugInfo); - } - return stringifyForError(type); -} -function stringifyTypeFromDebugInfo(debugInfo) { - if (!debugInfo.filePath || !debugInfo.lineNumber) { - return debugInfo.className; - } else { - return `${debugInfo.className} (at ${debugInfo.filePath}:${debugInfo.lineNumber})`; - } -} -function throwCyclicDependencyError(token, path) { - const depPath = path ? `. Dependency path: ${path.join(" > ")} > ${token}` : ""; - throw new RuntimeError(-200, ngDevMode ? `Circular dependency in DI detected for ${token}${depPath}` : token); -} -function throwMixedMultiProviderError() { - throw new Error(`Cannot mix multi providers and regular providers`); -} -function throwInvalidProviderError(ngModuleType, providers, provider) { - if (ngModuleType && providers) { - const providerDetail = providers.map((v) => v == provider ? "?" + provider + "?" : "..."); - throw new Error(`Invalid provider for the NgModule '${stringify(ngModuleType)}' - only instances of Provider and Type are allowed, got: [${providerDetail.join(", ")}]`); - } else if (isEnvironmentProviders(provider)) { - if (provider.ɵfromNgModule) { - throw new RuntimeError(207, `Invalid providers from 'importProvidersFrom' present in a non-environment injector. 'importProvidersFrom' can't be used for component providers.`); - } else { - throw new RuntimeError(207, `Invalid providers present in a non-environment injector. 'EnvironmentProviders' can't be used for component providers.`); - } - } else { - throw new Error("Invalid provider"); - } -} -function throwProviderNotFoundError(token, injectorName) { - const errorMessage = ngDevMode && `No provider for ${stringifyForError(token)} found${injectorName ? ` in ${injectorName}` : ""}`; - throw new RuntimeError(-201, errorMessage); -} -function assertNumber(actual, msg) { - if (!(typeof actual === "number")) { - throwError2(msg, typeof actual, "number", "==="); - } -} -function assertNumberInRange(actual, minInclusive, maxInclusive) { - assertNumber(actual, "Expected a number"); - assertLessThanOrEqual(actual, maxInclusive, "Expected number to be less than or equal to"); - assertGreaterThanOrEqual(actual, minInclusive, "Expected number to be greater than or equal to"); -} -function assertString(actual, msg) { - if (!(typeof actual === "string")) { - throwError2(msg, actual === null ? "null" : typeof actual, "string", "==="); - } -} -function assertFunction(actual, msg) { - if (!(typeof actual === "function")) { - throwError2(msg, actual === null ? "null" : typeof actual, "function", "==="); - } -} -function assertEqual(actual, expected, msg) { - if (!(actual == expected)) { - throwError2(msg, actual, expected, "=="); - } -} -function assertNotEqual(actual, expected, msg) { - if (!(actual != expected)) { - throwError2(msg, actual, expected, "!="); - } -} -function assertSame(actual, expected, msg) { - if (!(actual === expected)) { - throwError2(msg, actual, expected, "==="); - } -} -function assertNotSame(actual, expected, msg) { - if (!(actual !== expected)) { - throwError2(msg, actual, expected, "!=="); - } -} -function assertLessThan(actual, expected, msg) { - if (!(actual < expected)) { - throwError2(msg, actual, expected, "<"); - } -} -function assertLessThanOrEqual(actual, expected, msg) { - if (!(actual <= expected)) { - throwError2(msg, actual, expected, "<="); - } -} -function assertGreaterThan(actual, expected, msg) { - if (!(actual > expected)) { - throwError2(msg, actual, expected, ">"); - } -} -function assertGreaterThanOrEqual(actual, expected, msg) { - if (!(actual >= expected)) { - throwError2(msg, actual, expected, ">="); - } -} -function assertDefined(actual, msg) { - if (actual == null) { - throwError2(msg, actual, null, "!="); - } -} -function throwError2(msg, actual, expected, comparison) { - throw new Error(`ASSERTION ERROR: ${msg}` + (comparison == null ? "" : ` [Expected=> ${expected} ${comparison} ${actual} <=Actual]`)); -} -function assertDomNode(node) { - if (!(node instanceof Node)) { - throwError2(`The provided value must be an instance of a DOM Node but got ${stringify(node)}`); - } -} -function assertElement(node) { - if (!(node instanceof Element)) { - throwError2(`The provided value must be an element but got ${stringify(node)}`); - } -} -function assertIndexInRange(arr, index) { - assertDefined(arr, "Array must be defined."); - const maxLen = arr.length; - if (index < 0 || index >= maxLen) { - throwError2(`Index expected to be less than ${maxLen} but got ${index}`); - } -} -function assertOneOf(value, ...validValues) { - if (validValues.indexOf(value) !== -1) - return true; - throwError2(`Expected value to be one of ${JSON.stringify(validValues)} but was ${JSON.stringify(value)}.`); -} -function ɵɵdefineInjectable(opts) { - return { - token: opts.token, - providedIn: opts.providedIn || null, - factory: opts.factory, - value: void 0 - }; -} -var defineInjectable = ɵɵdefineInjectable; -function ɵɵdefineInjector(options) { - return { providers: options.providers || [], imports: options.imports || [] }; -} -function getInjectableDef(type) { - return getOwnDefinition(type, NG_PROV_DEF) || getOwnDefinition(type, NG_INJECTABLE_DEF); -} -function isInjectable(type) { - return getInjectableDef(type) !== null; -} -function getOwnDefinition(type, field) { - return type.hasOwnProperty(field) ? type[field] : null; -} -function getInheritedInjectableDef(type) { - const def = type && (type[NG_PROV_DEF] || type[NG_INJECTABLE_DEF]); - if (def) { - ngDevMode && console.warn(`DEPRECATED: DI is instantiating a token "${type.name}" that inherits its @Injectable decorator but does not provide one itself. -This will become an error in a future version of Angular. Please add @Injectable() to the "${type.name}" class.`); - return def; - } else { - return null; - } -} -function getInjectorDef(type) { - return type && (type.hasOwnProperty(NG_INJ_DEF) || type.hasOwnProperty(NG_INJECTOR_DEF)) ? type[NG_INJ_DEF] : null; -} -var NG_PROV_DEF = getClosureSafeProperty({ ɵprov: getClosureSafeProperty }); -var NG_INJ_DEF = getClosureSafeProperty({ ɵinj: getClosureSafeProperty }); -var NG_INJECTABLE_DEF = getClosureSafeProperty({ ngInjectableDef: getClosureSafeProperty }); -var NG_INJECTOR_DEF = getClosureSafeProperty({ ngInjectorDef: getClosureSafeProperty }); -var InjectFlags; -(function(InjectFlags2) { - InjectFlags2[InjectFlags2["Default"] = 0] = "Default"; - InjectFlags2[InjectFlags2["Host"] = 1] = "Host"; - InjectFlags2[InjectFlags2["Self"] = 2] = "Self"; - InjectFlags2[InjectFlags2["SkipSelf"] = 4] = "SkipSelf"; - InjectFlags2[InjectFlags2["Optional"] = 8] = "Optional"; -})(InjectFlags || (InjectFlags = {})); -var _injectImplementation; -function getInjectImplementation() { - return _injectImplementation; -} -function setInjectImplementation(impl) { - const previous = _injectImplementation; - _injectImplementation = impl; - return previous; -} -function injectRootLimpMode(token, notFoundValue, flags) { - const injectableDef = getInjectableDef(token); - if (injectableDef && injectableDef.providedIn == "root") { - return injectableDef.value === void 0 ? injectableDef.value = injectableDef.factory() : injectableDef.value; - } - if (flags & InjectFlags.Optional) - return null; - if (notFoundValue !== void 0) - return notFoundValue; - throwProviderNotFoundError(token, "Injector"); -} -function assertInjectImplementationNotEqual(fn) { - ngDevMode && assertNotEqual(_injectImplementation, fn, "Calling ɵɵinject would cause infinite recursion"); -} -var _global = globalThis; -function ngDevModeResetPerfCounters() { - const locationString = typeof location !== "undefined" ? location.toString() : ""; - const newCounters = { - namedConstructors: locationString.indexOf("ngDevMode=namedConstructors") != -1, - firstCreatePass: 0, - tNode: 0, - tView: 0, - rendererCreateTextNode: 0, - rendererSetText: 0, - rendererCreateElement: 0, - rendererAddEventListener: 0, - rendererSetAttribute: 0, - rendererRemoveAttribute: 0, - rendererSetProperty: 0, - rendererSetClassName: 0, - rendererAddClass: 0, - rendererRemoveClass: 0, - rendererSetStyle: 0, - rendererRemoveStyle: 0, - rendererDestroy: 0, - rendererDestroyNode: 0, - rendererMoveNode: 0, - rendererRemoveNode: 0, - rendererAppendChild: 0, - rendererInsertBefore: 0, - rendererCreateComment: 0, - hydratedNodes: 0, - hydratedComponents: 0, - dehydratedViewsRemoved: 0, - dehydratedViewsCleanupRuns: 0, - componentsSkippedHydration: 0 - }; - const allowNgDevModeTrue = locationString.indexOf("ngDevMode=false") === -1; - if (!allowNgDevModeTrue) { - _global["ngDevMode"] = false; - } else { - if (typeof _global["ngDevMode"] !== "object") { - _global["ngDevMode"] = {}; - } - Object.assign(_global["ngDevMode"], newCounters); - } - return newCounters; -} -function initNgDevMode() { - if (typeof ngDevMode === "undefined" || ngDevMode) { - if (typeof ngDevMode !== "object" || Object.keys(ngDevMode).length === 0) { - ngDevModeResetPerfCounters(); - } - return typeof ngDevMode !== "undefined" && !!ngDevMode; - } - return false; -} -var InjectionToken = class { - /** - * @param _desc Description for the token, - * used only for debugging purposes, - * it should but does not need to be unique - * @param options Options for the token's usage, as described above - */ - constructor(_desc, options) { - this._desc = _desc; - this.ngMetadataName = "InjectionToken"; - this.ɵprov = void 0; - if (typeof options == "number") { - (typeof ngDevMode === "undefined" || ngDevMode) && assertLessThan(options, 0, "Only negative numbers are supported here"); - this.__NG_ELEMENT_ID__ = options; - } else if (options !== void 0) { - this.ɵprov = ɵɵdefineInjectable({ - token: this, - providedIn: options.providedIn || "root", - factory: options.factory - }); - } - } - /** - * @internal - */ - get multi() { - return this; - } - toString() { - return `InjectionToken ${this._desc}`; - } -}; -var _injectorProfilerContext; -function getInjectorProfilerContext() { - !ngDevMode && throwError2("getInjectorProfilerContext should never be called in production mode"); - return _injectorProfilerContext; -} -function setInjectorProfilerContext(context2) { - !ngDevMode && throwError2("setInjectorProfilerContext should never be called in production mode"); - const previous = _injectorProfilerContext; - _injectorProfilerContext = context2; - return previous; -} -var injectorProfilerCallback = null; -var setInjectorProfiler = (injectorProfiler2) => { - !ngDevMode && throwError2("setInjectorProfiler should never be called in production mode"); - injectorProfilerCallback = injectorProfiler2; -}; -function injectorProfiler(event) { - !ngDevMode && throwError2("Injector profiler should never be called in production mode"); - if (injectorProfilerCallback != null) { - injectorProfilerCallback(event); - } -} -function emitProviderConfiguredEvent(eventProvider, isViewProvider = false) { - !ngDevMode && throwError2("Injector profiler should never be called in production mode"); - let token; - if (typeof eventProvider === "function") { - token = eventProvider; - } else if (eventProvider instanceof InjectionToken) { - token = eventProvider; - } else { - token = resolveForwardRef(eventProvider.provide); - } - let provider = eventProvider; - if (eventProvider instanceof InjectionToken) { - provider = eventProvider.ɵprov || eventProvider; - } - injectorProfiler({ - type: 2, - context: getInjectorProfilerContext(), - providerRecord: { token, provider, isViewProvider } - }); -} -function emitInstanceCreatedByInjectorEvent(instance) { - !ngDevMode && throwError2("Injector profiler should never be called in production mode"); - injectorProfiler({ - type: 1, - context: getInjectorProfilerContext(), - instance: { value: instance } - }); -} -function emitInjectEvent(token, value, flags) { - !ngDevMode && throwError2("Injector profiler should never be called in production mode"); - injectorProfiler({ - type: 0, - context: getInjectorProfilerContext(), - service: { token, value, flags } - }); -} -function runInInjectorProfilerContext(injector, token, callback) { - !ngDevMode && throwError2("runInInjectorProfilerContext should never be called in production mode"); - const prevInjectContext = setInjectorProfilerContext({ injector, token }); - try { - callback(); - } finally { - setInjectorProfilerContext(prevInjectContext); - } -} -var _THROW_IF_NOT_FOUND = {}; -var THROW_IF_NOT_FOUND = _THROW_IF_NOT_FOUND; -var DI_DECORATOR_FLAG = "__NG_DI_FLAG__"; -var NG_TEMP_TOKEN_PATH = "ngTempTokenPath"; -var NG_TOKEN_PATH = "ngTokenPath"; -var NEW_LINE = /\n/gm; -var NO_NEW_LINE = "ɵ"; -var SOURCE = "__source"; -var _currentInjector = void 0; -function getCurrentInjector() { - return _currentInjector; -} -function setCurrentInjector(injector) { - const former = _currentInjector; - _currentInjector = injector; - return former; -} -function injectInjectorOnly(token, flags = InjectFlags.Default) { - if (_currentInjector === void 0) { - throw new RuntimeError(-203, ngDevMode && `inject() must be called from an injection context such as a constructor, a factory function, a field initializer, or a function used with \`runInInjectionContext\`.`); - } else if (_currentInjector === null) { - return injectRootLimpMode(token, void 0, flags); - } else { - const value = _currentInjector.get(token, flags & InjectFlags.Optional ? null : void 0, flags); - ngDevMode && emitInjectEvent(token, value, flags); - return value; - } -} -function ɵɵinject(token, flags = InjectFlags.Default) { - return (getInjectImplementation() || injectInjectorOnly)(resolveForwardRef(token), flags); -} -function ɵɵinvalidFactoryDep(index) { - throw new RuntimeError(202, ngDevMode && `This constructor is not compatible with Angular Dependency Injection because its dependency at index ${index} of the parameter list is invalid. -This can happen if the dependency type is a primitive like a string or if an ancestor of this class is missing an Angular decorator. - -Please check that 1) the type for the parameter at index ${index} is correct and 2) the correct Angular decorators are defined for this class and its ancestors.`); -} -function inject(token, flags = InjectFlags.Default) { - return ɵɵinject(token, convertToBitFlags(flags)); -} -function convertToBitFlags(flags) { - if (typeof flags === "undefined" || typeof flags === "number") { - return flags; - } - return 0 | // comment to force a line break in the formatter - (flags.optional && 8) | (flags.host && 1) | (flags.self && 2) | (flags.skipSelf && 4); -} -function injectArgs(types) { - const args = []; - for (let i = 0; i < types.length; i++) { - const arg = resolveForwardRef(types[i]); - if (Array.isArray(arg)) { - if (arg.length === 0) { - throw new RuntimeError(900, ngDevMode && "Arguments array must have arguments."); - } - let type = void 0; - let flags = InjectFlags.Default; - for (let j = 0; j < arg.length; j++) { - const meta = arg[j]; - const flag = getInjectFlag(meta); - if (typeof flag === "number") { - if (flag === -1) { - type = meta.token; - } else { - flags |= flag; - } - } else { - type = meta; - } - } - args.push(ɵɵinject(type, flags)); - } else { - args.push(ɵɵinject(arg)); - } - } - return args; -} -function attachInjectFlag(decorator, flag) { - decorator[DI_DECORATOR_FLAG] = flag; - decorator.prototype[DI_DECORATOR_FLAG] = flag; - return decorator; -} -function getInjectFlag(token) { - return token[DI_DECORATOR_FLAG]; -} -function catchInjectorError(e, token, injectorErrorName, source) { - const tokenPath = e[NG_TEMP_TOKEN_PATH]; - if (token[SOURCE]) { - tokenPath.unshift(token[SOURCE]); - } - e.message = formatError("\n" + e.message, tokenPath, injectorErrorName, source); - e[NG_TOKEN_PATH] = tokenPath; - e[NG_TEMP_TOKEN_PATH] = null; - throw e; -} -function formatError(text, obj, injectorErrorName, source = null) { - text = text && text.charAt(0) === "\n" && text.charAt(1) == NO_NEW_LINE ? text.slice(2) : text; - let context2 = stringify(obj); - if (Array.isArray(obj)) { - context2 = obj.map(stringify).join(" -> "); - } else if (typeof obj === "object") { - let parts = []; - for (let key in obj) { - if (obj.hasOwnProperty(key)) { - let value = obj[key]; - parts.push(key + ":" + (typeof value === "string" ? JSON.stringify(value) : stringify(value))); - } - } - context2 = `{${parts.join(", ")}}`; - } - return `${injectorErrorName}${source ? "(" + source + ")" : ""}[${context2}]: ${text.replace(NEW_LINE, "\n ")}`; -} -function noSideEffects(fn) { - return { toString: fn }.toString(); -} -var ChangeDetectionStrategy; -(function(ChangeDetectionStrategy2) { - ChangeDetectionStrategy2[ChangeDetectionStrategy2["OnPush"] = 0] = "OnPush"; - ChangeDetectionStrategy2[ChangeDetectionStrategy2["Default"] = 1] = "Default"; -})(ChangeDetectionStrategy || (ChangeDetectionStrategy = {})); -var ViewEncapsulation$1; -(function(ViewEncapsulation2) { - ViewEncapsulation2[ViewEncapsulation2["Emulated"] = 0] = "Emulated"; - ViewEncapsulation2[ViewEncapsulation2["None"] = 2] = "None"; - ViewEncapsulation2[ViewEncapsulation2["ShadowDom"] = 3] = "ShadowDom"; -})(ViewEncapsulation$1 || (ViewEncapsulation$1 = {})); -var EMPTY_OBJ = {}; -var EMPTY_ARRAY = []; -if ((typeof ngDevMode === "undefined" || ngDevMode) && initNgDevMode()) { - Object.freeze(EMPTY_OBJ); - Object.freeze(EMPTY_ARRAY); -} -var InputFlags; -(function(InputFlags2) { - InputFlags2[InputFlags2["None"] = 0] = "None"; - InputFlags2[InputFlags2["SignalBased"] = 1] = "SignalBased"; - InputFlags2[InputFlags2["HasDecoratorInputTransform"] = 2] = "HasDecoratorInputTransform"; -})(InputFlags || (InputFlags = {})); -function classIndexOf(className, classToSearch, startingIndex) { - ngDevMode && assertNotEqual(classToSearch, "", 'can not look for "" string.'); - let end = className.length; - while (true) { - const foundIndex = className.indexOf(classToSearch, startingIndex); - if (foundIndex === -1) - return foundIndex; - if (foundIndex === 0 || className.charCodeAt(foundIndex - 1) <= 32) { - const length = classToSearch.length; - if (foundIndex + length === end || className.charCodeAt(foundIndex + length) <= 32) { - return foundIndex; - } - } - startingIndex = foundIndex + 1; - } -} -function setUpAttributes(renderer, native, attrs) { - let i = 0; - while (i < attrs.length) { - const value = attrs[i]; - if (typeof value === "number") { - if (value !== 0) { - break; - } - i++; - const namespaceURI = attrs[i++]; - const attrName = attrs[i++]; - const attrVal = attrs[i++]; - ngDevMode && ngDevMode.rendererSetAttribute++; - renderer.setAttribute(native, attrName, attrVal, namespaceURI); - } else { - const attrName = value; - const attrVal = attrs[++i]; - ngDevMode && ngDevMode.rendererSetAttribute++; - if (isAnimationProp(attrName)) { - renderer.setProperty(native, attrName, attrVal); - } else { - renderer.setAttribute(native, attrName, attrVal); - } - i++; - } - } - return i; -} -function isNameOnlyAttributeMarker(marker) { - return marker === 3 || marker === 4 || marker === 6; -} -function isAnimationProp(name) { - return name.charCodeAt(0) === 64; -} -function mergeHostAttrs(dst, src) { - if (src === null || src.length === 0) { - } else if (dst === null || dst.length === 0) { - dst = src.slice(); - } else { - let srcMarker = -1; - for (let i = 0; i < src.length; i++) { - const item = src[i]; - if (typeof item === "number") { - srcMarker = item; - } else { - if (srcMarker === 0) { - } else if (srcMarker === -1 || srcMarker === 2) { - mergeHostAttribute(dst, srcMarker, item, null, src[++i]); - } else { - mergeHostAttribute(dst, srcMarker, item, null, null); - } - } - } - } - return dst; -} -function mergeHostAttribute(dst, marker, key1, key2, value) { - let i = 0; - let markerInsertPosition = dst.length; - if (marker === -1) { - markerInsertPosition = -1; - } else { - while (i < dst.length) { - const dstValue = dst[i++]; - if (typeof dstValue === "number") { - if (dstValue === marker) { - markerInsertPosition = -1; - break; - } else if (dstValue > marker) { - markerInsertPosition = i - 1; - break; - } - } - } - } - while (i < dst.length) { - const item = dst[i]; - if (typeof item === "number") { - break; - } else if (item === key1) { - if (key2 === null) { - if (value !== null) { - dst[i + 1] = value; - } - return; - } else if (key2 === dst[i + 1]) { - dst[i + 2] = value; - return; - } - } - i++; - if (key2 !== null) - i++; - if (value !== null) - i++; - } - if (markerInsertPosition !== -1) { - dst.splice(markerInsertPosition, 0, marker); - i = markerInsertPosition + 1; - } - dst.splice(i++, 0, key1); - if (key2 !== null) { - dst.splice(i++, 0, key2); - } - if (value !== null) { - dst.splice(i++, 0, value); - } -} -var NG_TEMPLATE_SELECTOR = "ng-template"; -function isCssClassMatching(attrs, cssClassToMatch, isProjectionMode) { - ngDevMode && assertEqual(cssClassToMatch, cssClassToMatch.toLowerCase(), "Class name expected to be lowercase."); - let i = 0; - let isImplicitAttrsSection = true; - while (i < attrs.length) { - let item = attrs[i++]; - if (typeof item === "string" && isImplicitAttrsSection) { - const value = attrs[i++]; - if (isProjectionMode && item === "class") { - if (classIndexOf(value.toLowerCase(), cssClassToMatch, 0) !== -1) { - return true; - } - } - } else if (item === 1) { - while (i < attrs.length && typeof (item = attrs[i++]) == "string") { - if (item.toLowerCase() === cssClassToMatch) - return true; - } - return false; - } else if (typeof item === "number") { - isImplicitAttrsSection = false; - } - } - return false; -} -function isInlineTemplate(tNode) { - return tNode.type === 4 && tNode.value !== NG_TEMPLATE_SELECTOR; -} -function hasTagAndTypeMatch(tNode, currentSelector, isProjectionMode) { - const tagNameToCompare = tNode.type === 4 && !isProjectionMode ? NG_TEMPLATE_SELECTOR : tNode.value; - return currentSelector === tagNameToCompare; -} -function isNodeMatchingSelector(tNode, selector, isProjectionMode) { - ngDevMode && assertDefined(selector[0], "Selector should have a tag name"); - let mode = 4; - const nodeAttrs = tNode.attrs || []; - const nameOnlyMarkerIdx = getNameOnlyMarkerIndex(nodeAttrs); - let skipToNextSelector = false; - for (let i = 0; i < selector.length; i++) { - const current = selector[i]; - if (typeof current === "number") { - if (!skipToNextSelector && !isPositive(mode) && !isPositive(current)) { - return false; - } - if (skipToNextSelector && isPositive(current)) - continue; - skipToNextSelector = false; - mode = current | mode & 1; - continue; - } - if (skipToNextSelector) - continue; - if (mode & 4) { - mode = 2 | mode & 1; - if (current !== "" && !hasTagAndTypeMatch(tNode, current, isProjectionMode) || current === "" && selector.length === 1) { - if (isPositive(mode)) - return false; - skipToNextSelector = true; - } - } else { - const selectorAttrValue = mode & 8 ? current : selector[++i]; - if (mode & 8 && tNode.attrs !== null) { - if (!isCssClassMatching(tNode.attrs, selectorAttrValue, isProjectionMode)) { - if (isPositive(mode)) - return false; - skipToNextSelector = true; - } - continue; - } - const attrName = mode & 8 ? "class" : current; - const attrIndexInNode = findAttrIndexInNode(attrName, nodeAttrs, isInlineTemplate(tNode), isProjectionMode); - if (attrIndexInNode === -1) { - if (isPositive(mode)) - return false; - skipToNextSelector = true; - continue; - } - if (selectorAttrValue !== "") { - let nodeAttrValue; - if (attrIndexInNode > nameOnlyMarkerIdx) { - nodeAttrValue = ""; - } else { - ngDevMode && assertNotEqual(nodeAttrs[attrIndexInNode], 0, "We do not match directives on namespaced attributes"); - nodeAttrValue = nodeAttrs[attrIndexInNode + 1].toLowerCase(); - } - const compareAgainstClassName = mode & 8 ? nodeAttrValue : null; - if (compareAgainstClassName && classIndexOf(compareAgainstClassName, selectorAttrValue, 0) !== -1 || mode & 2 && selectorAttrValue !== nodeAttrValue) { - if (isPositive(mode)) - return false; - skipToNextSelector = true; - } - } - } - } - return isPositive(mode) || skipToNextSelector; -} -function isPositive(mode) { - return (mode & 1) === 0; -} -function findAttrIndexInNode(name, attrs, isInlineTemplate2, isProjectionMode) { - if (attrs === null) - return -1; - let i = 0; - if (isProjectionMode || !isInlineTemplate2) { - let bindingsMode = false; - while (i < attrs.length) { - const maybeAttrName = attrs[i]; - if (maybeAttrName === name) { - return i; - } else if (maybeAttrName === 3 || maybeAttrName === 6) { - bindingsMode = true; - } else if (maybeAttrName === 1 || maybeAttrName === 2) { - let value = attrs[++i]; - while (typeof value === "string") { - value = attrs[++i]; - } - continue; - } else if (maybeAttrName === 4) { - break; - } else if (maybeAttrName === 0) { - i += 4; - continue; - } - i += bindingsMode ? 1 : 2; - } - return -1; - } else { - return matchTemplateAttribute(attrs, name); - } -} -function isNodeMatchingSelectorList(tNode, selector, isProjectionMode = false) { - for (let i = 0; i < selector.length; i++) { - if (isNodeMatchingSelector(tNode, selector[i], isProjectionMode)) { - return true; - } - } - return false; -} -function getProjectAsAttrValue(tNode) { - const nodeAttrs = tNode.attrs; - if (nodeAttrs != null) { - const ngProjectAsAttrIdx = nodeAttrs.indexOf( - 5 - /* AttributeMarker.ProjectAs */ - ); - if ((ngProjectAsAttrIdx & 1) === 0) { - return nodeAttrs[ngProjectAsAttrIdx + 1]; - } - } - return null; -} -function getNameOnlyMarkerIndex(nodeAttrs) { - for (let i = 0; i < nodeAttrs.length; i++) { - const nodeAttr = nodeAttrs[i]; - if (isNameOnlyAttributeMarker(nodeAttr)) { - return i; - } - } - return nodeAttrs.length; -} -function matchTemplateAttribute(attrs, name) { - let i = attrs.indexOf( - 4 - /* AttributeMarker.Template */ - ); - if (i > -1) { - i++; - while (i < attrs.length) { - const attr = attrs[i]; - if (typeof attr === "number") - return -1; - if (attr === name) - return i; - i++; - } - } - return -1; -} -function isSelectorInSelectorList(selector, list) { - selectorListLoop: - for (let i = 0; i < list.length; i++) { - const currentSelectorInList = list[i]; - if (selector.length !== currentSelectorInList.length) { - continue; - } - for (let j = 0; j < selector.length; j++) { - if (selector[j] !== currentSelectorInList[j]) { - continue selectorListLoop; - } - } - return true; - } - return false; -} -function maybeWrapInNotSelector(isNegativeMode, chunk) { - return isNegativeMode ? ":not(" + chunk.trim() + ")" : chunk; -} -function stringifyCSSSelector(selector) { - let result = selector[0]; - let i = 1; - let mode = 2; - let currentChunk = ""; - let isNegativeMode = false; - while (i < selector.length) { - let valueOrMarker = selector[i]; - if (typeof valueOrMarker === "string") { - if (mode & 2) { - const attrValue = selector[++i]; - currentChunk += "[" + valueOrMarker + (attrValue.length > 0 ? '="' + attrValue + '"' : "") + "]"; - } else if (mode & 8) { - currentChunk += "." + valueOrMarker; - } else if (mode & 4) { - currentChunk += " " + valueOrMarker; - } - } else { - if (currentChunk !== "" && !isPositive(valueOrMarker)) { - result += maybeWrapInNotSelector(isNegativeMode, currentChunk); - currentChunk = ""; - } - mode = valueOrMarker; - isNegativeMode = isNegativeMode || !isPositive(mode); - } - i++; - } - if (currentChunk !== "") { - result += maybeWrapInNotSelector(isNegativeMode, currentChunk); - } - return result; -} -function stringifyCSSSelectorList(selectorList) { - return selectorList.map(stringifyCSSSelector).join(","); -} -function extractAttrsAndClassesFromSelector(selector) { - const attrs = []; - const classes = []; - let i = 1; - let mode = 2; - while (i < selector.length) { - let valueOrMarker = selector[i]; - if (typeof valueOrMarker === "string") { - if (mode === 2) { - if (valueOrMarker !== "") { - attrs.push(valueOrMarker, selector[++i]); - } - } else if (mode === 8) { - classes.push(valueOrMarker); - } - } else { - if (!isPositive(mode)) - break; - mode = valueOrMarker; - } - i++; - } - return { attrs, classes }; -} -function ɵɵdefineComponent(componentDefinition) { - return noSideEffects(() => { - (typeof ngDevMode === "undefined" || ngDevMode) && initNgDevMode(); - const baseDef = getNgDirectiveDef(componentDefinition); - const def = __spreadProps(__spreadValues({}, baseDef), { - decls: componentDefinition.decls, - vars: componentDefinition.vars, - template: componentDefinition.template, - consts: componentDefinition.consts || null, - ngContentSelectors: componentDefinition.ngContentSelectors, - onPush: componentDefinition.changeDetection === ChangeDetectionStrategy.OnPush, - directiveDefs: null, - // assigned in noSideEffects - pipeDefs: null, - // assigned in noSideEffects - dependencies: baseDef.standalone && componentDefinition.dependencies || null, - getStandaloneInjector: null, - signals: componentDefinition.signals ?? false, - data: componentDefinition.data || {}, - encapsulation: componentDefinition.encapsulation || ViewEncapsulation$1.Emulated, - styles: componentDefinition.styles || EMPTY_ARRAY, - _: null, - schemas: componentDefinition.schemas || null, - tView: null, - id: "" - }); - initFeatures(def); - const dependencies = componentDefinition.dependencies; - def.directiveDefs = extractDefListOrFactory( - dependencies, - /* pipeDef */ - false - ); - def.pipeDefs = extractDefListOrFactory( - dependencies, - /* pipeDef */ - true - ); - def.id = getComponentId(def); - return def; - }); -} -function extractDirectiveDef(type) { - return getComponentDef(type) || getDirectiveDef(type); -} -function nonNull(value) { - return value !== null; -} -function ɵɵdefineNgModule(def) { - return noSideEffects(() => { - const res = { - type: def.type, - bootstrap: def.bootstrap || EMPTY_ARRAY, - declarations: def.declarations || EMPTY_ARRAY, - imports: def.imports || EMPTY_ARRAY, - exports: def.exports || EMPTY_ARRAY, - transitiveCompileScopes: null, - schemas: def.schemas || null, - id: def.id || null - }; - return res; - }); -} -function parseAndConvertBindingsForDefinition(obj, declaredInputs) { - if (obj == null) - return EMPTY_OBJ; - const newLookup = {}; - for (const minifiedKey in obj) { - if (obj.hasOwnProperty(minifiedKey)) { - const value = obj[minifiedKey]; - let publicName; - let declaredName; - let inputFlags = InputFlags.None; - if (Array.isArray(value)) { - inputFlags = value[0]; - publicName = value[1]; - declaredName = value[2] ?? publicName; - } else { - publicName = value; - declaredName = value; - } - if (declaredInputs) { - newLookup[publicName] = inputFlags !== InputFlags.None ? [minifiedKey, inputFlags] : minifiedKey; - declaredInputs[publicName] = declaredName; - } else { - newLookup[publicName] = minifiedKey; - } - } - } - return newLookup; -} -function ɵɵdefineDirective(directiveDefinition) { - return noSideEffects(() => { - const def = getNgDirectiveDef(directiveDefinition); - initFeatures(def); - return def; - }); -} -function ɵɵdefinePipe(pipeDef) { - return { - type: pipeDef.type, - name: pipeDef.name, - factory: null, - pure: pipeDef.pure !== false, - standalone: pipeDef.standalone === true, - onDestroy: pipeDef.type.prototype.ngOnDestroy || null - }; -} -function getComponentDef(type) { - return type[NG_COMP_DEF] || null; -} -function getDirectiveDef(type) { - return type[NG_DIR_DEF] || null; -} -function getPipeDef$1(type) { - return type[NG_PIPE_DEF] || null; -} -function isStandalone(type) { - const def = getComponentDef(type) || getDirectiveDef(type) || getPipeDef$1(type); - return def !== null ? def.standalone : false; -} -function getNgModuleDef(type, throwNotFound) { - const ngModuleDef = type[NG_MOD_DEF] || null; - if (!ngModuleDef && throwNotFound === true) { - throw new Error(`Type ${stringify(type)} does not have 'ɵmod' property.`); - } - return ngModuleDef; -} -function getNgDirectiveDef(directiveDefinition) { - const declaredInputs = {}; - return { - type: directiveDefinition.type, - providersResolver: null, - factory: null, - hostBindings: directiveDefinition.hostBindings || null, - hostVars: directiveDefinition.hostVars || 0, - hostAttrs: directiveDefinition.hostAttrs || null, - contentQueries: directiveDefinition.contentQueries || null, - declaredInputs, - inputTransforms: null, - inputConfig: directiveDefinition.inputs || EMPTY_OBJ, - exportAs: directiveDefinition.exportAs || null, - standalone: directiveDefinition.standalone === true, - signals: directiveDefinition.signals === true, - selectors: directiveDefinition.selectors || EMPTY_ARRAY, - viewQuery: directiveDefinition.viewQuery || null, - features: directiveDefinition.features || null, - setInput: null, - findHostDirectiveDefs: null, - hostDirectives: null, - inputs: parseAndConvertBindingsForDefinition(directiveDefinition.inputs, declaredInputs), - outputs: parseAndConvertBindingsForDefinition(directiveDefinition.outputs), - debugInfo: null - }; -} -function initFeatures(definition) { - definition.features?.forEach((fn) => fn(definition)); -} -function extractDefListOrFactory(dependencies, pipeDef) { - if (!dependencies) { - return null; - } - const defExtractor = pipeDef ? getPipeDef$1 : extractDirectiveDef; - return () => (typeof dependencies === "function" ? dependencies() : dependencies).map((dep) => defExtractor(dep)).filter(nonNull); -} -var GENERATED_COMP_IDS = /* @__PURE__ */ new Map(); -function getComponentId(componentDef) { - let hash = 0; - const hashSelectors = [ - componentDef.selectors, - componentDef.ngContentSelectors, - componentDef.hostVars, - componentDef.hostAttrs, - componentDef.consts, - componentDef.vars, - componentDef.decls, - componentDef.encapsulation, - componentDef.standalone, - componentDef.signals, - componentDef.exportAs, - JSON.stringify(componentDef.inputs), - JSON.stringify(componentDef.outputs), - // We cannot use 'componentDef.type.name' as the name of the symbol will change and will not - // match in the server and browser bundles. - Object.getOwnPropertyNames(componentDef.type.prototype), - !!componentDef.contentQueries, - !!componentDef.viewQuery - ].join("|"); - for (const char of hashSelectors) { - hash = Math.imul(31, hash) + char.charCodeAt(0) << 0; - } - hash += 2147483647 + 1; - const compId = "c" + hash; - if (typeof ngDevMode === "undefined" || ngDevMode) { - if (GENERATED_COMP_IDS.has(compId)) { - const previousCompDefType = GENERATED_COMP_IDS.get(compId); - if (previousCompDefType !== componentDef.type) { - console.warn(formatRuntimeError(-912, `Component ID generation collision detected. Components '${previousCompDefType.name}' and '${componentDef.type.name}' with selector '${stringifyCSSSelectorList(componentDef.selectors)}' generated the same component ID. To fix this, you can change the selector of one of those components or add an extra host attribute to force a different ID.`)); - } - } else { - GENERATED_COMP_IDS.set(compId, componentDef.type); - } - } - return compId; -} -var HOST = 0; -var TVIEW = 1; -var FLAGS = 2; -var PARENT = 3; -var NEXT = 4; -var T_HOST = 5; -var HYDRATION = 6; -var CLEANUP = 7; -var CONTEXT = 8; -var INJECTOR$1 = 9; -var ENVIRONMENT = 10; -var RENDERER = 11; -var CHILD_HEAD = 12; -var CHILD_TAIL = 13; -var DECLARATION_VIEW = 14; -var DECLARATION_COMPONENT_VIEW = 15; -var DECLARATION_LCONTAINER = 16; -var PREORDER_HOOK_FLAGS = 17; -var QUERIES = 18; -var ID = 19; -var EMBEDDED_VIEW_INJECTOR = 20; -var ON_DESTROY_HOOKS = 21; -var EFFECTS_TO_SCHEDULE = 22; -var REACTIVE_TEMPLATE_CONSUMER = 23; -var HEADER_OFFSET = 25; -var TYPE = 1; -var DEHYDRATED_VIEWS = 6; -var NATIVE = 7; -var VIEW_REFS = 8; -var MOVED_VIEWS = 9; -var CONTAINER_HEADER_OFFSET = 10; -var LContainerFlags; -(function(LContainerFlags2) { - LContainerFlags2[LContainerFlags2["None"] = 0] = "None"; - LContainerFlags2[LContainerFlags2["HasTransplantedViews"] = 2] = "HasTransplantedViews"; -})(LContainerFlags || (LContainerFlags = {})); -function isLView(value) { - return Array.isArray(value) && typeof value[TYPE] === "object"; -} -function isLContainer(value) { - return Array.isArray(value) && value[TYPE] === true; -} -function isContentQueryHost(tNode) { - return (tNode.flags & 4) !== 0; -} -function isComponentHost(tNode) { - return tNode.componentOffset > -1; -} -function isDirectiveHost(tNode) { - return (tNode.flags & 1) === 1; -} -function isComponentDef(def) { - return !!def.template; -} -function isRootView(target) { - return (target[FLAGS] & 512) !== 0; -} -function isProjectionTNode(tNode) { - return (tNode.type & 16) === 16; -} -function hasI18n(lView) { - return (lView[FLAGS] & 32) === 32; -} -function isDestroyed(lView) { - return (lView[FLAGS] & 256) === 256; -} -function assertTNodeForLView(tNode, lView) { - assertTNodeForTView(tNode, lView[TVIEW]); -} -function assertTNodeForTView(tNode, tView) { - assertTNode(tNode); - const tData = tView.data; - for (let i = HEADER_OFFSET; i < tData.length; i++) { - if (tData[i] === tNode) { - return; - } - } - throwError2("This TNode does not belong to this TView."); -} -function assertTNode(tNode) { - assertDefined(tNode, "TNode must be defined"); - if (!(tNode && typeof tNode === "object" && tNode.hasOwnProperty("directiveStylingLast"))) { - throwError2("Not of type TNode, got: " + tNode); - } -} -function assertTIcu(tIcu) { - assertDefined(tIcu, "Expected TIcu to be defined"); - if (!(typeof tIcu.currentCaseLViewIndex === "number")) { - throwError2("Object is not of TIcu type."); - } -} -function assertComponentType(actual, msg = "Type passed in is not ComponentType, it does not have 'ɵcmp' property.") { - if (!getComponentDef(actual)) { - throwError2(msg); - } -} -function assertNgModuleType(actual, msg = "Type passed in is not NgModuleType, it does not have 'ɵmod' property.") { - if (!getNgModuleDef(actual)) { - throwError2(msg); - } -} -function assertHasParent(tNode) { - assertDefined(tNode, "currentTNode should exist!"); - assertDefined(tNode.parent, "currentTNode should have a parent"); -} -function assertLContainer(value) { - assertDefined(value, "LContainer must be defined"); - assertEqual(isLContainer(value), true, "Expecting LContainer"); -} -function assertLViewOrUndefined(value) { - value && assertEqual(isLView(value), true, "Expecting LView or undefined or null"); -} -function assertLView(value) { - assertDefined(value, "LView must be defined"); - assertEqual(isLView(value), true, "Expecting LView"); -} -function assertFirstCreatePass(tView, errMessage) { - assertEqual(tView.firstCreatePass, true, errMessage || "Should only be called in first create pass."); -} -function assertFirstUpdatePass(tView, errMessage) { - assertEqual(tView.firstUpdatePass, true, errMessage || "Should only be called in first update pass."); -} -function assertDirectiveDef(obj) { - if (obj.type === void 0 || obj.selectors == void 0 || obj.inputs === void 0) { - throwError2(`Expected a DirectiveDef/ComponentDef and this object does not seem to have the expected shape.`); - } -} -function assertIndexInDeclRange(tView, index) { - assertBetween(HEADER_OFFSET, tView.bindingStartIndex, index); -} -function assertIndexInExpandoRange(lView, index) { - const tView = lView[1]; - assertBetween(tView.expandoStartIndex, lView.length, index); -} -function assertBetween(lower, upper, index) { - if (!(lower <= index && index < upper)) { - throwError2(`Index out of range (expecting ${lower} <= ${index} < ${upper})`); - } -} -function assertProjectionSlots(lView, errMessage) { - assertDefined(lView[DECLARATION_COMPONENT_VIEW], "Component views should exist."); - assertDefined(lView[DECLARATION_COMPONENT_VIEW][T_HOST].projection, errMessage || "Components with projection nodes () must have projection slots defined."); -} -function assertParentView(lView, errMessage) { - assertDefined(lView, errMessage || "Component views should always have a parent view (component's host view)"); -} -function assertNoDuplicateDirectives(directives) { - if (directives.length < 2) { - return; - } - const seenDirectives = /* @__PURE__ */ new Set(); - for (const current of directives) { - if (seenDirectives.has(current)) { - throw new RuntimeError(309, `Directive ${current.type.name} matches multiple times on the same element. Directives can only match an element once.`); - } - seenDirectives.add(current); - } -} -function assertNodeInjector(lView, injectorIndex) { - assertIndexInExpandoRange(lView, injectorIndex); - assertIndexInExpandoRange( - lView, - injectorIndex + 8 - /* NodeInjectorOffset.PARENT */ - ); - assertNumber(lView[injectorIndex + 0], "injectorIndex should point to a bloom filter"); - assertNumber(lView[injectorIndex + 1], "injectorIndex should point to a bloom filter"); - assertNumber(lView[injectorIndex + 2], "injectorIndex should point to a bloom filter"); - assertNumber(lView[injectorIndex + 3], "injectorIndex should point to a bloom filter"); - assertNumber(lView[injectorIndex + 4], "injectorIndex should point to a bloom filter"); - assertNumber(lView[injectorIndex + 5], "injectorIndex should point to a bloom filter"); - assertNumber(lView[injectorIndex + 6], "injectorIndex should point to a bloom filter"); - assertNumber(lView[injectorIndex + 7], "injectorIndex should point to a bloom filter"); - assertNumber(lView[ - injectorIndex + 8 - /* NodeInjectorOffset.PARENT */ - ], "injectorIndex should point to parent injector"); -} -function getFactoryDef(type, throwNotFound) { - const hasFactoryDef = type.hasOwnProperty(NG_FACTORY_DEF); - if (!hasFactoryDef && throwNotFound === true && ngDevMode) { - throw new Error(`Type ${stringify(type)} does not have 'ɵfac' property.`); - } - return hasFactoryDef ? type[NG_FACTORY_DEF] : null; -} -var SimpleChange = class { - constructor(previousValue, currentValue, firstChange) { - this.previousValue = previousValue; - this.currentValue = currentValue; - this.firstChange = firstChange; - } - /** - * Check whether the new value is the first value assigned. - */ - isFirstChange() { - return this.firstChange; - } -}; -function applyValueToInputField(instance, inputSignalNode, privateName, value) { - if (inputSignalNode !== null) { - inputSignalNode.applyValueToInputSignal(inputSignalNode, value); - } else { - instance[privateName] = value; - } -} -function ɵɵNgOnChangesFeature() { - return NgOnChangesFeatureImpl; -} -function NgOnChangesFeatureImpl(definition) { - if (definition.type.prototype.ngOnChanges) { - definition.setInput = ngOnChangesSetInput; - } - return rememberChangeHistoryAndInvokeOnChangesHook; -} -ɵɵNgOnChangesFeature.ngInherit = true; -function rememberChangeHistoryAndInvokeOnChangesHook() { - const simpleChangesStore = getSimpleChangesStore(this); - const current = simpleChangesStore?.current; - if (current) { - const previous = simpleChangesStore.previous; - if (previous === EMPTY_OBJ) { - simpleChangesStore.previous = current; - } else { - for (let key in current) { - previous[key] = current[key]; - } - } - simpleChangesStore.current = null; - this.ngOnChanges(current); - } -} -function ngOnChangesSetInput(instance, inputSignalNode, value, publicName, privateName) { - const declaredName = this.declaredInputs[publicName]; - ngDevMode && assertString(declaredName, "Name of input in ngOnChanges has to be a string"); - const simpleChangesStore = getSimpleChangesStore(instance) || setSimpleChangesStore(instance, { previous: EMPTY_OBJ, current: null }); - const current = simpleChangesStore.current || (simpleChangesStore.current = {}); - const previous = simpleChangesStore.previous; - const previousChange = previous[declaredName]; - current[declaredName] = new SimpleChange(previousChange && previousChange.currentValue, value, previous === EMPTY_OBJ); - applyValueToInputField(instance, inputSignalNode, privateName, value); -} -var SIMPLE_CHANGES_STORE = "__ngSimpleChanges__"; -function getSimpleChangesStore(instance) { - return instance[SIMPLE_CHANGES_STORE] || null; -} -function setSimpleChangesStore(instance, store2) { - return instance[SIMPLE_CHANGES_STORE] = store2; -} -var profilerCallback = null; -var setProfiler = (profiler2) => { - profilerCallback = profiler2; -}; -var profiler = function(event, instance, hookOrListener) { - if (profilerCallback != null) { - profilerCallback(event, instance, hookOrListener); - } -}; -var SVG_NAMESPACE = "svg"; -var MATH_ML_NAMESPACE = "math"; -var _ensureDirtyViewsAreAlwaysReachable = false; -function getEnsureDirtyViewsAreAlwaysReachable() { - return _ensureDirtyViewsAreAlwaysReachable; -} -function setEnsureDirtyViewsAreAlwaysReachable(v) { - _ensureDirtyViewsAreAlwaysReachable = v; -} -function unwrapRNode(value) { - while (Array.isArray(value)) { - value = value[HOST]; - } - return value; -} -function unwrapLView(value) { - while (Array.isArray(value)) { - if (typeof value[TYPE] === "object") - return value; - value = value[HOST]; - } - return null; -} -function getNativeByIndex(index, lView) { - ngDevMode && assertIndexInRange(lView, index); - ngDevMode && assertGreaterThanOrEqual(index, HEADER_OFFSET, "Expected to be past HEADER_OFFSET"); - return unwrapRNode(lView[index]); -} -function getNativeByTNode(tNode, lView) { - ngDevMode && assertTNodeForLView(tNode, lView); - ngDevMode && assertIndexInRange(lView, tNode.index); - const node = unwrapRNode(lView[tNode.index]); - return node; -} -function getNativeByTNodeOrNull(tNode, lView) { - const index = tNode === null ? -1 : tNode.index; - if (index !== -1) { - ngDevMode && assertTNodeForLView(tNode, lView); - const node = unwrapRNode(lView[index]); - return node; - } - return null; -} -function getTNode(tView, index) { - ngDevMode && assertGreaterThan(index, -1, "wrong index for TNode"); - ngDevMode && assertLessThan(index, tView.data.length, "wrong index for TNode"); - const tNode = tView.data[index]; - ngDevMode && tNode !== null && assertTNode(tNode); - return tNode; -} -function load(view, index) { - ngDevMode && assertIndexInRange(view, index); - return view[index]; -} -function getComponentLViewByIndex(nodeIndex, hostView) { - ngDevMode && assertIndexInRange(hostView, nodeIndex); - const slotValue = hostView[nodeIndex]; - const lView = isLView(slotValue) ? slotValue : slotValue[HOST]; - return lView; -} -function isCreationMode(view) { - return (view[FLAGS] & 4) === 4; -} -function viewAttachedToChangeDetector(view) { - return (view[FLAGS] & 128) === 128; -} -function viewAttachedToContainer(view) { - return isLContainer(view[PARENT]); -} -function getConstant(consts, index) { - if (index === null || index === void 0) - return null; - ngDevMode && assertIndexInRange(consts, index); - return consts[index]; -} -function resetPreOrderHookFlags(lView) { - lView[PREORDER_HOOK_FLAGS] = 0; -} -function markViewForRefresh(lView) { - if (lView[FLAGS] & 1024) { - return; - } - lView[FLAGS] |= 1024; - if (viewAttachedToChangeDetector(lView)) { - markAncestorsForTraversal(lView); - } -} -function walkUpViews(nestingLevel, currentView) { - while (nestingLevel > 0) { - ngDevMode && assertDefined(currentView[DECLARATION_VIEW], "Declaration view should be defined if nesting level is greater than 0."); - currentView = currentView[DECLARATION_VIEW]; - nestingLevel--; - } - return currentView; -} -function requiresRefreshOrTraversal(lView) { - return !!(lView[FLAGS] & (1024 | 8192) || lView[REACTIVE_TEMPLATE_CONSUMER]?.dirty); -} -function updateAncestorTraversalFlagsOnAttach(lView) { - if (requiresRefreshOrTraversal(lView)) { - markAncestorsForTraversal(lView); - } else if (lView[FLAGS] & 64) { - if (getEnsureDirtyViewsAreAlwaysReachable()) { - lView[FLAGS] |= 1024; - markAncestorsForTraversal(lView); - } else { - lView[ENVIRONMENT].changeDetectionScheduler?.notify(); - } - } -} -function markAncestorsForTraversal(lView) { - lView[ENVIRONMENT].changeDetectionScheduler?.notify(); - let parent = getLViewParent(lView); - while (parent !== null) { - if (parent[FLAGS] & 8192) { - break; - } - parent[FLAGS] |= 8192; - if (!viewAttachedToChangeDetector(parent)) { - break; - } - parent = getLViewParent(parent); - } -} -function storeLViewOnDestroy(lView, onDestroyCallback) { - if ((lView[FLAGS] & 256) === 256) { - throw new RuntimeError(911, ngDevMode && "View has already been destroyed."); - } - if (lView[ON_DESTROY_HOOKS] === null) { - lView[ON_DESTROY_HOOKS] = []; - } - lView[ON_DESTROY_HOOKS].push(onDestroyCallback); -} -function removeLViewOnDestroy(lView, onDestroyCallback) { - if (lView[ON_DESTROY_HOOKS] === null) - return; - const destroyCBIdx = lView[ON_DESTROY_HOOKS].indexOf(onDestroyCallback); - if (destroyCBIdx !== -1) { - lView[ON_DESTROY_HOOKS].splice(destroyCBIdx, 1); - } -} -function getLViewParent(lView) { - ngDevMode && assertLView(lView); - const parent = lView[PARENT]; - return isLContainer(parent) ? parent[PARENT] : parent; -} -var instructionState = { - lFrame: createLFrame(null), - bindingsEnabled: true, - skipHydrationRootTNode: null -}; -var _isInCheckNoChangesMode = false; -function getElementDepthCount() { - return instructionState.lFrame.elementDepthCount; -} -function increaseElementDepthCount() { - instructionState.lFrame.elementDepthCount++; -} -function decreaseElementDepthCount() { - instructionState.lFrame.elementDepthCount--; -} -function getBindingsEnabled() { - return instructionState.bindingsEnabled; -} -function isInSkipHydrationBlock$1() { - return instructionState.skipHydrationRootTNode !== null; -} -function isSkipHydrationRootTNode(tNode) { - return instructionState.skipHydrationRootTNode === tNode; -} -function ɵɵenableBindings() { - instructionState.bindingsEnabled = true; -} -function enterSkipHydrationBlock(tNode) { - instructionState.skipHydrationRootTNode = tNode; -} -function ɵɵdisableBindings() { - instructionState.bindingsEnabled = false; -} -function leaveSkipHydrationBlock() { - instructionState.skipHydrationRootTNode = null; -} -function getLView() { - return instructionState.lFrame.lView; -} -function getTView() { - return instructionState.lFrame.tView; -} -function ɵɵrestoreView(viewToRestore) { - instructionState.lFrame.contextLView = viewToRestore; - return viewToRestore[CONTEXT]; -} -function ɵɵresetView(value) { - instructionState.lFrame.contextLView = null; - return value; -} -function getCurrentTNode() { - let currentTNode = getCurrentTNodePlaceholderOk(); - while (currentTNode !== null && currentTNode.type === 64) { - currentTNode = currentTNode.parent; - } - return currentTNode; -} -function getCurrentTNodePlaceholderOk() { - return instructionState.lFrame.currentTNode; -} -function getCurrentParentTNode() { - const lFrame = instructionState.lFrame; - const currentTNode = lFrame.currentTNode; - return lFrame.isParent ? currentTNode : currentTNode.parent; -} -function setCurrentTNode(tNode, isParent) { - ngDevMode && tNode && assertTNodeForTView(tNode, instructionState.lFrame.tView); - const lFrame = instructionState.lFrame; - lFrame.currentTNode = tNode; - lFrame.isParent = isParent; -} -function isCurrentTNodeParent() { - return instructionState.lFrame.isParent; -} -function setCurrentTNodeAsNotParent() { - instructionState.lFrame.isParent = false; -} -function getContextLView() { - const contextLView = instructionState.lFrame.contextLView; - ngDevMode && assertDefined(contextLView, "contextLView must be defined."); - return contextLView; -} -function isInCheckNoChangesMode() { - !ngDevMode && throwError2("Must never be called in production mode"); - return _isInCheckNoChangesMode; -} -function setIsInCheckNoChangesMode(mode) { - !ngDevMode && throwError2("Must never be called in production mode"); - _isInCheckNoChangesMode = mode; -} -function getBindingRoot() { - const lFrame = instructionState.lFrame; - let index = lFrame.bindingRootIndex; - if (index === -1) { - index = lFrame.bindingRootIndex = lFrame.tView.bindingStartIndex; - } - return index; -} -function getBindingIndex() { - return instructionState.lFrame.bindingIndex; -} -function setBindingIndex(value) { - return instructionState.lFrame.bindingIndex = value; -} -function nextBindingIndex() { - return instructionState.lFrame.bindingIndex++; -} -function incrementBindingIndex(count2) { - const lFrame = instructionState.lFrame; - const index = lFrame.bindingIndex; - lFrame.bindingIndex = lFrame.bindingIndex + count2; - return index; -} -function isInI18nBlock() { - return instructionState.lFrame.inI18n; -} -function setInI18nBlock(isInI18nBlock2) { - instructionState.lFrame.inI18n = isInI18nBlock2; -} -function setBindingRootForHostBindings(bindingRootIndex, currentDirectiveIndex) { - const lFrame = instructionState.lFrame; - lFrame.bindingIndex = lFrame.bindingRootIndex = bindingRootIndex; - setCurrentDirectiveIndex(currentDirectiveIndex); -} -function getCurrentDirectiveIndex() { - return instructionState.lFrame.currentDirectiveIndex; -} -function setCurrentDirectiveIndex(currentDirectiveIndex) { - instructionState.lFrame.currentDirectiveIndex = currentDirectiveIndex; -} -function getCurrentDirectiveDef(tData) { - const currentDirectiveIndex = instructionState.lFrame.currentDirectiveIndex; - return currentDirectiveIndex === -1 ? null : tData[currentDirectiveIndex]; -} -function getCurrentQueryIndex() { - return instructionState.lFrame.currentQueryIndex; -} -function setCurrentQueryIndex(value) { - instructionState.lFrame.currentQueryIndex = value; -} -function getDeclarationTNode(lView) { - const tView = lView[TVIEW]; - if (tView.type === 2) { - ngDevMode && assertDefined(tView.declTNode, "Embedded TNodes should have declaration parents."); - return tView.declTNode; - } - if (tView.type === 1) { - return lView[T_HOST]; - } - return null; -} -function enterDI(lView, tNode, flags) { - ngDevMode && assertLViewOrUndefined(lView); - if (flags & InjectFlags.SkipSelf) { - ngDevMode && assertTNodeForTView(tNode, lView[TVIEW]); - let parentTNode = tNode; - let parentLView = lView; - while (true) { - ngDevMode && assertDefined(parentTNode, "Parent TNode should be defined"); - parentTNode = parentTNode.parent; - if (parentTNode === null && !(flags & InjectFlags.Host)) { - parentTNode = getDeclarationTNode(parentLView); - if (parentTNode === null) - break; - ngDevMode && assertDefined(parentLView, "Parent LView should be defined"); - parentLView = parentLView[DECLARATION_VIEW]; - if (parentTNode.type & (2 | 8)) { - break; - } - } else { - break; - } - } - if (parentTNode === null) { - return false; - } else { - tNode = parentTNode; - lView = parentLView; - } - } - ngDevMode && assertTNodeForLView(tNode, lView); - const lFrame = instructionState.lFrame = allocLFrame(); - lFrame.currentTNode = tNode; - lFrame.lView = lView; - return true; -} -function enterView(newView) { - ngDevMode && assertNotEqual(newView[0], newView[1], "????"); - ngDevMode && assertLViewOrUndefined(newView); - const newLFrame = allocLFrame(); - if (ngDevMode) { - assertEqual(newLFrame.isParent, true, "Expected clean LFrame"); - assertEqual(newLFrame.lView, null, "Expected clean LFrame"); - assertEqual(newLFrame.tView, null, "Expected clean LFrame"); - assertEqual(newLFrame.selectedIndex, -1, "Expected clean LFrame"); - assertEqual(newLFrame.elementDepthCount, 0, "Expected clean LFrame"); - assertEqual(newLFrame.currentDirectiveIndex, -1, "Expected clean LFrame"); - assertEqual(newLFrame.currentNamespace, null, "Expected clean LFrame"); - assertEqual(newLFrame.bindingRootIndex, -1, "Expected clean LFrame"); - assertEqual(newLFrame.currentQueryIndex, 0, "Expected clean LFrame"); - } - const tView = newView[TVIEW]; - instructionState.lFrame = newLFrame; - ngDevMode && tView.firstChild && assertTNodeForTView(tView.firstChild, tView); - newLFrame.currentTNode = tView.firstChild; - newLFrame.lView = newView; - newLFrame.tView = tView; - newLFrame.contextLView = newView; - newLFrame.bindingIndex = tView.bindingStartIndex; - newLFrame.inI18n = false; -} -function allocLFrame() { - const currentLFrame = instructionState.lFrame; - const childLFrame = currentLFrame === null ? null : currentLFrame.child; - const newLFrame = childLFrame === null ? createLFrame(currentLFrame) : childLFrame; - return newLFrame; -} -function createLFrame(parent) { - const lFrame = { - currentTNode: null, - isParent: true, - lView: null, - tView: null, - selectedIndex: -1, - contextLView: null, - elementDepthCount: 0, - currentNamespace: null, - currentDirectiveIndex: -1, - bindingRootIndex: -1, - bindingIndex: -1, - currentQueryIndex: 0, - parent, - child: null, - inI18n: false - }; - parent !== null && (parent.child = lFrame); - return lFrame; -} -function leaveViewLight() { - const oldLFrame = instructionState.lFrame; - instructionState.lFrame = oldLFrame.parent; - oldLFrame.currentTNode = null; - oldLFrame.lView = null; - return oldLFrame; -} -var leaveDI = leaveViewLight; -function leaveView() { - const oldLFrame = leaveViewLight(); - oldLFrame.isParent = true; - oldLFrame.tView = null; - oldLFrame.selectedIndex = -1; - oldLFrame.contextLView = null; - oldLFrame.elementDepthCount = 0; - oldLFrame.currentDirectiveIndex = -1; - oldLFrame.currentNamespace = null; - oldLFrame.bindingRootIndex = -1; - oldLFrame.bindingIndex = -1; - oldLFrame.currentQueryIndex = 0; -} -function nextContextImpl(level) { - const contextLView = instructionState.lFrame.contextLView = walkUpViews(level, instructionState.lFrame.contextLView); - return contextLView[CONTEXT]; -} -function getSelectedIndex() { - return instructionState.lFrame.selectedIndex; -} -function setSelectedIndex(index) { - ngDevMode && index !== -1 && assertGreaterThanOrEqual(index, HEADER_OFFSET, "Index must be past HEADER_OFFSET (or -1)."); - ngDevMode && assertLessThan(index, instructionState.lFrame.lView.length, "Can't set index passed end of LView"); - instructionState.lFrame.selectedIndex = index; -} -function getSelectedTNode() { - const lFrame = instructionState.lFrame; - return getTNode(lFrame.tView, lFrame.selectedIndex); -} -function ɵɵnamespaceSVG() { - instructionState.lFrame.currentNamespace = SVG_NAMESPACE; -} -function ɵɵnamespaceMathML() { - instructionState.lFrame.currentNamespace = MATH_ML_NAMESPACE; -} -function ɵɵnamespaceHTML() { - namespaceHTMLInternal(); -} -function namespaceHTMLInternal() { - instructionState.lFrame.currentNamespace = null; -} -function getNamespace$1() { - return instructionState.lFrame.currentNamespace; -} -var _wasLastNodeCreated = true; -function wasLastNodeCreated() { - return _wasLastNodeCreated; -} -function lastNodeWasCreated(flag) { - _wasLastNodeCreated = flag; -} -function registerPreOrderHooks(directiveIndex, directiveDef, tView) { - ngDevMode && assertFirstCreatePass(tView); - const { ngOnChanges, ngOnInit, ngDoCheck } = directiveDef.type.prototype; - if (ngOnChanges) { - const wrappedOnChanges = NgOnChangesFeatureImpl(directiveDef); - (tView.preOrderHooks ??= []).push(directiveIndex, wrappedOnChanges); - (tView.preOrderCheckHooks ??= []).push(directiveIndex, wrappedOnChanges); - } - if (ngOnInit) { - (tView.preOrderHooks ??= []).push(0 - directiveIndex, ngOnInit); - } - if (ngDoCheck) { - (tView.preOrderHooks ??= []).push(directiveIndex, ngDoCheck); - (tView.preOrderCheckHooks ??= []).push(directiveIndex, ngDoCheck); - } -} -function registerPostOrderHooks(tView, tNode) { - ngDevMode && assertFirstCreatePass(tView); - for (let i = tNode.directiveStart, end = tNode.directiveEnd; i < end; i++) { - const directiveDef = tView.data[i]; - ngDevMode && assertDefined(directiveDef, "Expecting DirectiveDef"); - const lifecycleHooks = directiveDef.type.prototype; - const { ngAfterContentInit, ngAfterContentChecked, ngAfterViewInit, ngAfterViewChecked, ngOnDestroy } = lifecycleHooks; - if (ngAfterContentInit) { - (tView.contentHooks ??= []).push(-i, ngAfterContentInit); - } - if (ngAfterContentChecked) { - (tView.contentHooks ??= []).push(i, ngAfterContentChecked); - (tView.contentCheckHooks ??= []).push(i, ngAfterContentChecked); - } - if (ngAfterViewInit) { - (tView.viewHooks ??= []).push(-i, ngAfterViewInit); - } - if (ngAfterViewChecked) { - (tView.viewHooks ??= []).push(i, ngAfterViewChecked); - (tView.viewCheckHooks ??= []).push(i, ngAfterViewChecked); - } - if (ngOnDestroy != null) { - (tView.destroyHooks ??= []).push(i, ngOnDestroy); - } - } -} -function executeCheckHooks(lView, hooks, nodeIndex) { - callHooks(lView, hooks, 3, nodeIndex); -} -function executeInitAndCheckHooks(lView, hooks, initPhase, nodeIndex) { - ngDevMode && assertNotEqual(initPhase, 3, "Init pre-order hooks should not be called more than once"); - if ((lView[FLAGS] & 3) === initPhase) { - callHooks(lView, hooks, initPhase, nodeIndex); - } -} -function incrementInitPhaseFlags(lView, initPhase) { - ngDevMode && assertNotEqual(initPhase, 3, "Init hooks phase should not be incremented after all init hooks have been run."); - let flags = lView[FLAGS]; - if ((flags & 3) === initPhase) { - flags &= 16383; - flags += 1; - lView[FLAGS] = flags; - } -} -function callHooks(currentView, arr, initPhase, currentNodeIndex) { - ngDevMode && assertEqual(isInCheckNoChangesMode(), false, "Hooks should never be run when in check no changes mode."); - const startIndex = currentNodeIndex !== void 0 ? currentView[PREORDER_HOOK_FLAGS] & 65535 : 0; - const nodeIndexLimit = currentNodeIndex != null ? currentNodeIndex : -1; - const max2 = arr.length - 1; - let lastNodeIndexFound = 0; - for (let i = startIndex; i < max2; i++) { - const hook = arr[i + 1]; - if (typeof hook === "number") { - lastNodeIndexFound = arr[i]; - if (currentNodeIndex != null && lastNodeIndexFound >= currentNodeIndex) { - break; - } - } else { - const isInitHook = arr[i] < 0; - if (isInitHook) { - currentView[PREORDER_HOOK_FLAGS] += 65536; - } - if (lastNodeIndexFound < nodeIndexLimit || nodeIndexLimit == -1) { - callHook(currentView, initPhase, arr, i); - currentView[PREORDER_HOOK_FLAGS] = (currentView[PREORDER_HOOK_FLAGS] & 4294901760) + i + 2; - } - i++; - } - } -} -function callHookInternal(directive, hook) { - profiler(4, directive, hook); - const prevConsumer = setActiveConsumer(null); - try { - hook.call(directive); - } finally { - setActiveConsumer(prevConsumer); - profiler(5, directive, hook); - } -} -function callHook(currentView, initPhase, arr, i) { - const isInitHook = arr[i] < 0; - const hook = arr[i + 1]; - const directiveIndex = isInitHook ? -arr[i] : arr[i]; - const directive = currentView[directiveIndex]; - if (isInitHook) { - const indexWithintInitPhase = currentView[FLAGS] >> 14; - if (indexWithintInitPhase < currentView[PREORDER_HOOK_FLAGS] >> 16 && (currentView[FLAGS] & 3) === initPhase) { - currentView[FLAGS] += 16384; - callHookInternal(directive, hook); - } - } else { - callHookInternal(directive, hook); - } -} -var NO_PARENT_INJECTOR = -1; -var NodeInjectorFactory = class { - constructor(factory, isViewProvider, injectImplementation) { - this.factory = factory; - this.resolving = false; - ngDevMode && assertDefined(factory, "Factory not specified"); - ngDevMode && assertEqual(typeof factory, "function", "Expected factory function."); - this.canSeeViewProviders = isViewProvider; - this.injectImpl = injectImplementation; - } -}; -function isFactory(obj) { - return obj instanceof NodeInjectorFactory; -} -function toTNodeTypeAsString(tNodeType) { - let text = ""; - tNodeType & 1 && (text += "|Text"); - tNodeType & 2 && (text += "|Element"); - tNodeType & 4 && (text += "|Container"); - tNodeType & 8 && (text += "|ElementContainer"); - tNodeType & 16 && (text += "|Projection"); - tNodeType & 32 && (text += "|IcuContainer"); - tNodeType & 64 && (text += "|Placeholder"); - return text.length > 0 ? text.substring(1) : text; -} -function isTNodeShape(value) { - return value != null && typeof value === "object" && (value.insertBeforeIndex === null || typeof value.insertBeforeIndex === "number" || Array.isArray(value.insertBeforeIndex)); -} -function hasClassInput(tNode) { - return (tNode.flags & 8) !== 0; -} -function hasStyleInput(tNode) { - return (tNode.flags & 16) !== 0; -} -function assertTNodeType(tNode, expectedTypes, message) { - assertDefined(tNode, "should be called with a TNode"); - if ((tNode.type & expectedTypes) === 0) { - throwError2(message || `Expected [${toTNodeTypeAsString(expectedTypes)}] but got ${toTNodeTypeAsString(tNode.type)}.`); - } -} -function assertPureTNodeType(type) { - if (!(type === 2 || // - type === 1 || // - type === 4 || // - type === 8 || // - type === 32 || // - type === 16 || // - type === 64)) { - throwError2(`Expected TNodeType to have only a single type selected, but got ${toTNodeTypeAsString(type)}.`); - } -} -function hasParentInjector(parentLocation) { - return parentLocation !== NO_PARENT_INJECTOR; -} -function getParentInjectorIndex(parentLocation) { - if (ngDevMode) { - assertNumber(parentLocation, "Number expected"); - assertNotEqual(parentLocation, -1, "Not a valid state."); - const parentInjectorIndex = parentLocation & 32767; - assertGreaterThan(parentInjectorIndex, HEADER_OFFSET, "Parent injector must be pointing past HEADER_OFFSET."); - } - return parentLocation & 32767; -} -function getParentInjectorViewOffset(parentLocation) { - return parentLocation >> 16; -} -function getParentInjectorView(location2, startView) { - let viewOffset = getParentInjectorViewOffset(location2); - let parentView = startView; - while (viewOffset > 0) { - parentView = parentView[DECLARATION_VIEW]; - viewOffset--; - } - return parentView; -} -var includeViewProviders = true; -function setIncludeViewProviders(v) { - const oldValue = includeViewProviders; - includeViewProviders = v; - return oldValue; -} -var BLOOM_SIZE = 256; -var BLOOM_MASK = BLOOM_SIZE - 1; -var BLOOM_BUCKET_BITS = 5; -var nextNgElementId = 0; -var NOT_FOUND = {}; -function bloomAdd(injectorIndex, tView, type) { - ngDevMode && assertEqual(tView.firstCreatePass, true, "expected firstCreatePass to be true"); - let id; - if (typeof type === "string") { - id = type.charCodeAt(0) || 0; - } else if (type.hasOwnProperty(NG_ELEMENT_ID)) { - id = type[NG_ELEMENT_ID]; - } - if (id == null) { - id = type[NG_ELEMENT_ID] = nextNgElementId++; - } - const bloomHash = id & BLOOM_MASK; - const mask = 1 << bloomHash; - tView.data[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)] |= mask; -} -function getOrCreateNodeInjectorForNode(tNode, lView) { - const existingInjectorIndex = getInjectorIndex(tNode, lView); - if (existingInjectorIndex !== -1) { - return existingInjectorIndex; - } - const tView = lView[TVIEW]; - if (tView.firstCreatePass) { - tNode.injectorIndex = lView.length; - insertBloom(tView.data, tNode); - insertBloom(lView, null); - insertBloom(tView.blueprint, null); - } - const parentLoc = getParentInjectorLocation(tNode, lView); - const injectorIndex = tNode.injectorIndex; - if (hasParentInjector(parentLoc)) { - const parentIndex = getParentInjectorIndex(parentLoc); - const parentLView = getParentInjectorView(parentLoc, lView); - const parentData = parentLView[TVIEW].data; - for (let i = 0; i < 8; i++) { - lView[injectorIndex + i] = parentLView[parentIndex + i] | parentData[parentIndex + i]; - } - } - lView[ - injectorIndex + 8 - /* NodeInjectorOffset.PARENT */ - ] = parentLoc; - return injectorIndex; -} -function insertBloom(arr, footer) { - arr.push(0, 0, 0, 0, 0, 0, 0, 0, footer); -} -function getInjectorIndex(tNode, lView) { - if (tNode.injectorIndex === -1 || // If the injector index is the same as its parent's injector index, then the index has been - // copied down from the parent node. No injector has been created yet on this node. - tNode.parent && tNode.parent.injectorIndex === tNode.injectorIndex || // After the first template pass, the injector index might exist but the parent values - // might not have been calculated yet for this instance - lView[ - tNode.injectorIndex + 8 - /* NodeInjectorOffset.PARENT */ - ] === null) { - return -1; - } else { - ngDevMode && assertIndexInRange(lView, tNode.injectorIndex); - return tNode.injectorIndex; - } -} -function getParentInjectorLocation(tNode, lView) { - if (tNode.parent && tNode.parent.injectorIndex !== -1) { - return tNode.parent.injectorIndex; - } - let declarationViewOffset = 0; - let parentTNode = null; - let lViewCursor = lView; - while (lViewCursor !== null) { - parentTNode = getTNodeFromLView(lViewCursor); - if (parentTNode === null) { - return NO_PARENT_INJECTOR; - } - ngDevMode && parentTNode && assertTNodeForLView(parentTNode, lViewCursor[DECLARATION_VIEW]); - declarationViewOffset++; - lViewCursor = lViewCursor[DECLARATION_VIEW]; - if (parentTNode.injectorIndex !== -1) { - return parentTNode.injectorIndex | declarationViewOffset << 16; - } - } - return NO_PARENT_INJECTOR; -} -function diPublicInInjector(injectorIndex, tView, token) { - bloomAdd(injectorIndex, tView, token); -} -function injectAttributeImpl(tNode, attrNameToInject) { - ngDevMode && assertTNodeType( - tNode, - 12 | 3 - /* TNodeType.AnyRNode */ - ); - ngDevMode && assertDefined(tNode, "expecting tNode"); - if (attrNameToInject === "class") { - return tNode.classes; - } - if (attrNameToInject === "style") { - return tNode.styles; - } - const attrs = tNode.attrs; - if (attrs) { - const attrsLength = attrs.length; - let i = 0; - while (i < attrsLength) { - const value = attrs[i]; - if (isNameOnlyAttributeMarker(value)) - break; - if (value === 0) { - i = i + 2; - } else if (typeof value === "number") { - i++; - while (i < attrsLength && typeof attrs[i] === "string") { - i++; - } - } else if (value === attrNameToInject) { - return attrs[i + 1]; - } else { - i = i + 2; - } - } - } - return null; -} -function notFoundValueOrThrow(notFoundValue, token, flags) { - if (flags & InjectFlags.Optional || notFoundValue !== void 0) { - return notFoundValue; - } else { - throwProviderNotFoundError(token, "NodeInjector"); - } -} -function lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue) { - if (flags & InjectFlags.Optional && notFoundValue === void 0) { - notFoundValue = null; - } - if ((flags & (InjectFlags.Self | InjectFlags.Host)) === 0) { - const moduleInjector = lView[INJECTOR$1]; - const previousInjectImplementation = setInjectImplementation(void 0); - try { - if (moduleInjector) { - return moduleInjector.get(token, notFoundValue, flags & InjectFlags.Optional); - } else { - return injectRootLimpMode(token, notFoundValue, flags & InjectFlags.Optional); - } - } finally { - setInjectImplementation(previousInjectImplementation); - } - } - return notFoundValueOrThrow(notFoundValue, token, flags); -} -function getOrCreateInjectable(tNode, lView, token, flags = InjectFlags.Default, notFoundValue) { - if (tNode !== null) { - if (lView[FLAGS] & 2048 && // The token must be present on the current node injector when the `Self` - // flag is set, so the lookup on embedded view injector(s) can be skipped. - !(flags & InjectFlags.Self)) { - const embeddedInjectorValue = lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, NOT_FOUND); - if (embeddedInjectorValue !== NOT_FOUND) { - return embeddedInjectorValue; - } - } - const value = lookupTokenUsingNodeInjector(tNode, lView, token, flags, NOT_FOUND); - if (value !== NOT_FOUND) { - return value; - } - } - return lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue); -} -function lookupTokenUsingNodeInjector(tNode, lView, token, flags, notFoundValue) { - const bloomHash = bloomHashBitOrFactory(token); - if (typeof bloomHash === "function") { - if (!enterDI(lView, tNode, flags)) { - return flags & InjectFlags.Host ? notFoundValueOrThrow(notFoundValue, token, flags) : lookupTokenUsingModuleInjector(lView, token, flags, notFoundValue); - } - try { - let value; - if (ngDevMode) { - runInInjectorProfilerContext(new NodeInjector(getCurrentTNode(), getLView()), token, () => { - value = bloomHash(flags); - if (value != null) { - emitInstanceCreatedByInjectorEvent(value); - } - }); - } else { - value = bloomHash(flags); - } - if (value == null && !(flags & InjectFlags.Optional)) { - throwProviderNotFoundError(token); - } else { - return value; - } - } finally { - leaveDI(); - } - } else if (typeof bloomHash === "number") { - let previousTView = null; - let injectorIndex = getInjectorIndex(tNode, lView); - let parentLocation = NO_PARENT_INJECTOR; - let hostTElementNode = flags & InjectFlags.Host ? lView[DECLARATION_COMPONENT_VIEW][T_HOST] : null; - if (injectorIndex === -1 || flags & InjectFlags.SkipSelf) { - parentLocation = injectorIndex === -1 ? getParentInjectorLocation(tNode, lView) : lView[ - injectorIndex + 8 - /* NodeInjectorOffset.PARENT */ - ]; - if (parentLocation === NO_PARENT_INJECTOR || !shouldSearchParent(flags, false)) { - injectorIndex = -1; - } else { - previousTView = lView[TVIEW]; - injectorIndex = getParentInjectorIndex(parentLocation); - lView = getParentInjectorView(parentLocation, lView); - } - } - while (injectorIndex !== -1) { - ngDevMode && assertNodeInjector(lView, injectorIndex); - const tView = lView[TVIEW]; - ngDevMode && assertTNodeForLView(tView.data[ - injectorIndex + 8 - /* NodeInjectorOffset.TNODE */ - ], lView); - if (bloomHasToken(bloomHash, injectorIndex, tView.data)) { - const instance = searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode); - if (instance !== NOT_FOUND) { - return instance; - } - } - parentLocation = lView[ - injectorIndex + 8 - /* NodeInjectorOffset.PARENT */ - ]; - if (parentLocation !== NO_PARENT_INJECTOR && shouldSearchParent(flags, lView[TVIEW].data[ - injectorIndex + 8 - /* NodeInjectorOffset.TNODE */ - ] === hostTElementNode) && bloomHasToken(bloomHash, injectorIndex, lView)) { - previousTView = tView; - injectorIndex = getParentInjectorIndex(parentLocation); - lView = getParentInjectorView(parentLocation, lView); - } else { - injectorIndex = -1; - } - } - } - return notFoundValue; -} -function searchTokensOnInjector(injectorIndex, lView, token, previousTView, flags, hostTElementNode) { - const currentTView = lView[TVIEW]; - const tNode = currentTView.data[ - injectorIndex + 8 - /* NodeInjectorOffset.TNODE */ - ]; - const canAccessViewProviders = previousTView == null ? ( - // 1) This is the first invocation `previousTView == null` which means that we are at the - // `TNode` of where injector is starting to look. In such a case the only time we are allowed - // to look into the ViewProviders is if: - // - we are on a component - // - AND the injector set `includeViewProviders` to true (implying that the token can see - // ViewProviders because it is the Component or a Service which itself was declared in - // ViewProviders) - isComponentHost(tNode) && includeViewProviders - ) : ( - // 2) `previousTView != null` which means that we are now walking across the parent nodes. - // In such a case we are only allowed to look into the ViewProviders if: - // - We just crossed from child View to Parent View `previousTView != currentTView` - // - AND the parent TNode is an Element. - // This means that we just came from the Component's View and therefore are allowed to see - // into the ViewProviders. - previousTView != currentTView && (tNode.type & 3) !== 0 - ); - const isHostSpecialCase = flags & InjectFlags.Host && hostTElementNode === tNode; - const injectableIdx = locateDirectiveOrProvider(tNode, currentTView, token, canAccessViewProviders, isHostSpecialCase); - if (injectableIdx !== null) { - return getNodeInjectable(lView, currentTView, injectableIdx, tNode); - } else { - return NOT_FOUND; - } -} -function locateDirectiveOrProvider(tNode, tView, token, canAccessViewProviders, isHostSpecialCase) { - const nodeProviderIndexes = tNode.providerIndexes; - const tInjectables = tView.data; - const injectablesStart = nodeProviderIndexes & 1048575; - const directivesStart = tNode.directiveStart; - const directiveEnd = tNode.directiveEnd; - const cptViewProvidersCount = nodeProviderIndexes >> 20; - const startingIndex = canAccessViewProviders ? injectablesStart : injectablesStart + cptViewProvidersCount; - const endIndex = isHostSpecialCase ? injectablesStart + cptViewProvidersCount : directiveEnd; - for (let i = startingIndex; i < endIndex; i++) { - const providerTokenOrDef = tInjectables[i]; - if (i < directivesStart && token === providerTokenOrDef || i >= directivesStart && providerTokenOrDef.type === token) { - return i; - } - } - if (isHostSpecialCase) { - const dirDef = tInjectables[directivesStart]; - if (dirDef && isComponentDef(dirDef) && dirDef.type === token) { - return directivesStart; - } - } - return null; -} -function getNodeInjectable(lView, tView, index, tNode) { - let value = lView[index]; - const tData = tView.data; - if (isFactory(value)) { - const factory = value; - if (factory.resolving) { - throwCyclicDependencyError(stringifyForError(tData[index])); - } - const previousIncludeViewProviders = setIncludeViewProviders(factory.canSeeViewProviders); - factory.resolving = true; - let prevInjectContext; - if (ngDevMode) { - const token = tData[index].type || tData[index]; - const injector = new NodeInjector(tNode, lView); - prevInjectContext = setInjectorProfilerContext({ injector, token }); - } - const previousInjectImplementation = factory.injectImpl ? setInjectImplementation(factory.injectImpl) : null; - const success = enterDI(lView, tNode, InjectFlags.Default); - ngDevMode && assertEqual(success, true, "Because flags do not contain `SkipSelf' we expect this to always succeed."); - try { - value = lView[index] = factory.factory(void 0, tData, lView, tNode); - ngDevMode && emitInstanceCreatedByInjectorEvent(value); - if (tView.firstCreatePass && index >= tNode.directiveStart) { - ngDevMode && assertDirectiveDef(tData[index]); - registerPreOrderHooks(index, tData[index], tView); - } - } finally { - ngDevMode && setInjectorProfilerContext(prevInjectContext); - previousInjectImplementation !== null && setInjectImplementation(previousInjectImplementation); - setIncludeViewProviders(previousIncludeViewProviders); - factory.resolving = false; - leaveDI(); - } - } - return value; -} -function bloomHashBitOrFactory(token) { - ngDevMode && assertDefined(token, "token must be defined"); - if (typeof token === "string") { - return token.charCodeAt(0) || 0; - } - const tokenId = ( - // First check with `hasOwnProperty` so we don't get an inherited ID. - token.hasOwnProperty(NG_ELEMENT_ID) ? token[NG_ELEMENT_ID] : void 0 - ); - if (typeof tokenId === "number") { - if (tokenId >= 0) { - return tokenId & BLOOM_MASK; - } else { - ngDevMode && assertEqual(tokenId, -1, "Expecting to get Special Injector Id"); - return createNodeInjector; - } - } else { - return tokenId; - } -} -function bloomHasToken(bloomHash, injectorIndex, injectorView) { - const mask = 1 << bloomHash; - const value = injectorView[injectorIndex + (bloomHash >> BLOOM_BUCKET_BITS)]; - return !!(value & mask); -} -function shouldSearchParent(flags, isFirstHostTNode) { - return !(flags & InjectFlags.Self) && !(flags & InjectFlags.Host && isFirstHostTNode); -} -function getNodeInjectorLView(nodeInjector) { - return nodeInjector._lView; -} -function getNodeInjectorTNode(nodeInjector) { - return nodeInjector._tNode; -} -var NodeInjector = class { - constructor(_tNode, _lView) { - this._tNode = _tNode; - this._lView = _lView; - } - get(token, notFoundValue, flags) { - return getOrCreateInjectable(this._tNode, this._lView, token, convertToBitFlags(flags), notFoundValue); - } -}; -function createNodeInjector() { - return new NodeInjector(getCurrentTNode(), getLView()); -} -function ɵɵgetInheritedFactory(type) { - return noSideEffects(() => { - const ownConstructor = type.prototype.constructor; - const ownFactory = ownConstructor[NG_FACTORY_DEF] || getFactoryOf(ownConstructor); - const objectPrototype = Object.prototype; - let parent = Object.getPrototypeOf(type.prototype).constructor; - while (parent && parent !== objectPrototype) { - const factory = parent[NG_FACTORY_DEF] || getFactoryOf(parent); - if (factory && factory !== ownFactory) { - return factory; - } - parent = Object.getPrototypeOf(parent); - } - return (t) => new t(); - }); -} -function getFactoryOf(type) { - if (isForwardRef(type)) { - return () => { - const factory = getFactoryOf(resolveForwardRef(type)); - return factory && factory(); - }; - } - return getFactoryDef(type); -} -function lookupTokenUsingEmbeddedInjector(tNode, lView, token, flags, notFoundValue) { - let currentTNode = tNode; - let currentLView = lView; - while (currentTNode !== null && currentLView !== null && currentLView[FLAGS] & 2048 && !(currentLView[FLAGS] & 512)) { - ngDevMode && assertTNodeForLView(currentTNode, currentLView); - const nodeInjectorValue = lookupTokenUsingNodeInjector(currentTNode, currentLView, token, flags | InjectFlags.Self, NOT_FOUND); - if (nodeInjectorValue !== NOT_FOUND) { - return nodeInjectorValue; - } - let parentTNode = currentTNode.parent; - if (!parentTNode) { - const embeddedViewInjector = currentLView[EMBEDDED_VIEW_INJECTOR]; - if (embeddedViewInjector) { - const embeddedViewInjectorValue = embeddedViewInjector.get(token, NOT_FOUND, flags); - if (embeddedViewInjectorValue !== NOT_FOUND) { - return embeddedViewInjectorValue; - } - } - parentTNode = getTNodeFromLView(currentLView); - currentLView = currentLView[DECLARATION_VIEW]; - } - currentTNode = parentTNode; - } - return notFoundValue; -} -function getTNodeFromLView(lView) { - const tView = lView[TVIEW]; - const tViewType = tView.type; - if (tViewType === 2) { - ngDevMode && assertDefined(tView.declTNode, "Embedded TNodes should have declaration parents."); - return tView.declTNode; - } else if (tViewType === 1) { - return lView[T_HOST]; - } - return null; -} -function ɵɵinjectAttribute(attrNameToInject) { - return injectAttributeImpl(getCurrentTNode(), attrNameToInject); -} -var ANNOTATIONS = "__annotations__"; -var PARAMETERS = "__parameters__"; -var PROP_METADATA = "__prop__metadata__"; -function makeDecorator(name, props, parentClass, additionalProcessing, typeFn) { - return noSideEffects(() => { - const metaCtor = makeMetadataCtor(props); - function DecoratorFactory(...args) { - if (this instanceof DecoratorFactory) { - metaCtor.call(this, ...args); - return this; - } - const annotationInstance = new DecoratorFactory(...args); - return function TypeDecorator(cls) { - if (typeFn) - typeFn(cls, ...args); - const annotations = cls.hasOwnProperty(ANNOTATIONS) ? cls[ANNOTATIONS] : Object.defineProperty(cls, ANNOTATIONS, { value: [] })[ANNOTATIONS]; - annotations.push(annotationInstance); - if (additionalProcessing) - additionalProcessing(cls); - return cls; - }; - } - if (parentClass) { - DecoratorFactory.prototype = Object.create(parentClass.prototype); - } - DecoratorFactory.prototype.ngMetadataName = name; - DecoratorFactory.annotationCls = DecoratorFactory; - return DecoratorFactory; - }); -} -function makeMetadataCtor(props) { - return function ctor(...args) { - if (props) { - const values = props(...args); - for (const propName in values) { - this[propName] = values[propName]; - } - } - }; -} -function makeParamDecorator(name, props, parentClass) { - return noSideEffects(() => { - const metaCtor = makeMetadataCtor(props); - function ParamDecoratorFactory(...args) { - if (this instanceof ParamDecoratorFactory) { - metaCtor.apply(this, args); - return this; - } - const annotationInstance = new ParamDecoratorFactory(...args); - ParamDecorator.annotation = annotationInstance; - return ParamDecorator; - function ParamDecorator(cls, unusedKey, index) { - const parameters = cls.hasOwnProperty(PARAMETERS) ? cls[PARAMETERS] : Object.defineProperty(cls, PARAMETERS, { value: [] })[PARAMETERS]; - while (parameters.length <= index) { - parameters.push(null); - } - (parameters[index] = parameters[index] || []).push(annotationInstance); - return cls; - } - } - if (parentClass) { - ParamDecoratorFactory.prototype = Object.create(parentClass.prototype); - } - ParamDecoratorFactory.prototype.ngMetadataName = name; - ParamDecoratorFactory.annotationCls = ParamDecoratorFactory; - return ParamDecoratorFactory; - }); -} -function makePropDecorator(name, props, parentClass, additionalProcessing) { - return noSideEffects(() => { - const metaCtor = makeMetadataCtor(props); - function PropDecoratorFactory(...args) { - if (this instanceof PropDecoratorFactory) { - metaCtor.apply(this, args); - return this; - } - const decoratorInstance = new PropDecoratorFactory(...args); - function PropDecorator(target, name2) { - if (target === void 0) { - throw new Error("Standard Angular field decorators are not supported in JIT mode."); - } - const constructor = target.constructor; - const meta = constructor.hasOwnProperty(PROP_METADATA) ? constructor[PROP_METADATA] : Object.defineProperty(constructor, PROP_METADATA, { value: {} })[PROP_METADATA]; - meta[name2] = meta.hasOwnProperty(name2) && meta[name2] || []; - meta[name2].unshift(decoratorInstance); - if (additionalProcessing) - additionalProcessing(target, name2, ...args); - } - return PropDecorator; - } - if (parentClass) { - PropDecoratorFactory.prototype = Object.create(parentClass.prototype); - } - PropDecoratorFactory.prototype.ngMetadataName = name; - PropDecoratorFactory.annotationCls = PropDecoratorFactory; - return PropDecoratorFactory; - }); -} -var Attribute = makeParamDecorator("Attribute", (attributeName) => ({ attributeName, __NG_ELEMENT_ID__: () => ɵɵinjectAttribute(attributeName) })); -var emitDistinctChangesOnlyDefaultValue = true; -var Query = class { -}; -var ContentChildren = makePropDecorator("ContentChildren", (selector, data = {}) => __spreadValues({ - selector, - first: false, - isViewQuery: false, - descendants: false, - emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue -}, data), Query); -var ContentChild = makePropDecorator("ContentChild", (selector, data = {}) => __spreadValues({ selector, first: true, isViewQuery: false, descendants: true }, data), Query); -var ViewChildren = makePropDecorator("ViewChildren", (selector, data = {}) => __spreadValues({ - selector, - first: false, - isViewQuery: true, - descendants: true, - emitDistinctChangesOnly: emitDistinctChangesOnlyDefaultValue -}, data), Query); -var ViewChild = makePropDecorator("ViewChild", (selector, data) => __spreadValues({ selector, first: true, isViewQuery: true, descendants: true }, data), Query); -var FactoryTarget; -(function(FactoryTarget2) { - FactoryTarget2[FactoryTarget2["Directive"] = 0] = "Directive"; - FactoryTarget2[FactoryTarget2["Component"] = 1] = "Component"; - FactoryTarget2[FactoryTarget2["Injectable"] = 2] = "Injectable"; - FactoryTarget2[FactoryTarget2["Pipe"] = 3] = "Pipe"; - FactoryTarget2[FactoryTarget2["NgModule"] = 4] = "NgModule"; -})(FactoryTarget || (FactoryTarget = {})); -var R3TemplateDependencyKind; -(function(R3TemplateDependencyKind2) { - R3TemplateDependencyKind2[R3TemplateDependencyKind2["Directive"] = 0] = "Directive"; - R3TemplateDependencyKind2[R3TemplateDependencyKind2["Pipe"] = 1] = "Pipe"; - R3TemplateDependencyKind2[R3TemplateDependencyKind2["NgModule"] = 2] = "NgModule"; -})(R3TemplateDependencyKind || (R3TemplateDependencyKind = {})); -var ViewEncapsulation; -(function(ViewEncapsulation2) { - ViewEncapsulation2[ViewEncapsulation2["Emulated"] = 0] = "Emulated"; - ViewEncapsulation2[ViewEncapsulation2["None"] = 2] = "None"; - ViewEncapsulation2[ViewEncapsulation2["ShadowDom"] = 3] = "ShadowDom"; -})(ViewEncapsulation || (ViewEncapsulation = {})); -function getCompilerFacade(request) { - const globalNg = _global["ng"]; - if (globalNg && globalNg.ɵcompilerFacade) { - return globalNg.ɵcompilerFacade; - } - if (typeof ngDevMode === "undefined" || ngDevMode) { - console.error(`JIT compilation failed for ${request.kind}`, request.type); - let message = `The ${request.kind} '${request.type.name}' needs to be compiled using the JIT compiler, but '@angular/compiler' is not available. - -`; - if (request.usage === 1) { - message += `The ${request.kind} is part of a library that has been partially compiled. -`; - message += `However, the Angular Linker has not processed the library such that JIT compilation is used as fallback. -`; - message += "\n"; - message += `Ideally, the library is processed using the Angular Linker to become fully AOT compiled. -`; - } else { - message += `JIT compilation is discouraged for production use-cases! Consider using AOT mode instead. -`; - } - message += `Alternatively, the JIT compiler should be loaded by bootstrapping using '@angular/platform-browser-dynamic' or '@angular/platform-server', -`; - message += `or manually provide the compiler with 'import "@angular/compiler";' before bootstrapping.`; - throw new Error(message); - } else { - throw new Error("JIT compiler unavailable"); - } -} -var Type = Function; -function isType(v) { - return typeof v === "function"; -} -function arrayEquals(a, b, identityAccessor) { - if (a.length !== b.length) - return false; - for (let i = 0; i < a.length; i++) { - let valueA = a[i]; - let valueB = b[i]; - if (identityAccessor) { - valueA = identityAccessor(valueA); - valueB = identityAccessor(valueB); - } - if (valueB !== valueA) { - return false; - } - } - return true; -} -function flatten(list) { - return list.flat(Number.POSITIVE_INFINITY); -} -function deepForEach(input2, fn) { - input2.forEach((value) => Array.isArray(value) ? deepForEach(value, fn) : fn(value)); -} -function addToArray(arr, index, value) { - if (index >= arr.length) { - arr.push(value); - } else { - arr.splice(index, 0, value); - } -} -function removeFromArray(arr, index) { - if (index >= arr.length - 1) { - return arr.pop(); - } else { - return arr.splice(index, 1)[0]; - } -} -function newArray(size, value) { - const list = []; - for (let i = 0; i < size; i++) { - list.push(value); - } - return list; -} -function arraySplice(array, index, count2) { - const length = array.length - count2; - while (index < length) { - array[index] = array[index + count2]; - index++; - } - while (count2--) { - array.pop(); - } -} -function arrayInsert2(array, index, value1, value2) { - ngDevMode && assertLessThanOrEqual(index, array.length, "Can't insert past array end."); - let end = array.length; - if (end == index) { - array.push(value1, value2); - } else if (end === 1) { - array.push(value2, array[0]); - array[0] = value1; - } else { - end--; - array.push(array[end - 1], array[end]); - while (end > index) { - const previousEnd = end - 2; - array[end] = array[previousEnd]; - end--; - } - array[index] = value1; - array[index + 1] = value2; - } -} -function keyValueArraySet(keyValueArray, key, value) { - let index = keyValueArrayIndexOf(keyValueArray, key); - if (index >= 0) { - keyValueArray[index | 1] = value; - } else { - index = ~index; - arrayInsert2(keyValueArray, index, key, value); - } - return index; -} -function keyValueArrayGet(keyValueArray, key) { - const index = keyValueArrayIndexOf(keyValueArray, key); - if (index >= 0) { - return keyValueArray[index | 1]; - } - return void 0; -} -function keyValueArrayIndexOf(keyValueArray, key) { - return _arrayIndexOfSorted(keyValueArray, key, 1); -} -function _arrayIndexOfSorted(array, value, shift) { - ngDevMode && assertEqual(Array.isArray(array), true, "Expecting an array"); - let start = 0; - let end = array.length >> shift; - while (end !== start) { - const middle = start + (end - start >> 1); - const current = array[middle << shift]; - if (value === current) { - return middle << shift; - } else if (current > value) { - end = middle; - } else { - start = middle + 1; - } - } - return ~(end << shift); -} -var ES5_DELEGATE_CTOR = /^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*(arguments|(?:[^()]+\(\[\],)?[^()]+\(arguments\).*)\)/; -var ES2015_INHERITED_CLASS = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/; -var ES2015_INHERITED_CLASS_WITH_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/; -var ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{[^}]*super\(\.\.\.arguments\)/; -function isDelegateCtor(typeStr) { - return ES5_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR.test(typeStr) || ES2015_INHERITED_CLASS.test(typeStr) && !ES2015_INHERITED_CLASS_WITH_CTOR.test(typeStr); -} -var ReflectionCapabilities = class { - constructor(reflect) { - this._reflect = reflect || _global["Reflect"]; - } - factory(t) { - return (...args) => new t(...args); - } - /** @internal */ - _zipTypesAndAnnotations(paramTypes, paramAnnotations) { - let result; - if (typeof paramTypes === "undefined") { - result = newArray(paramAnnotations.length); - } else { - result = newArray(paramTypes.length); - } - for (let i = 0; i < result.length; i++) { - if (typeof paramTypes === "undefined") { - result[i] = []; - } else if (paramTypes[i] && paramTypes[i] != Object) { - result[i] = [paramTypes[i]]; - } else { - result[i] = []; - } - if (paramAnnotations && paramAnnotations[i] != null) { - result[i] = result[i].concat(paramAnnotations[i]); - } - } - return result; - } - _ownParameters(type, parentCtor) { - const typeStr = type.toString(); - if (isDelegateCtor(typeStr)) { - return null; - } - if (type.parameters && type.parameters !== parentCtor.parameters) { - return type.parameters; - } - const tsickleCtorParams = type.ctorParameters; - if (tsickleCtorParams && tsickleCtorParams !== parentCtor.ctorParameters) { - const ctorParameters = typeof tsickleCtorParams === "function" ? tsickleCtorParams() : tsickleCtorParams; - const paramTypes2 = ctorParameters.map((ctorParam) => ctorParam && ctorParam.type); - const paramAnnotations2 = ctorParameters.map((ctorParam) => ctorParam && convertTsickleDecoratorIntoMetadata(ctorParam.decorators)); - return this._zipTypesAndAnnotations(paramTypes2, paramAnnotations2); - } - const paramAnnotations = type.hasOwnProperty(PARAMETERS) && type[PARAMETERS]; - const paramTypes = this._reflect && this._reflect.getOwnMetadata && this._reflect.getOwnMetadata("design:paramtypes", type); - if (paramTypes || paramAnnotations) { - return this._zipTypesAndAnnotations(paramTypes, paramAnnotations); - } - return newArray(type.length); - } - parameters(type) { - if (!isType(type)) { - return []; - } - const parentCtor = getParentCtor(type); - let parameters = this._ownParameters(type, parentCtor); - if (!parameters && parentCtor !== Object) { - parameters = this.parameters(parentCtor); - } - return parameters || []; - } - _ownAnnotations(typeOrFunc, parentCtor) { - if (typeOrFunc.annotations && typeOrFunc.annotations !== parentCtor.annotations) { - let annotations = typeOrFunc.annotations; - if (typeof annotations === "function" && annotations.annotations) { - annotations = annotations.annotations; - } - return annotations; - } - if (typeOrFunc.decorators && typeOrFunc.decorators !== parentCtor.decorators) { - return convertTsickleDecoratorIntoMetadata(typeOrFunc.decorators); - } - if (typeOrFunc.hasOwnProperty(ANNOTATIONS)) { - return typeOrFunc[ANNOTATIONS]; - } - return null; - } - annotations(typeOrFunc) { - if (!isType(typeOrFunc)) { - return []; - } - const parentCtor = getParentCtor(typeOrFunc); - const ownAnnotations = this._ownAnnotations(typeOrFunc, parentCtor) || []; - const parentAnnotations = parentCtor !== Object ? this.annotations(parentCtor) : []; - return parentAnnotations.concat(ownAnnotations); - } - _ownPropMetadata(typeOrFunc, parentCtor) { - if (typeOrFunc.propMetadata && typeOrFunc.propMetadata !== parentCtor.propMetadata) { - let propMetadata = typeOrFunc.propMetadata; - if (typeof propMetadata === "function" && propMetadata.propMetadata) { - propMetadata = propMetadata.propMetadata; - } - return propMetadata; - } - if (typeOrFunc.propDecorators && typeOrFunc.propDecorators !== parentCtor.propDecorators) { - const propDecorators = typeOrFunc.propDecorators; - const propMetadata = {}; - Object.keys(propDecorators).forEach((prop) => { - propMetadata[prop] = convertTsickleDecoratorIntoMetadata(propDecorators[prop]); - }); - return propMetadata; - } - if (typeOrFunc.hasOwnProperty(PROP_METADATA)) { - return typeOrFunc[PROP_METADATA]; - } - return null; - } - propMetadata(typeOrFunc) { - if (!isType(typeOrFunc)) { - return {}; - } - const parentCtor = getParentCtor(typeOrFunc); - const propMetadata = {}; - if (parentCtor !== Object) { - const parentPropMetadata = this.propMetadata(parentCtor); - Object.keys(parentPropMetadata).forEach((propName) => { - propMetadata[propName] = parentPropMetadata[propName]; - }); - } - const ownPropMetadata = this._ownPropMetadata(typeOrFunc, parentCtor); - if (ownPropMetadata) { - Object.keys(ownPropMetadata).forEach((propName) => { - const decorators = []; - if (propMetadata.hasOwnProperty(propName)) { - decorators.push(...propMetadata[propName]); - } - decorators.push(...ownPropMetadata[propName]); - propMetadata[propName] = decorators; - }); - } - return propMetadata; - } - ownPropMetadata(typeOrFunc) { - if (!isType(typeOrFunc)) { - return {}; - } - return this._ownPropMetadata(typeOrFunc, getParentCtor(typeOrFunc)) || {}; - } - hasLifecycleHook(type, lcProperty) { - return type instanceof Type && lcProperty in type.prototype; - } -}; -function convertTsickleDecoratorIntoMetadata(decoratorInvocations) { - if (!decoratorInvocations) { - return []; - } - return decoratorInvocations.map((decoratorInvocation) => { - const decoratorType = decoratorInvocation.type; - const annotationCls = decoratorType.annotationCls; - const annotationArgs = decoratorInvocation.args ? decoratorInvocation.args : []; - return new annotationCls(...annotationArgs); - }); -} -function getParentCtor(ctor) { - const parentProto = ctor.prototype ? Object.getPrototypeOf(ctor.prototype) : null; - const parentCtor = parentProto ? parentProto.constructor : null; - return parentCtor || Object; -} -var Inject = attachInjectFlag( - // Disable tslint because `DecoratorFlags` is a const enum which gets inlined. - // tslint:disable-next-line: no-toplevel-property-access - makeParamDecorator("Inject", (token) => ({ token })), - -1 - /* DecoratorFlags.Inject */ -); -var Optional = ( - // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined. - // tslint:disable-next-line: no-toplevel-property-access - attachInjectFlag( - makeParamDecorator("Optional"), - 8 - /* InternalInjectFlags.Optional */ - ) -); -var Self = ( - // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined. - // tslint:disable-next-line: no-toplevel-property-access - attachInjectFlag( - makeParamDecorator("Self"), - 2 - /* InternalInjectFlags.Self */ - ) -); -var SkipSelf = ( - // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined. - // tslint:disable-next-line: no-toplevel-property-access - attachInjectFlag( - makeParamDecorator("SkipSelf"), - 4 - /* InternalInjectFlags.SkipSelf */ - ) -); -var Host = ( - // Disable tslint because `InternalInjectFlags` is a const enum which gets inlined. - // tslint:disable-next-line: no-toplevel-property-access - attachInjectFlag( - makeParamDecorator("Host"), - 1 - /* InternalInjectFlags.Host */ - ) -); -var _reflect = null; -function getReflect() { - return _reflect = _reflect || new ReflectionCapabilities(); -} -function reflectDependencies(type) { - return convertDependencies(getReflect().parameters(type)); -} -function convertDependencies(deps) { - return deps.map((dep) => reflectDependency(dep)); -} -function reflectDependency(dep) { - const meta = { - token: null, - attribute: null, - host: false, - optional: false, - self: false, - skipSelf: false - }; - if (Array.isArray(dep) && dep.length > 0) { - for (let j = 0; j < dep.length; j++) { - const param = dep[j]; - if (param === void 0) { - continue; - } - const proto = Object.getPrototypeOf(param); - if (param instanceof Optional || proto.ngMetadataName === "Optional") { - meta.optional = true; - } else if (param instanceof SkipSelf || proto.ngMetadataName === "SkipSelf") { - meta.skipSelf = true; - } else if (param instanceof Self || proto.ngMetadataName === "Self") { - meta.self = true; - } else if (param instanceof Host || proto.ngMetadataName === "Host") { - meta.host = true; - } else if (param instanceof Inject) { - meta.token = param.token; - } else if (param instanceof Attribute) { - if (param.attributeName === void 0) { - throw new RuntimeError(204, ngDevMode && `Attribute name must be defined.`); - } - meta.attribute = param.attributeName; - } else { - meta.token = param; - } - } - } else if (dep === void 0 || Array.isArray(dep) && dep.length === 0) { - meta.token = null; - } else { - meta.token = dep; - } - return meta; -} -function resolveComponentResources(resourceResolver) { - const componentResolved = []; - const urlMap = /* @__PURE__ */ new Map(); - function cachedResourceResolve(url) { - let promise = urlMap.get(url); - if (!promise) { - const resp = resourceResolver(url); - urlMap.set(url, promise = resp.then(unwrapResponse)); - } - return promise; - } - componentResourceResolutionQueue.forEach((component, type) => { - const promises = []; - if (component.templateUrl) { - promises.push(cachedResourceResolve(component.templateUrl).then((template) => { - component.template = template; - })); - } - const styles = typeof component.styles === "string" ? [component.styles] : component.styles || []; - component.styles = styles; - if (component.styleUrl && component.styleUrls?.length) { - throw new Error("@Component cannot define both `styleUrl` and `styleUrls`. Use `styleUrl` if the component has one stylesheet, or `styleUrls` if it has multiple"); - } else if (component.styleUrls?.length) { - const styleOffset = component.styles.length; - const styleUrls = component.styleUrls; - component.styleUrls.forEach((styleUrl, index) => { - styles.push(""); - promises.push(cachedResourceResolve(styleUrl).then((style) => { - styles[styleOffset + index] = style; - styleUrls.splice(styleUrls.indexOf(styleUrl), 1); - if (styleUrls.length == 0) { - component.styleUrls = void 0; - } - })); - }); - } else if (component.styleUrl) { - promises.push(cachedResourceResolve(component.styleUrl).then((style) => { - styles.push(style); - component.styleUrl = void 0; - })); - } - const fullyResolved = Promise.all(promises).then(() => componentDefResolved(type)); - componentResolved.push(fullyResolved); - }); - clearResolutionOfComponentResourcesQueue(); - return Promise.all(componentResolved).then(() => void 0); -} -var componentResourceResolutionQueue = /* @__PURE__ */ new Map(); -var componentDefPendingResolution = /* @__PURE__ */ new Set(); -function maybeQueueResolutionOfComponentResources(type, metadata) { - if (componentNeedsResolution(metadata)) { - componentResourceResolutionQueue.set(type, metadata); - componentDefPendingResolution.add(type); - } -} -function isComponentDefPendingResolution(type) { - return componentDefPendingResolution.has(type); -} -function componentNeedsResolution(component) { - return !!(component.templateUrl && !component.hasOwnProperty("template") || component.styleUrls && component.styleUrls.length || component.styleUrl); -} -function clearResolutionOfComponentResourcesQueue() { - const old = componentResourceResolutionQueue; - componentResourceResolutionQueue = /* @__PURE__ */ new Map(); - return old; -} -function restoreComponentResolutionQueue(queue2) { - componentDefPendingResolution.clear(); - queue2.forEach((_, type) => componentDefPendingResolution.add(type)); - componentResourceResolutionQueue = queue2; -} -function isComponentResourceResolutionQueueEmpty() { - return componentResourceResolutionQueue.size === 0; -} -function unwrapResponse(response) { - return typeof response == "string" ? response : response.text(); -} -function componentDefResolved(type) { - componentDefPendingResolution.delete(type); -} -var ENVIRONMENT_INITIALIZER = new InjectionToken(ngDevMode ? "ENVIRONMENT_INITIALIZER" : ""); -var INJECTOR = new InjectionToken( - ngDevMode ? "INJECTOR" : "", - // Disable tslint because this is const enum which gets inlined not top level prop access. - // tslint:disable-next-line: no-toplevel-property-access - -1 - /* InjectorMarkers.Injector */ -); -var INJECTOR_DEF_TYPES = new InjectionToken(ngDevMode ? "INJECTOR_DEF_TYPES" : ""); -var NullInjector = class { - get(token, notFoundValue = THROW_IF_NOT_FOUND) { - if (notFoundValue === THROW_IF_NOT_FOUND) { - const error = new Error(`NullInjectorError: No provider for ${stringify(token)}!`); - error.name = "NullInjectorError"; - throw error; - } - return notFoundValue; - } -}; -function makeEnvironmentProviders(providers) { - return { - ɵproviders: providers - }; -} -function importProvidersFrom(...sources) { - return { - ɵproviders: internalImportProvidersFrom(true, sources), - ɵfromNgModule: true - }; -} -function internalImportProvidersFrom(checkForStandaloneCmp, ...sources) { - const providersOut = []; - const dedup = /* @__PURE__ */ new Set(); - let injectorTypesWithProviders; - const collectProviders = (provider) => { - providersOut.push(provider); - }; - deepForEach(sources, (source) => { - if ((typeof ngDevMode === "undefined" || ngDevMode) && checkForStandaloneCmp) { - const cmpDef = getComponentDef(source); - if (cmpDef?.standalone) { - throw new RuntimeError(800, `Importing providers supports NgModule or ModuleWithProviders but got a standalone component "${stringifyForError(source)}"`); - } - } - const internalSource = source; - if (walkProviderTree(internalSource, collectProviders, [], dedup)) { - injectorTypesWithProviders ||= []; - injectorTypesWithProviders.push(internalSource); - } - }); - if (injectorTypesWithProviders !== void 0) { - processInjectorTypesWithProviders(injectorTypesWithProviders, collectProviders); - } - return providersOut; -} -function processInjectorTypesWithProviders(typesWithProviders, visitor) { - for (let i = 0; i < typesWithProviders.length; i++) { - const { ngModule, providers } = typesWithProviders[i]; - deepForEachProvider(providers, (provider) => { - ngDevMode && validateProvider(provider, providers || EMPTY_ARRAY, ngModule); - visitor(provider, ngModule); - }); - } -} -function walkProviderTree(container, visitor, parents, dedup) { - container = resolveForwardRef(container); - if (!container) - return false; - let defType = null; - let injDef = getInjectorDef(container); - const cmpDef = !injDef && getComponentDef(container); - if (!injDef && !cmpDef) { - const ngModule = container.ngModule; - injDef = getInjectorDef(ngModule); - if (injDef) { - defType = ngModule; - } else { - return false; - } - } else if (cmpDef && !cmpDef.standalone) { - return false; - } else { - defType = container; - } - if (ngDevMode && parents.indexOf(defType) !== -1) { - const defName = stringify(defType); - const path = parents.map(stringify); - throwCyclicDependencyError(defName, path); - } - const isDuplicate = dedup.has(defType); - if (cmpDef) { - if (isDuplicate) { - return false; - } - dedup.add(defType); - if (cmpDef.dependencies) { - const deps = typeof cmpDef.dependencies === "function" ? cmpDef.dependencies() : cmpDef.dependencies; - for (const dep of deps) { - walkProviderTree(dep, visitor, parents, dedup); - } - } - } else if (injDef) { - if (injDef.imports != null && !isDuplicate) { - ngDevMode && parents.push(defType); - dedup.add(defType); - let importTypesWithProviders; - try { - deepForEach(injDef.imports, (imported) => { - if (walkProviderTree(imported, visitor, parents, dedup)) { - importTypesWithProviders ||= []; - importTypesWithProviders.push(imported); - } - }); - } finally { - ngDevMode && parents.pop(); - } - if (importTypesWithProviders !== void 0) { - processInjectorTypesWithProviders(importTypesWithProviders, visitor); - } - } - if (!isDuplicate) { - const factory = getFactoryDef(defType) || (() => new defType()); - visitor({ provide: defType, useFactory: factory, deps: EMPTY_ARRAY }, defType); - visitor({ provide: INJECTOR_DEF_TYPES, useValue: defType, multi: true }, defType); - visitor({ provide: ENVIRONMENT_INITIALIZER, useValue: () => ɵɵinject(defType), multi: true }, defType); - } - const defProviders = injDef.providers; - if (defProviders != null && !isDuplicate) { - const injectorType = container; - deepForEachProvider(defProviders, (provider) => { - ngDevMode && validateProvider(provider, defProviders, injectorType); - visitor(provider, injectorType); - }); - } - } else { - return false; - } - return defType !== container && container.providers !== void 0; -} -function validateProvider(provider, providers, containerType) { - if (isTypeProvider(provider) || isValueProvider(provider) || isFactoryProvider(provider) || isExistingProvider(provider)) { - return; - } - const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide)); - if (!classRef) { - throwInvalidProviderError(containerType, providers, provider); - } -} -function deepForEachProvider(providers, fn) { - for (let provider of providers) { - if (isEnvironmentProviders(provider)) { - provider = provider.ɵproviders; - } - if (Array.isArray(provider)) { - deepForEachProvider(provider, fn); - } else { - fn(provider); - } - } -} -var USE_VALUE$1 = getClosureSafeProperty({ provide: String, useValue: getClosureSafeProperty }); -function isValueProvider(value) { - return value !== null && typeof value == "object" && USE_VALUE$1 in value; -} -function isExistingProvider(value) { - return !!(value && value.useExisting); -} -function isFactoryProvider(value) { - return !!(value && value.useFactory); -} -function isTypeProvider(value) { - return typeof value === "function"; -} -function isClassProvider(value) { - return !!value.useClass; -} -var INJECTOR_SCOPE = new InjectionToken(ngDevMode ? "Set Injector scope." : ""); -var NOT_YET = {}; -var CIRCULAR = {}; -var NULL_INJECTOR = void 0; -function getNullInjector() { - if (NULL_INJECTOR === void 0) { - NULL_INJECTOR = new NullInjector(); - } - return NULL_INJECTOR; -} -var EnvironmentInjector = class { -}; -var R3Injector = class extends EnvironmentInjector { - /** - * Flag indicating that this injector was previously destroyed. - */ - get destroyed() { - return this._destroyed; - } - constructor(providers, parent, source, scopes) { - super(); - this.parent = parent; - this.source = source; - this.scopes = scopes; - this.records = /* @__PURE__ */ new Map(); - this._ngOnDestroyHooks = /* @__PURE__ */ new Set(); - this._onDestroyHooks = []; - this._destroyed = false; - forEachSingleProvider(providers, (provider) => this.processProvider(provider)); - this.records.set(INJECTOR, makeRecord(void 0, this)); - if (scopes.has("environment")) { - this.records.set(EnvironmentInjector, makeRecord(void 0, this)); - } - const record = this.records.get(INJECTOR_SCOPE); - if (record != null && typeof record.value === "string") { - this.scopes.add(record.value); - } - this.injectorDefTypes = new Set(this.get(INJECTOR_DEF_TYPES, EMPTY_ARRAY, InjectFlags.Self)); - } - /** - * Destroy the injector and release references to every instance or provider associated with it. - * - * Also calls the `OnDestroy` lifecycle hooks of every instance that was created for which a - * hook was found. - */ - destroy() { - this.assertNotDestroyed(); - this._destroyed = true; - try { - for (const service of this._ngOnDestroyHooks) { - service.ngOnDestroy(); - } - const onDestroyHooks = this._onDestroyHooks; - this._onDestroyHooks = []; - for (const hook of onDestroyHooks) { - hook(); - } - } finally { - this.records.clear(); - this._ngOnDestroyHooks.clear(); - this.injectorDefTypes.clear(); - } - } - onDestroy(callback) { - this.assertNotDestroyed(); - this._onDestroyHooks.push(callback); - return () => this.removeOnDestroy(callback); - } - runInContext(fn) { - this.assertNotDestroyed(); - const previousInjector = setCurrentInjector(this); - const previousInjectImplementation = setInjectImplementation(void 0); - let prevInjectContext; - if (ngDevMode) { - prevInjectContext = setInjectorProfilerContext({ injector: this, token: null }); - } - try { - return fn(); - } finally { - setCurrentInjector(previousInjector); - setInjectImplementation(previousInjectImplementation); - ngDevMode && setInjectorProfilerContext(prevInjectContext); - } - } - get(token, notFoundValue = THROW_IF_NOT_FOUND, flags = InjectFlags.Default) { - this.assertNotDestroyed(); - if (token.hasOwnProperty(NG_ENV_ID)) { - return token[NG_ENV_ID](this); - } - flags = convertToBitFlags(flags); - let prevInjectContext; - if (ngDevMode) { - prevInjectContext = setInjectorProfilerContext({ injector: this, token }); - } - const previousInjector = setCurrentInjector(this); - const previousInjectImplementation = setInjectImplementation(void 0); - try { - if (!(flags & InjectFlags.SkipSelf)) { - let record = this.records.get(token); - if (record === void 0) { - const def = couldBeInjectableType(token) && getInjectableDef(token); - if (def && this.injectableDefInScope(def)) { - if (ngDevMode) { - runInInjectorProfilerContext(this, token, () => { - emitProviderConfiguredEvent(token); - }); - } - record = makeRecord(injectableDefOrInjectorDefFactory(token), NOT_YET); - } else { - record = null; - } - this.records.set(token, record); - } - if (record != null) { - return this.hydrate(token, record); - } - } - const nextInjector = !(flags & InjectFlags.Self) ? this.parent : getNullInjector(); - notFoundValue = flags & InjectFlags.Optional && notFoundValue === THROW_IF_NOT_FOUND ? null : notFoundValue; - return nextInjector.get(token, notFoundValue); - } catch (e) { - if (e.name === "NullInjectorError") { - const path = e[NG_TEMP_TOKEN_PATH] = e[NG_TEMP_TOKEN_PATH] || []; - path.unshift(stringify(token)); - if (previousInjector) { - throw e; - } else { - return catchInjectorError(e, token, "R3InjectorError", this.source); - } - } else { - throw e; - } - } finally { - setInjectImplementation(previousInjectImplementation); - setCurrentInjector(previousInjector); - ngDevMode && setInjectorProfilerContext(prevInjectContext); - } - } - /** @internal */ - resolveInjectorInitializers() { - const previousInjector = setCurrentInjector(this); - const previousInjectImplementation = setInjectImplementation(void 0); - let prevInjectContext; - if (ngDevMode) { - prevInjectContext = setInjectorProfilerContext({ injector: this, token: null }); - } - try { - const initializers = this.get(ENVIRONMENT_INITIALIZER, EMPTY_ARRAY, InjectFlags.Self); - if (ngDevMode && !Array.isArray(initializers)) { - throw new RuntimeError(-209, `Unexpected type of the \`ENVIRONMENT_INITIALIZER\` token value (expected an array, but got ${typeof initializers}). Please check that the \`ENVIRONMENT_INITIALIZER\` token is configured as a \`multi: true\` provider.`); - } - for (const initializer of initializers) { - initializer(); - } - } finally { - setCurrentInjector(previousInjector); - setInjectImplementation(previousInjectImplementation); - ngDevMode && setInjectorProfilerContext(prevInjectContext); - } - } - toString() { - const tokens = []; - const records = this.records; - for (const token of records.keys()) { - tokens.push(stringify(token)); - } - return `R3Injector[${tokens.join(", ")}]`; - } - assertNotDestroyed() { - if (this._destroyed) { - throw new RuntimeError(205, ngDevMode && "Injector has already been destroyed."); - } - } - /** - * Process a `SingleProvider` and add it. - */ - processProvider(provider) { - provider = resolveForwardRef(provider); - let token = isTypeProvider(provider) ? provider : resolveForwardRef(provider && provider.provide); - const record = providerToRecord(provider); - if (ngDevMode) { - runInInjectorProfilerContext(this, token, () => { - if (isValueProvider(provider)) { - emitInstanceCreatedByInjectorEvent(provider.useValue); - } - emitProviderConfiguredEvent(provider); - }); - } - if (!isTypeProvider(provider) && provider.multi === true) { - let multiRecord = this.records.get(token); - if (multiRecord) { - if (ngDevMode && multiRecord.multi === void 0) { - throwMixedMultiProviderError(); - } - } else { - multiRecord = makeRecord(void 0, NOT_YET, true); - multiRecord.factory = () => injectArgs(multiRecord.multi); - this.records.set(token, multiRecord); - } - token = provider; - multiRecord.multi.push(provider); - } else { - if (ngDevMode) { - const existing = this.records.get(token); - if (existing && existing.multi !== void 0) { - throwMixedMultiProviderError(); - } - } - } - this.records.set(token, record); - } - hydrate(token, record) { - if (ngDevMode && record.value === CIRCULAR) { - throwCyclicDependencyError(stringify(token)); - } else if (record.value === NOT_YET) { - record.value = CIRCULAR; - if (ngDevMode) { - runInInjectorProfilerContext(this, token, () => { - record.value = record.factory(); - emitInstanceCreatedByInjectorEvent(record.value); - }); - } else { - record.value = record.factory(); - } - } - if (typeof record.value === "object" && record.value && hasOnDestroy(record.value)) { - this._ngOnDestroyHooks.add(record.value); - } - return record.value; - } - injectableDefInScope(def) { - if (!def.providedIn) { - return false; - } - const providedIn = resolveForwardRef(def.providedIn); - if (typeof providedIn === "string") { - return providedIn === "any" || this.scopes.has(providedIn); - } else { - return this.injectorDefTypes.has(providedIn); - } - } - removeOnDestroy(callback) { - const destroyCBIdx = this._onDestroyHooks.indexOf(callback); - if (destroyCBIdx !== -1) { - this._onDestroyHooks.splice(destroyCBIdx, 1); - } - } -}; -function injectableDefOrInjectorDefFactory(token) { - const injectableDef = getInjectableDef(token); - const factory = injectableDef !== null ? injectableDef.factory : getFactoryDef(token); - if (factory !== null) { - return factory; - } - if (token instanceof InjectionToken) { - throw new RuntimeError(204, ngDevMode && `Token ${stringify(token)} is missing a ɵprov definition.`); - } - if (token instanceof Function) { - return getUndecoratedInjectableFactory(token); - } - throw new RuntimeError(204, ngDevMode && "unreachable"); -} -function getUndecoratedInjectableFactory(token) { - const paramLength = token.length; - if (paramLength > 0) { - throw new RuntimeError(204, ngDevMode && `Can't resolve all parameters for ${stringify(token)}: (${newArray(paramLength, "?").join(", ")}).`); - } - const inheritedInjectableDef = getInheritedInjectableDef(token); - if (inheritedInjectableDef !== null) { - return () => inheritedInjectableDef.factory(token); - } else { - return () => new token(); - } -} -function providerToRecord(provider) { - if (isValueProvider(provider)) { - return makeRecord(void 0, provider.useValue); - } else { - const factory = providerToFactory(provider); - return makeRecord(factory, NOT_YET); - } -} -function providerToFactory(provider, ngModuleType, providers) { - let factory = void 0; - if (ngDevMode && isEnvironmentProviders(provider)) { - throwInvalidProviderError(void 0, providers, provider); - } - if (isTypeProvider(provider)) { - const unwrappedProvider = resolveForwardRef(provider); - return getFactoryDef(unwrappedProvider) || injectableDefOrInjectorDefFactory(unwrappedProvider); - } else { - if (isValueProvider(provider)) { - factory = () => resolveForwardRef(provider.useValue); - } else if (isFactoryProvider(provider)) { - factory = () => provider.useFactory(...injectArgs(provider.deps || [])); - } else if (isExistingProvider(provider)) { - factory = () => ɵɵinject(resolveForwardRef(provider.useExisting)); - } else { - const classRef = resolveForwardRef(provider && (provider.useClass || provider.provide)); - if (ngDevMode && !classRef) { - throwInvalidProviderError(ngModuleType, providers, provider); - } - if (hasDeps(provider)) { - factory = () => new classRef(...injectArgs(provider.deps)); - } else { - return getFactoryDef(classRef) || injectableDefOrInjectorDefFactory(classRef); - } - } - } - return factory; -} -function makeRecord(factory, value, multi = false) { - return { - factory, - value, - multi: multi ? [] : void 0 - }; -} -function hasDeps(value) { - return !!value.deps; -} -function hasOnDestroy(value) { - return value !== null && typeof value === "object" && typeof value.ngOnDestroy === "function"; -} -function couldBeInjectableType(value) { - return typeof value === "function" || typeof value === "object" && value instanceof InjectionToken; -} -function forEachSingleProvider(providers, fn) { - for (const provider of providers) { - if (Array.isArray(provider)) { - forEachSingleProvider(provider, fn); - } else if (provider && isEnvironmentProviders(provider)) { - forEachSingleProvider(provider.ɵproviders, fn); - } else { - fn(provider); - } - } -} -function runInInjectionContext(injector, fn) { - if (injector instanceof R3Injector) { - injector.assertNotDestroyed(); - } - let prevInjectorProfilerContext; - if (ngDevMode) { - prevInjectorProfilerContext = setInjectorProfilerContext({ injector, token: null }); - } - const prevInjector = setCurrentInjector(injector); - const previousInjectImplementation = setInjectImplementation(void 0); - try { - return fn(); - } finally { - setCurrentInjector(prevInjector); - ngDevMode && setInjectorProfilerContext(prevInjectorProfilerContext); - setInjectImplementation(previousInjectImplementation); - } -} -function assertInInjectionContext(debugFn) { - if (!getInjectImplementation() && !getCurrentInjector()) { - throw new RuntimeError(-203, ngDevMode && debugFn.name + "() can only be used within an injection context such as a constructor, a factory function, a field initializer, or a function used with `runInInjectionContext`"); - } -} -var angularCoreDiEnv = { - "ɵɵdefineInjectable": ɵɵdefineInjectable, - "ɵɵdefineInjector": ɵɵdefineInjector, - "ɵɵinject": ɵɵinject, - "ɵɵinvalidFactoryDep": ɵɵinvalidFactoryDep, - "resolveForwardRef": resolveForwardRef -}; -function compileInjectable(type, meta) { - let ngInjectableDef = null; - let ngFactoryDef = null; - if (!type.hasOwnProperty(NG_PROV_DEF)) { - Object.defineProperty(type, NG_PROV_DEF, { - get: () => { - if (ngInjectableDef === null) { - const compiler = getCompilerFacade({ usage: 0, kind: "injectable", type }); - ngInjectableDef = compiler.compileInjectable(angularCoreDiEnv, `ng:///${type.name}/ɵprov.js`, getInjectableMetadata(type, meta)); - } - return ngInjectableDef; - } - }); - } - if (!type.hasOwnProperty(NG_FACTORY_DEF)) { - Object.defineProperty(type, NG_FACTORY_DEF, { - get: () => { - if (ngFactoryDef === null) { - const compiler = getCompilerFacade({ usage: 0, kind: "injectable", type }); - ngFactoryDef = compiler.compileFactory(angularCoreDiEnv, `ng:///${type.name}/ɵfac.js`, { - name: type.name, - type, - typeArgumentCount: 0, - // In JIT mode types are not available nor used. - deps: reflectDependencies(type), - target: compiler.FactoryTarget.Injectable - }); - } - return ngFactoryDef; - }, - // Leave this configurable so that the factories from directives or pipes can take precedence. - configurable: true - }); - } -} -var USE_VALUE = getClosureSafeProperty({ provide: String, useValue: getClosureSafeProperty }); -function isUseClassProvider(meta) { - return meta.useClass !== void 0; -} -function isUseValueProvider(meta) { - return USE_VALUE in meta; -} -function isUseFactoryProvider(meta) { - return meta.useFactory !== void 0; -} -function isUseExistingProvider(meta) { - return meta.useExisting !== void 0; -} -function getInjectableMetadata(type, srcMeta) { - const meta = srcMeta || { providedIn: null }; - const compilerMeta = { - name: type.name, - type, - typeArgumentCount: 0, - providedIn: meta.providedIn - }; - if ((isUseClassProvider(meta) || isUseFactoryProvider(meta)) && meta.deps !== void 0) { - compilerMeta.deps = convertDependencies(meta.deps); - } - if (isUseClassProvider(meta)) { - compilerMeta.useClass = meta.useClass; - } else if (isUseValueProvider(meta)) { - compilerMeta.useValue = meta.useValue; - } else if (isUseFactoryProvider(meta)) { - compilerMeta.useFactory = meta.useFactory; - } else if (isUseExistingProvider(meta)) { - compilerMeta.useExisting = meta.useExisting; - } - return compilerMeta; -} -var Injectable = makeDecorator("Injectable", void 0, void 0, void 0, (type, meta) => compileInjectable(type, meta)); -function createInjector(defType, parent = null, additionalProviders = null, name) { - const injector = createInjectorWithoutInjectorInstances(defType, parent, additionalProviders, name); - injector.resolveInjectorInitializers(); - return injector; -} -function createInjectorWithoutInjectorInstances(defType, parent = null, additionalProviders = null, name, scopes = /* @__PURE__ */ new Set()) { - const providers = [ - additionalProviders || EMPTY_ARRAY, - importProvidersFrom(defType) - ]; - name = name || (typeof defType === "object" ? void 0 : stringify(defType)); - return new R3Injector(providers, parent || getNullInjector(), name || null, scopes); -} -var _Injector = class _Injector { - static create(options, parent) { - if (Array.isArray(options)) { - return createInjector({ name: "" }, parent, options, ""); - } else { - const name = options.name ?? ""; - return createInjector({ name }, options.parent, options.providers, name); - } - } -}; -_Injector.THROW_IF_NOT_FOUND = THROW_IF_NOT_FOUND; -_Injector.NULL = new NullInjector(); -_Injector.ɵprov = ɵɵdefineInjectable({ - token: _Injector, - providedIn: "any", - factory: () => ɵɵinject(INJECTOR) -}); -_Injector.__NG_ELEMENT_ID__ = -1; -var Injector = _Injector; -function isModuleWithProviders(value) { - return value.ngModule !== void 0; -} -function isNgModule(value) { - return !!getNgModuleDef(value); -} -function isPipe(value) { - return !!getPipeDef$1(value); -} -function isDirective(value) { - return !!getDirectiveDef(value); -} -function isComponent(value) { - return !!getComponentDef(value); -} -function getDependencyTypeForError(type) { - if (getComponentDef(type)) - return "component"; - if (getDirectiveDef(type)) - return "directive"; - if (getPipeDef$1(type)) - return "pipe"; - return "type"; -} -function verifyStandaloneImport(depType, importingType) { - if (isForwardRef(depType)) { - depType = resolveForwardRef(depType); - if (!depType) { - throw new Error(`Expected forwardRef function, imported from "${stringifyForError(importingType)}", to return a standalone entity or NgModule but got "${stringifyForError(depType) || depType}".`); - } - } - if (getNgModuleDef(depType) == null) { - const def = getComponentDef(depType) || getDirectiveDef(depType) || getPipeDef$1(depType); - if (def != null) { - if (!def.standalone) { - throw new Error(`The "${stringifyForError(depType)}" ${getDependencyTypeForError(depType)}, imported from "${stringifyForError(importingType)}", is not standalone. Did you forget to add the standalone: true flag?`); - } - } else { - if (isModuleWithProviders(depType)) { - throw new Error(`A module with providers was imported from "${stringifyForError(importingType)}". Modules with providers are not supported in standalone components imports.`); - } else { - throw new Error(`The "${stringifyForError(depType)}" type, imported from "${stringifyForError(importingType)}", must be a standalone component / directive / pipe or an NgModule. Did you forget to add the required @Component / @Directive / @Pipe or @NgModule annotation?`); - } - } - } -} -var DOCUMENT = void 0; -function setDocument(document2) { - DOCUMENT = document2; -} -function getDocument() { - if (DOCUMENT !== void 0) { - return DOCUMENT; - } else if (typeof document !== "undefined") { - return document; - } - throw new RuntimeError(210, (typeof ngDevMode === "undefined" || ngDevMode) && `The document object is not available in this context. Make sure the DOCUMENT injection token is provided.`); -} -var APP_ID = new InjectionToken(ngDevMode ? "AppId" : "", { - providedIn: "root", - factory: () => DEFAULT_APP_ID -}); -var DEFAULT_APP_ID = "ng"; -var PLATFORM_INITIALIZER = new InjectionToken(ngDevMode ? "Platform Initializer" : ""); -var PLATFORM_ID = new InjectionToken(ngDevMode ? "Platform ID" : "", { - providedIn: "platform", - factory: () => "unknown" - // set a default platform name, when none set explicitly -}); -var PACKAGE_ROOT_URL = new InjectionToken(ngDevMode ? "Application Packages Root URL" : ""); -var ANIMATION_MODULE_TYPE = new InjectionToken(ngDevMode ? "AnimationModuleType" : ""); -var CSP_NONCE = new InjectionToken(ngDevMode ? "CSP nonce" : "", { - providedIn: "root", - factory: () => { - return getDocument().body?.querySelector("[ngCspNonce]")?.getAttribute("ngCspNonce") || null; - } -}); -var IMAGE_CONFIG_DEFAULTS = { - breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840], - disableImageSizeWarning: false, - disableImageLazyLoadWarning: false -}; -var IMAGE_CONFIG = new InjectionToken(ngDevMode ? "ImageConfig" : "", { providedIn: "root", factory: () => IMAGE_CONFIG_DEFAULTS }); -function ɵɵresolveWindow(element) { - return element.ownerDocument.defaultView; -} -function ɵɵresolveDocument(element) { - return element.ownerDocument; -} -function ɵɵresolveBody(element) { - return element.ownerDocument.body; -} -var INTERPOLATION_DELIMITER = `�`; -function maybeUnwrapFn(value) { - if (value instanceof Function) { - return value(); - } else { - return value; - } -} -function isPlatformBrowser(injector) { - return (injector ?? inject(Injector)).get(PLATFORM_ID) === "browser"; -} -var USE_RUNTIME_DEPS_TRACKER_FOR_JIT = true; -var DepsTracker = class { - constructor() { - this.ownerNgModule = /* @__PURE__ */ new Map(); - this.ngModulesWithSomeUnresolvedDecls = /* @__PURE__ */ new Set(); - this.ngModulesScopeCache = /* @__PURE__ */ new Map(); - this.standaloneComponentsScopeCache = /* @__PURE__ */ new Map(); - } - /** - * Attempts to resolve ng module's forward ref declarations as much as possible and add them to - * the `ownerNgModule` map. This method normally should be called after the initial parsing when - * all the forward refs are resolved (e.g., when trying to render a component) - */ - resolveNgModulesDecls() { - if (this.ngModulesWithSomeUnresolvedDecls.size === 0) { - return; - } - for (const moduleType of this.ngModulesWithSomeUnresolvedDecls) { - const def = getNgModuleDef(moduleType); - if (def?.declarations) { - for (const decl of maybeUnwrapFn(def.declarations)) { - if (isComponent(decl)) { - this.ownerNgModule.set(decl, moduleType); - } - } - } - } - this.ngModulesWithSomeUnresolvedDecls.clear(); - } - /** @override */ - getComponentDependencies(type, rawImports) { - this.resolveNgModulesDecls(); - const def = getComponentDef(type); - if (def === null) { - throw new Error(`Attempting to get component dependencies for a type that is not a component: ${type}`); - } - if (def.standalone) { - const scope = this.getStandaloneComponentScope(type, rawImports); - if (scope.compilation.isPoisoned) { - return { dependencies: [] }; - } - return { - dependencies: [ - ...scope.compilation.directives, - ...scope.compilation.pipes, - ...scope.compilation.ngModules - ] - }; - } else { - if (!this.ownerNgModule.has(type)) { - return { dependencies: [] }; - } - const scope = this.getNgModuleScope(this.ownerNgModule.get(type)); - if (scope.compilation.isPoisoned) { - return { dependencies: [] }; - } - return { - dependencies: [ - ...scope.compilation.directives, - ...scope.compilation.pipes - ] - }; - } - } - /** - * @override - * This implementation does not make use of param scopeInfo since it assumes the scope info is - * already added to the type itself through methods like {@link ɵɵsetNgModuleScope} - */ - registerNgModule(type, scopeInfo) { - if (!isNgModule(type)) { - throw new Error(`Attempting to register a Type which is not NgModule as NgModule: ${type}`); - } - this.ngModulesWithSomeUnresolvedDecls.add(type); - } - /** @override */ - clearScopeCacheFor(type) { - this.ngModulesScopeCache.delete(type); - this.standaloneComponentsScopeCache.delete(type); - } - /** @override */ - getNgModuleScope(type) { - if (this.ngModulesScopeCache.has(type)) { - return this.ngModulesScopeCache.get(type); - } - const scope = this.computeNgModuleScope(type); - this.ngModulesScopeCache.set(type, scope); - return scope; - } - /** Compute NgModule scope afresh. */ - computeNgModuleScope(type) { - const def = getNgModuleDef(type, true); - const scope = { - exported: { directives: /* @__PURE__ */ new Set(), pipes: /* @__PURE__ */ new Set() }, - compilation: { directives: /* @__PURE__ */ new Set(), pipes: /* @__PURE__ */ new Set() } - }; - for (const imported of maybeUnwrapFn(def.imports)) { - if (isNgModule(imported)) { - const importedScope = this.getNgModuleScope(imported); - addSet(importedScope.exported.directives, scope.compilation.directives); - addSet(importedScope.exported.pipes, scope.compilation.pipes); - } else if (isStandalone(imported)) { - if (isDirective(imported) || isComponent(imported)) { - scope.compilation.directives.add(imported); - } else if (isPipe(imported)) { - scope.compilation.pipes.add(imported); - } else { - throw new RuntimeError(1e3, "The standalone imported type is neither a component nor a directive nor a pipe"); - } - } else { - scope.compilation.isPoisoned = true; - break; - } - } - if (!scope.compilation.isPoisoned) { - for (const decl of maybeUnwrapFn(def.declarations)) { - if (isNgModule(decl) || isStandalone(decl)) { - scope.compilation.isPoisoned = true; - break; - } - if (isPipe(decl)) { - scope.compilation.pipes.add(decl); - } else { - scope.compilation.directives.add(decl); - } - } - } - for (const exported of maybeUnwrapFn(def.exports)) { - if (isNgModule(exported)) { - const exportedScope = this.getNgModuleScope(exported); - addSet(exportedScope.exported.directives, scope.exported.directives); - addSet(exportedScope.exported.pipes, scope.exported.pipes); - addSet(exportedScope.exported.directives, scope.compilation.directives); - addSet(exportedScope.exported.pipes, scope.compilation.pipes); - } else if (isPipe(exported)) { - scope.exported.pipes.add(exported); - } else { - scope.exported.directives.add(exported); - } - } - return scope; - } - /** @override */ - getStandaloneComponentScope(type, rawImports) { - if (this.standaloneComponentsScopeCache.has(type)) { - return this.standaloneComponentsScopeCache.get(type); - } - const ans = this.computeStandaloneComponentScope(type, rawImports); - this.standaloneComponentsScopeCache.set(type, ans); - return ans; - } - computeStandaloneComponentScope(type, rawImports) { - const ans = { - compilation: { - // Standalone components are always able to self-reference. - directives: /* @__PURE__ */ new Set([type]), - pipes: /* @__PURE__ */ new Set(), - ngModules: /* @__PURE__ */ new Set() - } - }; - for (const rawImport of flatten(rawImports ?? [])) { - const imported = resolveForwardRef(rawImport); - try { - verifyStandaloneImport(imported, type); - } catch (e) { - ans.compilation.isPoisoned = true; - return ans; - } - if (isNgModule(imported)) { - ans.compilation.ngModules.add(imported); - const importedScope = this.getNgModuleScope(imported); - if (importedScope.exported.isPoisoned) { - ans.compilation.isPoisoned = true; - return ans; - } - addSet(importedScope.exported.directives, ans.compilation.directives); - addSet(importedScope.exported.pipes, ans.compilation.pipes); - } else if (isPipe(imported)) { - ans.compilation.pipes.add(imported); - } else if (isDirective(imported) || isComponent(imported)) { - ans.compilation.directives.add(imported); - } else { - ans.compilation.isPoisoned = true; - return ans; - } - } - return ans; - } - /** @override */ - isOrphanComponent(cmp) { - const def = getComponentDef(cmp); - if (!def || def.standalone) { - return false; - } - this.resolveNgModulesDecls(); - return !this.ownerNgModule.has(cmp); - } -}; -function addSet(sourceSet, targetSet) { - for (const m of sourceSet) { - targetSet.add(m); - } -} -var depsTracker = new DepsTracker(); -var modules = /* @__PURE__ */ new Map(); -var checkForDuplicateNgModules = true; -function assertSameOrNotExisting(id, type, incoming) { - if (type && type !== incoming && checkForDuplicateNgModules) { - throw new Error(`Duplicate module registered for ${id} - ${stringify(type)} vs ${stringify(type.name)}`); - } -} -function registerNgModuleType(ngModuleType, id) { - const existing = modules.get(id) || null; - assertSameOrNotExisting(id, existing, ngModuleType); - modules.set(id, ngModuleType); -} -function getRegisteredNgModuleType(id) { - return modules.get(id); -} -function setAllowDuplicateNgModuleIdsForTest(allowDuplicates) { - checkForDuplicateNgModules = !allowDuplicates; -} -var CUSTOM_ELEMENTS_SCHEMA = { - name: "custom-elements" -}; -var NO_ERRORS_SCHEMA = { - name: "no-errors-schema" -}; -var shouldThrowErrorOnUnknownElement = false; -function ɵsetUnknownElementStrictMode(shouldThrow) { - shouldThrowErrorOnUnknownElement = shouldThrow; -} -function ɵgetUnknownElementStrictMode() { - return shouldThrowErrorOnUnknownElement; -} -var shouldThrowErrorOnUnknownProperty = false; -function ɵsetUnknownPropertyStrictMode(shouldThrow) { - shouldThrowErrorOnUnknownProperty = shouldThrow; -} -function ɵgetUnknownPropertyStrictMode() { - return shouldThrowErrorOnUnknownProperty; -} -function validateElementIsKnown(element, lView, tagName, schemas, hasDirectives) { - if (schemas === null) - return; - if (!hasDirectives && tagName !== null) { - const isUnknown = ( - // Note that we can't check for `typeof HTMLUnknownElement === 'function'` because - // Domino doesn't expose HTMLUnknownElement globally. - typeof HTMLUnknownElement !== "undefined" && HTMLUnknownElement && element instanceof HTMLUnknownElement || typeof customElements !== "undefined" && tagName.indexOf("-") > -1 && !customElements.get(tagName) - ); - if (isUnknown && !matchingSchemas(schemas, tagName)) { - const isHostStandalone = isHostComponentStandalone(lView); - const templateLocation = getTemplateLocationDetails(lView); - const schemas2 = `'${isHostStandalone ? "@Component" : "@NgModule"}.schemas'`; - let message = `'${tagName}' is not a known element${templateLocation}: -`; - message += `1. If '${tagName}' is an Angular component, then verify that it is ${isHostStandalone ? "included in the '@Component.imports' of this component" : "a part of an @NgModule where this component is declared"}. -`; - if (tagName && tagName.indexOf("-") > -1) { - message += `2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas2} of this component to suppress this message.`; - } else { - message += `2. To allow any element add 'NO_ERRORS_SCHEMA' to the ${schemas2} of this component.`; - } - if (shouldThrowErrorOnUnknownElement) { - throw new RuntimeError(304, message); - } else { - console.error(formatRuntimeError(304, message)); - } - } - } -} -function isPropertyValid(element, propName, tagName, schemas) { - if (schemas === null) - return true; - if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) { - return true; - } - return typeof Node === "undefined" || Node === null || !(element instanceof Node); -} -function handleUnknownPropertyError(propName, tagName, nodeType, lView) { - if (!tagName && nodeType === 4) { - tagName = "ng-template"; - } - const isHostStandalone = isHostComponentStandalone(lView); - const templateLocation = getTemplateLocationDetails(lView); - let message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'${templateLocation}.`; - const schemas = `'${isHostStandalone ? "@Component" : "@NgModule"}.schemas'`; - const importLocation = isHostStandalone ? "included in the '@Component.imports' of this component" : "a part of an @NgModule where this component is declared"; - if (KNOWN_CONTROL_FLOW_DIRECTIVES.has(propName)) { - const correspondingImport = KNOWN_CONTROL_FLOW_DIRECTIVES.get(propName); - message += ` -If the '${propName}' is an Angular control flow directive, please make sure that either the '${correspondingImport}' directive or the 'CommonModule' is ${importLocation}.`; - } else { - message += ` -1. If '${tagName}' is an Angular component and it has the '${propName}' input, then verify that it is ${importLocation}.`; - if (tagName && tagName.indexOf("-") > -1) { - message += ` -2. If '${tagName}' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the ${schemas} of this component to suppress this message.`; - message += ` -3. To allow any property add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`; - } else { - message += ` -2. To allow any property add 'NO_ERRORS_SCHEMA' to the ${schemas} of this component.`; - } - } - reportUnknownPropertyError(message); -} -function reportUnknownPropertyError(message) { - if (shouldThrowErrorOnUnknownProperty) { - throw new RuntimeError(303, message); - } else { - console.error(formatRuntimeError(303, message)); - } -} -function getDeclarationComponentDef(lView) { - !ngDevMode && throwError2("Must never be called in production mode"); - const declarationLView = lView[DECLARATION_COMPONENT_VIEW]; - const context2 = declarationLView[CONTEXT]; - if (!context2) - return null; - return context2.constructor ? getComponentDef(context2.constructor) : null; -} -function isHostComponentStandalone(lView) { - !ngDevMode && throwError2("Must never be called in production mode"); - const componentDef = getDeclarationComponentDef(lView); - return !!componentDef?.standalone; -} -function getTemplateLocationDetails(lView) { - !ngDevMode && throwError2("Must never be called in production mode"); - const hostComponentDef = getDeclarationComponentDef(lView); - const componentClassName = hostComponentDef?.type?.name; - return componentClassName ? ` (used in the '${componentClassName}' component template)` : ""; -} -var KNOWN_CONTROL_FLOW_DIRECTIVES = /* @__PURE__ */ new Map([ - ["ngIf", "NgIf"], - ["ngFor", "NgFor"], - ["ngSwitchCase", "NgSwitchCase"], - ["ngSwitchDefault", "NgSwitchDefault"] -]); -function matchingSchemas(schemas, tagName) { - if (schemas !== null) { - for (let i = 0; i < schemas.length; i++) { - const schema = schemas[i]; - if (schema === NO_ERRORS_SCHEMA || schema === CUSTOM_ELEMENTS_SCHEMA && tagName && tagName.indexOf("-") > -1) { - return true; - } - } - } - return false; -} -var SKIP_HYDRATION_ATTR_NAME = "ngSkipHydration"; -var SKIP_HYDRATION_ATTR_NAME_LOWER_CASE = "ngskiphydration"; -function hasSkipHydrationAttrOnTNode(tNode) { - const attrs = tNode.mergedAttrs; - if (attrs === null) - return false; - for (let i = 0; i < attrs.length; i += 2) { - const value = attrs[i]; - if (typeof value === "number") - return false; - if (typeof value === "string" && value.toLowerCase() === SKIP_HYDRATION_ATTR_NAME_LOWER_CASE) { - return true; - } - } - return false; -} -function hasSkipHydrationAttrOnRElement(rNode) { - return rNode.hasAttribute(SKIP_HYDRATION_ATTR_NAME); -} -function hasInSkipHydrationBlockFlag(tNode) { - return (tNode.flags & 128) === 128; -} -function isInSkipHydrationBlock(tNode) { - if (hasInSkipHydrationBlockFlag(tNode)) { - return true; - } - let currentTNode = tNode.parent; - while (currentTNode) { - if (hasInSkipHydrationBlockFlag(tNode) || hasSkipHydrationAttrOnTNode(currentTNode)) { - return true; - } - currentTNode = currentTNode.parent; - } - return false; -} -var RendererStyleFlags2; -(function(RendererStyleFlags22) { - RendererStyleFlags22[RendererStyleFlags22["Important"] = 1] = "Important"; - RendererStyleFlags22[RendererStyleFlags22["DashCase"] = 2] = "DashCase"; -})(RendererStyleFlags2 || (RendererStyleFlags2 = {})); -var COMMENT_DISALLOWED = /^>|^->||--!>|)/g; -var COMMENT_DELIMITER_ESCAPED = "​$1​"; -function escapeCommentText(value) { - return value.replace(COMMENT_DISALLOWED, (text) => text.replace(COMMENT_DELIMITER, COMMENT_DELIMITER_ESCAPED)); -} -var TRACKED_LVIEWS = /* @__PURE__ */ new Map(); -var uniqueIdCounter = 0; -function getUniqueLViewId() { - return uniqueIdCounter++; -} -function registerLView(lView) { - ngDevMode && assertNumber(lView[ID], "LView must have an ID in order to be registered"); - TRACKED_LVIEWS.set(lView[ID], lView); -} -function getLViewById(id) { - ngDevMode && assertNumber(id, "ID used for LView lookup must be a number"); - return TRACKED_LVIEWS.get(id) || null; -} -function unregisterLView(lView) { - ngDevMode && assertNumber(lView[ID], "Cannot stop tracking an LView that does not have an ID"); - TRACKED_LVIEWS.delete(lView[ID]); -} -var LContext = class { - /** Component's parent view data. */ - get lView() { - return getLViewById(this.lViewId); - } - constructor(lViewId, nodeIndex, native) { - this.lViewId = lViewId; - this.nodeIndex = nodeIndex; - this.native = native; - } -}; -function getLContext(target) { - let mpValue = readPatchedData(target); - if (mpValue) { - if (isLView(mpValue)) { - const lView = mpValue; - let nodeIndex; - let component = void 0; - let directives = void 0; - if (isComponentInstance(target)) { - nodeIndex = findViaComponent(lView, target); - if (nodeIndex == -1) { - throw new Error("The provided component was not found in the application"); - } - component = target; - } else if (isDirectiveInstance(target)) { - nodeIndex = findViaDirective(lView, target); - if (nodeIndex == -1) { - throw new Error("The provided directive was not found in the application"); - } - directives = getDirectivesAtNodeIndex(nodeIndex, lView); - } else { - nodeIndex = findViaNativeElement(lView, target); - if (nodeIndex == -1) { - return null; - } - } - const native = unwrapRNode(lView[nodeIndex]); - const existingCtx = readPatchedData(native); - const context2 = existingCtx && !Array.isArray(existingCtx) ? existingCtx : createLContext(lView, nodeIndex, native); - if (component && context2.component === void 0) { - context2.component = component; - attachPatchData(context2.component, context2); - } - if (directives && context2.directives === void 0) { - context2.directives = directives; - for (let i = 0; i < directives.length; i++) { - attachPatchData(directives[i], context2); - } - } - attachPatchData(context2.native, context2); - mpValue = context2; - } - } else { - const rElement = target; - ngDevMode && assertDomNode(rElement); - let parent = rElement; - while (parent = parent.parentNode) { - const parentContext = readPatchedData(parent); - if (parentContext) { - const lView = Array.isArray(parentContext) ? parentContext : parentContext.lView; - if (!lView) { - return null; - } - const index = findViaNativeElement(lView, rElement); - if (index >= 0) { - const native = unwrapRNode(lView[index]); - const context2 = createLContext(lView, index, native); - attachPatchData(native, context2); - mpValue = context2; - break; - } - } - } - } - return mpValue || null; -} -function createLContext(lView, nodeIndex, native) { - return new LContext(lView[ID], nodeIndex, native); -} -function getComponentViewByInstance(componentInstance) { - let patchedData = readPatchedData(componentInstance); - let lView; - if (isLView(patchedData)) { - const contextLView = patchedData; - const nodeIndex = findViaComponent(contextLView, componentInstance); - lView = getComponentLViewByIndex(nodeIndex, contextLView); - const context2 = createLContext(contextLView, nodeIndex, lView[HOST]); - context2.component = componentInstance; - attachPatchData(componentInstance, context2); - attachPatchData(context2.native, context2); - } else { - const context2 = patchedData; - const contextLView = context2.lView; - ngDevMode && assertLView(contextLView); - lView = getComponentLViewByIndex(context2.nodeIndex, contextLView); - } - return lView; -} -var MONKEY_PATCH_KEY_NAME = "__ngContext__"; -function attachPatchData(target, data) { - ngDevMode && assertDefined(target, "Target expected"); - if (isLView(data)) { - target[MONKEY_PATCH_KEY_NAME] = data[ID]; - registerLView(data); - } else { - target[MONKEY_PATCH_KEY_NAME] = data; - } -} -function readPatchedData(target) { - ngDevMode && assertDefined(target, "Target expected"); - const data = target[MONKEY_PATCH_KEY_NAME]; - return typeof data === "number" ? getLViewById(data) : data || null; -} -function readPatchedLView(target) { - const value = readPatchedData(target); - if (value) { - return isLView(value) ? value : value.lView; - } - return null; -} -function isComponentInstance(instance) { - return instance && instance.constructor && instance.constructor.ɵcmp; -} -function isDirectiveInstance(instance) { - return instance && instance.constructor && instance.constructor.ɵdir; -} -function findViaNativeElement(lView, target) { - const tView = lView[TVIEW]; - for (let i = HEADER_OFFSET; i < tView.bindingStartIndex; i++) { - if (unwrapRNode(lView[i]) === target) { - return i; - } - } - return -1; -} -function traverseNextElement(tNode) { - if (tNode.child) { - return tNode.child; - } else if (tNode.next) { - return tNode.next; - } else { - while (tNode.parent && !tNode.parent.next) { - tNode = tNode.parent; - } - return tNode.parent && tNode.parent.next; - } -} -function findViaComponent(lView, componentInstance) { - const componentIndices = lView[TVIEW].components; - if (componentIndices) { - for (let i = 0; i < componentIndices.length; i++) { - const elementComponentIndex = componentIndices[i]; - const componentView = getComponentLViewByIndex(elementComponentIndex, lView); - if (componentView[CONTEXT] === componentInstance) { - return elementComponentIndex; - } - } - } else { - const rootComponentView = getComponentLViewByIndex(HEADER_OFFSET, lView); - const rootComponent = rootComponentView[CONTEXT]; - if (rootComponent === componentInstance) { - return HEADER_OFFSET; - } - } - return -1; -} -function findViaDirective(lView, directiveInstance) { - let tNode = lView[TVIEW].firstChild; - while (tNode) { - const directiveIndexStart = tNode.directiveStart; - const directiveIndexEnd = tNode.directiveEnd; - for (let i = directiveIndexStart; i < directiveIndexEnd; i++) { - if (lView[i] === directiveInstance) { - return tNode.index; - } - } - tNode = traverseNextElement(tNode); - } - return -1; -} -function getDirectivesAtNodeIndex(nodeIndex, lView) { - const tNode = lView[TVIEW].data[nodeIndex]; - if (tNode.directiveStart === 0) - return EMPTY_ARRAY; - const results = []; - for (let i = tNode.directiveStart; i < tNode.directiveEnd; i++) { - const directiveInstance = lView[i]; - if (!isComponentInstance(directiveInstance)) { - results.push(directiveInstance); - } - } - return results; -} -function getComponentAtNodeIndex(nodeIndex, lView) { - const tNode = lView[TVIEW].data[nodeIndex]; - const { directiveStart, componentOffset } = tNode; - return componentOffset > -1 ? lView[directiveStart + componentOffset] : null; -} -function discoverLocalRefs(lView, nodeIndex) { - const tNode = lView[TVIEW].data[nodeIndex]; - if (tNode && tNode.localNames) { - const result = {}; - let localIndex = tNode.index + 1; - for (let i = 0; i < tNode.localNames.length; i += 2) { - result[tNode.localNames[i]] = lView[localIndex]; - localIndex++; - } - return result; - } - return null; -} -var _icuContainerIterate; -function icuContainerIterate(tIcuContainerNode, lView) { - return _icuContainerIterate(tIcuContainerNode, lView); -} -function ensureIcuContainerVisitorLoaded(loader) { - if (_icuContainerIterate === void 0) { - _icuContainerIterate = loader(); - } -} -function applyToElementOrContainer(action, renderer, parent, lNodeToHandle, beforeNode) { - if (lNodeToHandle != null) { - let lContainer; - let isComponent2 = false; - if (isLContainer(lNodeToHandle)) { - lContainer = lNodeToHandle; - } else if (isLView(lNodeToHandle)) { - isComponent2 = true; - ngDevMode && assertDefined(lNodeToHandle[HOST], "HOST must be defined for a component LView"); - lNodeToHandle = lNodeToHandle[HOST]; - } - const rNode = unwrapRNode(lNodeToHandle); - if (action === 0 && parent !== null) { - if (beforeNode == null) { - nativeAppendChild(renderer, parent, rNode); - } else { - nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true); - } - } else if (action === 1 && parent !== null) { - nativeInsertBefore(renderer, parent, rNode, beforeNode || null, true); - } else if (action === 2) { - nativeRemoveNode(renderer, rNode, isComponent2); - } else if (action === 3) { - ngDevMode && ngDevMode.rendererDestroyNode++; - renderer.destroyNode(rNode); - } - if (lContainer != null) { - applyContainer(renderer, action, lContainer, parent, beforeNode); - } - } -} -function createTextNode(renderer, value) { - ngDevMode && ngDevMode.rendererCreateTextNode++; - ngDevMode && ngDevMode.rendererSetText++; - return renderer.createText(value); -} -function updateTextNode(renderer, rNode, value) { - ngDevMode && ngDevMode.rendererSetText++; - renderer.setValue(rNode, value); -} -function createCommentNode(renderer, value) { - ngDevMode && ngDevMode.rendererCreateComment++; - return renderer.createComment(escapeCommentText(value)); -} -function createElementNode(renderer, name, namespace) { - ngDevMode && ngDevMode.rendererCreateElement++; - return renderer.createElement(name, namespace); -} -function removeViewFromDOM(tView, lView) { - detachViewFromDOM(tView, lView); - lView[HOST] = null; - lView[T_HOST] = null; -} -function addViewToDOM(tView, parentTNode, renderer, lView, parentNativeNode, beforeNode) { - lView[HOST] = parentNativeNode; - lView[T_HOST] = parentTNode; - applyView(tView, lView, renderer, 1, parentNativeNode, beforeNode); -} -function detachViewFromDOM(tView, lView) { - applyView(tView, lView, lView[RENDERER], 2, null, null); -} -function destroyViewTree(rootView) { - let lViewOrLContainer = rootView[CHILD_HEAD]; - if (!lViewOrLContainer) { - return cleanUpView(rootView[TVIEW], rootView); - } - while (lViewOrLContainer) { - let next = null; - if (isLView(lViewOrLContainer)) { - next = lViewOrLContainer[CHILD_HEAD]; - } else { - ngDevMode && assertLContainer(lViewOrLContainer); - const firstView = lViewOrLContainer[CONTAINER_HEADER_OFFSET]; - if (firstView) - next = firstView; - } - if (!next) { - while (lViewOrLContainer && !lViewOrLContainer[NEXT] && lViewOrLContainer !== rootView) { - if (isLView(lViewOrLContainer)) { - cleanUpView(lViewOrLContainer[TVIEW], lViewOrLContainer); - } - lViewOrLContainer = lViewOrLContainer[PARENT]; - } - if (lViewOrLContainer === null) - lViewOrLContainer = rootView; - if (isLView(lViewOrLContainer)) { - cleanUpView(lViewOrLContainer[TVIEW], lViewOrLContainer); - } - next = lViewOrLContainer && lViewOrLContainer[NEXT]; - } - lViewOrLContainer = next; - } -} -function insertView(tView, lView, lContainer, index) { - ngDevMode && assertLView(lView); - ngDevMode && assertLContainer(lContainer); - const indexInContainer = CONTAINER_HEADER_OFFSET + index; - const containerLength = lContainer.length; - if (index > 0) { - lContainer[indexInContainer - 1][NEXT] = lView; - } - if (index < containerLength - CONTAINER_HEADER_OFFSET) { - lView[NEXT] = lContainer[indexInContainer]; - addToArray(lContainer, CONTAINER_HEADER_OFFSET + index, lView); - } else { - lContainer.push(lView); - lView[NEXT] = null; - } - lView[PARENT] = lContainer; - const declarationLContainer = lView[DECLARATION_LCONTAINER]; - if (declarationLContainer !== null && lContainer !== declarationLContainer) { - trackMovedView(declarationLContainer, lView); - } - const lQueries = lView[QUERIES]; - if (lQueries !== null) { - lQueries.insertView(tView); - } - updateAncestorTraversalFlagsOnAttach(lView); - lView[FLAGS] |= 128; -} -function trackMovedView(declarationContainer, lView) { - ngDevMode && assertDefined(lView, "LView required"); - ngDevMode && assertLContainer(declarationContainer); - const movedViews = declarationContainer[MOVED_VIEWS]; - const insertedLContainer = lView[PARENT]; - ngDevMode && assertLContainer(insertedLContainer); - const insertedComponentLView = insertedLContainer[PARENT][DECLARATION_COMPONENT_VIEW]; - ngDevMode && assertDefined(insertedComponentLView, "Missing insertedComponentLView"); - const declaredComponentLView = lView[DECLARATION_COMPONENT_VIEW]; - ngDevMode && assertDefined(declaredComponentLView, "Missing declaredComponentLView"); - if (declaredComponentLView !== insertedComponentLView) { - declarationContainer[FLAGS] |= LContainerFlags.HasTransplantedViews; - } - if (movedViews === null) { - declarationContainer[MOVED_VIEWS] = [lView]; - } else { - movedViews.push(lView); - } -} -function detachMovedView(declarationContainer, lView) { - ngDevMode && assertLContainer(declarationContainer); - ngDevMode && assertDefined(declarationContainer[MOVED_VIEWS], "A projected view should belong to a non-empty projected views collection"); - const movedViews = declarationContainer[MOVED_VIEWS]; - const declarationViewIndex = movedViews.indexOf(lView); - ngDevMode && assertLContainer(lView[PARENT]); - movedViews.splice(declarationViewIndex, 1); -} -function detachView(lContainer, removeIndex) { - if (lContainer.length <= CONTAINER_HEADER_OFFSET) - return; - const indexInContainer = CONTAINER_HEADER_OFFSET + removeIndex; - const viewToDetach = lContainer[indexInContainer]; - if (viewToDetach) { - const declarationLContainer = viewToDetach[DECLARATION_LCONTAINER]; - if (declarationLContainer !== null && declarationLContainer !== lContainer) { - detachMovedView(declarationLContainer, viewToDetach); - } - if (removeIndex > 0) { - lContainer[indexInContainer - 1][NEXT] = viewToDetach[NEXT]; - } - const removedLView = removeFromArray(lContainer, CONTAINER_HEADER_OFFSET + removeIndex); - removeViewFromDOM(viewToDetach[TVIEW], viewToDetach); - const lQueries = removedLView[QUERIES]; - if (lQueries !== null) { - lQueries.detachView(removedLView[TVIEW]); - } - viewToDetach[PARENT] = null; - viewToDetach[NEXT] = null; - viewToDetach[FLAGS] &= ~128; - } - return viewToDetach; -} -function destroyLView(tView, lView) { - if (!(lView[FLAGS] & 256)) { - const renderer = lView[RENDERER]; - if (renderer.destroyNode) { - applyView(tView, lView, renderer, 3, null, null); - } - destroyViewTree(lView); - } -} -function cleanUpView(tView, lView) { - if (!(lView[FLAGS] & 256)) { - lView[FLAGS] &= ~128; - lView[FLAGS] |= 256; - lView[REACTIVE_TEMPLATE_CONSUMER] && consumerDestroy(lView[REACTIVE_TEMPLATE_CONSUMER]); - executeOnDestroys(tView, lView); - processCleanups(tView, lView); - if (lView[TVIEW].type === 1) { - ngDevMode && ngDevMode.rendererDestroy++; - lView[RENDERER].destroy(); - } - const declarationContainer = lView[DECLARATION_LCONTAINER]; - if (declarationContainer !== null && isLContainer(lView[PARENT])) { - if (declarationContainer !== lView[PARENT]) { - detachMovedView(declarationContainer, lView); - } - const lQueries = lView[QUERIES]; - if (lQueries !== null) { - lQueries.detachView(tView); - } - } - unregisterLView(lView); - } -} -function processCleanups(tView, lView) { - const tCleanup = tView.cleanup; - const lCleanup = lView[CLEANUP]; - if (tCleanup !== null) { - for (let i = 0; i < tCleanup.length - 1; i += 2) { - if (typeof tCleanup[i] === "string") { - const targetIdx = tCleanup[i + 3]; - ngDevMode && assertNumber(targetIdx, "cleanup target must be a number"); - if (targetIdx >= 0) { - lCleanup[targetIdx](); - } else { - lCleanup[-targetIdx].unsubscribe(); - } - i += 2; - } else { - const context2 = lCleanup[tCleanup[i + 1]]; - tCleanup[i].call(context2); - } - } - } - if (lCleanup !== null) { - lView[CLEANUP] = null; - } - const destroyHooks = lView[ON_DESTROY_HOOKS]; - if (destroyHooks !== null) { - lView[ON_DESTROY_HOOKS] = null; - for (let i = 0; i < destroyHooks.length; i++) { - const destroyHooksFn = destroyHooks[i]; - ngDevMode && assertFunction(destroyHooksFn, "Expecting destroy hook to be a function."); - destroyHooksFn(); - } - } -} -function executeOnDestroys(tView, lView) { - let destroyHooks; - if (tView != null && (destroyHooks = tView.destroyHooks) != null) { - for (let i = 0; i < destroyHooks.length; i += 2) { - const context2 = lView[destroyHooks[i]]; - if (!(context2 instanceof NodeInjectorFactory)) { - const toCall = destroyHooks[i + 1]; - if (Array.isArray(toCall)) { - for (let j = 0; j < toCall.length; j += 2) { - const callContext = context2[toCall[j]]; - const hook = toCall[j + 1]; - profiler(4, callContext, hook); - try { - hook.call(callContext); - } finally { - profiler(5, callContext, hook); - } - } - } else { - profiler(4, context2, toCall); - try { - toCall.call(context2); - } finally { - profiler(5, context2, toCall); - } - } - } - } - } -} -function getParentRElement(tView, tNode, lView) { - return getClosestRElement(tView, tNode.parent, lView); -} -function getClosestRElement(tView, tNode, lView) { - let parentTNode = tNode; - while (parentTNode !== null && parentTNode.type & (8 | 32)) { - tNode = parentTNode; - parentTNode = tNode.parent; - } - if (parentTNode === null) { - return lView[HOST]; - } else { - ngDevMode && assertTNodeType( - parentTNode, - 3 | 4 - /* TNodeType.Container */ - ); - const { componentOffset } = parentTNode; - if (componentOffset > -1) { - ngDevMode && assertTNodeForLView(parentTNode, lView); - const { encapsulation } = tView.data[parentTNode.directiveStart + componentOffset]; - if (encapsulation === ViewEncapsulation$1.None || encapsulation === ViewEncapsulation$1.Emulated) { - return null; - } - } - return getNativeByTNode(parentTNode, lView); - } -} -function nativeInsertBefore(renderer, parent, child, beforeNode, isMove) { - ngDevMode && ngDevMode.rendererInsertBefore++; - renderer.insertBefore(parent, child, beforeNode, isMove); -} -function nativeAppendChild(renderer, parent, child) { - ngDevMode && ngDevMode.rendererAppendChild++; - ngDevMode && assertDefined(parent, "parent node must be defined"); - renderer.appendChild(parent, child); -} -function nativeAppendOrInsertBefore(renderer, parent, child, beforeNode, isMove) { - if (beforeNode !== null) { - nativeInsertBefore(renderer, parent, child, beforeNode, isMove); - } else { - nativeAppendChild(renderer, parent, child); - } -} -function nativeRemoveChild(renderer, parent, child, isHostElement) { - renderer.removeChild(parent, child, isHostElement); -} -function nativeParentNode(renderer, node) { - return renderer.parentNode(node); -} -function nativeNextSibling(renderer, node) { - return renderer.nextSibling(node); -} -function getInsertInFrontOfRNode(parentTNode, currentTNode, lView) { - return _getInsertInFrontOfRNodeWithI18n(parentTNode, currentTNode, lView); -} -function getInsertInFrontOfRNodeWithNoI18n(parentTNode, currentTNode, lView) { - if (parentTNode.type & (8 | 32)) { - return getNativeByTNode(parentTNode, lView); - } - return null; -} -var _getInsertInFrontOfRNodeWithI18n = getInsertInFrontOfRNodeWithNoI18n; -var _processI18nInsertBefore; -function setI18nHandling(getInsertInFrontOfRNodeWithI18n2, processI18nInsertBefore2) { - _getInsertInFrontOfRNodeWithI18n = getInsertInFrontOfRNodeWithI18n2; - _processI18nInsertBefore = processI18nInsertBefore2; -} -function appendChild(tView, lView, childRNode, childTNode) { - const parentRNode = getParentRElement(tView, childTNode, lView); - const renderer = lView[RENDERER]; - const parentTNode = childTNode.parent || lView[T_HOST]; - const anchorNode = getInsertInFrontOfRNode(parentTNode, childTNode, lView); - if (parentRNode != null) { - if (Array.isArray(childRNode)) { - for (let i = 0; i < childRNode.length; i++) { - nativeAppendOrInsertBefore(renderer, parentRNode, childRNode[i], anchorNode, false); - } - } else { - nativeAppendOrInsertBefore(renderer, parentRNode, childRNode, anchorNode, false); - } - } - _processI18nInsertBefore !== void 0 && _processI18nInsertBefore(renderer, childTNode, lView, childRNode, parentRNode); -} -function getFirstNativeNode(lView, tNode) { - if (tNode !== null) { - ngDevMode && assertTNodeType( - tNode, - 3 | 12 | 32 | 16 - /* TNodeType.Projection */ - ); - const tNodeType = tNode.type; - if (tNodeType & 3) { - return getNativeByTNode(tNode, lView); - } else if (tNodeType & 4) { - return getBeforeNodeForView(-1, lView[tNode.index]); - } else if (tNodeType & 8) { - const elIcuContainerChild = tNode.child; - if (elIcuContainerChild !== null) { - return getFirstNativeNode(lView, elIcuContainerChild); - } else { - const rNodeOrLContainer = lView[tNode.index]; - if (isLContainer(rNodeOrLContainer)) { - return getBeforeNodeForView(-1, rNodeOrLContainer); - } else { - return unwrapRNode(rNodeOrLContainer); - } - } - } else if (tNodeType & 32) { - let nextRNode = icuContainerIterate(tNode, lView); - let rNode = nextRNode(); - return rNode || unwrapRNode(lView[tNode.index]); - } else { - const projectionNodes = getProjectionNodes(lView, tNode); - if (projectionNodes !== null) { - if (Array.isArray(projectionNodes)) { - return projectionNodes[0]; - } - const parentView = getLViewParent(lView[DECLARATION_COMPONENT_VIEW]); - ngDevMode && assertParentView(parentView); - return getFirstNativeNode(parentView, projectionNodes); - } else { - return getFirstNativeNode(lView, tNode.next); - } - } - } - return null; -} -function getProjectionNodes(lView, tNode) { - if (tNode !== null) { - const componentView = lView[DECLARATION_COMPONENT_VIEW]; - const componentHost = componentView[T_HOST]; - const slotIdx = tNode.projection; - ngDevMode && assertProjectionSlots(lView); - return componentHost.projection[slotIdx]; - } - return null; -} -function getBeforeNodeForView(viewIndexInContainer, lContainer) { - const nextViewIndex = CONTAINER_HEADER_OFFSET + viewIndexInContainer + 1; - if (nextViewIndex < lContainer.length) { - const lView = lContainer[nextViewIndex]; - const firstTNodeOfView = lView[TVIEW].firstChild; - if (firstTNodeOfView !== null) { - return getFirstNativeNode(lView, firstTNodeOfView); - } - } - return lContainer[NATIVE]; -} -function nativeRemoveNode(renderer, rNode, isHostElement) { - ngDevMode && ngDevMode.rendererRemoveNode++; - const nativeParent = nativeParentNode(renderer, rNode); - if (nativeParent) { - nativeRemoveChild(renderer, nativeParent, rNode, isHostElement); - } -} -function clearElementContents(rElement) { - rElement.textContent = ""; -} -function applyNodes(renderer, action, tNode, lView, parentRElement, beforeNode, isProjection) { - while (tNode != null) { - ngDevMode && assertTNodeForLView(tNode, lView); - ngDevMode && assertTNodeType( - tNode, - 3 | 12 | 16 | 32 - /* TNodeType.Icu */ - ); - const rawSlotValue = lView[tNode.index]; - const tNodeType = tNode.type; - if (isProjection) { - if (action === 0) { - rawSlotValue && attachPatchData(unwrapRNode(rawSlotValue), lView); - tNode.flags |= 2; - } - } - if ((tNode.flags & 32) !== 32) { - if (tNodeType & 8) { - applyNodes(renderer, action, tNode.child, lView, parentRElement, beforeNode, false); - applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode); - } else if (tNodeType & 32) { - const nextRNode = icuContainerIterate(tNode, lView); - let rNode; - while (rNode = nextRNode()) { - applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode); - } - applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode); - } else if (tNodeType & 16) { - applyProjectionRecursive(renderer, action, lView, tNode, parentRElement, beforeNode); - } else { - ngDevMode && assertTNodeType( - tNode, - 3 | 4 - /* TNodeType.Container */ - ); - applyToElementOrContainer(action, renderer, parentRElement, rawSlotValue, beforeNode); - } - } - tNode = isProjection ? tNode.projectionNext : tNode.next; - } -} -function applyView(tView, lView, renderer, action, parentRElement, beforeNode) { - applyNodes(renderer, action, tView.firstChild, lView, parentRElement, beforeNode, false); -} -function applyProjection(tView, lView, tProjectionNode) { - const renderer = lView[RENDERER]; - const parentRNode = getParentRElement(tView, tProjectionNode, lView); - const parentTNode = tProjectionNode.parent || lView[T_HOST]; - let beforeNode = getInsertInFrontOfRNode(parentTNode, tProjectionNode, lView); - applyProjectionRecursive(renderer, 0, lView, tProjectionNode, parentRNode, beforeNode); -} -function applyProjectionRecursive(renderer, action, lView, tProjectionNode, parentRElement, beforeNode) { - const componentLView = lView[DECLARATION_COMPONENT_VIEW]; - const componentNode = componentLView[T_HOST]; - ngDevMode && assertEqual(typeof tProjectionNode.projection, "number", "expecting projection index"); - const nodeToProjectOrRNodes = componentNode.projection[tProjectionNode.projection]; - if (Array.isArray(nodeToProjectOrRNodes)) { - for (let i = 0; i < nodeToProjectOrRNodes.length; i++) { - const rNode = nodeToProjectOrRNodes[i]; - applyToElementOrContainer(action, renderer, parentRElement, rNode, beforeNode); - } - } else { - let nodeToProject = nodeToProjectOrRNodes; - const projectedComponentLView = componentLView[PARENT]; - if (hasInSkipHydrationBlockFlag(tProjectionNode)) { - nodeToProject.flags |= 128; - } - applyNodes(renderer, action, nodeToProject, projectedComponentLView, parentRElement, beforeNode, true); - } -} -function applyContainer(renderer, action, lContainer, parentRElement, beforeNode) { - ngDevMode && assertLContainer(lContainer); - const anchor = lContainer[NATIVE]; - const native = unwrapRNode(lContainer); - if (anchor !== native) { - applyToElementOrContainer(action, renderer, parentRElement, anchor, beforeNode); - } - for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) { - const lView = lContainer[i]; - applyView(lView[TVIEW], lView, renderer, action, parentRElement, anchor); - } -} -function applyStyling(renderer, isClassBased, rNode, prop, value) { - if (isClassBased) { - if (!value) { - ngDevMode && ngDevMode.rendererRemoveClass++; - renderer.removeClass(rNode, prop); - } else { - ngDevMode && ngDevMode.rendererAddClass++; - renderer.addClass(rNode, prop); - } - } else { - let flags = prop.indexOf("-") === -1 ? void 0 : RendererStyleFlags2.DashCase; - if (value == null) { - ngDevMode && ngDevMode.rendererRemoveStyle++; - renderer.removeStyle(rNode, prop, flags); - } else { - const isImportant = typeof value === "string" ? value.endsWith("!important") : false; - if (isImportant) { - value = value.slice(0, -10); - flags |= RendererStyleFlags2.Important; - } - ngDevMode && ngDevMode.rendererSetStyle++; - renderer.setStyle(rNode, prop, value, flags); - } - } -} -function writeDirectStyle(renderer, element, newValue) { - ngDevMode && assertString(newValue, "'newValue' should be a string"); - renderer.setAttribute(element, "style", newValue); - ngDevMode && ngDevMode.rendererSetStyle++; -} -function writeDirectClass(renderer, element, newValue) { - ngDevMode && assertString(newValue, "'newValue' should be a string"); - if (newValue === "") { - renderer.removeAttribute(element, "class"); - } else { - renderer.setAttribute(element, "class", newValue); - } - ngDevMode && ngDevMode.rendererSetClassName++; -} -function setupStaticAttributes(renderer, element, tNode) { - const { mergedAttrs, classes, styles } = tNode; - if (mergedAttrs !== null) { - setUpAttributes(renderer, element, mergedAttrs); - } - if (classes !== null) { - writeDirectClass(renderer, element, classes); - } - if (styles !== null) { - writeDirectStyle(renderer, element, styles); - } -} -var policy$1; -function getPolicy$1() { - if (policy$1 === void 0) { - policy$1 = null; - if (_global.trustedTypes) { - try { - policy$1 = _global.trustedTypes.createPolicy("angular", { - createHTML: (s) => s, - createScript: (s) => s, - createScriptURL: (s) => s - }); - } catch { - } - } - } - return policy$1; -} -function trustedHTMLFromString(html) { - return getPolicy$1()?.createHTML(html) || html; -} -function trustedScriptURLFromString(url) { - return getPolicy$1()?.createScriptURL(url) || url; -} -function ɵɵvalidateIframeAttribute(attrValue, tagName, attrName) { - const lView = getLView(); - const tNode = getSelectedTNode(); - const element = getNativeByTNode(tNode, lView); - if (tNode.type === 2 && tagName.toLowerCase() === "iframe") { - const iframe = element; - iframe.src = ""; - iframe.srcdoc = trustedHTMLFromString(""); - nativeRemoveNode(lView[RENDERER], iframe); - const errorMessage = ngDevMode && `Angular has detected that the \`${attrName}\` was applied as a binding to an