gamma-app-controller 1.3.6 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/esm2020/lib/application-controller/application-content.service.mjs +36 -36
  2. package/esm2020/lib/application-controller/application-menu-controller/application-create-menu/application-create-menu.component.mjs +2 -2
  3. package/esm2020/lib/application-controller/application-view-components/create-comp-view/create-comp-view.component.mjs +1 -2
  4. package/esm2020/lib/application-controller/page-controller/page-config/page-config.component.mjs +3 -3
  5. package/esm2020/lib/application-controller/support-components/dash-table/dash-table.component.mjs +1 -2
  6. package/esm2020/lib/shared/advanced-component/gamma-advance-chart/gamma-advance-chart.component.mjs +1 -2
  7. package/esm2020/lib/shared/permission-helper.mjs +4 -4
  8. package/esm2020/lib/shared/user-access/user-access.component.mjs +3 -3
  9. package/esm2020/lib/template-module/KpiCreationModule/create-kpi-tree.component.mjs +137 -277
  10. package/esm2020/lib/template-module/KpiCreationModule/createKpi.service.mjs +37 -6
  11. package/esm2020/lib/template-module/KpiCreationModule/treeview/components/basic/basic.component.mjs +3 -3
  12. package/esm2020/lib/template-module/KpiCreationModule/treeview/components/collapsable/collapsable.component.mjs +4 -15
  13. package/esm2020/lib/template-module/KpiCreationModule/treeview/treeview.component.mjs +4 -6
  14. package/esm2020/lib/template-module/bookmarked-template/bookmarked-layout.service.mjs +8 -8
  15. package/esm2020/lib/template-module/cdrConfigModule/cdr-browser.service.mjs +2 -2
  16. package/esm2020/lib/template-module/defaulLandingComponent/landing-component.component.mjs +1 -2
  17. package/esm2020/lib/template-module/defaulLandingComponent/landing-component.service.mjs +8 -8
  18. package/esm2020/lib/template-module/defaulLandingMultiLayoutComponent/defaulLandingMultiLayout.service.mjs +8 -8
  19. package/esm2020/lib/template-module/kpiWithMultiLayout/kpi-multi-layout.service.mjs +8 -8
  20. package/esm2020/lib/template-module/kpiWithSingleLayout/kpi-single-layout.service.mjs +8 -8
  21. package/fesm2015/gamma-app-controller.mjs +269 -403
  22. package/fesm2015/gamma-app-controller.mjs.map +1 -1
  23. package/fesm2020/gamma-app-controller.mjs +278 -403
  24. package/fesm2020/gamma-app-controller.mjs.map +1 -1
  25. package/lib/application-controller/application-content.service.d.ts +1 -1
  26. package/lib/template-module/KpiCreationModule/create-kpi-tree.component.d.ts +10 -15
  27. package/lib/template-module/KpiCreationModule/createKpi.service.d.ts +4 -0
  28. package/package.json +1 -1
@@ -40,7 +40,7 @@ export class CreateKpIService {
40
40
  });
41
41
  }
