@ng-atomic/common 19.9.0 → 19.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/directives/fallback-src/index.d.ts +1 -0
- package/directives/fallback-src/index.d.ts.map +1 -0
- package/directives/ios-safari-scroll-buggyfill/index.d.ts +1 -0
- package/directives/ios-safari-scroll-buggyfill/index.d.ts.map +1 -0
- package/directives/molecules/column/index.d.ts +1 -0
- package/directives/molecules/column/index.d.ts.map +1 -0
- package/directives/resize-column/index.d.ts +1 -0
- package/directives/resize-column/index.d.ts.map +1 -0
- package/fesm2022/ng-atomic-common-directives-fallback-src.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-molecules-column.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-directives-resize-column.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors-throttle.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-interceptors-token.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-actions.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-auto-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-error.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-expression.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-grouped-by.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-index-length.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-index.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-keys.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-map.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-page.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-query.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-resolve-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-secret.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-select-id.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-signal.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-sort-by.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-style.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-pipes-yen.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-breakpoint.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-chips-manager.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-csv.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-editing.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-fab.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-_index.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-columns.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-form.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-initializer.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-language.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-loading.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-navigation-history.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-query-resolver.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-router.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-secret.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-sheets-actions.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-sheets.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-snack-bar.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-spreadsheet.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-entity.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-pagination.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-query.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-selection.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-stores-sort.mjs.map +1 -1
- package/fesm2022/ng-atomic-common-utils.mjs +36 -43
- package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
- package/fesm2022/ng-atomic-common.mjs.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -0
- package/interceptors/authorization/index.d.ts +1 -0
- package/interceptors/authorization/index.d.ts.map +1 -0
- package/interceptors/index.d.ts +1 -0
- package/interceptors/index.d.ts.map +1 -0
- package/interceptors/throttle/index.d.ts +1 -0
- package/interceptors/throttle/index.d.ts.map +1 -0
- package/interceptors/token/index.d.ts +1 -0
- package/interceptors/token/index.d.ts.map +1 -0
- package/models/index.d.ts +1 -0
- package/models/index.d.ts.map +1 -0
- package/package.json +3 -3
- package/pipes/actions/index.d.ts +1 -0
- package/pipes/actions/index.d.ts.map +1 -0
- package/pipes/auto-columns/index.d.ts +1 -0
- package/pipes/auto-columns/index.d.ts.map +1 -0
- package/pipes/columns/index.d.ts +1 -0
- package/pipes/columns/index.d.ts.map +1 -0
- package/pipes/data-accessor/index.d.ts +1 -0
- package/pipes/data-accessor/index.d.ts.map +1 -0
- package/pipes/domain/index.d.ts +1 -0
- package/pipes/domain/index.d.ts.map +1 -0
- package/pipes/error/index.d.ts +1 -0
- package/pipes/error/index.d.ts.map +1 -0
- package/pipes/expression/index.d.ts +1 -0
- package/pipes/expression/index.d.ts.map +1 -0
- package/pipes/grouped-by/index.d.ts +1 -0
- package/pipes/grouped-by/index.d.ts.map +1 -0
- package/pipes/index/index.d.ts +1 -0
- package/pipes/index/index.d.ts.map +1 -0
- package/pipes/index-length/index.d.ts +1 -0
- package/pipes/index-length/index.d.ts.map +1 -0
- package/pipes/keys/index.d.ts +1 -0
- package/pipes/keys/index.d.ts.map +1 -0
- package/pipes/map/index.d.ts +1 -0
- package/pipes/map/index.d.ts.map +1 -0
- package/pipes/page/index.d.ts +1 -0
- package/pipes/page/index.d.ts.map +1 -0
- package/pipes/pagination/index.d.ts +1 -0
- package/pipes/pagination/index.d.ts.map +1 -0
- package/pipes/query/index.d.ts +1 -0
- package/pipes/query/index.d.ts.map +1 -0
- package/pipes/resolve-columns/index.d.ts +1 -0
- package/pipes/resolve-columns/index.d.ts.map +1 -0
- package/pipes/secret/index.d.ts +1 -0
- package/pipes/secret/index.d.ts.map +1 -0
- package/pipes/select-id/index.d.ts +1 -0
- package/pipes/select-id/index.d.ts.map +1 -0
- package/pipes/signal/index.d.ts +1 -0
- package/pipes/signal/index.d.ts.map +1 -0
- package/pipes/smart-field/index.d.ts +1 -0
- package/pipes/smart-field/index.d.ts.map +1 -0
- package/pipes/sort/index.d.ts +1 -0
- package/pipes/sort/index.d.ts.map +1 -0
- package/pipes/sort-by/index.d.ts +1 -0
- package/pipes/sort-by/index.d.ts.map +1 -0
- package/pipes/style/index.d.ts +1 -0
- package/pipes/style/index.d.ts.map +1 -0
- package/pipes/yen/index.d.ts +1 -0
- package/pipes/yen/index.d.ts.map +1 -0
- package/services/app/index.d.ts +1 -0
- package/services/app/index.d.ts.map +1 -0
- package/services/auth/index.d.ts +1 -0
- package/services/auth/index.d.ts.map +1 -0
- package/services/breakpoint/index.d.ts +1 -0
- package/services/breakpoint/index.d.ts.map +1 -0
- package/services/chips-manager/index.d.ts +1 -0
- package/services/chips-manager/index.d.ts.map +1 -0
- package/services/csv/index.d.ts +1 -0
- package/services/csv/index.d.ts.map +1 -0
- package/services/editing/index.d.ts +1 -0
- package/services/editing/index.d.ts.map +1 -0
- package/services/fab/index.d.ts +1 -0
- package/services/fab/index.d.ts.map +1 -0
- package/services/form/_index/index.d.ts +1 -0
- package/services/form/_index/index.d.ts.map +1 -0
- package/services/form/columns/index.d.ts +1 -0
- package/services/form/columns/index.d.ts.map +1 -0
- package/services/form/index.d.ts +1 -0
- package/services/form/index.d.ts.map +1 -0
- package/services/form/json-schema/index.d.ts +1 -0
- package/services/form/json-schema/index.d.ts.map +1 -0
- package/services/form/pagination/index.d.ts +1 -0
- package/services/form/pagination/index.d.ts.map +1 -0
- package/services/form/sort/index.d.ts +1 -0
- package/services/form/sort/index.d.ts.map +1 -0
- package/services/initializer/index.d.ts +1 -0
- package/services/initializer/index.d.ts.map +1 -0
- package/services/language/index.d.ts +1 -0
- package/services/language/index.d.ts.map +1 -0
- package/services/loading/index.d.ts +1 -0
- package/services/loading/index.d.ts.map +1 -0
- package/services/navigation-history/index.d.ts +1 -0
- package/services/navigation-history/index.d.ts.map +1 -0
- package/services/query-resolver/index.d.ts +1 -0
- package/services/query-resolver/index.d.ts.map +1 -0
- package/services/root-property/index.d.ts +1 -0
- package/services/root-property/index.d.ts.map +1 -0
- package/services/router/index.d.ts +1 -0
- package/services/router/index.d.ts.map +1 -0
- package/services/secret/index.d.ts +1 -0
- package/services/secret/index.d.ts.map +1 -0
- package/services/sheets/actions/index.d.ts +1 -0
- package/services/sheets/actions/index.d.ts.map +1 -0
- package/services/sheets/index.d.ts +1 -0
- package/services/sheets/index.d.ts.map +1 -0
- package/services/side-app/index.d.ts +1 -0
- package/services/side-app/index.d.ts.map +1 -0
- package/services/side-nav-mode/index.d.ts +1 -0
- package/services/side-nav-mode/index.d.ts.map +1 -0
- package/services/snack-bar/index.d.ts +1 -0
- package/services/snack-bar/index.d.ts.map +1 -0
- package/services/spreadsheet/index.d.ts +1 -0
- package/services/spreadsheet/index.d.ts.map +1 -0
- package/services/ui/index.d.ts +1 -0
- package/services/ui/index.d.ts.map +1 -0
- package/stores/entities/index.d.ts +1 -0
- package/stores/entities/index.d.ts.map +1 -0
- package/stores/entity/index.d.ts +1 -0
- package/stores/entity/index.d.ts.map +1 -0
- package/stores/pagination/index.d.ts +1 -0
- package/stores/pagination/index.d.ts.map +1 -0
- package/stores/query/index.d.ts +1 -0
- package/stores/query/index.d.ts.map +1 -0
- package/stores/selection/index.d.ts +1 -0
- package/stores/selection/index.d.ts.map +1 -0
- package/stores/sort/index.d.ts +1 -0
- package/stores/sort/index.d.ts.map +1 -0
- package/utils/index.d.ts +15 -10
- package/utils/index.d.ts.map +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-atomic-common-services-ui.mjs","sources":["../tmp-esm2022/services/ui/ui.service.js","../tmp-esm2022/services/ui/ui.helpers.js","../tmp-esm2022/services/ui/ng-atomic-common-services-ui.js"],"sourcesContent":["import { Injectable, PLATFORM_ID, computed, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationStart } from '@angular/router';\nimport { filter, map, startWith } from 'rxjs';\nimport { isPlatformBrowser } from '@angular/common';\nimport { RouterService } from '@ng-atomic/common/services/router';\nimport { BreakpointService } from '@ng-atomic/common/services/breakpoint';\nimport * as i0 from \"@angular/core\";\nexport class UiService {\n constructor() {\n this.breakpoint = inject(BreakpointService);\n this.router = inject(RouterService);\n this.platformId = inject(PLATFORM_ID);\n this.paths$ = this.router.events.pipe(filter(event => event instanceof NavigationStart), map((event) => event.url), startWith(isPlatformBrowser(this.platformId) ? window?.location?.pathname : ''), map(url => this.router.parseUrl(url)), map(urlTree => urlTree.root.children?.primary?.segments ?? []));\n this.paths = toSignal(this.paths$);\n this.snapshot$ = this.router.events.pipe(filter(event => event instanceof NavigationStart), map(() => this.router.routerState.snapshot.root));\n this.snapshot = toSignal(this.snapshot$);\n this.uiContext = computed(() => ({\n breakpoint: this.breakpoint.breakpoint(),\n paths: this.paths(),\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: UiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: UiService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: UiService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFRdEYsTUFBTSxPQUFPLFNBQVM7SUFEdEI7UUFFVyxlQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWpDLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxlQUFlLENBQUMsRUFDakQsR0FBRyxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUMxQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQy9FLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQy9ELENBQUM7UUFDTyxVQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QixjQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMxQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksZUFBZSxDQUFDLEVBQ2pELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQ2pELENBQUM7UUFDTyxhQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwQyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFO1lBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO1NBQ3BCLENBQUMsQ0FBQyxDQUFDO0tBQ0w7OEdBeEJZLFNBQVM7a0hBQVQsU0FBUyxjQURJLE1BQU07OzJGQUNuQixTQUFTO2tCQURyQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlclNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9yb3V0ZXInO1xuaW1wb3J0IHsgQnJlYWtwb2ludCwgQnJlYWtwb2ludFNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9icmVha3BvaW50JztcblxuZXhwb3J0IGludGVyZmFjZSBVSUNvbnRleHQge1xuICBicmVha3BvaW50OiBCcmVha3BvaW50O1xuICBwYXRoczogYW55W107XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVWlTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgYnJlYWtwb2ludCA9IGluamVjdChCcmVha3BvaW50U2VydmljZSk7XG4gIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgcmVhZG9ubHkgcGF0aHMkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICBtYXAoKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpID0+IGV2ZW50LnVybCksXG4gICAgc3RhcnRXaXRoKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgPyB3aW5kb3c/LmxvY2F0aW9uPy5wYXRobmFtZSA6ICcnKSxcbiAgICBtYXAodXJsID0+IHRoaXMucm91dGVyLnBhcnNlVXJsKHVybCkpLFxuICAgIG1hcCh1cmxUcmVlID0+IHVybFRyZWUucm9vdC5jaGlsZHJlbj8ucHJpbWFyeT8uc2VnbWVudHMgPz8gW10pLFxuICApO1xuICByZWFkb25seSBwYXRocyA9IHRvU2lnbmFsKHRoaXMucGF0aHMkKTtcblxuICByZWFkb25seSBzbmFwc2hvdCQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpLFxuICAgIG1hcCgoKSA9PiB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290KSxcbiAgKTtcbiAgcmVhZG9ubHkgc25hcHNob3QgPSB0b1NpZ25hbCh0aGlzLnNuYXBzaG90JCk7XG5cbiAgcmVhZG9ubHkgdWlDb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICBicmVha3BvaW50OiB0aGlzLmJyZWFrcG9pbnQuYnJlYWtwb2ludCgpLFxuICAgIHBhdGhzOiB0aGlzLnBhdGhzKCksXG4gIH0pKTtcbn1cbiJdfQ==","import { ElementRef, InjectionToken, Injector, computed, effect, inject, isSignal, runInInjectionContext, signal } from \"@angular/core\";\nimport { UiService } from \"./ui.service\";\nimport { get, set } from \"lodash-es\";\nimport { makeProvideComopnentConfigure } from \"@ng-atomic/core\";\nimport { ActivatedRoute, PRIMARY_OUTLET, Router } from \"@angular/router\";\nimport { map, shareReplay, startWith, take } from \"rxjs\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { NavigationHistoryService } from \"@ng-atomic/common/services/navigation-history\";\nimport { derivedAsync } from \"ngxtension/derived-async\";\nimport { makeInitializerConfig } from \"@ng-atomic/common/services/initializer\";\nexport function scoped(source, path) {\n const scopedSignal = signal(get(source(), path));\n effect(() => {\n scopedSignal.set(get(source(), path, source()));\n });\n return computed(() => scopedSignal());\n}\nexport function injectBreakpoint() {\n return inject(UiService).breakpoint.breakpoint;\n}\nexport function injectIsMobile() {\n const breakpoint = injectBreakpoint();\n return computed(() => ['xSmall', 'small'].includes(breakpoint()));\n}\nexport var NavActionId;\n(function (NavActionId) {\n NavActionId[\"TOGGLE_SIDE_NAV\"] = \"[@ng-atomic/common/services/ui] TOGGLE_SIDE_NAV\";\n NavActionId[\"BACK\"] = \"[@ng-atomic/common/services/ui] BACK\";\n NavActionId[\"CLOSE\"] = \"[@ng-atomic/common/services/ui] CLOSE\";\n})(NavActionId || (NavActionId = {}));\n// routeを遡る\nfunction flattenRoutes(route) {\n const routes = [];\n let route_ = route;\n while (route_) {\n routes.push(route_);\n if (!route_.parent)\n break;\n route_ = route_.parent;\n }\n return routes;\n}\nexport function isRootPageRoute(route, outlet = PRIMARY_OUTLET) {\n const routes = flattenRoutes(route).reverse();\n const outletRootIndex = routes.findIndex(route => route.outlet === outlet);\n const outletComponentRoutes = routes\n .slice(outletRootIndex)\n .filter(route => !!route?.component);\n return outletComponentRoutes.length <= 2;\n}\nexport function injectIsRootPage$(outlet = PRIMARY_OUTLET) {\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n return router.events.pipe(startWith(null), map(() => isRootPageRoute(route, outlet)), take(1), shareReplay(1), takeUntilDestroyed());\n}\nexport function injectIsRootPage(outlet = PRIMARY_OUTLET) {\n const isRootPage$ = injectIsRootPage$(outlet);\n const injector = inject(Injector);\n return derivedAsync(() => isRootPage$, { injector });\n}\nexport function injectNavStartActions(isRootPage = signal(false)) {\n const context = injectUiContext();\n const navigationHistory = inject(NavigationHistoryService);\n const isInitial = false;\n return computed(() => {\n console.debug('[UiService] navigationHistory:', navigationHistory);\n const isRootPage_ = isRootPage();\n const context_ = context();\n switch (context_.breakpoint) {\n case 'xLarge':\n case 'large':\n case 'medium':\n case 'small': {\n if (isRootPage_) {\n return [];\n }\n else {\n if (isInitial) {\n return [];\n }\n else {\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n }\n case 'xSmall': {\n if (isRootPage_) {\n return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }];\n }\n else {\n if (isInitial) {\n return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }];\n }\n else {\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n }\n default: {\n if (isRootPage_)\n return [];\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n });\n}\nexport function injectNavStartActionsV2() {\n const isRootPage = injectIsRootPage();\n return injectNavStartActions(isRootPage);\n}\nexport function injectSideAppNavStartActions(outlet = 'side') {\n const context = injectUiContext();\n const isRootPageV2 = injectIsRootPage(outlet);\n return computed(() => {\n const isRootPage_ = isRootPageV2();\n const context_ = context();\n switch (context_.breakpoint) {\n default: {\n if (isRootPage_) {\n return [\n { id: NavActionId.CLOSE, name: 'CLOSE', icon: 'close' },\n ];\n }\n else {\n return [\n { id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }\n ];\n }\n }\n }\n });\n}\nexport function injectUiContext() {\n return inject(UiService).uiContext;\n}\nexport const UI_CONFIG_REDUCER = new InjectionToken('UI_CONFIG_REDUCER');\nexport const wrap = (defaultReducerFactory) => {\n return (injector, hostInjector) => {\n const reducer = defaultReducerFactory(injector, hostInjector);\n return (_, context) => {\n return reducer(context);\n };\n };\n};\nexport function call(signalOrValue) {\n return isSignal(signalOrValue) ? signalOrValue() : signalOrValue;\n}\nfunction setReducerPath(reducer, path) {\n Object.defineProperty(reducer, 'path', { value: path, configurable: true });\n return reducer;\n}\nfunction getReducerPath(reducer) {\n return reducer['path'];\n}\nexport function provideUiConfig(reducerFactory, path = [], name = 'name', token = UI_CONFIG_REDUCER) {\n return {\n provide: token,\n useFactory: (injector) => {\n function _reducerFactory(hostInjector) {\n const reducer = reducerFactory(injector, hostInjector);\n return (config, context) => {\n if (path.length === 0)\n return reducer(config, context);\n return set(config, path, reducer(get(config, path), context));\n };\n }\n Object.defineProperty(_reducerFactory, 'name', { value: name, configurable: true });\n setReducerPath(_reducerFactory, path);\n return _reducerFactory;\n },\n deps: [Injector],\n multi: true,\n };\n}\nexport function injectRootConfig(paths = [], token = UI_CONFIG_REDUCER) {\n const uiContext = injectUiContext();\n const factories = injectReducerFactories(paths, token);\n const hostInjector = inject(Injector);\n const reducers = factories.map(factory => {\n return runInInjectionContext(hostInjector, () => factory(hostInjector));\n });\n if (!reducers)\n return undefined;\n const rootConfig = computed(() => {\n const context = uiContext();\n return reducers.reduce((acc, reducer) => {\n return runInInjectionContext(hostInjector, () => reducer(acc, context));\n }, {});\n });\n return rootConfig;\n}\n// TODO(@nontangent): itemsなどの取得が全てのコンポーネントで行われるので計算を最適化する。\nexport function injectUiConfig(paths = [], token = UI_CONFIG_REDUCER) {\n const rootConfig = injectRootConfig(paths, token);\n return scoped(rootConfig, paths);\n}\nexport function makeConfig(defaultUseFactory, path) {\n const factory = wrap(defaultUseFactory);\n const token = new InjectionToken(`[${path.join('.')}] UI_CONFIG_REDUCER`);\n return {\n provide(useFactory, label = useFactory ? 'custom' : 'default') {\n useFactory ??= factory;\n return provideUiConfig(useFactory, path, `[${path.join('.')}] ${label}`, token);\n },\n inject() {\n return injectUiConfig(path, token);\n },\n };\n}\nexport function makeDI(type, defaultUseFactory, path) {\n const Config = makeConfig(defaultUseFactory, path);\n const Initializer = makeInitializerConfig(type);\n const provideComponent = makeProvideComopnentConfigure(type);\n return {\n provide: (typeOrComponent) => [\n provideComponent(typeOrComponent), Config.provide(),\n Config.provide(),\n ],\n provideConfig: Config.provide,\n injectConfig: Config.inject,\n provideInitializer: Initializer.provide,\n initialize: Initializer.initializeStore,\n provideComponent,\n Initializer,\n Config,\n };\n}\nfunction injectReducers(token) {\n return injectDeepMulti(token);\n}\nfunction injectReducerFactories(path = [], token = UI_CONFIG_REDUCER) {\n return injectReducers(token).filter(factory => {\n return getReducerPath(factory).every((p, i) => path[i] === p);\n });\n}\nexport function injectDeepMulti(token, injector = inject(Injector)) {\n const valueOrArray = injector.get(token, [], { optional: true });\n const items = Array.isArray(valueOrArray) ? valueOrArray : [valueOrArray];\n const parentInjector = injector.get(Injector, null, { skipSelf: true });\n if (!parentInjector)\n return items;\n return [...new Set([...injectDeepMulti(token, parentInjector), ...items])];\n}\nexport function debugInjector(injector = inject(Injector)) {\n const getParent = (injector, n = 0) => {\n while (injector && n-- > 0) {\n injector = injector.get(Injector, null, { skipSelf: true });\n }\n return injector;\n };\n const getInjectorName = (injector) => {\n const name = injector.get(ElementRef, null)?.nativeElement?.tagName?.toLowerCase();\n if (name)\n return `<${name}>`;\n return `${injector['source']}`;\n };\n const isNodeInjector = (injector) => {\n return injector.get(ElementRef, null) !== null;\n };\n const mapToNames = (reducers) => (reducers ?? []).map(reducer => reducer.name);\n for (let i = 0; i < 20; i++) {\n injector = getParent(injector, i);\n if (injector === Injector.NULL)\n break;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvdWkuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQXlDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0ssT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQVUsNkJBQTZCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUvRSxNQUFNLFVBQVUsTUFBTSxDQUF5QyxNQUFpQixFQUFFLElBQW1CO0lBQ25HLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBVSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ1YsWUFBWSxD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QU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXBGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM1QixRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLFFBQVEsS0FBSyxRQUFRLENBQUMsSUFBSTtZQUFFLE1BQU07SUFDeEMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFByb3ZpZGVyLCBQcm92aWRlclRva2VuLCBTaWduYWwsIFR5cGUsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaXNTaWduYWwsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFVJQ29udGV4dCwgVWlTZXJ2aWNlIH0gZnJvbSBcIi4vdWkuc2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0LCBzZXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBBY3Rpb24sIG1ha2VQcm92aWRlQ29tb3BuZW50Q29uZmlndXJlIH0gZnJvbSBcIkBuZy1hdG9taWMvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2UgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uSGlzdG9yeVNlcnZpY2UgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvbmF2aWdhdGlvbi1oaXN0b3J5XCI7XG5pbXBvcnQgeyBkZXJpdmVkQXN5bmMgfSBmcm9tIFwibmd4dGVuc2lvbi9kZXJpdmVkLWFzeW5jXCI7XG5pbXBvcnQgeyBtYWtlSW5pdGlhbGl6ZXJDb25maWcgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvaW5pdGlhbGl6ZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNjb3BlZDxUIGV4dGVuZHMgb2JqZWN0LCBUS2V5IGV4dGVuZHMga2V5b2YgVD4oc291cmNlOiBTaWduYWw8VD4sIHBhdGg6IFRLZXkgfCBbVEtleV0pOiBTaWduYWw8VFtUS2V5XT4ge1xuICBjb25zdCBzY29wZWRTaWduYWwgPSBzaWduYWw8VFtUS2V5XT4oZ2V0KHNvdXJjZSgpLCBwYXRoKSk7XG4gIGVmZmVjdCgoKSA9PiB7XG4gICAgc2NvcGVkU2lnbmFsLnNldChnZXQoc291cmNlKCksIHBhdGgsIHNvdXJjZSgpKSBhcyBUW1RLZXldKTtcbiAgfSk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiBzY29wZWRTaWduYWwoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcmVha3BvaW50KCkge1xuICByZXR1cm4gaW5qZWN0KFVpU2VydmljZSkuYnJlYWtwb2ludC5icmVha3BvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SXNNb2JpbGUoKSB7XG4gIGNvbnN0IGJyZWFrcG9pbnQgPSBpbmplY3RCcmVha3BvaW50KCk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiBbJ3hTbWFsbCcsICdzbWFsbCddLmluY2x1ZGVzKGJyZWFrcG9pbnQoKSkpO1xufVxuXG5leHBvcnQgZW51bSBOYXZBY3Rpb25JZCB7XG4gIFRPR0dMRV9TSURFX05BViA9ICdbQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvdWldIFRPR0dMRV9TSURFX05BVicsXG4gIEJBQ0sgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBCQUNLJyxcbiAgQ0xPU0UgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBDTE9TRScsXG59XG5cbi8vIHJvdXRl44KS6YGh44KLXG5mdW5jdGlvbiBmbGF0dGVuUm91dGVzKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IEFjdGl2YXRlZFJvdXRlW10ge1xuICBjb25zdCByb3V0ZXMgPSBbXTtcbiAgbGV0IHJvdXRlXyA9IHJvdXRlO1xuICB3aGlsZSAocm91dGVfKSB7XG4gICAgcm91dGVzLnB1c2gocm91dGVfKTtcbiAgICBpZiAoIXJvdXRlXy5wYXJlbnQpIGJyZWFrO1xuICAgIHJvdXRlXyA9IHJvdXRlXy5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIHJvdXRlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUm9vdFBhZ2VSb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGUsIG91dGxldCA9IFBSSU1BUllfT1VUTEVUKSB7XG4gIGNvbnN0IHJvdXRlcyA9IGZsYXR0ZW5Sb3V0ZXMocm91dGUpLnJldmVyc2UoKTtcbiAgY29uc3Qgb3V0bGV0Um9vdEluZGV4ID0gcm91dGVzLmZpbmRJbmRleChyb3V0ZSA9PiByb3V0ZS5vdXRsZXQgPT09IG91dGxldCk7XG4gIGNvbnN0IG91dGxldENvbXBvbmVudFJvdXRlcyA9IHJvdXRlc1xuICAgIC5zbGljZShvdXRsZXRSb290SW5kZXgpXG4gICAgLmZpbHRlcihyb3V0ZSA9PiAhIXJvdXRlPy5jb21wb25lbnQpO1xuICByZXR1cm4gb3V0bGV0Q29tcG9uZW50Um91dGVzLmxlbmd0aCA8PSAyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SXNSb290UGFnZSQob3V0bGV0ID0gUFJJTUFSWV9PVVRMRVQpIHtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmV0dXJuIHJvdXRlci5ldmVudHMucGlwZShcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgbWFwKCgpID0+IGlzUm9vdFBhZ2VSb3V0ZShyb3V0ZSwgb3V0bGV0KSksXG4gICAgdGFrZSgxKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdElzUm9vdFBhZ2Uob3V0bGV0ID0gUFJJTUFSWV9PVVRMRVQpIHtcbiAgY29uc3QgaXNSb290UGFnZSQgPSBpbmplY3RJc1Jvb3RQYWdlJChvdXRsZXQpO1xuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJldHVybiBkZXJpdmVkQXN5bmMoKCkgPT4gaXNSb290UGFnZSQsIHsgaW5qZWN0b3IgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROYXZTdGFydEFjdGlvbnMoXG4gIGlzUm9vdFBhZ2U6IFNpZ25hbDxib29sZWFuPiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSksXG4pOiBTaWduYWw8QWN0aW9uW10+IHtcbiAgY29uc3QgY29udGV4dCA9IGluamVjdFVpQ29udGV4dCgpO1xuICBjb25zdCBuYXZpZ2F0aW9uSGlzdG9yeSA9IGluamVjdChOYXZpZ2F0aW9uSGlzdG9yeVNlcnZpY2UpO1xuICBjb25zdCBpc0luaXRpYWwgPSBmYWxzZTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbVWlTZXJ2aWNlXSBuYXZpZ2F0aW9uSGlzdG9yeTonLCBuYXZpZ2F0aW9uSGlzdG9yeSlcbiAgICBjb25zdCBpc1Jvb3RQYWdlXyA9IGlzUm9vdFBhZ2UoKTtcbiAgICBjb25zdCBjb250ZXh0XyA9IGNvbnRleHQoKTtcbiAgICBzd2l0Y2ggKGNvbnRleHRfLmJyZWFrcG9pbnQpIHtcbiAgICAgIGNhc2UgJ3hMYXJnZSc6XG4gICAgICBjYXNlICdsYXJnZSc6XG4gICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgY2FzZSAnc21hbGwnOiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlXykge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNJbml0aWFsKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlICd4U21hbGwnOiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlXykge1xuICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuVE9HR0xFX1NJREVfTkFWLCBuYW1lOiAn44Oh44OL44Ol44O8JywgaWNvbjogJ21lbnUnIH1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0luaXRpYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuVE9HR0xFX1NJREVfTkFWLCBuYW1lOiAn44Oh44OL44Ol44O8JywgaWNvbjogJ21lbnUnIH1dXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlXykgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLkJBQ0ssIG5hbWU6ICdCQUNLJywgaWNvbjogJ2Fycm93X2JhY2snIH1dO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROYXZTdGFydEFjdGlvbnNWMigpIHtcbiAgY29uc3QgaXNSb290UGFnZSA9IGluamVjdElzUm9vdFBhZ2UoKTtcbiAgcmV0dXJuIGluamVjdE5hdlN0YXJ0QWN0aW9ucyhpc1Jvb3RQYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFNpZGVBcHBOYXZTdGFydEFjdGlvbnMob3V0bGV0ID0gJ3NpZGUnKTogU2lnbmFsPEFjdGlvbltdPiB7XG4gIGNvbnN0IGNvbnRleHQgPSBpbmplY3RVaUNvbnRleHQoKTtcbiAgY29uc3QgaXNSb290UGFnZVYyID0gaW5qZWN0SXNSb290UGFnZShvdXRsZXQpO1xuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGlzUm9vdFBhZ2VfID0gaXNSb290UGFnZVYyKCk7XG4gICAgY29uc3QgY29udGV4dF8gPSBjb250ZXh0KCk7XG4gICAgc3dpdGNoIChjb250ZXh0Xy5icmVha3BvaW50KSB7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlXykge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IGlkOiBOYXZBY3Rpb25JZC5DTE9TRSwgbmFtZTogJ0NMT1NFJywgaWNvbjogJ2Nsb3NlJyB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgaWQ6IE5hdkFjdGlvbklkLkJBQ0ssIG5hbWU6ICdCQUNLJywgaWNvbjogJ2Fycm93X2JhY2snIH1cbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VWlDb250ZXh0KCk6IFNpZ25hbDxVSUNvbnRleHQ+IHtcbiAgcmV0dXJuIGluamVjdChVaVNlcnZpY2UpLnVpQ29udGV4dDtcbn1cblxuZXhwb3J0IHR5cGUgVWlDb25maWdSZWR1Y2VyPFQgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmcsIEMgZXh0ZW5kcyBVSUNvbnRleHQgPSBhbnk+ID0gKGNvbmZpZzogVCwgY29udGV4dDogQykgPT4gVDtcbmV4cG9ydCBjb25zdCBVSV9DT05GSUdfUkVEVUNFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVaUNvbmZpZ1JlZHVjZXI8YW55Pj4oJ1VJX0NPTkZJR19SRURVQ0VSJyk7XG5leHBvcnQgdHlwZSBSZWR1Y2VyRmFjdG9yeTxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nPlxuICA9IChpbmplY3RvcjogSW5qZWN0b3IsIGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IChjb25maWc6IFQsIGNvbnRleHQ6IFVJQ29udGV4dCkgPT4gVDtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFJlZHVjZXJGYWN0b3J5PFQgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmc+XG4gID0gKGluamVjdG9yOiBJbmplY3RvciwgaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4gKGNvbnRleHQ6IFVJQ29udGV4dCkgPT4gVDtcblxuZXhwb3J0IGNvbnN0IHdyYXAgPSA8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz4oXG4gIGRlZmF1bHRSZWR1Y2VyRmFjdG9yeTogRGVmYXVsdFJlZHVjZXJGYWN0b3J5PFQ+LFxuKTogUmVkdWNlckZhY3Rvcnk8VD4gPT4ge1xuICByZXR1cm4gKGluamVjdG9yOiBJbmplY3RvciwgaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgIGNvbnN0IHJlZHVjZXIgPSBkZWZhdWx0UmVkdWNlckZhY3RvcnkoaW5qZWN0b3IsIGhvc3RJbmplY3Rvcik7XG4gICAgcmV0dXJuIChfOiBULCBjb250ZXh0OiBVSUNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWR1Y2VyKGNvbnRleHQpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGw8VD4oc2lnbmFsT3JWYWx1ZTogU2lnbmFsPFQ+IHwgVCk6IFQge1xuICByZXR1cm4gaXNTaWduYWwoc2lnbmFsT3JWYWx1ZSkgPyBzaWduYWxPclZhbHVlKCkgOiBzaWduYWxPclZhbHVlO1xufVxuXG5mdW5jdGlvbiBzZXRSZWR1Y2VyUGF0aChyZWR1Y2VyOiBGdW5jdGlvbiwgcGF0aDogc3RyaW5nW10pIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZHVjZXIsICdwYXRoJywgeyB2YWx1ZTogcGF0aCwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICByZXR1cm4gcmVkdWNlcjtcbn1cblxuZnVuY3Rpb24gZ2V0UmVkdWNlclBhdGgocmVkdWNlcjogRnVuY3Rpb24pIHtcbiAgcmV0dXJuIHJlZHVjZXJbJ3BhdGgnXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVVaUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nPihcbiAgcmVkdWNlckZhY3Rvcnk6IFJlZHVjZXJGYWN0b3J5PFQ+LFxuICBwYXRoOiBzdHJpbmdbXSA9IFtdLFxuICBuYW1lID0gJ25hbWUnLFxuICB0b2tlbiA9IFVJX0NPTkZJR19SRURVQ0VSLFxuKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IHRva2VuLFxuICAgIHVzZUZhY3Rvcnk6IChpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICAgIGZ1bmN0aW9uIF9yZWR1Y2VyRmFjdG9yeShob3N0SW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIGNvbnN0IHJlZHVjZXIgPSByZWR1Y2VyRmFjdG9yeShpbmplY3RvciwgaG9zdEluamVjdG9yKTtcbiAgICAgICAgcmV0dXJuIChjb25maWc6IFQsIGNvbnRleHQ6IGFueSk6IFQgPT4ge1xuICAgICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJlZHVjZXIoY29uZmlnLCBjb250ZXh0KTtcbiAgICAgICAgICByZXR1cm4gc2V0KGNvbmZpZyBhcyBvYmplY3QsIHBhdGgsIHJlZHVjZXIoZ2V0PGFueSwgYW55Pihjb25maWcsIHBhdGgpLCBjb250ZXh0KSkgYXMgVDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9yZWR1Y2VyRmFjdG9yeSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgICBzZXRSZWR1Y2VyUGF0aChfcmVkdWNlckZhY3RvcnksIHBhdGgpO1xuICAgICAgcmV0dXJuIF9yZWR1Y2VyRmFjdG9yeTtcbiAgICB9LFxuICAgIGRlcHM6IFtJbmplY3Rvcl0sXG4gICAgbXVsdGk6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb290Q29uZmlnPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBwYXRoczogc3RyaW5nW10gPSBbXSxcbiAgdG9rZW4gPSBVSV9DT05GSUdfUkVEVUNFUixcbik6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IHVpQ29udGV4dCA9IGluamVjdFVpQ29udGV4dCgpO1xuICBjb25zdCBmYWN0b3JpZXMgPSBpbmplY3RSZWR1Y2VyRmFjdG9yaWVzKHBhdGhzLCB0b2tlbik7XG4gIGNvbnN0IGhvc3RJbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIGNvbnN0IHJlZHVjZXJzID0gZmFjdG9yaWVzLm1hcChmYWN0b3J5ID0+IHtcbiAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGhvc3RJbmplY3RvciwgKCkgPT4gZmFjdG9yeShob3N0SW5qZWN0b3IpKTtcbiAgfSk7XG4gIGlmICghcmVkdWNlcnMpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJvb3RDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IHVpQ29udGV4dCgpO1xuICAgIHJldHVybiByZWR1Y2Vycy5yZWR1Y2UoKGFjYywgcmVkdWNlcikgPT4ge1xuICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChob3N0SW5qZWN0b3IsICgpID0+IHJlZHVjZXIoYWNjLCBjb250ZXh0KSk7XG4gICAgfSwge30gYXMgVCk7XG4gIH0pO1xuICByZXR1cm4gcm9vdENvbmZpZztcbn1cblxuLy8gVE9ETyhAbm9udGFuZ2VudCk6IGl0ZW1z44Gq44Gp44Gu5Y+W5b6X44GM5YWo44Gm44Gu44Kz44Oz44Od44O844ON44Oz44OI44Gn6KGM44KP44KM44KL44Gu44Gn6KiI566X44KS5pyA6YGp5YyW44GZ44KL44CCXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VWlDb25maWc8VCBleHRlbmRzIG9iamVjdD4oXG4gIHBhdGhzOiBzdHJpbmdbXSA9IFtdLFxuICB0b2tlbjogSW5qZWN0aW9uVG9rZW48VWlDb25maWdSZWR1Y2VyPGFueT4+ID0gVUlfQ09ORklHX1JFRFVDRVIsXG4pOiBTaWduYWw8VD4ge1xuICBjb25zdCByb290Q29uZmlnID0gaW5qZWN0Um9vdENvbmZpZzxUPihwYXRocywgdG9rZW4pO1xuICByZXR1cm4gc2NvcGVkKHJvb3RDb25maWcsIHBhdGhzIGFzIGFueSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ29uZmlnPFQgZXh0ZW5kcyBvYmplY3Q+KGRlZmF1bHRVc2VGYWN0b3J5OiBEZWZhdWx0UmVkdWNlckZhY3Rvcnk8VD4sIHBhdGg6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IGZhY3RvcnkgPSB3cmFwKGRlZmF1bHRVc2VGYWN0b3J5KTtcbiAgY29uc3QgdG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48VWlDb25maWdSZWR1Y2VyPFQ+PihgWyR7cGF0aC5qb2luKCcuJyl9XSBVSV9DT05GSUdfUkVEVUNFUmApO1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGUodXNlRmFjdG9yeT86IFJlZHVjZXJGYWN0b3J5PFQ+LCBsYWJlbCA9IHVzZUZhY3RvcnkgPyAnY3VzdG9tJyA6ICdkZWZhdWx0Jykge1xuICAgICAgdXNlRmFjdG9yeSA/Pz0gZmFjdG9yeTtcbiAgICAgIHJldHVybiBwcm92aWRlVWlDb25maWc8VD4odXNlRmFjdG9yeSwgcGF0aCwgYFske3BhdGguam9pbignLicpfV0gJHtsYWJlbH1gLCB0b2tlbik7XG4gICAgfSxcbiAgICBpbmplY3QoKSB7XG4gICAgICByZXR1cm4gaW5qZWN0VWlDb25maWc8VD4ocGF0aCwgdG9rZW4pO1xuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VESTxUIGV4dGVuZHMgb2JqZWN0LCBLPih0eXBlOiBUeXBlPEs+LCBkZWZhdWx0VXNlRmFjdG9yeTogRGVmYXVsdFJlZHVjZXJGYWN0b3J5PFQ+LCBwYXRoOiBzdHJpbmdbXSkge1xuICBjb25zdCBDb25maWcgPSBtYWtlQ29uZmlnPFQ+KGRlZmF1bHRVc2VGYWN0b3J5LCBwYXRoKTtcbiAgY29uc3QgSW5pdGlhbGl6ZXIgPSBtYWtlSW5pdGlhbGl6ZXJDb25maWcodHlwZSk7XG4gIGNvbnN0IHByb3ZpZGVDb21wb25lbnQgPSBtYWtlUHJvdmlkZUNvbW9wbmVudENvbmZpZ3VyZSh0eXBlKTtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiAodHlwZU9yQ29tcG9uZW50OiBQYXJhbWV0ZXJzPHR5cGVvZiBwcm92aWRlQ29tcG9uZW50PlswXSkgPT4gW1xuICAgICAgcHJvdmlkZUNvbXBvbmVudCh0eXBlT3JDb21wb25lbnQpLCBDb25maWcucHJvdmlkZSgpLFxuICAgICAgQ29uZmlnLnByb3ZpZGUoKSxcbiAgICBdLFxuICAgIHByb3ZpZGVDb25maWc6IENvbmZpZy5wcm92aWRlLFxuICAgIGluamVjdENvbmZpZzogQ29uZmlnLmluamVjdCxcbiAgICBwcm92aWRlSW5pdGlhbGl6ZXI6IEluaXRpYWxpemVyLnByb3ZpZGUsXG4gICAgaW5pdGlhbGl6ZTogSW5pdGlhbGl6ZXIuaW5pdGlhbGl6ZVN0b3JlLFxuICAgIHByb3ZpZGVDb21wb25lbnQsXG4gICAgSW5pdGlhbGl6ZXIsXG4gICAgQ29uZmlnLFxuICB9XG59XG5cbmZ1bmN0aW9uIGluamVjdFJlZHVjZXJzKHRva2VuKTogKChob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiBVaUNvbmZpZ1JlZHVjZXI8YW55PilbXSB7XG4gIHJldHVybiBpbmplY3REZWVwTXVsdGk8KGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IFVpQ29uZmlnUmVkdWNlcjxhbnk+Pih0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGluamVjdFJlZHVjZXJGYWN0b3JpZXMoXG4gIHBhdGg6IHN0cmluZ1tdID0gW10sXG4gIHRva2VuID0gVUlfQ09ORklHX1JFRFVDRVIsXG4pOiAoKGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IFVpQ29uZmlnUmVkdWNlcjxhbnk+KVtdIHtcbiAgcmV0dXJuIGluamVjdFJlZHVjZXJzKHRva2VuKS5maWx0ZXIoZmFjdG9yeSA9PiB7XG4gICAgcmV0dXJuIGdldFJlZHVjZXJQYXRoKGZhY3RvcnkpLmV2ZXJ5KChwLCBpKSA9PiBwYXRoW2ldID09PSBwKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3REZWVwTXVsdGk8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3RvcikpOiBUW10ge1xuICBjb25zdCB2YWx1ZU9yQXJyYXkgPSBpbmplY3Rvci5nZXQodG9rZW4gYXMgUHJvdmlkZXJUb2tlbjxUW10+LCBbXSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgY29uc3QgaXRlbXMgPSBBcnJheS5pc0FycmF5KHZhbHVlT3JBcnJheSkgPyB2YWx1ZU9yQXJyYXkgOiBbdmFsdWVPckFycmF5XTtcbiAgY29uc3QgcGFyZW50SW5qZWN0b3IgPSBpbmplY3Rvci5nZXQoSW5qZWN0b3IsIG51bGwsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gIGlmICghcGFyZW50SW5qZWN0b3IpIHJldHVybiBpdGVtcztcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KFsuLi5pbmplY3REZWVwTXVsdGkodG9rZW4sIHBhcmVudEluamVjdG9yKSwgLi4uaXRlbXNdKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z0luamVjdG9yKGluamVjdG9yOiBJbmplY3RvciB8IG51bGwgPSBpbmplY3QoSW5qZWN0b3IpKSB7XG4gIGNvbnN0IGdldFBhcmVudCA9IChpbmplY3RvcjogSW5qZWN0b3IsIG4gPSAwKTogSW5qZWN0b3IgfCBudWxsID0+IHtcbiAgICB3aGlsZSAoaW5qZWN0b3IgJiYgbi0tID4gMCkge1xuICAgICAgaW5qZWN0b3IgPSBpbmplY3Rvci5nZXQoSW5qZWN0b3IsIG51bGwsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiBpbmplY3RvcjtcbiAgfVxuXG4gIGNvbnN0IGdldEluamVjdG9yTmFtZSA9IChpbmplY3RvcjogSW5qZWN0b3IpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSBpbmplY3Rvci5nZXQoRWxlbWVudFJlZiwgbnVsbCk/Lm5hdGl2ZUVsZW1lbnQ/LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKG5hbWUpIHJldHVybiBgPCR7bmFtZX0+YDtcbiAgICByZXR1cm4gYCR7aW5qZWN0b3JbJ3NvdXJjZSddfWA7XG4gIH1cblxuICBjb25zdCBpc05vZGVJbmplY3RvciA9IChpbmplY3RvcjogSW5qZWN0b3IpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYsIG51bGwpICE9PSBudWxsO1xuICB9XG5cbiAgY29uc3QgbWFwVG9OYW1lcyA9IChyZWR1Y2VyczogYW55KSA9PiAocmVkdWNlcnMgPz8gW10pLm1hcChyZWR1Y2VyID0+IHJlZHVjZXIubmFtZSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XG4gICAgaW5qZWN0b3IgPSBnZXRQYXJlbnQoaW5qZWN0b3IsIGkpO1xuICAgIGlmIChpbmplY3RvciA9PT0gSW5qZWN0b3IuTlVMTCkgYnJlYWs7XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy11aS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvbmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy11aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ng-atomic-common-services-ui.mjs","sources":["../tmp-esm2022/services/ui/ui.service.js","../tmp-esm2022/services/ui/ui.helpers.js","../tmp-esm2022/services/ui/ng-atomic-common-services-ui.js"],"sourcesContent":["import { Injectable, PLATFORM_ID, computed, inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { NavigationStart } from '@angular/router';\nimport { filter, map, startWith } from 'rxjs';\nimport { isPlatformBrowser } from '@angular/common';\nimport { RouterService } from '@ng-atomic/common/services/router';\nimport { BreakpointService } from '@ng-atomic/common/services/breakpoint';\nimport * as i0 from \"@angular/core\";\nexport class UiService {\n constructor() {\n this.breakpoint = inject(BreakpointService);\n this.router = inject(RouterService);\n this.platformId = inject(PLATFORM_ID);\n this.paths$ = this.router.events.pipe(filter(event => event instanceof NavigationStart), map((event) => event.url), startWith(isPlatformBrowser(this.platformId) ? window?.location?.pathname : ''), map(url => this.router.parseUrl(url)), map(urlTree => urlTree.root.children?.primary?.segments ?? []));\n this.paths = toSignal(this.paths$);\n this.snapshot$ = this.router.events.pipe(filter(event => event instanceof NavigationStart), map(() => this.router.routerState.snapshot.root));\n this.snapshot = toSignal(this.snapshot$);\n this.uiContext = computed(() => ({\n breakpoint: this.breakpoint.breakpoint(),\n paths: this.paths(),\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: UiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: UiService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: UiService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvdWkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7QUFRdEYsTUFBTSxPQUFPLFNBQVM7SUFEdEI7UUFFVyxlQUFVLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRWpDLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3ZDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxlQUFlLENBQUMsRUFDakQsR0FBRyxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUMxQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQy9FLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQ3JDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQy9ELENBQUM7UUFDTyxVQUFLLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QixjQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMxQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLFlBQVksZUFBZSxDQUFDLEVBQ2pELEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQ2pELENBQUM7UUFDTyxhQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVwQyxjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFO1lBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO1NBQ3BCLENBQUMsQ0FBQyxDQUFDO0tBQ0w7OEdBeEJZLFNBQVM7a0hBQVQsU0FBUyxjQURJLE1BQU07OzJGQUNuQixTQUFTO2tCQURyQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIGNvbXB1dGVkLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlclNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9yb3V0ZXInO1xuaW1wb3J0IHsgQnJlYWtwb2ludCwgQnJlYWtwb2ludFNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9icmVha3BvaW50JztcblxuZXhwb3J0IGludGVyZmFjZSBVSUNvbnRleHQge1xuICBicmVha3BvaW50OiBCcmVha3BvaW50O1xuICBwYXRoczogYW55W107XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVWlTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgYnJlYWtwb2ludCA9IGluamVjdChCcmVha3BvaW50U2VydmljZSk7XG4gIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgcmVhZG9ubHkgcGF0aHMkID0gdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICBtYXAoKGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpID0+IGV2ZW50LnVybCksXG4gICAgc3RhcnRXaXRoKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgPyB3aW5kb3c/LmxvY2F0aW9uPy5wYXRobmFtZSA6ICcnKSxcbiAgICBtYXAodXJsID0+IHRoaXMucm91dGVyLnBhcnNlVXJsKHVybCkpLFxuICAgIG1hcCh1cmxUcmVlID0+IHVybFRyZWUucm9vdC5jaGlsZHJlbj8ucHJpbWFyeT8uc2VnbWVudHMgPz8gW10pLFxuICApO1xuICByZWFkb25seSBwYXRocyA9IHRvU2lnbmFsKHRoaXMucGF0aHMkKTtcblxuICByZWFkb25seSBzbmFwc2hvdCQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpLFxuICAgIG1hcCgoKSA9PiB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC5yb290KSxcbiAgKTtcbiAgcmVhZG9ubHkgc25hcHNob3QgPSB0b1NpZ25hbCh0aGlzLnNuYXBzaG90JCk7XG5cbiAgcmVhZG9ubHkgdWlDb250ZXh0ID0gY29tcHV0ZWQoKCkgPT4gKHtcbiAgICBicmVha3BvaW50OiB0aGlzLmJyZWFrcG9pbnQuYnJlYWtwb2ludCgpLFxuICAgIHBhdGhzOiB0aGlzLnBhdGhzKCksXG4gIH0pKTtcbn1cbiJdfQ==","import { ElementRef, InjectionToken, Injector, computed, effect, inject, isSignal, runInInjectionContext, signal } from \"@angular/core\";\nimport { UiService } from \"./ui.service\";\nimport { get, set } from \"lodash-es\";\nimport { makeProvideComopnentConfigure } from \"@ng-atomic/core\";\nimport { ActivatedRoute, PRIMARY_OUTLET, Router } from \"@angular/router\";\nimport { map, shareReplay, startWith, take } from \"rxjs\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { NavigationHistoryService } from \"@ng-atomic/common/services/navigation-history\";\nimport { derivedAsync } from \"ngxtension/derived-async\";\nimport { makeInitializerConfig } from \"@ng-atomic/common/services/initializer\";\nexport function scoped(source, path) {\n const scopedSignal = signal(get(source(), path));\n effect(() => {\n scopedSignal.set(get(source(), path, source()));\n });\n return computed(() => scopedSignal());\n}\nexport function injectBreakpoint() {\n return inject(UiService).breakpoint.breakpoint;\n}\nexport function injectIsMobile() {\n const breakpoint = injectBreakpoint();\n return computed(() => ['xSmall', 'small'].includes(breakpoint()));\n}\nexport var NavActionId;\n(function (NavActionId) {\n NavActionId[\"TOGGLE_SIDE_NAV\"] = \"[@ng-atomic/common/services/ui] TOGGLE_SIDE_NAV\";\n NavActionId[\"BACK\"] = \"[@ng-atomic/common/services/ui] BACK\";\n NavActionId[\"CLOSE\"] = \"[@ng-atomic/common/services/ui] CLOSE\";\n})(NavActionId || (NavActionId = {}));\n// routeを遡る\nfunction flattenRoutes(route) {\n const routes = [];\n let route_ = route;\n while (route_) {\n routes.push(route_);\n if (!route_.parent)\n break;\n route_ = route_.parent;\n }\n return routes;\n}\nexport function isRootPageRoute(route, outlet = PRIMARY_OUTLET) {\n const routes = flattenRoutes(route).reverse();\n const outletRootIndex = routes.findIndex(route => route.outlet === outlet);\n const outletComponentRoutes = routes\n .slice(outletRootIndex)\n .filter(route => !!route?.component);\n return outletComponentRoutes.length <= 2;\n}\nexport function injectIsRootPage$(outlet = PRIMARY_OUTLET) {\n const router = inject(Router);\n const route = inject(ActivatedRoute);\n return router.events.pipe(startWith(null), map(() => isRootPageRoute(route, outlet)), take(1), shareReplay(1), takeUntilDestroyed());\n}\nexport function injectIsRootPage(outlet = PRIMARY_OUTLET) {\n const isRootPage$ = injectIsRootPage$(outlet);\n const injector = inject(Injector);\n return derivedAsync(() => isRootPage$, { injector });\n}\nexport function injectNavStartActions(isRootPage = signal(false)) {\n const context = injectUiContext();\n const navigationHistory = inject(NavigationHistoryService);\n const isInitial = false;\n return computed(() => {\n console.debug('[UiService] navigationHistory:', navigationHistory);\n const isRootPage_ = isRootPage();\n const context_ = context();\n switch (context_.breakpoint) {\n case 'xLarge':\n case 'large':\n case 'medium':\n case 'small': {\n if (isRootPage_) {\n return [];\n }\n else {\n if (isInitial) {\n return [];\n }\n else {\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n }\n case 'xSmall': {\n if (isRootPage_) {\n return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }];\n }\n else {\n if (isInitial) {\n return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }];\n }\n else {\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n }\n default: {\n if (isRootPage_)\n return [];\n return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];\n }\n }\n });\n}\nexport function injectNavStartActionsV2() {\n const isRootPage = injectIsRootPage();\n return injectNavStartActions(isRootPage);\n}\nexport function injectSideAppNavStartActions(outlet = 'side') {\n const context = injectUiContext();\n const isRootPageV2 = injectIsRootPage(outlet);\n return computed(() => {\n const isRootPage_ = isRootPageV2();\n const context_ = context();\n switch (context_.breakpoint) {\n default: {\n if (isRootPage_) {\n return [\n { id: NavActionId.CLOSE, name: 'CLOSE', icon: 'close' },\n ];\n }\n else {\n return [\n { id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }\n ];\n }\n }\n }\n });\n}\nexport function injectUiContext() {\n return inject(UiService).uiContext;\n}\nexport const UI_CONFIG_REDUCER = new InjectionToken('UI_CONFIG_REDUCER');\nexport const wrap = (defaultReducerFactory) => {\n return (injector, hostInjector) => {\n const reducer = defaultReducerFactory(injector, hostInjector);\n return (_, context) => {\n return reducer(context);\n };\n };\n};\nexport function call(signalOrValue) {\n return isSignal(signalOrValue) ? signalOrValue() : signalOrValue;\n}\nfunction setReducerPath(reducer, path) {\n Object.defineProperty(reducer, 'path', { value: path, configurable: true });\n return reducer;\n}\nfunction getReducerPath(reducer) {\n return reducer['path'];\n}\nexport function provideUiConfig(reducerFactory, path = [], name = 'name', token = UI_CONFIG_REDUCER) {\n return {\n provide: token,\n useFactory: (injector) => {\n function _reducerFactory(hostInjector) {\n const reducer = reducerFactory(injector, hostInjector);\n return (config, context) => {\n if (path.length === 0)\n return reducer(config, context);\n return set(config, path, reducer(get(config, path), context));\n };\n }\n Object.defineProperty(_reducerFactory, 'name', { value: name, configurable: true });\n setReducerPath(_reducerFactory, path);\n return _reducerFactory;\n },\n deps: [Injector],\n multi: true,\n };\n}\nexport function injectRootConfig(paths = [], token = UI_CONFIG_REDUCER) {\n const uiContext = injectUiContext();\n const factories = injectReducerFactories(paths, token);\n const hostInjector = inject(Injector);\n const reducers = factories.map(factory => {\n return runInInjectionContext(hostInjector, () => factory(hostInjector));\n });\n if (!reducers)\n return undefined;\n const rootConfig = computed(() => {\n const context = uiContext();\n return reducers.reduce((acc, reducer) => {\n return runInInjectionContext(hostInjector, () => reducer(acc, context));\n }, {});\n });\n return rootConfig;\n}\n// TODO(@nontangent): itemsなどの取得が全てのコンポーネントで行われるので計算を最適化する。\nexport function injectUiConfig(paths = [], token = UI_CONFIG_REDUCER) {\n const rootConfig = injectRootConfig(paths, token);\n return scoped(rootConfig, paths);\n}\nexport function makeConfig(defaultUseFactory, path) {\n const factory = wrap(defaultUseFactory);\n const token = new InjectionToken(`[${path.join('.')}] UI_CONFIG_REDUCER`);\n return {\n provide(useFactory, label = useFactory ? 'custom' : 'default') {\n useFactory ??= factory;\n return provideUiConfig(useFactory, path, `[${path.join('.')}] ${label}`, token);\n },\n inject() {\n return injectUiConfig(path, token);\n },\n };\n}\nexport function makeDI(type, defaultUseFactory, path) {\n const Config = makeConfig(defaultUseFactory, path);\n const Initializer = makeInitializerConfig(type);\n const provideComponent = makeProvideComopnentConfigure(type);\n return {\n provide: (typeOrComponent) => [\n provideComponent(typeOrComponent), Config.provide(),\n Config.provide(),\n ],\n provideConfig: Config.provide,\n injectConfig: Config.inject,\n provideInitializer: Initializer.provide,\n initialize: Initializer.initializeStore,\n provideComponent,\n Initializer,\n Config,\n };\n}\nfunction injectReducers(token) {\n return injectDeepMulti(token);\n}\nfunction injectReducerFactories(path = [], token = UI_CONFIG_REDUCER) {\n return injectReducers(token).filter(factory => {\n return getReducerPath(factory).every((p, i) => path[i] === p);\n });\n}\nexport function injectDeepMulti(token, injector = inject(Injector)) {\n const valueOrArray = injector.get(token, [], { optional: true });\n const items = Array.isArray(valueOrArray) ? valueOrArray : [valueOrArray];\n const parentInjector = injector.get(Injector, null, { skipSelf: true });\n if (!parentInjector)\n return items;\n return [...new Set([...injectDeepMulti(token, parentInjector), ...items])];\n}\nexport function debugInjector(injector = inject(Injector)) {\n const getParent = (injector, n = 0) => {\n while (injector && n-- > 0) {\n injector = injector.get(Injector, null, { skipSelf: true });\n }\n return injector;\n };\n const getInjectorName = (injector) => {\n const name = injector.get(ElementRef, null)?.nativeElement?.tagName?.toLowerCase();\n if (name)\n return `<${name}>`;\n return `${injector['source']}`;\n };\n const isNodeInjector = (injector) => {\n return injector.get(ElementRef, null) !== null;\n };\n const mapToNames = (reducers) => (reducers ?? []).map(reducer => reducer.name);\n for (let i = 0; i < 20; i++) {\n injector = getParent(injector, i);\n if (injector === Injector.NULL)\n break;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvdWkuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQXlDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0ssT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQVUsNkJBQTZCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUUvRSxNQUFNLFVBQVUsTUFBTSxDQUF5QyxNQUFpQixFQUFFLElBQW1CO0lBQ25HLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBVSxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ1YsWUFBWSxD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QU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRXBGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM1QixRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLFFBQVEsS0FBSyxRQUFRLENBQUMsSUFBSTtZQUFFLE1BQU07SUFDeEMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0b3IsIFByb3ZpZGVyLCBQcm92aWRlclRva2VuLCBTaWduYWwsIFR5cGUsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaXNTaWduYWwsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFVJQ29udGV4dCwgVWlTZXJ2aWNlIH0gZnJvbSBcIi4vdWkuc2VydmljZVwiO1xuaW1wb3J0IHsgZ2V0LCBzZXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBBY3Rpb24sIG1ha2VQcm92aWRlQ29tb3BuZW50Q29uZmlndXJlIH0gZnJvbSBcIkBuZy1hdG9taWMvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBtYXAsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHRha2UgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uSGlzdG9yeVNlcnZpY2UgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvbmF2aWdhdGlvbi1oaXN0b3J5XCI7XG5pbXBvcnQgeyBkZXJpdmVkQXN5bmMgfSBmcm9tIFwibmd4dGVuc2lvbi9kZXJpdmVkLWFzeW5jXCI7XG5pbXBvcnQgeyBtYWtlSW5pdGlhbGl6ZXJDb25maWcgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvaW5pdGlhbGl6ZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNjb3BlZDxUIGV4dGVuZHMgb2JqZWN0LCBUS2V5IGV4dGVuZHMga2V5b2YgVD4oc291cmNlOiBTaWduYWw8VD4sIHBhdGg6IFRLZXkgfCBbVEtleV0pOiBTaWduYWw8VFtUS2V5XT4ge1xuICBjb25zdCBzY29wZWRTaWduYWwgPSBzaWduYWw8VFtUS2V5XT4oZ2V0KHNvdXJjZSgpLCBwYXRoKSk7XG4gIGVmZmVjdCgoKSA9PiB7XG4gICAgc2NvcGVkU2lnbmFsLnNldChnZXQoc291cmNlKCksIHBhdGgsIHNvdXJjZSgpKSBhcyBUW1RLZXldKTtcbiAgfSk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiBzY29wZWRTaWduYWwoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcmVha3BvaW50KCkge1xuICByZXR1cm4gaW5qZWN0KFVpU2VydmljZSkuYnJlYWtwb2ludC5icmVha3BvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SXNNb2JpbGUoKSB7XG4gIGNvbnN0IGJyZWFrcG9pbnQgPSBpbmplY3RCcmVha3BvaW50KCk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiBbJ3hTbWFsbCcsICdzbWFsbCddLmluY2x1ZGVzKGJyZWFrcG9pbnQoKSkpO1xufVxuXG5leHBvcnQgZW51bSBOYXZBY3Rpb25JZCB7XG4gIFRPR0dMRV9TSURFX05BViA9ICdbQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvdWldIFRPR0dMRV9TSURFX05BVicsXG4gIEJBQ0sgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBCQUNLJyxcbiAgQ0xPU0UgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBDTE9TRScsXG59XG5cbi8vIHJvdXRl44KS6YGh44KLXG5mdW5jdGlvbiBmbGF0dGVuUm91dGVzKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IEFjdGl2YXRlZFJvdXRlW10ge1xuICBjb25zdCByb3V0ZXMgPSBbXTtcbiAgbGV0IHJvdXRlXyA9IHJvdXRlO1xuICB3aGlsZSAocm91dGVfKSB7XG4gICAgcm91dGVzLnB1c2gocm91dGVfKTtcbiAgICBpZiAoIXJvdXRlXy5wYXJlbnQpIGJyZWFrO1xuICAgIHJvdXRlXyA9IHJvdXRlXy5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIHJvdXRlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUm9vdFBhZ2VSb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGUsIG91dGxldCA9IFBSSU1BUllfT1VUTEVUKSB7XG4gIGNvbnN0IHJvdXRlcyA9IGZsYXR0ZW5Sb3V0ZXMocm91dGUpLnJldmVyc2UoKTtcbiAgY29uc3Qgb3V0bGV0Um9vdEluZGV4ID0gcm91dGVzLmZpbmRJbmRleChyb3V0ZSA9PiByb3V0ZS5vdXRsZXQgPT09IG91dGxldCk7XG4gIGNvbnN0IG91dGxldENvbXBvbmVudFJvdXRlcyA9IHJvdXRlc1xuICAgIC5zbGljZShvdXRsZXRSb290SW5kZXgpXG4gICAgLmZpbHRlcihyb3V0ZSA9PiAhIXJvdXRlPy5jb21wb25lbnQpO1xuICByZXR1cm4gb3V0bGV0Q29tcG9uZW50Um91dGVzLmxlbmd0aCA8PSAyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SXNSb290UGFnZSQob3V0bGV0ID0gUFJJTUFSWV9PVVRMRVQpIHtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmV0dXJuIHJvdXRlci5ldmVudHMucGlwZShcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgbWFwKCgpID0+IGlzUm9vdFBhZ2VSb3V0ZShyb3V0ZSwgb3V0bGV0KSksXG4gICAgdGFrZSgxKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdElzUm9vdFBhZ2Uob3V0bGV0ID0gUFJJTUFSWV9PVVRMRVQpIHtcbiAgY29uc3QgaXNSb290UGFnZSQgPSBpbmplY3RJc1Jvb3RQYWdlJChvdXRsZXQpO1xuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJldHVybiBkZXJpdmVkQXN5bmMoKCkgPT4gaXNSb290UGFnZSQsIHsgaW5qZWN0b3IgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROYXZTdGFydEFjdGlvbnMoXG4gIGlzUm9vdFBhZ2U6IFNpZ25hbDxib29sZWFuPiA9IHNpZ25hbDxib29sZWFuPihmYWxzZSksXG4pOiBTaWduYWw8QWN0aW9uW10+IHtcbiAgY29uc3QgY29udGV4dCA9IGluamVjdFVpQ29udGV4dCgpO1xuICBjb25zdCBuYXZpZ2F0aW9uSGlzdG9yeSA9IGluamVjdChOYXZpZ2F0aW9uSGlzdG9yeVNlcnZpY2UpO1xuICBjb25zdCBpc0luaXRpYWwgPSBmYWxzZTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbVWlTZXJ2aWNlXSBuYXZpZ2F0aW9uSGlzdG9yeTonLCBuYXZpZ2F0aW9uSGlzdG9yeSlcbiAgICBjb25zdCBpc1Jvb3RQYWdlXyA9IGlzUm9vdFBhZ2UoKTtcbiAgICBjb25zdCBjb250ZXh0XyA9IGNvbnRleHQoKTtcbiAgICBzd2l0Y2ggKGNvbnRleHRfLmJyZWFrcG9pbnQpIHtcbiAgICAgIGNhc2UgJ3hMYXJnZSc6XG4gICAgICBjYXNlICdsYXJnZSc6XG4gICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgY2FzZSAnc21hbGwnOiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlXykge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNJbml0aWFsKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlICd4U21hbGwnOiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlXykge1xuICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuVE9HR0xFX1NJREVfTkFWLCBuYW1lOiAn44Oh44OL44Ol44O8JywgaWNvbjogJ21lbnUnIH1dO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0luaXRpYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuVE9HR0xFX1NJREVfTkFWLCBuYW1lOiAn44Oh44OL44Ol44O8JywgaWNvbjogJ21lbnUnIH1dXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlXykgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLkJBQ0ssIG5hbWU6ICdCQUNLJywgaWNvbjogJ2Fycm93X2JhY2snIH1dO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3ROYXZTdGFydEFjdGlvbnNWMigpIHtcbiAgY29uc3QgaXNSb290UGFnZSA9IGluamVjdElzUm9vdFBhZ2UoKTtcbiAgcmV0dXJuIGluamVjdE5hdlN0YXJ0QWN0aW9ucyhpc1Jvb3RQYWdlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFNpZGVBcHBOYXZTdGFydEFjdGlvbnMob3V0bGV0ID0gJ3NpZGUnKTogU2lnbmFsPEFjdGlvbltdPiB7XG4gIGNvbnN0IGNvbnRleHQgPSBpbmplY3RVaUNvbnRleHQoKTtcbiAgY29uc3QgaXNSb290UGFnZVYyID0gaW5qZWN0SXNSb290UGFnZShvdXRsZXQpO1xuICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGlzUm9vdFBhZ2VfID0gaXNSb290UGFnZVYyKCk7XG4gICAgY29uc3QgY29udGV4dF8gPSBjb250ZXh0KCk7XG4gICAgc3dpdGNoIChjb250ZXh0Xy5icmVha3BvaW50KSB7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlXykge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7IGlkOiBOYXZBY3Rpb25JZC5DTE9TRSwgbmFtZTogJ0NMT1NFJywgaWNvbjogJ2Nsb3NlJyB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHsgaWQ6IE5hdkFjdGlvbklkLkJBQ0ssIG5hbWU6ICdCQUNLJywgaWNvbjogJ2Fycm93X2JhY2snIH1cbiAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VWlDb250ZXh0KCk6IFNpZ25hbDxVSUNvbnRleHQ+IHtcbiAgcmV0dXJuIGluamVjdChVaVNlcnZpY2UpLnVpQ29udGV4dDtcbn1cblxuZXhwb3J0IHR5cGUgVWlDb25maWdSZWR1Y2VyPFQgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmcsIEMgZXh0ZW5kcyBVSUNvbnRleHQgPSBhbnk+ID0gKGNvbmZpZzogVCwgY29udGV4dDogQykgPT4gVDtcbmV4cG9ydCBjb25zdCBVSV9DT05GSUdfUkVEVUNFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVaUNvbmZpZ1JlZHVjZXI8YW55Pj4oJ1VJX0NPTkZJR19SRURVQ0VSJyk7XG5leHBvcnQgdHlwZSBSZWR1Y2VyRmFjdG9yeTxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nPlxuICA9IChpbmplY3RvcjogSW5qZWN0b3IsIGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IChjb25maWc6IFQsIGNvbnRleHQ6IFVJQ29udGV4dCkgPT4gVDtcblxuZXhwb3J0IHR5cGUgRGVmYXVsdFJlZHVjZXJGYWN0b3J5PFQgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmc+XG4gID0gKGluamVjdG9yOiBJbmplY3RvciwgaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4gKGNvbnRleHQ6IFVJQ29udGV4dCkgPT4gVDtcblxuZXhwb3J0IGNvbnN0IHdyYXAgPSA8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz4oXG4gIGRlZmF1bHRSZWR1Y2VyRmFjdG9yeTogRGVmYXVsdFJlZHVjZXJGYWN0b3J5PFQ+LFxuKTogUmVkdWNlckZhY3Rvcnk8VD4gPT4ge1xuICByZXR1cm4gKGluamVjdG9yOiBJbmplY3RvciwgaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgIGNvbnN0IHJlZHVjZXIgPSBkZWZhdWx0UmVkdWNlckZhY3RvcnkoaW5qZWN0b3IsIGhvc3RJbmplY3Rvcik7XG4gICAgcmV0dXJuIChfOiBULCBjb250ZXh0OiBVSUNvbnRleHQpID0+IHtcbiAgICAgIHJldHVybiByZWR1Y2VyKGNvbnRleHQpO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGw8VD4oc2lnbmFsT3JWYWx1ZTogU2lnbmFsPFQ+IHwgVCk6IFQge1xuICByZXR1cm4gaXNTaWduYWwoc2lnbmFsT3JWYWx1ZSkgPyBzaWduYWxPclZhbHVlKCkgOiBzaWduYWxPclZhbHVlO1xufVxuXG5mdW5jdGlvbiBzZXRSZWR1Y2VyUGF0aChyZWR1Y2VyOiBGdW5jdGlvbiwgcGF0aDogc3RyaW5nW10pIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZHVjZXIsICdwYXRoJywgeyB2YWx1ZTogcGF0aCwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICByZXR1cm4gcmVkdWNlcjtcbn1cblxuZnVuY3Rpb24gZ2V0UmVkdWNlclBhdGgocmVkdWNlcjogRnVuY3Rpb24pIHtcbiAgcmV0dXJuIHJlZHVjZXJbJ3BhdGgnXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVVaUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nPihcbiAgcmVkdWNlckZhY3Rvcnk6IFJlZHVjZXJGYWN0b3J5PFQ+LFxuICBwYXRoOiBzdHJpbmdbXSA9IFtdLFxuICBuYW1lID0gJ25hbWUnLFxuICB0b2tlbiA9IFVJX0NPTkZJR19SRURVQ0VSLFxuKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IHRva2VuLFxuICAgIHVzZUZhY3Rvcnk6IChpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICAgIGZ1bmN0aW9uIF9yZWR1Y2VyRmFjdG9yeShob3N0SW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIGNvbnN0IHJlZHVjZXIgPSByZWR1Y2VyRmFjdG9yeShpbmplY3RvciwgaG9zdEluamVjdG9yKTtcbiAgICAgICAgcmV0dXJuIChjb25maWc6IFQsIGNvbnRleHQ6IGFueSk6IFQgPT4ge1xuICAgICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJlZHVjZXIoY29uZmlnLCBjb250ZXh0KTtcbiAgICAgICAgICByZXR1cm4gc2V0KGNvbmZpZyBhcyBvYmplY3QsIHBhdGgsIHJlZHVjZXIoZ2V0PGFueSwgYW55Pihjb25maWcsIHBhdGgpLCBjb250ZXh0KSkgYXMgVDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9yZWR1Y2VyRmFjdG9yeSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgICBzZXRSZWR1Y2VyUGF0aChfcmVkdWNlckZhY3RvcnksIHBhdGgpO1xuICAgICAgcmV0dXJuIF9yZWR1Y2VyRmFjdG9yeTtcbiAgICB9LFxuICAgIGRlcHM6IFtJbmplY3Rvcl0sXG4gICAgbXVsdGk6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb290Q29uZmlnPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBwYXRoczogc3RyaW5nW10gPSBbXSxcbiAgdG9rZW4gPSBVSV9DT05GSUdfUkVEVUNFUixcbik6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IHVpQ29udGV4dCA9IGluamVjdFVpQ29udGV4dCgpO1xuICBjb25zdCBmYWN0b3JpZXMgPSBpbmplY3RSZWR1Y2VyRmFjdG9yaWVzKHBhdGhzLCB0b2tlbik7XG4gIGNvbnN0IGhvc3RJbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIGNvbnN0IHJlZHVjZXJzID0gZmFjdG9yaWVzLm1hcChmYWN0b3J5ID0+IHtcbiAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGhvc3RJbmplY3RvciwgKCkgPT4gZmFjdG9yeShob3N0SW5qZWN0b3IpKTtcbiAgfSk7XG4gIGlmICghcmVkdWNlcnMpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJvb3RDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IHVpQ29udGV4dCgpO1xuICAgIHJldHVybiByZWR1Y2Vycy5yZWR1Y2UoKGFjYywgcmVkdWNlcikgPT4ge1xuICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChob3N0SW5qZWN0b3IsICgpID0+IHJlZHVjZXIoYWNjLCBjb250ZXh0KSk7XG4gICAgfSwge30gYXMgVCk7XG4gIH0pO1xuICByZXR1cm4gcm9vdENvbmZpZztcbn1cblxuLy8gVE9ETyhAbm9udGFuZ2VudCk6IGl0ZW1z44Gq44Gp44Gu5Y+W5b6X44GM5YWo44Gm44Gu44Kz44Oz44Od44O844ON44Oz44OI44Gn6KGM44KP44KM44KL44Gu44Gn6KiI566X44KS5pyA6YGp5YyW44GZ44KL44CCXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VWlDb25maWc8VCBleHRlbmRzIG9iamVjdD4oXG4gIHBhdGhzOiBzdHJpbmdbXSA9IFtdLFxuICB0b2tlbjogSW5qZWN0aW9uVG9rZW48VWlDb25maWdSZWR1Y2VyPGFueT4+ID0gVUlfQ09ORklHX1JFRFVDRVIsXG4pOiBTaWduYWw8VD4ge1xuICBjb25zdCByb290Q29uZmlnID0gaW5qZWN0Um9vdENvbmZpZzxUPihwYXRocywgdG9rZW4pO1xuICByZXR1cm4gc2NvcGVkKHJvb3RDb25maWcsIHBhdGhzIGFzIGFueSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ29uZmlnPFQgZXh0ZW5kcyBvYmplY3Q+KGRlZmF1bHRVc2VGYWN0b3J5OiBEZWZhdWx0UmVkdWNlckZhY3Rvcnk8VD4sIHBhdGg6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IGZhY3RvcnkgPSB3cmFwKGRlZmF1bHRVc2VGYWN0b3J5KTtcbiAgY29uc3QgdG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48VWlDb25maWdSZWR1Y2VyPFQ+PihgWyR7cGF0aC5qb2luKCcuJyl9XSBVSV9DT05GSUdfUkVEVUNFUmApO1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGUodXNlRmFjdG9yeT86IFJlZHVjZXJGYWN0b3J5PFQ+LCBsYWJlbCA9IHVzZUZhY3RvcnkgPyAnY3VzdG9tJyA6ICdkZWZhdWx0Jykge1xuICAgICAgdXNlRmFjdG9yeSA/Pz0gZmFjdG9yeTtcbiAgICAgIHJldHVybiBwcm92aWRlVWlDb25maWc8VD4odXNlRmFjdG9yeSwgcGF0aCwgYFske3BhdGguam9pbignLicpfV0gJHtsYWJlbH1gLCB0b2tlbik7XG4gICAgfSxcbiAgICBpbmplY3QoKSB7XG4gICAgICByZXR1cm4gaW5qZWN0VWlDb25maWc8VD4ocGF0aCwgdG9rZW4pO1xuICAgIH0sXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VESTxUIGV4dGVuZHMgb2JqZWN0LCBLPih0eXBlOiBUeXBlPEs+LCBkZWZhdWx0VXNlRmFjdG9yeTogRGVmYXVsdFJlZHVjZXJGYWN0b3J5PFQ+LCBwYXRoOiBzdHJpbmdbXSkge1xuICBjb25zdCBDb25maWcgPSBtYWtlQ29uZmlnPFQ+KGRlZmF1bHRVc2VGYWN0b3J5LCBwYXRoKTtcbiAgY29uc3QgSW5pdGlhbGl6ZXIgPSBtYWtlSW5pdGlhbGl6ZXJDb25maWcodHlwZSk7XG4gIGNvbnN0IHByb3ZpZGVDb21wb25lbnQgPSBtYWtlUHJvdmlkZUNvbW9wbmVudENvbmZpZ3VyZSh0eXBlKTtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiAodHlwZU9yQ29tcG9uZW50OiBQYXJhbWV0ZXJzPHR5cGVvZiBwcm92aWRlQ29tcG9uZW50PlswXSkgPT4gW1xuICAgICAgcHJvdmlkZUNvbXBvbmVudCh0eXBlT3JDb21wb25lbnQpLCBDb25maWcucHJvdmlkZSgpLFxuICAgICAgQ29uZmlnLnByb3ZpZGUoKSxcbiAgICBdLFxuICAgIHByb3ZpZGVDb25maWc6IENvbmZpZy5wcm92aWRlLFxuICAgIGluamVjdENvbmZpZzogQ29uZmlnLmluamVjdCxcbiAgICBwcm92aWRlSW5pdGlhbGl6ZXI6IEluaXRpYWxpemVyLnByb3ZpZGUsXG4gICAgaW5pdGlhbGl6ZTogSW5pdGlhbGl6ZXIuaW5pdGlhbGl6ZVN0b3JlLFxuICAgIHByb3ZpZGVDb21wb25lbnQsXG4gICAgSW5pdGlhbGl6ZXIsXG4gICAgQ29uZmlnLFxuICB9XG59XG5cbmZ1bmN0aW9uIGluamVjdFJlZHVjZXJzKHRva2VuKTogKChob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiBVaUNvbmZpZ1JlZHVjZXI8YW55PilbXSB7XG4gIHJldHVybiBpbmplY3REZWVwTXVsdGk8KGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IFVpQ29uZmlnUmVkdWNlcjxhbnk+Pih0b2tlbik7XG59XG5cbmZ1bmN0aW9uIGluamVjdFJlZHVjZXJGYWN0b3JpZXMoXG4gIHBhdGg6IHN0cmluZ1tdID0gW10sXG4gIHRva2VuID0gVUlfQ09ORklHX1JFRFVDRVIsXG4pOiAoKGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IFVpQ29uZmlnUmVkdWNlcjxhbnk+KVtdIHtcbiAgcmV0dXJuIGluamVjdFJlZHVjZXJzKHRva2VuKS5maWx0ZXIoZmFjdG9yeSA9PiB7XG4gICAgcmV0dXJuIGdldFJlZHVjZXJQYXRoKGZhY3RvcnkpLmV2ZXJ5KChwLCBpKSA9PiBwYXRoW2ldID09PSBwKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3REZWVwTXVsdGk8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3RvcikpOiBUW10ge1xuICBjb25zdCB2YWx1ZU9yQXJyYXkgPSBpbmplY3Rvci5nZXQodG9rZW4gYXMgUHJvdmlkZXJUb2tlbjxUW10+LCBbXSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgY29uc3QgaXRlbXMgPSBBcnJheS5pc0FycmF5KHZhbHVlT3JBcnJheSkgPyB2YWx1ZU9yQXJyYXkgOiBbdmFsdWVPckFycmF5XTtcbiAgY29uc3QgcGFyZW50SW5qZWN0b3IgPSBpbmplY3Rvci5nZXQoSW5qZWN0b3IsIG51bGwsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gIGlmICghcGFyZW50SW5qZWN0b3IpIHJldHVybiBpdGVtcztcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KFsuLi5pbmplY3REZWVwTXVsdGkodG9rZW4sIHBhcmVudEluamVjdG9yKSwgLi4uaXRlbXNdKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z0luamVjdG9yKGluamVjdG9yOiBJbmplY3RvciB8IG51bGwgPSBpbmplY3QoSW5qZWN0b3IpKSB7XG4gIGNvbnN0IGdldFBhcmVudCA9IChpbmplY3RvcjogSW5qZWN0b3IsIG4gPSAwKTogSW5qZWN0b3IgfCBudWxsID0+IHtcbiAgICB3aGlsZSAoaW5qZWN0b3IgJiYgbi0tID4gMCkge1xuICAgICAgaW5qZWN0b3IgPSBpbmplY3Rvci5nZXQoSW5qZWN0b3IsIG51bGwsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgfVxuICAgIHJldHVybiBpbmplY3RvcjtcbiAgfVxuXG4gIGNvbnN0IGdldEluamVjdG9yTmFtZSA9IChpbmplY3RvcjogSW5qZWN0b3IpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IG5hbWUgPSBpbmplY3Rvci5nZXQoRWxlbWVudFJlZiwgbnVsbCk/Lm5hdGl2ZUVsZW1lbnQ/LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKG5hbWUpIHJldHVybiBgPCR7bmFtZX0+YDtcbiAgICByZXR1cm4gYCR7aW5qZWN0b3JbJ3NvdXJjZSddfWA7XG4gIH1cblxuICBjb25zdCBpc05vZGVJbmplY3RvciA9IChpbmplY3RvcjogSW5qZWN0b3IpOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYsIG51bGwpICE9PSBudWxsO1xuICB9XG5cbiAgY29uc3QgbWFwVG9OYW1lcyA9IChyZWR1Y2VyczogYW55KSA9PiAocmVkdWNlcnMgPz8gW10pLm1hcChyZWR1Y2VyID0+IHJlZHVjZXIubmFtZSk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XG4gICAgaW5qZWN0b3IgPSBnZXRQYXJlbnQoaW5qZWN0b3IsIGkpO1xuICAgIGlmIChpbmplY3RvciA9PT0gSW5qZWN0b3IuTlVMTCkgYnJlYWs7XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy11aS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvbmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy11aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|