@ng-atomic/common 17.10.0 → 17.11.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.
Files changed (47) hide show
  1. package/esm2022/interceptors/authorization/authorization.interceptor.mjs +9 -3
  2. package/esm2022/interceptors/interceptors.module.mjs +9 -9
  3. package/esm2022/services/app/app.service.mjs +3 -1
  4. package/esm2022/services/auth/auth.service.mjs +3 -2
  5. package/esm2022/services/initializer/index.mjs +2 -0
  6. package/esm2022/services/initializer/initializer.service.mjs +44 -0
  7. package/esm2022/services/initializer/ng-atomic-common-services-initializer.mjs +5 -0
  8. package/esm2022/services/root-property/index.mjs +2 -1
  9. package/esm2022/services/root-property/root-property.di.mjs +14 -0
  10. package/esm2022/services/root-property/root-property.service.mjs +47 -15
  11. package/esm2022/services/side-nav-mode/side-nav-mode.service.mjs +1 -1
  12. package/esm2022/services/ui/ui.helpers.mjs +15 -6
  13. package/esm2022/stores/entities/di.mjs +3 -3
  14. package/esm2022/utils/inject/inject.mjs +26 -8
  15. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs +9 -3
  16. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
  17. package/fesm2022/ng-atomic-common-interceptors.mjs +10 -10
  18. package/fesm2022/ng-atomic-common-interceptors.mjs.map +1 -1
  19. package/fesm2022/ng-atomic-common-services-app.mjs +2 -0
  20. package/fesm2022/ng-atomic-common-services-app.mjs.map +1 -1
  21. package/fesm2022/ng-atomic-common-services-auth.mjs +3 -2
  22. package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
  23. package/fesm2022/ng-atomic-common-services-initializer.mjs +50 -0
  24. package/fesm2022/ng-atomic-common-services-initializer.mjs.map +1 -0
  25. package/fesm2022/ng-atomic-common-services-root-property.mjs +58 -15
  26. package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
  27. package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs.map +1 -1
  28. package/fesm2022/ng-atomic-common-services-ui.mjs +15 -6
  29. package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
  30. package/fesm2022/ng-atomic-common-stores-entities.mjs +2 -2
  31. package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
  32. package/fesm2022/ng-atomic-common-utils.mjs +26 -8
  33. package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
  34. package/interceptors/authorization/authorization.interceptor.d.ts +3 -2
  35. package/interceptors/interceptors.module.d.ts +4 -0
  36. package/package.json +8 -2
  37. package/services/app/app.service.d.ts +2 -0
  38. package/services/auth/auth.service.d.ts +1 -0
  39. package/services/initializer/index.d.ts +1 -0
  40. package/services/initializer/initializer.service.d.ts +22 -0
  41. package/services/root-property/index.d.ts +1 -0
  42. package/services/root-property/root-property.di.d.ts +6 -0
  43. package/services/root-property/root-property.service.d.ts +7 -5
  44. package/services/side-nav-mode/side-nav-mode.service.d.ts +2 -1
  45. package/services/ui/ui.helpers.d.ts +6 -4
  46. package/stores/entities/di.d.ts +11 -3
  47. package/utils/inject/inject.d.ts +5 -1
@@ -5,12 +5,12 @@ import * as i0 from "@angular/core";
5
5
  export const PROVIDE_AUTHORIZATION = new InjectionToken('PROVIDE_AUTHORIZATION');
6
6
  export class AuthorizationInterceptor {
7
7
  constructor() {
8
- this.provide = inject(PROVIDE_AUTHORIZATION);
8
+ this.getAuth = inject(PROVIDE_AUTHORIZATION);
9
9
  }
10
10
  intercept(req, next) {
11
11
  if (!req.url.startsWith('/api'))
12
12
  return next.handle(req);
13
- return from(this.provide())
13
+ return from(this.getAuth())
14
14
  .pipe(take(1))
15
15
  .pipe(mergeMap(idToken => next.handle(idToken ? this.getRequestWithToken(req, idToken) : req)));
16
16
  }
@@ -23,4 +23,10 @@ export class AuthorizationInterceptor {
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: AuthorizationInterceptor, decorators: [{
24
24
  type: Injectable
25
25
  }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvaW50ZXJjZXB0b3JzL2F1dGhvcml6YXRpb24vYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUdoRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsdUJBQXVCLENBQUMsQ0FBQztBQUd2RyxNQUFNLE9BQU8sd0JBQXdCO0lBRHJDO1FBR1UsWUFBTyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBYWpEO0lBWEMsU0FBUyxDQUFDLEdBQXlCLEVBQUUsSUFBaUI7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxHQUF5QixFQUFFLEtBQWE7UUFDbEUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBQyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDOzhHQWRVLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cFJlcXVlc3QsIEh0dHBIYW5kbGVyLCBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1lcmdlTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBQcm92aWRlQXV0aG9yaXphdGlvbiA9ICgpID0+IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gfCBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+O1xuZXhwb3J0IGNvbnN0IFBST1ZJREVfQVVUSE9SSVpBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQcm92aWRlQXV0aG9yaXphdGlvbj4oJ1BST1ZJREVfQVVUSE9SSVpBVElPTicpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aG9yaXphdGlvbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBwcml2YXRlIHByb3ZpZGUgPSBpbmplY3QoUFJPVklERV9BVVRIT1JJWkFUSU9OKTtcblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xuICAgIGlmICghcmVxLnVybC5zdGFydHNXaXRoKCcvYXBpJykpIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuXG4gICAgcmV0dXJuIGZyb20odGhpcy5wcm92aWRlKCkpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnBpcGUobWVyZ2VNYXAoaWRUb2tlbiA9PiBuZXh0LmhhbmRsZShpZFRva2VuID8gdGhpcy5nZXRSZXF1ZXN0V2l0aFRva2VuKHJlcSwgaWRUb2tlbikgOiByZXEpKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlcXVlc3RXaXRoVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgdG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiByZXEuY2xvbmUoeyBzZXRIZWFkZXJzOiB7QXV0aG9yaXphdGlvbjogdG9rZW59IH0pO1xuICB9XG59XG4iXX0=
26
+ export const authorizationInterceptor = (req, next) => {
27
+ const getAuth = inject(PROVIDE_AUTHORIZATION);
28
+ if (!req.url.startsWith('/api'))
29
+ return next(req);
30
+ return from(getAuth()).pipe(take(1), mergeMap(token => next(token ? req.clone({ setHeaders: { Authorization: token } }) : req)));
31
+ };
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvaW50ZXJjZXB0b3JzL2F1dGhvcml6YXRpb24vYXV0aG9yaXphdGlvbi5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkUsT0FBTyxFQUFFLElBQUksRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN4QyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUdoRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBdUIsdUJBQXVCLENBQUMsQ0FBQztBQUd2RyxNQUFNLE9BQU8sd0JBQXdCO0lBRHJDO1FBR1UsWUFBTyxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBYWpEO0lBWEMsU0FBUyxDQUFDLEdBQXlCLEVBQUUsSUFBaUI7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxHQUF5QixFQUFFLEtBQWE7UUFDbEUsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUMsYUFBYSxFQUFFLEtBQUssRUFBQyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDOzhHQWRVLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVOztBQWtCWCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBc0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdkUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDOUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWxELE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3pGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwUmVxdWVzdCwgSHR0cEhhbmRsZXIsIEh0dHBFdmVudCwgSHR0cEludGVyY2VwdG9yLCBIdHRwSW50ZXJjZXB0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGZyb20sIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1lcmdlTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgdHlwZSBQcm92aWRlQXV0aG9yaXphdGlvbiA9ICgpID0+IFByb21pc2U8c3RyaW5nIHwgbnVsbD4gfCBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+O1xuZXhwb3J0IGNvbnN0IFBST1ZJREVfQVVUSE9SSVpBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQcm92aWRlQXV0aG9yaXphdGlvbj4oJ1BST1ZJREVfQVVUSE9SSVpBVElPTicpO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aG9yaXphdGlvbkludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBwcml2YXRlIGdldEF1dGggPSBpbmplY3QoUFJPVklERV9BVVRIT1JJWkFUSU9OKTtcblxuICBpbnRlcmNlcHQocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDx1bmtub3duPj4ge1xuICAgIGlmICghcmVxLnVybC5zdGFydHNXaXRoKCcvYXBpJykpIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuXG4gICAgcmV0dXJuIGZyb20odGhpcy5nZXRBdXRoKCkpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnBpcGUobWVyZ2VNYXAoaWRUb2tlbiA9PiBuZXh0LmhhbmRsZShpZFRva2VuID8gdGhpcy5nZXRSZXF1ZXN0V2l0aFRva2VuKHJlcSwgaWRUb2tlbikgOiByZXEpKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlcXVlc3RXaXRoVG9rZW4ocmVxOiBIdHRwUmVxdWVzdDx1bmtub3duPiwgdG9rZW46IHN0cmluZykge1xuICAgIHJldHVybiByZXEuY2xvbmUoeyBzZXRIZWFkZXJzOiB7QXV0aG9yaXphdGlvbjogdG9rZW59IH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBhdXRob3JpemF0aW9uSW50ZXJjZXB0b3I6IEh0dHBJbnRlcmNlcHRvckZuID0gKHJlcSwgbmV4dCkgPT4ge1xuICBjb25zdCBnZXRBdXRoID0gaW5qZWN0KFBST1ZJREVfQVVUSE9SSVpBVElPTik7XG4gIGlmICghcmVxLnVybC5zdGFydHNXaXRoKCcvYXBpJykpIHJldHVybiBuZXh0KHJlcSk7XG5cbiAgcmV0dXJuIGZyb20oZ2V0QXV0aCgpKS5waXBlKFxuICAgIHRha2UoMSksXG4gICAgbWVyZ2VNYXAodG9rZW4gPT4gbmV4dCh0b2tlbiA/IHJlcS5jbG9uZSh7IHNldEhlYWRlcnM6IHtBdXRob3JpemF0aW9uOiB0b2tlbn0gfSkgOiByZXEpKSxcbiAgKTtcbn07XG4iXX0=
@@ -20,10 +20,7 @@ export class InterceptorsModule {
20
20
  useClass: ThrottleInterceptor,
21
21
  multi: true
22
22
  },
23
- {
24
- provide: PROVIDE_AUTHORIZATION,
25
- useValue: () => inject(AuthService).auth$.pipe(switchMap(auth => auth ? auth.getIdToken() : of(``)), map(token => `Bearer ${token}`)),
26
- },
23
+ provideAuthorization()
27
24
  ], imports: [CommonModule] }); }
28
25
  }
29
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InterceptorsModule, decorators: [{
@@ -44,11 +41,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
44
41
  useClass: ThrottleInterceptor,
45
42
  multi: true
46
43
  },
47
- {
48
- provide: PROVIDE_AUTHORIZATION,
49
- useValue: () => inject(AuthService).auth$.pipe(switchMap(auth => auth ? auth.getIdToken() : of(``)), map(token => `Bearer ${token}`)),
50
- },
44
+ provideAuthorization()
51
45
  ],
52
46
  }]
53
47
  }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3JzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvaW50ZXJjZXB0b3JzL2ludGVyY2VwdG9ycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQy9HLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBMkIxQyxNQUFNLE9BQU8sa0JBQWtCOzhHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQixZQXRCM0IsWUFBWTsrR0FzQkgsa0JBQWtCLGFBcEJsQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixLQUFLLEVBQUUsSUFBSTthQUNaO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUM1QyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3BELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FDaEM7YUFDRjtTQUNGLFlBcEJDLFlBQVk7OzJGQXNCSCxrQkFBa0I7a0JBekI5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLHdCQUF3Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLG1CQUFtQjs0QkFDN0IsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHFCQUFxQjs0QkFDOUIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUM1QyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3BELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FDaEM7eUJBQ0Y7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBdXRob3JpemF0aW9uSW50ZXJjZXB0b3IsIFBST1ZJREVfQVVUSE9SSVpBVElPTiB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL2ludGVyY2VwdG9ycy9hdXRob3JpemF0aW9uJztcbmltcG9ydCB7IFRocm90dGxlSW50ZXJjZXB0b3IgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9pbnRlcmNlcHRvcnMvdGhyb3R0bGUnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9hdXRoJztcbmltcG9ydCB7IG1hcCwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxuICAgICAgdXNlQ2xhc3M6IEF1dGhvcml6YXRpb25JbnRlcmNlcHRvcixcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUyxcbiAgICAgIHVzZUNsYXNzOiBUaHJvdHRsZUludGVyY2VwdG9yLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBST1ZJREVfQVVUSE9SSVpBVElPTixcbiAgICAgIHVzZVZhbHVlOiAoKSA9PiBpbmplY3QoQXV0aFNlcnZpY2UpLmF1dGgkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChhdXRoID0+IGF1dGggPyBhdXRoLmdldElkVG9rZW4oKSA6IG9mKGBgKSksXG4gICAgICAgIG1hcCh0b2tlbiA9PiBgQmVhcmVyICR7dG9rZW59YCksXG4gICAgICApLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEludGVyY2VwdG9yc01vZHVsZSB7IH1cbiJdfQ==