42
42
  getKpiBrowserConfigById(id) {
43
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getKpiBrowserConfigById?id=' + id;
43
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getKpiBrowserConfigById?id=' + id;
44
44
  return this.http
45
45
  .get(apiUrl, { withCredentials: true })
46
46
  .pipe(map((response) => {
@@ -48,7 +48,7 @@ export class CreateKpIService {
48
48
  }), catchError(this.handleError));
49
49
  }
50
50
  getAppPageConfigs() {
51
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/getAppPageConfigs';
51
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/getAppPageConfigs';
52
52
  return this.http
53
53
  .get(apiUrl, { withCredentials: true })
54
54
  .pipe(map((response) => {
@@ -56,7 +56,7 @@ export class CreateKpIService {
56
56
  }), catchError(this.handleError));
57
57
  }
58
58
  getlistKpiBrowser() {
59
- const apiUrl = this.environment.appUrl + this.environment.apiVersion + '/kpi-config/listKpiBrowser';
59
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listKpiBrowser';
60
60
  return this.http
61
61
  .get(apiUrl, { withCredentials: true })
62
62
  .pipe(map((response) => {
@@ -65,14 +65,45 @@ export class CreateKpIService {
65
65
  }
66
66
  configureKpiBrowserConfig(body) {
67
67
  return this.http
68
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/configureKpiBrowserConfig', JSON.stringify(body), this.options)
68
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/configureKpiBrowserConfig', JSON.stringify(body), this.options)
69
69
  .pipe(map((response) => {
70
70
  return response;
71
71
  }), catchError(this.handleError));
72
72
  }
73
73
  getCreateKpi(body) {
74
74
  return this.http
75
- .post(this.environment.appUrl + this.environment.apiVersion + '/kpi-config/createKpi', JSON.stringify(body), this.options)
75
+ .post(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/createKpi', JSON.stringify(body), this.options)
76
+ .pipe(map((response) => {
77
+ return response;
78
+ }), catchError(this.handleError));
79
+ }
80
+ listKpiEntryConfigs() {
81
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/listKpiEntryConfigs?caller=app';
82
+ return this.http
83
+ .get(apiUrl, { withCredentials: true })
84
+ .pipe(map((response) => {
85
+ return response;
86
+ }), catchError(this.handleError));
87
+ }
88
+ createKpiEntryConfig(kpiObj) {
89
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/createKpiEntryConfig';
90
+ return this.http
91
+ .post(apiUrl, JSON.stringify(kpiObj), this.options)
92
+ .pipe(map((response) => {
93
+ return response;
94
+ }), catchError(this.handleError));
95
+ }
96
+ updateKpiEntryConfig(kpiObj) {
97
+ const apiUrl = this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/updateKpiEntryConfig';
98
+ return this.http
99
+ .post(apiUrl, JSON.stringify(kpiObj), this.options)
100
+ .pipe(map((response) => {
101
+ return response;
102
+ }), catchError(this.handleError));
103
+ }
104
+ deleteKpiEntryConfig(kpiId) {
105
+ return this.http
106
+ .delete(this.environment.appUrl + this.environment.apiVersion + this.environment.packageBasePath + '/deleteKpiEntryConfig/' + kpiId, this.options)
76
107
  .pipe(map((response) => {
77
108
  return response;
78
109
  }), catchError(this.handleError));
@@ -87,4 +118,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
87
118
  type: Inject,
88
119
  args: [APP_ENVIRONMENT]
89
120
  }] }]; } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlS3BpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS9jcmVhdGVLcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7QUFJM0UsTUFBTSxPQUFPLGdCQUFnQjtJQWV6QixZQUFtQixJQUFnQixFQUFtQyxXQUFnQjtRQUFuRSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQW1DLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBWi9FLFlBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNwRSxZQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFHbEUsd0JBQW1CLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7UUFDdkQsYUFBUSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBRTVDLDJCQUFzQixHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBRWxELHVCQUFrQixHQUFxQixJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQzlELGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztJQUdqRCxDQUFDO0lBRUQsV0FB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O2FBQ3pJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFrQixFQUFPLEVBQUU7WUFDbEMsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQyxDQUFDLEVBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ3pILElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFrQixFQUFPLEVBQUU7WUFDbEMsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQyxDQUFDLEVBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OzZHQW5HUSxnQkFBZ0IsNENBZW9CLGVBQWU7aUhBZm5ELGdCQUFnQixjQURILE1BQU07MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQWdCUSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIFN1YmplY3QsIHRocm93RXJyb3IsIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBQX0VOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9lbnZpcm9ubWVudCc7XG5cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIENyZWF0ZUtwSVNlcnZpY2Uge1xuXG5cbiAgICBwdWJsaWMgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICBwdWJsaWMgb3B0aW9ucyA9IHsgaGVhZGVyczogdGhpcy5oZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfTtcblxuXG4gICAgX3NlbGVjdGVkS3BpT25DbGljazogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIF9rcGlsaXN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICBfc2VsZWN0S3BpRnJvbURyb3BEb3duOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICBwcml2YXRlIF9jb21wb25lbnRSZWdpc3RyeTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgcHJpdmF0ZSBrcGlGaWx0ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGh0dHA6IEh0dHBDbGllbnQsIEBJbmplY3QoQVBQX0VOVklST05NRU5UKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnkpIHtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogT2JzZXJ2YWJsZTxSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgZ2V0RmlsdGVyRm9yS3BpKHBpbnM6IGFueSkge1xuICAgICAgICB0aGlzLmtwaUZpbHRlci5uZXh0KHBpbnMpO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkS1BpRGF0YShrcGlEYXRhKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkS3BpT25DbGljay5uZXh0KGtwaURhdGEpXG4gICAgfVxuXG4gICAgZ2V0S3BpTGlzdChrcGlsaXN0KSB7XG4gICAgICAgIHRoaXMuX2twaWxpc3QubmV4dChrcGlsaXN0KVxuICAgIH1cblxuICAgIGdldEtwaUZyb21Ecm9wRG93bihzZWxlY3RlZEtwaSkge1xuICAgICAgICB0aGlzLl9zZWxlY3RLcGlGcm9tRHJvcERvd24ubmV4dChzZWxlY3RlZEtwaSlcbiAgICB9XG5cbiAgICBnZXRDb21wb25lbnQ8VD4obmFtZTogc3RyaW5nKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRSZWdpc3RyeS5nZXQobmFtZSk7XG4gICAgfVxuXG5cblxuXG4gICAgZ2V0S3BpTmFtZSgpIHtcbiAgICAgICAgdGhpcy5fa3BpbGlzdC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcblxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldEtwaUJyb3dzZXJDb25maWdCeUlkKGlkKTogYW55IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyAnL2twaS1jb25maWcvZ2V0S3BpQnJvd3NlckNvbmZpZ0J5SWQ/aWQ9JyArIGlkO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZ2V0KGFwaVVybCwgeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSlcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSksIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuXG4gICAgfVxuXG5cblxuICAgIGdldEFwcFBhZ2VDb25maWdzKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9rcGktY29uZmlnL2dldEFwcFBhZ2VDb25maWdzJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldChhcGlVcmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLCBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcblxuICAgIH1cblxuICAgIGdldGxpc3RLcGlCcm93c2VyKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGFwaVVybCA9IHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9rcGktY29uZmlnL2xpc3RLcGlCcm93c2VyJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldChhcGlVcmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLCBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcblxuICAgIH1cbiAgICBjb25maWd1cmVLcGlCcm93c2VyQ29uZmlnKGJvZHkpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucG9zdCh0aGlzLmVudmlyb25tZW50LmFwcFVybCArIHRoaXMuZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArICcva3BpLWNvbmZpZy9jb25maWd1cmVLcGlCcm93c2VyQ29uZmlnJywgSlNPTi5zdHJpbmdpZnkoYm9keSksIHRoaXMub3B0aW9ucylcbiAgICAgICAgICAgIC5waXBlKG1hcCgocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55ID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcbiAgICB9XG5cbiAgICBnZXRDcmVhdGVLcGkoYm9keSk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0KHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgJy9rcGktY29uZmlnL2NyZWF0ZUtwaScsIEpTT04uc3RyaW5naWZ5KGJvZHkpLCB0aGlzLm9wdGlvbnMpXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSk6IGFueSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG4gICAgfVxuXG5cbn1cbiJdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlS3BpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS9jcmVhdGVLcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDOUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7QUFJM0UsTUFBTSxPQUFPLGdCQUFnQjtJQWV6QixZQUFtQixJQUFnQixFQUFtQyxXQUFnQjtRQUFuRSxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQW1DLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBWi9FLFlBQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUNwRSxZQUFPLEdBQUcsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFHbEUsd0JBQW1CLEdBQWlCLElBQUksT0FBTyxFQUFPLENBQUM7UUFDdkQsYUFBUSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBRTVDLDJCQUFzQixHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFDO1FBRWxELHVCQUFrQixHQUFxQixJQUFJLEdBQUcsRUFBZSxDQUFDO1FBQzlELGNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztJQUdqRCxDQUFDO0lBRUQsV0FB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O2FBQ1gsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLHdCQUF3QixHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQ2pKLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFrQixFQUFPLEVBQUU7WUFDbEMsT0FBTyxRQUFRLENBQUM7UUFDcEIsQ0FBQyxDQUFDLEVBQ0UsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OzZHQTFJUSxnQkFBZ0IsNENBZW9CLGVBQWU7aUhBZm5ELGdCQUFnQixjQURILE1BQU07MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQWdCUSxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIFN1YmplY3QsIHRocm93RXJyb3IsIEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVBQX0VOVklST05NRU5UIH0gZnJvbSAnLi4vLi4vYXBwbGljYXRpb24tY29udHJvbGxlci9lbnZpcm9ubWVudCc7XG5cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiBcInJvb3RcIiB9KVxuZXhwb3J0IGNsYXNzIENyZWF0ZUtwSVNlcnZpY2Uge1xuXG5cbiAgICBwdWJsaWMgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpLnNldCgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcbiAgICBwdWJsaWMgb3B0aW9ucyA9IHsgaGVhZGVyczogdGhpcy5oZWFkZXJzLCB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfTtcblxuXG4gICAgX3NlbGVjdGVkS3BpT25DbGljazogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3Q8YW55PigpO1xuICAgIF9rcGlsaXN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICBfc2VsZWN0S3BpRnJvbURyb3BEb3duOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICBwcml2YXRlIF9jb21wb25lbnRSZWdpc3RyeTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgcHJpdmF0ZSBrcGlGaWx0ZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGh0dHA6IEh0dHBDbGllbnQsIEBJbmplY3QoQVBQX0VOVklST05NRU5UKSBwcml2YXRlIGVudmlyb25tZW50OiBhbnkpIHtcbiAgICB9XG5cbiAgICBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogT2JzZXJ2YWJsZTxSZXNwb25zZT4ge1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgZ2V0RmlsdGVyRm9yS3BpKHBpbnM6IGFueSkge1xuICAgICAgICB0aGlzLmtwaUZpbHRlci5uZXh0KHBpbnMpO1xuICAgIH1cblxuICAgIGdldFNlbGVjdGVkS1BpRGF0YShrcGlEYXRhKSB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkS3BpT25DbGljay5uZXh0KGtwaURhdGEpXG4gICAgfVxuXG4gICAgZ2V0S3BpTGlzdChrcGlsaXN0KSB7XG4gICAgICAgIHRoaXMuX2twaWxpc3QubmV4dChrcGlsaXN0KVxuICAgIH1cblxuICAgIGdldEtwaUZyb21Ecm9wRG93bihzZWxlY3RlZEtwaSkge1xuICAgICAgICB0aGlzLl9zZWxlY3RLcGlGcm9tRHJvcERvd24ubmV4dChzZWxlY3RlZEtwaSlcbiAgICB9XG5cbiAgICBnZXRDb21wb25lbnQ8VD4obmFtZTogc3RyaW5nKTogVCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRSZWdpc3RyeS5nZXQobmFtZSk7XG4gICAgfVxuXG5cblxuXG4gICAgZ2V0S3BpTmFtZSgpIHtcbiAgICAgICAgdGhpcy5fa3BpbGlzdC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcblxuICAgICAgICB9KVxuICAgIH1cblxuICAgIGdldEtwaUJyb3dzZXJDb25maWdCeUlkKGlkKTogYW55IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyB0aGlzLmVudmlyb25tZW50LnBhY2thZ2VCYXNlUGF0aCsgJy9nZXRLcGlCcm93c2VyQ29uZmlnQnlJZD9pZD0nICsgaWQ7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgICB9XG5cblxuXG4gICAgZ2V0QXBwUGFnZUNvbmZpZ3MoKTogYW55IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyB0aGlzLmVudmlyb25tZW50LnBhY2thZ2VCYXNlUGF0aCsgJy9nZXRBcHBQYWdlQ29uZmlncyc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgICB9XG5cbiAgICBnZXRsaXN0S3BpQnJvd3NlcigpOiBhbnkge1xuICAgICAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmVudmlyb25tZW50LmFwcFVybCArIHRoaXMuZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArIHRoaXMuZW52aXJvbm1lbnQucGFja2FnZUJhc2VQYXRoKyAnL2xpc3RLcGlCcm93c2VyJztcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLmdldChhcGlVcmwsIHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0pXG4gICAgICAgICAgICAucGlwZShtYXAoKHJlc3BvbnNlOiBSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLCBjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IpKTtcblxuICAgIH1cbiAgICBcbiAgICBjb25maWd1cmVLcGlCcm93c2VyQ29uZmlnKGJvZHkpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAucG9zdCh0aGlzLmVudmlyb25tZW50LmFwcFVybCArIHRoaXMuZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArIHRoaXMuZW52aXJvbm1lbnQucGFja2FnZUJhc2VQYXRoKyAnL2NvbmZpZ3VyZUtwaUJyb3dzZXJDb25maWcnLCBKU09OLnN0cmluZ2lmeShib2R5KSwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cblxuICAgIGdldENyZWF0ZUtwaShib2R5KTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAgICAgLnBvc3QodGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyB0aGlzLmVudmlyb25tZW50LnBhY2thZ2VCYXNlUGF0aCsgJy9jcmVhdGVLcGknLCBKU09OLnN0cmluZ2lmeShib2R5KSwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cblxuXG4gICAgbGlzdEtwaUVudHJ5Q29uZmlncygpOiBhbnkge1xuICAgICAgICBjb25zdCBhcGlVcmwgPSB0aGlzLmVudmlyb25tZW50LmFwcFVybCArIHRoaXMuZW52aXJvbm1lbnQuYXBpVmVyc2lvbiArIHRoaXMuZW52aXJvbm1lbnQucGFja2FnZUJhc2VQYXRoKyAnL2xpc3RLcGlFbnRyeUNvbmZpZ3M/Y2FsbGVyPWFwcCc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5nZXQoYXBpVXJsLCB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9KVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgICB9XG4gICAgY3JlYXRlS3BpRW50cnlDb25maWcoa3BpT2JqKTogYW55IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyB0aGlzLmVudmlyb25tZW50LnBhY2thZ2VCYXNlUGF0aCsgJy9jcmVhdGVLcGlFbnRyeUNvbmZpZyc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0KGFwaVVybCwgSlNPTi5zdHJpbmdpZnkoa3BpT2JqKSwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgICB9XG4gICAgdXBkYXRlS3BpRW50cnlDb25maWcoa3BpT2JqKTogYW55IHtcbiAgICAgICAgY29uc3QgYXBpVXJsID0gdGhpcy5lbnZpcm9ubWVudC5hcHBVcmwgKyB0aGlzLmVudmlyb25tZW50LmFwaVZlcnNpb24gKyB0aGlzLmVudmlyb25tZW50LnBhY2thZ2VCYXNlUGF0aCsgJy91cGRhdGVLcGlFbnRyeUNvbmZpZyc7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAgIC5wb3N0KGFwaVVybCwgSlNPTi5zdHJpbmdpZnkoa3BpT2JqKSwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICAgICAgICB9KSwgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XG5cbiAgICB9XG5cbiAgICAgZGVsZXRlS3BpRW50cnlDb25maWcoa3BpSWQpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAgICAgICAuZGVsZXRlKHRoaXMuZW52aXJvbm1lbnQuYXBwVXJsICsgdGhpcy5lbnZpcm9ubWVudC5hcGlWZXJzaW9uICsgdGhpcy5lbnZpcm9ubWVudC5wYWNrYWdlQmFzZVBhdGggKyAnL2RlbGV0ZUtwaUVudHJ5Q29uZmlnLycgKyBrcGlJZCwgdGhpcy5vcHRpb25zKVxuICAgICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZTogUmVzcG9uc2UpOiBhbnkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xuICAgIH1cblxuXG59XG4iXX0=
@@ -98,10 +98,10 @@ export class TreeViewBasicItemComponent {
98
98
  }
99
99
  }
100
100
  TreeViewBasicItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewBasicItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CreateKpIService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
101
- TreeViewBasicItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: { item: "item", name: "name", internalRoute: "internalRoute", isEditIcon: "isEditIcon", treeId: "treeId" }, outputs: { editableKpiBasicData: "editableKpiBasicData" }, ngImport: i0, template: "<!-- Item wrapper -->\n<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" (click)=\"getKPIDataOnclick(item, $event)\" (dblclick)='getNavigateToKpi(item)' *ngIf=\"item.isVisible\">\n\n <!-- Item with an internal link -->\n <!-- <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n <a class=\"treeview-item\" [ngClass]=\"{'treeview-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [fragment]=\"item.fragment ?? null\" [preserveFragment]=\"item.preserveFragment ?? false\"\n [queryParams]=\"item.queryParams ?? null\" [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n [routerLinkActive]=\"'treeview-item-active'\" [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n </ng-container> -->\n\n\n <!-- Item with a no link and no function -->\n <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n <div class=\"treeview-item\" id=\"kpiId-{{item.tid}}\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title capitalize\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer \"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.name}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n</ng-template>", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
101
+ TreeViewBasicItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: { item: "item", name: "name", internalRoute: "internalRoute", isEditIcon: "isEditIcon", treeId: "treeId" }, outputs: { editableKpiBasicData: "editableKpiBasicData" }, ngImport: i0, template: "<!-- Item wrapper -->\n<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" (click)=\"getKPIDataOnclick(item, $event)\" (dblclick)='getNavigateToKpi(item)' *ngIf=\"item.visibility\">\n\n <!-- Item with an internal link -->\n <!-- <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n <a class=\"treeview-item\" [ngClass]=\"{'treeview-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [fragment]=\"item.fragment ?? null\" [preserveFragment]=\"item.preserveFragment ?? false\"\n [queryParams]=\"item.queryParams ?? null\" [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n [routerLinkActive]=\"'treeview-item-active'\" [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n </ng-container> -->\n\n\n <!-- Item with a no link and no function -->\n <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n <div class=\"treeview-item\" id=\"kpiId-{{item.id}}\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title capitalize\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer \"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.title}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n</ng-template>", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
102
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewBasicItemComponent, decorators: [{
103
103
  type: Component,
104
- args: [{ selector: 'treeview-basic-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Item wrapper -->\n<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" (click)=\"getKPIDataOnclick(item, $event)\" (dblclick)='getNavigateToKpi(item)' *ngIf=\"item.isVisible\">\n\n <!-- Item with an internal link -->\n <!-- <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n <a class=\"treeview-item\" [ngClass]=\"{'treeview-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [fragment]=\"item.fragment ?? null\" [preserveFragment]=\"item.preserveFragment ?? false\"\n [queryParams]=\"item.queryParams ?? null\" [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n [routerLinkActive]=\"'treeview-item-active'\" [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n </ng-container> -->\n\n\n <!-- Item with a no link and no function -->\n <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n <div class=\"treeview-item\" id=\"kpiId-{{item.tid}}\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title capitalize\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer \"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.name}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n</ng-template>" }]
104
+ args: [{ selector: 'treeview-basic-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- Item wrapper -->\n<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" (click)=\"getKPIDataOnclick(item, $event)\" (dblclick)='getNavigateToKpi(item)' *ngIf=\"item.visibility\">\n\n <!-- Item with an internal link -->\n <!-- <ng-container *ngIf=\"item.link && !item.externalLink && !item.function && !item.disabled\">\n <a class=\"treeview-item\" [ngClass]=\"{'treeview-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\n [fragment]=\"item.fragment ?? null\" [preserveFragment]=\"item.preserveFragment ?? false\"\n [queryParams]=\"item.queryParams ?? null\" [queryParamsHandling]=\"item.queryParamsHandling ?? null\"\n [routerLinkActive]=\"'treeview-item-active'\" [routerLinkActiveOptions]=\"isActiveMatchOptions\"\n [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </a>\n </ng-container> -->\n\n\n <!-- Item with a no link and no function -->\n <ng-container *ngIf=\"!item.link && !item.function && !item.disabled\">\n <div class=\"treeview-item\" id=\"kpiId-{{item.id}}\" [matTooltip]=\"item.tooltip || ''\">\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\n </div>\n </ng-container>\n\n</div>\n\n<!-- Item template -->\n<ng-template #itemTemplate>\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title capitalize\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer \"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.title}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.title}}\n </div>\n </div>\n </ng-container>\n\n</ng-template>" }]
105
105
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.CreateKpIService }, { type: i2.Router }]; }, propDecorators: { item: [{
106
106
  type: Input
107
107
  }], name: [{
@@ -115,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
115
115
  }], editableKpiBasicData: [{
116
116
  type: Output
117
117
  }] } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvY29tcG9uZW50cy9iYXNpYy9iYXNpYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL2Jhc2ljL2Jhc2ljLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUV0SSxPQUFPLEVBQUUsT0FBTyxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBT3pDLE1BQU0sT0FBTywwQkFBMEI7SUFrQm5DLFlBQ1ksa0JBQXFDLEVBQ3JDLGdCQUFrQyxFQUNsQyxLQUFhO1FBRmIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFqQmhCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHcEIseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJdEUsb0JBQWUsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQWtCM0QsQ0FBQztJQVNELFFBQVE7UUFJSixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFM0MsQ0FBQztJQUtELFdBQVc7UUFHUCxJ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LEdBQUcsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDakU7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMxRDtJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUztRQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O3VIQW5JUSwwQkFBMEI7MkdBQTFCLDBCQUEwQiwwT0NWdkMsNGxGQTJEYzsyRkRqREQsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNOzRKQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRVcsb0JBQW9CO3NCQUFwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBPdXRwdXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJy4uLy4uL21vbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ3JlYXRlS3BJU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NyZWF0ZUtwaS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHJlZXZpZXctYmFzaWMtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Jhc2ljLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUcmVlVmlld0Jhc2ljSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBpdGVtOiBhbnk7XG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGludGVybmFsUm91dGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBpc0VkaXRJY29uOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgdHJlZUlkOiBhbnk7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIGVkaXRhYmxlS3BpQmFzaWNEYXRhOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXG4gICAgaXNBY3RpdmVNYXRjaE9wdGlvbnM6IElzQWN0aXZlTWF0Y2hPcHRpb25zO1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICBHX0RFRkFVTFRfU1RBUlRfREFURTogYW55O1xuICAgIEdfREVGQVVMVF9FTkRfREFURTogYW55O1xuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfdHJlZXZpZXdTZXJ2aWNlOiBDcmVhdGVLcElTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBSb3V0ZXIsXG5cbiAgICApIHtcbiAgICAgICAgLy8gU2V0IHRoZSBlcXVpdmFsZW50IG9mIHtleGFjdDogZmFsc2V9IGFzIGRlZmF1bHQgZm9yIGFjdGl2ZSBtYXRjaCBvcHRpb25zLlxuICAgICAgICAvLyBXZSBhcmUgbm90IGFzc2lnbmluZyB0aGUgaXRlbS5pc0FjdGl2ZU1hdGNoT3B0aW9ucyBkaXJlY3RseSB0byB0aGVcbiAgICAgICAgLy8gW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXSBiZWNhdXNlIGlmIGl0J3MgXCJ1bmRlZmluZWRcIiBpbml0aWFsbHksIHRoZSByb3V0ZXJcbiAgICAgICAgLy8gd2lsbCB0aHJvdyBhbiBlcnJvciBhbmQgc3RvcCB3b3JraW5nLlxuXG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIExpZmVjeWNsZSBob29rc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBPbiBpbml0XG4gICAgICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG5cblxuICAgICAgICAvLyBNYXJrIGZvciBjaGVja1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGRlc3Ryb3lcbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xuXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0S1BJRGF0YU9uY2xpY2soa3BpRGF0YTogYW55LCBldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuX3RyZWV2aWV3U2VydmljZS5nZXRTZWxlY3RlZEtQaURhdGEoa3BpRGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0TmF2aWdhdGVUb0twaShkYXRhOiBhbnkpIHtcbiAgICAgICAgY29uc3Qga3BpSWQgPSBkYXRhWydpZCddO1xuICAgICAgICBsZXQgc3RhcnREYXRlLCBlbmREYXRlO1xuICAgICAgICBpZiAoZGF0YS5wYWdlSWQgJiYgZGF0YS5wYWdlSWQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TmF2aWdhdGVLcGlCeVBhZ2VJRChkYXRhLCBrcGlJZCwgZGF0YVsncGFnZUlkJ10pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl90cmVldmlld1NlcnZpY2UuZ2V0S3BpQnJvd3NlckNvbmZpZ0J5SWQoa3BpSWQpLnN1YnNjcmliZShrcGlEYXRhID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90cmVldmlld1NlcnZpY2UuZ2V0RmlsdGVyRm9yS3BpKGtwaURhdGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT2JqZWN0cyA9IGtwaURhdGFbMF1bJ2FwaV9jb25maWcnXS5maWx0ZXIoa3BpID0+IGtwaS5rcGlDb25maWcuZGlzcGxheVR5cGUgPT09IFwiZmlsdGVyXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGZpbHRlcmVkT2JqZWN0cyk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkT2JqZWN0cyAmJiBmaWx0ZXJlZE9iamVjdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlck9wdGlvbnMgPSBmaWx0ZXJlZE9iamVjdHNbMF0ua3BpQ29uZmlnLmRhdGFDb25maWcuZmlsdGVySXRlbXM7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlck9wdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmZpbHRlclR5cGUgPT0gJ2RhdGUnIHx8IGVsZW1lbnQuZmlsdGVyVHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGVmYXVsdEZpbHRlclR5cGUgPT0gXCJkeW5hbWljXCIgJiYgZWxlbWVudC5tb21lbnRGdW5jdGlvbiAhPT0gXCJcIiAmJiBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZSAhPT0gXCJcIiAmJiBlbGVtZW50Lm1vbWVudEZvcm1hdGUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgW2NvdW50LCB1bml0XSA9IGVsZW1lbnQuZGVmYXVsdEZpbHRlclZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKVtlbGVtZW50Lm1vbWVudEZ1bmN0aW9uXShwYXJzZUludChjb3VudCksIHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBbY291bnQsIHVuaXRdID0gZWxlbWVudC5kZWZhdWx0RmlsdGVyVmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZERhdGUgPSBtb21lbnQoKVtlbGVtZW50Lm1vbWVudEZ1bmN0aW9uXShwYXJzZUludChjb3VudCksIHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgnMzAnLCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgICAgICAgICAgICBlbmREYXRlID0gbW9tZW50KCkuc3VidHJhY3QoJzEnLCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TmF2aWdhdGVLcGkoZGF0YSwga3BpSWQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuXG4gICAgfVxuXG4gICAgZ2V0TmF2aWdhdGVLcGkoZGF0YSwga3BpSWQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSkge1xuICAgICAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgJ3N0YXJ0RGF0ZSc6IHN0YXJ0RGF0ZSxcbiAgICAgICAgICAgICAgICAnZW5kRGF0ZSc6IGVuZERhdGUsXG4gICAgICAgICAgICAgICAgJ2lkJzoga3BpSWQsXG4gICAgICAgICAgICAgICAgJ25hbWUnOiBkYXRhWyduYW1lJ11cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGRhdGEuaXNBY2Nlc3NpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL2FwcHMva3BpLycgKyBrcGlJZCArICcvJ10sIG5hdmlnYXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5uYXZpZ2F0ZShbJy9hcHBzL2twaS9rcGlfZGF0YSddLCBuYXZpZ2F0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldE5hdmlnYXRlS3BpQnlQYWdlSUQoZGF0YSwga3BpSWQsIHBhZ2VJZCkge1xuICAgICAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgJ3BhZ2VJZCc6IHBhZ2VJZCxcbiAgICAgICAgICAgICAgICAnaWQnOiBrcGlJZCxcbiAgICAgICAgICAgICAgICAnbmFtZSc6IGRhdGFbJ25hbWUnXVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZGF0YS5pc0FjY2Vzc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUubmF2aWdhdGUoWycvYXBwcy9rcGkvJyArIGtwaUlkICsgJy8nXSwgbmF2aWdhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL2FwcHMva3BpL2twaVZpZXcnXSwgbmF2aWdhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRFZGl0VHJlZURhdGEoaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuZWRpdGFibGVLcGlCYXNpY0RhdGEuZW1pdChpdGVtKTtcbiAgICB9XG5cblxufVxuIiwiPCEtLSBJdGVtIHdyYXBwZXIgLS0+XG48ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS13cmFwcGVyXCIgW2NsYXNzLnRyZWV2aWV3LWl0ZW0taGFzLXN1YnRpdGxlXT1cIiEhaXRlbS5zdWJ0aXRsZVwiXG4gICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzPy53cmFwcGVyXCIgKGNsaWNrKT1cImdldEtQSURhdGFPbmNsaWNrKGl0ZW0sICRldmVudClcIiAoZGJsY2xpY2spPSdnZXROYXZpZ2F0ZVRvS3BpKGl0ZW0pJyAqbmdJZj1cIml0ZW0uaXNWaXNpYmxlXCI+XG5cbiAgICA8IS0tIEl0ZW0gd2l0aCBhbiBpbnRlcm5hbCBsaW5rIC0tPlxuICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0ubGluayAmJiAhaXRlbS5leHRlcm5hbExpbmsgJiYgIWl0ZW0uZnVuY3Rpb24gJiYgIWl0ZW0uZGlzYWJsZWRcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJ0cmVldmlldy1pdGVtXCIgW25nQ2xhc3NdPVwieyd0cmVldmlldy1pdGVtLWFjdGl2ZS1mb3JjZWQnOiBpdGVtLmFjdGl2ZX1cIiBbcm91dGVyTGlua109XCJbaXRlbS5saW5rXVwiXG4gICAgICAgICAgICBbZnJhZ21lbnRdPVwiaXRlbS5mcmFnbWVudCA/PyBudWxsXCIgW3ByZXNlcnZlRnJhZ21lbnRdPVwiaXRlbS5wcmVzZXJ2ZUZyYWdtZW50ID8/IGZhbHNlXCJcbiAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zID8/IG51bGxcIiBbcXVlcnlQYXJhbXNIYW5kbGluZ109XCJpdGVtLnF1ZXJ5UGFyYW1zSGFuZGxpbmcgPz8gbnVsbFwiXG4gICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZV09XCIndHJlZXZpZXctaXRlbS1hY3RpdmUnXCIgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cImlzQWN0aXZlTWF0Y2hPcHRpb25zXCJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIml0ZW0udG9vbHRpcCB8fCAnJ1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2E+XG4gICAgPC9uZy1jb250YWluZXI+IC0tPlxuXG5cbiAgICA8IS0tIEl0ZW0gd2l0aCBhIG5vIGxpbmsgYW5kIG5vIGZ1bmN0aW9uIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5saW5rICYmICFpdGVtLmZ1bmN0aW9uICYmICFpdGVtLmRpc2FibGVkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtXCIgaWQ9XCJrcGlJZC17e2l0ZW0udGlkfX1cIiBbbWF0VG9vbHRpcF09XCJpdGVtLnRvb2x0aXAgfHwgJydcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PlxuXG48IS0tIEl0ZW0gdGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZT5cblxuICAgIDwhLS0gSWNvbiAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlcz8uaWNvblwiIFtzdmdJY29uXT1cIml0ZW0uaWNvblwiPjwvbWF0LWljb24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFRpdGxlICYgU3VidGl0bGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0tdGl0bGUtd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS10aXRsZSBjYXBpdGFsaXplXCI+XG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXM/Lm5hbWVcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbCB0ZXh0LXNreS04MDAgbXgtMiBob3Zlcjp0ZXh0LXNreS00MDAgY3Vyc29yLXBvaW50ZXIgXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdldEVkaXRUcmVlRGF0YShpdGVtKVwiICpuZ0lmPVwiaXNFZGl0SWNvblwiPjwvaT4ge3tpdGVtLm5hbWV9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uc3VidGl0bGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLXN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzPy5zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2l0ZW0uc3VidGl0bGV9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gQmFkZ2UgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0uYmFkZ2VcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0tYmFkZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLWJhZGdlLWNvbnRlbnRcIiBbbmdDbGFzc109XCJpdGVtLmJhZGdlLmNsYXNzZXNcIj5cbiAgICAgICAgICAgICAgICB7e2l0ZW0uYmFkZ2UudGl0bGV9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG48L25nLXRlbXBsYXRlPiJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvY29tcG9uZW50cy9iYXNpYy9iYXNpYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL2Jhc2ljL2Jhc2ljLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUV0SSxPQUFPLEVBQUUsT0FBTyxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sTUFBTSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBT3pDLE1BQU0sT0FBTywwQkFBMEI7SUFrQm5DLFlBQ1ksa0JBQXFDLEVBQ3JDLGdCQUFrQyxFQUNsQyxLQUFhO1FBRmIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFqQmhCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHcEIseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFJdEUsb0JBQWUsR0FBaUIsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQWtCM0QsQ0FBQztJQVNELFFBQVE7UUFJSixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFM0MsQ0FBQztJQUtELFdBQVc7UUFHUCxJ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LEdBQUcsR0FBRyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDakU7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMxRDtJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBUztRQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7O3VIQW5JUSwwQkFBMEI7MkdBQTFCLDBCQUEwQiwwT0NWdkMsNmxGQTJEYzsyRkRqREQsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNJLHFCQUFxQixtQkFFZCx1QkFBdUIsQ0FBQyxNQUFNOzRKQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRVcsb0JBQW9CO3NCQUFwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBPdXRwdXQsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElzQWN0aXZlTWF0Y2hPcHRpb25zLCBOYXZpZ2F0aW9uRXh0cmFzLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJy4uLy4uL21vbWVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ3JlYXRlS3BJU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NyZWF0ZUtwaS5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHJlZXZpZXctYmFzaWMtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Jhc2ljLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUcmVlVmlld0Jhc2ljSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASW5wdXQoKSBpdGVtOiBhbnk7XG4gICAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIEBJbnB1dCgpIGludGVybmFsUm91dGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBpc0VkaXRJY29uOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgdHJlZUlkOiBhbnk7XG5cbiAgICBAT3V0cHV0KCkgcHVibGljIGVkaXRhYmxlS3BpQmFzaWNEYXRhOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXG4gICAgaXNBY3RpdmVNYXRjaE9wdGlvbnM6IElzQWN0aXZlTWF0Y2hPcHRpb25zO1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICBHX0RFRkFVTFRfU1RBUlRfREFURTogYW55O1xuICAgIEdfREVGQVVMVF9FTkRfREFURTogYW55O1xuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfdHJlZXZpZXdTZXJ2aWNlOiBDcmVhdGVLcElTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBSb3V0ZXIsXG5cbiAgICApIHtcbiAgICAgICAgLy8gU2V0IHRoZSBlcXVpdmFsZW50IG9mIHtleGFjdDogZmFsc2V9IGFzIGRlZmF1bHQgZm9yIGFjdGl2ZSBtYXRjaCBvcHRpb25zLlxuICAgICAgICAvLyBXZSBhcmUgbm90IGFzc2lnbmluZyB0aGUgaXRlbS5pc0FjdGl2ZU1hdGNoT3B0aW9ucyBkaXJlY3RseSB0byB0aGVcbiAgICAgICAgLy8gW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXSBiZWNhdXNlIGlmIGl0J3MgXCJ1bmRlZmluZWRcIiBpbml0aWFsbHksIHRoZSByb3V0ZXJcbiAgICAgICAgLy8gd2lsbCB0aHJvdyBhbiBlcnJvciBhbmQgc3RvcCB3b3JraW5nLlxuXG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIExpZmVjeWNsZSBob29rc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBPbiBpbml0XG4gICAgICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG5cblxuICAgICAgICAvLyBNYXJrIGZvciBjaGVja1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9uIGRlc3Ryb3lcbiAgICAgKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBhbGwgc3Vic2NyaXB0aW9uc1xuXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgZ2V0S1BJRGF0YU9uY2xpY2soa3BpRGF0YTogYW55LCBldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuX3RyZWV2aWV3U2VydmljZS5nZXRTZWxlY3RlZEtQaURhdGEoa3BpRGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0TmF2aWdhdGVUb0twaShkYXRhOiBhbnkpIHtcbiAgICAgICAgY29uc3Qga3BpSWQgPSBkYXRhWydpZCddO1xuICAgICAgICBsZXQgc3RhcnREYXRlLCBlbmREYXRlO1xuICAgICAgICBpZiAoZGF0YS5wYWdlSWQgJiYgZGF0YS5wYWdlSWQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TmF2aWdhdGVLcGlCeVBhZ2VJRChkYXRhLCBrcGlJZCwgZGF0YVsncGFnZUlkJ10pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl90cmVldmlld1NlcnZpY2UuZ2V0S3BpQnJvd3NlckNvbmZpZ0J5SWQoa3BpSWQpLnN1YnNjcmliZShrcGlEYXRhID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl90cmVldmlld1NlcnZpY2UuZ2V0RmlsdGVyRm9yS3BpKGtwaURhdGEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT2JqZWN0cyA9IGtwaURhdGFbMF1bJ2FwaV9jb25maWcnXS5maWx0ZXIoa3BpID0+IGtwaS5rcGlDb25maWcuZGlzcGxheVR5cGUgPT09IFwiZmlsdGVyXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGZpbHRlcmVkT2JqZWN0cyk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlcmVkT2JqZWN0cyAmJiBmaWx0ZXJlZE9iamVjdHMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlck9wdGlvbnMgPSBmaWx0ZXJlZE9iamVjdHNbMF0ua3BpQ29uZmlnLmRhdGFDb25maWcuZmlsdGVySXRlbXM7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlck9wdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmZpbHRlclR5cGUgPT0gJ2RhdGUnIHx8IGVsZW1lbnQuZmlsdGVyVHlwZSA9PSAnZGF0ZXRpbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuZGVmYXVsdEZpbHRlclR5cGUgPT0gXCJkeW5hbWljXCIgJiYgZWxlbWVudC5tb21lbnRGdW5jdGlvbiAhPT0gXCJcIiAmJiBlbGVtZW50LmRlZmF1bHRGaWx0ZXJWYWx1ZSAhPT0gXCJcIiAmJiBlbGVtZW50Lm1vbWVudEZvcm1hdGUgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXBpTmFtZSA9PSBcInN0YXJ0RGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgW2NvdW50LCB1bml0XSA9IGVsZW1lbnQuZGVmYXVsdEZpbHRlclZhbHVlLnNwbGl0KCcsJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKVtlbGVtZW50Lm1vbWVudEZ1bmN0aW9uXShwYXJzZUludChjb3VudCksIHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmFwaU5hbWUgPT0gXCJlbmREYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBbY291bnQsIHVuaXRdID0gZWxlbWVudC5kZWZhdWx0RmlsdGVyVmFsdWUuc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZERhdGUgPSBtb21lbnQoKVtlbGVtZW50Lm1vbWVudEZ1bmN0aW9uXShwYXJzZUludChjb3VudCksIHVuaXQpLmZvcm1hdChlbGVtZW50Lm1vbWVudEZvcm1hdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGFydERhdGUgPSBtb21lbnQoKS5zdWJ0cmFjdCgnMzAnLCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgICAgICAgICAgICBlbmREYXRlID0gbW9tZW50KCkuc3VidHJhY3QoJzEnLCAnZGF5cycpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TmF2aWdhdGVLcGkoZGF0YSwga3BpSWQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cblxuXG4gICAgfVxuXG4gICAgZ2V0TmF2aWdhdGVLcGkoZGF0YSwga3BpSWQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSkge1xuICAgICAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgJ3N0YXJ0RGF0ZSc6IHN0YXJ0RGF0ZSxcbiAgICAgICAgICAgICAgICAnZW5kRGF0ZSc6IGVuZERhdGUsXG4gICAgICAgICAgICAgICAgJ2lkJzoga3BpSWQsXG4gICAgICAgICAgICAgICAgJ25hbWUnOiBkYXRhWyduYW1lJ11cbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGRhdGEuaXNBY2Nlc3NpYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL2FwcHMva3BpLycgKyBrcGlJZCArICcvJ10sIG5hdmlnYXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5uYXZpZ2F0ZShbJy9hcHBzL2twaS9rcGlfZGF0YSddLCBuYXZpZ2F0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldE5hdmlnYXRlS3BpQnlQYWdlSUQoZGF0YSwga3BpSWQsIHBhZ2VJZCkge1xuICAgICAgICBsZXQgbmF2aWdhdGlvbjogTmF2aWdhdGlvbkV4dHJhcyA9IHtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgJ3BhZ2VJZCc6IHBhZ2VJZCxcbiAgICAgICAgICAgICAgICAnaWQnOiBrcGlJZCxcbiAgICAgICAgICAgICAgICAnbmFtZSc6IGRhdGFbJ25hbWUnXVxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBpZiAoZGF0YS5pc0FjY2Vzc2libGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUubmF2aWdhdGUoWycvYXBwcy9rcGkvJyArIGtwaUlkICsgJy8nXSwgbmF2aWdhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLm5hdmlnYXRlKFsnL2FwcHMva3BpL2twaVZpZXcnXSwgbmF2aWdhdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRFZGl0VHJlZURhdGEoaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuZWRpdGFibGVLcGlCYXNpY0RhdGEuZW1pdChpdGVtKTtcbiAgICB9XG5cblxufVxuIiwiPCEtLSBJdGVtIHdyYXBwZXIgLS0+XG48ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS13cmFwcGVyXCIgW2NsYXNzLnRyZWV2aWV3LWl0ZW0taGFzLXN1YnRpdGxlXT1cIiEhaXRlbS5zdWJ0aXRsZVwiXG4gICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzPy53cmFwcGVyXCIgKGNsaWNrKT1cImdldEtQSURhdGFPbmNsaWNrKGl0ZW0sICRldmVudClcIiAoZGJsY2xpY2spPSdnZXROYXZpZ2F0ZVRvS3BpKGl0ZW0pJyAqbmdJZj1cIml0ZW0udmlzaWJpbGl0eVwiPlxuXG4gICAgPCEtLSBJdGVtIHdpdGggYW4gaW50ZXJuYWwgbGluayAtLT5cbiAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmxpbmsgJiYgIWl0ZW0uZXh0ZXJuYWxMaW5rICYmICFpdGVtLmZ1bmN0aW9uICYmICFpdGVtLmRpc2FibGVkXCI+XG4gICAgICAgIDxhIGNsYXNzPVwidHJlZXZpZXctaXRlbVwiIFtuZ0NsYXNzXT1cInsndHJlZXZpZXctaXRlbS1hY3RpdmUtZm9yY2VkJzogaXRlbS5hY3RpdmV9XCIgW3JvdXRlckxpbmtdPVwiW2l0ZW0ubGlua11cIlxuICAgICAgICAgICAgW2ZyYWdtZW50XT1cIml0ZW0uZnJhZ21lbnQgPz8gbnVsbFwiIFtwcmVzZXJ2ZUZyYWdtZW50XT1cIml0ZW0ucHJlc2VydmVGcmFnbWVudCA/PyBmYWxzZVwiXG4gICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiaXRlbS5xdWVyeVBhcmFtcyA/PyBudWxsXCIgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiaXRlbS5xdWVyeVBhcmFtc0hhbmRsaW5nID8/IG51bGxcIlxuICAgICAgICAgICAgW3JvdXRlckxpbmtBY3RpdmVdPVwiJ3RyZWV2aWV3LWl0ZW0tYWN0aXZlJ1wiIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJpc0FjdGl2ZU1hdGNoT3B0aW9uc1wiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJpdGVtLnRvb2x0aXAgfHwgJydcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9hPlxuICAgIDwvbmctY29udGFpbmVyPiAtLT5cblxuXG4gICAgPCEtLSBJdGVtIHdpdGggYSBubyBsaW5rIGFuZCBubyBmdW5jdGlvbiAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0ubGluayAmJiAhaXRlbS5mdW5jdGlvbiAmJiAhaXRlbS5kaXNhYmxlZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbVwiIGlkPVwia3BpSWQte3tpdGVtLmlkfX1cIiBbbWF0VG9vbHRpcF09XCJpdGVtLnRvb2x0aXAgfHwgJydcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpdGVtVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbjwvZGl2PlxuXG48IS0tIEl0ZW0gdGVtcGxhdGUgLS0+XG48bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZT5cblxuICAgIDwhLS0gSWNvbiAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0taWNvblwiIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlcz8uaWNvblwiIFtzdmdJY29uXT1cIml0ZW0uaWNvblwiPjwvbWF0LWljb24+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIFRpdGxlICYgU3VidGl0bGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0tdGl0bGUtd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS10aXRsZSBjYXBpdGFsaXplXCI+XG4gICAgICAgICAgICA8c3BhbiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXM/Lm5hbWVcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBlbmNpbCB0ZXh0LXNreS04MDAgbXgtMiBob3Zlcjp0ZXh0LXNreS00MDAgY3Vyc29yLXBvaW50ZXIgXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdldEVkaXRUcmVlRGF0YShpdGVtKVwiICpuZ0lmPVwiaXNFZGl0SWNvblwiPjwvaT4ge3tpdGVtLnRpdGxlfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnN1YnRpdGxlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS1zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlcz8uc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3tpdGVtLnN1YnRpdGxlfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIEJhZGdlIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmJhZGdlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLWJhZGdlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS1iYWRnZS1jb250ZW50XCIgW25nQ2xhc3NdPVwiaXRlbS5iYWRnZS5jbGFzc2VzXCI+XG4gICAgICAgICAgICAgICAge3tpdGVtLmJhZGdlLnRpdGxlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -8,7 +8,6 @@ import * as i3 from "@angular/common";
8
8
  import * as i4 from "@angular/material/icon";
9
9
  import * as i5 from "@angular/material/tooltip";
10
10
  import * as i6 from "../basic/basic.component";
11
- import * as i7 from "../divider/divider.component";
12
11
  export class TreeViewCollapsableItemComponent {
13
12
  constructor(_changeDetectorRef, _router, _treeviewService) {
14
13
  this._changeDetectorRef = _changeDetectorRef;
@@ -27,17 +26,7 @@ export class TreeViewCollapsableItemComponent {
27
26
  };
28
27
  }
29
28
  ngOnInit() {
30
- const activeItem = this.findActiveChild(this.item, this.treeId);
31
- if (this.treeId == undefined || this.treeId == null) {
32
- if (this.autoCollapse) {
33
- this.collapse();
34
- }
35
- }
36
- else {
37
- if (activeItem) {
38
- this.expand();
39
- }
40
- }
29
+ console.log(this.item, 'items');
41
30
  }
42
31
  ngOnDestroy() {
43
32
  this._unsubscribeAll.next(null);
@@ -134,10 +123,10 @@ export class TreeViewCollapsableItemComponent {
134
123
  }
135
124
  }
136
125
  TreeViewCollapsableItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewCollapsableItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i2.TreeviewSharedService }], target: i0.ɵɵFactoryTarget.Component });
