aril 1.1.91 → 1.1.93

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 (31) hide show
  1. package/boot/config/apps/src/apps.service.d.ts +5 -1
  2. package/boot/config/apps/src/interfaces.d.ts +2 -1
  3. package/boot/config/apps/src/route-permissions.d.ts +3 -0
  4. package/esm2022/boot/config/apps/src/apps.service.mjs +37 -4
  5. package/esm2022/boot/config/apps/src/auth.guard.mjs +9 -1
  6. package/esm2022/boot/config/apps/src/interfaces.mjs +1 -1
  7. package/esm2022/boot/config/apps/src/route-permissions.mjs +21 -0
  8. package/esm2022/theme/layout/index.mjs +3 -1
  9. package/esm2022/ui/translate-input/src/aril-lang-modal/aril-lang-modal.component.mjs +2 -2
  10. package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +7 -3
  11. package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +7 -3
  12. package/esm2022/util/custom_pages/index.mjs +2 -1
  13. package/esm2022/util/custom_pages/src/forbidden.component.mjs +71 -0
  14. package/fesm2022/aril-boot-config-apps.mjs +63 -4
  15. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  16. package/fesm2022/aril-theme-layout.mjs +1 -1
  17. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  18. package/fesm2022/aril-ui-business-assetPicker.mjs +6 -2
  19. package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
  20. package/fesm2022/aril-ui-business-enumPicker.mjs +6 -2
  21. package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
  22. package/fesm2022/aril-ui-translate-input.mjs +1 -1
  23. package/fesm2022/aril-ui-translate-input.mjs.map +1 -1
  24. package/fesm2022/aril-util-custom_pages.mjs +66 -1
  25. package/fesm2022/aril-util-custom_pages.mjs.map +1 -1
  26. package/package.json +125 -125
  27. package/theme/layout/index.d.ts +2 -0
  28. package/theme/layout/index.ts +3 -1
  29. package/ui-business/enumPicker/src/enum-picker.component.d.ts +2 -1
  30. package/util/custom_pages/index.d.ts +1 -0
  31. package/util/custom_pages/src/forbidden.component.d.ts +5 -0
@@ -3,11 +3,15 @@ import { Routes } from '@angular/router';
3
3
  import { AppsDTO, ExtensionConfig, PluginConfig, PluginMenuItem } from './interfaces';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class MicroAppService {
6
- private router;
6
+ private readonly router;
7
+ private readonly keycloak;
8
+ private userRoles;
7
9
  init(httpClient: HttpClient, hostAPI: string): import("rxjs").Observable<AppsDTO>;
8
10
  buildRoutes(options: PluginConfig[]): Routes;
9
11
  setMenuItems(items: PluginMenuItem[]): void;
10
12
  setPlugins(items: Record<string, ExtensionConfig>): void;
13
+ private filterMenuItemsByRole;
14
+ private hasPermission;
11
15
  static ɵfac: i0.ɵɵFactoryDeclaration<MicroAppService, never>;
12
16
  static ɵprov: i0.ɵɵInjectableDeclaration<MicroAppService>;
13
17
  }
@@ -33,6 +33,7 @@ export type PluginConfig = WebComponentWrapperOptions & {
33
33
  id?: string;
34
34
  remoteName: string;
35
35
  shadowDomPassive: boolean;
36
+ permittedRoles?: string[];
36
37
  };