48
+ export function provideAuthorization() {
49
+ return {
50
+ provide: PROVIDE_AUTHORIZATION,
51
+ useValue: () => inject(AuthService).auth$.pipe(switchMap(auth => auth ? auth.getIdToken() : of('')), map(token => `Bearer ${token}`)),
52
+ };
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3JzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvaW50ZXJjZXB0b3JzL2ludGVyY2VwdG9ycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQy9HLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBcUIxQyxNQUFNLE9BQU8sa0JBQWtCOzhHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQixZQWhCM0IsWUFBWTsrR0FnQkgsa0JBQWtCLGFBZGxCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsS0FBSyxFQUFFLElBQUk7YUFDWjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRCxvQkFBb0IsRUFBRTtTQUN2QixZQWRDLFlBQVk7OzJGQWdCSCxrQkFBa0I7a0JBbkI5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUFFO29CQUNoQixPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLHdCQUF3Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsUUFBUSxFQUFFLG1CQUFtQjs0QkFDN0IsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Qsb0JBQW9CLEVBQUU7cUJBQ3ZCO2lCQUNGOztBQUdELE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsT0FBTztRQUNMLE9BQU8sRUFBRSxxQkFBcUI7UUFDOUIsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUM1QyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQ3BELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsQ0FDaEM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEF1dGhvcml6YXRpb25JbnRlcmNlcHRvciwgUFJPVklERV9BVVRIT1JJWkFUSU9OIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vaW50ZXJjZXB0b3JzL2F1dGhvcml6YXRpb24nO1xuaW1wb3J0IHsgVGhyb3R0bGVJbnRlcmNlcHRvciB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL2ludGVyY2VwdG9ycy90aHJvdHRsZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2F1dGgnO1xuaW1wb3J0IHsgbWFwLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICB1c2VDbGFzczogQXV0aG9yaXphdGlvbkludGVyY2VwdG9yLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLFxuICAgICAgdXNlQ2xhc3M6IFRocm90dGxlSW50ZXJjZXB0b3IsXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAgcHJvdmlkZUF1dGhvcml6YXRpb24oKVxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBJbnRlcmNlcHRvcnNNb2R1bGUgeyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQXV0aG9yaXphdGlvbigpIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBQUk9WSURFX0FVVEhPUklaQVRJT04sXG4gICAgdXNlVmFsdWU6ICgpID0+IGluamVjdChBdXRoU2VydmljZSkuYXV0aCQucGlwZShcbiAgICAgIHN3aXRjaE1hcChhdXRoID0+IGF1dGggPyBhdXRoLmdldElkVG9rZW4oKSA6IG9mKCcnKSksXG4gICAgICBtYXAodG9rZW4gPT4gYEJlYXJlciAke3Rva2VufWApLFxuICAgICksXG4gIH07XG59XG4iXX0=
@@ -6,9 +6,11 @@ import { SideNavModeService } from '@ng-atomic/common/services/side-nav-mode';
6
6
  import { FabService } from '@ng-atomic/common/services/fab';
7
7
  import { SnackBarService } from '@ng-atomic/common/services/snack-bar';
8
8
  import { Clipboard } from '@angular/cdk/clipboard';
9
+ import { MatDialog } from '@angular/material/dialog';
9
10
  import * as i0 from "@angular/core";
10
11
  export class AppService {
11
12
  constructor() {
13
+ this.dialog = inject(MatDialog);
12
14
  this.loading = inject(LoadingService);
13
15
  this.sideApp = inject(SideAppService);
14
16
  this.sideNavMode = inject(SideNavModeService);
@@ -27,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
27
29
  providedIn: 'root'
28
30
  }]
29
31
  }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2FwcC9hcHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLFVBQVU7SUFIdkI7UUFJVyxZQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6QyxZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixRQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN4Qzs4R0FUWSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvbG9hZGluZyc7XG5pbXBvcnQgeyBTaWRlQXBwU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3NpZGUtYXBwJztcbmltcG9ydCB7IFNpZGVOYXZNb2RlU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3NpZGUtbmF2LW1vZGUnO1xuaW1wb3J0IHsgRmFiU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2ZhYic7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9zbmFjay1iYXInO1xuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFwcFNlcnZpY2Uge1xuICByZWFkb25seSBsb2FkaW5nID0gaW5qZWN0KExvYWRpbmdTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgc2lkZUFwcCA9IGluamVjdChTaWRlQXBwU2VydmljZSk7XG4gIHJlYWRvbmx5IHNpZGVOYXZNb2RlID0gaW5qZWN0KFNpZGVOYXZNb2RlU2VydmljZSk7XG4gIHJlYWRvbmx5IHNpZGVOYXYgPSBpbmplY3QoU2lkZU5hdk1vZGVTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHJlYWRvbmx5IGZhYiA9IGluamVjdChGYWJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgc25hY2tCYXIgPSBpbmplY3QoU25hY2tCYXJTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgY2xpcGJvYXJkID0gaW5qZWN0KENsaXBib2FyZCk7XG59XG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2FwcC9hcHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBS3JELE1BQU0sT0FBTyxVQUFVO0lBSHZCO1FBSVcsV0FBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixZQUFPLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pDLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6QyxZQUFPLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixRQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbkMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUN4Qzs4R0FWWSxVQUFVO2tIQUFWLFVBQVUsY0FGVCxNQUFNOzsyRkFFUCxVQUFVO2tCQUh0QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvYWRpbmdTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvbG9hZGluZyc7XG5pbXBvcnQgeyBTaWRlQXBwU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3NpZGUtYXBwJztcbmltcG9ydCB7IFNpZGVOYXZNb2RlU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3NpZGUtbmF2LW1vZGUnO1xuaW1wb3J0IHsgRmFiU2VydmljZSB9IGZyb20gJ0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2ZhYic7XG5pbXBvcnQgeyBTbmFja0JhclNlcnZpY2UgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9zbmFjay1iYXInO1xuaW1wb3J0IHsgQ2xpcGJvYXJkIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NsaXBib2FyZCc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHJlYWRvbmx5IGxvYWRpbmcgPSBpbmplY3QoTG9hZGluZ1NlcnZpY2UpO1xuICByZWFkb25seSBzaWRlQXBwID0gaW5qZWN0KFNpZGVBcHBTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgc2lkZU5hdk1vZGUgPSBpbmplY3QoU2lkZU5hdk1vZGVTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgc2lkZU5hdiA9IGluamVjdChTaWRlTmF2TW9kZVNlcnZpY2UpO1xuICByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgcmVhZG9ubHkgZmFiID0gaW5qZWN0KEZhYlNlcnZpY2UpO1xuICByZWFkb25seSBzbmFja0JhciA9IGluamVjdChTbmFja0JhclNlcnZpY2UpO1xuICByZWFkb25seSBjbGlwYm9hcmQgPSBpbmplY3QoQ2xpcGJvYXJkKTtcbn1cbiJdfQ==