137
- TreeViewCollapsableItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: { autoCollapse: "autoCollapse", item: "item", name: "name", treeId: "treeId", internalRoute: "internalRoute", isEditIcon: "isEditIcon" }, outputs: { editableKpiData: "editableKpiData" }, host: { properties: { "class": "this.classList" } }, ngImport: i0, template: "<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" *ngIf=\"item.isVisible\">\n\n <div class=\"treeview-item\" id=\"kpiId-{{item.tid}}\" [ngClass]=\"{'treeview-item-disabled': item.disabled}\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable()\">\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer\"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.name}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.name}}\n </div>\n </div>\n </ng-container>\n\n <!-- Arrow -->\n <mat-icon class=\"treeview-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_solid:chevron-right'\"></mat-icon>\n\n </div>\n\n</div>\n\n<div class=\"treeview-item-children\" *ngIf=\"!isCollapsed\" @expandCollapse>\n\n <ng-container *ngFor=\"let item of item.nodes; trackBy: trackByFn\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tag_type === 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getKpiEditKpiBasicData($event)\"\n [internalRoute]=\"internalRoute\"></treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tag_type === 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getKpiEditKpiData($event)\" [internalRoute]=\"internalRoute\"\n [autoCollapse]=\"autoCollapse\" [treeId]=\"treeId\">\n </treeview-collapsable-item>\n </ng-container>\n\n <!-- Divider -->\n <ng-container *ngIf=\"item.tag_type === 'divider'\">\n <treeview-divider-item [item]=\"item\" [name]=\"name\"></treeview-divider-item>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</div>", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: ["item", "name", "internalRoute", "isEditIcon", "treeId"], outputs: ["editableKpiBasicData"] }, { kind: "component", type: TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: ["autoCollapse", "item", "name", "treeId", "internalRoute", "isEditIcon"], outputs: ["editableKpiData"] }, { kind: "component", type: i7.TreeViewDividerItemComponent, selector: "treeview-divider-item", inputs: ["item", "name"] }], animations: gammaAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush });
126
+ TreeViewCollapsableItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: { autoCollapse: "autoCollapse", item: "item", name: "name", treeId: "treeId", internalRoute: "internalRoute", isEditIcon: "isEditIcon" }, outputs: { editableKpiData: "editableKpiData" }, host: { properties: { "class": "this.classList" } }, ngImport: i0, template: "<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" *ngIf=\"item.visibility\">\n\n <div class=\"treeview-item\" id=\"kpiId-{{item.id}}\" [ngClass]=\"{'treeview-item-disabled': item.disabled}\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable()\">\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer\"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.title}}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n \n\n <!-- Arrow -->\n <mat-icon class=\"treeview-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_solid:chevron-right'\"></mat-icon>\n\n </div>\n\n</div>\n\n<div class=\"treeview-item-children\" *ngIf=\"!isCollapsed\" @expandCollapse>\n\n <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tagType == 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getKpiEditKpiBasicData($event)\"\n [internalRoute]=\"internalRoute\"></treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tagType == 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getKpiEditKpiData($event)\" [internalRoute]=\"internalRoute\"\n [autoCollapse]=\"autoCollapse\" [treeId]=\"treeId\">\n </treeview-collapsable-item>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</div>", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i6.TreeViewBasicItemComponent, selector: "treeview-basic-item", inputs: ["item", "name", "internalRoute", "isEditIcon", "treeId"], outputs: ["editableKpiBasicData"] }, { kind: "component", type: TreeViewCollapsableItemComponent, selector: "treeview-collapsable-item", inputs: ["autoCollapse", "item", "name", "treeId", "internalRoute", "isEditIcon"], outputs: ["editableKpiData"] }], animations: gammaAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush });
138
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TreeViewCollapsableItemComponent, decorators: [{
139
128
  type: Component,
140
- args: [{ selector: 'treeview-collapsable-item', animations: gammaAnimations, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" *ngIf=\"item.isVisible\">\n\n <div class=\"treeview-item\" id=\"kpiId-{{item.tid}}\" [ngClass]=\"{'treeview-item-disabled': item.disabled}\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable()\">\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer\"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.name}}\n </span>\n </div>\n <ng-container *ngIf=\"item.subtitle\">\n <div class=\"treeview-item-subtitle\">\n <span [ngClass]=\"item.classes?.subtitle\">\n {{item.subtitle}}\n </span>\n </div>\n </ng-container>\n </div>\n\n <!-- Badge -->\n <ng-container *ngIf=\"item.badge\">\n <div class=\"treeview-item-badge\">\n <div class=\"treeview-item-badge-content\" [ngClass]=\"item.badge.classes\">\n {{item.badge.name}}\n </div>\n </div>\n </ng-container>\n\n <!-- Arrow -->\n <mat-icon class=\"treeview-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_solid:chevron-right'\"></mat-icon>\n\n </div>\n\n</div>\n\n<div class=\"treeview-item-children\" *ngIf=\"!isCollapsed\" @expandCollapse>\n\n <ng-container *ngFor=\"let item of item.nodes; trackBy: trackByFn\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tag_type === 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getKpiEditKpiBasicData($event)\"\n [internalRoute]=\"internalRoute\"></treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tag_type === 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getKpiEditKpiData($event)\" [internalRoute]=\"internalRoute\"\n [autoCollapse]=\"autoCollapse\" [treeId]=\"treeId\">\n </treeview-collapsable-item>\n </ng-container>\n\n <!-- Divider -->\n <ng-container *ngIf=\"item.tag_type === 'divider'\">\n <treeview-divider-item [item]=\"item\" [name]=\"name\"></treeview-divider-item>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</div>" }]
129
+ args: [{ selector: 'treeview-collapsable-item', animations: gammaAnimations, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"treeview-item-wrapper\" [class.treeview-item-has-subtitle]=\"!!item.subtitle\"\n [ngClass]=\"item.classes?.wrapper\" *ngIf=\"item.visibility\">\n\n <div class=\"treeview-item\" id=\"kpiId-{{item.id}}\" [ngClass]=\"{'treeview-item-disabled': item.disabled}\"\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable()\">\n\n <!-- Icon -->\n <ng-container *ngIf=\"item.icon\">\n <mat-icon class=\"treeview-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\"></mat-icon>\n </ng-container>\n\n <!-- Title & Subtitle -->\n <div class=\"treeview-item-title-wrapper\">\n <div class=\"treeview-item-title\">\n <span [ngClass]=\"item.classes?.name\">\n <i class=\"fa fa-pencil text-sky-800 mx-2 hover:text-sky-400 cursor-pointer\"\n (click)=\"getEditTreeData(item)\" *ngIf=\"isEditIcon\"></i> {{item.title}}\n </span>\n </div>\n </div>\n\n <!-- Badge -->\n \n\n <!-- Arrow -->\n <mat-icon class=\"treeview-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_solid:chevron-right'\"></mat-icon>\n\n </div>\n\n</div>\n\n<div class=\"treeview-item-children\" *ngIf=\"!isCollapsed\" @expandCollapse>\n\n <ng-container *ngFor=\"let item of item.children; trackBy: trackByFn\">\n\n <!-- Skip the hidden items -->\n <ng-container *ngIf=\"(item.hidden && !item.hidden(item)) || !item.hidden\">\n\n <!-- Basic -->\n <ng-container *ngIf=\"item.tagType == 'child'\">\n <treeview-basic-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiBasicData)=\"getKpiEditKpiBasicData($event)\"\n [internalRoute]=\"internalRoute\"></treeview-basic-item>\n </ng-container>\n\n <!-- Collapsable -->\n <ng-container *ngIf=\"item.tagType == 'parent'\">\n <treeview-collapsable-item [item]=\"item\" [name]=\"name\" [isEditIcon]=\"isEditIcon\"\n (editableKpiData)=\"getKpiEditKpiData($event)\" [internalRoute]=\"internalRoute\"\n [autoCollapse]=\"autoCollapse\" [treeId]=\"treeId\">\n </treeview-collapsable-item>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</div>" }]
141
130
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.Router }, { type: i2.TreeviewSharedService }]; }, propDecorators: { autoCollapse: [{
142
131
  type: Input
143
132
  }], item: [{
@@ -156,4 +145,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
156
145
  type: HostBinding,
157
146
  args: ['class']
158
147
  }] } });