37
38
  export interface MenuItemAction {
38
39
  method?: 'GET' | 'POST';
@@ -48,7 +49,7 @@ export interface PluginMenuItem {
48
49
  [languageCode: string]: string;
49
50
  };
50
51
  items?: PluginMenuItem[];
51
- permittedRole?: string;
52
+ permittedRoles?: string[];
52
53
  action?: MenuItemAction;
53
54
  separator?: boolean;
54
55
  root?: boolean;
@@ -0,0 +1,3 @@
1
+ import { PluginMenuItem } from './interfaces';
2
+ export declare function setRoutePermissions(menuItems: PluginMenuItem[]): void;
3
+ export declare function getRoutePermissions(url: string): string[] | undefined;
@@ -1,22 +1,33 @@
1
1
  import { Injectable, inject, isDevMode } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { WebComponentWrapper, startsWith } from '@angular-architects/module-federation-tools';
4
+ import { KeycloakService } from 'keycloak-angular';
4
5
  import { catchError, of, tap } from 'rxjs';
5
- import { NotFoundComponent } from 'aril/util/custom_pages';
6
+ import { ForbiddenComponent, NotFoundComponent } from 'aril/util/custom_pages';
6
7
  import { AuthGuard } from './auth.guard';
8
+ import { setRoutePermissions } from './route-permissions';
7
9
  import { ShadowDOMWrapperComponent } from './showdowDOMWrapper';
8
10
  import * as i0 from "@angular/core";
9
11
  export class MicroAppService {
10
12
  constructor() {
11
13
  this.router = inject(Router);
14
+ this.keycloak = inject(KeycloakService);
15
+ this.userRoles = [];
12
16
  }
13
17
  init(httpClient, hostAPI) {
18
+ this.userRoles = this.keycloak.getUserRoles();
14
19
  return httpClient
15
20
  .get(isDevMode() ? './assets/local-configs/app.local.json' : hostAPI + '/ui-sidebar-configs')
16
21
  .pipe(tap((apps) => {
22
+ setRoutePermissions(apps.menuItems);
17
23
  const routes = this.buildRoutes([...apps.modules, ...apps.plugins]);
18
- this.router.resetConfig([...this.router.config, ...routes, { path: '**', component: NotFoundComponent }]);
19
- this.setMenuItems(apps.menuItems);
24
+ this.router.resetConfig([
25
+ ...this.router.config,
26
+ ...routes,
27
+ { path: 'forbidden', component: ForbiddenComponent },
28
+ { path: '**', component: NotFoundComponent }
29
+ ]);
30
+ this.setMenuItems(this.filterMenuItemsByRole(apps.menuItems));
20
31
  this.setPlugins(apps.extensions);
21
32
  }), catchError((err) => {
22
33
  console.log('Error Micro Apps Loading', err);
@@ -43,6 +54,28 @@ export class MicroAppService {
43
54
  setPlugins(items) {
44
55
  globalThis.pluginJson = items || {};
45
56
  }
57
+ filterMenuItemsByRole(items) {
58
+ return items.reduce((acc, item) => {
59
+ if (!this.hasPermission(item.permittedRoles)) {
60
+ return acc;
61
+ }
62
+ const filteredItem = { ...item };
63
+ if (filteredItem.items?.length) {
64
+ filteredItem.items = this.filterMenuItemsByRole(filteredItem.items);
65
+ if (!filteredItem.items.length && !filteredItem.routerLink) {
66
+ return acc;
67
+ }
68
+ }
69
+ acc.push(filteredItem);
70
+ return acc;
71
+ }, []);
72
+ }
73
+ hasPermission(permittedRoles) {
74
+ if (!permittedRoles?.length) {
75
+ return true;
76
+ }
77
+ return permittedRoles.some((role) => this.userRoles.includes(role));
78
+ }
46
79
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MicroAppService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
47
80
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: MicroAppService, providedIn: 'root' }); }
48
81
  }
@@ -50,4 +83,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
50
83
  type: Injectable,
51
84
  args: [{ providedIn: 'root' }]
52
85
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9hcHBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ04sbUJBQW1CLEVBRW5CLFVBQVUsRUFDVixNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUzQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUUzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXpDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUdoRSxNQUFNLE9BQU8sZUFBZTtJQUQ1QjtRQUVTLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0EwQ2hDO0lBeENBLElBQUksQ0FBQyxVQUFzQixFQUFFLE9BQWU7UUFDM0MsT0FBTyxVQUFVO2FBQ2YsR0FBRyxDQUFVLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLHFCQUFxQixDQUFDO2FBQ3JHLElBQUksQ0FDSixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNaLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUVwRSxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMxRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDYixDQUFDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUF1QjtRQUNsQyxNQUFNLE1BQU0sR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDOUMsT0FBTztnQkFDTixPQUFPLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7Z0JBQ3ZDLFNBQVMsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyx5QkFBeUI7Z0JBQ3JGLElBQUksRUFBRSxPQUFxQztnQkFDM0MsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO2FBQ3hCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUF1QjtRQUM3QixVQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztZQUNuQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUU7WUFDaEcsR0FBRyxLQUFLO1NBQ1IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUNELFVBQVUsQ0FBQyxLQUFzQztRQUMxQyxVQUFXLENBQUMsVUFBVSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQzs4R0ExQ1csZUFBZTtrSEFBZixlQUFlLGNBREYsTUFBTTs7MkZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0LCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHtcclxuXHRXZWJDb21wb25lbnRXcmFwcGVyLFxyXG5cdFdlYkNvbXBvbmVudFdyYXBwZXJPcHRpb25zLFxyXG5cdHN0YXJ0c1dpdGhcclxufSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTm90Rm91bmRDb21wb25lbnQgfSBmcm9tICdhcmlsL3V0aWwvY3VzdG9tX3BhZ2VzJztcclxuXHJcbmltcG9ydCB7IEF1dGhHdWFyZCB9IGZyb20gJy4vYXV0aC5ndWFyZCc7XHJcbmltcG9ydCB7IEFwcHNEVE8sIEV4dGVuc2lvbkNvbmZpZywgUGx1Z2luQ29uZmlnLCBQbHVnaW5NZW51SXRlbSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IFNoYWRvd0RPTVdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuL3Nob3dkb3dET01XcmFwcGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBNaWNyb0FwcFNlcnZpY2Uge1xyXG5cdHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XHJcblxyXG5cdGluaXQoaHR0cENsaWVudDogSHR0cENsaWVudCwgaG9zdEFQSTogc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gaHR0cENsaWVudFxyXG5cdFx0XHQuZ2V0PEFwcHNEVE8+KGlzRGV2TW9kZSgpID8gJy4vYXNzZXRzL2xvY2FsLWNvbmZpZ3MvYXBwLmxvY2FsLmpzb24nIDogaG9zdEFQSSArICcvdWktc2lkZWJhci1jb25maWdzJylcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0dGFwKChhcHBzKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCByb3V0ZXMgPSB0aGlzLmJ1aWxkUm91dGVzKFsuLi5hcHBzLm1vZHVsZXMsIC4uLmFwcHMucGx1Z2luc10pO1xyXG5cclxuXHRcdFx0XHRcdHRoaXMucm91dGVyLnJlc2V0Q29uZmlnKFsuLi50aGlzLnJvdXRlci5jb25maWcsIC4uLnJvdXRlcywgeyBwYXRoOiAnKionLCBjb21wb25lbnQ6IE5vdEZvdW5kQ29tcG9uZW50IH1dKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0TWVudUl0ZW1zKGFwcHMubWVudUl0ZW1zKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0UGx1Z2lucyhhcHBzLmV4dGVuc2lvbnMpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0Vycm9yIE1pY3JvIEFwcHMgTG9hZGluZycsIGVycik7XHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHJcblx0YnVpbGRSb3V0ZXMob3B0aW9uczogUGx1Z2luQ29uZmlnW10pOiBSb3V0ZXMge1xyXG5cdFx0Y29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBvcHRpb25zLm1hcCgob3B0aW9ucykgPT4ge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdG1hdGNoZXI6IHN0YXJ0c1dpdGgob3B0aW9ucy5yZW1vdGVOYW1lKSxcclxuXHRcdFx0XHRjb21wb25lbnQ6IG9wdGlvbnMuc2hhZG93RG9tUGFzc2l2ZSA/IFdlYkNvbXBvbmVudFdyYXBwZXIgOiBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50LFxyXG5cdFx0XHRcdGRhdGE6IG9wdGlvbnMgYXMgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMsXHJcblx0XHRcdFx0Y2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRdXHJcblx0XHRcdH07XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gcm91dGVzO1xyXG5cdH1cclxuXHJcblx0c2V0TWVudUl0ZW1zKGl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdKTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5ob3N0TWVudUl0ZW1zLnNldChbXHJcblx0XHRcdHsgcm9vdDogdHJ1ZSwgbGFiZWw6IHsgdHI6ICdBbmFzYXlmYScsIGVuOiAnSG9tZScgfSwgaWNvbjogJ3BpIHBpLWZ3IHBpLWhvbWUnLCByb3V0ZXJMaW5rOiAnLycgfSxcclxuXHRcdFx0Li4uaXRlbXNcclxuXHRcdF0pO1xyXG5cdH1cclxuXHRzZXRQbHVnaW5zKGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+KTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5wbHVnaW5Kc29uID0gaXRlbXMgfHwge307XHJcblx0fVxyXG59XHJcbiJdfQ==
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJpbC9ib290L2NvbmZpZy9hcHBzL3NyYy9hcHBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ04sbUJBQW1CLEVBRW5CLFVBQVUsRUFDVixNQUFNLDZDQUE2QyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHaEUsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFa0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRTVDLGNBQVMsR0FBYSxFQUFFLENBQUM7S0E2RWpDO0lBM0VBLElBQUksQ0FBQyxVQUFzQixFQUFFLE9BQWU7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlDLE9BQU8sVUFBVTthQUNmLEdBQUcsQ0FBVSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENB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QUFVLEVBQUUsQ0FBQztvQkFDNUQsT0FBTyxHQUFHLENBQUM7Z0JBQ1osQ0FBQztZQUNGLENBQUM7WUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3ZCLE9BQU8sR0FBRyxDQUFDO1FBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVPLGFBQWEsQ0FBQyxjQUF5QjtRQUM5QyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzdCLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDOzhHQWhGVyxlQUFlO2tIQUFmLGVBQWUsY0FERixNQUFNOzsyRkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQge1xyXG5cdFdlYkNvbXBvbmVudFdyYXBwZXIsXHJcblx0V2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMsXHJcblx0c3RhcnRzV2l0aFxyXG59IGZyb20gJ0Bhbmd1bGFyLWFyY2hpdGVjdHMvbW9kdWxlLWZlZGVyYXRpb24tdG9vbHMnO1xyXG5pbXBvcnQgeyBLZXljbG9ha1NlcnZpY2UgfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgb2YsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgRm9yYmlkZGVuQ29tcG9uZW50LCBOb3RGb3VuZENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdXRpbC9jdXN0b21fcGFnZXMnO1xyXG5cclxuaW1wb3J0IHsgQXV0aEd1YXJkIH0gZnJvbSAnLi9hdXRoLmd1YXJkJztcclxuaW1wb3J0IHsgQXBwc0RUTywgRXh0ZW5zaW9uQ29uZmlnLCBQbHVnaW5Db25maWcsIFBsdWdpbk1lbnVJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgc2V0Um91dGVQZXJtaXNzaW9ucyB9IGZyb20gJy4vcm91dGUtcGVybWlzc2lvbnMnO1xyXG5pbXBvcnQgeyBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi9zaG93ZG93RE9NV3JhcHBlcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgTWljcm9BcHBTZXJ2aWNlIHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWsgPSBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKTtcclxuXHJcblx0cHJpdmF0ZSB1c2VyUm9sZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdGluaXQoaHR0cENsaWVudDogSHR0cENsaWVudCwgaG9zdEFQSTogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnVzZXJSb2xlcyA9IHRoaXMua2V5Y2xvYWsuZ2V0VXNlclJvbGVzKCk7XHJcblx0XHRyZXR1cm4gaHR0cENsaWVudFxyXG5cdFx0XHQuZ2V0PEFwcHNEVE8+KGlzRGV2TW9kZSgpID8gJy4vYXNzZXRzL2xvY2FsLWNvbmZpZ3MvYXBwLmxvY2FsLmpzb24nIDogaG9zdEFQSSArICcvdWktc2lkZWJhci1jb25maWdzJylcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0dGFwKChhcHBzKSA9PiB7XHJcblx0XHRcdFx0XHRzZXRSb3V0ZVBlcm1pc3Npb25zKGFwcHMubWVudUl0ZW1zKTtcclxuXHRcdFx0XHRcdGNvbnN0IHJvdXRlcyA9IHRoaXMuYnVpbGRSb3V0ZXMoWy4uLmFwcHMubW9kdWxlcywgLi4uYXBwcy5wbHVnaW5zXSk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5yb3V0ZXIucmVzZXRDb25maWcoW1xyXG5cdFx0XHRcdFx0XHQuLi50aGlzLnJvdXRlci5jb25maWcsXHJcblx0XHRcdFx0XHRcdC4uLnJvdXRlcyxcclxuXHRcdFx0XHRcdFx0eyBwYXRoOiAnZm9yYmlkZGVuJywgY29tcG9uZW50OiBGb3JiaWRkZW5Db21wb25lbnQgfSxcclxuXHRcdFx0XHRcdFx0eyBwYXRoOiAnKionLCBjb21wb25lbnQ6IE5vdEZvdW5kQ29tcG9uZW50IH1cclxuXHRcdFx0XHRcdF0pO1xyXG5cdFx0XHRcdFx0dGhpcy5zZXRNZW51SXRlbXModGhpcy5maWx0ZXJNZW51SXRlbXNCeVJvbGUoYXBwcy5tZW51SXRlbXMpKTtcclxuXHRcdFx0XHRcdHRoaXMuc2V0UGx1Z2lucyhhcHBzLmV4dGVuc2lvbnMpO1xyXG5cdFx0XHRcdH0pLFxyXG5cdFx0XHRcdGNhdGNoRXJyb3IoKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ0Vycm9yIE1pY3JvIEFwcHMgTG9hZGluZycsIGVycik7XHJcblx0XHRcdFx0XHRyZXR1cm4gb2YoKTtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHQpO1xyXG5cdH1cclxuXHJcblx0YnVpbGRSb3V0ZXMob3B0aW9uczogUGx1Z2luQ29uZmlnW10pOiBSb3V0ZXMge1xyXG5cdFx0Y29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBvcHRpb25zLm1hcCgob3B0aW9ucykgPT4ge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdG1hdGNoZXI6IHN0YXJ0c1dpdGgob3B0aW9ucy5yZW1vdGVOYW1lKSxcclxuXHRcdFx0XHRjb21wb25lbnQ6IG9wdGlvbnMuc2hhZG93RG9tUGFzc2l2ZSA/IFdlYkNvbXBvbmVudFdyYXBwZXIgOiBTaGFkb3dET01XcmFwcGVyQ29tcG9uZW50LFxyXG5cdFx0XHRcdGRhdGE6IG9wdGlvbnMgYXMgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMsXHJcblx0XHRcdFx0Y2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRdXHJcblx0XHRcdH07XHJcblx0XHR9KTtcclxuXHJcblx0XHRyZXR1cm4gcm91dGVzO1xyXG5cdH1cclxuXHJcblx0c2V0TWVudUl0ZW1zKGl0ZW1zOiBQbHVnaW5NZW51SXRlbVtdKTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5ob3N0TWVudUl0ZW1zLnNldChbXHJcblx0XHRcdHsgcm9vdDogdHJ1ZSwgbGFiZWw6IHsgdHI6ICdBbmFzYXlmYScsIGVuOiAnSG9tZScgfSwgaWNvbjogJ3BpIHBpLWZ3IHBpLWhvbWUnLCByb3V0ZXJMaW5rOiAnLycgfSxcclxuXHRcdFx0Li4uaXRlbXNcclxuXHRcdF0pO1xyXG5cdH1cclxuXHRzZXRQbHVnaW5zKGl0ZW1zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+KTogdm9pZCB7XHJcblx0XHQoPGFueT5nbG9iYWxUaGlzKS5wbHVnaW5Kc29uID0gaXRlbXMgfHwge307XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIGZpbHRlck1lbnVJdGVtc0J5Um9sZShpdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IFBsdWdpbk1lbnVJdGVtW10ge1xyXG5cdFx0cmV0dXJuIGl0ZW1zLnJlZHVjZTxQbHVnaW5NZW51SXRlbVtdPigoYWNjLCBpdGVtKSA9PiB7XHJcblx0XHRcdGlmICghdGhpcy5oYXNQZXJtaXNzaW9uKGl0ZW0ucGVybWl0dGVkUm9sZXMpKSB7XHJcblx0XHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgZmlsdGVyZWRJdGVtID0geyAuLi5pdGVtIH07XHJcblxyXG5cdFx0XHRpZiAoZmlsdGVyZWRJdGVtLml0ZW1zPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRmaWx0ZXJlZEl0ZW0uaXRlbXMgPSB0aGlzLmZpbHRlck1lbnVJdGVtc0J5Um9sZShmaWx0ZXJlZEl0ZW0uaXRlbXMpO1xyXG5cclxuXHRcdFx0XHRpZiAoIWZpbHRlcmVkSXRlbS5pdGVtcy5sZW5ndGggJiYgIWZpbHRlcmVkSXRlbS5yb3V0ZXJMaW5rKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gYWNjO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0YWNjLnB1c2goZmlsdGVyZWRJdGVtKTtcclxuXHRcdFx0cmV0dXJuIGFjYztcclxuXHRcdH0sIFtdKTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgaGFzUGVybWlzc2lvbihwZXJtaXR0ZWRSb2xlcz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcblx0XHRpZiAoIXBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcGVybWl0dGVkUm9sZXMuc29tZSgocm9sZSkgPT4gdGhpcy51c2VyUm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -1,6 +1,7 @@
1
1
  import { Injectable, inject } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';
4
+ import { getRoutePermissions } from './route-permissions';
4
5
  import * as i0 from "@angular/core";
5
6
  export class AuthGuard extends KeycloakAuthGuard {
6
7
  constructor() {
@@ -10,6 +11,13 @@ export class AuthGuard extends KeycloakAuthGuard {
10
11
  if (!this.authenticated) {
11
12
  await this.keycloakAngular.login({ redirectUri: window.location.href });
12
13
  }
14
+ const permittedRoles = getRoutePermissions(state.url);
15
+ if (permittedRoles?.length) {
16
+ const hasRole = permittedRoles.some((role) => this.roles.includes(role));
17
+ if (!hasRole) {
18
+ return this.router.createUrlTree(['/forbidden']);
19
+ }
20
+ }
13
21
  return this.authenticated;
14
22
  }
15
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AuthGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -19,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
19
27
  type: Injectable,
20
28
  args: [{ providedIn: 'root' }]
21
29
  }], ctorParameters: () => [] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQTBCLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBR3RFLE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBQy9DO1FBQ0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWUsQ0FDN0IsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7OEdBZFcsU0FBUztrSEFBVCxTQUFTLGNBREksTUFBTTs7MkZBQ25CLFNBQVM7a0JBRHJCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCwgVXJsVHJlZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBLZXljbG9ha0F1dGhHdWFyZCwgS2V5Y2xvYWtTZXJ2aWNlIH0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgQXV0aEd1YXJkIGV4dGVuZHMgS2V5Y2xvYWtBdXRoR3VhcmQge1xyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0c3VwZXIoaW5qZWN0KFJvdXRlciksIGluamVjdChLZXljbG9ha1NlcnZpY2UpKTtcclxuXHR9XHJcblxyXG5cdG92ZXJyaWRlIGFzeW5jIGlzQWNjZXNzQWxsb3dlZChcclxuXHRcdHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG5cdFx0c3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcclxuXHQpOiBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XHJcblx0XHRpZiAoIXRoaXMuYXV0aGVudGljYXRlZCkge1xyXG5cdFx0XHRhd2FpdCB0aGlzLmtleWNsb2FrQW5ndWxhci5sb2dpbih7IHJlZGlyZWN0VXJpOiB3aW5kb3cubG9jYXRpb24uaHJlZiB9KTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkO1xyXG5cdH1cclxufVxyXG4iXX0=
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQTBCLE1BQU0sRUFBZ0MsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRzFELE1BQU0sT0FBTyxTQUFVLFNBQVEsaUJBQWlCO0lBQy9DO1FBQ0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVEsS0FBSyxDQUFDLGVBQWUsQ0FDN0IsS0FBNkIsRUFDN0IsS0FBMEI7UUFFMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsTUFBTSxjQUFjLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXRELElBQUksY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQzVCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ2xELENBQUM7UUFDRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzNCLENBQUM7OEdBdkJXLFNBQVM7a0hBQVQsU0FBUyxjQURJLE1BQU07OzJGQUNuQixTQUFTO2tCQURyQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXIsIFJvdXRlclN0YXRlU25hcHNob3QsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgS2V5Y2xvYWtBdXRoR3VhcmQsIEtleWNsb2FrU2VydmljZSB9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgZ2V0Um91dGVQZXJtaXNzaW9ucyB9IGZyb20gJy4vcm91dGUtcGVybWlzc2lvbnMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBleHRlbmRzIEtleWNsb2FrQXV0aEd1YXJkIHtcclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdHN1cGVyKGluamVjdChSb3V0ZXIpLCBpbmplY3QoS2V5Y2xvYWtTZXJ2aWNlKSk7XHJcblx0fVxyXG5cclxuXHRvdmVycmlkZSBhc3luYyBpc0FjY2Vzc0FsbG93ZWQoXHJcblx0XHRyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuXHRcdHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90XHJcblx0KTogUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xyXG5cdFx0aWYgKCF0aGlzLmF1dGhlbnRpY2F0ZWQpIHtcclxuXHRcdFx0YXdhaXQgdGhpcy5rZXljbG9ha0FuZ3VsYXIubG9naW4oeyByZWRpcmVjdFVyaTogd2luZG93LmxvY2F0aW9uLmhyZWYgfSk7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgcGVybWl0dGVkUm9sZXMgPSBnZXRSb3V0ZVBlcm1pc3Npb25zKHN0YXRlLnVybCk7XHJcblxyXG5cdFx0aWYgKHBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3QgaGFzUm9sZSA9IHBlcm1pdHRlZFJvbGVzLnNvbWUoKHJvbGUpID0+IHRoaXMucm9sZXMuaW5jbHVkZXMocm9sZSkpO1xyXG5cdFx0XHRpZiAoIWhhc1JvbGUpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShbJy9mb3JiaWRkZW4nXSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkO1xyXG5cdH1cclxufVxyXG4iXX0=
@@ -18,4 +18,4 @@ export var Apps;
18
18
  Apps["LGC"] = "lgc";
19
19
  Apps["DMS"] = "dms";
20
20
  })(Apps || (Apps = {}));
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQU4sSUFBWSxJQWtCWDtBQWxCRCxXQUFZLElBQUk7SUFDZixxQkFBYSxDQUFBO0lBQ2IsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCwyQkFBbUIsQ0FBQTtJQUNuQiwyQkFBbUIsQ0FBQTtJQUNuQixxQkFBYSxDQUFBO0lBQ2IsaUJBQVMsQ0FBQTtJQUNULHFCQUFhLENBQUE7SUFDYixtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLHVDQUErQixDQUFBO0lBQy9CLHlCQUFpQixDQUFBO0lBQ2pCLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0FBQ1osQ0FBQyxFQWxCVyxJQUFJLEtBQUosSUFBSSxRQWtCZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbnVJdGVtQ29tbWFuZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuXHJcbmV4cG9ydCBlbnVtIEFwcHMge1xyXG5cdFRIT1IgPSAndGhvcicsXHJcblx0Q1JNID0gJ2NybScsXHJcblx0V0RNID0gJ3dkbScsXHJcblx0QklMTElORyA9ICdiaWxsaW5nJyxcclxuXHRQQVlNRU5UID0gJ3BheW1lbnQnLFxyXG5cdFlFQVAgPSAneWVhcCcsXHJcblx0TVcgPSAnbXcnLFxyXG5cdExFTkEgPSAnbGVuYScsXHJcblx0SEVTID0gJ2hlcycsXHJcblx0Q1RTID0gJ2N0cycsXHJcblx0U0lTID0gJ3NpcycsXHJcblx0TU5HID0gJ21uZycsXHJcblx0TURNID0gJ21kbScsXHJcblx0U1RBVEVfTUFDSElORSA9ICdzdGF0ZS1tYWNoaW5lJyxcclxuXHRSRVBPUlQgPSAncmVwb3J0JyxcclxuXHRMR0MgPSAnbGdjJyxcclxuXHRETVMgPSAnZG1zJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwcHNEVE8ge1xyXG5cdHZlcnNpb246IG51bWJlcjtcclxuXHRtb2R1bGVzOiBQbHVnaW5Db25maWdbXTtcclxuXHRwbHVnaW5zOiBQbHVnaW5Db25maWdbXTtcclxuXHRleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+O1xyXG5cdG1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25Db25maWcge1xyXG5cdG9wdGlvbnM6IFBsdWdpbkNvbmZpZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUGx1Z2luQ29uZmlnID0gV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgJiB7XHJcblx0aWQ/OiBzdHJpbmc7XHJcblx0cmVtb3RlTmFtZTogc3RyaW5nO1xyXG5cdHNoYWRvd0RvbVBhc3NpdmU6IGJvb2xlYW47XHJcbn07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lbnVJdGVtQWN0aW9uIHtcclxuXHRtZXRob2Q/OiAnR0VUJyB8ICdQT1NUJztcclxuXHR1cmw6IHN0cmluZztcclxuXHRib2R5PzogYW55O1xyXG5cdHN1Y2Nlc3NSb3V0ZTogc3RyaW5nO1xyXG5cdHN1Y2Nlc3NSb3V0ZVJlc3BvbnNlS2V5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBsdWdpbk1lbnVJdGVtIHtcclxuXHRyb3V0ZXJMaW5rPzogc3RyaW5nO1xyXG5cdGljb24/OiBzdHJpbmc7XHJcblx0bGFiZWw6IHtcclxuXHRcdFtsYW5ndWFnZUNvZGU6IHN0cmluZ106IHN0cmluZztcclxuXHR9O1xyXG5cdGl0ZW1zPzogUGx1Z2luTWVudUl0ZW1bXTtcclxuXHRwZXJtaXR0ZWRSb2xlPzogc3RyaW5nO1xyXG5cdGFjdGlvbj86IE1lbnVJdGVtQWN0aW9uO1xyXG5cclxuXHQvLyBVSSBmaWVsZHNcclxuXHRzZXBhcmF0b3I/OiBib29sZWFuO1xyXG5cdHJvb3Q/OiBib29sZWFuO1xyXG5cdHBhdGg/OiBzdHJpbmc7XHJcblx0ZGlzYWJsZWQ/OiBib29sZWFuO1xyXG5cdGNvbW1hbmQ/KGV2ZW50OiBNZW51SXRlbUNvbW1hbmRFdmVudCk6IHZvaWQ7XHJcbn1cclxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvYm9vdC9jb25maWcvYXBwcy9zcmMvaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQU4sSUFBWSxJQWtCWDtBQWxCRCxXQUFZLElBQUk7SUFDZixxQkFBYSxDQUFBO0lBQ2IsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCwyQkFBbUIsQ0FBQTtJQUNuQiwyQkFBbUIsQ0FBQTtJQUNuQixxQkFBYSxDQUFBO0lBQ2IsaUJBQVMsQ0FBQTtJQUNULHFCQUFhLENBQUE7SUFDYixtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0lBQ1gsbUJBQVcsQ0FBQTtJQUNYLHVDQUErQixDQUFBO0lBQy9CLHlCQUFpQixDQUFBO0lBQ2pCLG1CQUFXLENBQUE7SUFDWCxtQkFBVyxDQUFBO0FBQ1osQ0FBQyxFQWxCVyxJQUFJLEtBQUosSUFBSSxRQWtCZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbnVJdGVtQ29tbWFuZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci1hcmNoaXRlY3RzL21vZHVsZS1mZWRlcmF0aW9uLXRvb2xzJztcclxuXHJcbmV4cG9ydCBlbnVtIEFwcHMge1xyXG5cdFRIT1IgPSAndGhvcicsXHJcblx0Q1JNID0gJ2NybScsXHJcblx0V0RNID0gJ3dkbScsXHJcblx0QklMTElORyA9ICdiaWxsaW5nJyxcclxuXHRQQVlNRU5UID0gJ3BheW1lbnQnLFxyXG5cdFlFQVAgPSAneWVhcCcsXHJcblx0TVcgPSAnbXcnLFxyXG5cdExFTkEgPSAnbGVuYScsXHJcblx0SEVTID0gJ2hlcycsXHJcblx0Q1RTID0gJ2N0cycsXHJcblx0U0lTID0gJ3NpcycsXHJcblx0TU5HID0gJ21uZycsXHJcblx0TURNID0gJ21kbScsXHJcblx0U1RBVEVfTUFDSElORSA9ICdzdGF0ZS1tYWNoaW5lJyxcclxuXHRSRVBPUlQgPSAncmVwb3J0JyxcclxuXHRMR0MgPSAnbGdjJyxcclxuXHRETVMgPSAnZG1zJ1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwcHNEVE8ge1xyXG5cdHZlcnNpb246IG51bWJlcjtcclxuXHRtb2R1bGVzOiBQbHVnaW5Db25maWdbXTtcclxuXHRwbHVnaW5zOiBQbHVnaW5Db25maWdbXTtcclxuXHRleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25Db25maWc+O1xyXG5cdG1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25Db25maWcge1xyXG5cdG9wdGlvbnM6IFBsdWdpbkNvbmZpZztcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUGx1Z2luQ29uZmlnID0gV2ViQ29tcG9uZW50V3JhcHBlck9wdGlvbnMgJiB7XHJcblx0aWQ/OiBzdHJpbmc7XHJcblx0cmVtb3RlTmFtZTogc3RyaW5nO1xyXG5cdHNoYWRvd0RvbVBhc3NpdmU6IGJvb2xlYW47XHJcblx0cGVybWl0dGVkUm9sZXM/OiBzdHJpbmdbXTtcclxufTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVudUl0ZW1BY3Rpb24ge1xyXG5cdG1ldGhvZD86ICdHRVQnIHwgJ1BPU1QnO1xyXG5cdHVybDogc3RyaW5nO1xyXG5cdGJvZHk/OiBhbnk7XHJcblx0c3VjY2Vzc1JvdXRlOiBzdHJpbmc7XHJcblx0c3VjY2Vzc1JvdXRlUmVzcG9uc2VLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGx1Z2luTWVudUl0ZW0ge1xyXG5cdHJvdXRlckxpbms/OiBzdHJpbmc7XHJcblx0aWNvbj86IHN0cmluZztcclxuXHRsYWJlbDoge1xyXG5cdFx0W2xhbmd1YWdlQ29kZTogc3RyaW5nXTogc3RyaW5nO1xyXG5cdH07XHJcblx0aXRlbXM/OiBQbHVnaW5NZW51SXRlbVtdO1xyXG5cdHBlcm1pdHRlZFJvbGVzPzogc3RyaW5nW107XHJcblx0YWN0aW9uPzogTWVudUl0ZW1BY3Rpb247XHJcblxyXG5cdC8vIFVJIGZpZWxkc1xyXG5cdHNlcGFyYXRvcj86IGJvb2xlYW47XHJcblx0cm9vdD86IGJvb2xlYW47XHJcblx0cGF0aD86IHN0cmluZztcclxuXHRkaXNhYmxlZD86IGJvb2xlYW47XHJcblx0Y29tbWFuZD8oZXZlbnQ6IE1lbnVJdGVtQ29tbWFuZEV2ZW50KTogdm9pZDtcclxufVxyXG4iXX0=
@@ -0,0 +1,21 @@
1
+ const routePermissions = new Map();
2
+ export function setRoutePermissions(menuItems) {
3
+ routePermissions.clear();
4
+ buildPermissionsMap(menuItems);
5
+ }
6
+ export function getRoutePermissions(url) {
7
+ const normalizedUrl = url.split('?')[0].replace(/^\//, '');
8
+ return routePermissions.get(normalizedUrl);
9
+ }
10
+ function buildPermissionsMap(items) {
11
+ for (const item of items) {
12
+ if (item.routerLink && item.permittedRoles?.length) {
13
+ const normalized = item.routerLink.replace(/^\//, '');
14
+ routePermissions.set(normalized, item.permittedRoles);
15
+ }
16
+ if (item.items?.length) {
17
+ buildPermissionsMap(item.items);
18
+ }
19
+ }
20
+ }
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGVybWlzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL2Jvb3QvY29uZmlnL2FwcHMvc3JjL3JvdXRlLXBlcm1pc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUM7QUFFckQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFNBQTJCO0lBQzlELGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsR0FBVztJQUM5QyxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsS0FBdUI7SUFDbkQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUN4QixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNGLENBQUM7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGx1Z2luTWVudUl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5cclxuY29uc3Qgcm91dGVQZXJtaXNzaW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmdbXT4oKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRSb3V0ZVBlcm1pc3Npb25zKG1lbnVJdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IHZvaWQge1xyXG5cdHJvdXRlUGVybWlzc2lvbnMuY2xlYXIoKTtcclxuXHRidWlsZFBlcm1pc3Npb25zTWFwKG1lbnVJdGVtcyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRSb3V0ZVBlcm1pc3Npb25zKHVybDogc3RyaW5nKTogc3RyaW5nW10gfCB1bmRlZmluZWQge1xyXG5cdGNvbnN0IG5vcm1hbGl6ZWRVcmwgPSB1cmwuc3BsaXQoJz8nKVswXS5yZXBsYWNlKC9eXFwvLywgJycpO1xyXG4gIHJldHVybiByb3V0ZVBlcm1pc3Npb25zLmdldChub3JtYWxpemVkVXJsKTtcclxufVxyXG5cclxuZnVuY3Rpb24gYnVpbGRQZXJtaXNzaW9uc01hcChpdGVtczogUGx1Z2luTWVudUl0ZW1bXSk6IHZvaWQge1xyXG5cdGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xyXG5cdFx0aWYgKGl0ZW0ucm91dGVyTGluayAmJiBpdGVtLnBlcm1pdHRlZFJvbGVzPy5sZW5ndGgpIHtcclxuXHRcdFx0Y29uc3Qgbm9ybWFsaXplZCA9IGl0ZW0ucm91dGVyTGluay5yZXBsYWNlKC9eXFwvLywgJycpO1xyXG5cdFx0XHRyb3V0ZVBlcm1pc3Npb25zLnNldChub3JtYWxpemVkLCBpdGVtLnBlcm1pdHRlZFJvbGVzKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoaXRlbS5pdGVtcz8ubGVuZ3RoKSB7XHJcblx0XHRcdGJ1aWxkUGVybWlzc2lvbnNNYXAoaXRlbS5pdGVtcyk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -5,4 +5,6 @@ export * from './service/selection-group.service';
5
5
  export * from './service/breadcrumb.service';
6
6
  export * from './service/app.layout.service';
7
7
  export * from './app/favorite-pages/favorite-pages.service';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZDQUE2QyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hcHAvbGF5b3V0L2FwcC5sYXlvdXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9hcHAvbGF5b3V0L21mZS5sYXlvdXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlL2FwcC5tZW51LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2Uvc2VsZWN0aW9uLWdyb3VwLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2UvYnJlYWRjcnVtYi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlL2FwcC5sYXlvdXQuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwL2Zhdm9yaXRlLXBhZ2VzL2Zhdm9yaXRlLXBhZ2VzLnNlcnZpY2UnXHJcbiJdfQ==
8
+ export * from './service/interfaces/enum';
9
+ export * from './service/interfaces/interfaces';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3RoZW1lL2xheW91dC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwL2xheW91dC9hcHAubGF5b3V0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBwL2xheW91dC9tZmUubGF5b3V0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZS9hcHAubWVudS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlL3NlbGVjdGlvbi1ncm91cC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlL2JyZWFkY3J1bWIuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZS9hcHAubGF5b3V0LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2FwcC9mYXZvcml0ZS1wYWdlcy9mYXZvcml0ZS1wYWdlcy5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlL2ludGVyZmFjZXMvZW51bSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZS9pbnRlcmZhY2VzL2ludGVyZmFjZXMnO1xyXG4iXX0=
@@ -46,7 +46,7 @@ export class ArilLangModalComponent {
46
46
  });
47
47
  }
48
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArilLangModalComponent, deps: [{ token: i1.DynamicDialogConfig }, { token: i1.DynamicDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
49
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ArilLangModalComponent, isStandalone: true, selector: "aril-lang-modal", ngImport: i0, template: "<div>\r\n\t<aril-field\r\n\t\t[label]=\"translocoService.translate('translationModal.addLanguage')\"\r\n\t\t[cols]=\"{ default: 12 }\"\r\n\t\tclass=\"mb-4 block\">\r\n\t\t<enum-picker\r\n\t\t\t[(ngModel)]=\"selectedLanguages\"\r\n\t\t\t[items]=\"availableLanguages\"\r\n\t\t\t[isMultiple]=\"true\"\r\n\t\t\titemKey=\"code\"\r\n\t\t\titemText=\"name\" />\r\n\t</aril-field>\r\n\r\n\t@for (lang of selectedLanguages; track lang) {\r\n\t\t<div class=\"border-1 border-gray-300 border-round py-2 px-4 mb-2 flex justify-content-between items-center\">\r\n\t\t\t<aril-field labelPos=\"left\" [label]=\"getLabel(lang)\" [cols]=\"{ default: 12 }\" [labelWidth]=\"15\" [valueWidth]=\"85\">\r\n\t\t\t\t<aril-text class=\"value-input\" [(ngModel)]=\"translations[lang]\" />\r\n\t\t\t</aril-field>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<div class=\"mt-4\">\r\n\t\t@if (mandatoryLanguages.length && isSaveDisabled()) {\r\n\t\t\t<div class=\"mb-2\">\r\n\t\t\t\t<p-tag [value]=\"getInfoText()\" severity=\"info\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"mt-4 flex justify-content-end\">\r\n\t\t<aril-button\r\n\t\t\tcolor=\"danger\"\r\n\t\t\t[outlined]=\"true\"\r\n\t\t\t[label]=\"translocoService.translate('cancel')\"\r\n\t\t\t[raised]=\"false\"\r\n\t\t\ticon=\"TIMES\"\r\n\t\t\t(clickEvent)=\"close()\" />\r\n\t\t<aril-button\r\n\t\t\t[label]=\"translocoService.translate('save')\"\r\n\t\t\tcolor=\"success\"\r\n\t\t\ticon=\"CHECK\"\r\n\t\t\tclass=\"ml-2\"\r\n\t\t\t(clickEvent)=\"save()\"\r\n\t\t\t[disabled]=\"isSaveDisabled()\" />\r\n\t</div>\r\n</div>\r\n", styles: [":host .value-input ::ng-deep input{width:100%}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: EnumPickerComponent, selector: "enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]", inputs: ["itemKey", "itemText", "groupName", "parentSelectionKey", "tabindex", "items", "isMultiple", "grouped", "showClearButton", "placeholder", "searchExpr", "acceptCustomValue", "useVirtualScroll", "virtualScrollItemSize", "scrollHeight", "selectedItemsLabel", "appendTo", "style", "styleClass", "tooltip", "tooltipPosition"], outputs: ["onSelectionChanged"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }] }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ArilLangModalComponent, isStandalone: true, selector: "aril-lang-modal", ngImport: i0, template: "<div>\r\n\t<aril-field\r\n\t\t[label]=\"translocoService.translate('translationModal.addLanguage')\"\r\n\t\t[cols]=\"{ default: 12 }\"\r\n\t\tclass=\"mb-4 block\">\r\n\t\t<enum-picker\r\n\t\t\t[(ngModel)]=\"selectedLanguages\"\r\n\t\t\t[items]=\"availableLanguages\"\r\n\t\t\t[isMultiple]=\"true\"\r\n\t\t\titemKey=\"code\"\r\n\t\t\titemText=\"name\" />\r\n\t</aril-field>\r\n\r\n\t@for (lang of selectedLanguages; track lang) {\r\n\t\t<div class=\"border-1 border-gray-300 border-round py-2 px-4 mb-2 flex justify-content-between items-center\">\r\n\t\t\t<aril-field labelPos=\"left\" [label]=\"getLabel(lang)\" [cols]=\"{ default: 12 }\" [labelWidth]=\"15\" [valueWidth]=\"85\">\r\n\t\t\t\t<aril-text class=\"value-input\" [(ngModel)]=\"translations[lang]\" />\r\n\t\t\t</aril-field>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<div class=\"mt-4\">\r\n\t\t@if (mandatoryLanguages.length && isSaveDisabled()) {\r\n\t\t\t<div class=\"mb-2\">\r\n\t\t\t\t<p-tag [value]=\"getInfoText()\" severity=\"info\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"mt-4 flex justify-content-end\">\r\n\t\t<aril-button\r\n\t\t\tcolor=\"danger\"\r\n\t\t\t[outlined]=\"true\"\r\n\t\t\t[label]=\"translocoService.translate('cancel')\"\r\n\t\t\t[raised]=\"false\"\r\n\t\t\ticon=\"TIMES\"\r\n\t\t\t(clickEvent)=\"close()\" />\r\n\t\t<aril-button\r\n\t\t\t[label]=\"translocoService.translate('save')\"\r\n\t\t\tcolor=\"success\"\r\n\t\t\ticon=\"CHECK\"\r\n\t\t\tclass=\"ml-2\"\r\n\t\t\t(clickEvent)=\"save()\"\r\n\t\t\t[disabled]=\"isSaveDisabled()\" />\r\n\t</div>\r\n</div>\r\n", styles: [":host .value-input ::ng-deep input{width:100%}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "aril-text[ngModel], aril-text[formControl], aril-text[formControlName]", inputs: ["placeholder", "tabindex", "icon", "iconPos", "size"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: ButtonComponent, selector: "aril-button:not([click])", inputs: ["label", "loading", "disabled", "raised", "rounded", "text", "outlined", "badge", "size", "icon", "iconPos", "color"], outputs: ["clickEvent"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "component", type: FieldComponent, selector: "aril-field", inputs: ["label", "color", "labelWidth", "valueWidth", "labelPos", "markAsRequired", "cols", "infoData", "infoDataOverlayPanel"] }, { kind: "component", type: EnumPickerComponent, selector: "enum-picker[ngModel], enum-picker[formControl], enum-picker[formControlName]", inputs: ["itemKey", "itemText", "groupName", "parentSelectionKey", "tabindex", "items", "isMultiple", "grouped", "showClearButton", "placeholder", "searchExpr", "acceptCustomValue", "textClampCharacters", "useVirtualScroll", "virtualScrollItemSize", "scrollHeight", "selectedItemsLabel", "appendTo", "style", "styleClass", "tooltip", "tooltipPosition"], outputs: ["onSelectionChanged"] }, { kind: "ngmodule", type: TagModule }, { kind: "component", type: i3.Tag, selector: "p-tag", inputs: ["style", "styleClass", "severity", "value", "icon", "rounded"] }] }); }
50
50
  }
51
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ArilLangModalComponent, decorators: [{
52
52
  type: Component,
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
61
61
  TagModule
62
62
  ], standalone: true, template: "<div>\r\n\t<aril-field\r\n\t\t[label]=\"translocoService.translate('translationModal.addLanguage')\"\r\n\t\t[cols]=\"{ default: 12 }\"\r\n\t\tclass=\"mb-4 block\">\r\n\t\t<enum-picker\r\n\t\t\t[(ngModel)]=\"selectedLanguages\"\r\n\t\t\t[items]=\"availableLanguages\"\r\n\t\t\t[isMultiple]=\"true\"\r\n\t\t\titemKey=\"code\"\r\n\t\t\titemText=\"name\" />\r\n\t</aril-field>\r\n\r\n\t@for (lang of selectedLanguages; track lang) {\r\n\t\t<div class=\"border-1 border-gray-300 border-round py-2 px-4 mb-2 flex justify-content-between items-center\">\r\n\t\t\t<aril-field labelPos=\"left\" [label]=\"getLabel(lang)\" [cols]=\"{ default: 12 }\" [labelWidth]=\"15\" [valueWidth]=\"85\">\r\n\t\t\t\t<aril-text class=\"value-input\" [(ngModel)]=\"translations[lang]\" />\r\n\t\t\t</aril-field>\r\n\t\t</div>\r\n\t}\r\n\r\n\t<div class=\"mt-4\">\r\n\t\t@if (mandatoryLanguages.length && isSaveDisabled()) {\r\n\t\t\t<div class=\"mb-2\">\r\n\t\t\t\t<p-tag [value]=\"getInfoText()\" severity=\"info\" />\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\r\n\t<div class=\"mt-4 flex justify-content-end\">\r\n\t\t<aril-button\r\n\t\t\tcolor=\"danger\"\r\n\t\t\t[outlined]=\"true\"\r\n\t\t\t[label]=\"translocoService.translate('cancel')\"\r\n\t\t\t[raised]=\"false\"\r\n\t\t\ticon=\"TIMES\"\r\n\t\t\t(clickEvent)=\"close()\" />\r\n\t\t<aril-button\r\n\t\t\t[label]=\"translocoService.translate('save')\"\r\n\t\t\tcolor=\"success\"\r\n\t\t\ticon=\"CHECK\"\r\n\t\t\tclass=\"ml-2\"\r\n\t\t\t(clickEvent)=\"save()\"\r\n\t\t\t[disabled]=\"isSaveDisabled()\" />\r\n\t</div>\r\n</div>\r\n", styles: [":host .value-input ::ng-deep input{width:100%}\n"] }]
63
63
  }], ctorParameters: () => [{ type: i1.DynamicDialogConfig }, { type: i1.DynamicDialogRef }] });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFrQnhDLE1BQU0sT0FBTyxzQkFBc0I7SUFPbEMsWUFDUSxNQUEwQyxFQUMxQyxHQUFxQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUMxQyxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQVI3QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxzQkFBaUIsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsaUJBQVksR0FBc0IsRUFBRSxDQUFDO1FBQ3JDLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQU1qQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEQsOENBQThDO1FBQzlDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqSCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDcEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztJQUN6RSxDQUFDO0lBRUQsY0FBYztRQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFRCxXQUFXO1FBQ1YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLHFDQUFxQyxFQUFFO1lBQzdFLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNqRixDQUFDLENBQUM7SUFDSixDQUFDOzhHQXRDVyxzQkFBc0I7a0dBQXRCLHNCQUFzQiwyRUNsQ25DLDBoREE4Q0EsMEdEekJFLGFBQWEsa0xBQ2IsV0FBVyw4VkFDWCxZQUFZLCtCQUNaLGVBQWUsNk5BQ2YsZUFBZSwrQkFDZixjQUFjLHlMQUNkLG1CQUFtQixvZUFDbkIsU0FBUzs7MkZBTUUsc0JBQXNCO2tCQWhCbEMsU0FBUzsrQkFDQyxpQkFBaUIsV0FDbEI7d0JBQ1IsYUFBYTt3QkFDYixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixTQUFTO3FCQUNULGNBQ1csSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgVGFnTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWcnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuaW1wb3J0IHsgRW51bVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWktYnVzaW5lc3MvZW51bVBpY2tlcic7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgRmllbGRDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2ZpZWxkJztcclxuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvdGV4dCc7XHJcblxyXG5pbXBvcnQgeyBMYW5nTW9kYWxEYXRhLCBUcmFuc2xhdGlvbk9iamVjdCB9IGZyb20gJy4uL2ludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFMTF9MQU5HUyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXJpbC1sYW5nLW1vZGFsJyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRUZXh0Q29tcG9uZW50LFxyXG5cdFx0Rm9ybXNNb2R1bGUsXHJcblx0XHRDb21tb25Nb2R1bGUsXHJcblx0XHRCdXR0b25Db21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRGaWVsZENvbXBvbmVudCxcclxuXHRcdEVudW1QaWNrZXJDb21wb25lbnQsXHJcblx0XHRUYWdNb2R1bGVcclxuXHRdLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0dGVtcGxhdGVVcmw6ICdhcmlsLWxhbmctbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWydhcmlsLWxhbmctbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJpbExhbmdNb2RhbENvbXBvbmVudCB7XHJcblx0dHJhbnNsb2NvU2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcclxuXHRzZWxlY3RlZExhbmd1YWdlczogc3RyaW5nW10gPSBbJ3RyJywgJ2VuJ107XHJcblx0YXZhaWxhYmxlTGFuZ3VhZ2VzID0gQUxMX0xBTkdTO1xyXG5cdHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3QgPSB7fTtcclxuXHRtYW5kYXRvcnlMYW5ndWFnZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZzxMYW5nTW9kYWxEYXRhPixcclxuXHRcdHB1YmxpYyByZWY6IER5bmFtaWNEaWFsb2dSZWZcclxuXHQpIHtcclxuXHRcdHRoaXMudHJhbnNsYXRpb25zID0geyAuLi50aGlzLmNvbmZpZy5kYXRhPy50cmFuc2xhdGlvbnMgfTtcclxuXHRcdHRoaXMubWFuZGF0b3J5TGFuZ3VhZ2VzID0gdGhpcy5jb25maWcuZGF0YT8ubWFuZGF0b3J5TGFuZ3VhZ2VzIHx8IFtdO1xyXG5cdH1cclxuXHJcblx0c2F2ZSgpIHtcclxuXHRcdGNvbnN0IGFsbG93ZWQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRMYW5ndWFnZXMpO1xyXG5cdFx0Ly8gb25seSBvdXRwdXQgdGhlIGxhbmd1YWdlcyB0aGF0IGFyZSBzZWxlY3RlZFxyXG5cdFx0Y29uc3Qgb3V0cHV0VHJhbnNsYXRpb25zID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMudHJhbnNsYXRpb25zKS5maWx0ZXIoKFtrXSkgPT4gYWxsb3dlZC5oYXMoaykpKTtcclxuXHRcdHRoaXMucmVmLmNsb3NlKG91dHB1dFRyYW5zbGF0aW9ucyk7XHJcblx0fVxyXG5cclxuXHRjbG9zZSgpIHtcclxuXHRcdHRoaXMucmVmLmNsb3NlKCk7XHJcblx0fVxyXG5cclxuXHRnZXRMYWJlbChjb2RlOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcy5maW5kKChsYW5nKSA9PiBsYW5nLmNvZGUgPT09IGNvZGUpPy5uYW1lO1xyXG5cdH1cclxuXHJcblx0aXNTYXZlRGlzYWJsZWQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5tYW5kYXRvcnlMYW5ndWFnZXM/LnNvbWUoKGxhbmcpID0+ICF0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmcpIHx8ICF0aGlzLnRyYW5zbGF0aW9uc1tsYW5nXSk7XHJcblx0fVxyXG5cclxuXHRnZXRJbmZvVGV4dCgpIHtcclxuXHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0cmFuc2xhdGlvbk1vZGFsLm1hbmRhdG9yeUxhbmd1YWdlcycsIHtcclxuXHRcdFx0bGFuZ3VhZ2VzOiB0aGlzLm1hbmRhdG9yeUxhbmd1YWdlcz8ubWFwKChsYW5nKSA9PiB0aGlzLmdldExhYmVsKGxhbmcpKS5qb2luKCcsICcpXHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdj5cclxuXHQ8YXJpbC1maWVsZFxyXG5cdFx0W2xhYmVsXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0cmFuc2xhdGlvbk1vZGFsLmFkZExhbmd1YWdlJylcIlxyXG5cdFx0W2NvbHNdPVwieyBkZWZhdWx0OiAxMiB9XCJcclxuXHRcdGNsYXNzPVwibWItNCBibG9ja1wiPlxyXG5cdFx0PGVudW0tcGlja2VyXHJcblx0XHRcdFsobmdNb2RlbCldPVwic2VsZWN0ZWRMYW5ndWFnZXNcIlxyXG5cdFx0XHRbaXRlbXNdPVwiYXZhaWxhYmxlTGFuZ3VhZ2VzXCJcclxuXHRcdFx0W2lzTXVsdGlwbGVdPVwidHJ1ZVwiXHJcblx0XHRcdGl0ZW1LZXk9XCJjb2RlXCJcclxuXHRcdFx0aXRlbVRleHQ9XCJuYW1lXCIgLz5cclxuXHQ8L2FyaWwtZmllbGQ+XHJcblxyXG5cdEBmb3IgKGxhbmcgb2Ygc2VsZWN0ZWRMYW5ndWFnZXM7IHRyYWNrIGxhbmcpIHtcclxuXHRcdDxkaXYgY2xhc3M9XCJib3JkZXItMSBib3JkZXItZ3JheS0zMDAgYm9yZGVyLXJvdW5kIHB5LTIgcHgtNCBtYi0yIGZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdDxhcmlsLWZpZWxkIGxhYmVsUG9zPVwibGVmdFwiIFtsYWJlbF09XCJnZXRMYWJlbChsYW5nKVwiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiIFtsYWJlbFdpZHRoXT1cIjE1XCIgW3ZhbHVlV2lkdGhdPVwiODVcIj5cclxuXHRcdFx0XHQ8YXJpbC10ZXh0IGNsYXNzPVwidmFsdWUtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInRyYW5zbGF0aW9uc1tsYW5nXVwiIC8+XHJcblx0XHRcdDwvYXJpbC1maWVsZD5cclxuXHRcdDwvZGl2PlxyXG5cdH1cclxuXHJcblx0PGRpdiBjbGFzcz1cIm10LTRcIj5cclxuXHRcdEBpZiAobWFuZGF0b3J5TGFuZ3VhZ2VzLmxlbmd0aCAmJiBpc1NhdmVEaXNhYmxlZCgpKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcblx0XHRcdFx0PHAtdGFnIFt2YWx1ZV09XCJnZXRJbmZvVGV4dCgpXCIgc2V2ZXJpdHk9XCJpbmZvXCIgLz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJtdC00IGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG5cdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdGNvbG9yPVwiZGFuZ2VyXCJcclxuXHRcdFx0W291dGxpbmVkXT1cInRydWVcIlxyXG5cdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2NhbmNlbCcpXCJcclxuXHRcdFx0W3JhaXNlZF09XCJmYWxzZVwiXHJcblx0XHRcdGljb249XCJUSU1FU1wiXHJcblx0XHRcdChjbGlja0V2ZW50KT1cImNsb3NlKClcIiAvPlxyXG5cdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFtsYWJlbF09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnc2F2ZScpXCJcclxuXHRcdFx0Y29sb3I9XCJzdWNjZXNzXCJcclxuXHRcdFx0aWNvbj1cIkNIRUNLXCJcclxuXHRcdFx0Y2xhc3M9XCJtbC0yXCJcclxuXHRcdFx0KGNsaWNrRXZlbnQpPVwic2F2ZSgpXCJcclxuXHRcdFx0W2Rpc2FibGVkXT1cImlzU2F2ZURpc2FibGVkKClcIiAvPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWkvdHJhbnNsYXRlLWlucHV0L3NyYy9hcmlsLWxhbmctbW9kYWwvYXJpbC1sYW5nLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXRFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7QUFrQnhDLE1BQU0sT0FBTyxzQkFBc0I7SUFPbEMsWUFDUSxNQUEwQyxFQUMxQyxHQUFxQjtRQURyQixXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUMxQyxRQUFHLEdBQUgsR0FBRyxDQUFrQjtRQVI3QixxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxzQkFBaUIsR0FBYSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMzQyx1QkFBa0IsR0FBRyxTQUFTLENBQUM7UUFDL0IsaUJBQVksR0FBc0IsRUFBRSxDQUFDO1FBQ3JDLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQU1qQyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLElBQUksRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEQsOENBQThDO1FBQzlDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqSCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxLQUFLO1FBQ0osSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDcEIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztJQUN6RSxDQUFDO0lBRUQsY0FBYztRQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BILENBQUM7SUFFRCxXQUFXO1FBQ1YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLHFDQUFxQyxFQUFFO1lBQzdFLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNqRixDQUFDLENBQUM7SUFDSixDQUFDOzhHQXRDVyxzQkFBc0I7a0dBQXRCLHNCQUFzQiwyRUNsQ25DLDBoREE4Q0EsMEdEekJFLGFBQWEsa0xBQ2IsV0FBVyw4VkFDWCxZQUFZLCtCQUNaLGVBQWUsNk5BQ2YsZUFBZSwrQkFDZixjQUFjLHlMQUNkLG1CQUFtQiwyZkFDbkIsU0FBUzs7MkZBTUUsc0JBQXNCO2tCQWhCbEMsU0FBUzsrQkFDQyxpQkFBaUIsV0FDbEI7d0JBQ1IsYUFBYTt3QkFDYixXQUFXO3dCQUNYLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQixTQUFTO3FCQUNULGNBQ1csSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgVGFnTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90YWcnO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvTW9kdWxlLCBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuaW1wb3J0IHsgRW51bVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWktYnVzaW5lc3MvZW51bVBpY2tlcic7XHJcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgRmllbGRDb21wb25lbnQgfSBmcm9tICdhcmlsL3VpL2ZpZWxkJztcclxuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJ2FyaWwvdWkvdGV4dCc7XHJcblxyXG5pbXBvcnQgeyBMYW5nTW9kYWxEYXRhLCBUcmFuc2xhdGlvbk9iamVjdCB9IGZyb20gJy4uL2ludGVyZmFjZSc7XHJcbmltcG9ydCB7IEFMTF9MQU5HUyB9IGZyb20gJy4vY29uc3RhbnRzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXJpbC1sYW5nLW1vZGFsJyxcclxuXHRpbXBvcnRzOiBbXHJcblx0XHRUZXh0Q29tcG9uZW50LFxyXG5cdFx0Rm9ybXNNb2R1bGUsXHJcblx0XHRDb21tb25Nb2R1bGUsXHJcblx0XHRCdXR0b25Db21wb25lbnQsXHJcblx0XHRUcmFuc2xvY29Nb2R1bGUsXHJcblx0XHRGaWVsZENvbXBvbmVudCxcclxuXHRcdEVudW1QaWNrZXJDb21wb25lbnQsXHJcblx0XHRUYWdNb2R1bGVcclxuXHRdLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0dGVtcGxhdGVVcmw6ICdhcmlsLWxhbmctbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWydhcmlsLWxhbmctbW9kYWwuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXJpbExhbmdNb2RhbENvbXBvbmVudCB7XHJcblx0dHJhbnNsb2NvU2VydmljZSA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcclxuXHRzZWxlY3RlZExhbmd1YWdlczogc3RyaW5nW10gPSBbJ3RyJywgJ2VuJ107XHJcblx0YXZhaWxhYmxlTGFuZ3VhZ2VzID0gQUxMX0xBTkdTO1xyXG5cdHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3QgPSB7fTtcclxuXHRtYW5kYXRvcnlMYW5ndWFnZXM6IHN0cmluZ1tdID0gW107XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZzxMYW5nTW9kYWxEYXRhPixcclxuXHRcdHB1YmxpYyByZWY6IER5bmFtaWNEaWFsb2dSZWZcclxuXHQpIHtcclxuXHRcdHRoaXMudHJhbnNsYXRpb25zID0geyAuLi50aGlzLmNvbmZpZy5kYXRhPy50cmFuc2xhdGlvbnMgfTtcclxuXHRcdHRoaXMubWFuZGF0b3J5TGFuZ3VhZ2VzID0gdGhpcy5jb25maWcuZGF0YT8ubWFuZGF0b3J5TGFuZ3VhZ2VzIHx8IFtdO1xyXG5cdH1cclxuXHJcblx0c2F2ZSgpIHtcclxuXHRcdGNvbnN0IGFsbG93ZWQgPSBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRMYW5ndWFnZXMpO1xyXG5cdFx0Ly8gb25seSBvdXRwdXQgdGhlIGxhbmd1YWdlcyB0aGF0IGFyZSBzZWxlY3RlZFxyXG5cdFx0Y29uc3Qgb3V0cHV0VHJhbnNsYXRpb25zID0gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKHRoaXMudHJhbnNsYXRpb25zKS5maWx0ZXIoKFtrXSkgPT4gYWxsb3dlZC5oYXMoaykpKTtcclxuXHRcdHRoaXMucmVmLmNsb3NlKG91dHB1dFRyYW5zbGF0aW9ucyk7XHJcblx0fVxyXG5cclxuXHRjbG9zZSgpIHtcclxuXHRcdHRoaXMucmVmLmNsb3NlKCk7XHJcblx0fVxyXG5cclxuXHRnZXRMYWJlbChjb2RlOiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcy5maW5kKChsYW5nKSA9PiBsYW5nLmNvZGUgPT09IGNvZGUpPy5uYW1lO1xyXG5cdH1cclxuXHJcblx0aXNTYXZlRGlzYWJsZWQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5tYW5kYXRvcnlMYW5ndWFnZXM/LnNvbWUoKGxhbmcpID0+ICF0aGlzLnNlbGVjdGVkTGFuZ3VhZ2VzLmluY2x1ZGVzKGxhbmcpIHx8ICF0aGlzLnRyYW5zbGF0aW9uc1tsYW5nXSk7XHJcblx0fVxyXG5cclxuXHRnZXRJbmZvVGV4dCgpIHtcclxuXHRcdHJldHVybiB0aGlzLnRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0cmFuc2xhdGlvbk1vZGFsLm1hbmRhdG9yeUxhbmd1YWdlcycsIHtcclxuXHRcdFx0bGFuZ3VhZ2VzOiB0aGlzLm1hbmRhdG9yeUxhbmd1YWdlcz8ubWFwKChsYW5nKSA9PiB0aGlzLmdldExhYmVsKGxhbmcpKS5qb2luKCcsICcpXHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIiwiPGRpdj5cclxuXHQ8YXJpbC1maWVsZFxyXG5cdFx0W2xhYmVsXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCd0cmFuc2xhdGlvbk1vZGFsLmFkZExhbmd1YWdlJylcIlxyXG5cdFx0W2NvbHNdPVwieyBkZWZhdWx0OiAxMiB9XCJcclxuXHRcdGNsYXNzPVwibWItNCBibG9ja1wiPlxyXG5cdFx0PGVudW0tcGlja2VyXHJcblx0XHRcdFsobmdNb2RlbCldPVwic2VsZWN0ZWRMYW5ndWFnZXNcIlxyXG5cdFx0XHRbaXRlbXNdPVwiYXZhaWxhYmxlTGFuZ3VhZ2VzXCJcclxuXHRcdFx0W2lzTXVsdGlwbGVdPVwidHJ1ZVwiXHJcblx0XHRcdGl0ZW1LZXk9XCJjb2RlXCJcclxuXHRcdFx0aXRlbVRleHQ9XCJuYW1lXCIgLz5cclxuXHQ8L2FyaWwtZmllbGQ+XHJcblxyXG5cdEBmb3IgKGxhbmcgb2Ygc2VsZWN0ZWRMYW5ndWFnZXM7IHRyYWNrIGxhbmcpIHtcclxuXHRcdDxkaXYgY2xhc3M9XCJib3JkZXItMSBib3JkZXItZ3JheS0zMDAgYm9yZGVyLXJvdW5kIHB5LTIgcHgtNCBtYi0yIGZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gaXRlbXMtY2VudGVyXCI+XHJcblx0XHRcdDxhcmlsLWZpZWxkIGxhYmVsUG9zPVwibGVmdFwiIFtsYWJlbF09XCJnZXRMYWJlbChsYW5nKVwiIFtjb2xzXT1cInsgZGVmYXVsdDogMTIgfVwiIFtsYWJlbFdpZHRoXT1cIjE1XCIgW3ZhbHVlV2lkdGhdPVwiODVcIj5cclxuXHRcdFx0XHQ8YXJpbC10ZXh0IGNsYXNzPVwidmFsdWUtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInRyYW5zbGF0aW9uc1tsYW5nXVwiIC8+XHJcblx0XHRcdDwvYXJpbC1maWVsZD5cclxuXHRcdDwvZGl2PlxyXG5cdH1cclxuXHJcblx0PGRpdiBjbGFzcz1cIm10LTRcIj5cclxuXHRcdEBpZiAobWFuZGF0b3J5TGFuZ3VhZ2VzLmxlbmd0aCAmJiBpc1NhdmVEaXNhYmxlZCgpKSB7XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJtYi0yXCI+XHJcblx0XHRcdFx0PHAtdGFnIFt2YWx1ZV09XCJnZXRJbmZvVGV4dCgpXCIgc2V2ZXJpdHk9XCJpbmZvXCIgLz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHR9XHJcblx0PC9kaXY+XHJcblxyXG5cdDxkaXYgY2xhc3M9XCJtdC00IGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG5cdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdGNvbG9yPVwiZGFuZ2VyXCJcclxuXHRcdFx0W291dGxpbmVkXT1cInRydWVcIlxyXG5cdFx0XHRbbGFiZWxdPVwidHJhbnNsb2NvU2VydmljZS50cmFuc2xhdGUoJ2NhbmNlbCcpXCJcclxuXHRcdFx0W3JhaXNlZF09XCJmYWxzZVwiXHJcblx0XHRcdGljb249XCJUSU1FU1wiXHJcblx0XHRcdChjbGlja0V2ZW50KT1cImNsb3NlKClcIiAvPlxyXG5cdFx0PGFyaWwtYnV0dG9uXHJcblx0XHRcdFtsYWJlbF09XCJ0cmFuc2xvY29TZXJ2aWNlLnRyYW5zbGF0ZSgnc2F2ZScpXCJcclxuXHRcdFx0Y29sb3I9XCJzdWNjZXNzXCJcclxuXHRcdFx0aWNvbj1cIkNIRUNLXCJcclxuXHRcdFx0Y2xhc3M9XCJtbC0yXCJcclxuXHRcdFx0KGNsaWNrRXZlbnQpPVwic2F2ZSgpXCJcclxuXHRcdFx0W2Rpc2FibGVkXT1cImlzU2F2ZURpc2FibGVkKClcIiAvPlxyXG5cdDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -111,7 +111,11 @@ export class AssetPickerComponent extends BaseInputComponent {
111
111
  return value;
112
112
  }