@@ -9,6 +9,7 @@ export class AuthService {
9
9
  this.#auth = inject(Auth);
10
10
  this.auth$ = authState(this.#auth);
11
11
  this.auth = toSignal(this.auth$);
12
+ this.userId$ = this.auth$.pipe(map(auth => auth?.uid ?? null), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
12
13
  this.customClaims$ = this.auth$.pipe(switchMap(auth => auth ? auth.getIdTokenResult() : of(null)), map(token => token?.claims ?? {}), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
13
14
  }
14
15
  #auth;
@@ -48,7 +49,7 @@ export function injectAuthState() {
48
49
  return toSignal(injectAuthState$());
49
50
  }
50
51
  export function injectUserId$() {
51
- return inject(AuthService).auth$.pipe(map(auth => auth?.uid ?? null), distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
52
+ return inject(AuthService).userId$.pipe(distinctUntilChanged(), shareReplay(1), takeUntilDestroyed());
52
53
  }
53
54
  export function injectUserId() {
54
55
  return toSignal(injectUserId$());
@@ -62,4 +63,4 @@ export function injectClaim$(claim) {
62
63
  export function injectClaim(claim) {
63
64
  return toSignal(injectClaim$(claim));
64
65
  }
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzTixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBMkJ6RixNQUFNLE9BQU8sV0FBVztJQUh4QjtRQUtFLFVBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsVUFBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsU0FBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUIsa0JBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDN0IsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzVELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFB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Q0FDZCxDQUFDO0FBQ1gsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQWEsS0FBYTtJQUNuRCxPQUFPLFFBQVEsQ0FBQyxZQUFZLENBQUksS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgU2lnbmFsLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsLCB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBdXRoLCBhdXRoU3RhdGUsIHNpZ25JbldpdGhDdXN0b21Ub2tlbiwgR29vZ2xlQXV0aFByb3ZpZGVyLCBUd2l0dGVyQXV0aFByb3ZpZGVyLCBzaWduSW5XaXRoUG9wdXAsIHNpZ25PdXQsIFVzZXJDcmVkZW50aWFsLCBzaWduSW5XaXRoRW1haWxBbmRQYXNzd29yZCwgY3JlYXRlVXNlcldpdGhFbWFpbEFuZFBhc3N3b3JkIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hdXRoJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBvZiwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFR3aXR0ZXJDcmVkZW50aWFsIHtcbiAgY29udGV4dDogc3RyaW5nO1xuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICBlbWFpbFZlcmlmaWVkOiBib29sZWFuO1xuICBleHBpcmVzSW46IHN0cmluZztcbiAgZmVkZXJhdGVkSWQ6IHN0cmluZztcbiAgZnVsbE5hbWU6IHN0cmluZztcbiAgaWRUb2tlbjogc3RyaW5nO1xuICBraW5kOiAnaWRlbnRpdHl0b29sa2l0I1ZlcmlmeUFzc2VydGlvblJlc3BvbnNlJztcbiAgbG9jYWxJZDogc3RyaW5nO1xuICBvYXV0aEFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIG9hdXRoVG9rZW5TZWNyZXQ6IHN0cmluZztcbiAgcGhvdG9Vcmw6IHN0cmluZztcbiAgcHJvdmlkZXJJZDogJ3R3aXR0ZXIuY29tJztcbiAgcmF3VXNlckluZm86IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIHNjcmVlbk5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUmVzdWx0ID0gVXNlckNyZWRlbnRpYWwgJiB7X3Rva2VuUmVzcG9uc2U6IFR3aXR0ZXJDcmVkZW50aWFsfTtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuXG4gICNhdXRoID0gaW5qZWN0KEF1dGgpO1xuICBhdXRoJCA9IGF1dGhTdGF0ZSh0aGlzLiNhdXRoKTtcbiAgYXV0aCA9IHRvU2lnbmFsKHRoaXMuYXV0aCQpO1xuXG4gIGN1c3RvbUNsYWltcyQgPSB0aGlzLmF1dGgkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGF1dGggPT4gYXV0aCA/IGF1dGguZ2V0SWRUb2tlblJlc3VsdCgpIDogb2YobnVsbCkpLFxuICAgIG1hcCh0b2tlbiA9PiB0b2tlbj8uY2xhaW1zID8/IHt9KSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xuXG4gIHNpZ25JbldpdGhUd2l0dGVyKCk6IFByb21pc2U8UmVzdWx0PiB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgVHdpdHRlckF1dGhQcm92aWRlcigpO1xuICAgIHJldHVybiBzaWduSW5XaXRoUG9wdXAodGhpcy4jYXV0aCwgcHJvdmlkZXIpIGFzIFByb21pc2U8UmVzdWx0PlxuICB9XG5cbiAgc2lnbkluV2l0aEdvb2dsZSgpIHtcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBHb29nbGVBdXRoUHJvdmlkZXIoKTtcbiAgICByZXR1cm4gc2lnbkluV2l0aFBvcHVwKHRoaXMuI2F1dGgsIHByb3ZpZGVyKTtcbiAgfVxuXG4gIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkKGVtYWlsOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc2lnbkluV2l0aEVtYWlsQW5kUGFzc3dvcmQodGhpcy4jYXV0aCwgZW1haWwsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIGNyZWF0ZVVzZXJXaXRoRW1haWxBbmRQYXNzd29yZChlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNyZWF0ZVVzZXJXaXRoRW1haWxBbmRQYXNzd29yZCh0aGlzLiNhdXRoLCBlbWFpbCwgcGFzc3dvcmQpO1xuICB9XG5cbiAgc2lnbkluV2l0aEN1c3RvbVRva2VuKGN1c3RvbVRva2VuOiBzdHJpbmcpOiBQcm9taXNlPFJlc3VsdD4ge1xuICAgIHJldHVybiBzaWduSW5XaXRoQ3VzdG9tVG9rZW4odGhpcy4jYXV0aCwgY3VzdG9tVG9rZW4pIGFzIFByb21pc2U8UmVzdWx0PjtcbiAgfVxuXG4gIHNpZ25PdXQoKSB7XG4gICAgcmV0dXJuIHNpZ25PdXQodGhpcy4jYXV0aCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEF1dGhTdGF0ZSQoKSB7XG4gIHJldHVybiBpbmplY3QoQXV0aFNlcnZpY2UpLmF1dGgkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0QXV0aFN0YXRlKCkge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0QXV0aFN0YXRlJCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVzZXJJZCQoKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gIHJldHVybiBpbmplY3QoQXV0aFNlcnZpY2UpLmF1dGgkLnBpcGUoXG4gICAgbWFwKGF1dGggPT4gYXV0aD8udWlkID8/IG51bGwpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVc2VySWQoKTogU2lnbmFsPHN0cmluZyB8IG51bGw+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFVzZXJJZCQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RUd2l0dGVySWQkKCkge1xuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5hdXRoJC5waXBlKFxuICAgIG1hcChhdXRoID0+IGF1dGg/LnByb3ZpZGVyRGF0YT8uWzBdPy51aWQgPz8gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENsYWltJDxUID0gc3RyaW5nPihjbGFpbTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBpbmplY3QoQXV0aFNlcnZpY2UpLmN1c3RvbUNsYWltcyQucGlwZShcbiAgICBtYXAodG9rZW4gPT4gY2xhaW0gPyBnZXQodG9rZW4sIGNsYWltKSA6IHRva2VuKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApIGFzIGFueTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENsYWltPFQgPSBzdHJpbmc+KGNsYWltOiBzdHJpbmcpOiBTaWduYWw8VD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Q2xhaW0kPFQ+KGNsYWltKSk7XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUscUJBQXFCLEVBQUUsa0JBQWtCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBa0IsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMzTixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2hDLE9BQU8sRUFBYyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBMkJ6RixNQUFNLE9BQU8sV0FBVztJQUh4QjtRQUtFLFVBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsVUFBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsU0FBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUIsWUFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN2QixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxFQUM5QixvQkFBb0IsRUFBRSxFQUN0QixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2Qsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQztRQUVGLGtCQUFh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RyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQy9DLG9CQUFvQixFQUFFLEVBQ3RCLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxrQkFBa0IsRUFBRSxDQUNkLENBQUM7QUFDWCxDQUFDO0FBRUQsTUFBTSxVQUFVLFdBQVcsQ0FBYSxLQUFhO0lBQ25ELE9BQU8sUUFBUSxDQUFDLFlBQVksQ0FBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBTaWduYWwsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwsIHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEF1dGgsIGF1dGhTdGF0ZSwgc2lnbkluV2l0aEN1c3RvbVRva2VuLCBHb29nbGVBdXRoUHJvdmlkZXIsIFR3aXR0ZXJBdXRoUHJvdmlkZXIsIHNpZ25JbldpdGhQb3B1cCwgc2lnbk91dCwgVXNlckNyZWRlbnRpYWwsIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkLCBjcmVhdGVVc2VyV2l0aEVtYWlsQW5kUGFzc3dvcmQgfSBmcm9tICdAYW5ndWxhci9maXJlL2F1dGgnO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG9mLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHdpdHRlckNyZWRlbnRpYWwge1xuICBjb250ZXh0OiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGVtYWlsVmVyaWZpZWQ6IGJvb2xlYW47XG4gIGV4cGlyZXNJbjogc3RyaW5nO1xuICBmZWRlcmF0ZWRJZDogc3RyaW5nO1xuICBmdWxsTmFtZTogc3RyaW5nO1xuICBpZFRva2VuOiBzdHJpbmc7XG4gIGtpbmQ6ICdpZGVudGl0eXRvb2xraXQjVmVyaWZ5QXNzZXJ0aW9uUmVzcG9uc2UnO1xuICBsb2NhbElkOiBzdHJpbmc7XG4gIG9hdXRoQWNjZXNzVG9rZW46IHN0cmluZztcbiAgb2F1dGhUb2tlblNlY3JldDogc3RyaW5nO1xuICBwaG90b1VybDogc3RyaW5nO1xuICBwcm92aWRlcklkOiAndHdpdHRlci5jb20nO1xuICByYXdVc2VySW5mbzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgc2NyZWVuTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBSZXN1bHQgPSBVc2VyQ3JlZGVudGlhbCAmIHtfdG9rZW5SZXNwb25zZTogVHdpdHRlckNyZWRlbnRpYWx9O1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoU2VydmljZSB7XG5cbiAgI2F1dGggPSBpbmplY3QoQXV0aCk7XG4gIGF1dGgkID0gYXV0aFN0YXRlKHRoaXMuI2F1dGgpO1xuICBhdXRoID0gdG9TaWduYWwodGhpcy5hdXRoJCk7XG5cbiAgdXNlcklkJCA9IHRoaXMuYXV0aCQucGlwZShcbiAgICBtYXAoYXV0aCA9PiBhdXRoPy51aWQgPz8gbnVsbCksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcblxuICBjdXN0b21DbGFpbXMkID0gdGhpcy5hdXRoJC5waXBlKFxuICAgIHN3aXRjaE1hcChhdXRoID0+IGF1dGggPyBhdXRoLmdldElkVG9rZW5SZXN1bHQoKSA6IG9mKG51bGwpKSxcbiAgICBtYXAodG9rZW4gPT4gdG9rZW4/LmNsYWltcyA/PyB7fSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcblxuICBzaWduSW5XaXRoVHdpdHRlcigpOiBQcm9taXNlPFJlc3VsdD4ge1xuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFR3aXR0ZXJBdXRoUHJvdmlkZXIoKTtcbiAgICByZXR1cm4gc2lnbkluV2l0aFBvcHVwKHRoaXMuI2F1dGgsIHByb3ZpZGVyKSBhcyBQcm9taXNlPFJlc3VsdD5cbiAgfVxuXG4gIHNpZ25JbldpdGhHb29nbGUoKSB7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgR29vZ2xlQXV0aFByb3ZpZGVyKCk7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhQb3B1cCh0aGlzLiNhdXRoLCBwcm92aWRlcik7XG4gIH1cblxuICBzaWduSW5XaXRoRW1haWxBbmRQYXNzd29yZChlbWFpbDogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHNpZ25JbldpdGhFbWFpbEFuZFBhc3N3b3JkKHRoaXMuI2F1dGgsIGVtYWlsLCBwYXNzd29yZCk7XG4gIH1cblxuICBjcmVhdGVVc2VyV2l0aEVtYWlsQW5kUGFzc3dvcmQoZW1haWw6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZykge1xuICAgIHJldHVybiBjcmVhdGVVc2VyV2l0aEVtYWlsQW5kUGFzc3dvcmQodGhpcy4jYXV0aCwgZW1haWwsIHBhc3N3b3JkKTtcbiAgfVxuXG4gIHNpZ25JbldpdGhDdXN0b21Ub2tlbihjdXN0b21Ub2tlbjogc3RyaW5nKTogUHJvbWlzZTxSZXN1bHQ+IHtcbiAgICByZXR1cm4gc2lnbkluV2l0aEN1c3RvbVRva2VuKHRoaXMuI2F1dGgsIGN1c3RvbVRva2VuKSBhcyBQcm9taXNlPFJlc3VsdD47XG4gIH1cblxuICBzaWduT3V0KCkge1xuICAgIHJldHVybiBzaWduT3V0KHRoaXMuI2F1dGgpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RBdXRoU3RhdGUkKCkge1xuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS5hdXRoJDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEF1dGhTdGF0ZSgpIHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdEF1dGhTdGF0ZSQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVc2VySWQkKCk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICByZXR1cm4gaW5qZWN0KEF1dGhTZXJ2aWNlKS51c2VySWQkLnBpcGUoXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVzZXJJZCgpOiBTaWduYWw8c3RyaW5nIHwgbnVsbD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0VXNlcklkJCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFR3aXR0ZXJJZCQoKSB7XG4gIHJldHVybiBpbmplY3QoQXV0aFNlcnZpY2UpLmF1dGgkLnBpcGUoXG4gICAgbWFwKGF1dGggPT4gYXV0aD8ucHJvdmlkZXJEYXRhPy5bMF0/LnVpZCA/PyBudWxsKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2xhaW0kPFQgPSBzdHJpbmc+KGNsYWltOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIGluamVjdChBdXRoU2VydmljZSkuY3VzdG9tQ2xhaW1zJC5waXBlKFxuICAgIG1hcCh0b2tlbiA9PiBjbGFpbSA/IGdldCh0b2tlbiwgY2xhaW0pIDogdG9rZW4pLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICkgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2xhaW08VCA9IHN0cmluZz4oY2xhaW06IHN0cmluZyk6IFNpZ25hbDxUPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RDbGFpbSQ8VD4oY2xhaW0pKTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './initializer.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2luaXRpYWxpemVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2luaXRpYWxpemVyLnNlcnZpY2UnO1xuXG4iXX0=
@@ -0,0 +1,44 @@
1
+ import { Injectable, Injector, inject, runInInjectionContext } from '@angular/core';
2
+ import { InjectionToken } from "@angular/core";
3
+ import * as i0 from "@angular/core";
4
+ const STORE_INITIALIZER = new InjectionToken('[@ng-atomic/components/pages/form] StoreInitializer');
5
+ function provideStoreInitializer(key, initializer) {
6
+ return [
7
+ { provide: STORE_INITIALIZER, useValue: { key, initializer }, multi: true },
8
+ ];
9
+ }
10
+ function injectInitializerEntries() {
11
+ return inject(STORE_INITIALIZER, { optional: true }) ?? [];
12
+ }
13
+ function injectStoreInitializers(key) {
14
+ const entries = injectInitializerEntries();
15
+ return entries.filter(entry => entry.key === key).map(entry => entry.initializer);
16
+ }
17
+ export function makeInitializerConfig(klass) {
18
+ return {
19
+ provide(initializer) {
20
+ return provideStoreInitializer(klass, initializer);
21
+ },
22
+ inject() {
23
+ return injectStoreInitializers(klass);
24
+ },
25
+ async initializeStore(store) {
26
+ const injector = inject(Injector);
27
+ const initializers = injectStoreInitializers(klass);
28
+ for (const initializer of initializers) {
29
+ await runInInjectionContext(injector, () => initializer(store));
30
+ }
31
+ },
32
+ };
33
+ }
34
+ export class InitializerService {
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InitializerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
36
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InitializerService, providedIn: 'root' }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: InitializerService, decorators: [{
39
+ type: Injectable,
40
+ args: [{
41
+ providedIn: 'root'
42
+ }]
43
+ }] });
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvaW5pdGlhbGl6ZXIvaW5pdGlhbGl6ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFTL0MsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBd0IscURBQXFELENBQUMsQ0FBQztBQUUzSCxTQUFTLHVCQUF1QixDQUFJLEdBQWUsRUFBRSxXQUFnQztJQUNuRixPQUFPO1FBQ0wsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7S0FDM0UsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHdCQUF3QjtJQUMvQixPQUFPLE1BQU0sQ0FBNkIsaUJBQWlCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDdkYsQ0FBQztBQUVELFNBQVMsdUJBQXVCLENBQUksR0FBZTtJQUNqRCxNQUFNLE9BQU8sR0FBRyx3QkFBd0IsRUFBSyxDQUFDO0lBQzlDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3BGLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUksS0FBaUI7SUFDeEQsT0FBTztRQUNMLE9BQU8sQ0FBaUMsV0FBZTtZQUNyRCxPQUFPLHVCQUF1QixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsTUFBTTtZQUNKLE9BQU8sdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELEtBQUssQ0FBQyxlQUFlLENBQUMsS0FBUTtZQUM1QixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEMsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUU7Z0JBQ3RDLE1BQU0scUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ2pFO1FBQ0gsQ0FBQztLQUNGLENBQUE7QUFDSCxDQUFDO0FBS0QsTUFBTSxPQUFPLGtCQUFrQjs4R0FBbEIsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7MkZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBpbmplY3QsIHJ1bkluSW5qZWN0aW9uQ29udGV4dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG50eXBlIFN0b3JlSW5pdGlhbGl6ZXI8Uz4gPSAoc3RvcmU6IFMpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuXG5pbnRlcmZhY2UgU3RvcmVJbml0aWFsaXplckVudHJ5PFM+IHtcbiAga2V5OiB7IG5ldygpOiBTIH07XG4gIGluaXRpYWxpemVyOiBTdG9yZUluaXRpYWxpemVyPFM+O1xufVxuXG5jb25zdCBTVE9SRV9JTklUSUFMSVpFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTdG9yZUluaXRpYWxpemVyPGFueT4+KCdbQG5nLWF0b21pYy9jb21wb25lbnRzL3BhZ2VzL2Zvcm1dIFN0b3JlSW5pdGlhbGl6ZXInKTtcblxuZnVuY3Rpb24gcHJvdmlkZVN0b3JlSW5pdGlhbGl6ZXI8Uz4oa2V5OiB7bmV3KCk6IFN9LCBpbml0aWFsaXplcjogU3RvcmVJbml0aWFsaXplcjxTPikge1xuICByZXR1cm4gW1xuICAgIHsgcHJvdmlkZTogU1RPUkVfSU5JVElBTElaRVIsIHVzZVZhbHVlOiB7IGtleSwgaW5pdGlhbGl6ZXJ9LCBtdWx0aTogdHJ1ZSB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiBpbmplY3RJbml0aWFsaXplckVudHJpZXM8Uz4oKTogU3RvcmVJbml0aWFsaXplckVudHJ5PFM+W10ge1xuICByZXR1cm4gaW5qZWN0PFN0b3JlSW5pdGlhbGl6ZXJFbnRyeTxTPltdPihTVE9SRV9JTklUSUFMSVpFUiwge29wdGlvbmFsOiB0cnVlfSkgPz8gW107XG59XG5cbmZ1bmN0aW9uIGluamVjdFN0b3JlSW5pdGlhbGl6ZXJzPFM+KGtleToge25ldygpOiBTfSk6IFN0b3JlSW5pdGlhbGl6ZXI8Uz5bXSB7XG4gIGNvbnN0IGVudHJpZXMgPSBpbmplY3RJbml0aWFsaXplckVudHJpZXM8Uz4oKTtcbiAgcmV0dXJuIGVudHJpZXMuZmlsdGVyKGVudHJ5ID0+IGVudHJ5LmtleSA9PT0ga2V5KS5tYXAoZW50cnkgPT4gZW50cnkuaW5pdGlhbGl6ZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUluaXRpYWxpemVyQ29uZmlnPFM+KGtsYXNzOiB7bmV3KCk6IFN9KSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTxTSSBleHRlbmRzIFN0b3JlSW5pdGlhbGl6ZXI8Uz4+KGluaXRpYWxpemVyOiBTSSkge1xuICAgICAgcmV0dXJuIHByb3ZpZGVTdG9yZUluaXRpYWxpemVyKGtsYXNzLCBpbml0aWFsaXplcik7XG4gICAgfSxcbiAgICBpbmplY3QoKTogU3RvcmVJbml0aWFsaXplcjxTPltdIHtcbiAgICAgIHJldHVybiBpbmplY3RTdG9yZUluaXRpYWxpemVycyhrbGFzcyk7XG4gICAgfSxcbiAgICBhc3luYyBpbml0aWFsaXplU3RvcmUoc3RvcmU6IFMpIHtcbiAgICAgIGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgICAgIGNvbnN0IGluaXRpYWxpemVycyA9IGluamVjdFN0b3JlSW5pdGlhbGl6ZXJzKGtsYXNzKTtcbiAgICAgIGZvciAoY29uc3QgaW5pdGlhbGl6ZXIgb2YgaW5pdGlhbGl6ZXJzKSB7XG4gICAgICAgIGF3YWl0IHJ1bkluSW5qZWN0aW9uQ29udGV4dChpbmplY3RvciwgKCkgPT4gaW5pdGlhbGl6ZXIoc3RvcmUpKTtcbiAgICAgIH1cbiAgICB9LFxuICB9XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEluaXRpYWxpemVyU2VydmljZSB7XG5cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1pbml0aWFsaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvaW5pdGlhbGl6ZXIvbmctYXRvbWljLWNvbW1vbi1zZXJ2aWNlcy1pbml0aWFsaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
@@ -1,2 +1,3 @@
1
+ export * from './root-property.di';
1
2
  export * from './root-property.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3Jvb3QtcHJvcGVydHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcm9vdC1wcm9wZXJ0eS5zZXJ2aWNlJztcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3NlcnZpY2VzL3Jvb3QtcHJvcGVydHkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yb290LXByb3BlcnR5LmRpJztcbmV4cG9ydCAqIGZyb20gJy4vcm9vdC1wcm9wZXJ0eS5zZXJ2aWNlJztcbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { ENVIRONMENT_INITIALIZER, inject } from "@angular/core";
2
+ import { provideMaterialCssVars } from "angular-material-css-vars";
3
+ import { RootPropertyService } from "./root-property.service";
4
+ export function provideRootProperty() {
5
+ return [
6
+ {
7
+ provide: ENVIRONMENT_INITIALIZER,
8
+ useFactory: () => () => inject(RootPropertyService),
9
+ multi: true,
10
+ },
11
+ provideMaterialCssVars({}),
12
+ ];
13
+ }
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1wcm9wZXJ0eS5kaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvcm9vdC1wcm9wZXJ0eS9yb290LXByb3BlcnR5LmRpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPO1FBQ0w7WUFDRSxPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUM7WUFDbkQsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELHNCQUFzQixDQUFDLEVBQUUsQ0FBQztLQUMzQixDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgcHJvdmlkZU1hdGVyaWFsQ3NzVmFycyB9IGZyb20gXCJhbmd1bGFyLW1hdGVyaWFsLWNzcy12YXJzXCI7XG5pbXBvcnQgeyBSb290UHJvcGVydHlTZXJ2aWNlIH0gZnJvbSBcIi4vcm9vdC1wcm9wZXJ0eS5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlUm9vdFByb3BlcnR5KCkge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gKCkgPT4gaW5qZWN0KFJvb3RQcm9wZXJ0eVNlcnZpY2UpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgICBwcm92aWRlTWF0ZXJpYWxDc3NWYXJzKHt9KSxcbiAgXVxufVxuIl19
@@ -1,12 +1,13 @@
1
1
  import { isPlatformBrowser, isPlatformServer } from '@angular/common';
2
- import { Directive, ENVIRONMENT_INITIALIZER, ElementRef, Injectable, PLATFORM_ID, effect, inject } from '@angular/core';
2
+ import { Directive, ElementRef, Injectable, PLATFORM_ID, effect, inject } from '@angular/core';
3
3
  import { toObservable } from '@angular/core/rxjs-interop';
4
4
  import { makeConfig } from '@ng-atomic/common/services/ui';
5
+ import { MaterialCssVarsService } from 'angular-material-css-vars';
5
6
  import { delay, filter, map, of } from 'rxjs';
6
7
  import * as i0 from "@angular/core";
7
8
  export class RootPropertyService {
8
9
  static { this.Config = makeConfig(() => {
9
- return (_, context) => {
10
+ return (context) => {
10
11
  switch (context.breakpoint) {
11
12
  case 'xSmall': return {
12
13
  '--primary-color': '#404040',
@@ -64,15 +65,58 @@ export class RootPropertyService {
64
65
  }
65
66
  };
66
67
  }, ['root', 'properties']); }
68
+ static provideColorSchema1() {
69
+ return RootPropertyService.Config.provide(() => {
70
+ return (config) => ({
71
+ ...config,
72
+ '--primary-color': '#404040',
73
+ '--on-primary-color': '#f0f0f0',
74
+ '--accent-color': '#d8ab12',
75
+ '--background-color': '#ffffff',
76
+ '--on-background-color': '#404040',
77
+ '--menu-background-color': '#404040',
78
+ '--menu-on-background-color': '#f0f0f0',
79
+ '--navigator-background-color': '#404040',
80
+ '--navigator-on-background-color': '#f0f0f0',
81
+ '--loading-primary-color': 'var(--accent-color)',
82
+ '--background-primary-color': 'var(--primary-color)',
83
+ '--background-on-primary-color': 'var(--on-primary-color)',
84
+ '--selection-color': 'var(--background-color)',
85
+ '--selection-background-color': 'var(--on-background-color)',
86
+ });
87
+ });
88
+ }
89
+ static provideMenuWidthForIconButtonMenu() {
90
+ return RootPropertyService.Config.provide(() => {
91
+ const getMenuWidth = (context) => {
92
+ switch (context.breakpoint) {
93
+ case 'xSmall': return '220px';
94
+ case 'small':
95
+ case 'medium':
96
+ case 'large':
97
+ case 'xLarge': return '64px';
98
+ }
99
+ };
100
+ return (config, context) => ({
101
+ ...config,
102
+ '--menu-width': getMenuWidth(context),
103
+ });
104
+ });
105
+ }
67
106
  constructor() {
68
107
  this.config = RootPropertyService.Config.inject();
69
108
  this.platformId = inject(PLATFORM_ID);
109
+ this.matCssVar = inject(MaterialCssVarsService);
70
110
  effect(() => {
71
111
  if (isPlatformBrowser(this.platformId)) {
72
112
  for (const [key, value] of Object.entries(this.config?.() ?? {})) {
73
113
  document.documentElement.style.setProperty(key, value);
74
114
  }
75
115
  }
116
+ this.matCssVar.setPrimaryColor(this.config()['--primary-color']);
117
+ this.matCssVar.setAccentColor(this.config()['--accent-color']);
118
+ this.matCssVar.setWarnColor(this.config()['--warn-color']);
119
+ this.matCssVar.setDarkTheme(false);
76
120
  });
77
121
  }
78
122
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.2", ngImport: i0, type: RootPropertyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -82,18 +126,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
82
126
  type: Injectable,
83
127
  args: [{ providedIn: 'root' }]
84
128
  }], ctorParameters: () => [] });
85
- export function provideRootProperty(resolverFactoryFactory) {
86
- return [
87
- {
88
- provide: ENVIRONMENT_INITIALIZER,
89
- useFactory: () => {
90
- return () => inject(RootPropertyService);
91
- },
92
- multi: true,
93
- },
94
- RootPropertyService.Config.provide(resolverFactoryFactory),
95
- ];
96
- }
97
129
  export class NgAtomicStyleDirective {
98
130
  #el;
99
131
  constructor(rootPropertyService) {
@@ -131,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
131
163
  type: Injectable,
132
164
  args: [{ providedIn: 'root' }]
133
165
  }] });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1wcm9wZXJ0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9yb290LXByb3BlcnR5L3Jvb3QtcHJvcGVydHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFZLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMzRCxPQUFPLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcxRCxNQUFNLE9BQU8sbUJBQW1CO2FBQ2QsV0FBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDdkMsT0FBTyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUNwQixRQUFRLE9BQU8sQ0FBQyxVQUFVLEVBQUU7Z0JBQzFCLEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTztvQkFDcEIsaUJBQWlCLEVBQUUsU0FBUztvQkFDNUIsb0JBQW9CLEVBQUUsU0FBUztvQkFDL0IsaUJBQWlCLEVBQUUsTUFBTTtvQkFDekIsb0JBQW9CLEVBQUUsU0FBUztvQkFDL0Isb0JBQW9CLEVBQUUsTUFBTTtvQkFDNUIsY0FBYyxFQUFFLE9BQU87b0JBQ3ZCLGtCQUFrQixFQUFFLE9BQU87b0JBQzNCLGtCQUFrQixFQUFFLE9BQU87b0JBQzNCLGtCQUFrQixFQUFFLE9BQU87b0JB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LFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLEtBQU0sU0FBUyxDQUFDLEVBQ3JFLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFDVixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2YsQ0FBQztJQUNILENBQUM7OEdBWlcsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FETCxNQUFNOzsyRkFDbEIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyLCBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBQcm92aWRlciwgZWZmZWN0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvT2JzZXJ2YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IG1ha2VDb25maWcgfSBmcm9tICdAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBkZWxheSwgZmlsdGVyLCBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUm9vdFByb3BlcnR5U2VydmljZSB7XG4gIHN0YXRpYyByZWFkb25seSBDb25maWcgPSBtYWtlQ29uZmlnKCgpID0+IHtcbiAgICByZXR1cm4gKF8sIGNvbnRleHQpID0+IHtcbiAgICAgIHN3aXRjaCAoY29udGV4dC5icmVha3BvaW50KSB7XG4gICAgICAgIGNhc2UgJ3hTbWFsbCc6IHJldHVybiB7XG4gICAgICAgICAgJy0tcHJpbWFyeS1jb2xvcic6ICcjNDA0MDQwJyxcbiAgICAgICAgICAnLS1vbi1wcmltYXJ5LWNvbG9yJzogJyNmMGYwZjAnLFxuICAgICAgICAgICctLXN1cmZhY2UtY29sb3InOiAnI2ZmZicsXG4gICAgICAgICAgJy0tb24tc3VyZmFjZS1jb2xvcic6ICcjNDA0MDQwJyxcbiAgICAgICAgICAnLS1iYWNrZ3JvdW5kLWNvbG9yJzogJyNmZmYnLFxuICAgICAgICAgICctLW1lbnUtd2lkdGgnOiAnMjIwcHgnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYxJzogJzEwMHZ3JyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2Mic6ICcxMDB2dycsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjMnOiAnMTAwdncnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHY0JzogJzEwMHZ3JyxcbiAgICAgICAgICAnLS1wYWdlLWhlaWdodC1sdjEnOiAnMTAwdmgnLFxuICAgICAgICB9O1xuICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgIGNhc2UgJ21lZGl1bSc6IHJldHVybiB7XG4gICAgICAgICAgJy0tcHJpbWFyeS1jb2xvcic6ICcjNDA0MDQwJyxcbiAgICAgICAgICAnLS1vbi1wcmltYXJ5LWNvbG9yJzogJyNmMGYwZjAnLFxuICAgICAgICAgICctLXN1cmZhY2UtY29sb3InOiAnI2ZmZicsXG4gICAgICAgICAgJy0tb24tc3VyZmFjZS1jb2xvcic6ICcjNDA0MDQwJyxcbiAgICAgICAgICAnLS1iYWNrZ3JvdW5kLWNvbG9yJzogJyNmZmYnLFxuICAgICAgICAgICctLW1lbnUtd2lkdGgnOiAnNjRweCcsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjEnOiAnMzYwcHgnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYyJzogJ21heChjYWxjKG1pbigxMDB2dywgMTYwMHB4KSAtIDM2MHB4IC0gdmFyKC0tbWVudS13aWR0aCkpLCAzNjBweCknLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYzJzogJ21heChjYWxjKG1pbigxMDB2dywgMTYwMHB4KSAtIHZhcigtLW1lbnUtd2lkdGgpKSwgMzYwcHgpJyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2NCc6ICcxMDB2dycsXG4gICAgICAgICAgJy0tcGFnZS1oZWlnaHQtbHYxJzogJzEwMHZoJyxcbiAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnbGFyZ2UnOiByZXR1cm4ge1xuICAgICAgICAgICctLXByaW1hcnktY29sb3InOiAnIzQwNDA0MCcsXG4gICAgICAgICAgJy0tb24tcHJpbWFyeS1jb2xvcic6ICcjZjBmMGYwJyxcbiAgICAgICAgICAnLS1zdXJmYWNlLWNvbG9yJzogJyNmZmYnLFxuICAgICAgICAgICctLW9uLXN1cmZhY2UtY29sb3InOiAnIzQwNDA0MCcsXG4gICAgICAgICAgJy0tYmFja2dyb3VuZC1jb2xvcic6ICcjZmZmJyxcbiAgICAgICAgICAnLS1tZW51LXdpZHRoJzogJzIyMHB4JyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2MSc6ICczNjBweCcsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjInOiAnbWF4KGNhbGMobWluKDEwMHZ3LCAxNjAwcHgpIC0gdmFyKC0tcGFnZS13aWR0aC1sdjEpIC0gdmFyKC0tbWVudS13aWR0aCkpLCB2YXIoLS1wYWdlLXdpZHRoLWx2MSkpJyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2Myc6ICdtYXgoY2FsYyhtaW4oMTAwdncsIDE2MDBweCkgLSB2YXIoLS1tZW51LXdpZHRoKSksIHZhcigtLXBhZ2Utd2lkdGgtbHYxKSknLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHY0JzogJzEwMHZ3JyxcbiAgICAgICAgICAnLS1wYWdlLWhlaWdodC1sdjEnOiAnMTAwdmgnLFxuICAgICAgICB9O1xuICAgICAgICBjYXNlICd4TGFyZ2UnOiByZXR1cm4ge1xuICAgICAgICAgICctLXByaW1hcnktY29sb3InOiAnIzQwNDA0MCcsXG4gICAgICAgICAgJy0tb24tcHJpbWFyeS1jb2xvcic6ICcjZjBmMGYwJyxcbiAgICAgICAgICAnLS1zdXJmYWNlLWNvbG9yJzogJyNmZmYnLFxuICAgICAgICAgICctLW9uLXN1cmZhY2UtY29sb3InOiAnIzQwNDA0MCcsXG4gICAgICAgICAgJy0tYmFja2dyb3VuZC1jb2xvcic6ICcjZmZmJyxcbiAgICAgICAgICAnLS1tZW51LXdpZHRoJzogJzIyMHB4JyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2MSc6ICczNjBweCcsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjInOiAnbWF4KGNhbGMobWluKDEwMHZ3KSAtIHZhcigtLXBhZ2Utd2lkdGgtbHYxKSAtIHZhcigtLW1lbnUtd2lkdGgpKSwgdmFyKC0tcGFnZS13aWR0aC1sdjEpKScsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjMnOiAnbWF4KGNhbGMobWluKDEwMHZ3KSAtIHZhcigtLW1lbnUtd2lkdGgpKSwgdmFyKC0tcGFnZS13aWR0aC1sdjEpKScsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjQnOiAnMTAwdncnLFxuICAgICAgICAgICctLXBhZ2UtaGVpZ2h0LWx2MSc6ICcxMDB2aCcsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfTtcbiAgfSwgWydyb290JywgJ3Byb3BlcnRpZXMnXSk7XG4gIHJlYWRvbmx5IGNvbmZpZyA9IFJvb3RQcm9wZXJ0eVNlcnZpY2UuQ29uZmlnLmluamVjdCgpO1xuXG4gIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmNvbmZpZz8uKCkgPz8ge30pKSB7XG4gICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVSb290UHJvcGVydHkoXG4gIHJlc29sdmVyRmFjdG9yeUZhY3Rvcnk/OiBQYXJhbWV0ZXJzPHR5cGVvZiBSb290UHJvcGVydHlTZXJ2aWNlLkNvbmZpZy5wcm92aWRlPlswXSxcbik6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEVOVklST05NRU5UX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gKCkgPT4gaW5qZWN0KFJvb3RQcm9wZXJ0eVNlcnZpY2UpO1xuICAgICAgfSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgUm9vdFByb3BlcnR5U2VydmljZS5Db25maWcucHJvdmlkZShyZXNvbHZlckZhY3RvcnlGYWN0b3J5KSxcbiAgXVxufVxuXG5ARGlyZWN0aXZlKHsgc3RhbmRhbG9uZTogdHJ1ZSwgc2VsZWN0b3I6ICdbYXRvbWljU3R5bGVdJyB9KVxuZXhwb3J0IGNsYXNzIE5nQXRvbWljU3R5bGVEaXJlY3RpdmUge1xuICByZWFkb25seSAjZWwgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm9vdFByb3BlcnR5U2VydmljZTogUm9vdFByb3BlcnR5U2VydmljZSkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnJvb3RQcm9wZXJ0eVNlcnZpY2UuY29uZmlnPy4oKSA/PyB7fSkpIHtcbiAgICAgICAgdGhpcy4jZWwubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuXG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFJvb3RQcm9wZXJ0eUd1YXJkIHtcblx0cmVhZG9ubHkgcHJvcGVydGllcyA9IFJvb3RQcm9wZXJ0eVNlcnZpY2UuQ29uZmlnLmluamVjdCgpO1xuXHRyZWFkb25seSBwcm9wZXJ0aWVzJCA9IHRvT2JzZXJ2YWJsZSh0aGlzLnByb3BlcnRpZXMpO1xuXHRyZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuXHRjYW5BY3RpdmF0ZSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcblx0XHRpZiAoaXNQbGF0Zm9ybVNlcnZlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gb2YobnVsbCk7XHRcblx0XHRyZXR1cm4gdGhpcy5wcm9wZXJ0aWVzJC5waXBlKFxuXHRcdFx0ZmlsdGVyKHByb3BlcnRpZXMgPT4gcHJvcGVydGllc1snLS1iYWNrZ3JvdW5kLWNvbG9yJ10gID09PSAnI2YwZjBmMCcpLFxuXHRcdFx0ZGVsYXkoNTAwKSxcblx0XHRcdG1hcCgoKSA9PiB0cnVlKSxcblx0XHQpO1xuXHR9XG59Il19
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1wcm9wZXJ0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9yb290LXByb3BlcnR5L3Jvb3QtcHJvcGVydHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQWMsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcxRCxNQUFNLE9BQU8sbUJBQW1CO2FBQ2QsV0FBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDdkMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ2pCLFFBQVEsT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDMUIsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPO29CQUNwQixpQkFBaUIsRUFBRSxTQUFTO29CQUM1QixvQkFBb0IsRUFBRSxTQUFTO29CQUMvQixpQkFBaUIsRUFBRSxNQUFNO29CQUN6QixvQkFBb0IsRUFBRSxTQUFTO29CQUMvQixvQkFBb0IsRUFBRSxNQUFNO29CQUM1QixjQUFjLEVBQUUsT0FBTztvQkFDdkIsa0JBQWtCLEVBQUUsT0FBTztvQkFDM0Isa0JBQWtCLEVBQUUsT0FBTztvQkFD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LENBQUMsQ0FBQztRQUM1QyxlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBVTFDO0lBUkEsV0FBVztRQUNWLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzNCLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFNLFNBQVMsQ0FBQyxFQUNyRSxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQ1YsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUNmLENBQUM7SUFDSCxDQUFDOzhHQVpXLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREwsTUFBTTs7MkZBQ2xCLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciwgaXNQbGF0Zm9ybVNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEluamVjdGFibGUsIFBMQVRGT1JNX0lELCBlZmZlY3QsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9PYnNlcnZhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgbWFrZUNvbmZpZywgVUlDb250ZXh0IH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvdWknO1xuaW1wb3J0IHsgTWF0ZXJpYWxDc3NWYXJzU2VydmljZSB9IGZyb20gJ2FuZ3VsYXItbWF0ZXJpYWwtY3NzLXZhcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZGVsYXksIGZpbHRlciwgbWFwLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFJvb3RQcm9wZXJ0eVNlcnZpY2Uge1xuICBzdGF0aWMgcmVhZG9ubHkgQ29uZmlnID0gbWFrZUNvbmZpZygoKSA9PiB7XG4gICAgcmV0dXJuIChjb250ZXh0KSA9PiB7XG4gICAgICBzd2l0Y2ggKGNvbnRleHQuYnJlYWtwb2ludCkge1xuICAgICAgICBjYXNlICd4U21hbGwnOiByZXR1cm4ge1xuICAgICAgICAgICctLXByaW1hcnktY29sb3InOiAnIzQwNDA0MCcsXG4gICAgICAgICAgJy0tb24tcHJpbWFyeS1jb2xvcic6ICcjZjBmMGYwJyxcbiAgICAgICAgICAnLS1zdXJmYWNlLWNvbG9yJzogJyNmZmYnLFxuICAgICAgICAgICctLW9uLXN1cmZhY2UtY29sb3InOiAnIzQwNDA0MCcsXG4gICAgICAgICAgJy0tYmFja2dyb3VuZC1jb2xvcic6ICcjZmZmJyxcbiAgICAgICAgICAnLS1tZW51LXdpZHRoJzogJzIyMHB4JyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2MSc6ICcxMDB2dycsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjInOiAnMTAwdncnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYzJzogJzEwMHZ3JyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2NCc6ICcxMDB2dycsXG4gICAgICAgICAgJy0tcGFnZS1oZWlnaHQtbHYxJzogJzEwMHZoJyxcbiAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICBjYXNlICdtZWRpdW0nOiByZXR1cm4ge1xuICAgICAgICAgICctLXByaW1hcnktY29sb3InOiAnIzQwNDA0MCcsXG4gICAgICAgICAgJy0tb24tcHJpbWFyeS1jb2xvcic6ICcjZjBmMGYwJyxcbiAgICAgICAgICAnLS1zdXJmYWNlLWNvbG9yJzogJyNmZmYnLFxuICAgICAgICAgICctLW9uLXN1cmZhY2UtY29sb3InOiAnIzQwNDA0MCcsXG4gICAgICAgICAgJy0tYmFja2dyb3VuZC1jb2xvcic6ICcjZmZmJyxcbiAgICAgICAgICAnLS1tZW51LXdpZHRoJzogJzY0cHgnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYxJzogJzM2MHB4JyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2Mic6ICdtYXgoY2FsYyhtaW4oMTAwdncsIDE2MDBweCkgLSAzNjBweCAtIHZhcigtLW1lbnUtd2lkdGgpKSwgMzYwcHgpJyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2Myc6ICdtYXgoY2FsYyhtaW4oMTAwdncsIDE2MDBweCkgLSB2YXIoLS1tZW51LXdpZHRoKSksIDM2MHB4KScsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjQnOiAnMTAwdncnLFxuICAgICAgICAgICctLXBhZ2UtaGVpZ2h0LWx2MSc6ICcxMDB2aCcsXG4gICAgICAgIH07XG4gICAgICAgIGNhc2UgJ2xhcmdlJzogcmV0dXJuIHtcbiAgICAgICAgICAnLS1wcmltYXJ5LWNvbG9yJzogJyM0MDQwNDAnLFxuICAgICAgICAgICctLW9uLXByaW1hcnktY29sb3InOiAnI2YwZjBmMCcsXG4gICAgICAgICAgJy0tc3VyZmFjZS1jb2xvcic6ICcjZmZmJyxcbiAgICAgICAgICAnLS1vbi1zdXJmYWNlLWNvbG9yJzogJyM0MDQwNDAnLFxuICAgICAgICAgICctLWJhY2tncm91bmQtY29sb3InOiAnI2ZmZicsXG4gICAgICAgICAgJy0tbWVudS13aWR0aCc6ICcyMjBweCcsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjEnOiAnMzYwcHgnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYyJzogJ21heChjYWxjKG1pbigxMDB2dywgMTYwMHB4KSAtIHZhcigtLXBhZ2Utd2lkdGgtbHYxKSAtIHZhcigtLW1lbnUtd2lkdGgpKSwgdmFyKC0tcGFnZS13aWR0aC1sdjEpKScsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjMnOiAnbWF4KGNhbGMobWluKDEwMHZ3LCAxNjAwcHgpIC0gdmFyKC0tbWVudS13aWR0aCkpLCB2YXIoLS1wYWdlLXdpZHRoLWx2MSkpJyxcbiAgICAgICAgICAnLS1wYWdlLXdpZHRoLWx2NCc6ICcxMDB2dycsXG4gICAgICAgICAgJy0tcGFnZS1oZWlnaHQtbHYxJzogJzEwMHZoJyxcbiAgICAgICAgfTtcbiAgICAgICAgY2FzZSAneExhcmdlJzogcmV0dXJuIHtcbiAgICAgICAgICAnLS1wcmltYXJ5LWNvbG9yJzogJyM0MDQwNDAnLFxuICAgICAgICAgICctLW9uLXByaW1hcnktY29sb3InOiAnI2YwZjBmMCcsXG4gICAgICAgICAgJy0tc3VyZmFjZS1jb2xvcic6ICcjZmZmJyxcbiAgICAgICAgICAnLS1vbi1zdXJmYWNlLWNvbG9yJzogJyM0MDQwNDAnLFxuICAgICAgICAgICctLWJhY2tncm91bmQtY29sb3InOiAnI2ZmZicsXG4gICAgICAgICAgJy0tbWVudS13aWR0aCc6ICcyMjBweCcsXG4gICAgICAgICAgJy0tcGFnZS13aWR0aC1sdjEnOiAnMzYwcHgnLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYyJzogJ21heChjYWxjKG1pbigxMDB2dykgLSB2YXIoLS1wYWdlLXdpZHRoLWx2MSkgLSB2YXIoLS1tZW51LXdpZHRoKSksIHZhcigtLXBhZ2Utd2lkdGgtbHYxKSknLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHYzJzogJ21heChjYWxjKG1pbigxMDB2dykgLSB2YXIoLS1tZW51LXdpZHRoKSksIHZhcigtLXBhZ2Utd2lkdGgtbHYxKSknLFxuICAgICAgICAgICctLXBhZ2Utd2lkdGgtbHY0JzogJzEwMHZ3JyxcbiAgICAgICAgICAnLS1wYWdlLWhlaWdodC1sdjEnOiAnMTAwdmgnLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH07XG4gIH0sIFsncm9vdCcsICdwcm9wZXJ0aWVzJ10pO1xuICBzdGF0aWMgcHJvdmlkZUNvbG9yU2NoZW1hMSgpIHtcbiAgICByZXR1cm4gUm9vdFByb3BlcnR5U2VydmljZS5Db25maWcucHJvdmlkZSgoKSA9PiB7XG4gICAgICByZXR1cm4gKGNvbmZpZykgPT4gKHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAnLS1wcmltYXJ5LWNvbG9yJzogJyM0MDQwNDAnLFxuICAgICAgICAnLS1vbi1wcmltYXJ5LWNvbG9yJzogJyNmMGYwZjAnLFxuICAgICAgICAnLS1hY2NlbnQtY29sb3InOiAnI2Q4YWIxMicsXG4gICAgICAgICctLWJhY2tncm91bmQtY29sb3InOiAnI2ZmZmZmZicsXG4gICAgICAgICctLW9uLWJhY2tncm91bmQtY29sb3InOiAnIzQwNDA0MCcsXG4gICAgICAgICctLW1lbnUtYmFja2dyb3VuZC1jb2xvcic6ICcjNDA0MDQwJyxcbiAgICAgICAgJy0tbWVudS1vbi1iYWNrZ3JvdW5kLWNvbG9yJzogJyNmMGYwZjAnLFxuICAgICAgICAnLS1uYXZpZ2F0b3ItYmFja2dyb3VuZC1jb2xvcic6ICcjNDA0MDQwJyxcbiAgICAgICAgJy0tbmF2aWdhdG9yLW9uLWJhY2tncm91bmQtY29sb3InOiAnI2YwZjBmMCcsXG4gICAgICAgICctLWxvYWRpbmctcHJpbWFyeS1jb2xvcic6ICd2YXIoLS1hY2NlbnQtY29sb3IpJyxcbiAgICAgICAgJy0tYmFja2dyb3VuZC1wcmltYXJ5LWNvbG9yJzogJ3ZhcigtLXByaW1hcnktY29sb3IpJyxcbiAgICAgICAgJy0tYmFja2dyb3VuZC1vbi1wcmltYXJ5LWNvbG9yJzogJ3ZhcigtLW9uLXByaW1hcnktY29sb3IpJyxcbiAgICAgICAgJy0tc2VsZWN0aW9uLWNvbG9yJzogJ3ZhcigtLWJhY2tncm91bmQtY29sb3IpJyxcbiAgICAgICAgJy0tc2VsZWN0aW9uLWJhY2tncm91bmQtY29sb3InOiAndmFyKC0tb24tYmFja2dyb3VuZC1jb2xvciknLFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgcHJvdmlkZU1lbnVXaWR0aEZvckljb25CdXR0b25NZW51KCkge1xuICAgIHJldHVybiBSb290UHJvcGVydHlTZXJ2aWNlLkNvbmZpZy5wcm92aWRlKCgpID0+IHtcbiAgICAgIGNvbnN0IGdldE1lbnVXaWR0aCA9IChjb250ZXh0OiBVSUNvbnRleHQpID0+IHtcbiAgICAgICAgc3dpdGNoIChjb250ZXh0LmJyZWFrcG9pbnQpIHtcbiAgICAgICAgICBjYXNlICd4U21hbGwnOiByZXR1cm4gJzIyMHB4JztcbiAgICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgICAgICBjYXNlICdsYXJnZSc6XG4gICAgICAgICAgY2FzZSAneExhcmdlJzogcmV0dXJuICc2NHB4JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIChjb25maWcsIGNvbnRleHQpID0+ICh7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgJy0tbWVudS13aWR0aCc6IGdldE1lbnVXaWR0aChjb250ZXh0KSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZG9ubHkgY29uZmlnID0gUm9vdFByb3BlcnR5U2VydmljZS5Db25maWcuaW5qZWN0KCk7XG5cbiAgcmVhZG9ubHkgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHJlYWRvbmx5IG1hdENzc1ZhciA9IGluamVjdChNYXRlcmlhbENzc1ZhcnNTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5jb25maWc/LigpID8/IHt9KSkge1xuICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5tYXRDc3NWYXIuc2V0UHJpbWFyeUNvbG9yKHRoaXMuY29uZmlnKClbJy0tcHJpbWFyeS1jb2xvciddKTtcbiAgICAgIHRoaXMubWF0Q3NzVmFyLnNldEFjY2VudENvbG9yKHRoaXMuY29uZmlnKClbJy0tYWNjZW50LWNvbG9yJ10pO1xuICAgICAgdGhpcy5tYXRDc3NWYXIuc2V0V2FybkNvbG9yKHRoaXMuY29uZmlnKClbJy0td2Fybi1jb2xvciddKTtcbiAgICAgIHRoaXMubWF0Q3NzVmFyLnNldERhcmtUaGVtZShmYWxzZSk7XG4gICAgfSk7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7IHN0YW5kYWxvbmU6IHRydWUsIHNlbGVjdG9yOiAnW2F0b21pY1N0eWxlXScgfSlcbmV4cG9ydCBjbGFzcyBOZ0F0b21pY1N0eWxlRGlyZWN0aXZlIHtcbiAgcmVhZG9ubHkgI2VsID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICByZWFkb25seSBwbGF0Zm9ybUlkID0gaW5qZWN0KFBMQVRGT1JNX0lEKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvb3RQcm9wZXJ0eVNlcnZpY2U6IFJvb3RQcm9wZXJ0eVNlcnZpY2UpIHtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yb290UHJvcGVydHlTZXJ2aWNlLmNvbmZpZz8uKCkgPz8ge30pKSB7XG4gICAgICAgIHRoaXMuI2VsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoa2V5LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgUm9vdFByb3BlcnR5R3VhcmQge1xuXHRyZWFkb25seSBwcm9wZXJ0aWVzID0gUm9vdFByb3BlcnR5U2VydmljZS5Db25maWcuaW5qZWN0KCk7XG5cdHJlYWRvbmx5IHByb3BlcnRpZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMucHJvcGVydGllcyk7XG5cdHJlYWRvbmx5IHBsYXRmb3JtSWQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG5cdGNhbkFjdGl2YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuXHRcdGlmIChpc1BsYXRmb3JtU2VydmVyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiBvZihudWxsKTtcdFxuXHRcdHJldHVybiB0aGlzLnByb3BlcnRpZXMkLnBpcGUoXG5cdFx0XHRmaWx0ZXIocHJvcGVydGllcyA9PiBwcm9wZXJ0aWVzWyctLWJhY2tncm91bmQtY29sb3InXSAgPT09ICcjZjBmMGYwJyksXG5cdFx0XHRkZWxheSg1MDApLFxuXHRcdFx0bWFwKCgpID0+IHRydWUpLFxuXHRcdCk7XG5cdH1cbn1cbiJdfQ==
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.2", ngImpor
24
24
  type: Injectable,
25
25
  args: [{ providedIn: 'root' }]
26
26
  }] });
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbW9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zaWRlLW5hdi1tb2RlL3NpZGUtbmF2LW1vZGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHbkQsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVXLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBa0I1QztJQWhCQyx1Q0FBdUM7SUFDdkMsYUFBYTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQWxCVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQURMLE1BQU07OzJGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdk1vZGVTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgc2lkZU5hdk1vZGUgPSBzaWduYWwoJ2NvbGxhcHNlZCcpO1xuXG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgdG9nZ2xlKCkgaW5zdGVhZCAqL1xuICB0b2dnbGVTaWRlTmF2KCkge1xuICAgIHRoaXMuc2lkZU5hdk1vZGUuc2V0KHRoaXMuc2lkZU5hdk1vZGUoKSA9PT0gJ2V4cGFuZGVkJyA/ICdjb2xsYXBzZWQnIDogJ2V4cGFuZGVkJyk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5zaWRlTmF2TW9kZS5zZXQodGhpcy5zaWRlTmF2TW9kZSgpID09PSAnZXhwYW5kZWQnID8gJ2NvbGxhcHNlZCcgOiAnZXhwYW5kZWQnKTtcbiAgfVxuXG4gIGNvbGxhcHNlKCkge1xuICAgIHRoaXMuc2lkZU5hdk1vZGUuc2V0KCdjb2xsYXBzZWQnKTtcbiAgfVxuXG4gIGV4cGFuZCgpIHtcbiAgICB0aGlzLnNpZGVOYXZNb2RlLnNldCgnZXhwYW5kZWQnKTtcbiAgfVxufVxuIl19
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYtbW9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi9zZXJ2aWNlcy9zaWRlLW5hdi1tb2RlL3NpZGUtbmF2LW1vZGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLbkQsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVXLGdCQUFXLEdBQUcsTUFBTSxDQUFjLFdBQVcsQ0FBQyxDQUFDO0tBa0J6RDtJQWhCQyx1Q0FBdUM7SUFDdkMsYUFBYTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQWxCVSxrQkFBa0I7a0hBQWxCLGtCQUFrQixjQURMLE1BQU07OzJGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFNpZGVOYXZNb2RlID0gJ2V4cGFuZGVkJyB8ICdjb2xsYXBzZWQnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFNpZGVOYXZNb2RlU2VydmljZSB7XG4gIHJlYWRvbmx5IHNpZGVOYXZNb2RlID0gc2lnbmFsPFNpZGVOYXZNb2RlPignY29sbGFwc2VkJyk7XG5cbiAgLyoqIEBkZXByZWNhdGVkIHVzZSB0b2dnbGUoKSBpbnN0ZWFkICovXG4gIHRvZ2dsZVNpZGVOYXYoKSB7XG4gICAgdGhpcy5zaWRlTmF2TW9kZS5zZXQodGhpcy5zaWRlTmF2TW9kZSgpID09PSAnZXhwYW5kZWQnID8gJ2NvbGxhcHNlZCcgOiAnZXhwYW5kZWQnKTtcbiAgfVxuXG4gIHRvZ2dsZSgpIHtcbiAgICB0aGlzLnNpZGVOYXZNb2RlLnNldCh0aGlzLnNpZGVOYXZNb2RlKCkgPT09ICdleHBhbmRlZCcgPyAnY29sbGFwc2VkJyA6ICdleHBhbmRlZCcpO1xuICB9XG5cbiAgY29sbGFwc2UoKSB7XG4gICAgdGhpcy5zaWRlTmF2TW9kZS5zZXQoJ2NvbGxhcHNlZCcpO1xuICB9XG5cbiAgZXhwYW5kKCkge1xuICAgIHRoaXMuc2lkZU5hdk1vZGUuc2V0KCdleHBhbmRlZCcpO1xuICB9XG59XG4iXX0=
@@ -138,6 +138,14 @@ export function injectUiContext() {
138
138
  return inject(UiService).uiContext;
139
139
  }