159
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2FibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvY29tcG9uZW50cy9jb2xsYXBzYWJsZS9jb2xsYXBzYWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL2NvbGxhcHNhYmxlL2NvbGxhcHNhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkosT0FBTyxFQUFVLE9BQU8sRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7OztBQVNsRCxNQUFNLE9BQU8sZ0NBQWdDO0lBd0J6QyxZQUNZLGtCQUFxQyxFQUNyQyxPQUFlLEVBQ2YsZ0JBQXVDO1FBRnZDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDckMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBdUI7UUFqQjFDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFckMsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFFWCxvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3pFLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFcEIsb0JBQWUsR0FBaUIsSUFBSSxPQUFP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SUFDcEMsQ0FBQztJQUNELGVBQWUsQ0FBQyxJQUFJO1FBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxJQUFJO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OzZIQWhQUSxnQ0FBZ0M7aUhBQWhDLGdDQUFnQyx5VENkN0MscXBHQTJFTSxteUJEN0RPLGdDQUFnQyxvU0FIN0IsZUFBZTsyRkFHbEIsZ0NBQWdDO2tCQU41QyxTQUFTOytCQUNJLDJCQUEyQixjQUV6QixlQUFlLG1CQUNWLHVCQUF1QixDQUFDLE1BQU07aUtBT3RDLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUlXLGVBQWU7c0JBQS9CLE1BQU07Z0JBcUJtQixTQUFTO3NCQUFsQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgZmlsdGVyLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbi8vIGltcG9ydCB7IFRyZWV2aWV3Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdHJlZXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IGdhbW1hQW5pbWF0aW9ucyB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbic7XG5pbXBvcnQgeyBUcmVldmlld1NoYXJlZFNlcnZpY2UgfSBmcm9tICcuLi8uLi90cmVldmlldy1zaGFyZWQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndHJlZXZpZXctY29sbGFwc2FibGUtaXRlbScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbGxhcHNhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBhbmltYXRpb25zOiBnYW1tYUFuaW1hdGlvbnMsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVHJlZVZpZXdDb2xsYXBzYWJsZUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2F1dG9Db2xsYXBzZTogQm9vbGVhbklucHV0O1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG5cbiAgICBASW5wdXQoKSBhdXRvQ29sbGFwc2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXRlbTogYW55O1xuICAgIEBJbnB1dCgpIG5hbWU6IHN0cmluZztcbiAgICBASW5wdXQoKSB0cmVlSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBpbnRlcm5hbFJvdXRlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaXNFZGl0SWNvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgaXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBlZGl0YWJsZUtwaURhdGE6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5cbiAgICBpc0V4cGFuZGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgLy8gcHVibGljIF90cmVldmlld0NvbXBvbmVudDogVHJlZXZpZXdDb21wb25lbnQ7XG4gICAgcHJpdmF0ZSBfdW5zdWJzY3JpYmVBbGw6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICAgIC8qKlxuICAgICAqIENvbnN0cnVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgX3RyZWV2aWV3U2VydmljZTogVHJlZXZpZXdTaGFyZWRTZXJ2aWNlXG4gICAgICAgIC8vIHByaXZhdGUgX2Z1c2VOYXZpZ2F0aW9uU2VydmljZTogRnVzZU5hdmlnYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgKiBIb3N0IGJpbmRpbmcgZm9yIGNvbXBvbmVudCBjbGFzc2VzXG4gICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgZ2V0IGNsYXNzTGlzdCgpOiBhbnkge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICd0cmVldmlldy1pdGVtLWNvbGxhcHNlZCc6IHRoaXMuaXNDb2xsYXBzZWQsXG4gICAgICAgICAgICAndHJlZXZpZXctaXRlbS1leHBhbmRlZCc6IHRoaXMuaXNFeHBhbmRlZFxuICAgICAgICB9O1xuICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBHZXQgdGhlIHBhcmVudCBuYXZpZ2F0aW9uIGNvbXBvbmVudFxuICAgICAgICAvLyB0aGlzLl90cmVldmlld0NvbXBvbmVudCA9IHRoaXMuX2Z1c2VOYXZpZ2F0aW9uU2VydmljZS5nZXRDb21wb25lbnQodGhpcy5uYW1lKTtcblxuICAgICAgICAvLyBJZiB0aGUgaXRlbSBoYXMgYSBjaGlsZHJlbiB0aGF0IGhhcyBhIG1hdGNoaW5nIHVybCB3aXRoIHRoZSBjdXJyZW50IHVybCwgZXhwYW5kLi4uXG4gICAgICAgIC8vIGlmICh0aGlzLl9oYXNBY3RpdmVDaGlsZCh0aGlzLml0ZW0sIHRoaXMuX3JvdXRlci51cmwpKSB7XG4gICAgICAgIC8vICAgICB0aGlzLmV4cGFuZCgpO1xuICAgICAgICAvLyB9XG5cblxuICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gdGhpcy5maW5kQWN0aXZlQ2hpbGQodGhpcy5pdGVtLCB0aGlzLnRyZWVJZCk7XG4gICAgICAgIGlmICh0aGlzLnRyZWVJZCA9PSB1bmRlZmluZWQgfHwgdGhpcy50cmVlSWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXV0b0NvbGxhcHNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2xsYXBzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiAodGhpcy5faGFzQWN0aXZlQ2hpbGQoYWN0aXZlSXRlbSwgdGhpcy50cmVlSWQpKSB7XG5cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gZGVzdHJveVxuICAgICAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIGFsbCBzdWJzY3JpcHRpb25zXG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuX3Vuc3Vic2NyaWJlQWxsLmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIFB1YmxpYyBtZXRob2RzXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIC8qKlxuICAgICAqIENvbGxhcHNlXG4gICAgICovXG4gICAgY29sbGFwc2UoKTogdm9pZCB7XG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgaXRlbSBpcyBkaXNhYmxlZFxuICAgICAgICBpZiAodGhpcy5pdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXR1cm4gaWYgdGhlIGl0ZW0gaXMgYWxyZWFkeSBjb2xsYXBzZWRcbiAgICAgICAgaWYgKHRoaXMuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbGxhcHNlIGl0XG4gICAgICAgIHRoaXMuaXNDb2xsYXBzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0NvbGxhcHNlZDtcblxuICAgICAgICAvLyBNYXJrIGZvciBjaGVja1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBvYnNlcnZhYmxlXG4gICAgICAgIHRoaXMuX3RyZWV2aWV3U2VydmljZS5vbkNvbGxhcHNhYmxlSXRlbUNvbGxhcHNlZC5uZXh0KHRoaXMuaXRlbSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXhwYW5kXG4gICAgICovXG4gICAgZXhwYW5kKCk6IHZvaWQge1xuICAgICAgICAvLyBSZXR1cm4gaWYgdGhlIGl0ZW0gaXMgZGlzYWJsZWRcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmV0dXJuIGlmIHRoZSBpdGVtIGlzIGFscmVhZHkgZXhwYW5kZWRcbiAgICAgICAgaWYgKCF0aGlzLmlzQ29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeHBhbmQgaXRcbiAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0NvbGxhcHNlZDtcblxuICAgICAgICAvLyBNYXJrIGZvciBjaGVja1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBvYnNlcnZhYmxlXG4gICAgICAgIHRoaXMuX3RyZWV2aWV3U2VydmljZS5vbkNvbGxhcHNhYmxlSXRlbUV4cGFuZGVkLm5leHQodGhpcy5pdGVtKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGUgY29sbGFwc2FibGVcbiAgICAgKi9cbiAgICB0b2dnbGVDb2xsYXBzYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVG9nZ2xlIGNvbGxhcHNlL2V4cGFuZFxuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29sbGFwc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYWNrIGJ5IGZ1bmN0aW9uIGZvciBuZ0ZvciBsb29wc1xuICAgICAqXG4gICAgICogQHBhcmFtIGluZGV4XG4gICAgICogQHBhcmFtIGl0ZW1cbiAgICAgKi9cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgfHwgaW5kZXg7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIFByaXZhdGUgbWV0aG9kc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gaXRlbSBoYXMgdGhlIGdpdmVuIHVybFxuICAgICAqIGluIG9uZSBvZiBpdHMgY2hpbGRyZW5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICogQHBhcmFtIGN1cnJlbnRVcmxcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX2hhc0FjdGl2ZUNoaWxkKGl0ZW06IGFueSwgY3VycmVudFVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gaXRlbS5ub2RlcztcblxuICAgICAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGQudGlkID09PSBjdXJyZW50VXJsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hpbGQubm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhc0FjdGl2ZUNoaWxkKGNoaWxkLCBjdXJyZW50VXJsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZEFjdGl2ZUNoaWxkKGl0ZW0sIHRyZWVJZCkge1xuICAgICAgICBpZiAoaXRlbS50aWQgPT09IHRyZWVJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5ub2RlcyAmJiBpdGVtLm5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5ub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmZpbmRBY3RpdmVDaGlsZChpdGVtLm5vZGVzW2ldLCB0cmVlSWQpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhpcyBpcyBhIGNoaWxkcmVuXG4gICAgICogb2YgdGhlIGdpdmVuIGl0ZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJlbnRcbiAgICAgKiBAcGFyYW0gaXRlbVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNDaGlsZHJlbk9mKHBhcmVudDogYW55LCBpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnQubm9kZXM7XG5cbiAgICAgICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkcmVuLmluZGV4T2YoaXRlbSkgPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNDaGlsZHJlbk9mKGNoaWxkLCBpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0S3BpRWRpdEtwaURhdGEoaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuZWRpdGFibGVLcGlEYXRhLmVtaXQoaXRlbSk7XG4gICAgfVxuICAgIGdldEVkaXRUcmVlRGF0YShpdGVtKSB7XG4gICAgICAgIHRoaXMuZWRpdGFibGVLcGlEYXRhLmVtaXQoaXRlbSk7XG4gICAgfVxuICAgIGdldEtwaUVkaXRLcGlCYXNpY0RhdGEoaXRlbSkge1xuICAgICAgICB0aGlzLmVkaXRhYmxlS3BpRGF0YS5lbWl0KGl0ZW0pO1xuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0td3JhcHBlclwiIFtjbGFzcy50cmVldmlldy1pdGVtLWhhcy1zdWJ0aXRsZV09XCIhIWl0ZW0uc3VidGl0bGVcIlxuICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlcz8ud3JhcHBlclwiICpuZ0lmPVwiaXRlbS5pc1Zpc2libGVcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtXCIgaWQ9XCJrcGlJZC17e2l0ZW0udGlkfX1cIiBbbmdDbGFzc109XCJ7J3RyZWV2aWV3LWl0ZW0tZGlzYWJsZWQnOiBpdGVtLmRpc2FibGVkfVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cIml0ZW0udG9vbHRpcCB8fCAnJ1wiIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzYWJsZSgpXCI+XG5cbiAgICAgICAgPCEtLSBJY29uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0cmVldmlldy1pdGVtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXM/Lmljb25cIiBbc3ZnSWNvbl09XCJpdGVtLmljb25cIj48L21hdC1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFRpdGxlICYgU3VidGl0bGUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLXRpdGxlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzPy5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuY2lsIHRleHQtc2t5LTgwMCBteC0yIGhvdmVyOnRleHQtc2t5LTQwMCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0RWRpdFRyZWVEYXRhKGl0ZW0pXCIgKm5nSWY9XCJpc0VkaXRJY29uXCI+PC9pPiB7e2l0ZW0ubmFtZX19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLXN1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlcz8uc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbS5zdWJ0aXRsZX19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEJhZGdlIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5iYWRnZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0tYmFkZ2VcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbS1iYWRnZS1jb250ZW50XCIgW25nQ2xhc3NdPVwiaXRlbS5iYWRnZS5jbGFzc2VzXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7aXRlbS5iYWRnZS5uYW1lfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIEFycm93IC0tPlxuICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0cmVldmlldy1pdGVtLWFycm93IGljb24tc2l6ZS00XCIgW3N2Z0ljb25dPVwiJ2hlcm9pY29uc19zb2xpZDpjaGV2cm9uLXJpZ2h0J1wiPjwvbWF0LWljb24+XG5cbiAgICA8L2Rpdj5cblxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLWNoaWxkcmVuXCIgKm5nSWY9XCIhaXNDb2xsYXBzZWRcIiBAZXhwYW5kQ29sbGFwc2U+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW0ubm9kZXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxuXG4gICAgICAgIDwhLS0gU2tpcCB0aGUgaGlkZGVuIGl0ZW1zIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGl0ZW0uaGlkZGVuICYmICFpdGVtLmhpZGRlbihpdGVtKSkgfHwgIWl0ZW0uaGlkZGVuXCI+XG5cbiAgICAgICAgICAgIDwhLS0gQmFzaWMgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50YWdfdHlwZSA9PT0gJ2NoaWxkJ1wiPlxuICAgICAgICAgICAgICAgIDx0cmVldmlldy1iYXNpYy1pdGVtIFtpdGVtXT1cIml0ZW1cIiBbbmFtZV09XCJuYW1lXCIgW2lzRWRpdEljb25dPVwiaXNFZGl0SWNvblwiXG4gICAgICAgICAgICAgICAgICAgIChlZGl0YWJsZUtwaUJhc2ljRGF0YSk9XCJnZXRLcGlFZGl0S3BpQmFzaWNEYXRhKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbaW50ZXJuYWxSb3V0ZV09XCJpbnRlcm5hbFJvdXRlXCI+PC90cmVldmlldy1iYXNpYy1pdGVtPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sbGFwc2FibGUgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50YWdfdHlwZSA9PT0gJ3BhcmVudCdcIj5cbiAgICAgICAgICAgICAgICA8dHJlZXZpZXctY29sbGFwc2FibGUtaXRlbSBbaXRlbV09XCJpdGVtXCIgW25hbWVdPVwibmFtZVwiIFtpc0VkaXRJY29uXT1cImlzRWRpdEljb25cIlxuICAgICAgICAgICAgICAgICAgICAoZWRpdGFibGVLcGlEYXRhKT1cImdldEtwaUVkaXRLcGlEYXRhKCRldmVudClcIiBbaW50ZXJuYWxSb3V0ZV09XCJpbnRlcm5hbFJvdXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9Db2xsYXBzZV09XCJhdXRvQ29sbGFwc2VcIiBbdHJlZUlkXT1cInRyZWVJZFwiPlxuICAgICAgICAgICAgICAgIDwvdHJlZXZpZXctY29sbGFwc2FibGUtaXRlbT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8IS0tIERpdmlkZXIgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50YWdfdHlwZSA9PT0gJ2RpdmlkZXInXCI+XG4gICAgICAgICAgICAgICAgPHRyZWV2aWV3LWRpdmlkZXItaXRlbSBbaXRlbV09XCJpdGVtXCIgW25hbWVdPVwibmFtZVwiPjwvdHJlZXZpZXctZGl2aWRlci1pdGVtPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuPC9kaXY+Il19
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGFwc2FibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2FtbWEtYXBwLWNvbnRyb2xsZXIvc3JjL2xpYi90ZW1wbGF0ZS1tb2R1bGUvS3BpQ3JlYXRpb25Nb2R1bGUvdHJlZXZpZXcvY29tcG9uZW50cy9jb2xsYXBzYWJsZS9jb2xsYXBzYWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nYW1tYS1hcHAtY29udHJvbGxlci9zcmMvbGliL3RlbXBsYXRlLW1vZHVsZS9LcGlDcmVhdGlvbk1vZHVsZS90cmVldmlldy9jb21wb25lbnRzL2NvbGxhcHNhYmxlL2NvbGxhcHNhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkosT0FBTyxFQUFVLE9BQU8sRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUVsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7O0FBU2xELE1BQU0sT0FBTyxnQ0FBZ0M7SUF3QnpDLFlBQ1ksa0JBQXFDLEVBQ3JDLE9BQWUsRUFDZixnQkFBdUM7UUFGdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF1QjtRQWpCMUMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVyQyxnQkFBVyxHQUFZLElBQUksQ0FBQztRQUVYLG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHekUsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUVwQixvQkFBZSxHQUFpQixJQUFJLE9BQU8s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eUtBSDdCLGVBQWU7MkZBR2xCLGdDQUFnQztrQkFONUMsU0FBUzsrQkFDSSwyQkFBMkIsY0FFekIsZUFBZSxtQkFDVix1QkFBdUIsQ0FBQyxNQUFNO2lLQU90QyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFJVyxlQUFlO3NCQUEvQixNQUFNO2dCQXFCbUIsU0FBUztzQkFBbEMsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IGZpbHRlciwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG4vLyBpbXBvcnQgeyBUcmVldmlld0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL3RyZWV2aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBnYW1tYUFuaW1hdGlvbnMgfSBmcm9tICcuLi8uLi9hbmltYXRpb24nO1xuaW1wb3J0IHsgVHJlZXZpZXdTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdHJlZXZpZXctc2hhcmVkLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RyZWV2aWV3LWNvbGxhcHNhYmxlLWl0ZW0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xsYXBzYWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgYW5pbWF0aW9uczogZ2FtbWFBbmltYXRpb25zLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFRyZWVWaWV3Q29sbGFwc2FibGVJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9hdXRvQ29sbGFwc2U6IEJvb2xlYW5JbnB1dDtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvbiAqL1xuXG4gICAgQElucHV0KCkgYXV0b0NvbGxhcHNlOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGl0ZW06IGFueTtcbiAgICBASW5wdXQoKSBuYW1lOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdHJlZUlkOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaW50ZXJuYWxSb3V0ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGlzRWRpdEljb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlzQ29sbGFwc2VkOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKSBwdWJsaWMgZWRpdGFibGVLcGlEYXRhOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXG4gICAgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8vIHB1YmxpYyBfdHJlZXZpZXdDb21wb25lbnQ6IFRyZWV2aWV3Q29tcG9uZW50O1xuICAgIHByaXZhdGUgX3Vuc3Vic2NyaWJlQWxsOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIF90cmVldmlld1NlcnZpY2U6IFRyZWV2aWV3U2hhcmVkU2VydmljZVxuICAgICAgICAvLyBwcml2YXRlIF9mdXNlTmF2aWdhdGlvblNlcnZpY2U6IEZ1c2VOYXZpZ2F0aW9uU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIC8qKlxuICAgICogSG9zdCBiaW5kaW5nIGZvciBjb21wb25lbnQgY2xhc3Nlc1xuICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGdldCBjbGFzc0xpc3QoKTogYW55IHtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uICovXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAndHJlZXZpZXctaXRlbS1jb2xsYXBzZWQnOiB0aGlzLmlzQ29sbGFwc2VkLFxuICAgICAgICAgICAgJ3RyZWV2aWV3LWl0ZW0tZXhwYW5kZWQnOiB0aGlzLmlzRXhwYW5kZWRcbiAgICAgICAgfTtcbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb24gKi9cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gR2V0IHRoZSBwYXJlbnQgbmF2aWdhdGlvbiBjb21wb25lbnRcbiAgICAgICAgLy8gdGhpcy5fdHJlZXZpZXdDb21wb25lbnQgPSB0aGlzLl9mdXNlTmF2aWdhdGlvblNlcnZpY2UuZ2V0Q29tcG9uZW50KHRoaXMubmFtZSk7XG5cbiAgICAgICAgLy8gSWYgdGhlIGl0ZW0gaGFzIGEgY2hpbGRyZW4gdGhhdCBoYXMgYSBtYXRjaGluZyB1cmwgd2l0aCB0aGUgY3VycmVudCB1cmwsIGV4cGFuZC4uLlxuICAgICAgICAvLyBpZiAodGhpcy5faGFzQWN0aXZlQ2hpbGQodGhpcy5pdGVtLCB0aGlzLl9yb3V0ZXIudXJsKSkge1xuICAgICAgICAvLyAgICAgdGhpcy5leHBhbmQoKTtcbiAgICAgICAgLy8gfVxuY29uc29sZS5sb2codGhpcy5pdGVtLCdpdGVtcycpO1xuXG4gICAgICAgIC8vIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLmZpbmRBY3RpdmVDaGlsZCh0aGlzLml0ZW0sIHRoaXMudHJlZUlkKTtcbiAgICAgICAgLy8gaWYgKHRoaXMudHJlZUlkID09IHVuZGVmaW5lZCB8fCB0aGlzLnRyZWVJZCA9PSBudWxsKSB7XG4gICAgICAgIC8vICAgICBpZiAodGhpcy5hdXRvQ29sbGFwc2UpIHtcbiAgICAgICAgLy8gICAgICAgICB0aGlzLmNvbGxhcHNlKCk7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAvLyAgICAgICAgIHRoaXMuZXhwYW5kKCk7XG4gICAgICAgIC8vICAgICB9XG5cbiAgICAgICAgLy8gICAgIC8vIGlmICh0aGlzLl9oYXNBY3RpdmVDaGlsZChhY3RpdmVJdGVtLCB0aGlzLnRyZWVJZCkpIHtcblxuICAgICAgICAvLyAgICAgLy8gfVxuICAgICAgICAvLyB9XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPbiBkZXN0cm95XG4gICAgICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vIFVuc3Vic2NyaWJlIGZyb20gYWxsIHN1YnNjcmlwdGlvbnNcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5fdW5zdWJzY3JpYmVBbGwuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIEAgUHVibGljIG1ldGhvZHNcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICAgLyoqXG4gICAgICogQ29sbGFwc2VcbiAgICAgKi9cbiAgICBjb2xsYXBzZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gUmV0dXJuIGlmIHRoZSBpdGVtIGlzIGRpc2FibGVkXG4gICAgICAgIGlmICh0aGlzLml0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJldHVybiBpZiB0aGUgaXRlbSBpcyBhbHJlYWR5IGNvbGxhcHNlZFxuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29sbGFwc2UgaXRcbiAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuaXNFeHBhbmRlZCA9ICF0aGlzLmlzQ29sbGFwc2VkO1xuXG4gICAgICAgIC8vIE1hcmsgZm9yIGNoZWNrXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIG9ic2VydmFibGVcbiAgICAgICAgdGhpcy5fdHJlZXZpZXdTZXJ2aWNlLm9uQ29sbGFwc2FibGVJdGVtQ29sbGFwc2VkLm5leHQodGhpcy5pdGVtKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFeHBhbmRcbiAgICAgKi9cbiAgICBleHBhbmQoKTogdm9pZCB7XG4gICAgICAgIFxuICAgICAgICAvLyBSZXR1cm4gaWYgdGhlIGl0ZW0gaXMgZGlzYWJsZWRcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUmV0dXJuIGlmIHRoZSBpdGVtIGlzIGFscmVhZHkgZXhwYW5kZWRcbiAgICAgICAgaWYgKCF0aGlzLmlzQ29sbGFwc2VkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeHBhbmQgaXRcbiAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlzRXhwYW5kZWQgPSAhdGhpcy5pc0NvbGxhcHNlZDtcblxuICAgICAgICAvLyBNYXJrIGZvciBjaGVja1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICAvLyBFeGVjdXRlIHRoZSBvYnNlcnZhYmxlXG4gICAgICAgIHRoaXMuX3RyZWV2aWV3U2VydmljZS5vbkNvbGxhcHNhYmxlSXRlbUV4cGFuZGVkLm5leHQodGhpcy5pdGVtKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGUgY29sbGFwc2FibGVcbiAgICAgKi9cbiAgICB0b2dnbGVDb2xsYXBzYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gVG9nZ2xlIGNvbGxhcHNlL2V4cGFuZFxuICAgICAgICBpZiAodGhpcy5pc0NvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29sbGFwc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYWNrIGJ5IGZ1bmN0aW9uIGZvciBuZ0ZvciBsb29wc1xuICAgICAqXG4gICAgICogQHBhcmFtIGluZGV4XG4gICAgICogQHBhcmFtIGl0ZW1cbiAgICAgKi9cbiAgICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogYW55KTogYW55IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQgfHwgaW5kZXg7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyBAIFByaXZhdGUgbWV0aG9kc1xuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gaXRlbSBoYXMgdGhlIGdpdmVuIHVybFxuICAgICAqIGluIG9uZSBvZiBpdHMgY2hpbGRyZW5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtXG4gICAgICogQHBhcmFtIGN1cnJlbnRVcmxcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX2hhc0FjdGl2ZUNoaWxkKGl0ZW06IGFueSwgY3VycmVudFVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gaXRlbS5ub2RlcztcblxuICAgICAgICBpZiAoIWNoaWxkcmVuKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGQudGlkID09PSBjdXJyZW50VXJsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2hpbGQubm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2hhc0FjdGl2ZUNoaWxkKGNoaWxkLCBjdXJyZW50VXJsKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZEFjdGl2ZUNoaWxkKGl0ZW0sIHRyZWVJZCkge1xuICAgICAgICBpZiAoaXRlbS50aWQgPT09IHRyZWVJZCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbS5ub2RlcyAmJiBpdGVtLm5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5ub2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLmZpbmRBY3RpdmVDaGlsZChpdGVtLm5vZGVzW2ldLCB0cmVlSWQpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhpcyBpcyBhIGNoaWxkcmVuXG4gICAgICogb2YgdGhlIGdpdmVuIGl0ZW1cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJlbnRcbiAgICAgKiBAcGFyYW0gaXRlbVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNDaGlsZHJlbk9mKHBhcmVudDogYW55LCBpdGVtOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBwYXJlbnQubm9kZXM7XG5cbiAgICAgICAgaWYgKCFjaGlsZHJlbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoaWxkcmVuLmluZGV4T2YoaXRlbSkgPiAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICBpZiAoY2hpbGQuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5faXNDaGlsZHJlbk9mKGNoaWxkLCBpdGVtKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2V0S3BpRWRpdEtwaURhdGEoaXRlbTogYW55KSB7XG4gICAgICAgIHRoaXMuZWRpdGFibGVLcGlEYXRhLmVtaXQoaXRlbSk7XG4gICAgfVxuICAgIGdldEVkaXRUcmVlRGF0YShpdGVtKSB7XG4gICAgICAgIHRoaXMuZWRpdGFibGVLcGlEYXRhLmVtaXQoaXRlbSk7XG4gICAgfVxuICAgIGdldEtwaUVkaXRLcGlCYXNpY0RhdGEoaXRlbSkge1xuICAgICAgICB0aGlzLmVkaXRhYmxlS3BpRGF0YS5lbWl0KGl0ZW0pO1xuICAgIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0td3JhcHBlclwiIFtjbGFzcy50cmVldmlldy1pdGVtLWhhcy1zdWJ0aXRsZV09XCIhIWl0ZW0uc3VidGl0bGVcIlxuICAgIFtuZ0NsYXNzXT1cIml0ZW0uY2xhc3Nlcz8ud3JhcHBlclwiICpuZ0lmPVwiaXRlbS52aXNpYmlsaXR5XCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwidHJlZXZpZXctaXRlbVwiIGlkPVwia3BpSWQte3tpdGVtLmlkfX1cIiBbbmdDbGFzc109XCJ7J3RyZWV2aWV3LWl0ZW0tZGlzYWJsZWQnOiBpdGVtLmRpc2FibGVkfVwiXG4gICAgICAgIFttYXRUb29sdGlwXT1cIml0ZW0udG9vbHRpcCB8fCAnJ1wiIChjbGljayk9XCJ0b2dnbGVDb2xsYXBzYWJsZSgpXCI+XG5cbiAgICAgICAgPCEtLSBJY29uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0cmVldmlldy1pdGVtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmNsYXNzZXM/Lmljb25cIiBbc3ZnSWNvbl09XCJpdGVtLmljb25cIj48L21hdC1pY29uPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8IS0tIFRpdGxlICYgU3VidGl0bGUgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLXRpdGxlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0cmVldmlldy1pdGVtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiaXRlbS5jbGFzc2VzPy5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcGVuY2lsIHRleHQtc2t5LTgwMCBteC0yIGhvdmVyOnRleHQtc2t5LTQwMCBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0RWRpdFRyZWVEYXRhKGl0ZW0pXCIgKm5nSWY9XCJpc0VkaXRJY29uXCI+PC9pPiB7e2l0ZW0udGl0bGV9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEJhZGdlIC0tPlxuICAgICAgIFxuXG4gICAgICAgIDwhLS0gQXJyb3cgLS0+XG4gICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0tYXJyb3cgaWNvbi1zaXplLTRcIiBbc3ZnSWNvbl09XCInaGVyb2ljb25zX3NvbGlkOmNoZXZyb24tcmlnaHQnXCI+PC9tYXQtaWNvbj5cblxuICAgIDwvZGl2PlxuXG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInRyZWV2aWV3LWl0ZW0tY2hpbGRyZW5cIiAqbmdJZj1cIiFpc0NvbGxhcHNlZFwiIEBleHBhbmRDb2xsYXBzZT5cblxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbS5jaGlsZHJlbjsgdHJhY2tCeTogdHJhY2tCeUZuXCI+XG5cbiAgICAgICAgPCEtLSBTa2lwIHRoZSBoaWRkZW4gaXRlbXMgLS0+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoaXRlbS5oaWRkZW4gJiYgIWl0ZW0uaGlkZGVuKGl0ZW0pKSB8fCAhaXRlbS5oaWRkZW5cIj5cblxuICAgICAgICAgICAgPCEtLSBCYXNpYyAtLT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLnRhZ1R5cGUgPT0gJ2NoaWxkJ1wiPlxuICAgICAgICAgICAgICAgIDx0cmVldmlldy1iYXNpYy1pdGVtIFtpdGVtXT1cIml0ZW1cIiBbbmFtZV09XCJuYW1lXCIgW2lzRWRpdEljb25dPVwiaXNFZGl0SWNvblwiXG4gICAgICAgICAgICAgICAgICAgIChlZGl0YWJsZUtwaUJhc2ljRGF0YSk9XCJnZXRLcGlFZGl0S3BpQmFzaWNEYXRhKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbaW50ZXJuYWxSb3V0ZV09XCJpbnRlcm5hbFJvdXRlXCI+PC90cmVldmlldy1iYXNpYy1pdGVtPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDwhLS0gQ29sbGFwc2FibGUgLS0+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS50YWdUeXBlID09ICdwYXJlbnQnXCI+XG4gICAgICAgICAgICAgICAgPHRyZWV2aWV3LWNvbGxhcHNhYmxlLWl0ZW0gW2l0ZW1dPVwiaXRlbVwiIFtuYW1lXT1cIm5hbWVcIiBbaXNFZGl0SWNvbl09XCJpc0VkaXRJY29uXCJcbiAgICAgICAgICAgICAgICAgICAgKGVkaXRhYmxlS3BpRGF0YSk9XCJnZXRLcGlFZGl0S3BpRGF0YSgkZXZlbnQpXCIgW2ludGVybmFsUm91dGVdPVwiaW50ZXJuYWxSb3V0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvQ29sbGFwc2VdPVwiYXV0b0NvbGxhcHNlXCIgW3RyZWVJZF09XCJ0cmVlSWRcIj5cbiAgICAgICAgICAgICAgICA8L3RyZWV2aWV3LWNvbGxhcHNhYmxlLWl0ZW0+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwvbmctY29udGFpbmVyPlxuXG48L2Rpdj4iXX0=