@seniorsistemas/exclusion-process-component 0.0.1-40efacd8-8a6c-4d38-8102-8c977c14410a → 0.0.1-578162e8-6e18-48ad-b6a2-f63ffb1cd87a

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 (26) hide show
  1. package/bundles/seniorsistemas-exclusion-process-component.umd.js +124 -49
  2. package/bundles/seniorsistemas-exclusion-process-component.umd.js.map +1 -1
  3. package/bundles/seniorsistemas-exclusion-process-component.umd.min.js +1 -1
  4. package/bundles/seniorsistemas-exclusion-process-component.umd.min.js.map +1 -1
  5. package/esm2015/exclusion-details/exclusion-details.component.js +15 -5
  6. package/esm2015/exclusion-details/exclusion-details.module.js +4 -3
  7. package/esm2015/exclusion-details/protocols/show-details-information.js +1 -1
  8. package/esm2015/exclusions-list/exclusions-list.component.js +96 -50
  9. package/esm2015/services/filter.service.js +4 -1
  10. package/esm2015/services/logical-delete.service.js +24 -9
  11. package/esm5/exclusion-details/exclusion-details.component.js +15 -5
  12. package/esm5/exclusion-details/exclusion-details.module.js +4 -3
  13. package/esm5/exclusion-details/protocols/show-details-information.js +1 -1
  14. package/esm5/exclusions-list/exclusions-list.component.js +96 -50
  15. package/esm5/services/filter.service.js +4 -1
  16. package/esm5/services/logical-delete.service.js +24 -9
  17. package/exclusion-details/exclusion-details.component.d.ts +2 -0
  18. package/exclusion-details/protocols/show-details-information.d.ts +2 -1
  19. package/exclusions-list/exclusions-list.component.d.ts +23 -14
  20. package/fesm2015/seniorsistemas-exclusion-process-component.js +125 -50
  21. package/fesm2015/seniorsistemas-exclusion-process-component.js.map +1 -1
  22. package/fesm5/seniorsistemas-exclusion-process-component.js +125 -50
  23. package/fesm5/seniorsistemas-exclusion-process-component.js.map +1 -1
  24. package/package.json +1 -1
  25. package/seniorsistemas-exclusion-process-component.metadata.json +1 -1
  26. package/services/logical-delete.service.d.ts +5 -3
@@ -1,17 +1,19 @@
1
1
  import { __decorate } from "tslib";