140
140
  export const UI_CONFIG_REDUCER = new InjectionToken('UI_CONFIG_REDUCER');
141
+ export const wrap = (defaultReducerFactory) => {
142
+ return (injector, hostInjector) => {
143
+ const reducer = defaultReducerFactory(injector, hostInjector);
144
+ return (_, context) => {
145
+ return reducer(context);
146
+ };
147
+ };
148
+ };
141
149
  export function call(signalOrValue) {
142
150
  return isSignal(signalOrValue) ? signalOrValue() : signalOrValue;
143
151
  }
@@ -171,7 +179,7 @@ export function provideUiConfig(reducerFactory, path = [], name = 'name') {
171
179
  }
172
180
  export function injectRootConfig(paths = []) {
173
181
  const uiContext = injectUiContext();
174
- const factories = injectReducerFactoiries(paths);
182
+ const factories = injectReducerFactories(paths);
175
183
  const hostInjector = inject(Injector);
176
184
  const reducers = factories.map(factory => {
177
185
  return runInInjectionContext(hostInjector, () => factory(hostInjector));
@@ -192,12 +200,13 @@ export function injectUiConfig(paths = []) {
192
200
  return scoped(rootConfig, paths);
193
201
  }
194
202
  export function makeConfig(defaultUseFactory, path) {
203
+ const factory = wrap(defaultUseFactory);
195
204
  return {
196
- provide: function provideConfig(useFactory, label = useFactory ? 'custom' : 'default') {
197
- useFactory ??= defaultUseFactory;
205
+ provide(useFactory, label = useFactory ? 'custom' : 'default') {
206
+ useFactory ??= factory;
198
207
  return provideUiConfig(useFactory, path, `[${path.join('.')}] ${label}`);
199
208
  },
200
- inject: function injectConfig() {
209
+ inject() {
201
210
  return injectUiConfig(path);
202
211
  },
203
212
  };
@@ -205,7 +214,7 @@ export function makeConfig(defaultUseFactory, path) {
205
214
  function injectReducers() {
206
215
  return injectDeepMulti(UI_CONFIG_REDUCER);
207
216
  }
208
- function injectReducerFactoiries(path = []) {
217
+ function injectReducerFactories(path = []) {
209
218
  return injectReducers().filter(factory => {
210
219
  return getReducerPath(factory).every((p, i) => path[i] === p);
211
220
  });
@@ -241,4 +250,4 @@ export function debugInjector(injector = inject(Injector)) {
241
250
  break;
242
251
  }
243
252
  }
244
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvdWkuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQW1DLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekssT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFekYsTUFBTSxVQUFVLE1BQU0sQ0FBeUMsTUFBaUIsRUFBRSxJQUFtQjtJQUNuRyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNWLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBWSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxFQUFFLEVBQUMsaUJBQWlCLEVBQUUsSUFB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QUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBQcm92aWRlciwgUHJvdmlkZXJUb2tlbiwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlzU2lnbmFsLCBydW5JbkluamVjdGlvbkNvbnRleHQsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBVSUNvbnRleHQsIFVpU2VydmljZSB9IGZyb20gXCIuL3VpLnNlcnZpY2VcIjtcbmltcG9ydCB7IGdldCwgc2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSBcIkBuZy1hdG9taWMvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IGNvbXB1dGVkQXN5bmMgfSBmcm9tIFwibmd4dGVuc2lvbi9jb21wdXRlZC1hc3luY1wiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkhpc3RvcnlTZXJ2aWNlIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL25hdmlnYXRpb24taGlzdG9yeVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gc2NvcGVkPFQgZXh0ZW5kcyBvYmplY3QsIFRLZXkgZXh0ZW5kcyBrZXlvZiBUPihzb3VyY2U6IFNpZ25hbDxUPiwgcGF0aDogVEtleSB8IFtUS2V5XSk6IFNpZ25hbDxUW1RLZXldPiB7XG4gIGNvbnN0IHNjb3BlZFNpZ25hbCA9IHNpZ25hbDxUW1RLZXldPihnZXQoc291cmNlKCksIHBhdGgpKTtcbiAgZWZmZWN0KCgpID0+IHtcbiAgICBzY29wZWRTaWduYWwuc2V0KGdldChzb3VyY2UoKSwgcGF0aCwgc291cmNlKCkpIGFzIFRbVEtleV0pO1xuICB9LCB7YWxsb3dTaWduYWxXcml0ZXM6IHRydWV9KTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHNjb3BlZFNpZ25hbCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEJyZWFrcG9pbnQoKSB7XG4gIHJldHVybiBpbmplY3QoVWlTZXJ2aWNlKS5icmVha3BvaW50LmJyZWFrcG9pbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJc01vYmlsZSgpIHtcbiAgY29uc3QgYnJlYWtwb2ludCA9IGluamVjdEJyZWFrcG9pbnQoKTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+ICBbJ3hTbWFsbCcsICdzbWFsbCddLmluY2x1ZGVzKGJyZWFrcG9pbnQoKSkpO1xufVxuXG5leHBvcnQgZW51bSBOYXZBY3Rpb25JZCB7XG4gIFRPR0dMRV9TSURFX05BViA9ICdbQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvdWldIFRPR0dMRV9TSURFX05BVicsXG4gIEJBQ0sgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBCQUNLJyxcbiAgQ0xPU0UgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBDTE9TRScsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJc1Jvb3RQYWdlJCgpIHtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmV0dXJuIHJvdXRlci5ldmVudHMucGlwZShcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgbWFwKCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBbXTtcbiAgICAgIGxldCByb3V0ZV8gPSByb3V0ZTsgXG4gICAgICB3aGlsZShyb3V0ZV8pIHtcbiAgICAgICAgaWYgKCFyb3V0ZV8ucGFyZW50KSBicmVhaztcbiAgICAgICAgcm91dGVfID0gcm91dGVfLnBhcmVudDtcbiAgICAgICAgaWYgKHJvdXRlXy5jb21wb25lbnQpIHtcbiAgICAgICAgICBjb21wb25lbnRzLnB1c2gocm91dGVfLmNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAhIShjb21wb25lbnRzPy5sZW5ndGggPT09IDEpO1xuICAgIH0pLFxuICAgIG1hcCgocm91dGUpID0+ICEhcm91dGUpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SXNSb290UGFnZSgpIHtcbiAgY29uc3QgaXNSb290UGFnZSQgPSBpbmplY3RJc1Jvb3RQYWdlJCgpO1xuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJldHVybiBjb21wdXRlZEFzeW5jKCgpID0+IGlzUm9vdFBhZ2UkLCB7aW5qZWN0b3J9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5hdlN0YXJ0QWN0aW9ucyhcbiAgaXNSb290UGFnZTogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKSxcbik6IFNpZ25hbDxBY3Rpb25bXT4ge1xuICBjb25zdCBjb250ZXh0ID0gaW5qZWN0VWlDb250ZXh0KCk7XG4gIGNvbnN0IG5hdmlnYXRpb25IaXN0b3J5ID0gaW5qZWN0KE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSk7XG4gIGxldCBpc0luaXRpYWw6IGJvb2xlYW47XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoKGNvbnRleHQoKS5icmVha3BvaW50KSB7XG4gICAgICBjYXNlICd4TGFyZ2UnOlxuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgIGNhc2UgJ3NtYWxsJzoge1xuICAgICAgICBpZiAoaXNSb290UGFnZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0luaXRpYWwgPz89IG5hdmlnYXRpb25IaXN0b3J5LmlzSW5pdGlhbCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlICd4U21hbGwnOiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlKCkpIHtcbiAgICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLlRPR0dMRV9TSURFX05BViwgbmFtZTogJ+ODoeODi+ODpeODvCcsIGljb246ICdtZW51JyB9XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobmF2aWdhdGlvbkhpc3RvcnkuaXNJbml0aWFsKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuVE9HR0xFX1NJREVfTkFWLCBuYW1lOiAn44Oh44OL44Ol44O8JywgaWNvbjogJ21lbnUnIH1dXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlKCkpIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5CQUNLLCBuYW1lOiAnQkFDSycsIGljb246ICdhcnJvd19iYWNrJyB9XTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0U2lkZUFwcE5hdlN0YXJ0QWN0aW9ucyhcbiAgaXNSb290UGFnZTogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKSxcbik6IFNpZ25hbDxBY3Rpb25bXT4ge1xuICBjb25zdCBjb250ZXh0ID0gaW5qZWN0VWlDb250ZXh0KCk7XG4gIGNvbnN0IG5hdmlnYXRpb25IaXN0b3J5ID0gaW5qZWN0KE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSk7XG4gIGxldCBpc0luaXRpYWw6IGJvb2xlYW47XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoKGNvbnRleHQoKS5icmVha3BvaW50KSB7XG4gICAgICBjYXNlICd4TGFyZ2UnOlxuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgIGNhc2UgJ3NtYWxsJzoge1xuICAgICAgICBpZiAoaXNSb290UGFnZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0luaXRpYWwgPz89IG5hdmlnYXRpb25IaXN0b3J5LmlzSW5pdGlhbCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLkNMT1NFLCBuYW1lOiAnQ0xPU0UnLCBpY29uOiAnY2xvc2UnIH1dO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLkJBQ0ssIG5hbWU6ICdCQUNLJywgaWNvbjogJ2Fycm93X2JhY2snIH1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSAneFNtYWxsJzoge1xuICAgICAgICBpZiAoaXNSb290UGFnZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5UT0dHTEVfU0lERV9OQVYsIG5hbWU6ICfjg6Hjg4vjg6Xjg7wnLCBpY29uOiAnbWVudScgfV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGlzSW5pdGlhbCA/Pz0gbmF2aWdhdGlvbkhpc3RvcnkuaXNJbml0aWFsKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQ0xPU0UsIG5hbWU6ICdDTE9TRScsIGljb246ICdjbG9zZScgfV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlKCkpIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5CQUNLLCBuYW1lOiAnQkFDSycsIGljb246ICdhcnJvd19iYWNrJyB9XTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVpQ29udGV4dCgpOiBTaWduYWw8VUlDb250ZXh0PiB7XG4gIHJldHVybiBpbmplY3QoVWlTZXJ2aWNlKS51aUNvbnRleHQ7XG59XG5cbmV4cG9ydCB0eXBlIFVpQ29uZmlnUmVkdWNlcjxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nLCBDIGV4dGVuZHMgVUlDb250ZXh0ID0gYW55PiA9IChjb25maWc6IFQsIGNvbnRleHQ6IEMpID0+IFQ7XG5leHBvcnQgY29uc3QgVUlfQ09ORklHX1JFRFVDRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48VWlDb25maWdSZWR1Y2VyPGFueT4+KCdVSV9DT05GSUdfUkVEVUNFUicpO1xuZXhwb3J0IHR5cGUgUmVkdWNlckZhY3Rvcnk8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZywgSyBleHRlbmRzIFQgPSBhbnk+IFxuICA9IChpbmplY3RvcjogSW5qZWN0b3IsIGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IChjb25maWc6IEssIGNvbnRleHQ6IFVJQ29udGV4dCkgPT4gVDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGw8VD4oc2lnbmFsT3JWYWx1ZTogU2lnbmFsPFQ+IHwgVCk6IFQge1xuICByZXR1cm4gaXNTaWduYWwoc2lnbmFsT3JWYWx1ZSkgPyBzaWduYWxPclZhbHVlKCkgOiBzaWduYWxPclZhbHVlO1xufVxuXG5mdW5jdGlvbiBzZXRSZWR1Y2VyUGF0aChyZWR1Y2VyOiBGdW5jdGlvbiwgcGF0aDogc3RyaW5nW10pIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlZHVjZXIsICdwYXRoJywgeyB2YWx1ZTogcGF0aCwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICByZXR1cm4gcmVkdWNlcjtcbn1cblxuZnVuY3Rpb24gZ2V0UmVkdWNlclBhdGgocmVkdWNlcjogRnVuY3Rpb24pIHtcbiAgcmV0dXJuIHJlZHVjZXJbJ3BhdGgnXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVVaUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nPihcbiAgcmVkdWNlckZhY3Rvcnk6IFJlZHVjZXJGYWN0b3J5PFQ+LFxuICBwYXRoOiBzdHJpbmdbXSA9IFtdLFxuICBuYW1lID0gJ25hbWUnLFxuKTogUHJvdmlkZXIge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IFVJX0NPTkZJR19SRURVQ0VSLFxuICAgIHVzZUZhY3Rvcnk6IChpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICAgIGZ1bmN0aW9uIF9yZWR1Y2VyRmFjdG9yeShob3N0SW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIGNvbnN0IHJlZHVjZXIgPSByZWR1Y2VyRmFjdG9yeShpbmplY3RvciwgaG9zdEluamVjdG9yKTsgXG4gICAgICAgIHJldHVybiAoY29uZmlnOiBULCBjb250ZXh0OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocGF0aC5sZW5ndGggPT09IDApIHJldHVybiAgcmVkdWNlcihjb25maWcsIGNvbnRleHQpO1xuICAgICAgICAgIHJldHVybiBzZXQoY29uZmlnIGFzIG9iamVjdCwgcGF0aCwgcmVkdWNlcihnZXQ8YW55LCBhbnk+KGNvbmZpZywgcGF0aCksIGNvbnRleHQpKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfcmVkdWNlckZhY3RvcnksICduYW1lJywgeyB2YWx1ZTogbmFtZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgICAgc2V0UmVkdWNlclBhdGgoX3JlZHVjZXJGYWN0b3J5LCBwYXRoKTtcbiAgICAgIHJldHVybiBfcmVkdWNlckZhY3Rvcnk7XG4gICAgfSxcbiAgICBkZXBzOiBbSW5qZWN0b3JdLFxuICAgIG11bHRpOiB0cnVlLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um9vdENvbmZpZzxUIGV4dGVuZHMgb2JqZWN0PihwYXRoczogc3RyaW5nW10gPSBbXSk6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IHVpQ29udGV4dCA9IGluamVjdFVpQ29udGV4dCgpO1xuICBjb25zdCBmYWN0b3JpZXMgPSBpbmplY3RSZWR1Y2VyRmFjdG9pcmllcyhwYXRocyk7XG4gIGNvbnN0IGhvc3RJbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIGNvbnN0IHJlZHVjZXJzID0gZmFjdG9yaWVzLm1hcChmYWN0b3J5ID0+IHtcbiAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGhvc3RJbmplY3RvciwgKCkgPT4gZmFjdG9yeShob3N0SW5qZWN0b3IpKTtcbiAgfSk7XG4gIGlmICghcmVkdWNlcnMpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJvb3RDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IHVpQ29udGV4dCgpO1xuICAgIHJldHVybiByZWR1Y2Vycy5yZWR1Y2UoKGFjYywgcmVkdWNlcikgPT4ge1xuICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChob3N0SW5qZWN0b3IsICgpID0+IHJlZHVjZXIoYWNjLCBjb250ZXh0KSk7XG4gICAgfSwge30gYXMgVCk7XG4gIH0pO1xuICByZXR1cm4gcm9vdENvbmZpZztcbn1cblxuLy8gVE9ETyhAbm9udGFuZ2VudCk6IGl0ZW1z44Gq44Gp44Gu5Y+W5b6X44GM5YWo44Gm44Gu44Kz44Oz44Od44O844ON44Oz44OI44Gn6KGM44KP44KM44KL44Gu44Gn6KiI566X44KS5pyA6YGp5YyW44GZ44KL44CCXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VWlDb25maWc8VCBleHRlbmRzIG9iamVjdD4ocGF0aHM6IHN0cmluZ1tdID0gW10pOiBTaWduYWw8VD4ge1xuICBjb25zdCByb290Q29uZmlnID0gaW5qZWN0Um9vdENvbmZpZzxUPihwYXRocyk7XG4gIHJldHVybiBzY29wZWQocm9vdENvbmZpZywgcGF0aHMgYXMgYW55KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VDb25maWc8VCBleHRlbmRzIG9iamVjdD4oZGVmYXVsdFVzZUZhY3Rvcnk6IFJlZHVjZXJGYWN0b3J5PFQ+LCBwYXRoOiBzdHJpbmdbXSkge1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGU6IGZ1bmN0aW9uIHByb3ZpZGVDb25maWcodXNlRmFjdG9yeT86IFJlZHVjZXJGYWN0b3J5PFQ+LCBsYWJlbCA9IHVzZUZhY3RvcnkgPyAnY3VzdG9tJyA6ICdkZWZhdWx0Jykge1xuICAgICAgdXNlRmFjdG9yeSA/Pz0gZGVmYXVsdFVzZUZhY3Rvcnk7XG4gICAgICByZXR1cm4gcHJvdmlkZVVpQ29uZmlnPFQ+KHVzZUZhY3RvcnksIHBhdGgsIGBbJHtwYXRoLmpvaW4oJy4nKX1dICR7bGFiZWx9YCk7XG4gICAgfSxcbiAgICBpbmplY3Q6IGZ1bmN0aW9uIGluamVjdENvbmZpZygpIHtcbiAgICAgIHJldHVybiBpbmplY3RVaUNvbmZpZzxUPihwYXRoKTtcbiAgICB9LFxuICB9XG59XG5cbmZ1bmN0aW9uIGluamVjdFJlZHVjZXJzKCk6ICgoaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4gVWlDb25maWdSZWR1Y2VyPGFueT4pW10ge1xuICByZXR1cm4gaW5qZWN0RGVlcE11bHRpPChob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiBVaUNvbmZpZ1JlZHVjZXI8YW55Pj4oVUlfQ09ORklHX1JFRFVDRVIpO1xufVxuXG5mdW5jdGlvbiBpbmplY3RSZWR1Y2VyRmFjdG9pcmllcyhwYXRoOiBzdHJpbmdbXSA9IFtdKTogKChob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiBVaUNvbmZpZ1JlZHVjZXI8YW55PilbXSB7XG4gIHJldHVybiBpbmplY3RSZWR1Y2VycygpLmZpbHRlcihmYWN0b3J5ID0+IHtcbiAgICByZXR1cm4gZ2V0UmVkdWNlclBhdGgoZmFjdG9yeSkuZXZlcnkoKHAsIGkpID0+IHBhdGhbaV0gPT09IHApO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdERlZXBNdWx0aTxUPih0b2tlbjogUHJvdmlkZXJUb2tlbjxUPiwgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKSk6IFRbXSB7XG4gIGNvbnN0IHZhbHVlT3JBcnJheSA9IGluamVjdG9yLmdldCh0b2tlbiBhcyBQcm92aWRlclRva2VuPFRbXT4sIFtdLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgY29uc3QgaXRlbXMgPSBBcnJheS5pc0FycmF5KHZhbHVlT3JBcnJheSkgPyB2YWx1ZU9yQXJyYXkgOiBbdmFsdWVPckFycmF5XTtcbiAgY29uc3QgcGFyZW50SW5qZWN0b3IgPSBpbmplY3Rvci5nZXQoSW5qZWN0b3IsIG51bGwsIHtza2lwU2VsZjogdHJ1ZX0pO1xuICBpZiAoIXBhcmVudEluamVjdG9yKSByZXR1cm4gaXRlbXM7XG4gIHJldHVybiBbLi4ubmV3IFNldChbLi4uaW5qZWN0RGVlcE11bHRpKHRva2VuLCBwYXJlbnRJbmplY3RvciksIC4uLml0ZW1zXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVidWdJbmplY3RvcihpbmplY3RvcjogSW5qZWN0b3IgfCBudWxsID0gaW5qZWN0KEluamVjdG9yKSkge1xuICAgICAgY29uc3QgZ2V0UGFyZW50ID0gKGluamVjdG9yOiBJbmplY3RvciwgbiA9IDApOiBJbmplY3RvciB8IG51bGwgPT4ge1xuICAgICAgd2hpbGUgKGluamVjdG9yICYmIG4tLSA+IDApIHtcbiAgICAgICAgaW5qZWN0b3IgPSBpbmplY3Rvci5nZXQoSW5qZWN0b3IsIG51bGwsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0SW5qZWN0b3JOYW1lID0gKGluamVjdG9yOiBJbmplY3Rvcik6IHN0cmluZyA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYsIG51bGwpPy5uYXRpdmVFbGVtZW50Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKG5hbWUpIHJldHVybiBgPCR7bmFtZX0+YDtcbiAgICAgIHJldHVybiBgJHtpbmplY3Rvclsnc291cmNlJ119YDtcbiAgICB9XG5cbiAgICBjb25zdCBpc05vZGVJbmplY3RvciA9IChpbmplY3RvcjogSW5qZWN0b3IpOiBib29sZWFuID0+IHtcbiAgICAgIHJldHVybiBpbmplY3Rvci5nZXQoRWxlbWVudFJlZiwgbnVsbCkgIT09IG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwVG9OYW1lcyA9IChyZWR1Y2VyczogYW55KSA9PiAocmVkdWNlcnMgPz8gW10pLm1hcChyZWR1Y2VyID0+IHJlZHVjZXIubmFtZSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcbiAgICAgIGluamVjdG9yID0gZ2V0UGFyZW50KGluamVjdG9yLCBpKTtcbiAgICAgIGlmIChpbmplY3RvciA9PT0gSW5qZWN0b3IuTlVMTCkgYnJlYWs7XG4gICAgfVxufVxuIl19
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvdWkuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQW1DLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekssT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFFekYsTUFBTSxVQUFVLE1BQU0sQ0FBeUMsTUFBaUIsRUFBRSxJQUFtQjtJQUNuRyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNWLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBWSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxFQUFFLEVBQUMsaUJBQWlCLEVBQUUsSUFB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QUFHLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEYsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQixRQUFRLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLFFBQVEsS0FBSyxRQUFRLENBQUMsSUFBSTtZQUFFLE1BQU07S0FDdkM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBQcm92aWRlciwgUHJvdmlkZXJUb2tlbiwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlzU2lnbmFsLCBydW5JbkluamVjdGlvbkNvbnRleHQsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBVSUNvbnRleHQsIFVpU2VydmljZSB9IGZyb20gXCIuL3VpLnNlcnZpY2VcIjtcbmltcG9ydCB7IGdldCwgc2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSBcIkBuZy1hdG9taWMvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IGNvbXB1dGVkQXN5bmMgfSBmcm9tIFwibmd4dGVuc2lvbi9jb21wdXRlZC1hc3luY1wiO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkhpc3RvcnlTZXJ2aWNlIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL25hdmlnYXRpb24taGlzdG9yeVwiO1xuXG5leHBvcnQgZnVuY3Rpb24gc2NvcGVkPFQgZXh0ZW5kcyBvYmplY3QsIFRLZXkgZXh0ZW5kcyBrZXlvZiBUPihzb3VyY2U6IFNpZ25hbDxUPiwgcGF0aDogVEtleSB8IFtUS2V5XSk6IFNpZ25hbDxUW1RLZXldPiB7XG4gIGNvbnN0IHNjb3BlZFNpZ25hbCA9IHNpZ25hbDxUW1RLZXldPihnZXQoc291cmNlKCksIHBhdGgpKTtcbiAgZWZmZWN0KCgpID0+IHtcbiAgICBzY29wZWRTaWduYWwuc2V0KGdldChzb3VyY2UoKSwgcGF0aCwgc291cmNlKCkpIGFzIFRbVEtleV0pO1xuICB9LCB7YWxsb3dTaWduYWxXcml0ZXM6IHRydWV9KTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHNjb3BlZFNpZ25hbCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEJyZWFrcG9pbnQoKSB7XG4gIHJldHVybiBpbmplY3QoVWlTZXJ2aWNlKS5icmVha3BvaW50LmJyZWFrcG9pbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJc01vYmlsZSgpIHtcbiAgY29uc3QgYnJlYWtwb2ludCA9IGluamVjdEJyZWFrcG9pbnQoKTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+ICBbJ3hTbWFsbCcsICdzbWFsbCddLmluY2x1ZGVzKGJyZWFrcG9pbnQoKSkpO1xufVxuXG5leHBvcnQgZW51bSBOYXZBY3Rpb25JZCB7XG4gIFRPR0dMRV9TSURFX05BViA9ICdbQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvdWldIFRPR0dMRV9TSURFX05BVicsXG4gIEJBQ0sgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBCQUNLJyxcbiAgQ0xPU0UgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBDTE9TRScsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJc1Jvb3RQYWdlJCgpIHtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmV0dXJuIHJvdXRlci5ldmVudHMucGlwZShcbiAgICBzdGFydFdpdGgobnVsbCksXG4gICAgbWFwKCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSBbXTtcbiAgICAgIGxldCByb3V0ZV8gPSByb3V0ZTsgXG4gICAgICB3aGlsZShyb3V0ZV8pIHtcbiAgICAgICAgaWYgKCFyb3V0ZV8ucGFyZW50KSBicmVhaztcbiAgICAgICAgcm91dGVfID0gcm91dGVfLnBhcmVudDtcbiAgICAgICAgaWYgKHJvdXRlXy5jb21wb25lbnQpIHtcbiAgICAgICAgICBjb21wb25lbnRzLnB1c2gocm91dGVfLmNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiAhIShjb21wb25lbnRzPy5sZW5ndGggPT09IDEpO1xuICAgIH0pLFxuICAgIG1hcCgocm91dGUpID0+ICEhcm91dGUpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SXNSb290UGFnZSgpIHtcbiAgY29uc3QgaXNSb290UGFnZSQgPSBpbmplY3RJc1Jvb3RQYWdlJCgpO1xuICBjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIHJldHVybiBjb21wdXRlZEFzeW5jKCgpID0+IGlzUm9vdFBhZ2UkLCB7aW5qZWN0b3J9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5hdlN0YXJ0QWN0aW9ucyhcbiAgaXNSb290UGFnZTogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKSxcbik6IFNpZ25hbDxBY3Rpb25bXT4ge1xuICBjb25zdCBjb250ZXh0ID0gaW5qZWN0VWlDb250ZXh0KCk7XG4gIGNvbnN0IG5hdmlnYXRpb25IaXN0b3J5ID0gaW5qZWN0KE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSk7XG4gIGxldCBpc0luaXRpYWw6IGJvb2xlYW47XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoKGNvbnRleHQoKS5icmVha3BvaW50KSB7XG4gICAgICBjYXNlICd4TGFyZ2UnOlxuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgIGNhc2UgJ3NtYWxsJzoge1xuICAgICAgICBpZiAoaXNSb290UGFnZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0luaXRpYWwgPz89IG5hdmlnYXRpb25IaXN0b3J5LmlzSW5pdGlhbCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlICd4U21hbGwnOiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlKCkpIHtcbiAgICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLlRPR0dMRV9TSURFX05BViwgbmFtZTogJ+ODoeODi+ODpeODvCcsIGljb246ICdtZW51JyB9XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobmF2aWdhdGlvbkhpc3RvcnkuaXNJbml0aWFsKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuVE9HR0xFX1NJREVfTkFWLCBuYW1lOiAn44Oh44OL44Ol44O8JywgaWNvbjogJ21lbnUnIH1dXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlKCkpIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5CQUNLLCBuYW1lOiAnQkFDSycsIGljb246ICdhcnJvd19iYWNrJyB9XTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0U2lkZUFwcE5hdlN0YXJ0QWN0aW9ucyhcbiAgaXNSb290UGFnZTogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKSxcbik6IFNpZ25hbDxBY3Rpb25bXT4ge1xuICBjb25zdCBjb250ZXh0ID0gaW5qZWN0VWlDb250ZXh0KCk7XG4gIGNvbnN0IG5hdmlnYXRpb25IaXN0b3J5ID0gaW5qZWN0KE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSk7XG4gIGxldCBpc0luaXRpYWw6IGJvb2xlYW47XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoKGNvbnRleHQoKS5icmVha3BvaW50KSB7XG4gICAgICBjYXNlICd4TGFyZ2UnOlxuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgIGNhc2UgJ3NtYWxsJzoge1xuICAgICAgICBpZiAoaXNSb290UGFnZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0luaXRpYWwgPz89IG5hdmlnYXRpb25IaXN0b3J5LmlzSW5pdGlhbCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLkNMT1NFLCBuYW1lOiAnQ0xPU0UnLCBpY29uOiAnY2xvc2UnIH1dO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLkJBQ0ssIG5hbWU6ICdCQUNLJywgaWNvbjogJ2Fycm93X2JhY2snIH1dO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2FzZSAneFNtYWxsJzoge1xuICAgICAgICBpZiAoaXNSb290UGFnZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5UT0dHTEVfU0lERV9OQVYsIG5hbWU6ICfjg6Hjg4vjg6Xjg7wnLCBpY29uOiAnbWVudScgfV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGlzSW5pdGlhbCA/Pz0gbmF2aWdhdGlvbkhpc3RvcnkuaXNJbml0aWFsKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQ0xPU0UsIG5hbWU6ICdDTE9TRScsIGljb246ICdjbG9zZScgfV07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlKCkpIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5CQUNLLCBuYW1lOiAnQkFDSycsIGljb246ICdhcnJvd19iYWNrJyB9XTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVpQ29udGV4dCgpOiBTaWduYWw8VUlDb250ZXh0PiB7XG4gIHJldHVybiBpbmplY3QoVWlTZXJ2aWNlKS51aUNvbnRleHQ7XG59XG5cbmV4cG9ydCB0eXBlIFVpQ29uZmlnUmVkdWNlcjxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nLCBDIGV4dGVuZHMgVUlDb250ZXh0ID0gYW55PiA9IChjb25maWc6IFQsIGNvbnRleHQ6IEMpID0+IFQ7XG5leHBvcnQgY29uc3QgVUlfQ09ORklHX1JFRFVDRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48VWlDb25maWdSZWR1Y2VyPGFueT4+KCdVSV9DT05GSUdfUkVEVUNFUicpO1xuZXhwb3J0IHR5cGUgUmVkdWNlckZhY3Rvcnk8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz4gXG4gID0gKGluamVjdG9yOiBJbmplY3RvciwgaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4gKGNvbmZpZzogVCwgY29udGV4dDogVUlDb250ZXh0KSA9PiBUO1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0UmVkdWNlckZhY3Rvcnk8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz5cbiAgPSAoaW5qZWN0b3I6IEluamVjdG9yLCBob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiAoY29udGV4dDogVUlDb250ZXh0KSA9PiBUO1xuXG5leHBvcnQgY29uc3Qgd3JhcCA9IDxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nPihcbiAgZGVmYXVsdFJlZHVjZXJGYWN0b3J5OiBEZWZhdWx0UmVkdWNlckZhY3Rvcnk8VD4sXG4pOiBSZWR1Y2VyRmFjdG9yeTxUPiA9PiB7XG4gIHJldHVybiAoaW5qZWN0b3I6IEluamVjdG9yLCBob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgY29uc3QgcmVkdWNlciA9IGRlZmF1bHRSZWR1Y2VyRmFjdG9yeShpbmplY3RvciwgaG9zdEluamVjdG9yKTtcbiAgICByZXR1cm4gKF86IFQsIGNvbnRleHQ6IFVJQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlZHVjZXIoY29udGV4dCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsbDxUPihzaWduYWxPclZhbHVlOiBTaWduYWw8VD4gfCBUKTogVCB7XG4gIHJldHVybiBpc1NpZ25hbChzaWduYWxPclZhbHVlKSA/IHNpZ25hbE9yVmFsdWUoKSA6IHNpZ25hbE9yVmFsdWU7XG59XG5cbmZ1bmN0aW9uIHNldFJlZHVjZXJQYXRoKHJlZHVjZXI6IEZ1bmN0aW9uLCBwYXRoOiBzdHJpbmdbXSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVkdWNlciwgJ3BhdGgnLCB7IHZhbHVlOiBwYXRoLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIHJldHVybiByZWR1Y2VyO1xufVxuXG5mdW5jdGlvbiBnZXRSZWR1Y2VyUGF0aChyZWR1Y2VyOiBGdW5jdGlvbikge1xuICByZXR1cm4gcmVkdWNlclsncGF0aCddO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVVpQ29uZmlnPFQgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmc+KFxuICByZWR1Y2VyRmFjdG9yeTogUmVkdWNlckZhY3Rvcnk8VD4sXG4gIHBhdGg6IHN0cmluZ1tdID0gW10sXG4gIG5hbWUgPSAnbmFtZScsXG4pOiBQcm92aWRlciB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogVUlfQ09ORklHX1JFRFVDRVIsXG4gICAgdXNlRmFjdG9yeTogKGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgICAgZnVuY3Rpb24gX3JlZHVjZXJGYWN0b3J5KGhvc3RJbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgY29uc3QgcmVkdWNlciA9IHJlZHVjZXJGYWN0b3J5KGluamVjdG9yLCBob3N0SW5qZWN0b3IpOyBcbiAgICAgICAgcmV0dXJuIChjb25maWc6IFQsIGNvbnRleHQ6IGFueSk6IFQgPT4ge1xuICAgICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJlZHVjZXIoY29uZmlnLCBjb250ZXh0KTtcbiAgICAgICAgICByZXR1cm4gc2V0KGNvbmZpZyBhcyBvYmplY3QsIHBhdGgsIHJlZHVjZXIoZ2V0PGFueSwgYW55Pihjb25maWcsIHBhdGgpLCBjb250ZXh0KSkgYXMgVDtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfcmVkdWNlckZhY3RvcnksICduYW1lJywgeyB2YWx1ZTogbmFtZSwgY29uZmlndXJhYmxlOiB0cnVlIH0pO1xuICAgICAgc2V0UmVkdWNlclBhdGgoX3JlZHVjZXJGYWN0b3J5LCBwYXRoKTtcbiAgICAgIHJldHVybiBfcmVkdWNlckZhY3Rvcnk7XG4gICAgfSxcbiAgICBkZXBzOiBbSW5qZWN0b3JdLFxuICAgIG11bHRpOiB0cnVlLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um9vdENvbmZpZzxUIGV4dGVuZHMgb2JqZWN0PihwYXRoczogc3RyaW5nW10gPSBbXSk6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IHVpQ29udGV4dCA9IGluamVjdFVpQ29udGV4dCgpO1xuICBjb25zdCBmYWN0b3JpZXMgPSBpbmplY3RSZWR1Y2VyRmFjdG9yaWVzKHBhdGhzKTtcbiAgY29uc3QgaG9zdEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgcmVkdWNlcnMgPSBmYWN0b3JpZXMubWFwKGZhY3RvcnkgPT4ge1xuICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaG9zdEluamVjdG9yLCAoKSA9PiBmYWN0b3J5KGhvc3RJbmplY3RvcikpO1xuICB9KTtcbiAgaWYgKCFyZWR1Y2VycykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3Qgcm9vdENvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gdWlDb250ZXh0KCk7XG4gICAgcmV0dXJuIHJlZHVjZXJzLnJlZHVjZSgoYWNjLCByZWR1Y2VyKSA9PiB7XG4gICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGhvc3RJbmplY3RvciwgKCkgPT4gcmVkdWNlcihhY2MsIGNvbnRleHQpKTtcbiAgICB9LCB7fSBhcyBUKTtcbiAgfSk7XG4gIHJldHVybiByb290Q29uZmlnO1xufVxuXG4vLyBUT0RPKEBub250YW5nZW50KTogaXRlbXPjgarjganjga7lj5blvpfjgYzlhajjgabjga7jgrPjg7Pjg53jg7zjg43jg7Pjg4jjgafooYzjgo/jgozjgovjga7jgafoqIjnrpfjgpLmnIDpganljJbjgZnjgovjgIJcbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVaUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0PihwYXRoczogc3RyaW5nW10gPSBbXSk6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IHJvb3RDb25maWcgPSBpbmplY3RSb290Q29uZmlnPFQ+KHBhdGhzKTtcbiAgcmV0dXJuIHNjb3BlZChyb290Q29uZmlnLCBwYXRocyBhcyBhbnkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0PihkZWZhdWx0VXNlRmFjdG9yeTogRGVmYXVsdFJlZHVjZXJGYWN0b3J5PFQ+LCBwYXRoOiBzdHJpbmdbXSkge1xuICBjb25zdCBmYWN0b3J5ID0gd3JhcChkZWZhdWx0VXNlRmFjdG9yeSk7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZSh1c2VGYWN0b3J5PzogUmVkdWNlckZhY3Rvcnk8VD4sIGxhYmVsID0gdXNlRmFjdG9yeSA/ICdjdXN0b20nIDogJ2RlZmF1bHQnKSB7XG4gICAgICB1c2VGYWN0b3J5ID8/PSBmYWN0b3J5O1xuICAgICAgcmV0dXJuIHByb3ZpZGVVaUNvbmZpZzxUPih1c2VGYWN0b3J5LCBwYXRoLCBgWyR7cGF0aC5qb2luKCcuJyl9XSAke2xhYmVsfWApO1xuICAgIH0sXG4gICAgaW5qZWN0KCkge1xuICAgICAgcmV0dXJuIGluamVjdFVpQ29uZmlnPFQ+KHBhdGgpO1xuICAgIH0sXG4gIH1cbn1cblxuZnVuY3Rpb24gaW5qZWN0UmVkdWNlcnMoKTogKChob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiBVaUNvbmZpZ1JlZHVjZXI8YW55PilbXSB7XG4gIHJldHVybiBpbmplY3REZWVwTXVsdGk8KGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IFVpQ29uZmlnUmVkdWNlcjxhbnk+PihVSV9DT05GSUdfUkVEVUNFUik7XG59XG5cbmZ1bmN0aW9uIGluamVjdFJlZHVjZXJGYWN0b3JpZXMocGF0aDogc3RyaW5nW10gPSBbXSk6ICgoaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4gVWlDb25maWdSZWR1Y2VyPGFueT4pW10ge1xuICByZXR1cm4gaW5qZWN0UmVkdWNlcnMoKS5maWx0ZXIoZmFjdG9yeSA9PiB7XG4gICAgcmV0dXJuIGdldFJlZHVjZXJQYXRoKGZhY3RvcnkpLmV2ZXJ5KChwLCBpKSA9PiBwYXRoW2ldID09PSBwKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3REZWVwTXVsdGk8VD4odG9rZW46IFByb3ZpZGVyVG9rZW48VD4sIGluamVjdG9yOiBJbmplY3RvciA9IGluamVjdChJbmplY3RvcikpOiBUW10ge1xuICBjb25zdCB2YWx1ZU9yQXJyYXkgPSBpbmplY3Rvci5nZXQodG9rZW4gYXMgUHJvdmlkZXJUb2tlbjxUW10+LCBbXSwge29wdGlvbmFsOiB0cnVlfSk7XG4gIGNvbnN0IGl0ZW1zID0gQXJyYXkuaXNBcnJheSh2YWx1ZU9yQXJyYXkpID8gdmFsdWVPckFycmF5IDogW3ZhbHVlT3JBcnJheV07XG4gIGNvbnN0IHBhcmVudEluamVjdG9yID0gaW5qZWN0b3IuZ2V0KEluamVjdG9yLCBudWxsLCB7c2tpcFNlbGY6IHRydWV9KTtcbiAgaWYgKCFwYXJlbnRJbmplY3RvcikgcmV0dXJuIGl0ZW1zO1xuICByZXR1cm4gWy4uLm5ldyBTZXQoWy4uLmluamVjdERlZXBNdWx0aSh0b2tlbiwgcGFyZW50SW5qZWN0b3IpLCAuLi5pdGVtc10pXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnSW5qZWN0b3IoaW5qZWN0b3I6IEluamVjdG9yIHwgbnVsbCA9IGluamVjdChJbmplY3RvcikpIHtcbiAgICAgIGNvbnN0IGdldFBhcmVudCA9IChpbmplY3RvcjogSW5qZWN0b3IsIG4gPSAwKTogSW5qZWN0b3IgfCBudWxsID0+IHtcbiAgICAgIHdoaWxlIChpbmplY3RvciAmJiBuLS0gPiAwKSB7XG4gICAgICAgIGluamVjdG9yID0gaW5qZWN0b3IuZ2V0KEluamVjdG9yLCBudWxsLCB7IHNraXBTZWxmOiB0cnVlIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGluamVjdG9yO1xuICAgIH1cblxuICAgIGNvbnN0IGdldEluamVjdG9yTmFtZSA9IChpbmplY3RvcjogSW5qZWN0b3IpOiBzdHJpbmcgPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IGluamVjdG9yLmdldChFbGVtZW50UmVmLCBudWxsKT8ubmF0aXZlRWxlbWVudD8udGFnTmFtZT8udG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChuYW1lKSByZXR1cm4gYDwke25hbWV9PmA7XG4gICAgICByZXR1cm4gYCR7aW5qZWN0b3JbJ3NvdXJjZSddfWA7XG4gICAgfVxuXG4gICAgY29uc3QgaXNOb2RlSW5qZWN0b3IgPSAoaW5qZWN0b3I6IEluamVjdG9yKTogYm9vbGVhbiA9PiB7XG4gICAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYsIG51bGwpICE9PSBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG1hcFRvTmFtZXMgPSAocmVkdWNlcnM6IGFueSkgPT4gKHJlZHVjZXJzID8/IFtdKS5tYXAocmVkdWNlciA9PiByZWR1Y2VyLm5hbWUpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XG4gICAgICBpbmplY3RvciA9IGdldFBhcmVudChpbmplY3RvciwgaSk7XG4gICAgICBpZiAoaW5qZWN0b3IgPT09IEluamVjdG9yLk5VTEwpIGJyZWFrO1xuICAgIH1cbn1cbiJdfQ==