113
113
  search(event) {
114
+ if (!event?.query || typeof event.query !== 'string')
115
+ return;
114
116
  const query = this.validateInput(event.query);
117
+ if (!query?.trim())
118
+ return;
115
119
  const payload = {
116
120
  searchText: query?.trim(),
117
121
  assetDefinitionCodes: Array.isArray(this.assetCode()) ? this.assetCode() : [this.assetCode()],
@@ -172,15 +176,15 @@ export class AssetPickerComponent extends BaseInputComponent {
172
176
  this.selectedDefinitionEvent.emit(selectedEvent);
173
177
  }
174
178
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AssetPickerComponent, deps: [{ token: i1.HttpClient }, { token: i2.TranslocoService }, { token: i3.SelectionGroupService }], target: i0.ɵɵFactoryTarget.Component }); }
175
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AssetPickerComponent, isStandalone: true, selector: "aril-asset-picker[ngModel], aril-asset-picker[formControl], aril-asset-picker[formControlName]", inputs: { assetCode: { classPropertyName: "assetCode", publicName: "assetCode", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, forceSelection: { classPropertyName: "forceSelection", publicName: "forceSelection", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, mql: { classPropertyName: "mql", publicName: "mql", isSignal: true, isRequired: false, transformFunction: null }, showOnlyAssetNumber: { classPropertyName: "showOnlyAssetNumber", publicName: "showOnlyAssetNumber", isSignal: true, isRequired: false, transformFunction: null }, enableAutoSearchOnInit: { classPropertyName: "enableAutoSearchOnInit", publicName: "enableAutoSearchOnInit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDefinitionEvent: "selectedDefinitionEvent" }, viewQueries: [{ propertyName: "autoCompleteRef", first: true, predicate: AutoComplete, descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i4.ValueAccessorDirective }], ngImport: i0, template: "<p-autoComplete\r\n\toptionLabel=\"text\"\r\n\t[optionValue]=\"optionValue()!\"\r\n\t[placeholder]=\"placeholder()\"\r\n\t[multiple]=\"multiple()\"\r\n\t[group]=\"true\"\r\n\t[forceSelection]=\"forceSelection()\"\r\n\t[delay]=\"700\"\r\n\t[minLength]=\"3\"\r\n\t[suggestions]=\"filteredSelectionItems\"\r\n\t(completeMethod)=\"search($event)\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t[autoHighlight]=\"true\"\r\n\t[type]=\"type()!\"\r\n\t(ngModelChange)=\"onNgModelChange($event)\"\r\n\t[showClear]=\"showClear()\"\r\n\t[emptyMessage]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n\t(onSelect)=\"triggerSelectedEvents($event)\"\r\n\t[appendTo]=\"appendTo()\"\r\n\t(keyup.enter)=\"search($event)\">\r\n\t<ng-template let-group pTemplate=\"group\">\r\n\t\t<span class=\"font-bold\">{{ group.text }}</span>\r\n\t</ng-template>\r\n\t@if (showOnlyAssetNumber()) {\r\n\t\t<ng-template let-value pTemplate=\"selectedItem\">\r\n\t\t\t<span>{{ value?.assetNumber || value?.text }}</span>\r\n\t\t</ng-template>\r\n\t}\r\n</p-autoComplete>\r\n", styles: ["::ng-deep .p-autocomplete-multiple-container{flex-wrap:wrap;max-height:50px;overflow-y:auto;align-items:center}::ng-deep .p-autocomplete-token{margin:0;flex-shrink:0}::ng-deep .p-autocomplete-input-token{flex:1;min-width:150px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i6.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
179
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AssetPickerComponent, isStandalone: true, selector: "aril-asset-picker[ngModel], aril-asset-picker[formControl], aril-asset-picker[formControlName]", inputs: { assetCode: { classPropertyName: "assetCode", publicName: "assetCode", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, forceSelection: { classPropertyName: "forceSelection", publicName: "forceSelection", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null }, mql: { classPropertyName: "mql", publicName: "mql", isSignal: true, isRequired: false, transformFunction: null }, showOnlyAssetNumber: { classPropertyName: "showOnlyAssetNumber", publicName: "showOnlyAssetNumber", isSignal: true, isRequired: false, transformFunction: null }, enableAutoSearchOnInit: { classPropertyName: "enableAutoSearchOnInit", publicName: "enableAutoSearchOnInit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedDefinitionEvent: "selectedDefinitionEvent" }, viewQueries: [{ propertyName: "autoCompleteRef", first: true, predicate: AutoComplete, descendants: true }], usesInheritance: true, hostDirectives: [{ directive: i4.ValueAccessorDirective }], ngImport: i0, template: "<p-autoComplete\r\n\toptionLabel=\"text\"\r\n\t[optionValue]=\"optionValue()!\"\r\n\t[placeholder]=\"placeholder()\"\r\n\t[multiple]=\"multiple()\"\r\n\t[group]=\"true\"\r\n\t[forceSelection]=\"forceSelection()\"\r\n\t[delay]=\"700\"\r\n\t[minLength]=\"3\"\r\n\t[suggestions]=\"filteredSelectionItems\"\r\n\t(completeMethod)=\"search($event)\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t[autoHighlight]=\"true\"\r\n\t[type]=\"type()!\"\r\n\t(ngModelChange)=\"onNgModelChange($event)\"\r\n\t[showClear]=\"showClear()\"\r\n\t[emptyMessage]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n\t(onSelect)=\"triggerSelectedEvents($event)\"\r\n\t[appendTo]=\"appendTo()\">\r\n\t<ng-template let-group pTemplate=\"group\">\r\n\t\t<span class=\"font-bold\">{{ group.text }}</span>\r\n\t</ng-template>\r\n\t@if (showOnlyAssetNumber()) {\r\n\t\t<ng-template let-value pTemplate=\"selectedItem\">\r\n\t\t\t<span>{{ value?.assetNumber || value?.text }}</span>\r\n\t\t</ng-template>\r\n\t}\r\n</p-autoComplete>\r\n", styles: ["::ng-deep .p-autocomplete-multiple-container{flex-wrap:wrap;max-height:50px;overflow-y:auto;align-items:center}::ng-deep .p-autocomplete-token{margin:0;flex-shrink:0}::ng-deep .p-autocomplete-input-token{flex:1;min-width:150px}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i6.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
176
180
  }
177
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AssetPickerComponent, decorators: [{
178
182
  type: Component,
179
- args: [{ standalone: true, selector: 'aril-asset-picker[ngModel], aril-asset-picker[formControl], aril-asset-picker[formControlName]', imports: [ReactiveFormsModule, AutoCompleteModule], hostDirectives: [ValueAccessorDirective], template: "<p-autoComplete\r\n\toptionLabel=\"text\"\r\n\t[optionValue]=\"optionValue()!\"\r\n\t[placeholder]=\"placeholder()\"\r\n\t[multiple]=\"multiple()\"\r\n\t[group]=\"true\"\r\n\t[forceSelection]=\"forceSelection()\"\r\n\t[delay]=\"700\"\r\n\t[minLength]=\"3\"\r\n\t[suggestions]=\"filteredSelectionItems\"\r\n\t(completeMethod)=\"search($event)\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t[autoHighlight]=\"true\"\r\n\t[type]=\"type()!\"\r\n\t(ngModelChange)=\"onNgModelChange($event)\"\r\n\t[showClear]=\"showClear()\"\r\n\t[emptyMessage]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n\t(onSelect)=\"triggerSelectedEvents($event)\"\r\n\t[appendTo]=\"appendTo()\"\r\n\t(keyup.enter)=\"search($event)\">\r\n\t<ng-template let-group pTemplate=\"group\">\r\n\t\t<span class=\"font-bold\">{{ group.text }}</span>\r\n\t</ng-template>\r\n\t@if (showOnlyAssetNumber()) {\r\n\t\t<ng-template let-value pTemplate=\"selectedItem\">\r\n\t\t\t<span>{{ value?.assetNumber || value?.text }}</span>\r\n\t\t</ng-template>\r\n\t}\r\n</p-autoComplete>\r\n", styles: ["::ng-deep .p-autocomplete-multiple-container{flex-wrap:wrap;max-height:50px;overflow-y:auto;align-items:center}::ng-deep .p-autocomplete-token{margin:0;flex-shrink:0}::ng-deep .p-autocomplete-input-token{flex:1;min-width:150px}\n"] }]
183
+ args: [{ standalone: true, selector: 'aril-asset-picker[ngModel], aril-asset-picker[formControl], aril-asset-picker[formControlName]', imports: [ReactiveFormsModule, AutoCompleteModule], hostDirectives: [ValueAccessorDirective], template: "<p-autoComplete\r\n\toptionLabel=\"text\"\r\n\t[optionValue]=\"optionValue()!\"\r\n\t[placeholder]=\"placeholder()\"\r\n\t[multiple]=\"multiple()\"\r\n\t[group]=\"true\"\r\n\t[forceSelection]=\"forceSelection()\"\r\n\t[delay]=\"700\"\r\n\t[minLength]=\"3\"\r\n\t[suggestions]=\"filteredSelectionItems\"\r\n\t(completeMethod)=\"search($event)\"\r\n\t[formControl]=\"ngControl.control\"\r\n\t[autoHighlight]=\"true\"\r\n\t[type]=\"type()!\"\r\n\t(ngModelChange)=\"onNgModelChange($event)\"\r\n\t[showClear]=\"showClear()\"\r\n\t[emptyMessage]=\"translocoService.translate('messages.noDataToDisplay')\"\r\n\t(onSelect)=\"triggerSelectedEvents($event)\"\r\n\t[appendTo]=\"appendTo()\">\r\n\t<ng-template let-group pTemplate=\"group\">\r\n\t\t<span class=\"font-bold\">{{ group.text }}</span>\r\n\t</ng-template>\r\n\t@if (showOnlyAssetNumber()) {\r\n\t\t<ng-template let-value pTemplate=\"selectedItem\">\r\n\t\t\t<span>{{ value?.assetNumber || value?.text }}</span>\r\n\t\t</ng-template>\r\n\t}\r\n</p-autoComplete>\r\n", styles: ["::ng-deep .p-autocomplete-multiple-container{flex-wrap:wrap;max-height:50px;overflow-y:auto;align-items:center}::ng-deep .p-autocomplete-token{margin:0;flex-shrink:0}::ng-deep .p-autocomplete-input-token{flex:1;min-width:150px}\n"] }]
180
184
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.TranslocoService }, { type: i3.SelectionGroupService }], propDecorators: { autoCompleteRef: [{
181
185
  type: ViewChild,
182
186
  args: [AutoComplete]
183
187
  }], selectedDefinitionEvent: [{
184
188
  type: Output
185
189
  }] } });
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvYXNzZXRQaWNrZXIvc3JjL2Fzc2V0LXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL2Fzc2V0UGlja2VyL3NyYy9hc3NldC1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUVOLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7QUF1Q3pFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxrQkFBa0I7SUFzQjNELFlBQ2tCLElBQWdCLEVBQzFCLGdCQUFrQyxFQUN4QixxQkFBNEM7UUFFN0QsS0FBSyxFQUFFLENBQUM7UUFKUyxTQUFJLEdBQUosSUFBSSxD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QkFDbEMsQ0FBQyxzQkFBc0IsQ0FBQztrSkFHZixlQUFlO3NCQUF2QyxTQUFTO3VCQUFDLFlBQVk7Z0JBbUJiLHVCQUF1QjtzQkFBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7XHJcblx0QWZ0ZXJWaWV3SW5pdCxcclxuXHRDb21wb25lbnQsXHJcblx0RGVzdHJveVJlZixcclxuXHRFdmVudEVtaXR0ZXIsXHJcblx0T25Jbml0LFxyXG5cdE91dHB1dCxcclxuXHRWaWV3Q2hpbGQsXHJcblx0ZWZmZWN0LFxyXG5cdGluamVjdCxcclxuXHRpbnB1dCxcclxuXHRzaWduYWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuaW1wb3J0IHsgQXV0b0NvbXBsZXRlLCBBdXRvQ29tcGxldGVNb2R1bGUgfSBmcm9tICdwcmltZW5nL2F1dG9jb21wbGV0ZSc7XHJcbmltcG9ydCB7IE9iamVjdFV0aWxzIH0gZnJvbSAncHJpbWVuZy91dGlscyc7XHJcblxyXG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEFQSV9DT05GSUdTIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcGknO1xyXG5pbXBvcnQgeyBBcHBzIH0gZnJvbSAnYXJpbC9ib290L2NvbmZpZy9hcHBzJztcclxuaW1wb3J0IHsgU2VsZWN0aW9uR3JvdXBTZXJ2aWNlIH0gZnJvbSAnYXJpbC90aGVtZS9sYXlvdXQnO1xyXG5pbXBvcnQgeyBCYXNlSW5wdXRDb21wb25lbnQsIFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUgfSBmcm9tICdhcmlsL3VpL2xpYic7XHJcblxyXG5pbXBvcnQge1xyXG5cdEFzc2V0QWdncmVnYXRlLFxyXG5cdEF0dHJpYnV0ZUVsZW1lbnQsXHJcblx0Q2FjaGVTZWFyY2hSZXF1ZXN0RFRPLFxyXG5cdERlZmF1bHRTZWFyY2hBZ2dyZWdhdGVBc3NldEFnZ3JlZ2F0ZSxcclxuXHRTdWdnZXN0aW9uc0RUTyxcclxuXHRTdWdnZXN0aW9uc0dyb3VwRFRPXHJcbn0gZnJvbSAnLi9pbnRlcmZhY2UnO1xyXG5cclxudHlwZSBWYWx1ZVR5cGVzID0gJ3RleHQnIHwgJ251bWJlcic7XHJcbkBDb21wb25lbnQoe1xyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0c2VsZWN0b3I6ICdhcmlsLWFzc2V0LXBpY2tlcltuZ01vZGVsXSwgYXJpbC1hc3NldC1waWNrZXJbZm9ybUNvbnRyb2xdLCBhcmlsLWFzc2V0LXBpY2tlcltmb3JtQ29udHJvbE5hbWVdJyxcclxuXHR0ZW1wbGF0ZVVybDogJy4vYXNzZXQtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZXM6IFtcclxuXHRcdGBcclxuXHRcdFx0OjpuZy1kZWVwIC5wLWF1dG9jb21wbGV0ZS1tdWx0aXBsZS1jb250YWluZXIge1xyXG5cdFx0XHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHRcdFx0XHRtYXgtaGVpZ2h0OiA1MHB4O1xyXG5cdFx0XHRcdG92ZXJmbG93LXk6IGF1dG87XHJcblx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0OjpuZy1kZWVwIC5wLWF1dG9jb21wbGV0ZS10b2tlbiB7XHJcblx0XHRcdFx0bWFyZ2luOiAwO1xyXG5cdFx0XHRcdGZsZXgtc2hyaW5rOiAwO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQ6Om5nLWRlZXAgLnAtYXV0b2NvbXBsZXRlLWlucHV0LXRva2VuIHtcclxuXHRcdFx0XHRmbGV4OiAxO1xyXG5cdFx0XHRcdG1pbi13aWR0aDogMTUwcHg7XHJcblx0XHRcdH1cclxuXHRcdGBcclxuXHRdLFxyXG5cdGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBBdXRvQ29tcGxldGVNb2R1bGVdLFxyXG5cdGhvc3REaXJlY3RpdmVzOiBbVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2V0UGlja2VyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcclxuXHRAVmlld0NoaWxkKEF1dG9Db21wbGV0ZSkgYXV0b0NvbXBsZXRlUmVmITogQXV0b0NvbXBsZXRlO1xyXG5cdGFzc2V0Q29kZSA9IGlucHV0PHN0cmluZyB8IHN0cmluZ1tdIHwgbnVsbD4obnVsbCk7XHJcblx0dHlwZSA9IGlucHV0PFZhbHVlVHlwZXMgfCBudWxsPihudWxsKTtcclxuXHJcblx0cGxhY2Vob2xkZXIgPSBpbnB1dDxzdHJpbmc+KCdBcmFtYS4uLicpO1xyXG5cdGZvcmNlU2VsZWN0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdG11bHRpcGxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHNob3dDbGVhciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRvcHRpb25WYWx1ZSA9IGlucHV0PGtleW9mIFN1Z2dlc3Rpb25zRFRPIHwgbnVsbD4obnVsbCk7XHJcblx0YXBwZW5kVG8gPSBpbnB1dDxzdHJpbmcgfCBIVE1MRWxlbWVudCB8IG51bGw+KCdib2R5Jyk7XHJcblx0bXFsID0gaW5wdXQ8c3RyaW5nPigpO1xyXG5cdHNob3dPbmx5QXNzZXROdW1iZXIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0ZW5hYmxlQXV0b1NlYXJjaE9uSW5pdCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRpc1VwZGF0ZU1vZGUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuXHRmaWx0ZXJlZFNlbGVjdGlvbkl0ZW1zITogU3VnZ2VzdGlvbnNHcm91cERUT1tdO1xyXG5cdHNlbGVjdGlvbkRlZmluaXRpb25zITogRGVmYXVsdFNlYXJjaEFnZ3JlZ2F0ZUFzc2V0QWdncmVnYXRlO1xyXG5cdGNhY2hlU2VhcmNoUmVxdWVzdCQgPSBuZXcgU3ViamVjdDxDYWNoZVNlYXJjaFJlcXVlc3REVE8+KCk7XHJcblx0ZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcclxuXHRAT3V0cHV0KCkgc2VsZWN0ZWREZWZpbml0aW9uRXZlbnQ6IEV2ZW50RW1pdHRlcjxBc3NldEFnZ3JlZ2F0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPEFzc2V0QWdncmVnYXRlPigpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuXHRcdHB1YmxpYyB0cmFuc2xvY29TZXJ2aWNlOiBUcmFuc2xvY29TZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBzZWxlY3Rpb25Hcm91cFNlcnZpY2U6IFNlbGVjdGlvbkdyb3VwU2VydmljZVxyXG5cdCkge1xyXG5cdFx0c3VwZXIoKTtcclxuXHJcblx0XHRlZmZlY3QoKCkgPT4ge1xyXG5cdFx0XHR0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5zZWxlY3Rpb25Hcm91cHMoKTtcclxuXHRcdFx0aWYgKHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnMpIHtcclxuXHRcdFx0XHR0aGlzLnJlZnJlc2hGaWx0ZXJlZFNlbGVjdGlvbkl0ZW1zKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdHRoaXMuY2FjaGVTZWFyY2hSZXF1ZXN0JFxyXG5cdFx0XHQucGlwZShcclxuXHRcdFx0XHRzd2l0Y2hNYXAoKHBheWxvYWQpID0+XHJcblx0XHRcdFx0XHR0aGlzLmh0dHAucG9zdDxhbnk+KEFQSV9DT05GSUdTLmdldEV4dGVybmFsQXBwRW5kcG9pbnQoQXBwcy5NTkcpICsgJy9tYXN0ZXItZGF0YS9jYWNoZS1zZWFyY2gnLCBwYXlsb2FkKVxyXG5cdFx0XHRcdCksXHJcblx0XHRcdFx0dGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcclxuXHRcdFx0KVxyXG5cdFx0XHQuc3Vic2NyaWJlKChzZWxlY3Rpb25Hcm91cCkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnMgPSBzZWxlY3Rpb25Hcm91cDtcclxuXHRcdFx0XHR0aGlzLnJlZnJlc2hGaWx0ZXJlZFNlbGVjdGlvbkl0ZW1zKCk7XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdC8vIElmIHRoZSBmb3JtIGNvbnRyb2wncyB2YWx1ZSBpcyBhIHN0cmluZywgcGVyZm9ybSBhIGNhY2hlIHNlYXJjaCB0byByZXRyaWV2ZSB0aGUgSUQuXHJcblx0XHRjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udmFsdWU7XHJcblx0XHRpZiAodGhpcy5lbmFibGVBdXRvU2VhcmNoT25Jbml0KCkgfHwgKGN1cnJlbnRWYWx1ZSAmJiB0eXBlb2YgY3VycmVudFZhbHVlID09PSAnc3RyaW5nJykpIHtcclxuXHRcdFx0XHRjb25zdCBzZWFyY2hRdWVyeSA9IHR5cGVvZiBjdXJyZW50VmFsdWUgPT09ICdzdHJpbmcnID8gY3VycmVudFZhbHVlIDogY3VycmVudFZhbHVlPy50ZXh0O1xyXG5cdFx0XHRcdGlmIChzZWFyY2hRdWVyeSkge1xyXG5cdFx0XHRcdFx0dGhpcy5pc1VwZGF0ZU1vZGUuc2V0KHRydWUpO1xyXG5cdFx0XHRcdFx0dGhpcy5zZWFyY2goeyBxdWVyeTogc2VhcmNoUXVlcnkgfSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgcmVmcmVzaEZpbHRlcmVkU2VsZWN0aW9uSXRlbXMoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnMpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBuZXdGaWx0ZXJlZEdyb3VwU3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25zR3JvdXBEVE9bXSA9IFtdO1xyXG5cclxuXHRcdE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnMpLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XHJcblx0XHRcdGNvbnN0IGdyb3VwRGF0YTogU3VnZ2VzdGlvbnNHcm91cERUTyA9IHtcclxuXHRcdFx0XHR0ZXh0OiB0aGlzLnNlbGVjdGlvbkRlZmluaXRpb25zW2tleV0/LnJlc3VsdFswXT8uYXNzZXRzWzBdPy5hc3NldERlZmluaXRpb25OYW1lLFxyXG5cdFx0XHRcdGtleToga2V5LFxyXG5cdFx0XHRcdGl0ZW1zOiB0aGlzLnNlbGVjdGlvbkRlZmluaXRpb25zW2tleV0ucmVzdWx0Lm1hcChcclxuXHRcdFx0XHRcdChpdGVtOiBBc3NldEFnZ3JlZ2F0ZSkgPT5cclxuXHRcdFx0XHRcdFx0KHtcclxuXHRcdFx0XHRcdFx0XHRrZXk6IGl0ZW0uaWQsXHJcblx0XHRcdFx0XHRcdFx0dGV4dDogdGhpcy5nZXRBdHRpcmlidXRlc1ZhbHVlRGVzY3IoaXRlbS5hdHRyaWJ1dGVzKSxcclxuXHRcdFx0XHRcdFx0XHRhc3NldE51bWJlcjogdGhpcy5nZXRBc3NldE51bWJlclZhbHVlKGl0ZW0uYXR0cmlidXRlcyksXHJcblx0XHRcdFx0XHRcdFx0YXR0cmlidXRlczogaXRlbS5hdHRyaWJ1dGVzLFxyXG5cdFx0XHRcdFx0XHRcdGFzc2V0RGVmaW5pdGlvbkNvZGU6IGl0ZW0uYXNzZXREZWZpbml0aW9uQ29kZVxyXG5cdFx0XHRcdFx0XHR9KSBhcyBTdWdnZXN0aW9uc0RUT1xyXG5cdFx0XHRcdClcclxuXHRcdFx0fTtcclxuXHRcdFx0bmV3RmlsdGVyZWRHcm91cFN1Z2dlc3Rpb25zLnB1c2goZ3JvdXBEYXRhKTtcclxuXHJcblx0XHRcdC8vIElmIHRoZSBzdHJpbmcgdmFsdWUgaXMgcGF0Y2hlZCBpbiB1cGRhdGUgbW9kZSBhbmQgdGhlcmUgaXMgZ3JvdXAgZGF0YSwgc2VsZWN0IHRoZSBmaXJzdCBpdGVtXHJcblx0XHRcdGlmICh0aGlzLmlzVXBkYXRlTW9kZSgpICYmIGdyb3VwRGF0YS5pdGVtcy5sZW5ndGggPT09IDEgJiYgIXRoaXMubXVsdGlwbGUoKSkge1xyXG5cdFx0XHRcdHRoaXMubmdDb250cm9sPy5jb250cm9sPy5zZXRWYWx1ZShncm91cERhdGEuaXRlbXNbMF0pO1xyXG5cdFx0XHRcdHRoaXMuaXNVcGRhdGVNb2RlLnNldChmYWxzZSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuZmlsdGVyZWRTZWxlY3Rpb25JdGVtcyA9IG5ld0ZpbHRlcmVkR3JvdXBTdWdnZXN0aW9ucztcclxuXHR9XHJcblxyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuYXV0b0NvbXBsZXRlUmVmLmdldE9wdGlvblZhbHVlID0gdGhpcy5nZXRPcHRpb25WYWx1ZS5iaW5kKHRoaXMpO1xyXG5cdH1cclxuXHJcblx0Z2V0T3B0aW9uVmFsdWUob3B0aW9uOiBhbnkpIHtcclxuXHRcdGlmICghdGhpcy5vcHRpb25WYWx1ZSgpKSB7XHJcblx0XHRcdHJldHVybiBvcHRpb247XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHR5cGVvZiBvcHRpb24gPT09ICdvYmplY3QnKSB7XHJcblx0XHRcdHJldHVybiBPYmplY3RVdGlscy5yZXNvbHZlRmllbGREYXRhKG9wdGlvbiwgdGhpcy5vcHRpb25WYWx1ZSgpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gb3B0aW9uO1xyXG5cdH1cclxuXHJcblx0b25OZ01vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IHZhbGlkYXRlZFZhbHVlID0gdGhpcy52YWxpZGF0ZUlucHV0KHZhbHVlKTtcclxuXHRcdHRoaXMubmdDb250cm9sLnZpZXdUb01vZGVsVXBkYXRlKHZhbGlkYXRlZFZhbHVlKTtcclxuXHR9XHJcblxyXG5cdHZhbGlkYXRlSW5wdXQodmFsdWU6IHN0cmluZykge1xyXG5cdFx0aWYgKHRoaXMudHlwZSgpID09PSAnbnVtYmVyJykge1xyXG5cdFx0XHRyZXR1cm4gdmFsdWUucmVwbGFjZSgvXFxEL2csICcnKTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy50eXBlKCkgPT09ICd0ZXh0Jykge1xyXG5cdFx0XHRyZXR1cm4gdmFsdWUucmVwbGFjZSgvW15hLXpBLVrEn8O8xZ/EscO2w6fEnsOcxZ7EsMOWw4dcXHNdL2csICcnKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdHNlYXJjaChldmVudDogYW55KSB7XHJcblx0XHRjb25zdCBxdWVyeSA9IHRoaXMudmFsaWRhdGVJbnB1dChldmVudC5xdWVyeSk7XHJcblx0XHRjb25zdCBwYXlsb2FkOiBDYWNoZVNlYXJjaFJlcXVlc3REVE8gPSB7XHJcblx0XHRcdHNlYXJjaFRleHQ6IHF1ZXJ5Py50cmltKCksXHJcblx0XHRcdGFzc2V0RGVmaW5pdGlvbkNvZGVzOiBBcnJheS5pc0FycmF5KHRoaXMuYXNzZXRDb2RlKCkpID8gdGhpcy5hc3NldENvZGUoKSA6IChbdGhpcy5hc3NldENvZGUoKV0gYXMgYW55KSxcclxuXHRcdFx0cGFnZXI6IHtcclxuXHRcdFx0XHRwYWdlU2l6ZTogNSxcclxuXHRcdFx0XHRwYWdlTnVtYmVyOiAxXHJcblx0XHRcdH1cclxuXHRcdH07XHJcblxyXG5cdFx0aWYgKHRoaXMubXFsKCkpIHBheWxvYWQubXFsID0gdGhpcy5tcWwoKTtcclxuXHJcblx0XHR0aGlzLmNhY2hlU2VhcmNoUmVxdWVzdCQubmV4dChwYXlsb2FkKTtcclxuXHR9XHJcblxyXG5cdGdldEF0dGlyaWJ1dGVzVmFsdWVEZXNjcihhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVFbGVtZW50W10pOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgZXhjbHVkZWRBdHRyaWJ1dGVzID0gWydBc3NldElkJywgJ0Fzc2V0RGVmaW5pdGlvbk5hbWUnXTtcclxuXHRcdHJldHVybiBhdHRyaWJ1dGVzXHJcblx0XHRcdD8uZmlsdGVyKChhdHRyKSA9PiAhZXhjbHVkZWRBdHRyaWJ1dGVzLmluY2x1ZGVzKGF0dHIuYXR0cmlidXRlPy5hdHRyaWJ1dGVDb2RlKSlcclxuXHRcdFx0Py5tYXAoKGF0dHIpID0+IHtcclxuXHRcdFx0XHQvLyBIYW5kbGUgU0VMRUNUIHR5cGUgYXR0cmlidXRlcyB1c2luZyBTZWxlY3Rpb25Hcm91cFNlcnZpY2VcclxuXHRcdFx0XHRpZiAoYXR0ci5hdHRyaWJ1dGU/LmF0dHJpYnV0ZVR5cGUgPT09ICdTRUxFQ1QnICYmIGF0dHIuYXR0cmlidXRlPy5zZWxlY3RPcHRpb24pIHtcclxuXHRcdFx0XHRcdHJldHVybiB0aGlzLmdldFNlbGVjdGlvbkRpc3BsYXkoYXR0ci5hdHRyaWJ1dGUuc2VsZWN0T3B0aW9uLCBhdHRyLnZhbHVlIGFzIHN0cmluZyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gYXR0ci52YWx1ZURlc2MgPyBhdHRyLnZhbHVlRGVzYyA6IGF0dHIudmFsdWU7XHJcblx0XHRcdFx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xyXG5cdFx0XHR9KVxyXG5cdFx0XHQuam9pbignIC0gJyk7XHJcblx0fVxyXG5cdHByaXZhdGUgZ2V0QXNzZXROdW1iZXJWYWx1ZShhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVFbGVtZW50W10pOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgYXNzZXROdW1iZXJBdHRyID0gYXR0cmlidXRlcz8uZmluZCgoYXR0cikgPT4gYXR0ci5hdHRyaWJ1dGU/LmF0dHJpYnV0ZUNvZGUgPT09ICdBc3NldE51bWJlcicpO1xyXG5cdFx0aWYgKCFhc3NldE51bWJlckF0dHIpIHJldHVybiAnJztcclxuXHRcdHJldHVybiBTdHJpbmcoYXNzZXROdW1iZXJBdHRyLnZhbHVlRGVzYyB8fCBhc3NldE51bWJlckF0dHIudmFsdWUgfHwgJycpO1xyXG5cdH1cclxuXHRwcml2YXRlIGdldFNlbGVjdGlvbkRpc3BsYXkoZ3JvdXBOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3Qga2V5ID0gYCR7Z3JvdXBOYW1lfX5BTExgO1xyXG5cdFx0Y29uc3Qgc2VsZWN0aW9uR3JvdXAgPSB0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5zZWxlY3Rpb25Hcm91cHMoKVtrZXldO1xyXG5cclxuXHRcdGlmICghc2VsZWN0aW9uR3JvdXApIHtcclxuXHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2UuZmV0Y2hFbnVtKGdyb3VwTmFtZSwgJ0FMTCcpO1xyXG5cdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgY3VycmVudExhbmcgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuZ2V0QWN0aXZlTGFuZygpO1xyXG5cdFx0Y29uc3Qgc2VsZWN0aW9uSXRlbSA9IHNlbGVjdGlvbkdyb3VwLnNlbGVjdGlvbkl0ZW1zPy5maW5kKCh0KSA9PiB0LnNlbGVjdGlvbktleSA9PT0gdmFsdWUpIGFzIHtcclxuXHRcdFx0c2VsZWN0aW9uTXVsdGlMYW5ndWFnZURpc3BsYXlzPzogeyBbbGFuZzogc3RyaW5nXTogc3RyaW5nIH07XHJcblx0XHRcdHNlbGVjdGlvbkRpc3BsYXk/OiBzdHJpbmc7XHJcblx0XHR9O1xyXG5cclxuXHRcdGlmICghc2VsZWN0aW9uSXRlbSkgcmV0dXJuIHZhbHVlO1xyXG5cclxuXHRcdHJldHVybiBzZWxlY3Rpb25JdGVtLnNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5cz8uW2N1cnJlbnRMYW5nXSA/PyBzZWxlY3Rpb25JdGVtLnNlbGVjdGlvbkRpc3BsYXkgPz8gdmFsdWU7XHJcblx0fVxyXG5cclxuXHR0cmlnZ2VyU2VsZWN0ZWRFdmVudHMoZXZlbnQ6IGFueSkge1xyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRJdGVtczogQXNzZXRBZ2dyZWdhdGVbXSA9IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnMpLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnNba2V5XS5yZXN1bHQuZmluZCgoaXRlbTogQXNzZXRBZ2dyZWdhdGUpID0+IGl0ZW0uaWQgPT09IGV2ZW50Py52YWx1ZT8ua2V5KTtcclxuXHRcdH0pIGFzIEFzc2V0QWdncmVnYXRlW107XHJcblxyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1swXTtcclxuXHJcblx0XHRjb25zdCBzZWxlY3RlZEV2ZW50ID0ge1xyXG5cdFx0XHQuLi5zZWxlY3RlZEl0ZW0sXHJcblx0XHRcdGtleTogc2VsZWN0ZWRJdGVtPy5pZCxcclxuXHRcdFx0dGV4dDogc2VsZWN0ZWRJdGVtPy5hc3NldERlZmluaXRpb25OYW1lLFxyXG5cdFx0XHRhdHRyaWJ1dGVzOiBzZWxlY3RlZEl0ZW0/LmF0dHJpYnV0ZXMsXHJcblx0XHRcdGFzc2V0RGVmaW5pdGlvbkNvZGU6IHNlbGVjdGVkSXRlbT8uYXNzZXREZWZpbml0aW9uQ29kZVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLnNlbGVjdGVkRGVmaW5pdGlvbkV2ZW50LmVtaXQoc2VsZWN0ZWRFdmVudCk7XHJcblx0fVxyXG59XHJcbiIsIjxwLWF1dG9Db21wbGV0ZVxyXG5cdG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcblx0W29wdGlvblZhbHVlXT1cIm9wdGlvblZhbHVlKCkhXCJcclxuXHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXHJcblx0W211bHRpcGxlXT1cIm11bHRpcGxlKClcIlxyXG5cdFtncm91cF09XCJ0cnVlXCJcclxuXHRbZm9yY2VTZWxlY3Rpb25dPVwiZm9yY2VTZWxlY3Rpb24oKVwiXHJcblx0W2RlbGF5XT1cIjcwMFwiXHJcblx0W21pbkxlbmd0aF09XCIzXCJcclxuXHRbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyZWRTZWxlY3Rpb25JdGVtc1wiXHJcblx0KGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcclxuXHRbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG5cdFthdXRvSGlnaGxpZ2h0XT1cInRydWVcIlxyXG5cdFt0eXBlXT1cInR5cGUoKSFcIlxyXG5cdChuZ01vZGVsQ2hhbmdlKT1cIm9uTmdNb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuXHRbc2hvd0NsZWFyXT1cInNob3dDbGVhcigpXCJcclxuXHRbZW1wdHlNZXNzYWdlXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5ub0RhdGFUb0Rpc3BsYXknKVwiXHJcblx0KG9uU2VsZWN0KT1cInRyaWdnZXJTZWxlY3RlZEV2ZW50cygkZXZlbnQpXCJcclxuXHRbYXBwZW5kVG9dPVwiYXBwZW5kVG8oKVwiXHJcblx0KGtleXVwLmVudGVyKT1cInNlYXJjaCgkZXZlbnQpXCI+XHJcblx0PG5nLXRlbXBsYXRlIGxldC1ncm91cCBwVGVtcGxhdGU9XCJncm91cFwiPlxyXG5cdFx0PHNwYW4gY2xhc3M9XCJmb250LWJvbGRcIj57eyBncm91cC50ZXh0IH19PC9zcGFuPlxyXG5cdDwvbmctdGVtcGxhdGU+XHJcblx0QGlmIChzaG93T25seUFzc2V0TnVtYmVyKCkpIHtcclxuXHRcdDxuZy10ZW1wbGF0ZSBsZXQtdmFsdWUgcFRlbXBsYXRlPVwic2VsZWN0ZWRJdGVtXCI+XHJcblx0XHRcdDxzcGFuPnt7IHZhbHVlPy5hc3NldE51bWJlciB8fCB2YWx1ZT8udGV4dCB9fTwvc3Bhbj5cclxuXHRcdDwvbmctdGVtcGxhdGU+XHJcblx0fVxyXG48L3AtYXV0b0NvbXBsZXRlPlxyXG4iXX0=
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdWktYnVzaW5lc3MvYXNzZXRQaWNrZXIvc3JjL2Fzc2V0LXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3VpLWJ1c2luZXNzL2Fzc2V0UGlja2VyL3NyYy9hc3NldC1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUVOLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUVaLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJELE9BQU8sRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzVDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7QUF1Q3pFLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxrQkFBa0I7SUFzQjNELFlBQ2tCLElBQWdCLEVBQzFCLGdCQUFrQyxFQUN4QixxQkFBNEM7UUFFN0QsS0FBSyxFQUFFLENBQUM7UUFKUyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQzFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDeEIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQXZCOUQsY0FBUyxHQUFHLEtBQUssQ0FBMkIsSUFBSSxDQUFDLENBQUM7UUFDbEQsU0FBSSxHQUFHLEtBQUssQ0FBb0IsSUFBSSxDQUFDLENBQUM7UUFFdEMsZ0JBQVcsR0FBRyxLQUFLLENBQVMsVUFBVSxDQUFDLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDdkMsYUFBUSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNqQyxjQUFTLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLGdCQUFXLEdBQUcsS0FBSyxDQUE4QixJQUFJLENBQUMsQ0FBQztRQUN2RCxhQUFRLEdBQUcsS0FBSyxDQUE4QixNQUFNLENBQUMsQ0FBQztRQUN0RCxRQUFHLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdEIsd0JBQW1CLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQzVDLDJCQUFzQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMvQyxpQkFBWSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUl0Qyx3QkFBbUIsR0FBRyxJQUFJLE9BQU8sRUFBeUIsQ0FBQztRQUMzRCxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RCLDRCQUF1QixHQUFpQyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQVNwRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzdDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3RDLENBQUM7UUFDRixDQUFDLENBQUMsQ0FBQztJQUVKLENBQUM7SUFFRCxRQUFRO1FBQ1AsSUFBSSxDQUFDLG1CQUFtQjthQUN0QixJQUFJLENBQ0osU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQU0sV0FBVyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRywyQkFBMkIsRUFBRSxPQUFPLENBQUMsQ0FDeEcsRUFDRCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ25DO2FBQ0EsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGNBQWMsQ0FBQztZQUMzQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUN0QyxDQUFDLENBQUMsQ0FBQztRQUVKLHNGQUFzRjtRQUN0RixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUM7UUFDcEQsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLFlBQVksSUFBSSxPQUFPLFlBQVksS0FBSyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3hGLE1BQU0sV0FBVyxHQUFHLE9BQU8sWUFBWSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDO1lBQ3pGLElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNILENBQUM7SUFFRixDQUFDO0lBRU8sNkJBQTZCO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CO1lBQUUsT0FBTztRQUV2QyxNQUFNLDJCQUEyQixHQUEwQixFQUFFLENBQUM7UUFFOUQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUM5RCxNQUFNLFNBQVMsR0FBd0I7Z0JBQ3RDLElBQUksRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUI7Z0JBQy9FLEdBQUcsRUFBRSxHQUFHO2dCQUNSLEtBQUssRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FDL0MsQ0FBQyxJQUFvQixFQUFFLEVBQUUsQ0FDeEIsQ0FBQztvQkFDQSxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUU7b0JBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO29CQUNwRCxXQUFXLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7b0JBQ3RELFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDM0IsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLG1CQUFtQjtpQkFDN0MsQ0FBbUIsQ0FDckI7YUFDRCxDQUFDO1lBQ0YsMkJBQTJCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRTVDLCtGQUErRjtZQUMvRixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDN0UsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHNCQUFzQixHQUFHLDJCQUEyQixDQUFDO0lBQzNELENBQUM7SUFFRCxlQUFlO1FBQ2QsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxNQUFXO1FBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN6QixPQUFPLE1BQU0sQ0FBQztRQUNmLENBQUM7UUFFRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDNUIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUMxQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNuQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFVO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTztRQUU3RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRTtZQUFFLE9BQU87UUFFM0IsTUFBTSxPQUFPLEdBQTBCO1lBQ3RDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3pCLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQVM7WUFDdEcsS0FBSyxFQUFFO2dCQUNOLFFBQVEsRUFBRSxDQUFDO2dCQUNYLFVBQVUsRUFBRSxDQUFDO2FBQ2I7U0FDRCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsd0JBQXdCLENBQUMsVUFBOEI7UUFDdEQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzlELE9BQU8sVUFBVTtZQUNoQixFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUMvRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2QsNERBQTREO1lBQzVELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLENBQUM7Z0JBQ2hGLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFlLENBQUMsQ0FBQztZQUNwRixDQUFDO1lBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUMzRCxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFFLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNmLENBQUM7SUFDTyxtQkFBbUIsQ0FBQyxVQUE4QjtRQUN6RCxNQUFNLGVBQWUsR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsS0FBSyxhQUFhLENBQUMsQ0FBQztRQUNwRyxJQUFJLENBQUMsZUFBZTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFTLElBQUksZUFBZSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ08sbUJBQW1CLENBQUMsU0FBaUIsRUFBRSxLQUFhO1FBQzNELE1BQU0sR0FBRyxHQUFHLEdBQUcsU0FBUyxNQUFNLENBQUM7UUFDL0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGVBQWUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXpFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN2RCxPQUFPLEtBQUssQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUQsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEtBQUssS0FBSyxDQUd4RixDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUVqQyxPQUFPLGFBQWEsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUM7SUFDL0csQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQVU7UUFDL0IsTUFBTSxhQUFhLEdBQXFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDbEcsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM1RyxDQUFDLENBQXFCLENBQUM7UUFFdkIsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRDLE1BQU0sYUFBYSxHQUFHO1lBQ3JCLEdBQUcsWUFBWTtZQUNmLEdBQUcsRUFBRSxZQUFZLEVBQUUsRUFBRTtZQUNyQixJQUFJLEVBQUUsWUFBWSxFQUFFLG1CQUFtQjtZQUN2QyxVQUFVLEVBQUUsWUFBWSxFQUFFLFVBQVU7WUFDcEMsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLG1CQUFtQjtTQUN0RCxDQUFDO1FBRUYsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNsRCxDQUFDOzhHQXhNVyxvQkFBb0I7a0dBQXBCLG9CQUFvQiw2dkRBQ3JCLFlBQVksbUlDbEV4QiwwL0JBNEJBLDhSRGtDVyxtQkFBbUIseVRBQUUsa0JBQWtCOzsyRkFHckMsb0JBQW9CO2tCQTNCaEMsU0FBUztpQ0FDRyxJQUFJLFlBQ04sZ0dBQWdHLFdBc0JqRyxDQUFDLG1CQUFtQixFQUFFLGtCQUFrQixDQUFDLGtCQUNsQyxDQUFDLHNCQUFzQixDQUFDO2tKQUdmLGVBQWU7c0JBQXZDLFNBQVM7dUJBQUMsWUFBWTtnQkFtQmIsdUJBQXVCO3NCQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHtcclxuXHRBZnRlclZpZXdJbml0LFxyXG5cdENvbXBvbmVudCxcclxuXHREZXN0cm95UmVmLFxyXG5cdEV2ZW50RW1pdHRlcixcclxuXHRPbkluaXQsXHJcblx0T3V0cHV0LFxyXG5cdFZpZXdDaGlsZCxcclxuXHRlZmZlY3QsXHJcblx0aW5qZWN0LFxyXG5cdGlucHV0LFxyXG5cdHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBBdXRvQ29tcGxldGUsIEF1dG9Db21wbGV0ZU1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgT2JqZWN0VXRpbHMgfSBmcm9tICdwcmltZW5nL3V0aWxzJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgQVBJX0NPTkZJR1MgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwaSc7XHJcbmltcG9ydCB7IEFwcHMgfSBmcm9tICdhcmlsL2Jvb3QvY29uZmlnL2FwcHMnO1xyXG5pbXBvcnQgeyBTZWxlY3Rpb25Hcm91cFNlcnZpY2UgfSBmcm9tICdhcmlsL3RoZW1lL2xheW91dCc7XHJcbmltcG9ydCB7IEJhc2VJbnB1dENvbXBvbmVudCwgVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJ2FyaWwvdWkvbGliJztcclxuXHJcbmltcG9ydCB7XHJcblx0QXNzZXRBZ2dyZWdhdGUsXHJcblx0QXR0cmlidXRlRWxlbWVudCxcclxuXHRDYWNoZVNlYXJjaFJlcXVlc3REVE8sXHJcblx0RGVmYXVsdFNlYXJjaEFnZ3JlZ2F0ZUFzc2V0QWdncmVnYXRlLFxyXG5cdFN1Z2dlc3Rpb25zRFRPLFxyXG5cdFN1Z2dlc3Rpb25zR3JvdXBEVE9cclxufSBmcm9tICcuL2ludGVyZmFjZSc7XHJcblxyXG50eXBlIFZhbHVlVHlwZXMgPSAndGV4dCcgfCAnbnVtYmVyJztcclxuQENvbXBvbmVudCh7XHJcblx0c3RhbmRhbG9uZTogdHJ1ZSxcclxuXHRzZWxlY3RvcjogJ2FyaWwtYXNzZXQtcGlja2VyW25nTW9kZWxdLCBhcmlsLWFzc2V0LXBpY2tlcltmb3JtQ29udHJvbF0sIGFyaWwtYXNzZXQtcGlja2VyW2Zvcm1Db250cm9sTmFtZV0nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9hc3NldC1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlczogW1xyXG5cdFx0YFxyXG5cdFx0XHQ6Om5nLWRlZXAgLnAtYXV0b2NvbXBsZXRlLW11bHRpcGxlLWNvbnRhaW5lciB7XHJcblx0XHRcdFx0ZmxleC13cmFwOiB3cmFwO1xyXG5cdFx0XHRcdG1heC1oZWlnaHQ6IDUwcHg7XHJcblx0XHRcdFx0b3ZlcmZsb3cteTogYXV0bztcclxuXHRcdFx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQ6Om5nLWRlZXAgLnAtYXV0b2NvbXBsZXRlLXRva2VuIHtcclxuXHRcdFx0XHRtYXJnaW46IDA7XHJcblx0XHRcdFx0ZmxleC1zaHJpbms6IDA7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdDo6bmctZGVlcCAucC1hdXRvY29tcGxldGUtaW5wdXQtdG9rZW4ge1xyXG5cdFx0XHRcdGZsZXg6IDE7XHJcblx0XHRcdFx0bWluLXdpZHRoOiAxNTBweDtcclxuXHRcdFx0fVxyXG5cdFx0YFxyXG5cdF0sXHJcblx0aW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIEF1dG9Db21wbGV0ZU1vZHVsZV0sXHJcblx0aG9zdERpcmVjdGl2ZXM6IFtWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzZXRQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xyXG5cdEBWaWV3Q2hpbGQoQXV0b0NvbXBsZXRlKSBhdXRvQ29tcGxldGVSZWYhOiBBdXRvQ29tcGxldGU7XHJcblx0YXNzZXRDb2RlID0gaW5wdXQ8c3RyaW5nIHwgc3RyaW5nW10gfCBudWxsPihudWxsKTtcclxuXHR0eXBlID0gaW5wdXQ8VmFsdWVUeXBlcyB8IG51bGw+KG51bGwpO1xyXG5cclxuXHRwbGFjZWhvbGRlciA9IGlucHV0PHN0cmluZz4oJ0FyYW1hLi4uJyk7XHJcblx0Zm9yY2VTZWxlY3Rpb24gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0bXVsdGlwbGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XHJcblx0c2hvd0NsZWFyID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdG9wdGlvblZhbHVlID0gaW5wdXQ8a2V5b2YgU3VnZ2VzdGlvbnNEVE8gfCBudWxsPihudWxsKTtcclxuXHRhcHBlbmRUbyA9IGlucHV0PHN0cmluZyB8IEhUTUxFbGVtZW50IHwgbnVsbD4oJ2JvZHknKTtcclxuXHRtcWwgPSBpbnB1dDxzdHJpbmc+KCk7XHJcblx0c2hvd09ubHlBc3NldE51bWJlciA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHRlbmFibGVBdXRvU2VhcmNoT25Jbml0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdGlzVXBkYXRlTW9kZSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XHJcblxyXG5cdGZpbHRlcmVkU2VsZWN0aW9uSXRlbXMhOiBTdWdnZXN0aW9uc0dyb3VwRFRPW107XHJcblx0c2VsZWN0aW9uRGVmaW5pdGlvbnMhOiBEZWZhdWx0U2VhcmNoQWdncmVnYXRlQXNzZXRBZ2dyZWdhdGU7XHJcblx0Y2FjaGVTZWFyY2hSZXF1ZXN0JCA9IG5ldyBTdWJqZWN0PENhY2hlU2VhcmNoUmVxdWVzdERUTz4oKTtcclxuXHRkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cdEBPdXRwdXQoKSBzZWxlY3RlZERlZmluaXRpb25FdmVudDogRXZlbnRFbWl0dGVyPEFzc2V0QWdncmVnYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzZXRBZ2dyZWdhdGU+KCk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG5cdFx0cHVibGljIHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGlvbkdyb3VwU2VydmljZTogU2VsZWN0aW9uR3JvdXBTZXJ2aWNlXHJcblx0KSB7XHJcblx0XHRzdXBlcigpO1xyXG5cclxuXHRcdGVmZmVjdCgoKSA9PiB7XHJcblx0XHRcdHRoaXMuc2VsZWN0aW9uR3JvdXBTZXJ2aWNlLnNlbGVjdGlvbkdyb3VwcygpO1xyXG5cdFx0XHRpZiAodGhpcy5zZWxlY3Rpb25EZWZpbml0aW9ucykge1xyXG5cdFx0XHRcdHRoaXMucmVmcmVzaEZpbHRlcmVkU2VsZWN0aW9uSXRlbXMoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHRcclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5jYWNoZVNlYXJjaFJlcXVlc3QkXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdHN3aXRjaE1hcCgocGF5bG9hZCkgPT5cclxuXHRcdFx0XHRcdHRoaXMuaHR0cC5wb3N0PGFueT4oQVBJX0NPTkZJR1MuZ2V0RXh0ZXJuYWxBcHBFbmRwb2ludChBcHBzLk1ORykgKyAnL21hc3Rlci1kYXRhL2NhY2hlLXNlYXJjaCcsIHBheWxvYWQpXHJcblx0XHRcdFx0KSxcclxuXHRcdFx0XHR0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxyXG5cdFx0XHQpXHJcblx0XHRcdC5zdWJzY3JpYmUoKHNlbGVjdGlvbkdyb3VwKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3Rpb25EZWZpbml0aW9ucyA9IHNlbGVjdGlvbkdyb3VwO1xyXG5cdFx0XHRcdHRoaXMucmVmcmVzaEZpbHRlcmVkU2VsZWN0aW9uSXRlbXMoKTtcclxuXHRcdFx0fSk7XHJcblxyXG5cdFx0Ly8gSWYgdGhlIGZvcm0gY29udHJvbCdzIHZhbHVlIGlzIGEgc3RyaW5nLCBwZXJmb3JtIGEgY2FjaGUgc2VhcmNoIHRvIHJldHJpZXZlIHRoZSBJRC5cclxuXHRcdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMubmdDb250cm9sPy5jb250cm9sPy52YWx1ZTtcclxuXHRcdGlmICh0aGlzLmVuYWJsZUF1dG9TZWFyY2hPbkluaXQoKSB8fCAoY3VycmVudFZhbHVlICYmIHR5cGVvZiBjdXJyZW50VmFsdWUgPT09ICdzdHJpbmcnKSkge1xyXG5cdFx0XHRcdGNvbnN0IHNlYXJjaFF1ZXJ5ID0gdHlwZW9mIGN1cnJlbnRWYWx1ZSA9PT0gJ3N0cmluZycgPyBjdXJyZW50VmFsdWUgOiBjdXJyZW50VmFsdWU/LnRleHQ7XHJcblx0XHRcdFx0aWYgKHNlYXJjaFF1ZXJ5KSB7XHJcblx0XHRcdFx0XHR0aGlzLmlzVXBkYXRlTW9kZS5zZXQodHJ1ZSk7XHJcblx0XHRcdFx0XHR0aGlzLnNlYXJjaCh7IHF1ZXJ5OiBzZWFyY2hRdWVyeSB9KTtcclxuXHRcdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSByZWZyZXNoRmlsdGVyZWRTZWxlY3Rpb25JdGVtcygpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5zZWxlY3Rpb25EZWZpbml0aW9ucykgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IG5ld0ZpbHRlcmVkR3JvdXBTdWdnZXN0aW9uczogU3VnZ2VzdGlvbnNHcm91cERUT1tdID0gW107XHJcblxyXG5cdFx0T2JqZWN0LmtleXModGhpcy5zZWxlY3Rpb25EZWZpbml0aW9ucykuZm9yRWFjaCgoa2V5OiBzdHJpbmcpID0+IHtcclxuXHRcdFx0Y29uc3QgZ3JvdXBEYXRhOiBTdWdnZXN0aW9uc0dyb3VwRFRPID0ge1xyXG5cdFx0XHRcdHRleHQ6IHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnNba2V5XT8ucmVzdWx0WzBdPy5hc3NldHNbMF0/LmFzc2V0RGVmaW5pdGlvbk5hbWUsXHJcblx0XHRcdFx0a2V5OiBrZXksXHJcblx0XHRcdFx0aXRlbXM6IHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnNba2V5XS5yZXN1bHQubWFwKFxyXG5cdFx0XHRcdFx0KGl0ZW06IEFzc2V0QWdncmVnYXRlKSA9PlxyXG5cdFx0XHRcdFx0XHQoe1xyXG5cdFx0XHRcdFx0XHRcdGtleTogaXRlbS5pZCxcclxuXHRcdFx0XHRcdFx0XHR0ZXh0OiB0aGlzLmdldEF0dGlyaWJ1dGVzVmFsdWVEZXNjcihpdGVtLmF0dHJpYnV0ZXMpLFxyXG5cdFx0XHRcdFx0XHRcdGFzc2V0TnVtYmVyOiB0aGlzLmdldEFzc2V0TnVtYmVyVmFsdWUoaXRlbS5hdHRyaWJ1dGVzKSxcclxuXHRcdFx0XHRcdFx0XHRhdHRyaWJ1dGVzOiBpdGVtLmF0dHJpYnV0ZXMsXHJcblx0XHRcdFx0XHRcdFx0YXNzZXREZWZpbml0aW9uQ29kZTogaXRlbS5hc3NldERlZmluaXRpb25Db2RlXHJcblx0XHRcdFx0XHRcdH0pIGFzIFN1Z2dlc3Rpb25zRFRPXHJcblx0XHRcdFx0KVxyXG5cdFx0XHR9O1xyXG5cdFx0XHRuZXdGaWx0ZXJlZEdyb3VwU3VnZ2VzdGlvbnMucHVzaChncm91cERhdGEpO1xyXG5cclxuXHRcdFx0Ly8gSWYgdGhlIHN0cmluZyB2YWx1ZSBpcyBwYXRjaGVkIGluIHVwZGF0ZSBtb2RlIGFuZCB0aGVyZSBpcyBncm91cCBkYXRhLCBzZWxlY3QgdGhlIGZpcnN0IGl0ZW1cclxuXHRcdFx0aWYgKHRoaXMuaXNVcGRhdGVNb2RlKCkgJiYgZ3JvdXBEYXRhLml0ZW1zLmxlbmd0aCA9PT0gMSAmJiAhdGhpcy5tdWx0aXBsZSgpKSB7XHJcblx0XHRcdFx0dGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnNldFZhbHVlKGdyb3VwRGF0YS5pdGVtc1swXSk7XHJcblx0XHRcdFx0dGhpcy5pc1VwZGF0ZU1vZGUuc2V0KGZhbHNlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0dGhpcy5maWx0ZXJlZFNlbGVjdGlvbkl0ZW1zID0gbmV3RmlsdGVyZWRHcm91cFN1Z2dlc3Rpb25zO1xyXG5cdH1cclxuXHJcblx0bmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG5cdFx0dGhpcy5hdXRvQ29tcGxldGVSZWYuZ2V0T3B0aW9uVmFsdWUgPSB0aGlzLmdldE9wdGlvblZhbHVlLmJpbmQodGhpcyk7XHJcblx0fVxyXG5cclxuXHRnZXRPcHRpb25WYWx1ZShvcHRpb246IGFueSkge1xyXG5cdFx0aWYgKCF0aGlzLm9wdGlvblZhbHVlKCkpIHtcclxuXHRcdFx0cmV0dXJuIG9wdGlvbjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcpIHtcclxuXHRcdFx0cmV0dXJuIE9iamVjdFV0aWxzLnJlc29sdmVGaWVsZERhdGEob3B0aW9uLCB0aGlzLm9wdGlvblZhbHVlKCkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBvcHRpb247XHJcblx0fVxyXG5cclxuXHRvbk5nTW9kZWxDaGFuZ2UodmFsdWU6IHN0cmluZykge1xyXG5cdFx0Y29uc3QgdmFsaWRhdGVkVmFsdWUgPSB0aGlzLnZhbGlkYXRlSW5wdXQodmFsdWUpO1xyXG5cdFx0dGhpcy5uZ0NvbnRyb2wudmlld1RvTW9kZWxVcGRhdGUodmFsaWRhdGVkVmFsdWUpO1xyXG5cdH1cclxuXHJcblx0dmFsaWRhdGVJbnB1dCh2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHRpZiAodGhpcy50eXBlKCkgPT09ICdudW1iZXInKSB7XHJcblx0XHRcdHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3RleHQnKSB7XHJcblx0XHRcdHJldHVybiB2YWx1ZS5yZXBsYWNlKC9bXmEtekEtWsSfw7zFn8Sxw7bDp8Sew5zFnsSww5bDh1xcc10vZywgJycpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHZhbHVlO1xyXG5cdH1cclxuXHJcblx0c2VhcmNoKGV2ZW50OiBhbnkpIHtcclxuXHRcdGlmICghZXZlbnQ/LnF1ZXJ5IHx8IHR5cGVvZiBldmVudC5xdWVyeSAhPT0gJ3N0cmluZycpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBxdWVyeSA9IHRoaXMudmFsaWRhdGVJbnB1dChldmVudC5xdWVyeSk7XHJcblx0XHRpZiAoIXF1ZXJ5Py50cmltKCkpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBwYXlsb2FkOiBDYWNoZVNlYXJjaFJlcXVlc3REVE8gPSB7XHJcblx0XHRcdHNlYXJjaFRleHQ6IHF1ZXJ5Py50cmltKCksXHJcblx0XHRcdGFzc2V0RGVmaW5pdGlvbkNvZGVzOiBBcnJheS5pc0FycmF5KHRoaXMuYXNzZXRDb2RlKCkpID8gdGhpcy5hc3NldENvZGUoKSA6IChbdGhpcy5hc3NldENvZGUoKV0gYXMgYW55KSxcclxuXHRcdFx0cGFnZXI6IHtcclxuXHRcdFx0XHRwYWdlU2l6ZTogNSxcclxuXHRcdFx0XHRwYWdlTnVtYmVyOiAxXHJcblx0XHRcdH1cclxuXHRcdH07XHJcblxyXG5cdFx0aWYgKHRoaXMubXFsKCkpIHBheWxvYWQubXFsID0gdGhpcy5tcWwoKTtcclxuXHJcblx0XHR0aGlzLmNhY2hlU2VhcmNoUmVxdWVzdCQubmV4dChwYXlsb2FkKTtcclxuXHR9XHJcblxyXG5cdGdldEF0dGlyaWJ1dGVzVmFsdWVEZXNjcihhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVFbGVtZW50W10pOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgZXhjbHVkZWRBdHRyaWJ1dGVzID0gWydBc3NldElkJywgJ0Fzc2V0RGVmaW5pdGlvbk5hbWUnXTtcclxuXHRcdHJldHVybiBhdHRyaWJ1dGVzXHJcblx0XHRcdD8uZmlsdGVyKChhdHRyKSA9PiAhZXhjbHVkZWRBdHRyaWJ1dGVzLmluY2x1ZGVzKGF0dHIuYXR0cmlidXRlPy5hdHRyaWJ1dGVDb2RlKSlcclxuXHRcdFx0Py5tYXAoKGF0dHIpID0+IHtcclxuXHRcdFx0XHQvLyBIYW5kbGUgU0VMRUNUIHR5cGUgYXR0cmlidXRlcyB1c2luZyBTZWxlY3Rpb25Hcm91cFNlcnZpY2VcclxuXHRcdFx0XHRpZiAoYXR0ci5hdHRyaWJ1dGU/LmF0dHJpYnV0ZVR5cGUgPT09ICdTRUxFQ1QnICYmIGF0dHIuYXR0cmlidXRlPy5zZWxlY3RPcHRpb24pIHtcclxuXHRcdFx0XHRcdHJldHVybiB0aGlzLmdldFNlbGVjdGlvbkRpc3BsYXkoYXR0ci5hdHRyaWJ1dGUuc2VsZWN0T3B0aW9uLCBhdHRyLnZhbHVlIGFzIHN0cmluZyk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGNvbnN0IHZhbHVlID0gYXR0ci52YWx1ZURlc2MgPyBhdHRyLnZhbHVlRGVzYyA6IGF0dHIudmFsdWU7XHJcblx0XHRcdFx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiBTdHJpbmcodmFsdWUpO1xyXG5cdFx0XHR9KVxyXG5cdFx0XHQuam9pbignIC0gJyk7XHJcblx0fVxyXG5cdHByaXZhdGUgZ2V0QXNzZXROdW1iZXJWYWx1ZShhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVFbGVtZW50W10pOiBzdHJpbmcge1xyXG5cdFx0Y29uc3QgYXNzZXROdW1iZXJBdHRyID0gYXR0cmlidXRlcz8uZmluZCgoYXR0cikgPT4gYXR0ci5hdHRyaWJ1dGU/LmF0dHJpYnV0ZUNvZGUgPT09ICdBc3NldE51bWJlcicpO1xyXG5cdFx0aWYgKCFhc3NldE51bWJlckF0dHIpIHJldHVybiAnJztcclxuXHRcdHJldHVybiBTdHJpbmcoYXNzZXROdW1iZXJBdHRyLnZhbHVlRGVzYyB8fCBhc3NldE51bWJlckF0dHIudmFsdWUgfHwgJycpO1xyXG5cdH1cclxuXHRwcml2YXRlIGdldFNlbGVjdGlvbkRpc3BsYXkoZ3JvdXBOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0Y29uc3Qga2V5ID0gYCR7Z3JvdXBOYW1lfX5BTExgO1xyXG5cdFx0Y29uc3Qgc2VsZWN0aW9uR3JvdXAgPSB0aGlzLnNlbGVjdGlvbkdyb3VwU2VydmljZS5zZWxlY3Rpb25Hcm91cHMoKVtrZXldO1xyXG5cclxuXHRcdGlmICghc2VsZWN0aW9uR3JvdXApIHtcclxuXHRcdFx0dGhpcy5zZWxlY3Rpb25Hcm91cFNlcnZpY2UuZmV0Y2hFbnVtKGdyb3VwTmFtZSwgJ0FMTCcpO1xyXG5cdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgY3VycmVudExhbmcgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuZ2V0QWN0aXZlTGFuZygpO1xyXG5cdFx0Y29uc3Qgc2VsZWN0aW9uSXRlbSA9IHNlbGVjdGlvbkdyb3VwLnNlbGVjdGlvbkl0ZW1zPy5maW5kKCh0KSA9PiB0LnNlbGVjdGlvbktleSA9PT0gdmFsdWUpIGFzIHtcclxuXHRcdFx0c2VsZWN0aW9uTXVsdGlMYW5ndWFnZURpc3BsYXlzPzogeyBbbGFuZzogc3RyaW5nXTogc3RyaW5nIH07XHJcblx0XHRcdHNlbGVjdGlvbkRpc3BsYXk/OiBzdHJpbmc7XHJcblx0XHR9O1xyXG5cclxuXHRcdGlmICghc2VsZWN0aW9uSXRlbSkgcmV0dXJuIHZhbHVlO1xyXG5cclxuXHRcdHJldHVybiBzZWxlY3Rpb25JdGVtLnNlbGVjdGlvbk11bHRpTGFuZ3VhZ2VEaXNwbGF5cz8uW2N1cnJlbnRMYW5nXSA/PyBzZWxlY3Rpb25JdGVtLnNlbGVjdGlvbkRpc3BsYXkgPz8gdmFsdWU7XHJcblx0fVxyXG5cclxuXHR0cmlnZ2VyU2VsZWN0ZWRFdmVudHMoZXZlbnQ6IGFueSkge1xyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRJdGVtczogQXNzZXRBZ2dyZWdhdGVbXSA9IE9iamVjdC5rZXlzKHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnMpLm1hcCgoa2V5OiBzdHJpbmcpID0+IHtcclxuXHRcdFx0cmV0dXJuIHRoaXMuc2VsZWN0aW9uRGVmaW5pdGlvbnNba2V5XS5yZXN1bHQuZmluZCgoaXRlbTogQXNzZXRBZ2dyZWdhdGUpID0+IGl0ZW0uaWQgPT09IGV2ZW50Py52YWx1ZT8ua2V5KTtcclxuXHRcdH0pIGFzIEFzc2V0QWdncmVnYXRlW107XHJcblxyXG5cdFx0Y29uc3Qgc2VsZWN0ZWRJdGVtID0gc2VsZWN0ZWRJdGVtc1swXTtcclxuXHJcblx0XHRjb25zdCBzZWxlY3RlZEV2ZW50ID0ge1xyXG5cdFx0XHQuLi5zZWxlY3RlZEl0ZW0sXHJcblx0XHRcdGtleTogc2VsZWN0ZWRJdGVtPy5pZCxcclxuXHRcdFx0dGV4dDogc2VsZWN0ZWRJdGVtPy5hc3NldERlZmluaXRpb25OYW1lLFxyXG5cdFx0XHRhdHRyaWJ1dGVzOiBzZWxlY3RlZEl0ZW0/LmF0dHJpYnV0ZXMsXHJcblx0XHRcdGFzc2V0RGVmaW5pdGlvbkNvZGU6IHNlbGVjdGVkSXRlbT8uYXNzZXREZWZpbml0aW9uQ29kZVxyXG5cdFx0fTtcclxuXHJcblx0XHR0aGlzLnNlbGVjdGVkRGVmaW5pdGlvbkV2ZW50LmVtaXQoc2VsZWN0ZWRFdmVudCk7XHJcblx0fVxyXG59XHJcbiIsIjxwLWF1dG9Db21wbGV0ZVxyXG5cdG9wdGlvbkxhYmVsPVwidGV4dFwiXHJcblx0W29wdGlvblZhbHVlXT1cIm9wdGlvblZhbHVlKCkhXCJcclxuXHRbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIoKVwiXHJcblx0W211bHRpcGxlXT1cIm11bHRpcGxlKClcIlxyXG5cdFtncm91cF09XCJ0cnVlXCJcclxuXHRbZm9yY2VTZWxlY3Rpb25dPVwiZm9yY2VTZWxlY3Rpb24oKVwiXHJcblx0W2RlbGF5XT1cIjcwMFwiXHJcblx0W21pbkxlbmd0aF09XCIzXCJcclxuXHRbc3VnZ2VzdGlvbnNdPVwiZmlsdGVyZWRTZWxlY3Rpb25JdGVtc1wiXHJcblx0KGNvbXBsZXRlTWV0aG9kKT1cInNlYXJjaCgkZXZlbnQpXCJcclxuXHRbZm9ybUNvbnRyb2xdPVwibmdDb250cm9sLmNvbnRyb2xcIlxyXG5cdFthdXRvSGlnaGxpZ2h0XT1cInRydWVcIlxyXG5cdFt0eXBlXT1cInR5cGUoKSFcIlxyXG5cdChuZ01vZGVsQ2hhbmdlKT1cIm9uTmdNb2RlbENoYW5nZSgkZXZlbnQpXCJcclxuXHRbc2hvd0NsZWFyXT1cInNob3dDbGVhcigpXCJcclxuXHRbZW1wdHlNZXNzYWdlXT1cInRyYW5zbG9jb1NlcnZpY2UudHJhbnNsYXRlKCdtZXNzYWdlcy5ub0RhdGFUb0Rpc3BsYXknKVwiXHJcblx0KG9uU2VsZWN0KT1cInRyaWdnZXJTZWxlY3RlZEV2ZW50cygkZXZlbnQpXCJcclxuXHRbYXBwZW5kVG9dPVwiYXBwZW5kVG8oKVwiPlxyXG5cdDxuZy10ZW1wbGF0ZSBsZXQtZ3JvdXAgcFRlbXBsYXRlPVwiZ3JvdXBcIj5cclxuXHRcdDxzcGFuIGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgZ3JvdXAudGV4dCB9fTwvc3Bhbj5cclxuXHQ8L25nLXRlbXBsYXRlPlxyXG5cdEBpZiAoc2hvd09ubHlBc3NldE51bWJlcigpKSB7XHJcblx0XHQ8bmctdGVtcGxhdGUgbGV0LXZhbHVlIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPlxyXG5cdFx0XHQ8c3Bhbj57eyB2YWx1ZT8uYXNzZXROdW1iZXIgfHwgdmFsdWU/LnRleHQgfX08L3NwYW4+XHJcblx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdH1cclxuPC9wLWF1dG9Db21wbGV0ZT5cclxuIl19