2
- import * as moment from 'moment';
3
- import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
4
- import { FormBuilder, FormGroup, Validators } from '@angular/forms';
5
- import { TranslateService } from '@ngx-translate/core';
6
- import { Subject } from 'rxjs';
7
- import { catchError, finalize, takeUntil } from 'rxjs/operators';
8
- import { EnumBadgeColors, EnumColumnFieldType, FieldType, FormField } from '@seniorsistemas/angular-components';
9
- import { EnumExclusionProcessStatus } from '../enums/enum-exclusion-process-status';
10
- import { LogicalDeleteService } from '../services';
11
- import { ActivatedRoute } from '@angular/router';
12
- import { LogicalDeleteConfigService } from '../services/logical-delete-config.service';
13
- import { ExclusionDetailsComponent } from '../exclusion-details';
14
- import { FilterService } from '../services/filter.service';
2
+ import * as moment from "moment";
3
+ import { ChangeDetectorRef, Component, OnDestroy, OnInit, ViewChild } from "@angular/core";
4
+ import { FormBuilder, FormGroup, Validators } from "@angular/forms";
5
+ import { TranslateService } from "@ngx-translate/core";
6
+ import { Subject } from "rxjs";
7
+ import { catchError, finalize, takeUntil } from "rxjs/operators";
8
+ import { EnumBadgeColors, EnumColumnFieldType, FieldType, FormField } from "@seniorsistemas/angular-components";
9
+ import { EnumExclusionProcessStatus } from "../enums/enum-exclusion-process-status";
10
+ import { LogicalDeleteService } from "../services";
11
+ import { ActivatedRoute } from "@angular/router";
12
+ import { LogicalDeleteConfigService } from "../services/logical-delete-config.service";
13
+ import { ExclusionDetailsComponent } from "../exclusion-details";
14
+ import { FilterService } from "../services/filter.service";
15
+ const HTTP_CODE_SERVER_ERROR_START = 500;
16
+ const HTTP_CODE_SERVER_ERROR_END = 600;
15
17
  let ExclusionsListComponent = class ExclusionsListComponent {
16
18
  constructor(route, translate, formBuilder, changeDetectorRef, logicalDeleteService, filterService, projectConfigs) {
17
19
  this.route = route;
@@ -42,13 +44,25 @@ let ExclusionsListComponent = class ExclusionsListComponent {
42
44
  .pipe(takeUntil(this.ngUnsubscribe))
43
45
  .subscribe((params) => {
44
46
  this.entityName = params.entityName;
47
+ this.showBasedOnRoute();
45
48
  });
46
49
  this.route.queryParams
47
50
  .pipe(takeUntil(this.ngUnsubscribe))
48
51
  .subscribe((queryParams) => {
49
52
  this.entityDescription = queryParams.entityDescription;
53
+ this.processId = queryParams.processId;
54
+ this.showBasedOnRoute();
50
55
  });
51
56
  }
57
+ showBasedOnRoute() {
58
+ if (this.entityName && this.entityDescription && this.processId) {
59
+ this.exclusionDetailsComponent.showDetails({
60
+ processId: this.processId,
61
+ entityDescription: this.entityDescription,
62
+ entityName: this.entityName
63
+ });
64
+ }
65
+ }
52
66
  ngOnDestroy() {
53
67
  this.ngUnsubscribe.next();
54
68
  this.ngUnsubscribe.complete();
@@ -56,7 +70,7 @@ let ExclusionsListComponent = class ExclusionsListComponent {
56
70
  getFormBuilder() {
57
71
  return this.formBuilder.group({
58
72
  description: [undefined, Validators.compose([])],
59
- state: [undefined, Validators.compose([])],
73
+ status: [undefined, Validators.compose([])],
60
74
  startDate: [{ value: undefined, disabled: false }, Validators.compose([])],
61
75
  endDate: [{ value: undefined, disabled: false }, Validators.compose([])]
62
76
  });
@@ -65,21 +79,21 @@ let ExclusionsListComponent = class ExclusionsListComponent {
65
79
  return [
66
80
  {
67
81
  field: "description",
68
- attributes: ['description'],
82
+ attributes: ["description"],
69
83
  header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_description`),
70
84
  type: EnumColumnFieldType.STRING,
71
85
  style: {
72
- width: '300px'
86
+ width: "300px"
73
87
  }
74
88
  },
75
89
  {
76
90
  field: "status",
77
- attributes: ['status'],
91
+ attributes: ["status"],
78
92
  header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_status`),
79
93
  type: EnumColumnFieldType.ENUM,
80
94
  enumPrefix: `${this.projectConfigs.getTranslationPrefix()}.logical_delete_enum_exclusion_process_status_`,
81
95
  style: {
82
- width: '100px'
96
+ width: "100px"
83
97
  },
84
98
  badgeConfigs: [
85
99
  {
@@ -102,54 +116,55 @@ let ExclusionsListComponent = class ExclusionsListComponent {
102
116
  },
103
117
  {
104
118
  field: "startDate",
105
- attributes: ['startDate'],
119
+ attributes: ["startDate"],
106
120
  header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_start`),
107
121
  type: EnumColumnFieldType.DATE,
108
122
  dateFormat: "DD/MM/YYYY HH:mm",
109
123
  style: {
110
- width: '100px'
124
+ width: "100px"
111
125
  }
112
126
  },
113
127
  {
114
128
  field: "finishDate",
115
- attributes: ['finishDate'],
129
+ attributes: ["finishDate"],
116
130
  header: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_finish`),
117
131
  type: EnumColumnFieldType.DATE,
118
132
  dateFormat: "DD/MM/YYYY HH:mm",
119
133
  style: {
120
- width: '100px'
134
+ width: "100px"
121
135
  }
122
136
  }
123
137
  ];
124
138
  }
125
139
  getFilterFields() {
140
+ const translationPrefix = this.projectConfigs.getTranslationPrefix();
126
141
  return [
127
142
  new FormField({
128
143
  type: FieldType.String,
129
144
  name: "description",
130
- label: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_description`)
145
+ label: this.translate.instant(`${translationPrefix}.logical_delete_description`)
131
146
  }),
132
147
  new FormField({
133
148
  type: FieldType.Enum,
134
- name: "state",
135
- label: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_status`),
136
- placeholder: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_status`),
149
+ name: "status",
150
+ label: this.translate.instant(`${translationPrefix}.logical_delete_status`),
151
+ placeholder: this.translate.instant(`${translationPrefix}.logical_delete_status`),
137
152
  multiple: true,
138
153
  options: [
139
154
  {
140
- label: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_enum_exclusion_process_status_error`),
155
+ label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_error`),
141
156
  value: EnumExclusionProcessStatus.ERROR
142
157
  },
143
158
  {
144
- label: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_enum_exclusion_process_status_pending`),
159
+ label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_pending`),
145
160
  value: EnumExclusionProcessStatus.PENDING
146
161
  },
147
162
  {
148
- label: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_enum_exclusion_process_status_processing`),
163
+ label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_processing`),
149
164
  value: EnumExclusionProcessStatus.PROCESSING
150
165
  },
151
166
  {
152
- label: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_enum_exclusion_process_status_success`),
167
+ label: this.translate.instant(`${translationPrefix}.logical_delete_enum_exclusion_process_status_success`),
153
168
  value: EnumExclusionProcessStatus.SUCCESS
154
169
  }
155
170
  ]
@@ -157,12 +172,12 @@ let ExclusionsListComponent = class ExclusionsListComponent {
157
172
  new FormField({
158
173
  type: FieldType.Date,
159
174
  name: "startDate",
160
- label: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_start`)
175
+ label: this.translate.instant(`${translationPrefix}.logical_delete_start`)
161
176
  }),
162
177
  new FormField({
163
178
  type: FieldType.Date,
164
179
  name: "endDate",
165
- label: this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_finish`)
180
+ label: this.translate.instant(`${translationPrefix}.logical_delete_finish`)
166
181
  })
167
182
  ];
168
183
  }
@@ -178,6 +193,27 @@ let ExclusionsListComponent = class ExclusionsListComponent {
178
193
  getDetailsButtonTitle() {
179
194
  return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.logical_delete_details`);
180
195
  }
196
+ getFiltersTitle() {
197
+ return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.filters`);
198
+ }
199
+ getFilterButtonTitle() {
200
+ return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.filter`);
201
+ }
202
+ getClearButtonTitle() {
203
+ return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.clear`);
204
+ }
205
+ getErrorInvalid() {
206
+ return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.error_invalid`);
207
+ }
208
+ getErrorServerTitle() {
209
+ return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.error_server_title`);
210
+ }
211
+ getErrorServerDescription() {
212
+ return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.error_server_description`);
213
+ }
214
+ getActionsColumnLabel() {
215
+ return this.translate.instant(`${this.projectConfigs.getTranslationPrefix()}.actions`);
216
+ }
181
217
  onSearch() {
182
218
  const filterData = this.filterFormGroup.getRawValue();
183
219
  this.filtersPanelCollapsed = true;
@@ -202,27 +238,36 @@ let ExclusionsListComponent = class ExclusionsListComponent {
202
238
  getFilterTokens() {
203
239
  const filterData = this.filterFormGroup.value;
204
240
  return this.filterFields
205
- .filter(({ name }) => filterData[name] != undefined && filterData[name] !== "")
241
+ .filter(({ name }) => filterData[name] !== undefined && filterData[name] !== "" && filterData[name] !== null)
206
242
  .map(formField => this.filterService.createFilterTokens(formField, filterData[formField.name]));
207
243
  }
208
244
  getFilterQuery() {
209
245
  const { filterData } = this.currentListParams;
210
- const dateFields = ['startDate', 'endDate'];
246
+ const dateFields = ["startDate", "endDate"];
211
247
  let filterQuery = this.filterFields
212
248
  .filter(({ name }) => !dateFields.includes(name))
213
- .filter(({ name }) => filterData[name] != undefined)
249
+ .filter(({ name }) => filterData[name] !== undefined && filterData[name] !== "" && filterData[name] !== null)
214
250
  .map(formField => this.filterService.createFilterString(formField, filterData[formField.name]))
215
251
  .join(" and ");
252
+ let dateQuery;
216
253
  if (filterData.startDate && filterData.endDate) {
217
- const startDate = moment(filterData.startDate).format('YYYY-MM-DD');
218
- const endDate = moment(filterData.endDate).format('YYYY-MM-DD');
219
- const dateQuery = `startDate between '${startDate}' and '${endDate}'`;
220
- if (filterQuery) {
221
- filterQuery += ` and ${dateQuery}`;
222
- }
223
- else {
224
- filterQuery = dateQuery;
225
- }
254
+ const startDate = moment(filterData.startDate).format("YYYY-MM-DD");
255
+ const endDate = moment(filterData.endDate).format("YYYY-MM-DD");
256
+ dateQuery = `startDate between '${startDate}T00:00:00Z' and '${endDate}T23:59:59Z'`;
257
+ }
258
+ else if (filterData.startDate) {
259
+ const startDate = moment(filterData.startDate).format("YYYY-MM-DD");
260
+ dateQuery = `startDate >= '${startDate}T00:00:00Z'`;
261
+ }
262
+ else if (filterData.endDate) {
263
+ const endDate = moment(filterData.endDate).format("YYYY-MM-DD");
264
+ dateQuery = `finishDate <= '${endDate}T23:59:59Z'`;
265
+ }
266
+ else {
267
+ // Não é necessário nenhuma condição a mais no filtro.
268
+ }
269
+ if (dateQuery) {
270
+ filterQuery += filterQuery ? ` and ${dateQuery}` : dateQuery;
226
271
  }
227
272
  return filterQuery;
228
273
  }
@@ -232,7 +277,7 @@ let ExclusionsListComponent = class ExclusionsListComponent {
232
277
  this.searchTokens = this.getFilterTokens();
233
278
  const filterQuery = this.getFilterQuery();
234
279
  const displayFields = [
235
- 'recordId',
280
+ "recordId",
236
281
  ...this.gridColumns.map(column => column.field)
237
282
  ];
238
283
  this.listExclusions({ page, size, sort, filterQuery, displayFields });
@@ -244,7 +289,7 @@ let ExclusionsListComponent = class ExclusionsListComponent {
244
289
  this.logicalDeleteService
245
290
  .listExclusions(this.entityName, params)
246
291
  .pipe(takeUntil(this.ngUnsubscribe), catchError((err) => {
247
- if (err.status >= 500 && err.status < 600) {
292
+ if (err.status >= HTTP_CODE_SERVER_ERROR_START && err.status < HTTP_CODE_SERVER_ERROR_END) {
248
293
  this.serverError = true;
249
294
  }
250
295
  throw err;
@@ -261,14 +306,15 @@ let ExclusionsListComponent = class ExclusionsListComponent {
261
306
  }
262
307
  }
263
308
  resetGrid(listParams) {
264
- if (listParams)
309
+ if (listParams) {
265
310
  this.currentListParams = Object.assign(Object.assign({}, this.currentListParams), listParams);
311
+ }
266
312
  this.currentListParams = Object.assign(Object.assign({}, this.currentListParams), { page: 0, sort: [] });
267
313
  this.table.reset();
268
314
  }
269
315
  onClickDetails(rowData) {
270
316
  this.exclusionDetailsComponent.showDetails({
271
- recordId: rowData.recordId,
317
+ processId: rowData.id,
272
318
  entityDescription: this.entityDescription,
273
319
  entityName: this.entityName
274
320
  });
@@ -291,9 +337,9 @@ __decorate([
291
337
  ], ExclusionsListComponent.prototype, "exclusionDetailsComponent", void 0);
292
338
  ExclusionsListComponent = __decorate([
293
339
  Component({
294
- template: "<div>\n <form [formGroup]=\"filterFormGroup\" autocomplete=\"off\">\n <p-panel\n *sLoadingState=\"showLoader\"\n styleClass=\"form-group\"\n [toggleable]=\"true\"\n [(collapsed)]=\"filtersPanelCollapsed\"\n (onAfterToggle)=\"focusInput('description')\"\n >\n <p-header>\n {{ 'filters' | translate }}\n <s-token-list\n [tokens]=\"searchTokens\"\n (tokenRemoved)=\"onRemoveToken($event)\"\n [removableTokens]=\"true\"\n ></s-token-list>\n </p-header>\n <div>\n <s-dynamic-form\n [fields]=\"filterFields\"\n [form]=\"filterFormGroup\"\n [errorMessages]=\"{ pattern: 'error_invalid' | translate }\"\n ></s-dynamic-form>\n </div>\n <p-footer>\n <div class=\"ui-g\">\n <div class=\"ui-g-12\">\n <button\n id=\"filter-button\"\n class=\"ui-button\"\n type=\"submit\"\n pButton\n [label]=\"'filter' | translate\"\n (click)=\"onSearch()\"\n ></button>\n <button\n id=\"clear-button\"\n class=\"ui-button ui-button-link\"\n type=\"button\"\n pButton\n [label]=\"'clear' | translate\"\n (click)=\"onClear()\"\n ></button>\n </div>\n </div>\n </p-footer>\n </p-panel>\n </form>\n <p-panel *sLoadingState=\"showLoader\">\n <p-header>\n {{ getTitle() }}\n </p-header>\n <ng-container>\n <s-empty-state\n *ngIf=\"serverError && !showLoader\"\n iconClass=\"fa fa-exclamation-triangle\"\n title=\"{{ 'error_server_title' | translate }}\"\n primaryActionLabel=\"{{ 'error_server_try_again' | translate }}\"\n (primaryAction)=\"resetGrid()\"\n description=\"{{ 'error_server_description' | translate }}\"\n ></s-empty-state>\n\n <s-empty-state\n *ngIf=\"!showLoader && !serverError && totalRecords === 0\"\n [title]=\"getEmptyStateTitle()\"\n [showPrimaryAction]=\"false\"\n [description]=\"getEmptyStateDescription()\"\n ></s-empty-state>\n\n <div class=\"ui-g\">\n <div class=\"ui-g-12\">\n <p-table\n #exclusionsTable\n id=\"exclusionsTable\"\n [hidden]=\"totalRecords === 0 || serverError\"\n [value]=\"gridData\"\n [columns]=\"gridColumns\"\n dataKey=\"id\"\n [lazy]=\"true\"\n [scrollable]=\"true\"\n [resizableColumns]=\"true\"\n sortMode=\"multiple\"\n [paginator]=\"true\"\n [totalRecords]=\"totalRecords\"\n [rows]=\"10\"\n rows=\"10\"\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\n (onLazyLoad)=\"onGridChange($event)\"\n >\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col\n *ngFor=\"let col of columns\"\n [style.width]=\"col.width\"\n />\n </colgroup>\n </ng-template>\n\n <ng-template\n pTemplate=\"header\"\n let-columns\n >\n <tr>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [pSortableColumn]=\"col.field\"\n [ngStyle]=\"col.style\"\n pResizableColumn\n >\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">\n {{ col.header }}\n </span>\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\n </div>\n </th>\n <th id=\"action-column\" style=\"width: 100px\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{'A\u00E7\u00F5es'}}</span>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\n <tr [pSelectableRow]=\"rowData\">\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n <td style=\"width: 100px\">\n <s-button\n id=\"details-button\"\n priority=\"default\"\n [label]=\"getDetailsButtonTitle()\"\n [auxiliary]=\"true\"\n (onClick)=\"onClickDetails(rowData)\">\n </s-button>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"paginatorright\">\n <s-table-paging\n [table]=\"exclusionsTable\"\n [totalRecords]=\"totalRecords\"\n ></s-table-paging>\n </ng-template>\n </p-table>\n </div>\n </div>\n </ng-container>\n </p-panel>\n</div>\n\n<s-exclusion-details></s-exclusion-details>",
340
+ template: "<div>\n <form [formGroup]=\"filterFormGroup\" autocomplete=\"off\">\n <p-panel\n *sLoadingState=\"showLoader\"\n styleClass=\"form-group\"\n [toggleable]=\"true\"\n [(collapsed)]=\"filtersPanelCollapsed\"\n (onAfterToggle)=\"focusInput('description')\"\n >\n <p-header>\n {{ getFiltersTitle() }}\n <s-token-list\n [tokens]=\"searchTokens\"\n (tokenRemoved)=\"onRemoveToken($event)\"\n [removableTokens]=\"true\"\n ></s-token-list>\n </p-header>\n <div>\n <s-dynamic-form\n [fields]=\"filterFields\"\n [form]=\"filterFormGroup\"\n [errorMessages]=\"{ pattern: getErrorInvalid() }\"\n ></s-dynamic-form>\n </div>\n <p-footer>\n <div class=\"ui-g\">\n <div class=\"ui-g-12\">\n <button\n id=\"filter-button\"\n class=\"ui-button\"\n type=\"submit\"\n pButton\n [label]=\"getFilterButtonTitle()\"\n (click)=\"onSearch()\"\n ></button>\n <button\n id=\"clear-button\"\n class=\"ui-button ui-button-link\"\n type=\"button\"\n pButton\n [label]=\"getClearButtonTitle()\"\n (click)=\"onClear()\"\n ></button>\n </div>\n </div>\n </p-footer>\n </p-panel>\n </form>\n <p-panel *sLoadingState=\"showLoader\">\n <p-header>\n {{ getTitle() }}\n </p-header>\n <ng-container>\n <s-empty-state\n *ngIf=\"serverError && !showLoader\"\n iconClass=\"fa fa-exclamation-triangle\"\n title=\"{{ getErrorServerTitle() | translate }}\"\n primaryActionLabel=\"{{ 'error_server_try_again' | translate }}\"\n (primaryAction)=\"resetGrid()\"\n description=\"{{ getErrorServerDescription() | translate }}\"\n ></s-empty-state>\n\n <s-empty-state\n *ngIf=\"!showLoader && !serverError && totalRecords === 0\"\n [title]=\"getEmptyStateTitle()\"\n [showPrimaryAction]=\"false\"\n [description]=\"getEmptyStateDescription()\"\n ></s-empty-state>\n\n <div class=\"ui-g\">\n <div class=\"ui-g-12\">\n <p-table\n #exclusionsTable\n id=\"exclusionsTable\"\n [hidden]=\"totalRecords === 0 || serverError\"\n [value]=\"gridData\"\n [columns]=\"gridColumns\"\n dataKey=\"id\"\n [lazy]=\"true\"\n [scrollable]=\"true\"\n [resizableColumns]=\"true\"\n sortMode=\"multiple\"\n [paginator]=\"true\"\n [totalRecords]=\"totalRecords\"\n [rows]=\"10\"\n rows=\"10\"\n [rowsPerPageOptions]=\"[10, 20, 50, 100]\"\n (onLazyLoad)=\"onGridChange($event)\"\n >\n <ng-template pTemplate=\"colgroup\" let-columns>\n <colgroup>\n <col\n *ngFor=\"let col of columns\"\n [style.width]=\"col.width\"\n />\n </colgroup>\n </ng-template>\n\n <ng-template\n pTemplate=\"header\"\n let-columns\n >\n <tr>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [pSortableColumn]=\"col.field\"\n [ngStyle]=\"col.style\"\n pResizableColumn\n >\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">\n {{ col.header }}\n </span>\n <p-sortIcon [field]=\"col.field\"></p-sortIcon>\n </div>\n </th>\n <th id=\"action-column\" style=\"width: 100px\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ getActionsColumnLabel() }}</span>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\n <tr [pSelectableRow]=\"rowData\">\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n <td style=\"width: 100px\">\n <s-button\n id=\"details-button\"\n priority=\"default\"\n [label]=\"getDetailsButtonTitle()\"\n [auxiliary]=\"true\"\n (onClick)=\"onClickDetails(rowData)\">\n </s-button>\n </td>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"paginatorright\">\n <s-table-paging\n [table]=\"exclusionsTable\"\n [totalRecords]=\"totalRecords\"\n ></s-table-paging>\n </ng-template>\n </p-table>\n </div>\n </div>\n </ng-container>\n </p-panel>\n</div>\n\n<s-exclusion-details></s-exclusion-details>\n",
295
341
  providers: []
296
342
  })
297
343
  ], ExclusionsListComponent);
298
344
  export { ExclusionsListComponent };
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9leGNsdXNpb24tcHJvY2Vzcy1jb21wb25lbnQvIiwic291cmNlcyI6WyJleGNsdXNpb25zLWxpc3QvZXhjbHVzaW9ucy1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBb0MsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsSixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUdwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQU8zRCxJQUFhLHVCQUF1QixHQUFwQyxNQUFhLHVC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QztJQUNQLENBQUM7Q0FDSixDQUFBOztZQTdSK0IsY0FBYztZQUNWLGdCQUFnQjtZQUNkLFdBQVc7WUFDTCxpQkFBaUI7WUFDZCxvQkFBb0I7WUFDM0IsYUFBYTtZQUNaLDBCQUEwQjs7QUFkL0Q7SUFEQyxTQUFTLENBQUMsaUJBQWlCLENBQUM7c0RBQ1Q7QUFHcEI7SUFEQyxTQUFTLENBQUMseUJBQXlCLENBQUM7MEVBQ3VCO0FBckJuRCx1QkFBdUI7SUFMbkMsU0FBUyxDQUFDO1FBQ1AsKzNOQUErQztRQUUvQyxTQUFTLEVBQUUsRUFBRTtLQUNoQixDQUFDO0dBQ1csdUJBQXVCLENBdVRuQztTQXZUWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVudW1CYWRnZUNvbG9ycywgRW51bUNvbHVtbkZpZWxkVHlwZSwgRmllbGRUeXBlLCBGb3JtRmllbGQsIElUb2tlbiwgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0gZnJvbSAnQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50cyc7XG5pbXBvcnQgeyBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cyB9IGZyb20gJy4uL2VudW1zL2VudW0tZXhjbHVzaW9uLXByb2Nlc3Mtc3RhdHVzJztcbmltcG9ydCB7IEV4Y2x1c2lvblByb2Nlc3MgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IExvZ2ljYWxEZWxldGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTGlzdFBhcmFtcyB9IGZyb20gJy4uL21vZGVscy9saXN0LXBhcmFtcyc7XG5pbXBvcnQgeyBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvZ2ljYWwtZGVsZXRlLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEV4Y2x1c2lvbkRldGFpbHNDb21wb25lbnQgfSBmcm9tICcuLi9leGNsdXNpb24tZGV0YWlscyc7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsdGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2V4Y2x1c2lvbnMtbGlzdC5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW10sXG4gICAgcHJvdmlkZXJzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBFeGNsdXNpb25zTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95ICB7XG4gICAgcHVibGljIGxvY2FsZSE6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucztcbiAgICBwdWJsaWMgZW50aXR5TmFtZTogc3RyaW5nO1xuICAgIHB1YmxpYyBlbnRpdHlEZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gICAgcHVibGljIGN1cnJlbnRMaXN0UGFyYW1zOiBMaXN0UGFyYW1zID0geyBwYWdlOiAwLCBzaXplOiAxMCwgc29ydDogW10sIGZpbHRlckRhdGE6IHt9IH07XG4gICAgcHVibGljIGdyaWREYXRhOiBFeGNsdXNpb25Qcm9jZXNzW107XG4gICAgcHVibGljIGdyaWRDb2x1bW5zOiBhbnlbXTtcbiAgICBwdWJsaWMgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyB0b3RhbFJlY29yZHMgPSAwO1xuXG4gICAgcHVibGljIGZpbHRlckZpZWxkczogRm9ybUZpZWxkW107XG4gICAgcHVibGljIGZpbHRlckZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyBmaWx0ZXJzUGFuZWxDb2xsYXBzZWQgPSB0cnVlO1xuICAgIHB1YmxpYyBzZWFyY2hUb2tlbnM6IElUb2tlbltdID0gW107XG4gICAgcHVibGljIHNlcnZlckVycm9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKFwiZXhjbHVzaW9uc1RhYmxlXCIpXG4gICAgcHVibGljIHRhYmxlOiBUYWJsZTtcblxuICAgIEBWaWV3Q2hpbGQoRXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudClcbiAgICBwdWJsaWMgZXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudDogRXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudDtcblxuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9naWNhbERlbGV0ZVNlcnZpY2U6IExvZ2ljYWxEZWxldGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdENvbmZpZ3M6IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZpbHRlckZvcm1Hcm91cCA9IHRoaXMuZ2V0Rm9ybUJ1aWxkZXIoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJGaWVsZHMgPSB0aGlzLmdldEZpbHRlckZpZWxkcygpO1xuICAgICAgICB0aGlzLmdyaWRDb2x1bW5zID0gdGhpcy5nZXRHcmlkQ29sdW1ucygpO1xuXG4gICAgICAgIHRoaXMucm91dGUuZGF0YVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiB7IFtjb25maWdzOiBzdHJpbmddOiBhbnksIGxvY2FsZUNvbmZpZzogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZSA9IGRhdGEubG9jYWxlQ29uZmlnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucm91dGUucGFyYW1zXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHBhcmFtczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlOYW1lID0gcGFyYW1zLmVudGl0eU5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChxdWVyeVBhcmFtczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlEZXNjcmlwdGlvbiA9IHF1ZXJ5UGFyYW1zLmVudGl0eURlc2NyaXB0aW9uO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZvcm1CdWlsZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogW3VuZGVmaW5lZCwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXG4gICAgICAgICAgICBzdGF0ZTogW3VuZGVmaW5lZCwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXG4gICAgICAgICAgICBzdGFydERhdGU6IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXSxcbiAgICAgICAgICAgIGVuZERhdGU6IFt7IHZhbHVlOiB1bmRlZmluZWQsIGRpc2FibGVkOiBmYWxzZSB9LCBWYWxpZGF0b3JzLmNvbXBvc2UoW10pXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEdyaWRDb2x1bW5zKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcImRlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogWydkZXNjcmlwdGlvbiddLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2Rlc2NyaXB0aW9uYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICczMDBweCdcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcInN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFsnc3RhdHVzJ10sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3RhdHVzYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5FTlVNLFxuICAgICAgICAgICAgICAgIGVudW1QcmVmaXg6IGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfYCxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogJzEwMHB4J1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmFkZ2VDb25maWdzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuRVJST1IsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLlJFRFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBFTkRJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLllFTExPV1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBST0NFU1NJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLkJMVUVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5TVUNDRVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5HUkVFTlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJzdGFydERhdGVcIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbJ3N0YXJ0RGF0ZSddLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXJ0YCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5EQVRFLFxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6IFwiREQvTU0vWVlZWSBISDptbVwiLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwcHgnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJmaW5pc2hEYXRlXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogWydmaW5pc2hEYXRlJ10sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZmluaXNoYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5EQVRFLFxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6IFwiREQvTU0vWVlZWSBISDptbVwiLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwcHgnXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmlsdGVyRmllbGRzKCkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLlN0cmluZyxcbiAgICAgICAgICAgICAgICBuYW1lOiBcImRlc2NyaXB0aW9uXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9kZXNjcmlwdGlvbmApXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBGb3JtRmllbGQoe1xuICAgICAgICAgICAgICAgIHR5cGU6IEZpZWxkVHlwZS5FbnVtLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwic3RhdGVcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXR1c2ApLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3RhdHVzYCksXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX2Vycm9yYCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuRVJST1JcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbnVtX2V4Y2x1c2lvbl9wcm9jZXNzX3N0YXR1c19wZW5kaW5nYCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuUEVORElOR1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX3Byb2Nlc3NpbmdgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QUk9DRVNTSU5HXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfc3VjY2Vzc2ApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlNVQ0NFU1NcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkRhdGUsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJzdGFydERhdGVcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXJ0YClcbiAgICAgICAgICAgIH0pLFxuXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRGF0ZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcImVuZERhdGVcIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2ZpbmlzaGApXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbXB0eVN0YXRlVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW1wdHlfc3RhdGVfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlTdGF0ZURlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VtcHR5X3N0YXRlX2Rlc2NyaXB0aW9uYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2xpc3RfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGV0YWlsc0J1dHRvblRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2RldGFpbHNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWFyY2goKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckRhdGEgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xuICAgICAgICB0aGlzLmZpbHRlcnNQYW5lbENvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhcigpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAucmVzZXQoKTtcbiAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmVUb2tlbih0b2tlbjogSVRva2VuKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCh0b2tlbi5pZCkuc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25HcmlkQ2hhbmdlKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBldmVudC5yb3dzO1xuICAgICAgICBjb25zdCBwYWdlID0gZXZlbnQuZmlyc3QgLyBzaXplO1xuICAgICAgICBjb25zdCBzb3J0ID0gZXZlbnQubXVsdGlTb3J0TWV0YSA/IGV2ZW50Lm11bHRpU29ydE1ldGEgOiBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlR3JpZCh7IHBhZ2UsIHNpemUsIHNvcnQgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJUb2tlbnMoKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckRhdGEgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC52YWx1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJGaWVsZHNcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBmaWx0ZXJEYXRhW25hbWVdICE9IHVuZGVmaW5lZCAmJiBmaWx0ZXJEYXRhW25hbWVdICE9PSBcIlwiKVxuICAgICAgICAgICAgLm1hcChmb3JtRmllbGQgPT4gdGhpcy5maWx0ZXJTZXJ2aWNlLmNyZWF0ZUZpbHRlclRva2Vucyhmb3JtRmllbGQsIGZpbHRlckRhdGFbZm9ybUZpZWxkLm5hbWVdKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJRdWVyeSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7IGZpbHRlckRhdGEgfSA9IHRoaXMuY3VycmVudExpc3RQYXJhbXM7XG4gICAgICAgIGNvbnN0IGRhdGVGaWVsZHMgPSBbJ3N0YXJ0RGF0ZScsICdlbmREYXRlJ107XG5cbiAgICAgICAgbGV0IGZpbHRlclF1ZXJ5ID0gdGhpcy5maWx0ZXJGaWVsZHNcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiAhZGF0ZUZpZWxkcy5pbmNsdWRlcyhuYW1lKSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBmaWx0ZXJEYXRhW25hbWVdICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgIC5tYXAoZm9ybUZpZWxkID0+IHRoaXMuZmlsdGVyU2VydmljZS5jcmVhdGVGaWx0ZXJTdHJpbmcoZm9ybUZpZWxkLCBmaWx0ZXJEYXRhW2Zvcm1GaWVsZC5uYW1lXSkpXG4gICAgICAgICAgICAuam9pbihcIiBhbmQgXCIpO1xuXG4gICAgICAgIGlmIChmaWx0ZXJEYXRhLnN0YXJ0RGF0ZSAmJiBmaWx0ZXJEYXRhLmVuZERhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudChmaWx0ZXJEYXRhLnN0YXJ0RGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICAgICAgICBjb25zdCBlbmREYXRlID0gbW9tZW50KGZpbHRlckRhdGEuZW5kRGF0ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICAgICAgICBjb25zdCBkYXRlUXVlcnkgPSBgc3RhcnREYXRlIGJldHdlZW4gJyR7c3RhcnREYXRlfScgYW5kICcke2VuZERhdGV9J2A7XG4gICAgICAgICAgICBpZiAoZmlsdGVyUXVlcnkpIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJRdWVyeSArPSBgIGFuZCAke2RhdGVRdWVyeX1gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJRdWVyeSA9IGRhdGVRdWVyeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJRdWVyeTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUdyaWQobGlzdFBhcmFtczogTGlzdFBhcmFtcyA9IHt9KSB7XG4gICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMgPSB7IC4uLnRoaXMuY3VycmVudExpc3RQYXJhbXMsIC4uLmxpc3RQYXJhbXMgfTtcbiAgICAgICAgY29uc3QgeyBwYWdlLCBzaXplLCBzb3J0IH0gPSB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoVG9rZW5zID0gdGhpcy5nZXRGaWx0ZXJUb2tlbnMoKTtcbiAgICAgICAgY29uc3QgZmlsdGVyUXVlcnkgPSB0aGlzLmdldEZpbHRlclF1ZXJ5KCk7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlGaWVsZHMgPSBbXG4gICAgICAgICAgICAncmVjb3JkSWQnLFxuICAgICAgICAgICAgLi4udGhpcy5ncmlkQ29sdW1ucy5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZClcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmxpc3RFeGNsdXNpb25zKHsgcGFnZSwgc2l6ZSwgc29ydCwgZmlsdGVyUXVlcnksIGRpc3BsYXlGaWVsZHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxpc3RFeGNsdXNpb25zKHBhcmFtczogYW55KSB7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VydmVyRXJyb3IgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlXG4gICAgICAgICAgICAubGlzdEV4Y2x1c2lvbnModGhpcy5lbnRpdHlOYW1lLCBwYXJhbXMpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA+PSA1MDAgJiYgZXJyLnN0YXR1cyA8IDYwMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2ZXJFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGlzdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YSA9IGxpc3QuY29udGVudHM7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSBsaXN0LnRvdGFsRWxlbWVudHM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNJbnB1dChlbGVtZW50SWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHtlbGVtZW50SWR9YCk7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRHcmlkKGxpc3RQYXJhbXM/OiBMaXN0UGFyYW1zKSB7XG4gICAgICAgIGlmIChsaXN0UGFyYW1zKSB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0geyAuLi50aGlzLmN1cnJlbnRMaXN0UGFyYW1zLCAuLi5saXN0UGFyYW1zIH07XG4gICAgICAgIHRoaXMuY3VycmVudExpc3RQYXJhbXMgPSB7IC4uLnRoaXMuY3VycmVudExpc3RQYXJhbXMsIHBhZ2U6IDAsIHNvcnQ6IFtdIH07XG4gICAgICAgIHRoaXMudGFibGUucmVzZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGlja0RldGFpbHMocm93RGF0YTogRXhjbHVzaW9uUHJvY2Vzcykge1xuICAgICAgICB0aGlzLmV4Y2x1c2lvbkRldGFpbHNDb21wb25lbnQuc2hvd0RldGFpbHMoe1xuICAgICAgICAgICAgcmVjb3JkSWQ6IHJvd0RhdGEucmVjb3JkSWQsXG4gICAgICAgICAgICBlbnRpdHlEZXNjcmlwdGlvbjogdGhpcy5lbnRpdHlEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGVudGl0eU5hbWU6IHRoaXMuZW50aXR5TmFtZVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9ucy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3JzaXN0ZW1hcy9leGNsdXNpb24tcHJvY2Vzcy1jb21wb25lbnQvIiwic291cmNlcyI6WyJleGNsdXNpb25zLWxpc3QvZXhjbHVzaW9ucy1saXN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFDSCxlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLFNBQVMsRUFDVCxTQUFTLEVBR1osTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUdwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUUzRCxNQUFNLDRCQUE0QixHQUFHLEdBQUcsQ0FB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S0FDaEIsQ0FBQztHQUNXLHVCQUF1QixDQTZXbkM7U0E3V1ksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50IH0gZnJvbSBcInByaW1lbmcvYXBpXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7XG4gICAgRW51bUJhZGdlQ29sb3JzLFxuICAgIEVudW1Db2x1bW5GaWVsZFR5cGUsXG4gICAgRmllbGRUeXBlLFxuICAgIEZvcm1GaWVsZCxcbiAgICBJVG9rZW4sXG4gICAgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zXG59IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cyB9IGZyb20gXCIuLi9lbnVtcy9lbnVtLWV4Y2x1c2lvbi1wcm9jZXNzLXN0YXR1c1wiO1xuaW1wb3J0IHsgRXhjbHVzaW9uUHJvY2VzcyB9IGZyb20gXCIuLi9tb2RlbHNcIjtcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSBcInByaW1lbmcvdGFibGVcIjtcbmltcG9ydCB7IExvZ2ljYWxEZWxldGVTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IExpc3RQYXJhbXMgfSBmcm9tIFwiLi4vbW9kZWxzL2xpc3QtcGFyYW1zXCI7XG5pbXBvcnQgeyBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9sb2dpY2FsLWRlbGV0ZS1jb25maWcuc2VydmljZVwiO1xuaW1wb3J0IHsgRXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gXCIuLi9leGNsdXNpb24tZGV0YWlsc1wiO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9maWx0ZXIuc2VydmljZVwiO1xuXG5jb25zdCBIVFRQX0NPREVfU0VSVkVSX0VSUk9SX1NUQVJUID0gNTAwO1xuY29uc3QgSFRUUF9DT0RFX1NFUlZFUl9FUlJPUl9FTkQgPSA2MDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiBcIi4vZXhjbHVzaW9ucy1saXN0LmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXSxcbiAgICBwcm92aWRlcnM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIEV4Y2x1c2lvbnNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kgIHtcbiAgICBwdWJsaWMgbG9jYWxlITogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zO1xuICAgIHB1YmxpYyBlbnRpdHlOYW1lOiBzdHJpbmc7XG4gICAgcHVibGljIGVudGl0eURlc2NyaXB0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIHByb2Nlc3NJZDogc3RyaW5nO1xuXG4gICAgcHVibGljIGN1cnJlbnRMaXN0UGFyYW1zOiBMaXN0UGFyYW1zID0geyBwYWdlOiAwLCBzaXplOiAxMCwgc29ydDogW10sIGZpbHRlckRhdGE6IHt9IH07XG4gICAgcHVibGljIGdyaWREYXRhOiBFeGNsdXNpb25Qcm9jZXNzW107XG4gICAgcHVibGljIGdyaWRDb2x1bW5zOiBhbnlbXTtcbiAgICBwdWJsaWMgc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgIHB1YmxpYyB0b3RhbFJlY29yZHMgPSAwO1xuXG4gICAgcHVibGljIGZpbHRlckZpZWxkczogRm9ybUZpZWxkW107XG4gICAgcHVibGljIGZpbHRlckZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyBmaWx0ZXJzUGFuZWxDb2xsYXBzZWQgPSB0cnVlO1xuICAgIHB1YmxpYyBzZWFyY2hUb2tlbnM6IElUb2tlbltdID0gW107XG4gICAgcHVibGljIHNlcnZlckVycm9yID0gZmFsc2U7XG5cbiAgICBAVmlld0NoaWxkKFwiZXhjbHVzaW9uc1RhYmxlXCIpXG4gICAgcHVibGljIHRhYmxlOiBUYWJsZTtcblxuICAgIEBWaWV3Q2hpbGQoRXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudClcbiAgICBwdWJsaWMgZXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudDogRXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9naWNhbERlbGV0ZVNlcnZpY2U6IExvZ2ljYWxEZWxldGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvamVjdENvbmZpZ3M6IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlXG4gICAgKSB7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmZpbHRlckZvcm1Hcm91cCA9IHRoaXMuZ2V0Rm9ybUJ1aWxkZXIoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJGaWVsZHMgPSB0aGlzLmdldEZpbHRlckZpZWxkcygpO1xuICAgICAgICB0aGlzLmdyaWRDb2x1bW5zID0gdGhpcy5nZXRHcmlkQ29sdW1ucygpO1xuXG4gICAgICAgIHRoaXMucm91dGUuZGF0YVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhOiB7IFtjb25maWdzOiBzdHJpbmddOiBhbnksIGxvY2FsZUNvbmZpZzogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0pID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvY2FsZSA9IGRhdGEubG9jYWxlQ29uZmlnO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucm91dGUucGFyYW1zXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHBhcmFtczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlOYW1lID0gcGFyYW1zLmVudGl0eU5hbWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93QmFzZWRPblJvdXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtc1xuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChxdWVyeVBhcmFtczogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRpdHlEZXNjcmlwdGlvbiA9IHF1ZXJ5UGFyYW1zLmVudGl0eURlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0lkID0gcXVlcnlQYXJhbXMucHJvY2Vzc0lkO1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Jhc2VkT25Sb3V0ZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93QmFzZWRPblJvdXRlKCkge1xuICAgICAgICBpZiAodGhpcy5lbnRpdHlOYW1lICYmIHRoaXMuZW50aXR5RGVzY3JpcHRpb24gJiYgdGhpcy5wcm9jZXNzSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudC5zaG93RGV0YWlscyh7XG4gICAgICAgICAgICAgICAgcHJvY2Vzc0lkOiB0aGlzLnByb2Nlc3NJZCxcbiAgICAgICAgICAgICAgICBlbnRpdHlEZXNjcmlwdGlvbjogdGhpcy5lbnRpdHlEZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICBlbnRpdHlOYW1lOiB0aGlzLmVudGl0eU5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZvcm1CdWlsZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogW3VuZGVmaW5lZCwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXG4gICAgICAgICAgICBzdGF0dXM6IFt1bmRlZmluZWQsIFZhbGlkYXRvcnMuY29tcG9zZShbXSldLFxuICAgICAgICAgICAgc3RhcnREYXRlOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV0sXG4gICAgICAgICAgICBlbmREYXRlOiBbeyB2YWx1ZTogdW5kZWZpbmVkLCBkaXNhYmxlZDogZmFsc2UgfSwgVmFsaWRhdG9ycy5jb21wb3NlKFtdKV1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRHcmlkQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2Rlc2NyaXB0aW9uYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMzAwcHhcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwic3RhdHVzXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wic3RhdHVzXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXR1c2ApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuRU5VTSxcbiAgICAgICAgICAgICAgICBlbnVtUHJlZml4OiBgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX2AsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwcHhcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYmFkZ2VDb25maWdzOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuRVJST1IsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLlJFRFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBFTkRJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLllFTExPV1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBST0NFU1NJTkcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLkJMVUVcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5TVUNDRVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5HUkVFTlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJzdGFydERhdGVcIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJzdGFydERhdGVcIl0sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3RhcnRgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBFbnVtQ29sdW1uRmllbGRUeXBlLkRBVEUsXG4gICAgICAgICAgICAgICAgZGF0ZUZvcm1hdDogXCJERC9NTS9ZWVlZIEhIOm1tXCIsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwcHhcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwiZmluaXNoRGF0ZVwiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcImZpbmlzaERhdGVcIl0sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZmluaXNoYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5EQVRFLFxuICAgICAgICAgICAgICAgIGRhdGVGb3JtYXQ6IFwiREQvTU0vWVlZWSBISDptbVwiLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMHB4XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJGaWVsZHMoKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uUHJlZml4ID0gdGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuU3RyaW5nLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfZGVzY3JpcHRpb25gKVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRW51bSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fS5sb2dpY2FsX2RlbGV0ZV9zdGF0dXNgKSxcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfc3RhdHVzYCksXG4gICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfZXJyb3JgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5FUlJPUlxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0cmFuc2xhdGlvblByZWZpeH0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfcGVuZGluZ2ApLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBFTkRJTkdcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dHJhbnNsYXRpb25QcmVmaXh9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX3Byb2Nlc3NpbmdgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5QUk9DRVNTSU5HXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fS5sb2dpY2FsX2RlbGV0ZV9lbnVtX2V4Y2x1c2lvbl9wcm9jZXNzX3N0YXR1c19zdWNjZXNzYCksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTU1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgRm9ybUZpZWxkKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBGaWVsZFR5cGUuRGF0ZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0YXJ0RGF0ZVwiLFxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RyYW5zbGF0aW9uUHJlZml4fS5sb2dpY2FsX2RlbGV0ZV9zdGFydGApXG4gICAgICAgICAgICB9KSxcblxuICAgICAgICAgICAgbmV3IEZvcm1GaWVsZCh7XG4gICAgICAgICAgICAgICAgdHlwZTogRmllbGRUeXBlLkRhdGUsXG4gICAgICAgICAgICAgICAgbmFtZTogXCJlbmREYXRlXCIsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dHJhbnNsYXRpb25QcmVmaXh9LmxvZ2ljYWxfZGVsZXRlX2ZpbmlzaGApXG4gICAgICAgICAgICB9KVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbXB0eVN0YXRlVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW1wdHlfc3RhdGVfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlTdGF0ZURlc2NyaXB0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VtcHR5X3N0YXRlX2Rlc2NyaXB0aW9uYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2xpc3RfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGV0YWlsc0J1dHRvblRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2RldGFpbHNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyc1RpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmZpbHRlcnNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RmlsdGVyQnV0dG9uVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0uZmlsdGVyYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENsZWFyQnV0dG9uVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0uY2xlYXJgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXJyb3JJbnZhbGlkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmVycm9yX2ludmFsaWRgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXJyb3JTZXJ2ZXJUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5lcnJvcl9zZXJ2ZXJfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RXJyb3JTZXJ2ZXJEZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5lcnJvcl9zZXJ2ZXJfZGVzY3JpcHRpb25gKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWN0aW9uc0NvbHVtbkxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmFjdGlvbnNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWFyY2goKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckRhdGEgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC5nZXRSYXdWYWx1ZSgpO1xuICAgICAgICB0aGlzLmZpbHRlcnNQYW5lbENvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhcigpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJGb3JtR3JvdXAucmVzZXQoKTtcbiAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZW1vdmVUb2tlbih0b2tlbjogSVRva2VuKSB7XG4gICAgICAgIHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldCh0b2tlbi5pZCkuc2V0VmFsdWUodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgZmlsdGVyRGF0YSA9IHRoaXMuZmlsdGVyRm9ybUdyb3VwLmdldFJhd1ZhbHVlKCk7XG4gICAgICAgIHRoaXMucmVzZXRHcmlkKHsgZmlsdGVyRGF0YSB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25HcmlkQ2hhbmdlKGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBldmVudC5yb3dzO1xuICAgICAgICBjb25zdCBwYWdlID0gZXZlbnQuZmlyc3QgLyBzaXplO1xuICAgICAgICBjb25zdCBzb3J0ID0gZXZlbnQubXVsdGlTb3J0TWV0YSA/IGV2ZW50Lm11bHRpU29ydE1ldGEgOiBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlR3JpZCh7IHBhZ2UsIHNpemUsIHNvcnQgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJUb2tlbnMoKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlckRhdGEgPSB0aGlzLmZpbHRlckZvcm1Hcm91cC52YWx1ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJGaWVsZHNcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PiBmaWx0ZXJEYXRhW25hbWVdICE9PSB1bmRlZmluZWQgJiYgZmlsdGVyRGF0YVtuYW1lXSAhPT0gXCJcIiAmJiBmaWx0ZXJEYXRhW25hbWVdICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcChmb3JtRmllbGQgPT4gdGhpcy5maWx0ZXJTZXJ2aWNlLmNyZWF0ZUZpbHRlclRva2Vucyhmb3JtRmllbGQsIGZpbHRlckRhdGFbZm9ybUZpZWxkLm5hbWVdKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWx0ZXJRdWVyeSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB7IGZpbHRlckRhdGEgfSA9IHRoaXMuY3VycmVudExpc3RQYXJhbXM7XG4gICAgICAgIGNvbnN0IGRhdGVGaWVsZHMgPSBbXCJzdGFydERhdGVcIiwgXCJlbmREYXRlXCJdO1xuXG4gICAgICAgIGxldCBmaWx0ZXJRdWVyeSA9IHRoaXMuZmlsdGVyRmllbGRzXG4gICAgICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gIWRhdGVGaWVsZHMuaW5jbHVkZXMobmFtZSkpXG4gICAgICAgICAgICAuZmlsdGVyKCh7IG5hbWUgfSkgPT4gZmlsdGVyRGF0YVtuYW1lXSAhPT0gdW5kZWZpbmVkICYmIGZpbHRlckRhdGFbbmFtZV0gIT09IFwiXCIgJiYgZmlsdGVyRGF0YVtuYW1lXSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoZm9ybUZpZWxkID0+IHRoaXMuZmlsdGVyU2VydmljZS5jcmVhdGVGaWx0ZXJTdHJpbmcoZm9ybUZpZWxkLCBmaWx0ZXJEYXRhW2Zvcm1GaWVsZC5uYW1lXSkpXG4gICAgICAgICAgICAuam9pbihcIiBhbmQgXCIpO1xuXG4gICAgICAgIGxldCBkYXRlUXVlcnk6IHN0cmluZztcbiAgICAgICAgaWYgKGZpbHRlckRhdGEuc3RhcnREYXRlICYmIGZpbHRlckRhdGEuZW5kRGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbW9tZW50KGZpbHRlckRhdGEuc3RhcnREYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xuICAgICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IG1vbWVudChmaWx0ZXJEYXRhLmVuZERhdGUpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgICAgICBkYXRlUXVlcnkgPSBgc3RhcnREYXRlIGJldHdlZW4gJyR7c3RhcnREYXRlfVQwMDowMDowMFonIGFuZCAnJHtlbmREYXRlfVQyMzo1OTo1OVonYDtcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXJEYXRhLnN0YXJ0RGF0ZSkge1xuICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gbW9tZW50KGZpbHRlckRhdGEuc3RhcnREYXRlKS5mb3JtYXQoXCJZWVlZLU1NLUREXCIpO1xuICAgICAgICAgICAgZGF0ZVF1ZXJ5ID0gYHN0YXJ0RGF0ZSA+PSAnJHtzdGFydERhdGV9VDAwOjAwOjAwWidgO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlckRhdGEuZW5kRGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgZW5kRGF0ZSA9IG1vbWVudChmaWx0ZXJEYXRhLmVuZERhdGUpLmZvcm1hdChcIllZWVktTU0tRERcIik7XG4gICAgICAgICAgICBkYXRlUXVlcnkgPSBgZmluaXNoRGF0ZSA8PSAnJHtlbmREYXRlfVQyMzo1OTo1OVonYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIE7Do28gw6kgbmVjZXNzw6FyaW8gbmVuaHVtYSBjb25kacOnw6NvIGEgbWFpcyBubyBmaWx0cm8uXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGF0ZVF1ZXJ5KSB7XG4gICAgICAgICAgICBmaWx0ZXJRdWVyeSArPSBmaWx0ZXJRdWVyeSA/IGAgYW5kICR7ZGF0ZVF1ZXJ5fWAgOiBkYXRlUXVlcnk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyUXVlcnk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVHcmlkKGxpc3RQYXJhbXM6IExpc3RQYXJhbXMgPSB7fSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0geyAuLi50aGlzLmN1cnJlbnRMaXN0UGFyYW1zLCAuLi5saXN0UGFyYW1zIH07XG4gICAgICAgIGNvbnN0IHsgcGFnZSwgc2l6ZSwgc29ydCB9ID0gdGhpcy5jdXJyZW50TGlzdFBhcmFtcztcblxuICAgICAgICB0aGlzLnNlYXJjaFRva2VucyA9IHRoaXMuZ2V0RmlsdGVyVG9rZW5zKCk7XG4gICAgICAgIGNvbnN0IGZpbHRlclF1ZXJ5ID0gdGhpcy5nZXRGaWx0ZXJRdWVyeSgpO1xuICAgICAgICBjb25zdCBkaXNwbGF5RmllbGRzID0gW1xuICAgICAgICAgICAgXCJyZWNvcmRJZFwiLFxuICAgICAgICAgICAgLi4udGhpcy5ncmlkQ29sdW1ucy5tYXAoY29sdW1uID0+IGNvbHVtbi5maWVsZClcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLmxpc3RFeGNsdXNpb25zKHsgcGFnZSwgc2l6ZSwgc29ydCwgZmlsdGVyUXVlcnksIGRpc3BsYXlGaWVsZHMgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGxpc3RFeGNsdXNpb25zKHBhcmFtczogYW55KSB7XG4gICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VydmVyRXJyb3IgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcblxuICAgICAgICB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlXG4gICAgICAgICAgICAubGlzdEV4Y2x1c2lvbnModGhpcy5lbnRpdHlOYW1lLCBwYXJhbXMpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA+PSBIVFRQX0NPREVfU0VSVkVSX0VSUk9SX1NUQVJUICYmIGVyci5zdGF0dXMgPCBIVFRQX0NPREVfU0VSVkVSX0VSUk9SX0VORCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJ2ZXJFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgobGlzdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YSA9IGxpc3QuY29udGVudHM7XG4gICAgICAgICAgICAgICAgdGhpcy50b3RhbFJlY29yZHMgPSBsaXN0LnRvdGFsRWxlbWVudHM7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNJbnB1dChlbGVtZW50SWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBlbGVtZW50OiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgJHtlbGVtZW50SWR9YCk7XG4gICAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgICAgICBlbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRHcmlkKGxpc3RQYXJhbXM/OiBMaXN0UGFyYW1zKSB7XG4gICAgICAgIGlmIChsaXN0UGFyYW1zKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMaXN0UGFyYW1zID0geyAuLi50aGlzLmN1cnJlbnRMaXN0UGFyYW1zLCAuLi5saXN0UGFyYW1zIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50TGlzdFBhcmFtcyA9IHsgLi4udGhpcy5jdXJyZW50TGlzdFBhcmFtcywgcGFnZTogMCwgc29ydDogW10gfTtcbiAgICAgICAgdGhpcy50YWJsZS5yZXNldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsaWNrRGV0YWlscyhyb3dEYXRhOiBFeGNsdXNpb25Qcm9jZXNzKSB7XG4gICAgICAgIHRoaXMuZXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudC5zaG93RGV0YWlscyh7XG4gICAgICAgICAgICBwcm9jZXNzSWQ6IHJvd0RhdGEuaWQsXG4gICAgICAgICAgICBlbnRpdHlEZXNjcmlwdGlvbjogdGhpcy5lbnRpdHlEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGVudGl0eU5hbWU6IHRoaXMuZW50aXR5TmFtZVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
@@ -73,6 +73,9 @@ let FilterService = class FilterService {
73
73
  ? this.translate.instant(`${this.logicalDeleteConfigService.getTranslationPrefix()}.list_grid_boolean_true`)
74
74
  : this.translate.instant(`${this.logicalDeleteConfigService.getTranslationPrefix()}.list_grid_boolean_false`);
75
75
  break;
76
+ default:
77
+ labelValue = value;
78
+ break;
76
79
  }
77
80
  return { id: name, label: `${label}: ${labelValue}` };
78
81
  }
@@ -101,4 +104,4 @@ FilterService = __decorate([
101
104
  Injectable()
102
105
  ], FilterService);
103
106
  export { FilterService };
104
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvZXhjbHVzaW9uLXByb2Nlc3MtY29tcG9uZW50LyIsInNvdXJjZXMiOlsic2VydmljZXMvZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc3RSxJQUFhLGFBQWEsR0FBMUIsTUFBYSxhQUFhO0lBR3RCLFlBQ3FCLDBCQUFzRCxFQUN0RCxTQUEyQjtRQUQzQiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3RELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBSi9CLGdCQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUtsRSxDQUFDO0lBRUosWUFBWSxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsV0FBb0IsS0FBSztRQUM1RCxJQUFJLFFBQVEsRUFBRTtZQUNWLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxRQUFRLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sSUFBSSxNQUFNLEdBQUcsQ0FBQztTQUN4QjtRQUNELE9BQU8sR0FBRyxJQUFJLFFBQVEsS0FBSyxHQUFHLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQixDQUFDLFNBQW9CLEVBQUUsS0FBVTtRQUMvQyxN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UUFDdkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQVcsRUFBRSxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNySCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsUUFBZSxFQUFFLGFBQW9CO1FBQ3RELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsaUNBQzVCLElBQUksS0FDUCxLQUFLLEVBQUUsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUMxRSxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWUsRUFBRSxLQUFVO1FBQ3JDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUNoQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSixDQUFBOztZQWpHb0QsMEJBQTBCO1lBQzNDLGdCQUFnQjs7QUFMdkMsYUFBYTtJQUR6QixVQUFVLEVBQUU7R0FDQSxhQUFhLENBcUd6QjtTQXJHWSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRmllbGRUeXBlLCBGb3JtRmllbGQsIE9wdGlvbiB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcbmltcG9ydCB7IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlIH0gZnJvbSBcIi4vbG9naWNhbC1kZWxldGUtY29uZmlnLnNlcnZpY2VcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZpbHRlclNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbnVtYmVyVHlwZXMgPSBbRmllbGRUeXBlLkludGVnZXIsIEZpZWxkVHlwZS5Eb3VibGVdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9naWNhbERlbGV0ZUNvbmZpZ1NlcnZpY2U6IExvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZVxuICAgICkge31cblxuICAgIGdldEVudW1RdWVyeShuYW1lOiBzdHJpbmcsIHZhbHVlOiBhbnksIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKG11bHRpcGxlKSB7XG4gICAgICAgICAgICBjb25zdCBmaWx0ZXIgPSB2YWx1ZS5tYXAoKHNlbGVjdGVkOiBhbnkpID0+IGAke25hbWV9IGVxICcke3NlbGVjdGVkfSdgKS5qb2luKFwiIG9yIFwiKTtcbiAgICAgICAgICAgIHJldHVybiBgKCR7ZmlsdGVyfSlgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZX0nYDtcbiAgICB9XG5cbiAgICBjcmVhdGVGaWx0ZXJTdHJpbmcoZm9ybUZpZWxkOiBGb3JtRmllbGQsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgeyBuYW1lLCB0eXBlLCBtdWx0aXBsZSB9ID0gZm9ybUZpZWxkO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAke3ZhbHVlfWA7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFwiKX0nYDtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiSEg6bW06c3NcIil9J2A7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7bW9tZW50KHZhbHVlKS5mb3JtYXQoKX0nYDtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkxvY2FsRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KFwiWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1wiKX0nYDtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkVudW06XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RW51bVF1ZXJ5KG5hbWUsIHZhbHVlLCBtdWx0aXBsZSk7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5TdHJpbmc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBjb250YWluaW5nKHVwcGVyKCR7bmFtZX0pLCB1cHBlcignJHt2YWx1ZS5yZXBsYWNlKC8nL2csIFwiJ1wiKX0nKSlgO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuTG9va3VwOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZS5pZH0nYDtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke3ZhbHVlfSdgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlRmlsdGVyVG9rZW5zKGZvcm1GaWVsZDogRm9ybUZpZWxkLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgdHlwZSwgbGFiZWwsIHNlYXJjaEZpZWxkcywgb3B0aW9ucyB9ID0gZm9ybUZpZWxkIGFzIGFueTtcbiAgICAgICAgbGV0IGxhYmVsVmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGU6XG4gICAgICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiTFwiKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLlRpbWU6XG4gICAgICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG1vbWVudCh2YWx1ZSkuZm9ybWF0KFwiTFRTXCIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuTG9jYWxEYXRlVGltZTpcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkRhdGVUaW1lOlxuICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdChcIkwgTFRTXCIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuTG9va3VwOlxuICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBzZWFyY2hGaWVsZHMubWFwKChmaWVsZDogRm9ybUZpZWxkKSA9PiB0aGlzLmdldFByb3AodmFsdWUsIGZpZWxkLm5hbWUpKS5qb2luKFwiIC0gXCIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRW51bTpcbiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IHZhbHVlLm1hcCgoZWxlbWVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5maWx0ZXIoKGVuOiBhbnkpID0+IGVuLnZhbHVlID09PSBlbGVtZW50KVswXS5sYWJlbDtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWxWYWx1ZSA9IG9wdGlvbnMuZmlsdGVyKChvcHRpb246IE9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSBsYWJlbFZhbHVlKVswXS5sYWJlbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5sb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZS5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5saXN0X2dyaWRfYm9vbGVhbl90cnVlYClcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMubG9naWNhbERlbGV0ZUNvbmZpZ1NlcnZpY2UuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubGlzdF9ncmlkX2Jvb2xlYW5fZmFsc2VgKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGlkOiBuYW1lLCBsYWJlbDogYCR7bGFiZWx9OiAke2xhYmVsVmFsdWV9YCB9O1xuICAgIH1cblxuICAgIGdldFN1Z2dlc3Rpb25WYWx1ZShkaXNwbGF5RmllbGRzOiBzdHJpbmdbXSwgb3duZXJFbnRpdHk6IHN0cmluZywgdmFsdWU6IGFueSwgc2VwYXJhdG9yOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGRpc3BsYXlGaWVsZHMubWFwKGZpZWxkID0+IHRoaXMuZ2V0UHJvcCh2YWx1ZSwgYCR7b3duZXJFbnRpdHl9LiR7ZmllbGR9YCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYWNjOiBhbnksIHZhbDogYW55KSA9PiBgJHthY2N9JHtzZXBhcmF0b3J9JHt2YWx9YCkgKyBcIlwiO1xuICAgIH1cblxuICAgIGdldFByb3Aob2JqOiBhbnksIHBhdGg6IGFueSkge1xuICAgICAgICByZXR1cm4gcGF0aC5zcGxpdChcIi5cIikucmVkdWNlKChyZXN1bHQ6IGFueSwgcHJvcDogYW55KSA9PiAocmVzdWx0W3Byb3BdID09PSB1bmRlZmluZWQgPyBcIlwiIDogcmVzdWx0W3Byb3BdKSwgb2JqKTtcbiAgICB9XG5cbiAgICBnZXRMYWJlbFZhbHVlUmVxdWVzdChjb250ZW50czogYW55W10sIGRpc3BsYXlGaWVsZHM6IGFueVtdKSB7XG4gICAgICAgIHJldHVybiBjb250ZW50cy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBsYWJlbDogZGlzcGxheUZpZWxkcy5tYXAoZmllbGQgPT4gdGhpcy5nZXRQcm9wKGl0ZW0sIGZpZWxkKSkuam9pbihcIiAtIFwiKVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgaXNWYWxpZEZpbHRlcih0eXBlOiBGaWVsZFR5cGUsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgaXNUeXBlTnVtYmVyID0gdGhpcy5udW1iZXJUeXBlcy5pbmNsdWRlcyh0eXBlKTtcbiAgICAgICAgY29uc3QgbnVtYmVyUGF0dGVybiA9IC9eXFxkK1xcYiQvO1xuICAgICAgICBjb25zdCBpc051bWJlciA9IHZhbHVlLm1hdGNoKG51bWJlclBhdHRlcm4pO1xuICAgICAgICByZXR1cm4gIShpc1R5cGVOdW1iZXIgJiYgIWlzTnVtYmVyKTtcbiAgICB9XG59XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2VuaW9yc2lzdGVtYXMvZXhjbHVzaW9uLXByb2Nlc3MtY29tcG9uZW50LyIsInNvdXJjZXMiOlsic2VydmljZXMvZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBcUIsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUc3RSxJQUFhLGFBQWEsR0FBMUIsTUFBYSxhQUFhO0lBR3RCLFlBQ3FCLDBCQUFzRCxFQUN0RCxTQUEyQjtRQUQzQiwrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3RELGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBSi9CLGdCQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUtsRSxDQUFDO0lBRUosWUFBWSxDQUFDLElBQVksRUFBRSxLQUFVLEVBQUUsV0FBb0IsS0FBSztRQUM1RCxJQUFJLFFBQVEsRUFBRTtZQUNWLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxRQUFRLFFBQVEsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3JGLE9BQU8sSUFBSSxNQUFNLEdBQUcsQ0FBQztTQUN4QjtRQUNELE9BQU8sR0FBRyxJQUFJLFFBQVEsS0FBSyxHQUFHLENBQUM7SUFDbkMsQ0FBQztJQUVELGtCQUFrQixDQUFDLFNBQW9CLEVBQUUsS0FBVTtRQUMvQyxN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ZW50XCI7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZpZWxkVHlwZSwgRm9ybUZpZWxkLCBPcHRpb24gfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZSB9IGZyb20gXCIuL2xvZ2ljYWwtZGVsZXRlLWNvbmZpZy5zZXJ2aWNlXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGaWx0ZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG51bWJlclR5cGVzID0gW0ZpZWxkVHlwZS5JbnRlZ2VyLCBGaWVsZFR5cGUuRG91YmxlXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlOiBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHt9XG5cbiAgICBnZXRFbnVtUXVlcnkobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGlmIChtdWx0aXBsZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdmFsdWUubWFwKChzZWxlY3RlZDogYW55KSA9PiBgJHtuYW1lfSBlcSAnJHtzZWxlY3RlZH0nYCkuam9pbihcIiBvciBcIik7XG4gICAgICAgICAgICByZXR1cm4gYCgke2ZpbHRlcn0pYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWV9J2A7XG4gICAgfVxuXG4gICAgY3JlYXRlRmlsdGVyU3RyaW5nKGZvcm1GaWVsZDogRm9ybUZpZWxkLCB2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHsgbmFtZSwgdHlwZSwgbXVsdGlwbGUgfSA9IGZvcm1GaWVsZDtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJHt2YWx1ZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERcIil9J2A7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIkhIOm1tOnNzXCIpfSdgO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke25hbWV9IGVxICcke21vbWVudCh2YWx1ZSkuZm9ybWF0KCl9J2A7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5Mb2NhbERhdGVUaW1lOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHttb21lbnQodmFsdWUpLmZvcm1hdChcIllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NcIil9J2A7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5FbnVtOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEVudW1RdWVyeShuYW1lLCB2YWx1ZSwgbXVsdGlwbGUpO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuU3RyaW5nOlxuICAgICAgICAgICAgICAgIHJldHVybiBgY29udGFpbmluZyh1cHBlcigke25hbWV9KSwgdXBwZXIoJyR7dmFsdWUucmVwbGFjZSgvJy9nLCBcIidcIil9JykpYDtcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkxvb2t1cDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7bmFtZX0gZXEgJyR7dmFsdWUuaWR9J2A7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHtuYW1lfSBlcSAnJHt2YWx1ZX0nYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZUZpbHRlclRva2Vucyhmb3JtRmllbGQ6IEZvcm1GaWVsZCwgdmFsdWU6IGFueSkge1xuICAgICAgICBjb25zdCB7IG5hbWUsIHR5cGUsIGxhYmVsLCBzZWFyY2hGaWVsZHMsIG9wdGlvbnMgfSA9IGZvcm1GaWVsZCBhcyBhbnk7XG4gICAgICAgIGxldCBsYWJlbFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlOlxuICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdChcIkxcIik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5UaW1lOlxuICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBtb21lbnQodmFsdWUpLmZvcm1hdChcIkxUU1wiKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkxvY2FsRGF0ZVRpbWU6XG4gICAgICAgICAgICBjYXNlIEZpZWxkVHlwZS5EYXRlVGltZTpcbiAgICAgICAgICAgICAgICBsYWJlbFZhbHVlID0gbW9tZW50KHZhbHVlKS5mb3JtYXQoXCJMIExUU1wiKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkxvb2t1cDpcbiAgICAgICAgICAgICAgICBsYWJlbFZhbHVlID0gc2VhcmNoRmllbGRzLm1hcCgoZmllbGQ6IEZvcm1GaWVsZCkgPT4gdGhpcy5nZXRQcm9wKHZhbHVlLCBmaWVsZC5uYW1lKSkuam9pbihcIiAtIFwiKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRUeXBlLkVudW06XG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSB2YWx1ZS5tYXAoKGVsZW1lbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZmlsdGVyKChlbjogYW55KSA9PiBlbi52YWx1ZSA9PT0gZWxlbWVudClbMF0ubGFiZWw7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSBvcHRpb25zLmZpbHRlcigob3B0aW9uOiBPcHRpb24pID0+IG9wdGlvbi52YWx1ZSA9PT0gbGFiZWxWYWx1ZSlbMF0ubGFiZWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZFR5cGUuQm9vbGVhbjpcbiAgICAgICAgICAgICAgICBsYWJlbFZhbHVlID0gdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMubG9naWNhbERlbGV0ZUNvbmZpZ1NlcnZpY2UuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubGlzdF9ncmlkX2Jvb2xlYW5fdHJ1ZWApXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLmxvZ2ljYWxEZWxldGVDb25maWdTZXJ2aWNlLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9Lmxpc3RfZ3JpZF9ib29sZWFuX2ZhbHNlYCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGxhYmVsVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGlkOiBuYW1lLCBsYWJlbDogYCR7bGFiZWx9OiAke2xhYmVsVmFsdWV9YCB9O1xuICAgIH1cblxuICAgIGdldFN1Z2dlc3Rpb25WYWx1ZShkaXNwbGF5RmllbGRzOiBzdHJpbmdbXSwgb3duZXJFbnRpdHk6IHN0cmluZywgdmFsdWU6IGFueSwgc2VwYXJhdG9yOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGRpc3BsYXlGaWVsZHMubWFwKGZpZWxkID0+IHRoaXMuZ2V0UHJvcCh2YWx1ZSwgYCR7b3duZXJFbnRpdHl9LiR7ZmllbGR9YCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlZHVjZSgoYWNjOiBhbnksIHZhbDogYW55KSA9PiBgJHthY2N9JHtzZXBhcmF0b3J9JHt2YWx9YCkgKyBcIlwiO1xuICAgIH1cblxuICAgIGdldFByb3Aob2JqOiBhbnksIHBhdGg6IGFueSkge1xuICAgICAgICByZXR1cm4gcGF0aC5zcGxpdChcIi5cIikucmVkdWNlKChyZXN1bHQ6IGFueSwgcHJvcDogYW55KSA9PiAocmVzdWx0W3Byb3BdID09PSB1bmRlZmluZWQgPyBcIlwiIDogcmVzdWx0W3Byb3BdKSwgb2JqKTtcbiAgICB9XG5cbiAgICBnZXRMYWJlbFZhbHVlUmVxdWVzdChjb250ZW50czogYW55W10sIGRpc3BsYXlGaWVsZHM6IGFueVtdKSB7XG4gICAgICAgIHJldHVybiBjb250ZW50cy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBsYWJlbDogZGlzcGxheUZpZWxkcy5tYXAoZmllbGQgPT4gdGhpcy5nZXRQcm9wKGl0ZW0sIGZpZWxkKSkuam9pbihcIiAtIFwiKVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgaXNWYWxpZEZpbHRlcih0eXBlOiBGaWVsZFR5cGUsIHZhbHVlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgaXNUeXBlTnVtYmVyID0gdGhpcy5udW1iZXJUeXBlcy5pbmNsdWRlcyh0eXBlKTtcbiAgICAgICAgY29uc3QgbnVtYmVyUGF0dGVybiA9IC9eXFxkK1xcYiQvO1xuICAgICAgICBjb25zdCBpc051bWJlciA9IHZhbHVlLm1hdGNoKG51bWJlclBhdHRlcm4pO1xuICAgICAgICByZXR1cm4gIShpc1R5cGVOdW1iZXIgJiYgIWlzTnVtYmVyKTtcbiAgICB9XG59XG4iXX0=