@seniorsistemas/exclusion-process-component 0.2.1 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/seniorsistemas-exclusion-process-component.umd.js +144 -104
- package/bundles/seniorsistemas-exclusion-process-component.umd.js.map +1 -1
- package/bundles/seniorsistemas-exclusion-process-component.umd.min.js +2 -2
- package/bundles/seniorsistemas-exclusion-process-component.umd.min.js.map +1 -1
- package/esm2015/exclusion-details/exclusion-details.component.js +121 -71
- package/esm2015/exclusions-list/exclusions-list.component.js +21 -15
- package/esm2015/exclusions-list/exclusions-list.routing.js +4 -25
- package/esm5/exclusion-details/exclusion-details.component.js +127 -73
- package/esm5/exclusions-list/exclusions-list.component.js +21 -15
- package/esm5/exclusions-list/exclusions-list.routing.js +4 -26
- package/exclusion-details/exclusion-details.component.d.ts +16 -12
- package/exclusions-list/exclusions-list.component.d.ts +7 -5
- package/exclusions-list/exclusions-list.routing.d.ts +0 -8
- package/fesm2015/seniorsistemas-exclusion-process-component.js +143 -105
- package/fesm2015/seniorsistemas-exclusion-process-component.js.map +1 -1
- package/fesm5/seniorsistemas-exclusion-process-component.js +148 -107
- package/fesm5/seniorsistemas-exclusion-process-component.js.map +1 -1
- package/package.json +1 -1
- package/seniorsistemas-exclusion-process-component.metadata.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __assign, __decorate } from "tslib";
|
|
2
2
|
import * as moment from "moment";
|
|
3
|
-
import { Component, Output, ViewEncapsulation } from "@angular/core";
|
|
4
|
-
import { ActivatedRoute
|
|
3
|
+
import { Component, Output, ViewEncapsulation, EventEmitter } from "@angular/core";
|
|
4
|
+
import { ActivatedRoute } from "@angular/router";
|
|
5
5
|
import { TranslateService } from "@ngx-translate/core";
|
|
6
6
|
import { Subject } from "rxjs";
|
|
7
7
|
import { finalize, takeUntil } from "rxjs/operators";
|
|
@@ -10,18 +10,37 @@ import { WebsocketService } from "@senior-gestao-empresarial/angular-components"
|
|
|
10
10
|
import { EnumExclusionProcessStatus } from "../enums/enum-exclusion-process-status";
|
|
11
11
|
import { LogicalDeleteService } from "../services/logical-delete.service";
|
|
12
12
|
import { LogicalDeleteConfigService } from "../services/logical-delete-config.service";
|
|
13
|
+
var EXCLUSION_PROCESS_STATUS_BADGE = [
|
|
14
|
+
{
|
|
15
|
+
enumValue: EnumExclusionProcessStatus.ERROR,
|
|
16
|
+
color: EnumBadgeColors.RED
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
enumValue: EnumExclusionProcessStatus.PENDING,
|
|
20
|
+
color: EnumBadgeColors.YELLOW
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
enumValue: EnumExclusionProcessStatus.PROCESSING,
|
|
24
|
+
color: EnumBadgeColors.BLUE
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
enumValue: EnumExclusionProcessStatus.SUCCESS,
|
|
28
|
+
color: EnumBadgeColors.GREEN
|
|
29
|
+
}
|
|
30
|
+
];
|
|
13
31
|
var ExclusionDetailsComponent = /** @class */ (function () {
|
|
14
|
-
function ExclusionDetailsComponent(
|
|
15
|
-
this.router = router;
|
|
32
|
+
function ExclusionDetailsComponent(route, translate, logicalDeleteService, projectConfigs) {
|
|
16
33
|
this.route = route;
|
|
17
34
|
this.translate = translate;
|
|
18
35
|
this.logicalDeleteService = logicalDeleteService;
|
|
19
36
|
this.projectConfigs = projectConfigs;
|
|
20
|
-
this.
|
|
37
|
+
this.expandedRows = {};
|
|
38
|
+
this.onProcessFinishedSuccessfully = new EventEmitter();
|
|
21
39
|
this._isVisible = false;
|
|
22
40
|
this._isLoading = false;
|
|
23
|
-
this.
|
|
24
|
-
this.
|
|
41
|
+
this._processGroupData = [];
|
|
42
|
+
this._processGroupColumns = [];
|
|
43
|
+
this._processStepColumns = [];
|
|
25
44
|
this.ngUnsubscribe = new Subject();
|
|
26
45
|
}
|
|
27
46
|
Object.defineProperty(ExclusionDetailsComponent.prototype, "isVisible", {
|
|
@@ -38,16 +57,23 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
38
57
|
enumerable: true,
|
|
39
58
|
configurable: true
|
|
40
59
|
});
|
|
41
|
-
Object.defineProperty(ExclusionDetailsComponent.prototype, "
|
|
60
|
+
Object.defineProperty(ExclusionDetailsComponent.prototype, "processGroupData", {
|
|
42
61
|
get: function () {
|
|
43
|
-
return this.
|
|
62
|
+
return this._processGroupData;
|
|
44
63
|
},
|
|
45
64
|
enumerable: true,
|
|
46
65
|
configurable: true
|
|
47
66
|
});
|
|
48
|
-
Object.defineProperty(ExclusionDetailsComponent.prototype, "
|
|
67
|
+
Object.defineProperty(ExclusionDetailsComponent.prototype, "processGroupColumns", {
|
|
49
68
|
get: function () {
|
|
50
|
-
return this.
|
|
69
|
+
return this._processGroupColumns;
|
|
70
|
+
},
|
|
71
|
+
enumerable: true,
|
|
72
|
+
configurable: true
|
|
73
|
+
});
|
|
74
|
+
Object.defineProperty(ExclusionDetailsComponent.prototype, "processStepColumns", {
|
|
75
|
+
get: function () {
|
|
76
|
+
return this._processStepColumns;
|
|
51
77
|
},
|
|
52
78
|
enumerable: true,
|
|
53
79
|
configurable: true
|
|
@@ -59,7 +85,8 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
59
85
|
.subscribe(function (data) {
|
|
60
86
|
_this.locale = data.localeConfig;
|
|
61
87
|
});
|
|
62
|
-
this.
|
|
88
|
+
this._processGroupColumns = this.getGroupColumns();
|
|
89
|
+
this._processStepColumns = this.getStepColumns();
|
|
63
90
|
};
|
|
64
91
|
ExclusionDetailsComponent.prototype.ngOnDestroy = function () {
|
|
65
92
|
this.ngUnsubscribe.next();
|
|
@@ -68,12 +95,11 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
68
95
|
};
|
|
69
96
|
ExclusionDetailsComponent.prototype.showDetails = function (details) {
|
|
70
97
|
this._exclusionDetails = details;
|
|
71
|
-
this._entityName = details.entityName;
|
|
72
98
|
this._isVisible = true;
|
|
73
|
-
this.
|
|
99
|
+
this._processGroupData = [];
|
|
74
100
|
this.processDetails = null;
|
|
75
101
|
this.entityDescription = details.entityDescription;
|
|
76
|
-
this.loadProcessDetails(details);
|
|
102
|
+
this.loadProcessDetails(details, true);
|
|
77
103
|
this.connectWebSocket();
|
|
78
104
|
};
|
|
79
105
|
ExclusionDetailsComponent.prototype.onVisibilityChanged = function (event) {
|
|
@@ -82,17 +108,9 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
82
108
|
ExclusionDetailsComponent.prototype.closeDetails = function () {
|
|
83
109
|
this._isVisible = false;
|
|
84
110
|
this._exclusionDetails = null;
|
|
85
|
-
this.
|
|
111
|
+
this._processGroupData = [];
|
|
86
112
|
this.disconnectWebSocket();
|
|
87
113
|
};
|
|
88
|
-
ExclusionDetailsComponent.prototype.openExclusions = function () {
|
|
89
|
-
this.closeDetails();
|
|
90
|
-
this.router.navigate(["exclusions-list", this._entityName], {
|
|
91
|
-
queryParams: {
|
|
92
|
-
entityDescription: this.entityDescription
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
};
|
|
96
114
|
ExclusionDetailsComponent.prototype.getRecordDescription = function () {
|
|
97
115
|
var _a;
|
|
98
116
|
if (!((_a = this.processDetails) === null || _a === void 0 ? void 0 : _a.description)) {
|
|
@@ -142,15 +160,40 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
142
160
|
ExclusionDetailsComponent.prototype.getEmptyStateDescription = function () {
|
|
143
161
|
return this.translate.instant(this.projectConfigs.getTranslationPrefix() + ".logical_delete_empty_state_description");
|
|
144
162
|
};
|
|
145
|
-
ExclusionDetailsComponent.prototype.
|
|
163
|
+
ExclusionDetailsComponent.prototype.getGroupColumns = function () {
|
|
164
|
+
return [
|
|
165
|
+
{
|
|
166
|
+
field: "description",
|
|
167
|
+
attributes: ["description"],
|
|
168
|
+
header: this.translate.instant(this.projectConfigs.getTranslationPrefix() + ".logical_delete_group"),
|
|
169
|
+
type: EnumColumnFieldType.STRING,
|
|
170
|
+
style: {
|
|
171
|
+
width: "340px"
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
field: "status",
|
|
176
|
+
attributes: ["status"],
|
|
177
|
+
header: this.translate.instant(this.projectConfigs.getTranslationPrefix() + ".logical_delete_status"),
|
|
178
|
+
type: EnumColumnFieldType.ENUM,
|
|
179
|
+
enumPrefix: this.projectConfigs.getTranslationPrefix() + ".logical_delete_enum_exclusion_process_status_",
|
|
180
|
+
style: {
|
|
181
|
+
width: "100px"
|
|
182
|
+
},
|
|
183
|
+
tooltip: this.getColumnStatusTooltip,
|
|
184
|
+
badgeConfigs: EXCLUSION_PROCESS_STATUS_BADGE
|
|
185
|
+
}
|
|
186
|
+
];
|
|
187
|
+
};
|
|
188
|
+
ExclusionDetailsComponent.prototype.getStepColumns = function () {
|
|
146
189
|
return [
|
|
147
190
|
{
|
|
148
191
|
field: "description",
|
|
149
192
|
attributes: ["description"],
|
|
150
|
-
header: this.translate.instant(this.projectConfigs.getTranslationPrefix() + ".
|
|
193
|
+
header: this.translate.instant(this.projectConfigs.getTranslationPrefix() + ".logical_delete_step"),
|
|
151
194
|
type: EnumColumnFieldType.STRING,
|
|
152
195
|
style: {
|
|
153
|
-
width: "
|
|
196
|
+
width: "340px"
|
|
154
197
|
}
|
|
155
198
|
},
|
|
156
199
|
{
|
|
@@ -163,24 +206,7 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
163
206
|
width: "100px"
|
|
164
207
|
},
|
|
165
208
|
tooltip: this.getColumnStatusTooltip,
|
|
166
|
-
badgeConfigs:
|
|
167
|
-
{
|
|
168
|
-
enumValue: EnumExclusionProcessStatus.ERROR,
|
|
169
|
-
color: EnumBadgeColors.RED
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
enumValue: EnumExclusionProcessStatus.PENDING,
|
|
173
|
-
color: EnumBadgeColors.YELLOW
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
enumValue: EnumExclusionProcessStatus.PROCESSING,
|
|
177
|
-
color: EnumBadgeColors.BLUE
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
enumValue: EnumExclusionProcessStatus.SUCCESS,
|
|
181
|
-
color: EnumBadgeColors.GREEN
|
|
182
|
-
}
|
|
183
|
-
]
|
|
209
|
+
badgeConfigs: EXCLUSION_PROCESS_STATUS_BADGE
|
|
184
210
|
}
|
|
185
211
|
];
|
|
186
212
|
};
|
|
@@ -190,8 +216,9 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
190
216
|
}
|
|
191
217
|
return null;
|
|
192
218
|
};
|
|
193
|
-
ExclusionDetailsComponent.prototype.loadProcessDetails = function (details) {
|
|
219
|
+
ExclusionDetailsComponent.prototype.loadProcessDetails = function (details, firstLoad) {
|
|
194
220
|
var _this = this;
|
|
221
|
+
if (firstLoad === void 0) { firstLoad = false; }
|
|
195
222
|
this._isLoading = true;
|
|
196
223
|
var processObservable = details.processId
|
|
197
224
|
? this.logicalDeleteService.getProcessDetails(details.processId)
|
|
@@ -204,40 +231,59 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
204
231
|
return;
|
|
205
232
|
}
|
|
206
233
|
_this.processDetails = process;
|
|
207
|
-
_this.
|
|
234
|
+
_this._processGroupData = _this.sortGroupsByStartDate(process.groups)
|
|
235
|
+
.map(function (p) { return (__assign(__assign({}, p), { steps: _this.sortStepsByStartDate(p.steps) })); });
|
|
236
|
+
_this.expandedRows = {};
|
|
237
|
+
_this._processGroupData
|
|
238
|
+
.filter(function (p) { return p.status !== EnumExclusionProcessStatus.SUCCESS; })
|
|
239
|
+
.forEach(function (p) {
|
|
240
|
+
_this.expandedRows[p.id] = true;
|
|
241
|
+
});
|
|
242
|
+
_this.checkIfProcessDone();
|
|
243
|
+
if (!firstLoad) {
|
|
244
|
+
_this.checkIfProcessWasSuccessuful();
|
|
245
|
+
}
|
|
208
246
|
});
|
|
209
247
|
};
|
|
210
|
-
ExclusionDetailsComponent.prototype.
|
|
211
|
-
if (
|
|
248
|
+
ExclusionDetailsComponent.prototype.checkIfProcessDone = function () {
|
|
249
|
+
if (!this._processGroupData.length) {
|
|
250
|
+
return;
|
|
251
|
+
}
|
|
252
|
+
var isProcessFinished = this._processGroupData
|
|
253
|
+
.every(function (p) { return p.status === EnumExclusionProcessStatus.ERROR || p.status === EnumExclusionProcessStatus.SUCCESS; });
|
|
254
|
+
if (isProcessFinished) {
|
|
255
|
+
this.disconnectWebSocket();
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
ExclusionDetailsComponent.prototype.checkIfProcessWasSuccessuful = function () {
|
|
259
|
+
var isProcessSuccessful = this._processGroupData
|
|
260
|
+
.every(function (p) { return p.status === EnumExclusionProcessStatus.SUCCESS; });
|
|
261
|
+
if (isProcessSuccessful) {
|
|
262
|
+
this.notifyProcessFinishedSuccessfully();
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
ExclusionDetailsComponent.prototype.notifyProcessFinishedSuccessfully = function () {
|
|
266
|
+
this.onProcessFinishedSuccessfully.emit(this.processDetails);
|
|
267
|
+
};
|
|
268
|
+
ExclusionDetailsComponent.prototype.sortByDate = function (firstDate, secondDate) {
|
|
269
|
+
if (!firstDate || !secondDate) {
|
|
270
|
+
return 1;
|
|
271
|
+
}
|
|
272
|
+
if (firstDate.getTime() > secondDate.getTime()) {
|
|
212
273
|
return 1;
|
|
213
274
|
}
|
|
214
|
-
if (
|
|
275
|
+
if (firstDate.getTime() < secondDate.getTime()) {
|
|
215
276
|
return -1;
|
|
216
277
|
}
|
|
217
278
|
return 0;
|
|
218
279
|
};
|
|
219
280
|
ExclusionDetailsComponent.prototype.sortGroupsByStartDate = function (groups) {
|
|
220
281
|
var _this = this;
|
|
221
|
-
return groups.sort(function (a, b) { return _this.sortByDate(a.startDate, b.
|
|
282
|
+
return groups.sort(function (a, b) { return _this.sortByDate(a.startDate, b.startDate); });
|
|
222
283
|
};
|
|
223
284
|
ExclusionDetailsComponent.prototype.sortStepsByStartDate = function (steps) {
|
|
224
285
|
var _this = this;
|
|
225
|
-
return steps.sort(function (a, b) { return _this.sortByDate(a.startDate, b.
|
|
226
|
-
};
|
|
227
|
-
ExclusionDetailsComponent.prototype.loadProcessSummary = function (process) {
|
|
228
|
-
var _this = this;
|
|
229
|
-
var stepLogs = [];
|
|
230
|
-
this.sortGroupsByStartDate(process.groups)
|
|
231
|
-
.forEach(function (group) {
|
|
232
|
-
var steps = _this.sortStepsByStartDate(group.steps)
|
|
233
|
-
.map(function (step) { return ({
|
|
234
|
-
description: step.description,
|
|
235
|
-
status: step.status,
|
|
236
|
-
errorMessage: step.errorMessage
|
|
237
|
-
}); });
|
|
238
|
-
stepLogs.push.apply(stepLogs, __spread(steps));
|
|
239
|
-
});
|
|
240
|
-
this._processSummaryData = stepLogs;
|
|
286
|
+
return steps.sort(function (a, b) { return _this.sortByDate(a.startDate, b.startDate); });
|
|
241
287
|
};
|
|
242
288
|
ExclusionDetailsComponent.prototype.disconnectWebSocket = function () {
|
|
243
289
|
if (this._exclusionProcessStatusChangedSubscribe) {
|
|
@@ -289,7 +335,6 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
289
335
|
});
|
|
290
336
|
};
|
|
291
337
|
ExclusionDetailsComponent.ctorParameters = function () { return [
|
|
292
|
-
{ type: Router },
|
|
293
338
|
{ type: ActivatedRoute },
|
|
294
339
|
{ type: TranslateService },
|
|
295
340
|
{ type: LogicalDeleteService },
|
|
@@ -303,20 +348,29 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
303
348
|
], ExclusionDetailsComponent.prototype, "isLoading", null);
|
|
304
349
|
__decorate([
|
|
305
350
|
Output()
|
|
306
|
-
], ExclusionDetailsComponent.prototype, "
|
|
351
|
+
], ExclusionDetailsComponent.prototype, "processGroupData", null);
|
|
307
352
|
__decorate([
|
|
308
353
|
Output()
|
|
309
|
-
], ExclusionDetailsComponent.prototype, "
|
|
354
|
+
], ExclusionDetailsComponent.prototype, "processGroupColumns", null);
|
|
355
|
+
__decorate([
|
|
356
|
+
Output()
|
|
357
|
+
], ExclusionDetailsComponent.prototype, "processStepColumns", null);
|
|
310
358
|
__decorate([
|
|
311
359
|
Output()
|
|
312
360
|
], ExclusionDetailsComponent.prototype, "processDetails", void 0);
|
|
313
361
|
__decorate([
|
|
314
362
|
Output()
|
|
315
363
|
], ExclusionDetailsComponent.prototype, "entityDescription", void 0);
|
|
364
|
+
__decorate([
|
|
365
|
+
Output()
|
|
366
|
+
], ExclusionDetailsComponent.prototype, "expandedRows", void 0);
|
|
367
|
+
__decorate([
|
|
368
|
+
Output()
|
|
369
|
+
], ExclusionDetailsComponent.prototype, "onProcessFinishedSuccessfully", void 0);
|
|
316
370
|
ExclusionDetailsComponent = __decorate([
|
|
317
371
|
Component({
|
|
318
372
|
selector: "s-exclusion-details",
|
|
319
|
-
template: "<s-sidebar [visible]=\"isVisible\" (visibleChange)=\"onVisibilityChanged($event)\" [header]=\"getSidebarTitle()\">\n <s-loading-state [loading]=\"isLoading\">\n <p-panel [showHeader]=\"false\" styleClass=\"s-exclusion-details-record-details-panel\">\n <div class=\"s-exclusion-details-record-details-container\">\n <div class=\"s-exclusion-details-record-icon-background\">\n <em class=\"far fa-file-alt s-exclusion-details-record-icon\"></em>\n </div>\n\n <div class=\"s-exclusion-details-record-details-recordinfo\">\n <span class=\"s-exclusion-details-record-details-type\">\n {{entityDescription}}\n </span>\n <span>\n {{getRecordDescription()}}\n </span>\n </div>\n\n <div class=\"s-exclusion-details-record-details-dateinfo\">\n <span>\n {{getStartDateLabel()}}: {{getInicialDate()}}\n </span>\n <span *ngIf=\"isFinished()\">\n {{getFinishDateLabel()}}: {{getFinishDate()}}\n </span>\n </div>\n </div>\n </p-panel>\n\n <p-panel>\n <p-header>\n {{getSummaryLabel()}}\n </p-header>\n\n <s-empty-state\n *ngIf=\"
|
|
373
|
+
template: "<s-sidebar [visible]=\"isVisible\" (visibleChange)=\"onVisibilityChanged($event)\" [header]=\"getSidebarTitle()\">\n <s-loading-state [loading]=\"isLoading\">\n <p-panel [showHeader]=\"false\" styleClass=\"s-exclusion-details-record-details-panel\">\n <div class=\"s-exclusion-details-record-details-container\">\n <div class=\"s-exclusion-details-record-icon-background\">\n <em class=\"far fa-file-alt s-exclusion-details-record-icon\"></em>\n </div>\n\n <div class=\"s-exclusion-details-record-details-recordinfo\">\n <span class=\"s-exclusion-details-record-details-type\">\n {{entityDescription}}\n </span>\n <span>\n {{getRecordDescription()}}\n </span>\n </div>\n\n <div class=\"s-exclusion-details-record-details-dateinfo\">\n <span>\n {{getStartDateLabel()}}: {{getInicialDate()}}\n </span>\n <span *ngIf=\"isFinished()\">\n {{getFinishDateLabel()}}: {{getFinishDate()}}\n </span>\n </div>\n </div>\n </p-panel>\n\n <p-panel>\n <p-header>\n {{getSummaryLabel()}}\n </p-header>\n\n <s-empty-state\n *ngIf=\"processGroupData && !processGroupData.length\"\n [title]=\"getEmptyStateTitle()\"\n [description]=\"getEmptyStateDescription()\">\n [showPrimaryAction]=\"false\"\n </s-empty-state>\n\n <p-table\n [value]=\"processGroupData\"\n [columns]=\"processGroupColumns\"\n dataKey=\"id\"\n [lazy]=\"false\"\n [scrollable]=\"false\"\n [paginator]=\"false\"\n *ngIf=\"processGroupData && processGroupData.length\"\n [expandedRowKeys]=\"expandedRows\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th id=\"expend-column\" style=\"width: 40px;\"></th>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [ngStyle]=\"col.style\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\" ></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\" let-expanded=\"expanded\">\n <tr sNavigation [sRowToggler]=\"rowData\">\n <td style=\"width: 40px;\" tabindex=\"0\">\n <em class=\"fa fa-{{ expanded ? 'minus' : 'plus' }}\"></em>\n </td>\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n </tr>\n </ng-template>\n\n <ng-template pTemplate=\"rowexpansion\" let-rowData let-columns=\"columns\">\n <tr class=\"sds-expanded-row\">\n <td [attr.colspan]=\"columns.length + 1\">\n <p-table \n [value]=\"rowData.steps\"\n [columns]=\"processStepColumns\"\n dataKey=\"id\"\n [paginator]=\"false\"\n [responsive]=\"true\"\n [scrollable]=\"false\"\n [lazy]=\"false\">\n\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n <th *ngFor=\"let col of columns\"\n [id]=\"col.field\"\n [ngStyle]=\"col.style\"\n [pSortableColumn]=\"col.field\">\n <div class=\"senior-header\">\n <span class=\"senior-header-title\">{{ col.header }}</span>\n <p-sortIcon [field]=\"col.field\" ></p-sortIcon>\n </div>\n </th>\n </tr>\n </ng-template>\n \n <ng-template pTemplate=\"body\" let-rowData let-columns=\"columns\">\n <tr>\n <s-table-columns\n [columns]=\"columns\"\n [rowValue]=\"rowData\"\n [locale]=\"locale\">\n </s-table-columns>\n </tr>\n </ng-template>\n </p-table>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </p-panel>\n </s-loading-state>\n\n <s-footer>\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <s-button [label]=\"getCloseButtonLabel()\" priority=\"link\" (onClick)=\"closeDetails()\"></s-button>\n </div>\n </div>\n </s-footer>\n</s-sidebar>\n",
|
|
320
374
|
encapsulation: ViewEncapsulation.None,
|
|
321
375
|
styles: [".s-exclusion-details-record-details-panel{margin-bottom:10px}.s-exclusion-details-record-details-container{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-align:center;align-items:center}.s-exclusion-details-record-details-recordinfo{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:10px;-ms-flex:1;flex:1}.s-exclusion-details-record-details-dateinfo{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin-left:10px;-ms-flex-align:end;align-items:flex-end;font-size:12px}.s-exclusion-details-record-details-type{color:#999}.s-exclusion-details-record-icon{font-size:22pt;color:#7e8d95}.s-exclusion-details-record-icon-background{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:16px;background-color:#c1cad1;border-radius:50%;height:60px;width:60px}"]
|
|
322
376
|
})
|
|
@@ -324,4 +378,4 @@ var ExclusionDetailsComponent = /** @class */ (function () {
|
|
|
324
378
|
return ExclusionDetailsComponent;
|
|
325
379
|
}());
|
|
326
380
|
export { ExclusionDetailsComponent };
|
|
327
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2V4Y2x1c2lvbi1wcm9jZXNzLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImV4Y2x1c2lvbi1kZXRhaWxzL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBV3ZGO0lBdUNJLG1DQUNxQixNQUFjLEVBQ2QsS0FBcUIsRUFDckIsU0FBMkIsRUFDM0Isb0JBQTBDLEVBQzFDLGNBQTBDO1FBSjFDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQix5QkFBb0IsR0FB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SSxDQUFDLEdBQUcsS0FBSyxLQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxFQUFFO2dCQUNuRixLQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQ2hELE9BQU87YUFDVjtZQUVELElBQUksS0FBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RGLEtBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQzthQUNuRDtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs7Z0JBelI0QixNQUFNO2dCQUNQLGNBQWM7Z0JBQ1YsZ0JBQWdCO2dCQUNMLG9CQUFvQjtnQkFDMUIsMEJBQTBCOztJQXhDL0Q7UUFEQyxNQUFNLEVBQUU7OERBR1I7SUFHRDtRQURDLE1BQU0sRUFBRTs4REFHUjtJQUdEO1FBREMsTUFBTSxFQUFFO3VFQUdSO0lBR0Q7UUFEQyxNQUFNLEVBQUU7MEVBR1I7SUFHRDtRQURDLE1BQU0sRUFBRTtxRUFDK0I7SUFHeEM7UUFEQyxNQUFNLEVBQUU7d0VBQ3dCO0lBM0J4Qix5QkFBeUI7UUFOckMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLHFCQUFxQjtZQUMvQix1MUhBQWlEO1lBRWpELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOztTQUN4QyxDQUFDO09BQ1cseUJBQXlCLENBa1VyQztJQUFELGdDQUFDO0NBQUEsQUFsVUQsSUFrVUM7U0FsVVkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEVudW1CYWRnZUNvbG9ycywgRW51bUNvbHVtbkZpZWxkVHlwZSwgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IFdlYnNvY2tldFNlcnZpY2UgfSBmcm9tIFwiQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cyB9IGZyb20gXCIuLi9lbnVtcy9lbnVtLWV4Y2x1c2lvbi1wcm9jZXNzLXN0YXR1c1wiO1xuaW1wb3J0IHsgRXhjbHVzaW9uRGV0YWlscyB9IGZyb20gXCIuL3Byb3RvY29scy9leGNsdXNpb24tZGV0YWlsc1wiO1xuaW1wb3J0IHsgTG9naWNhbERlbGV0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvbG9naWNhbC1kZWxldGUuc2VydmljZVwiO1xuaW1wb3J0IHsgRXhjbHVzaW9uUHJvY2VzcywgRXhjbHVzaW9uUHJvY2Vzc1N0ZXAsIEV4Y2x1c2lvblByb2Nlc3NTdGVwR3JvdXAgfSBmcm9tIFwiLi4vbW9kZWxzL2luZGV4XCI7XG5pbXBvcnQgeyBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9sb2dpY2FsLWRlbGV0ZS1jb25maWcuc2VydmljZVwiO1xuaW1wb3J0IHsgU2hvd0RldGFpbHNJbmZvcm1hdGlvbiB9IGZyb20gXCIuL3Byb3RvY29sc1wiO1xuaW1wb3J0IHsgRXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWQgfSBmcm9tIFwiLi9wcm90b2NvbHMvZXhjbHVzaW9uLXByb2Nlc3Mtc3RhdHVzLWNoYW5nZWRcIjtcbmltcG9ydCB7IFdlYnNvY2tldEV2ZW50RGF0YSB9IGZyb20gXCIuL3Byb3RvY29scy93ZWItc29ja2V0LWV2ZW50LWRhdGFcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicy1leGNsdXNpb24tZGV0YWlsc1wiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50Lmh0bWxcIixcbiAgICBzdHlsZVVybHM6IFtcIi4vZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LnNjc3NcIl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBFeGNsdXNpb25EZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHB1YmxpYyBsb2NhbGUhOiBUYWJsZUNvbHVtbkxvY2FsZU9wdGlvbnM7XG5cbiAgICBAT3V0cHV0KClcbiAgICBnZXQgaXNWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBpc0xvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IHByb2Nlc3NTdW1tYXJ5RGF0YSgpOiBFeGNsdXNpb25EZXRhaWxzW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc1N1bW1hcnlEYXRhO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBwcm9jZXNzU3VtbWFyeUNvbHVtbnMoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvY2Vzc1N1bW1hcnlDb2x1bW5zO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwcm9jZXNzRGV0YWlsczogRXhjbHVzaW9uUHJvY2VzcztcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBlbnRpdHlEZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gICAgcHJpdmF0ZSBfZW50aXR5TmFtZSA9IFwiXCI7XG4gICAgcHJpdmF0ZSBfaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfcHJvY2Vzc1N1bW1hcnlEYXRhOiBFeGNsdXNpb25EZXRhaWxzW10gPSBbXTtcbiAgICBwcml2YXRlIF9wcm9jZXNzU3VtbWFyeUNvbHVtbnM6IGFueVtdID0gW107XG4gICAgcHJpdmF0ZSBfd2Vic29ja2V0U2VydmljZTogV2Vic29ja2V0U2VydmljZTtcbiAgICBwcml2YXRlIF9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZTogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX2V4Y2x1c2lvbkRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb247XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9naWNhbERlbGV0ZVNlcnZpY2U6IExvZ2ljYWxEZWxldGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHByb2plY3RDb25maWdzOiBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlLmRhdGFcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogeyBbY29uZmlnczogc3RyaW5nXTogYW55LCBsb2NhbGVDb25maWc6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGUgPSBkYXRhLmxvY2FsZUNvbmZpZztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9wcm9jZXNzU3VtbWFyeUNvbHVtbnMgPSB0aGlzLmdldFN1bW1hcnlDb2x1bW5zKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcblxuICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd0RldGFpbHMoZGV0YWlsczogU2hvd0RldGFpbHNJbmZvcm1hdGlvbikge1xuICAgICAgICB0aGlzLl9leGNsdXNpb25EZXRhaWxzID0gZGV0YWlscztcbiAgICAgICAgdGhpcy5fZW50aXR5TmFtZSA9IGRldGFpbHMuZW50aXR5TmFtZTtcbiAgICAgICAgdGhpcy5faXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1N1bW1hcnlEYXRhID0gW107XG5cbiAgICAgICAgdGhpcy5wcm9jZXNzRGV0YWlscyA9IG51bGw7XG4gICAgICAgIHRoaXMuZW50aXR5RGVzY3JpcHRpb24gPSBkZXRhaWxzLmVudGl0eURlc2NyaXB0aW9uO1xuXG4gICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZXRhaWxzKGRldGFpbHMpO1xuXG4gICAgICAgIHRoaXMuY29ubmVjdFdlYlNvY2tldCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblZpc2liaWxpdHlDaGFuZ2VkKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgdGhpcy5jbG9zZURldGFpbHMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2VEZXRhaWxzKCkge1xuICAgICAgICB0aGlzLl9pc1Zpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fZXhjbHVzaW9uRGV0YWlscyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTdW1tYXJ5RGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkV4Y2x1c2lvbnMoKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEZXRhaWxzKCk7XG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFxuICAgICAgICAgICAgW1wiZXhjbHVzaW9ucy1saXN0XCIsIHRoaXMuX2VudGl0eU5hbWVdLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIGVudGl0eURlc2NyaXB0aW9uOiB0aGlzLmVudGl0eURlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRSZWNvcmREZXNjcmlwdGlvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnByb2Nlc3NEZXRhaWxzPy5kZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzRGV0YWlscy5kZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SW5pY2lhbERhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9jZXNzRGV0YWlscz8uc3RhcnREYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBtb21lbnQodGhpcy5wcm9jZXNzRGV0YWlscy5zdGFydERhdGUpLmZvcm1hdChcIkREL01NL1lZWVkgSEg6bW06c3NcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbmlzaERhdGUoKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9jZXNzRGV0YWlscz8uZmluaXNoRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9tZW50KHRoaXMucHJvY2Vzc0RldGFpbHMuZmluaXNoRGF0ZSkuZm9ybWF0KFwiREQvTU0vWVlZWSBISDptbTpzc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNGaW5pc2hlZCgpIHtcbiAgICAgICAgcmV0dXJuICEhdGhpcy5wcm9jZXNzRGV0YWlscz8uZmluaXNoRGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2hvd0V4Y2x1c2lvbnNCdXR0b25MYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zaG93X2RlbGV0aW9uc2ApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDbG9zZUJ1dHRvbkxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2Nsb3NlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN1bW1hcnlMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdW1tYXJ5YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFN0YXJ0RGF0ZUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXJ0YCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbmlzaERhdGVMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9maW5pc2hgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2lkZWJhclRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2RldGFpbHNfdGl0bGVgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wdHlTdGF0ZVRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VtcHR5X3N0YXRlX3RpdGxlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVtcHR5U3RhdGVEZXNjcmlwdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbXB0eV9zdGF0ZV9kZXNjcmlwdGlvbmApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U3VtbWFyeUNvbHVtbnMoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwiZGVzY3JpcHRpb25cIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJkZXNjcmlwdGlvblwiXSxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9kZXNjcmlwdGlvbmApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuU1RSSU5HLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjMwMHB4XCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGZpZWxkOiBcInN0YXR1c1wiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcInN0YXR1c1wiXSxcbiAgICAgICAgICAgICAgICBoZWFkZXI6IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdGF0dXNgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBFbnVtQ29sdW1uRmllbGRUeXBlLkVOVU0sXG4gICAgICAgICAgICAgICAgZW51bVByZWZpeDogYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbnVtX2V4Y2x1c2lvbl9wcm9jZXNzX3N0YXR1c19gLFxuICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMHB4XCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHRvb2x0aXA6IHRoaXMuZ2V0Q29sdW1uU3RhdHVzVG9vbHRpcCxcbiAgICAgICAgICAgICAgICBiYWRnZUNvbmZpZ3M6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgZW51bVZhbHVlOiBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cy5FUlJPUixcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuUkVEXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuUEVORElORyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuWUVMTE9XXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuUFJPQ0VTU0lORyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuQkxVRVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlNVQ0NFU1MsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLkdSRUVOXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRDb2x1bW5TdGF0dXNUb29sdGlwKHJvd1ZhbHVlOiBFeGNsdXNpb25EZXRhaWxzKSB7XG4gICAgICAgIGlmIChyb3dWYWx1ZS5lcnJvck1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiByb3dWYWx1ZS5lcnJvck1lc3NhZ2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRQcm9jZXNzRGV0YWlscyhkZXRhaWxzOiBTaG93RGV0YWlsc0luZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMuX2lzTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgcHJvY2Vzc09ic2VydmFibGUgPSBkZXRhaWxzLnByb2Nlc3NJZFxuICAgICAgICAgICAgPyB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlLmdldFByb2Nlc3NEZXRhaWxzKGRldGFpbHMucHJvY2Vzc0lkKVxuICAgICAgICAgICAgOiB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlLmdldExhdGVzdFByb2Nlc3NEZXRhaWxzKGRldGFpbHMucmVjb3JkSWQpO1xuXG4gICAgICAgIHByb2Nlc3NPYnNlcnZhYmxlXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuX2lzTG9hZGluZyA9IGZhbHNlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3M6IEV4Y2x1c2lvblByb2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0RldGFpbHMgPSBwcm9jZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZFByb2Nlc3NTdW1tYXJ5KHByb2Nlc3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0QnlEYXRlKHN0YXJ0RGF0ZTogRGF0ZSwgZmluaXNoRGF0ZTogRGF0ZSkge1xuICAgICAgICBpZiAoc3RhcnREYXRlLmdldFRpbWUoKSA+IGZpbmlzaERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhcnREYXRlLmdldFRpbWUoKSA8IGZpbmlzaERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0R3JvdXBzQnlTdGFydERhdGUoZ3JvdXBzOiBFeGNsdXNpb25Qcm9jZXNzU3RlcEdyb3VwW10pIHtcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5zb3J0KChhLCBiKSA9PiB0aGlzLnNvcnRCeURhdGUoYS5zdGFydERhdGUsIGIuZmluaXNoRGF0ZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydFN0ZXBzQnlTdGFydERhdGUoc3RlcHM6IEV4Y2x1c2lvblByb2Nlc3NTdGVwW10pIHtcbiAgICAgICAgcmV0dXJuIHN0ZXBzLnNvcnQoKGEsIGIpID0+IHRoaXMuc29ydEJ5RGF0ZShhLnN0YXJ0RGF0ZSwgYi5maW5pc2hEYXRlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkUHJvY2Vzc1N1bW1hcnkocHJvY2VzczogRXhjbHVzaW9uUHJvY2Vzcykge1xuICAgICAgICBjb25zdCBzdGVwTG9nczogRXhjbHVzaW9uRGV0YWlsc1tdID0gW107XG5cbiAgICAgICAgdGhpcy5zb3J0R3JvdXBzQnlTdGFydERhdGUocHJvY2Vzcy5ncm91cHMpXG4gICAgICAgICAgICAuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnNvcnRTdGVwc0J5U3RhcnREYXRlKGdyb3VwLnN0ZXBzKVxuICAgICAgICAgICAgICAgICAgICAubWFwKHN0ZXAgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBzdGVwLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBzdGVwLnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogc3RlcC5lcnJvck1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgfSBhcyBFeGNsdXNpb25EZXRhaWxzKSk7XG5cbiAgICAgICAgICAgICAgICBzdGVwTG9ncy5wdXNoKC4uLnN0ZXBzKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTdW1tYXJ5RGF0YSA9IHN0ZXBMb2dzO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzY29ubmVjdFdlYlNvY2tldCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLl9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRTdWJzY3JpYmUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3dlYnNvY2tldFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5fd2Vic29ja2V0U2VydmljZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbm5lY3RXZWJTb2NrZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UgPSBuZXcgV2Vic29ja2V0U2VydmljZSgpO1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25Db25uZWN0KClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1dlYmhvb2tFdmVudHMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRMaXN0ZW5pbmdXZWJob29rRXZlbnRzKCkge1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25FcnJvcigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ29uRXJyb3InLCBkYXRhKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlID0gdGhpcy5fd2Vic29ja2V0U2VydmljZVxuICAgICAgICAgICAgLm9uRXZlbnQ8V2Vic29ja2V0RXZlbnREYXRhPEV4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkPj4oe1xuICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5wcm9qZWN0Q29uZmlncy5nZXREb21haW4oKSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnByb2plY3RDb25maWdzLmdldFNlcnZpY2UoKSxcbiAgICAgICAgICAgICAgICBwcmltaXRpdmU6IFwiZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRcIlxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFdlYnNvY2tldEV2ZW50RGF0YTxFeGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZD4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGV2ZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucHJvY2Vzc0lkICYmIGRhdGEucGlkID09PSB0aGlzLl9leGNsdXNpb25EZXRhaWxzLnByb2Nlc3NJZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzRGV0YWlscyh0aGlzLl9leGNsdXNpb25EZXRhaWxzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9leGNsdXNpb25EZXRhaWxzLnJlY29yZElkICYmIGRhdGEucmVjb3JkSWQgPT09IHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucmVjb3JkSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RldGFpbHModGhpcy5fZXhjbHVzaW9uRGV0YWlscyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|
|
381
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVzaW9uLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvcnNpc3RlbWFzL2V4Y2x1c2lvbi1wcm9jZXNzLWNvbXBvbmVudC8iLCJzb3VyY2VzIjpbImV4Y2x1c2lvbi1kZXRhaWxzL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXFCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUE0QixNQUFNLG9DQUFvQyxDQUFDO0FBQ3BILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBS3ZGLElBQU0sOEJBQThCLEdBQUU7SUFDbEM7UUFDSSxTQUFTLEVBQUUsMEJBQTBCLENBQUMsS0FBSztRQUMzQyxLQUFLLEVBQUUsZUFBZSxDQUFDLEdBQUc7S0FDN0I7SUFDRDtRQUNJLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxPQUFPO1FBQzdDLEtBQUssRUFBRSxlQUFlLENBQUMsTUFBTTtL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REMsTUFBTSxFQUFFO3VFQUdSO0lBR0Q7UUFEQyxNQUFNLEVBQUU7cUVBQytCO0lBR3hDO1FBREMsTUFBTSxFQUFFO3dFQUN3QjtJQUdqQztRQURDLE1BQU0sRUFBRTttRUFDcUI7SUFHOUI7UUFEQyxNQUFNLEVBQUU7b0ZBQ2lGO0lBdENqRix5QkFBeUI7UUFOckMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLHFCQUFxQjtZQUMvQiw2OExBQWlEO1lBRWpELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJOztTQUN4QyxDQUFDO09BQ1cseUJBQXlCLENBbVdyQztJQUFELGdDQUFDO0NBQUEsQUFuV0QsSUFtV0M7U0FuV1kseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBPbkRlc3Ryb3ksIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEVudW1CYWRnZUNvbG9ycywgRW51bUNvbHVtbkZpZWxkVHlwZSwgVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zIH0gZnJvbSBcIkBzZW5pb3JzaXN0ZW1hcy9hbmd1bGFyLWNvbXBvbmVudHNcIjtcbmltcG9ydCB7IFdlYnNvY2tldFNlcnZpY2UgfSBmcm9tIFwiQHNlbmlvci1nZXN0YW8tZW1wcmVzYXJpYWwvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBFbnVtRXhjbHVzaW9uUHJvY2Vzc1N0YXR1cyB9IGZyb20gXCIuLi9lbnVtcy9lbnVtLWV4Y2x1c2lvbi1wcm9jZXNzLXN0YXR1c1wiO1xuaW1wb3J0IHsgRXhjbHVzaW9uRGV0YWlscyB9IGZyb20gXCIuL3Byb3RvY29scy9leGNsdXNpb24tZGV0YWlsc1wiO1xuaW1wb3J0IHsgTG9naWNhbERlbGV0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvbG9naWNhbC1kZWxldGUuc2VydmljZVwiO1xuaW1wb3J0IHsgRXhjbHVzaW9uUHJvY2VzcywgRXhjbHVzaW9uUHJvY2Vzc1N0ZXAsIEV4Y2x1c2lvblByb2Nlc3NTdGVwR3JvdXAgfSBmcm9tIFwiLi4vbW9kZWxzL2luZGV4XCI7XG5pbXBvcnQgeyBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZSB9IGZyb20gXCIuLi9zZXJ2aWNlcy9sb2dpY2FsLWRlbGV0ZS1jb25maWcuc2VydmljZVwiO1xuaW1wb3J0IHsgU2hvd0RldGFpbHNJbmZvcm1hdGlvbiB9IGZyb20gXCIuL3Byb3RvY29sc1wiO1xuaW1wb3J0IHsgRXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWQgfSBmcm9tIFwiLi9wcm90b2NvbHMvZXhjbHVzaW9uLXByb2Nlc3Mtc3RhdHVzLWNoYW5nZWRcIjtcbmltcG9ydCB7IFdlYnNvY2tldEV2ZW50RGF0YSB9IGZyb20gXCIuL3Byb3RvY29scy93ZWItc29ja2V0LWV2ZW50LWRhdGFcIjtcblxuY29uc3QgRVhDTFVTSU9OX1BST0NFU1NfU1RBVFVTX0JBREdFID1bXG4gICAge1xuICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLkVSUk9SLFxuICAgICAgICBjb2xvcjogRW51bUJhZGdlQ29sb3JzLlJFRFxuICAgIH0sXG4gICAge1xuICAgICAgICBlbnVtVmFsdWU6IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlBFTkRJTkcsXG4gICAgICAgIGNvbG9yOiBFbnVtQmFkZ2VDb2xvcnMuWUVMTE9XXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuUFJPQ0VTU0lORyxcbiAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5CTFVFXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGVudW1WYWx1ZTogRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTUyxcbiAgICAgICAgY29sb3I6IEVudW1CYWRnZUNvbG9ycy5HUkVFTlxuICAgIH1cbl07XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcInMtZXhjbHVzaW9uLWRldGFpbHNcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuL2V4Y2x1c2lvbi1kZXRhaWxzLmNvbXBvbmVudC5zY3NzXCJdLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRXhjbHVzaW9uRGV0YWlsc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwdWJsaWMgbG9jYWxlITogVGFibGVDb2x1bW5Mb2NhbGVPcHRpb25zO1xuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IGlzVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlzaWJsZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KClcbiAgICBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNMb2FkaW5nO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBwcm9jZXNzR3JvdXBEYXRhKCk6IEV4Y2x1c2lvbkRldGFpbHNbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzR3JvdXBEYXRhO1xuICAgIH1cblxuICAgIEBPdXRwdXQoKVxuICAgIGdldCBwcm9jZXNzR3JvdXBDb2x1bW5zKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb2Nlc3NHcm91cENvbHVtbnM7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgZ2V0IHByb2Nlc3NTdGVwQ29sdW1ucygpOiBhbnlbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcm9jZXNzU3RlcENvbHVtbnM7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHByb2Nlc3NEZXRhaWxzOiBFeGNsdXNpb25Qcm9jZXNzO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGVudGl0eURlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZXhwYW5kZWRSb3dzOiBhbnkgPSB7fTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvblByb2Nlc3NGaW5pc2hlZFN1Y2Nlc3NmdWxseTogRXZlbnRFbWl0dGVyPEV4Y2x1c2lvblByb2Nlc3M+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgcHJpdmF0ZSBfaXNWaXNpYmxlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0dyb3VwRGF0YTogRXhjbHVzaW9uUHJvY2Vzc1N0ZXBHcm91cFtdID0gW107XG4gICAgcHJpdmF0ZSBfcHJvY2Vzc0dyb3VwQ29sdW1uczogYW55W10gPSBbXTtcbiAgICBwcml2YXRlIF9wcm9jZXNzU3RlcENvbHVtbnM6IGFueVtdID0gW107XG4gICAgcHJpdmF0ZSBfd2Vic29ja2V0U2VydmljZTogV2Vic29ja2V0U2VydmljZTtcbiAgICBwcml2YXRlIF9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZTogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX2V4Y2x1c2lvbkRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb247XG4gICAgcHJpdmF0ZSByZWFkb25seSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbG9naWNhbERlbGV0ZVNlcnZpY2U6IExvZ2ljYWxEZWxldGVTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHByb2plY3RDb25maWdzOiBMb2dpY2FsRGVsZXRlQ29uZmlnU2VydmljZVxuICAgICkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJvdXRlLmRhdGFcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YTogeyBbY29uZmlnczogc3RyaW5nXTogYW55LCBsb2NhbGVDb25maWc6IFRhYmxlQ29sdW1uTG9jYWxlT3B0aW9ucyB9KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2NhbGUgPSBkYXRhLmxvY2FsZUNvbmZpZztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB0aGlzLl9wcm9jZXNzR3JvdXBDb2x1bW5zID0gdGhpcy5nZXRHcm91cENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc1N0ZXBDb2x1bW5zID0gdGhpcy5nZXRTdGVwQ29sdW1ucygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG5cbiAgICAgICAgdGhpcy5kaXNjb25uZWN0V2ViU29ja2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dEZXRhaWxzKGRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb24pIHtcbiAgICAgICAgdGhpcy5fZXhjbHVzaW9uRGV0YWlscyA9IGRldGFpbHM7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NHcm91cERhdGEgPSBbXTtcblxuICAgICAgICB0aGlzLnByb2Nlc3NEZXRhaWxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5lbnRpdHlEZXNjcmlwdGlvbiA9IGRldGFpbHMuZW50aXR5RGVzY3JpcHRpb247XG5cbiAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RldGFpbHMoZGV0YWlscywgdHJ1ZSk7XG5cbiAgICAgICAgdGhpcy5jb25uZWN0V2ViU29ja2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uVmlzaWJpbGl0eUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmNsb3NlRGV0YWlscygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZURldGFpbHMoKSB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9leGNsdXNpb25EZXRhaWxzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcHJvY2Vzc0dyb3VwRGF0YSA9IFtdO1xuICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmVjb3JkRGVzY3JpcHRpb24oKSB7XG4gICAgICAgIGlmICghdGhpcy5wcm9jZXNzRGV0YWlscz8uZGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0RldGFpbHMuZGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldEluaWNpYWxEYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMucHJvY2Vzc0RldGFpbHM/LnN0YXJ0RGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbW9tZW50KHRoaXMucHJvY2Vzc0RldGFpbHMuc3RhcnREYXRlKS5mb3JtYXQoXCJERC9NTS9ZWVlZIEhIOm1tOnNzXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaW5pc2hEYXRlKCkge1xuICAgICAgICBpZiAoIXRoaXMucHJvY2Vzc0RldGFpbHM/LmZpbmlzaERhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLnByb2Nlc3NEZXRhaWxzLmZpbmlzaERhdGUpLmZvcm1hdChcIkREL01NL1lZWVkgSEg6bW06c3NcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGlzRmluaXNoZWQoKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMucHJvY2Vzc0RldGFpbHM/LmZpbmlzaERhdGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNob3dFeGNsdXNpb25zQnV0dG9uTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc2hvd19kZWxldGlvbnNgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2xvc2VCdXR0b25MYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9jbG9zZWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdW1tYXJ5TGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3VtbWFyeWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTdGFydERhdGVMYWJlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9zdGFydGApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaW5pc2hEYXRlTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZmluaXNoYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNpZGViYXJUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9kZXRhaWxzX3RpdGxlYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVtcHR5U3RhdGVUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoYCR7dGhpcy5wcm9qZWN0Q29uZmlncy5nZXRUcmFuc2xhdGlvblByZWZpeCgpfS5sb2dpY2FsX2RlbGV0ZV9lbXB0eV9zdGF0ZV90aXRsZWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRFbXB0eVN0YXRlRGVzY3JpcHRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW1wdHlfc3RhdGVfZGVzY3JpcHRpb25gKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEdyb3VwQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2dyb3VwYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5TVFJJTkcsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMzQwcHhcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZmllbGQ6IFwic3RhdHVzXCIsXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW1wic3RhdHVzXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0YXR1c2ApLFxuICAgICAgICAgICAgICAgIHR5cGU6IEVudW1Db2x1bW5GaWVsZFR5cGUuRU5VTSxcbiAgICAgICAgICAgICAgICBlbnVtUHJlZml4OiBgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX2VudW1fZXhjbHVzaW9uX3Byb2Nlc3Nfc3RhdHVzX2AsXG4gICAgICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwcHhcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgdG9vbHRpcDogdGhpcy5nZXRDb2x1bW5TdGF0dXNUb29sdGlwLFxuICAgICAgICAgICAgICAgIGJhZGdlQ29uZmlnczogRVhDTFVTSU9OX1BST0NFU1NfU1RBVFVTX0JBREdFXG4gICAgICAgICAgICB9XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdGVwQ29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJkZXNjcmlwdGlvblwiLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgICAgICAgICAgIGhlYWRlcjogdGhpcy50cmFuc2xhdGUuaW5zdGFudChgJHt0aGlzLnByb2plY3RDb25maWdzLmdldFRyYW5zbGF0aW9uUHJlZml4KCl9LmxvZ2ljYWxfZGVsZXRlX3N0ZXBgKSxcbiAgICAgICAgICAgICAgICB0eXBlOiBFbnVtQ29sdW1uRmllbGRUeXBlLlNUUklORyxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIzNDBweFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBmaWVsZDogXCJzdGF0dXNcIixcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJzdGF0dXNcIl0sXG4gICAgICAgICAgICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfc3RhdHVzYCksXG4gICAgICAgICAgICAgICAgdHlwZTogRW51bUNvbHVtbkZpZWxkVHlwZS5FTlVNLFxuICAgICAgICAgICAgICAgIGVudW1QcmVmaXg6IGAke3RoaXMucHJvamVjdENvbmZpZ3MuZ2V0VHJhbnNsYXRpb25QcmVmaXgoKX0ubG9naWNhbF9kZWxldGVfZW51bV9leGNsdXNpb25fcHJvY2Vzc19zdGF0dXNfYCxcbiAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDBweFwiXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b29sdGlwOiB0aGlzLmdldENvbHVtblN0YXR1c1Rvb2x0aXAsXG4gICAgICAgICAgICAgICAgYmFkZ2VDb25maWdzOiBFWENMVVNJT05fUFJPQ0VTU19TVEFUVVNfQkFER0VcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbHVtblN0YXR1c1Rvb2x0aXAocm93VmFsdWU6IEV4Y2x1c2lvbkRldGFpbHMpIHtcbiAgICAgICAgaWYgKHJvd1ZhbHVlLmVycm9yTWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJvd1ZhbHVlLmVycm9yTWVzc2FnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZFByb2Nlc3NEZXRhaWxzKGRldGFpbHM6IFNob3dEZXRhaWxzSW5mb3JtYXRpb24sIGZpcnN0TG9hZCA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX2lzTG9hZGluZyA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgcHJvY2Vzc09ic2VydmFibGUgPSBkZXRhaWxzLnByb2Nlc3NJZFxuICAgICAgICAgICAgPyB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlLmdldFByb2Nlc3NEZXRhaWxzKGRldGFpbHMucHJvY2Vzc0lkKVxuICAgICAgICAgICAgOiB0aGlzLmxvZ2ljYWxEZWxldGVTZXJ2aWNlLmdldExhdGVzdFByb2Nlc3NEZXRhaWxzKGRldGFpbHMucmVjb3JkSWQpO1xuXG4gICAgICAgIHByb2Nlc3NPYnNlcnZhYmxlXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuX2lzTG9hZGluZyA9IGZhbHNlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3M6IEV4Y2x1c2lvblByb2Nlc3MpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXByb2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0RldGFpbHMgPSBwcm9jZXNzO1xuICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Nlc3NHcm91cERhdGEgPSB0aGlzLnNvcnRHcm91cHNCeVN0YXJ0RGF0ZShwcm9jZXNzLmdyb3VwcylcbiAgICAgICAgICAgICAgICAgICAgLm1hcChwID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcHM6IHRoaXMuc29ydFN0ZXBzQnlTdGFydERhdGUocC5zdGVwcylcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5leHBhbmRlZFJvd3MgPSB7fTtcbiAgICAgICAgICAgICAgICB0aGlzLl9wcm9jZXNzR3JvdXBEYXRhXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIocCA9PiBwLnN0YXR1cyAhPT0gRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuU1VDQ0VTUylcbiAgICAgICAgICAgICAgICAgICAgLmZvckVhY2gocCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmV4cGFuZGVkUm93c1twLmlkXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja0lmUHJvY2Vzc0RvbmUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWZpcnN0TG9hZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrSWZQcm9jZXNzV2FzU3VjY2Vzc3VmdWwoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrSWZQcm9jZXNzRG9uZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9wcm9jZXNzR3JvdXBEYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNQcm9jZXNzRmluaXNoZWQgPSB0aGlzLl9wcm9jZXNzR3JvdXBEYXRhXG4gICAgICAgICAgICAuZXZlcnkocCA9PiBwLnN0YXR1cyA9PT0gRW51bUV4Y2x1c2lvblByb2Nlc3NTdGF0dXMuRVJST1IgfHwgcC5zdGF0dXMgPT09IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlNVQ0NFU1MpO1xuICAgICAgICBpZiAoaXNQcm9jZXNzRmluaXNoZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFdlYlNvY2tldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0lmUHJvY2Vzc1dhc1N1Y2Nlc3N1ZnVsKCkge1xuICAgICAgICBjb25zdCBpc1Byb2Nlc3NTdWNjZXNzZnVsID0gdGhpcy5fcHJvY2Vzc0dyb3VwRGF0YVxuICAgICAgICAgICAgLmV2ZXJ5KHAgPT4gcC5zdGF0dXMgPT09IEVudW1FeGNsdXNpb25Qcm9jZXNzU3RhdHVzLlNVQ0NFU1MpO1xuICAgICAgICBpZiAoaXNQcm9jZXNzU3VjY2Vzc2Z1bCkge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlQcm9jZXNzRmluaXNoZWRTdWNjZXNzZnVsbHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5UHJvY2Vzc0ZpbmlzaGVkU3VjY2Vzc2Z1bGx5KCkge1xuICAgICAgICB0aGlzLm9uUHJvY2Vzc0ZpbmlzaGVkU3VjY2Vzc2Z1bGx5LmVtaXQodGhpcy5wcm9jZXNzRGV0YWlscyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0QnlEYXRlKGZpcnN0RGF0ZTogRGF0ZSwgc2Vjb25kRGF0ZTogRGF0ZSkge1xuICAgICAgICBpZiAoIWZpcnN0RGF0ZSB8fCAhc2Vjb25kRGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlyc3REYXRlLmdldFRpbWUoKSA+IHNlY29uZERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlyc3REYXRlLmdldFRpbWUoKSA8IHNlY29uZERhdGUuZ2V0VGltZSgpKSB7XG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0R3JvdXBzQnlTdGFydERhdGUoZ3JvdXBzOiBFeGNsdXNpb25Qcm9jZXNzU3RlcEdyb3VwW10pIHtcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5zb3J0KChhLCBiKSA9PiB0aGlzLnNvcnRCeURhdGUoYS5zdGFydERhdGUsIGIuc3RhcnREYXRlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzb3J0U3RlcHNCeVN0YXJ0RGF0ZShzdGVwczogRXhjbHVzaW9uUHJvY2Vzc1N0ZXBbXSkge1xuICAgICAgICByZXR1cm4gc3RlcHMuc29ydCgoYSwgYikgPT4gdGhpcy5zb3J0QnlEYXRlKGEuc3RhcnREYXRlLCBiLnN0YXJ0RGF0ZSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGlzY29ubmVjdFdlYlNvY2tldCgpIHtcbiAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlKSB7XG4gICAgICAgICAgICB0aGlzLl9leGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZFN1YnNjcmliZS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5fZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRTdWJzY3JpYmUgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX3dlYnNvY2tldFNlcnZpY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5fd2Vic29ja2V0U2VydmljZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbm5lY3RXZWJTb2NrZXQoKSB7XG4gICAgICAgIGlmICh0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlKSB7XG4gICAgICAgICAgICB0aGlzLmRpc2Nvbm5lY3RXZWJTb2NrZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dlYnNvY2tldFNlcnZpY2UgPSBuZXcgV2Vic29ja2V0U2VydmljZSgpO1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25Db25uZWN0KClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydExpc3RlbmluZ1dlYmhvb2tFdmVudHMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnRMaXN0ZW5pbmdXZWJob29rRXZlbnRzKCkge1xuICAgICAgICB0aGlzLl93ZWJzb2NrZXRTZXJ2aWNlXG4gICAgICAgICAgICAub25FcnJvcigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ29uRXJyb3InLCBkYXRhKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX2V4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkU3Vic2NyaWJlID0gdGhpcy5fd2Vic29ja2V0U2VydmljZVxuICAgICAgICAgICAgLm9uRXZlbnQ8V2Vic29ja2V0RXZlbnREYXRhPEV4Y2x1c2lvblByb2Nlc3NTdGF0dXNDaGFuZ2VkPj4oe1xuICAgICAgICAgICAgICAgIGRvbWFpbjogdGhpcy5wcm9qZWN0Q29uZmlncy5nZXREb21haW4oKSxcbiAgICAgICAgICAgICAgICBzZXJ2aWNlOiB0aGlzLnByb2plY3RDb25maWdzLmdldFNlcnZpY2UoKSxcbiAgICAgICAgICAgICAgICBwcmltaXRpdmU6IFwiZXhjbHVzaW9uUHJvY2Vzc1N0YXR1c0NoYW5nZWRcIlxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFdlYnNvY2tldEV2ZW50RGF0YTxFeGNsdXNpb25Qcm9jZXNzU3RhdHVzQ2hhbmdlZD4pID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGV2ZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucHJvY2Vzc0lkICYmIGRhdGEucGlkID09PSB0aGlzLl9leGNsdXNpb25EZXRhaWxzLnByb2Nlc3NJZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzRGV0YWlscyh0aGlzLl9leGNsdXNpb25EZXRhaWxzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9leGNsdXNpb25EZXRhaWxzLnJlY29yZElkICYmIGRhdGEucmVjb3JkSWQgPT09IHRoaXMuX2V4Y2x1c2lvbkRldGFpbHMucmVjb3JkSWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RldGFpbHModGhpcy5fZXhjbHVzaW9uRGV0YWlscyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|