@hmcts/ccd-case-ui-toolkit 6.13.0-rc10 → 6.13.0-rc11
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/hmcts-ccd-case-ui-toolkit.umd.js +54 -33
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
- package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
- package/esm2015/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.js +28 -15
- package/esm2015/lib/shared/components/palette/case-flag/write-case-flag-field.component.js +28 -20
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js +54 -33
- package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
- package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +2 -1
- package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
- package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +1 -0
- package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -112,19 +112,30 @@ export class SelectFlagTypeComponent {
|
|
|
112
112
|
&& this.formGroup['caseField'].id === this.caseLevelCaseFlagsFieldId
|
|
113
113
|
? RefdataCaseFlagType.CASE
|
|
114
114
|
: RefdataCaseFlagType.PARTY;
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
115
|
+
// If hmctsServiceId is present, use this to retrieve the relevant list of flag types
|
|
116
|
+
if (this.hmctsServiceId) {
|
|
117
|
+
this.flagRefdata$ = this.caseFlagRefdataService.getCaseFlagsRefdata(this.hmctsServiceId, flagType)
|
|
118
|
+
.subscribe({
|
|
119
|
+
// First (and only) object in the returned array should be the top-level "Party" flag type
|
|
120
|
+
next: flagTypes => this.flagTypes = flagTypes[0].childFlags,
|
|
121
|
+
error: error => this.onRefdataError(error)
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Else, HMCTS service code is required to retrieve the relevant list of flag types; attempt to obtain it by case type ID first
|
|
126
|
+
this.flagRefdata$ = this.caseFlagRefdataService.getHmctsServiceDetailsByCaseType(this.caseTypeId)
|
|
127
|
+
.pipe(
|
|
128
|
+
// If an error occurs retrieving HMCTS service details by case type ID, try by service name instead
|
|
129
|
+
catchError(_ => this.caseFlagRefdataService.getHmctsServiceDetailsByServiceName(this.jurisdiction)),
|
|
130
|
+
// Use switchMap to return an inner Observable of the flag types data, having received the service details
|
|
131
|
+
// including service_code. This avoids having nested `subscribe`s, which is an anti-pattern!
|
|
132
|
+
switchMap(serviceDetails => this.caseFlagRefdataService.getCaseFlagsRefdata(serviceDetails[0].service_code, flagType)))
|
|
133
|
+
.subscribe({
|
|
134
|
+
// First (and only) object in the returned array should be the top-level "Party" flag type
|
|
135
|
+
next: flagTypes => this.flagTypes = flagTypes[0].childFlags,
|
|
136
|
+
error: error => this.onRefdataError(error)
|
|
137
|
+
});
|
|
138
|
+
}
|
|
128
139
|
}
|
|
129
140
|
ngOnDestroy() {
|
|
130
141
|
if (this.flagRefdata$) {
|
|
@@ -195,7 +206,7 @@ export class SelectFlagTypeComponent {
|
|
|
195
206
|
}
|
|
196
207
|
}
|
|
197
208
|
SelectFlagTypeComponent.ɵfac = function SelectFlagTypeComponent_Factory(t) { return new (t || SelectFlagTypeComponent)(i0.ɵɵdirectiveInject(i1.CaseFlagRefdataService)); };
|
|
198
|
-
SelectFlagTypeComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SelectFlagTypeComponent, selectors: [["ccd-select-flag-type"]], inputs: { formGroup: "formGroup", jurisdiction: "jurisdiction", caseTypeId: "caseTypeId" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter", flagCommentsOptionalEmitter: "flagCommentsOptionalEmitter" }, decls: 11, vars: 9, consts: [[1, "form-group", 3, "formGroup"], [1, "govuk-form-group", 3, "ngClass"], ["aria-describedby", "flag-type-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--l"], ["id", "flag-type-heading", 1, "govuk-fieldset__heading"], ["id", "flag-type-not-selected-error-message", "class", "govuk-error-message", 4, "ngIf"], ["data-module", "govuk-radios", "id", "conditional-radios-list", 1, "govuk-radios", "govuk-radios--conditional"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf"], ["class", "govuk-radios__conditional", "id", "conditional-flagType", 4, "ngIf"], ["class", "govuk-button-group", 4, "ngIf"], ["id", "flag-type-not-selected-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "id", "name", "value", "formControlName", "change"], [1, "govuk-label", "govuk-radios__label", 3, "for"], ["id", "conditional-flagType", 1, "govuk-radios__conditional"], ["for", "other-flag-type-description", 1, "govuk-label"], ["id", "flag-type-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "other-flag-type-description", "type", "text", 1, "govuk-input", "govuk-!-width-one-half", 3, "ngClass", "name", "formControlName"], ["id", "flag-type-error-message", 1, "govuk-error-message"], [1, "govuk-button-group"], ["type", "button", 1, "button", "button-primary", 3, "click"]], template: function SelectFlagTypeComponent_Template(rf, ctx) { if (rf & 1) {
|
|
209
|
+
SelectFlagTypeComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SelectFlagTypeComponent, selectors: [["ccd-select-flag-type"]], inputs: { formGroup: "formGroup", jurisdiction: "jurisdiction", caseTypeId: "caseTypeId", hmctsServiceId: "hmctsServiceId" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter", flagCommentsOptionalEmitter: "flagCommentsOptionalEmitter" }, decls: 11, vars: 9, consts: [[1, "form-group", 3, "formGroup"], [1, "govuk-form-group", 3, "ngClass"], ["aria-describedby", "flag-type-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--l"], ["id", "flag-type-heading", 1, "govuk-fieldset__heading"], ["id", "flag-type-not-selected-error-message", "class", "govuk-error-message", 4, "ngIf"], ["data-module", "govuk-radios", "id", "conditional-radios-list", 1, "govuk-radios", "govuk-radios--conditional"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf"], ["class", "govuk-radios__conditional", "id", "conditional-flagType", 4, "ngIf"], ["class", "govuk-button-group", 4, "ngIf"], ["id", "flag-type-not-selected-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "id", "name", "value", "formControlName", "change"], [1, "govuk-label", "govuk-radios__label", 3, "for"], ["id", "conditional-flagType", 1, "govuk-radios__conditional"], ["for", "other-flag-type-description", 1, "govuk-label"], ["id", "flag-type-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "other-flag-type-description", "type", "text", 1, "govuk-input", "govuk-!-width-one-half", 3, "ngClass", "name", "formControlName"], ["id", "flag-type-error-message", 1, "govuk-error-message"], [1, "govuk-button-group"], ["type", "button", 1, "button", "button-primary", 3, "click"]], template: function SelectFlagTypeComponent_Template(rf, ctx) { if (rf & 1) {
|
|
199
210
|
i0.ɵɵelementStart(0, "div", 0);
|
|
200
211
|
i0.ɵɵelementStart(1, "div", 1);
|
|
201
212
|
i0.ɵɵelementStart(2, "fieldset", 2);
|
|
@@ -241,9 +252,11 @@ SelectFlagTypeComponent.ɵcmp = i0.ɵɵdefineComponent({ type: SelectFlagTypeCom
|
|
|
241
252
|
type: Input
|
|
242
253
|
}], caseTypeId: [{
|
|
243
254
|
type: Input
|
|
255
|
+
}], hmctsServiceId: [{
|
|
256
|
+
type: Input
|
|
244
257
|
}], caseFlagStateEmitter: [{
|
|
245
258
|
type: Output
|
|
246
259
|
}], flagCommentsOptionalEmitter: [{
|
|
247
260
|
type: Output
|
|
248
261
|
}] }); })();
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZsYWctdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZsYWcvY29tcG9uZW50cy9zZWxlY3QtZmxhZy10eXBlL3NlbGVjdC1mbGFnLXR5cGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvc2VsZWN0LWZsYWctdHlwZS9zZWxlY3QtZmxhZy10eXBlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUVwRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztJQ0RoRywrQkFDcUQ7SUFDbkQsZ0NBQW9DO0lBQUEsc0JBQU07SUFBQSxpQkFBTztJQUFDLFlBQ3BEO0lBQUEsaUJBQU07OztJQUQ4QyxlQUNwRDtJQURvRCx1RUFDcEQ7Ozs7SUFFRSwrQkFBK0U7SUFJN0UsaUNBRWtGO0lBQXhD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QWM7UUFTM0IsZUFBMkI7UUFBM0IsZ0RBQTJCO1FBZXhDLGVBQW1CO1FBQW5CLHdDQUFtQjs7dUZEckJ6Qyx1QkFBdUI7Y0FMbkMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLFdBQVcsRUFBRSxtQ0FBbUM7Z0JBQ2hELFNBQVMsRUFBRSxDQUFDLG1DQUFtQyxDQUFDO2FBQ2pEO3lFQUlRLFNBQVM7a0JBRGYsS0FBSztZQUlDLFlBQVk7a0JBRGxCLEtBQUs7WUFJQyxVQUFVO2tCQURoQixLQUFLO1lBSUMsb0JBQW9CO2tCQUQxQixNQUFNO1lBSUEsMkJBQTJCO2tCQURqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRmxhZ1R5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4vY2FzZS1mbGFnJztcbmltcG9ydCB7IENhc2VGbGFnUmVmZGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZWZkYXRhQ2FzZUZsYWdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvY2FzZS1mbGFnL3JlZmRhdGEtY2FzZS1mbGFnLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBDYXNlRmxhZ1N0YXRlIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGbGFnRmllbGRTdGF0ZSwgQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUsIFNlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtc2VsZWN0LWZsYWctdHlwZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtZmxhZy10eXBlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWZsYWctdHlwZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEZsYWdUeXBlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMganVyaXNkaWN0aW9uOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VUeXBlSWQ6IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNhc2VGbGFnU3RhdGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPENhc2VGbGFnU3RhdGU+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBmbGFnVHlwZXM6IEZsYWdUeXBlW107XG4gIHB1YmxpYyBzZWxlY3RlZEZsYWdUeXBlOiBGbGFnVHlwZTtcbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdO1xuICBwdWJsaWMgZmxhZ1R5cGVOb3RTZWxlY3RlZEVycm9yTWVzc2FnZSA9ICcnO1xuICBwdWJsaWMgZmxhZ1R5cGVFcnJvck1lc3NhZ2UgPSAnJztcbiAgcHVibGljIGZsYWdSZWZkYXRhJDogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgb3RoZXJGbGFnVHlwZVNlbGVjdGVkID0gZmFsc2U7XG4gIHB1YmxpYyByZWZkYXRhRXJyb3IgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmxhZ1R5cGVDb250cm9sTmFtZSA9ICdmbGFnVHlwZSc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbkNvbnRyb2xOYW1lID0gJ290aGVyRmxhZ1R5cGVEZXNjcmlwdGlvbic7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4Q2hhcmFjdGVyc0Zvck90aGVyRmxhZ1R5cGUgPSA4MDtcbiAgLy8gQ29kZSBmb3IgXCJPdGhlclwiIGZsYWcgdHlwZSBhcyBkZWZpbmVkIGluIFJlZmVyZW5jZSBEYXRhXG4gIHByaXZhdGUgcmVhZG9ubHkgb3RoZXJGbGFnVHlwZUNvZGUgPSAnT1QwMDAxJztcbiAgcHVibGljIHJlYWRvbmx5IGNhc2VMZXZlbENhc2VGbGFnc0ZpZWxkSWQgPSAnY2FzZUZsYWdzJztcblxuICBwdWJsaWMgZ2V0IGNhc2VGbGFnV2l6YXJkU3RlcFRpdGxlKCk6IHR5cGVvZiBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZSB7XG4gICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlOiBDYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mbGFnVHlwZXMgPSBbXTtcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKHRoaXMuZmxhZ1R5cGVDb250cm9sTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XG4gICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLmRlc2NyaXB0aW9uQ29udHJvbE5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xuXG4gICAgY29uc3QgZmxhZ1R5cGUgPSB0aGlzLmZvcm1Hcm91cFsnY2FzZUZpZWxkJ11cbiAgICAgICYmIHRoaXMuZm9ybUdyb3VwWydjYXNlRmllbGQnXS5pZFxuICAgICAgJiYgdGhpcy5mb3JtR3JvdXBbJ2Nhc2VGaWVsZCddLmlkID09PSB0aGlzLmNhc2VMZXZlbENhc2VGbGFnc0ZpZWxkSWRcbiAgICAgID8gUmVmZGF0YUNhc2VGbGFnVHlwZS5DQVNFXG4gICAgICA6IFJlZmRhdGFDYXNlRmxhZ1R5cGUuUEFSVFk7XG5cbiAgICAvLyBITUNUUyBzZXJ2aWNlIGNvZGUgaXMgcmVxdWlyZWQgdG8gcmV0cmlldmUgdGhlIHJlbGV2YW50IGxpc3Qgb2YgZmxhZyB0eXBlczsgYXR0ZW1wdCB0byBvYnRhaW4gaXQgYnkgY2FzZSB0eXBlIElEIGZpcnN0XG4gICAgdGhpcy5mbGFnUmVmZGF0YSQgPSB0aGlzLmNhc2VGbGFnUmVmZGF0YVNlcnZpY2UuZ2V0SG1jdHNTZXJ2aWNlRGV0YWlsc0J5Q2FzZVR5cGUodGhpcy5jYXNlVHlwZUlkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIC8vIElmIGFuIGVycm9yIG9jY3VycyByZXRyaWV2aW5nIEhNQ1RTIHNlcnZpY2UgZGV0YWlscyBieSBjYXNlIHR5cGUgSUQsIHRyeSBieSBzZXJ2aWNlIG5hbWUgaW5zdGVhZFxuICAgICAgICBjYXRjaEVycm9yKF8gPT4gdGhpcy5jYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlLmdldEhtY3RzU2VydmljZURldGFpbHNCeVNlcnZpY2VOYW1lKHRoaXMuanVyaXNkaWN0aW9uKSksXG4gICAgICAgIC8vIFVzZSBzd2l0Y2hNYXAgdG8gcmV0dXJuIGFuIGlubmVyIE9ic2VydmFibGUgb2YgdGhlIGZsYWcgdHlwZXMgZGF0YSwgaGF2aW5nIHJlY2VpdmVkIHRoZSBzZXJ2aWNlIGRldGFpbHNcbiAgICAgICAgLy8gaW5jbHVkaW5nIHNlcnZpY2VfY29kZS4gVGhpcyBhdm9pZHMgaGF2aW5nIG5lc3RlZCBgc3Vic2NyaWJlYHMsIHdoaWNoIGlzIGFuIGFudGktcGF0dGVybiFcbiAgICAgICAgc3dpdGNoTWFwKHNlcnZpY2VEZXRhaWxzID0+IHRoaXMuY2FzZUZsYWdSZWZkYXRhU2VydmljZS5nZXRDYXNlRmxhZ3NSZWZkYXRhKHNlcnZpY2VEZXRhaWxzWzBdLnNlcnZpY2VfY29kZSwgZmxhZ1R5cGUpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIC8vIEZpcnN0IChhbmQgb25seSkgb2JqZWN0IGluIHRoZSByZXR1cm5lZCBhcnJheSBzaG91bGQgYmUgdGhlIHRvcC1sZXZlbCBcIlBhcnR5XCIgZmxhZyB0eXBlXG4gICAgICAgIG5leHQ6IGZsYWdUeXBlcyA9PiB0aGlzLmZsYWdUeXBlcyA9IGZsYWdUeXBlc1swXS5jaGlsZEZsYWdzLFxuICAgICAgICBlcnJvcjogZXJyb3IgPT4gdGhpcy5vblJlZmRhdGFFcnJvcihlcnJvcilcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZsYWdSZWZkYXRhJCkge1xuICAgICAgdGhpcy5mbGFnUmVmZGF0YSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GbGFnVHlwZUNoYW5nZWQoZmxhZ1R5cGU6IEZsYWdUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZsYWdUeXBlID0gZmxhZ1R5cGU7XG4gICAgLy8gRGlzcGxheSBkZXNjcmlwdGlvbiB0ZXh0Ym94IGlmICdPdGhlcicgZmxhZyB0eXBlIGlzIHNlbGVjdGVkXG4gICAgdGhpcy5vdGhlckZsYWdUeXBlU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUuZmxhZ0NvZGUgPT09IHRoaXMub3RoZXJGbGFnVHlwZUNvZGU7XG4gIH1cblxuICBwdWJsaWMgb25OZXh0KCk6IHZvaWQge1xuICAgIC8vIFZhbGlkYXRlIGZvcm1cbiAgICB0aGlzLnZhbGlkYXRlRm9ybSgpO1xuICAgIC8vIFJldHVybiBjYXNlIGZsYWcgZmllbGQgc3RhdGUsIHdoZXRoZXIgdGhlIHNlbGVjdGVkIGZsYWcgdHlwZSAoaWYgYW55KSBpcyBhIHBhcmVudCBvciBub3QsIGVycm9yIG1lc3NhZ2VzLFxuICAgIC8vIGZsYWcgbmFtZSwgcGF0aCwgaGVhcmluZyByZWxldmFudCBpbmRpY2F0b3IsIGNvZGUsIGFuZCBcImxpc3Qgb2YgdmFsdWVzXCIgKGlmIGFueSkgdG8gdGhlIHBhcmVudFxuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZUVtaXR0ZXIuZW1pdCh7XG4gICAgICBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFLFxuICAgICAgaXNQYXJlbnRGbGFnVHlwZTogdGhpcy5zZWxlY3RlZEZsYWdUeXBlID8gdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmlzUGFyZW50IDogbnVsbCxcbiAgICAgIGVycm9yTWVzc2FnZXM6IHRoaXMuZXJyb3JNZXNzYWdlcyxcbiAgICAgIGZsYWdOYW1lOiB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUgPyB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUubmFtZSA6IG51bGwsXG4gICAgICBmbGFnUGF0aDogdGhpcy5zZWxlY3RlZEZsYWdUeXBlID8gdGhpcy5zZWxlY3RlZEZsYWdUeXBlLlBhdGgubWFwKHBhdGhWYWx1ZSA9PiBPYmplY3QuYXNzaWduKHsgaWQ6IG51bGwsIHZhbHVlOiBwYXRoVmFsdWUgfSkpIDogbnVsbCxcbiAgICAgIGhlYXJpbmdSZWxldmFudEZsYWc6IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSA/IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5oZWFyaW5nUmVsZXZhbnQgOiBudWxsLFxuICAgICAgZmxhZ0NvZGU6IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSA/IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5mbGFnQ29kZSA6IG51bGwsXG4gICAgICAvLyBJbmNsdWRlIHRoZSBcImxpc3Qgb2YgdmFsdWVzXCIgKGlmIGFueSk7IGN1cnJlbnRseSBhcHBsaWNhYmxlIHRvIGxhbmd1YWdlIGZsYWcgdHlwZXNcbiAgICAgIGxpc3RPZlZhbHVlczogdGhpcy5zZWxlY3RlZEZsYWdUeXBlICYmIHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5saXN0T2ZWYWx1ZXMgJiYgdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmxpc3RPZlZhbHVlcy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmxpc3RPZlZhbHVlc1xuICAgICAgICA6IG51bGxcbiAgICB9KTtcbiAgICAvLyBFbWl0IFwiZmxhZyBjb21tZW50cyBvcHRpb25hbFwiIGV2ZW50IGlmIHRoZSB1c2VyIHNlbGVjdHMgYSBmbGFnIHR5cGUgd2hlcmUgY29tbWVudHMgYXJlIG5vdCBtYW5kYXRvcnlcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsYWdUeXBlICYmICF0aGlzLnNlbGVjdGVkRmxhZ1R5cGUuZmxhZ0NvbW1lbnQpIHtcbiAgICAgIHRoaXMuZmxhZ0NvbW1lbnRzT3B0aW9uYWxFbWl0dGVyLmVtaXQobnVsbCk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBzZWxlY3RlZCBmbGFnIHR5cGUgaXMgYSBwYXJlbnQsIGxvYWQgdGhlIGxpc3Qgb2YgY2hpbGQgZmxhZyB0eXBlcyBhbmQgcmVzZXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSAmJiB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUuaXNQYXJlbnQpIHtcbiAgICAgIHRoaXMuZmxhZ1R5cGVzID0gdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmNoaWxkRmxhZ3M7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5mbGFnVHlwZUNvbnRyb2xOYW1lKS5zZXRWYWx1ZSgnJyk7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuZmxhZ1R5cGVOb3RTZWxlY3RlZEVycm9yTWVzc2FnZSA9ICcnO1xuICAgIHRoaXMuZmxhZ1R5cGVFcnJvck1lc3NhZ2UgPSAnJztcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcblxuICAgIGlmICghdGhpcy5zZWxlY3RlZEZsYWdUeXBlKSB7XG4gICAgICB0aGlzLmZsYWdUeXBlTm90U2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBTZWxlY3RGbGFnVHlwZUVycm9yTWVzc2FnZS5GTEFHX1RZUEVfTk9UX1NFTEVDVEVEO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe3RpdGxlOiAnJywgZGVzY3JpcHRpb246IGAke1NlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9OT1RfU0VMRUNURUR9YCwgZmllbGRJZDogJ2NvbmRpdGlvbmFsLXJhZGlvcy1saXN0J30pO1xuICAgIH1cbiAgICBpZiAodGhpcy5vdGhlckZsYWdUeXBlU2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IG90aGVyRmxhZ1R5cGVEZXNjcmlwdGlvbiA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmRlc2NyaXB0aW9uQ29udHJvbE5hbWUpLnZhbHVlO1xuICAgICAgaWYgKCFvdGhlckZsYWdUeXBlRGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5mbGFnVHlwZUVycm9yTWVzc2FnZSA9IFNlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9OT1RfRU5URVJFRDtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe3RpdGxlOiAnJywgZGVzY3JpcHRpb246IGAke1NlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9OT1RfRU5URVJFRH1gLCBmaWVsZElkOiAnb3RoZXItZmxhZy10eXBlLWRlc2NyaXB0aW9uJ30pO1xuICAgICAgfVxuICAgICAgaWYgKG90aGVyRmxhZ1R5cGVEZXNjcmlwdGlvbi5sZW5ndGggPiB0aGlzLm1heENoYXJhY3RlcnNGb3JPdGhlckZsYWdUeXBlKSB7XG4gICAgICAgIHRoaXMuZmxhZ1R5cGVFcnJvck1lc3NhZ2UgPSBTZWxlY3RGbGFnVHlwZUVycm9yTWVzc2FnZS5GTEFHX1RZUEVfTElNSVRfRVhDRUVERUQ7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHt0aXRsZTogJycsIGRlc2NyaXB0aW9uOiBgJHtTZWxlY3RGbGFnVHlwZUVycm9yTWVzc2FnZS5GTEFHX1RZUEVfTElNSVRfRVhDRUVERUR9YCwgZmllbGRJZDogJ290aGVyLWZsYWctdHlwZS1kZXNjcmlwdGlvbid9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uUmVmZGF0YUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBTZXQgZXJyb3IgZmxhZyBvbiBjb21wb25lbnQgdG8gcmVtb3ZlIHRoZSBcIk5leHRcIiBidXR0b24gKHVzZXIgY2Fubm90IHByb2NlZWQgd2l0aCBmbGFnIGNyZWF0aW9uKVxuICAgIHRoaXMucmVmZGF0YUVycm9yID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7dGl0bGU6ICcnLCBkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSwgZmllbGRJZDogJ2NvbmRpdGlvbmFsLXJhZGlvcy1saXN0J30pO1xuICAgIC8vIFJldHVybiBjYXNlIGZsYWcgZmllbGQgc3RhdGUgYW5kIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBwYXJlbnRcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVFbWl0dGVyLmVtaXQoeyBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFLCBlcnJvck1lc3NhZ2VzOiB0aGlzLmVycm9yTWVzc2FnZXMgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiBmbGFnVHlwZU5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlLmxlbmd0aCA+IDB9XCI+XG4gICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiZmxhZy10eXBlLWhlYWRpbmdcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLWxcIj5cbiAgICAgICAgPGgxIGlkPVwiZmxhZy10eXBlLWhlYWRpbmdcIiBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19oZWFkaW5nXCI+XG4gICAgICAgICAge3tjYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5TRUxFQ1RfQ0FTRV9GTEFHfX1cbiAgICAgICAgPC9oMT5cbiAgICAgIDwvbGVnZW5kPlxuICAgICAgPGRpdiBpZD1cImZsYWctdHlwZS1ub3Qtc2VsZWN0ZWQtZXJyb3ItbWVzc2FnZVwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICpuZ0lmPVwiZmxhZ1R5cGVOb3RTZWxlY3RlZEVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+RXJyb3I6PC9zcGFuPiB7e2ZsYWdUeXBlTm90U2VsZWN0ZWRFcnJvck1lc3NhZ2V9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zIGdvdnVrLXJhZGlvcy0tY29uZGl0aW9uYWxcIiBkYXRhLW1vZHVsZT1cImdvdnVrLXJhZGlvc1wiIGlkPVwiY29uZGl0aW9uYWwtcmFkaW9zLWxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCBmbGFnVHlwZSBvZiBmbGFnVHlwZXM7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICA8IS0tIEFsbCBwYXJlbnQgZmxhZyB0eXBlcyBoYXZlIHRoZSBzYW1lIGZsYWdDb2RlIG9mIFwiQ0FUR1JZXCIsIHNvIGVhY2ggcmFkaW8gYnV0dG9uIHZhbHVlIG5lZWRzIHRvIGJlIG1hZGVcbiAgICAgICAgICAgIHVuaXF1ZSBieSBhcHBlbmRpbmcgdGhlIGluZGV4IC0gcmFkaW8gYnV0dG9ucyBzaG91bGRuJ3Qgc2hhcmUgdGhlIHNhbWUgdmFsdWUuXG4gICAgICAgICAgICBJdCBpcyBPSyB0byBhbWVuZCBmbGFnQ29kZSB0aGlzIHdheSBiZWNhdXNlIHBhcmVudCBmbGFnIHR5cGVzIGNhbm5vdCBiZSBzZWxlY3RlZCBhcyBhIGZpbmFsIHZhbHVlIC0tPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIiBpZD1cImZsYWctdHlwZS17e2l9fVwiIFtuYW1lXT1cImZsYWdUeXBlQ29udHJvbE5hbWVcIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgW3ZhbHVlXT1cImZsYWdUeXBlLmZsYWdDb2RlID09PSAnQ0FUR1JZJyA/IGZsYWdUeXBlLmZsYWdDb2RlICsgaSA6IGZsYWdUeXBlLmZsYWdDb2RlXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmxhZ1R5cGVDb250cm9sTmFtZVwiIChjaGFuZ2UpPVwib25GbGFnVHlwZUNoYW5nZWQoZmxhZ1R5cGUpXCIvPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBmb3I9XCJmbGFnLXR5cGUte3tpfX1cIj57e2ZsYWdUeXBlLm5hbWV9fTwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19jb25kaXRpb25hbFwiICpuZ0lmPVwib3RoZXJGbGFnVHlwZVNlbGVjdGVkXCIgaWQ9XCJjb25kaXRpb25hbC1mbGFnVHlwZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZmxhZ1R5cGVFcnJvck1lc3NhZ2UubGVuZ3RoID4gMH1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsXCIgZm9yPVwib3RoZXItZmxhZy10eXBlLWRlc2NyaXB0aW9uXCI+RW50ZXIgYSBmbGFnIHR5cGU8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cImZsYWctdHlwZS1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJmbGFnVHlwZUVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+RXJyb3I6PC9zcGFuPiB7e2ZsYWdUeXBlRXJyb3JNZXNzYWdlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstaW5wdXQgZ292dWstIS13aWR0aC1vbmUtaGFsZlwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogZmxhZ1R5cGVFcnJvck1lc3NhZ2UubGVuZ3RoID4gMH1cIlxuICAgICAgICAgICAgICBpZD1cIm90aGVyLWZsYWctdHlwZS1kZXNjcmlwdGlvblwiIFtuYW1lXT1cImRlc2NyaXB0aW9uQ29udHJvbE5hbWVcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGVzY3JpcHRpb25Db250cm9sTmFtZVwiLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiICpuZ0lmPVwiIXJlZmRhdGFFcnJvclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uTmV4dCgpXCI+TmV4dDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWZsYWctdHlwZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9jYXNlLWZsYWcvY29tcG9uZW50cy9zZWxlY3QtZmxhZy10eXBlL3NlbGVjdC1mbGFnLXR5cGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvc2VsZWN0LWZsYWctdHlwZS9zZWxlY3QtZmxhZy10eXBlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd2RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUVwRyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7OztJQ0RoRywrQkFDcUQ7SUFDbkQsZ0NBQW9DO0lBQUEsc0JBQU07SUFBQSxpQkFBTztJQUFDLFlBQ3BEO0lBQUEsaUJBQU07OztJQUQ4QyxlQUNwRDtJQURvRCx1RUFDcEQ7Ozs7SUFFRSwrQkFBK0U7SUFJN0UsaUNBRWtGO0lBQXhD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Q0FBQyxDQUFDO0lBQ2pJLENBQUM7OzhGQXRKVSx1QkFBdUI7NERBQXZCLHVCQUF1QjtRQ2hCcEMsOEJBQWdEO1FBQzlDLDhCQUEyRztRQUN6RyxtQ0FBc0U7UUFDcEUsaUNBQWlFO1FBQy9ELDZCQUEyRDtRQUN6RCxZQUNGO1FBQUEsaUJBQUs7UUFDUCxpQkFBUztRQUNULHdFQUdNO1FBQ04sOEJBQTRHO1FBQzFHLHdFQVFNO1FBQ04sd0VBV007UUFDUixpQkFBTTtRQUNSLGlCQUFXO1FBQ2IsaUJBQU07UUFDTiwwRUFFTTtRQUNSLGlCQUFNOztRQXhDa0IseUNBQXVCO1FBQ2YsZUFBNEU7UUFBNUUsb0dBQTRFO1FBSWxHLGVBQ0Y7UUFERSw2RUFDRjtRQUdDLGVBQWdEO1FBQWhELHFFQUFnRDtRQUlJLGVBQWM7UUFBZCx1Q0FBYztRQVMzQixlQUEyQjtRQUEzQixnREFBMkI7UUFleEMsZUFBbUI7UUFBbkIsd0NBQW1COzt1RkRyQnpDLHVCQUF1QjtjQUxuQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsV0FBVyxFQUFFLG1DQUFtQztnQkFDaEQsU0FBUyxFQUFFLENBQUMsbUNBQW1DLENBQUM7YUFDakQ7eUVBSVEsU0FBUztrQkFEZixLQUFLO1lBSUMsWUFBWTtrQkFEbEIsS0FBSztZQUlDLFVBQVU7a0JBRGhCLEtBQUs7WUFJQyxjQUFjO2tCQURwQixLQUFLO1lBSUMsb0JBQW9CO2tCQUQxQixNQUFNO1lBSUEsMkJBQTJCO2tCQURqQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRmxhZ1R5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4vY2FzZS1mbGFnJztcbmltcG9ydCB7IENhc2VGbGFnUmVmZGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBSZWZkYXRhQ2FzZUZsYWdUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvY2FzZS1mbGFnL3JlZmRhdGEtY2FzZS1mbGFnLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBDYXNlRmxhZ1N0YXRlIH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGbGFnRmllbGRTdGF0ZSwgQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUsIFNlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtc2VsZWN0LWZsYWctdHlwZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtZmxhZy10eXBlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWZsYWctdHlwZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEZsYWdUeXBlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMganVyaXNkaWN0aW9uOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGNhc2VUeXBlSWQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaG1jdHNTZXJ2aWNlSWQ6IHN0cmluZztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGNhc2VGbGFnU3RhdGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPENhc2VGbGFnU3RhdGU+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBmbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBmbGFnVHlwZXM6IEZsYWdUeXBlW107XG4gIHB1YmxpYyBzZWxlY3RlZEZsYWdUeXBlOiBGbGFnVHlwZTtcbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdO1xuICBwdWJsaWMgZmxhZ1R5cGVOb3RTZWxlY3RlZEVycm9yTWVzc2FnZSA9ICcnO1xuICBwdWJsaWMgZmxhZ1R5cGVFcnJvck1lc3NhZ2UgPSAnJztcbiAgcHVibGljIGZsYWdSZWZkYXRhJDogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgb3RoZXJGbGFnVHlwZVNlbGVjdGVkID0gZmFsc2U7XG4gIHB1YmxpYyByZWZkYXRhRXJyb3IgPSBmYWxzZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZmxhZ1R5cGVDb250cm9sTmFtZSA9ICdmbGFnVHlwZSc7XG4gIHB1YmxpYyByZWFkb25seSBkZXNjcmlwdGlvbkNvbnRyb2xOYW1lID0gJ290aGVyRmxhZ1R5cGVEZXNjcmlwdGlvbic7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWF4Q2hhcmFjdGVyc0Zvck90aGVyRmxhZ1R5cGUgPSA4MDtcbiAgLy8gQ29kZSBmb3IgXCJPdGhlclwiIGZsYWcgdHlwZSBhcyBkZWZpbmVkIGluIFJlZmVyZW5jZSBEYXRhXG4gIHByaXZhdGUgcmVhZG9ubHkgb3RoZXJGbGFnVHlwZUNvZGUgPSAnT1QwMDAxJztcbiAgcHVibGljIHJlYWRvbmx5IGNhc2VMZXZlbENhc2VGbGFnc0ZpZWxkSWQgPSAnY2FzZUZsYWdzJztcblxuICBwdWJsaWMgZ2V0IGNhc2VGbGFnV2l6YXJkU3RlcFRpdGxlKCk6IHR5cGVvZiBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZSB7XG4gICAgcmV0dXJuIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBjYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlOiBDYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5mbGFnVHlwZXMgPSBbXTtcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKHRoaXMuZmxhZ1R5cGVDb250cm9sTmFtZSwgbmV3IEZvcm1Db250cm9sKCcnKSk7XG4gICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbCh0aGlzLmRlc2NyaXB0aW9uQ29udHJvbE5hbWUsIG5ldyBGb3JtQ29udHJvbCgnJykpO1xuXG4gICAgY29uc3QgZmxhZ1R5cGUgPSB0aGlzLmZvcm1Hcm91cFsnY2FzZUZpZWxkJ11cbiAgICAgICYmIHRoaXMuZm9ybUdyb3VwWydjYXNlRmllbGQnXS5pZFxuICAgICAgJiYgdGhpcy5mb3JtR3JvdXBbJ2Nhc2VGaWVsZCddLmlkID09PSB0aGlzLmNhc2VMZXZlbENhc2VGbGFnc0ZpZWxkSWRcbiAgICAgID8gUmVmZGF0YUNhc2VGbGFnVHlwZS5DQVNFXG4gICAgICA6IFJlZmRhdGFDYXNlRmxhZ1R5cGUuUEFSVFk7XG5cbiAgICAvLyBJZiBobWN0c1NlcnZpY2VJZCBpcyBwcmVzZW50LCB1c2UgdGhpcyB0byByZXRyaWV2ZSB0aGUgcmVsZXZhbnQgbGlzdCBvZiBmbGFnIHR5cGVzXG4gICAgaWYgKHRoaXMuaG1jdHNTZXJ2aWNlSWQpIHtcbiAgICAgIHRoaXMuZmxhZ1JlZmRhdGEkID0gdGhpcy5jYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlLmdldENhc2VGbGFnc1JlZmRhdGEodGhpcy5obWN0c1NlcnZpY2VJZCwgZmxhZ1R5cGUpXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIC8vIEZpcnN0IChhbmQgb25seSkgb2JqZWN0IGluIHRoZSByZXR1cm5lZCBhcnJheSBzaG91bGQgYmUgdGhlIHRvcC1sZXZlbCBcIlBhcnR5XCIgZmxhZyB0eXBlXG4gICAgICAgICAgbmV4dDogZmxhZ1R5cGVzID0+IHRoaXMuZmxhZ1R5cGVzID0gZmxhZ1R5cGVzWzBdLmNoaWxkRmxhZ3MsXG4gICAgICAgICAgZXJyb3I6IGVycm9yID0+IHRoaXMub25SZWZkYXRhRXJyb3IoZXJyb3IpXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBFbHNlLCBITUNUUyBzZXJ2aWNlIGNvZGUgaXMgcmVxdWlyZWQgdG8gcmV0cmlldmUgdGhlIHJlbGV2YW50IGxpc3Qgb2YgZmxhZyB0eXBlczsgYXR0ZW1wdCB0byBvYnRhaW4gaXQgYnkgY2FzZSB0eXBlIElEIGZpcnN0XG4gICAgICB0aGlzLmZsYWdSZWZkYXRhJCA9IHRoaXMuY2FzZUZsYWdSZWZkYXRhU2VydmljZS5nZXRIbWN0c1NlcnZpY2VEZXRhaWxzQnlDYXNlVHlwZSh0aGlzLmNhc2VUeXBlSWQpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIC8vIElmIGFuIGVycm9yIG9jY3VycyByZXRyaWV2aW5nIEhNQ1RTIHNlcnZpY2UgZGV0YWlscyBieSBjYXNlIHR5cGUgSUQsIHRyeSBieSBzZXJ2aWNlIG5hbWUgaW5zdGVhZFxuICAgICAgICAgIGNhdGNoRXJyb3IoXyA9PiB0aGlzLmNhc2VGbGFnUmVmZGF0YVNlcnZpY2UuZ2V0SG1jdHNTZXJ2aWNlRGV0YWlsc0J5U2VydmljZU5hbWUodGhpcy5qdXJpc2RpY3Rpb24pKSxcbiAgICAgICAgICAvLyBVc2Ugc3dpdGNoTWFwIHRvIHJldHVybiBhbiBpbm5lciBPYnNlcnZhYmxlIG9mIHRoZSBmbGFnIHR5cGVzIGRhdGEsIGhhdmluZyByZWNlaXZlZCB0aGUgc2VydmljZSBkZXRhaWxzXG4gICAgICAgICAgLy8gaW5jbHVkaW5nIHNlcnZpY2VfY29kZS4gVGhpcyBhdm9pZHMgaGF2aW5nIG5lc3RlZCBgc3Vic2NyaWJlYHMsIHdoaWNoIGlzIGFuIGFudGktcGF0dGVybiFcbiAgICAgICAgICBzd2l0Y2hNYXAoc2VydmljZURldGFpbHMgPT4gdGhpcy5jYXNlRmxhZ1JlZmRhdGFTZXJ2aWNlLmdldENhc2VGbGFnc1JlZmRhdGEoc2VydmljZURldGFpbHNbMF0uc2VydmljZV9jb2RlLCBmbGFnVHlwZSkpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgLy8gRmlyc3QgKGFuZCBvbmx5KSBvYmplY3QgaW4gdGhlIHJldHVybmVkIGFycmF5IHNob3VsZCBiZSB0aGUgdG9wLWxldmVsIFwiUGFydHlcIiBmbGFnIHR5cGVcbiAgICAgICAgICBuZXh0OiBmbGFnVHlwZXMgPT4gdGhpcy5mbGFnVHlwZXMgPSBmbGFnVHlwZXNbMF0uY2hpbGRGbGFncyxcbiAgICAgICAgICBlcnJvcjogZXJyb3IgPT4gdGhpcy5vblJlZmRhdGFFcnJvcihlcnJvcilcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZsYWdSZWZkYXRhJCkge1xuICAgICAgdGhpcy5mbGFnUmVmZGF0YSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GbGFnVHlwZUNoYW5nZWQoZmxhZ1R5cGU6IEZsYWdUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZsYWdUeXBlID0gZmxhZ1R5cGU7XG4gICAgLy8gRGlzcGxheSBkZXNjcmlwdGlvbiB0ZXh0Ym94IGlmICdPdGhlcicgZmxhZyB0eXBlIGlzIHNlbGVjdGVkXG4gICAgdGhpcy5vdGhlckZsYWdUeXBlU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUuZmxhZ0NvZGUgPT09IHRoaXMub3RoZXJGbGFnVHlwZUNvZGU7XG4gIH1cblxuICBwdWJsaWMgb25OZXh0KCk6IHZvaWQge1xuICAgIC8vIFZhbGlkYXRlIGZvcm1cbiAgICB0aGlzLnZhbGlkYXRlRm9ybSgpO1xuICAgIC8vIFJldHVybiBjYXNlIGZsYWcgZmllbGQgc3RhdGUsIHdoZXRoZXIgdGhlIHNlbGVjdGVkIGZsYWcgdHlwZSAoaWYgYW55KSBpcyBhIHBhcmVudCBvciBub3QsIGVycm9yIG1lc3NhZ2VzLFxuICAgIC8vIGZsYWcgbmFtZSwgcGF0aCwgaGVhcmluZyByZWxldmFudCBpbmRpY2F0b3IsIGNvZGUsIGFuZCBcImxpc3Qgb2YgdmFsdWVzXCIgKGlmIGFueSkgdG8gdGhlIHBhcmVudFxuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZUVtaXR0ZXIuZW1pdCh7XG4gICAgICBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFLFxuICAgICAgaXNQYXJlbnRGbGFnVHlwZTogdGhpcy5zZWxlY3RlZEZsYWdUeXBlID8gdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmlzUGFyZW50IDogbnVsbCxcbiAgICAgIGVycm9yTWVzc2FnZXM6IHRoaXMuZXJyb3JNZXNzYWdlcyxcbiAgICAgIGZsYWdOYW1lOiB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUgPyB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUubmFtZSA6IG51bGwsXG4gICAgICBmbGFnUGF0aDogdGhpcy5zZWxlY3RlZEZsYWdUeXBlID8gdGhpcy5zZWxlY3RlZEZsYWdUeXBlLlBhdGgubWFwKHBhdGhWYWx1ZSA9PiBPYmplY3QuYXNzaWduKHsgaWQ6IG51bGwsIHZhbHVlOiBwYXRoVmFsdWUgfSkpIDogbnVsbCxcbiAgICAgIGhlYXJpbmdSZWxldmFudEZsYWc6IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSA/IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5oZWFyaW5nUmVsZXZhbnQgOiBudWxsLFxuICAgICAgZmxhZ0NvZGU6IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSA/IHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5mbGFnQ29kZSA6IG51bGwsXG4gICAgICAvLyBJbmNsdWRlIHRoZSBcImxpc3Qgb2YgdmFsdWVzXCIgKGlmIGFueSk7IGN1cnJlbnRseSBhcHBsaWNhYmxlIHRvIGxhbmd1YWdlIGZsYWcgdHlwZXNcbiAgICAgIGxpc3RPZlZhbHVlczogdGhpcy5zZWxlY3RlZEZsYWdUeXBlICYmIHRoaXMuc2VsZWN0ZWRGbGFnVHlwZS5saXN0T2ZWYWx1ZXMgJiYgdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmxpc3RPZlZhbHVlcy5sZW5ndGggPiAwXG4gICAgICAgID8gdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmxpc3RPZlZhbHVlc1xuICAgICAgICA6IG51bGxcbiAgICB9KTtcbiAgICAvLyBFbWl0IFwiZmxhZyBjb21tZW50cyBvcHRpb25hbFwiIGV2ZW50IGlmIHRoZSB1c2VyIHNlbGVjdHMgYSBmbGFnIHR5cGUgd2hlcmUgY29tbWVudHMgYXJlIG5vdCBtYW5kYXRvcnlcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsYWdUeXBlICYmICF0aGlzLnNlbGVjdGVkRmxhZ1R5cGUuZmxhZ0NvbW1lbnQpIHtcbiAgICAgIHRoaXMuZmxhZ0NvbW1lbnRzT3B0aW9uYWxFbWl0dGVyLmVtaXQobnVsbCk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBzZWxlY3RlZCBmbGFnIHR5cGUgaXMgYSBwYXJlbnQsIGxvYWQgdGhlIGxpc3Qgb2YgY2hpbGQgZmxhZyB0eXBlcyBhbmQgcmVzZXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbGFnVHlwZSAmJiB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUuaXNQYXJlbnQpIHtcbiAgICAgIHRoaXMuZmxhZ1R5cGVzID0gdGhpcy5zZWxlY3RlZEZsYWdUeXBlLmNoaWxkRmxhZ3M7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5mbGFnVHlwZUNvbnRyb2xOYW1lKS5zZXRWYWx1ZSgnJyk7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxhZ1R5cGUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVGb3JtKCk6IHZvaWQge1xuICAgIHRoaXMuZmxhZ1R5cGVOb3RTZWxlY3RlZEVycm9yTWVzc2FnZSA9ICcnO1xuICAgIHRoaXMuZmxhZ1R5cGVFcnJvck1lc3NhZ2UgPSAnJztcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcblxuICAgIGlmICghdGhpcy5zZWxlY3RlZEZsYWdUeXBlKSB7XG4gICAgICB0aGlzLmZsYWdUeXBlTm90U2VsZWN0ZWRFcnJvck1lc3NhZ2UgPSBTZWxlY3RGbGFnVHlwZUVycm9yTWVzc2FnZS5GTEFHX1RZUEVfTk9UX1NFTEVDVEVEO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe3RpdGxlOiAnJywgZGVzY3JpcHRpb246IGAke1NlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9OT1RfU0VMRUNURUR9YCwgZmllbGRJZDogJ2NvbmRpdGlvbmFsLXJhZGlvcy1saXN0J30pO1xuICAgIH1cbiAgICBpZiAodGhpcy5vdGhlckZsYWdUeXBlU2VsZWN0ZWQpIHtcbiAgICAgIGNvbnN0IG90aGVyRmxhZ1R5cGVEZXNjcmlwdGlvbiA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmRlc2NyaXB0aW9uQ29udHJvbE5hbWUpLnZhbHVlO1xuICAgICAgaWYgKCFvdGhlckZsYWdUeXBlRGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy5mbGFnVHlwZUVycm9yTWVzc2FnZSA9IFNlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9OT1RfRU5URVJFRDtcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe3RpdGxlOiAnJywgZGVzY3JpcHRpb246IGAke1NlbGVjdEZsYWdUeXBlRXJyb3JNZXNzYWdlLkZMQUdfVFlQRV9OT1RfRU5URVJFRH1gLCBmaWVsZElkOiAnb3RoZXItZmxhZy10eXBlLWRlc2NyaXB0aW9uJ30pO1xuICAgICAgfVxuICAgICAgaWYgKG90aGVyRmxhZ1R5cGVEZXNjcmlwdGlvbi5sZW5ndGggPiB0aGlzLm1heENoYXJhY3RlcnNGb3JPdGhlckZsYWdUeXBlKSB7XG4gICAgICAgIHRoaXMuZmxhZ1R5cGVFcnJvck1lc3NhZ2UgPSBTZWxlY3RGbGFnVHlwZUVycm9yTWVzc2FnZS5GTEFHX1RZUEVfTElNSVRfRVhDRUVERUQ7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHt0aXRsZTogJycsIGRlc2NyaXB0aW9uOiBgJHtTZWxlY3RGbGFnVHlwZUVycm9yTWVzc2FnZS5GTEFHX1RZUEVfTElNSVRfRVhDRUVERUR9YCwgZmllbGRJZDogJ290aGVyLWZsYWctdHlwZS1kZXNjcmlwdGlvbid9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9uUmVmZGF0YUVycm9yKGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBTZXQgZXJyb3IgZmxhZyBvbiBjb21wb25lbnQgdG8gcmVtb3ZlIHRoZSBcIk5leHRcIiBidXR0b24gKHVzZXIgY2Fubm90IHByb2NlZWQgd2l0aCBmbGFnIGNyZWF0aW9uKVxuICAgIHRoaXMucmVmZGF0YUVycm9yID0gdHJ1ZTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7dGl0bGU6ICcnLCBkZXNjcmlwdGlvbjogZXJyb3IubWVzc2FnZSwgZmllbGRJZDogJ2NvbmRpdGlvbmFsLXJhZGlvcy1saXN0J30pO1xuICAgIC8vIFJldHVybiBjYXNlIGZsYWcgZmllbGQgc3RhdGUgYW5kIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBwYXJlbnRcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVFbWl0dGVyLmVtaXQoeyBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFLCBlcnJvck1lc3NhZ2VzOiB0aGlzLmVycm9yTWVzc2FnZXMgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiBmbGFnVHlwZU5vdFNlbGVjdGVkRXJyb3JNZXNzYWdlLmxlbmd0aCA+IDB9XCI+XG4gICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiZmxhZy10eXBlLWhlYWRpbmdcIj5cbiAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLWxcIj5cbiAgICAgICAgPGgxIGlkPVwiZmxhZy10eXBlLWhlYWRpbmdcIiBjbGFzcz1cImdvdnVrLWZpZWxkc2V0X19oZWFkaW5nXCI+XG4gICAgICAgICAge3tjYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5TRUxFQ1RfQ0FTRV9GTEFHfX1cbiAgICAgICAgPC9oMT5cbiAgICAgIDwvbGVnZW5kPlxuICAgICAgPGRpdiBpZD1cImZsYWctdHlwZS1ub3Qtc2VsZWN0ZWQtZXJyb3ItbWVzc2FnZVwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiXG4gICAgICAgICpuZ0lmPVwiZmxhZ1R5cGVOb3RTZWxlY3RlZEVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+RXJyb3I6PC9zcGFuPiB7e2ZsYWdUeXBlTm90U2VsZWN0ZWRFcnJvck1lc3NhZ2V9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zIGdvdnVrLXJhZGlvcy0tY29uZGl0aW9uYWxcIiBkYXRhLW1vZHVsZT1cImdvdnVrLXJhZGlvc1wiIGlkPVwiY29uZGl0aW9uYWwtcmFkaW9zLWxpc3RcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCBmbGFnVHlwZSBvZiBmbGFnVHlwZXM7IGluZGV4IGFzIGlcIj5cbiAgICAgICAgICA8IS0tIEFsbCBwYXJlbnQgZmxhZyB0eXBlcyBoYXZlIHRoZSBzYW1lIGZsYWdDb2RlIG9mIFwiQ0FUR1JZXCIsIHNvIGVhY2ggcmFkaW8gYnV0dG9uIHZhbHVlIG5lZWRzIHRvIGJlIG1hZGVcbiAgICAgICAgICAgIHVuaXF1ZSBieSBhcHBlbmRpbmcgdGhlIGluZGV4IC0gcmFkaW8gYnV0dG9ucyBzaG91bGRuJ3Qgc2hhcmUgdGhlIHNhbWUgdmFsdWUuXG4gICAgICAgICAgICBJdCBpcyBPSyB0byBhbWVuZCBmbGFnQ29kZSB0aGlzIHdheSBiZWNhdXNlIHBhcmVudCBmbGFnIHR5cGVzIGNhbm5vdCBiZSBzZWxlY3RlZCBhcyBhIGZpbmFsIHZhbHVlIC0tPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLXJhZGlvc19faW5wdXRcIiBpZD1cImZsYWctdHlwZS17e2l9fVwiIFtuYW1lXT1cImZsYWdUeXBlQ29udHJvbE5hbWVcIlxuICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgW3ZhbHVlXT1cImZsYWdUeXBlLmZsYWdDb2RlID09PSAnQ0FUR1JZJyA/IGZsYWdUeXBlLmZsYWdDb2RlICsgaSA6IGZsYWdUeXBlLmZsYWdDb2RlXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZmxhZ1R5cGVDb250cm9sTmFtZVwiIChjaGFuZ2UpPVwib25GbGFnVHlwZUNoYW5nZWQoZmxhZ1R5cGUpXCIvPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBmb3I9XCJmbGFnLXR5cGUte3tpfX1cIj57e2ZsYWdUeXBlLm5hbWV9fTwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19jb25kaXRpb25hbFwiICpuZ0lmPVwib3RoZXJGbGFnVHlwZVNlbGVjdGVkXCIgaWQ9XCJjb25kaXRpb25hbC1mbGFnVHlwZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZmxhZ1R5cGVFcnJvck1lc3NhZ2UubGVuZ3RoID4gMH1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsXCIgZm9yPVwib3RoZXItZmxhZy10eXBlLWRlc2NyaXB0aW9uXCI+RW50ZXIgYSBmbGFnIHR5cGU8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBpZD1cImZsYWctdHlwZS1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJmbGFnVHlwZUVycm9yTWVzc2FnZS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+RXJyb3I6PC9zcGFuPiB7e2ZsYWdUeXBlRXJyb3JNZXNzYWdlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstaW5wdXQgZ292dWstIS13aWR0aC1vbmUtaGFsZlwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogZmxhZ1R5cGVFcnJvck1lc3NhZ2UubGVuZ3RoID4gMH1cIlxuICAgICAgICAgICAgICBpZD1cIm90aGVyLWZsYWctdHlwZS1kZXNjcmlwdGlvblwiIFtuYW1lXT1cImRlc2NyaXB0aW9uQ29udHJvbE5hbWVcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiZGVzY3JpcHRpb25Db250cm9sTmFtZVwiLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2ZpZWxkc2V0PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiICpuZ0lmPVwiIXJlZmRhdGFFcnJvclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uTmV4dCgpXCI+TmV4dDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -59,7 +59,7 @@ function WriteCaseFlagFieldComponent_div_1_ng_container_5_Template(rf, ctx) { if
|
|
|
59
59
|
} if (rf & 2) {
|
|
60
60
|
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
61
61
|
i0.ɵɵadvance(1);
|
|
62
|
-
i0.ɵɵproperty("formGroup", ctx_r8.caseFlagParentFormGroup)("jurisdiction", ctx_r8.jurisdiction)("caseTypeId", ctx_r8.caseTypeId);
|
|
62
|
+
i0.ɵɵproperty("formGroup", ctx_r8.caseFlagParentFormGroup)("jurisdiction", ctx_r8.jurisdiction)("caseTypeId", ctx_r8.caseTypeId)("hmctsServiceId", ctx_r8.hmctsServiceId);
|
|
63
63
|
} }
|
|
64
64
|
function WriteCaseFlagFieldComponent_div_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
65
65
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
@@ -93,7 +93,7 @@ function WriteCaseFlagFieldComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
|
93
93
|
i0.ɵɵtext(3);
|
|
94
94
|
i0.ɵɵelementEnd();
|
|
95
95
|
i0.ɵɵtemplate(4, WriteCaseFlagFieldComponent_div_1_ng_container_4_Template, 2, 2, "ng-container", 11);
|
|
96
|
-
i0.ɵɵtemplate(5, WriteCaseFlagFieldComponent_div_1_ng_container_5_Template, 2,
|
|
96
|
+
i0.ɵɵtemplate(5, WriteCaseFlagFieldComponent_div_1_ng_container_5_Template, 2, 4, "ng-container", 11);
|
|
97
97
|
i0.ɵɵtemplate(6, WriteCaseFlagFieldComponent_div_1_ng_container_6_Template, 2, 3, "ng-container", 11);
|
|
98
98
|
i0.ɵɵtemplate(7, WriteCaseFlagFieldComponent_div_1_ng_container_7_Template, 2, 2, "ng-container", 11);
|
|
99
99
|
i0.ɵɵelementEnd();
|
|
@@ -202,22 +202,30 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
// Extract all flags-related data from the CaseEventTrigger object in the snapshot data
|
|
205
|
-
if (this.route.snapshot.data.eventTrigger
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
205
|
+
if (this.route.snapshot.data.eventTrigger) {
|
|
206
|
+
// Get the HMCTSServiceId from supplementary data, if it exists (required for retrieving the available flag types in
|
|
207
|
+
// the first instance, only falling back on case type ID or jurisidiction if it's not present)
|
|
208
|
+
if (this.route.snapshot.data.eventTrigger.supplementary_data
|
|
209
|
+
&& this.route.snapshot.data.eventTrigger.supplementary_data.HMCTSServiceId) {
|
|
210
|
+
this.hmctsServiceId = this.route.snapshot.data.eventTrigger.supplementary_data.HMCTSServiceId;
|
|
211
|
+
}
|
|
212
|
+
if (this.route.snapshot.data.eventTrigger.case_fields) {
|
|
213
|
+
this.flagsData = (this.route.snapshot.data.eventTrigger.case_fields)
|
|
214
|
+
.reduce((flags, caseField) => {
|
|
215
|
+
return FieldsUtils.extractFlagsDataFromCaseField(flags, caseField, caseField.id, caseField);
|
|
216
|
+
}, []);
|
|
217
|
+
// Set boolean indicating the display_context_parameter is "update"
|
|
218
|
+
this.isDisplayContextParameterUpdate =
|
|
219
|
+
this.setDisplayContextParameterUpdate((this.route.snapshot.data.eventTrigger.case_fields));
|
|
220
|
+
// Set starting field state
|
|
221
|
+
this.fieldState = this.isDisplayContextParameterUpdate ? CaseFlagFieldState.FLAG_MANAGE_CASE_FLAGS : CaseFlagFieldState.FLAG_LOCATION;
|
|
222
|
+
// Get case title, to be used by child components
|
|
223
|
+
this.caseEditDataService.caseTitle$.subscribe({
|
|
224
|
+
next: title => {
|
|
225
|
+
this.caseTitle = title.length > 0 ? title : this.caseNameMissing;
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
}
|
|
221
229
|
}
|
|
222
230
|
}
|
|
223
231
|
setDisplayContextParameterUpdate(caseFields) {
|
|
@@ -450,7 +458,7 @@ export class WriteCaseFlagFieldComponent extends AbstractFieldWriteComponent {
|
|
|
450
458
|
}
|
|
451
459
|
}
|
|
452
460
|
WriteCaseFlagFieldComponent.ɵfac = function WriteCaseFlagFieldComponent_Factory(t) { return new (t || WriteCaseFlagFieldComponent)(i0.ɵɵdirectiveInject(i1.ActivatedRoute), i0.ɵɵdirectiveInject(i2.CaseEditDataService)); };
|
|
453
|
-
WriteCaseFlagFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteCaseFlagFieldComponent, selectors: [["ccd-write-case-flag-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 3, consts: [["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], ["class", "form-group", 3, "formGroup", 4, "ngIf"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], ["class", "govuk-error-summary__body", 4, "ngFor", "ngForOf"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [1, "validation-error", 3, "click"], [1, "form-group", 3, "formGroup"], [1, "govuk-form-group", 3, "ngSwitch"], ["id", "create-flag-caption", 1, "govuk-caption-l", 3, "ngClass"], [4, "ngSwitchCase"], [3, "formGroup", "flagsData", "caseFlagStateEmitter"], [3, "formGroup", "jurisdiction", "caseTypeId", "caseFlagStateEmitter", "flagCommentsOptionalEmitter"], [3, "formGroup", "languages", "flagCode", "caseFlagStateEmitter"], [3, "formGroup", "optional", "caseFlagStateEmitter"], [3, "formGroup", "flagsData", "caseTitle", "caseFlagStateEmitter"], [3, "formGroup", "selectedFlag", "caseFlagStateEmitter"]], template: function WriteCaseFlagFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
461
|
+
WriteCaseFlagFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteCaseFlagFieldComponent, selectors: [["ccd-write-case-flag-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 3, consts: [["class", "govuk-error-summary", "aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 4, "ngIf"], ["class", "form-group", 3, "formGroup", 4, "ngIf"], ["aria-labelledby", "error-summary-title", "role", "alert", "tabindex", "-1", "data-module", "govuk-error-summary", 1, "govuk-error-summary"], ["id", "error-summary-title", 1, "govuk-error-summary__title"], ["class", "govuk-error-summary__body", 4, "ngFor", "ngForOf"], [1, "govuk-error-summary__body"], [1, "govuk-list", "govuk-error-summary__list"], [1, "validation-error", 3, "click"], [1, "form-group", 3, "formGroup"], [1, "govuk-form-group", 3, "ngSwitch"], ["id", "create-flag-caption", 1, "govuk-caption-l", 3, "ngClass"], [4, "ngSwitchCase"], [3, "formGroup", "flagsData", "caseFlagStateEmitter"], [3, "formGroup", "jurisdiction", "caseTypeId", "hmctsServiceId", "caseFlagStateEmitter", "flagCommentsOptionalEmitter"], [3, "formGroup", "languages", "flagCode", "caseFlagStateEmitter"], [3, "formGroup", "optional", "caseFlagStateEmitter"], [3, "formGroup", "flagsData", "caseTitle", "caseFlagStateEmitter"], [3, "formGroup", "selectedFlag", "caseFlagStateEmitter"]], template: function WriteCaseFlagFieldComponent_Template(rf, ctx) { if (rf & 1) {
|
|
454
462
|
i0.ɵɵtemplate(0, WriteCaseFlagFieldComponent_div_0_Template, 4, 1, "div", 0);
|
|
455
463
|
i0.ɵɵtemplate(1, WriteCaseFlagFieldComponent_div_1_Template, 8, 10, "div", 1);
|
|
456
464
|
i0.ɵɵtemplate(2, WriteCaseFlagFieldComponent_div_2_Template, 4, 4, "div", 1);
|
|
@@ -469,4 +477,4 @@ WriteCaseFlagFieldComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WriteCaseFlag
|
|
|
469
477
|
styleUrls: ['./write-case-flag-field.component.scss']
|
|
470
478
|
}]
|
|
471
479
|
}], function () { return [{ type: i1.ActivatedRoute }, { type: i2.CaseEditDataService }]; }, null); })();
|
|
472
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmxhZy93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7OztJQ0h6RSw4QkFBa0Y7SUFDaEYsNkJBQWlEO0lBQy9DLDBCQUFJO0lBQ0YsNEJBQW1GO0lBQWhGLDJRQUFzRDtJQUEwQixZQUE0QjtJQUFBLGlCQUFJO0lBQ3JILGlCQUFLO0lBQ1AsaUJBQUs7SUFDUCxpQkFBTTs7O0lBSG1GLGVBQTRCO0lBQTVCLGlEQUE0Qjs7O0lBUHZILDhCQUFxSztJQUNuSyw2QkFBZ0U7SUFDOUQsb0NBQ0Y7SUFBQSxp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QUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDckgsZUFBZSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQ3pDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNuQixlQUFlLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDeEQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxjQUFjLENBQUMsTUFBTTtTQUNoQixDQUFDO0lBQ2xCLENBQUM7SUFFTSxzQkFBc0I7UUFDM0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsa0RBQWtEO1FBQ2xELElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxDQUFDOztzR0FwVVUsMkJBQTJCO2dFQUEzQiwyQkFBMkI7UUNkeEMsNEVBV007UUFDTiw2RUF1Qk07UUFDTiw0RUFXTTs7UUEvQ0EsbURBQThCO1FBWTlCLGVBQXNDO1FBQXRDLDJEQUFzQztRQXdCdEMsZUFBcUM7UUFBckMsMERBQXFDOzt1RkR0QjlCLDJCQUEyQjtjQUx2QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLDJCQUEyQjtnQkFDckMsV0FBVyxFQUFFLHdDQUF3QztnQkFDckQsU0FBUyxFQUFFLENBQUMsd0NBQXdDLENBQUM7YUFDdEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ2FzZUVkaXREYXRhU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbnMvY2FzZS1lZGl0LWRhdGEvY2FzZS1lZGl0LWRhdGEuc2VydmljZSc7XG5pbXBvcnQgeyBDYXNlRmllbGQsIEVycm9yTWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpZWxkcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWZpZWxkL2Fic3RyYWN0LWZpZWxkLXdyaXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXNlRmxhZ1N0YXRlLCBGbGFnRGV0YWlsLCBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoLCBGbGFnUGF0aCwgRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aCB9IGZyb20gJy4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGbGFnRmllbGRTdGF0ZSwgQ2FzZUZsYWdTdGF0dXMsIENhc2VGbGFnVGV4dCB9IGZyb20gJy4vZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtd3JpdGUtY2FzZS1mbGFnLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFdyaXRlQ2FzZUZsYWdGaWVsZENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBwdWJsaWMgZmllbGRTdGF0ZTogbnVtYmVyO1xuICBwdWJsaWMgY2FzZUZsYWdGaWVsZFN0YXRlID0gQ2FzZUZsYWdGaWVsZFN0YXRlO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcbiAgcHVibGljIGNyZWF0ZUZsYWdDYXB0aW9uOiBDYXNlRmxhZ1RleHQ7XG4gIHB1YmxpYyBmbGFnc0RhdGE6IEZsYWdzV2l0aEZvcm1Hcm91cFBhdGhbXTtcbiAgcHVibGljIHNlbGVjdGVkRmxhZzogRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aDtcbiAgcHVibGljIHNlbGVjdGVkRmxhZ3NMb2NhdGlvbjogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aDtcbiAgcHVibGljIGNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIHB1YmxpYyBmbGFnQ29tbWVudHNPcHRpb25hbCA9IGZhbHNlO1xuICBwdWJsaWMganVyaXNkaWN0aW9uOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlVHlwZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBmbGFnTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZmxhZ1BhdGg6IEZsYWdQYXRoW107XG4gIHB1YmxpYyBoZWFyaW5nUmVsZXZhbnRGbGFnOiBib29sZWFuO1xuICBwdWJsaWMgZmxhZ0NvZGU6IHN0cmluZztcbiAgcHVibGljIGxpc3RPZlZhbHVlczoge2tleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfVtdID0gbnVsbDtcbiAgcHVibGljIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjYXNlVGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBhbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHVwZGF0ZU1vZGUgPSAnI0FSR1VNRU5UKFVQREFURSknO1xuICAvLyBDb2RlIGZvciBcIk90aGVyXCIgZmxhZyB0eXBlIGFzIGRlZmluZWQgaW4gUmVmZXJlbmNlIERhdGFcbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckZsYWdUeXBlQ29kZSA9ICdPVDAwMDEnO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FzZU5hbWVNaXNzaW5nID0gJ0Nhc2UgbmFtZSBtaXNzaW5nJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0RGF0YVNlcnZpY2U6IENhc2VFZGl0RGF0YVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuICAgIC8vIENoZWNrIGZvciBleGlzdGluZyBGbGFnTGF1bmNoZXIgY29udHJvbCBpbiBwYXJlbnQgYW5kIHJlbW92ZSBpdCAtIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGVuc3VyZSBpdHMgaW52YWxpZGl0eVxuICAgIC8vIGlzIHNldCBjb3JyZWN0bHkgYXQgdGhlIHN0YXJ0LCB3aGVuIHRoZSBjb21wb25lbnQgaXMgcmVsb2FkZWQgYW5kIHRoZSBjb250cm9sIGlzIHJlLXJlZ2lzdGVyZWQuIE90aGVyd2lzZSwgdGhlXG4gICAgLy8gdmFsaWRhdG9yIHN0YXRlIGdldHMgY2FycmllZCBvdmVyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwICYmIHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmNhc2VGaWVsZC5pZCkpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2wodGhpcy5jYXNlRmllbGQuaWQpO1xuICAgIH1cbiAgICAvLyBGcm9tIHRoaXMgcG9pbnQsIHRoaXMuZm9ybUdyb3VwIHJlZmVycyB0byB0aGUgRm9ybUdyb3VwIGZvciB0aGUgRmxhZ0xhdW5jaGVyIGZpZWxkLCBub3QgdGhlIHBhcmVudCBGb3JtR3JvdXBcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtR3JvdXAoe30sIHtcbiAgICAgIHZhbGlkYXRvcnM6IChfOiBBYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0gfCBudWxsID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGFuIGVycm9yIHRvIG1hcmsgdGhlIEZvcm1Hcm91cCBhcyBpbnZhbGlkIGlmIG5vdCBhbGwgQ2FzZSBGbGFnIHN0YWdlcyBoYXZlIGJlZW4gY29tcGxldGVkXG4gICAgICAgICAgcmV0dXJuIHtub3RBbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZDogdHJ1ZX07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSksIHRydWUpIGFzIEZvcm1Hcm91cDtcblxuICAgIHRoaXMuY3JlYXRlRmxhZ0NhcHRpb24gPSBDYXNlRmxhZ1RleHQuQ0FQVElPTjtcbiAgICAvLyBHZXQgdGhlIGNhc2UgdHlwZSBJRCBmcm9tIHRoZSBDYXNlVmlldyBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGEgKHJlcXVpcmVkIGZvciByZXRyaWV2aW5nIHRoZSBhdmFpbGFibGUgZmxhZ1xuICAgIC8vIHR5cGVzIGZvciBhIGNhc2UpXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlICYmIHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfdHlwZSkge1xuICAgICAgdGhpcy5jYXNlVHlwZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlLmlkO1xuICAgICAgLy8gR2V0IHRoZSBqdXJpc2RpY3Rpb24gKHJlcXVpcmVkIGZvciByZXRyaWV2aW5nIHRoZSBhdmFpbGFibGUgZmxhZyB0eXBlcyBpZiB1bmFibGUgdG8gZGV0ZXJtaW5lIHVzaW5nIGNhc2UgdHlwZSBJRClcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuanVyaXNkaWN0aW9uKSB7XG4gICAgICAgIHRoaXMuanVyaXNkaWN0aW9uID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXh0cmFjdCBhbGwgZmxhZ3MtcmVsYXRlZCBkYXRhIGZyb20gdGhlIENhc2VFdmVudFRyaWdnZXIgb2JqZWN0IGluIHRoZSBzbmFwc2hvdCBkYXRhXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykge1xuICAgICAgdGhpcy5mbGFnc0RhdGEgPSAoKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpIGFzIENhc2VGaWVsZFtdKVxuICAgICAgICAucmVkdWNlKChmbGFncywgY2FzZUZpZWxkKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmV4dHJhY3RGbGFnc0RhdGFGcm9tQ2FzZUZpZWxkKGZsYWdzLCBjYXNlRmllbGQsIGNhc2VGaWVsZC5pZCwgY2FzZUZpZWxkKTtcbiAgICAgICAgfSwgW10pO1xuXG4gICAgICAvLyBTZXQgYm9vbGVhbiBpbmRpY2F0aW5nIHRoZSBkaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyIGlzIFwidXBkYXRlXCJcbiAgICAgIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZSA9XG4gICAgICAgIHRoaXMuc2V0RGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGUoKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpIGFzIENhc2VGaWVsZFtdKTtcblxuICAgICAgLy8gU2V0IHN0YXJ0aW5nIGZpZWxkIHN0YXRlXG4gICAgICB0aGlzLmZpZWxkU3RhdGUgPSB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGUgPyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHUyA6IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OO1xuICAgICAgLy8gR2V0IGNhc2UgdGl0bGUsIHRvIGJlIHVzZWQgYnkgY2hpbGQgY29tcG9uZW50c1xuICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNhc2VUaXRsZSQuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogdGl0bGUgPT4ge1xuICAgICAgICAgIHRoaXMuY2FzZVRpdGxlID0gdGl0bGUubGVuZ3RoID4gMCA/IHRpdGxlIDogdGhpcy5jYXNlTmFtZU1pc3Npbmc7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZShjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlRmllbGRzLnNvbWUoXG4gICAgICBjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSAmJiBjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gdGhpcy51cGRhdGVNb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKGNhc2VGbGFnU3RhdGU6IENhc2VGbGFnU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OIGFuZCBhIGZsYWcgbG9jYXRpb24gKGEgRmxhZ3MgaW5zdGFuY2UpIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgIC8vIHNldCB0aGUgcGFyZW50IENhc2UgRmxhZyBGb3JtR3JvdXAgZm9yIHRoaXMgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgdXNpbmcgdGhlIHByb3ZpZGVkIHBhdGhUb0ZsYWdzRm9ybUdyb3VwLCBhbmRcbiAgICAvLyBzZXQgdGhlIHNlbGVjdGVkIGZsYWcgbG9jYXRpb24gb24gdGhpcyBjb21wb25lbnRcbiAgICBpZiAoY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19MT0NBVElPTlxuICAgICAgJiYgY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWdzTG9jYXRpb25cbiAgICAgICYmIGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uLnBhdGhUb0ZsYWdzRm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLnNldENhc2VGbGFnUGFyZW50Rm9ybUdyb3VwKGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uLnBhdGhUb0ZsYWdzRm9ybUdyb3VwKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uID0gY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWdzTG9jYXRpb247XG4gICAgfVxuICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEUsIGNhY2hlIHRoZSBmbGFnIG5hbWUsIHBhdGgsIGhlYXJpbmcgcmVsZXZhbnQgaW5kaWNhdG9yLCBjb2RlLFxuICAgIC8vIGFuZCBcImxpc3Qgb2YgdmFsdWVzXCIgKGN1cnJlbnRseSBhcHBsaWNhYmxlIHRvIGxhbmd1YWdlIGZsYWcgdHlwZXMpXG4gICAgaWYgKGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSkge1xuICAgICAgdGhpcy5mbGFnTmFtZSA9IGNhc2VGbGFnU3RhdGUuZmxhZ05hbWU7XG4gICAgICB0aGlzLmZsYWdQYXRoID0gY2FzZUZsYWdTdGF0ZS5mbGFnUGF0aDtcbiAgICAgIHRoaXMuaGVhcmluZ1JlbGV2YW50RmxhZyA9IGNhc2VGbGFnU3RhdGUuaGVhcmluZ1JlbGV2YW50RmxhZztcbiAgICAgIHRoaXMuZmxhZ0NvZGUgPSBjYXNlRmxhZ1N0YXRlLmZsYWdDb2RlO1xuICAgICAgdGhpcy5saXN0T2ZWYWx1ZXMgPSBjYXNlRmxhZ1N0YXRlLmxpc3RPZlZhbHVlcztcbiAgICB9XG4gICAgLy8gSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1MgYW5kIGEgZmxhZyBoYXMgYmVlbiBzZWxlY3RlZCwgc2V0IHRoZSBwYXJlbnRcbiAgICAvLyBDYXNlIEZsYWcgRm9ybUdyb3VwIGZvciB0aGlzIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHVzaW5nIHRoZSBwcm92aWRlZCBwYXRoVG9GbGFnc0Zvcm1Hcm91cFxuICAgIGlmIChjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTXG4gICAgICAmJiBjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZ1xuICAgICAgJiYgY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWcucGF0aFRvRmxhZ3NGb3JtR3JvdXApIHtcbiAgICAgIHRoaXMuc2V0Q2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAoY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWcucGF0aFRvRmxhZ3NGb3JtR3JvdXApO1xuICAgIH1cblxuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IGNhc2VGbGFnU3RhdGUuZXJyb3JNZXNzYWdlcztcbiAgICB0aGlzLnNlbGVjdGVkRmxhZyA9IGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnO1xuICAgIC8vIFZhbGlkYXRpb24gc3VjY2VlZGVkOyBwcm9jZWVkIHRvIG5leHQgc3RhdGUgb3IgZmluYWwgcmV2aWV3IHN0YWdlIChcIkNoZWNrIHlvdXIgYW5zd2Vyc1wiKVxuICAgIGlmICh0aGlzLmVycm9yTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUyBvciBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEUsIG1vdmUgdG8gZmluYWxcbiAgICAgIC8vIHJldmlldyBzdGFnZVxuICAgICAgaWYgKGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFMgfHxcbiAgICAgICAgICBjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURSkge1xuICAgICAgICB0aGlzLm1vdmVUb0ZpbmFsUmV2aWV3U3RhZ2UoKTtcbiAgICAgICAgLy8gRG9uJ3QgbW92ZSB0byBuZXh0IHN0YXRlIGlmIGN1cnJlbnQgc3RhdGUgaXMgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSBhbmQgdGhlIGZsYWcgdHlwZSBpcyBhIHBhcmVudCAtIHRoaXNcbiAgICAgICAgLy8gbWVhbnMgdGhlIHVzZXIgbmVlZHMgdG8gc2VsZWN0IGZyb20gdGhlIG5leHQgc2V0IG9mIGZsYWcgdHlwZXMgYmVmb3JlIHRoZXkgY2FuIG1vdmUgb25cbiAgICAgIH0gZWxzZSBpZiAoIWNhc2VGbGFnU3RhdGUuaXNQYXJlbnRGbGFnVHlwZSkge1xuICAgICAgICAvLyBQcm9jZWVkIHRvIG5leHQgc3RhdGVcbiAgICAgICAgdGhpcy5wcm9jZWVkVG9OZXh0U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJvY2VlZFRvTmV4dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0F0RmluYWxTdGF0ZSgpKSB7XG4gICAgICAvLyBTa2lwIHRoZSBcImxhbmd1YWdlIGludGVycHJldGVyXCIgc3RhdGUgaWYgY3VycmVudCBzdGF0ZSBpcyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFIGFuZCB0aGUgZmxhZyB0eXBlIGRvZXNuJ3RcbiAgICAgIC8vIGhhdmUgYSBcImxpc3Qgb2YgdmFsdWVzXCIgLSBjdXJyZW50bHksIHRoaXMgaXMgcHJlc2VudCBvbmx5IGZvciB0aG9zZSBmbGFnIHR5cGVzIHRoYXQgcmVxdWlyZSBsYW5ndWFnZSBpbnRlcnByZXRlclxuICAgICAgLy8gc2VsZWN0aW9uXG4gICAgICBpZiAodGhpcy5maWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFICYmICF0aGlzLmxpc3RPZlZhbHVlcykge1xuICAgICAgICB0aGlzLmZpZWxkU3RhdGUgPSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmllbGRTdGF0ZSsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRGbGFnc0Nhc2VGaWVsZFZhbHVlKCk6IHZvaWQge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogc3dpdGNoLWRlZmF1bHRcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRTdGF0ZSkge1xuICAgICAgY2FzZSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUzpcbiAgICAgICAgdGhpcy5hZGRGbGFnVG9Db2xsZWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEU6XG4gICAgICAgIHRoaXMudXBkYXRlRmxhZ0luQ29sbGVjdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkRmxhZ1RvQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgbm8gbW9yZSB0aGFuIG9uZSBuZXcgZmxhZyBpcyBiZWluZyBhZGRlZCBhdCBhIHRpbWUsIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGVhY2ggRmxhZ3MgY2FzZSBmaWVsZCBhbmQgcmVtb3ZpbmdcbiAgICAvLyBhbnkgcHJldmlvdXMgZW50cnkgZnJvbSB0aGUgZGV0YWlscyBhcnJheSB3aGVyZSB0aGF0IGVudHJ5IGhhcyBubyBpZCAoaGVuY2UgaXQgaXMgbmV3IC0gYW5kIHRoZXJlIHNob3VsZCBiZSBvbmx5XG4gICAgLy8gb25lIHN1Y2ggZW50cnkpLiAoVGhpcyBzY2VuYXJpbyBvY2N1cnMgaWYgdGhlIHVzZXIgcmVwZWF0cyB0aGUgQ2FzZSBGbGFnIGNyZWF0aW9uIGpvdXJuZXkgYnkgdXNpbmcgdGhlIFwiQ2hhbmdlXCJcbiAgICAvLyBsaW5rIGFuZCBzZWxlY3RzIGVpdGhlciB0aGUgc2FtZSBmbGFnIGxvY2F0aW9uIGFzIGJlZm9yZSBvciBhIGRpZmZlcmVudCBvbmUuKVxuICAgIHRoaXMuZmxhZ3NEYXRhLmZvckVhY2goaW5zdGFuY2UgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmb3IgZWFjaCBGbGFncyBjYXNlIGZpZWxkIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAgIC8vIENhc2VGaWVsZCB2YWx1ZSB0byByZW1vdmUgdGhlIG5ldyB2YWx1ZSBmcm9tXG4gICAgICBsZXQgdmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQudmFsdWU7XG4gICAgICBjb25zdCBwYXRoVG9WYWx1ZSA9IGluc3RhbmNlLnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgICAgLy8gUm9vdC1sZXZlbCBGbGFncyBDYXNlRmllbGRzIGRvbid0IGhhdmUgYSBkb3QtZGVsaW1pdGVkIHBhdGggLSBqdXN0IHRoZSBDYXNlRmllbGQgSUQgaXRzZWxmIC0gc28gZG9uJ3QgZHJpbGwgZG93blxuICAgICAgaWYgKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICAgIHBhdGhUb1ZhbHVlLnNsaWNlKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSArIDEpLnNwbGl0KCcuJykuZm9yRWFjaChwYXJ0ID0+IHZhbHVlID0gdmFsdWVbcGFydF0pO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmRldGFpbHMgJiYgdmFsdWUuZGV0YWlscy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGluZGV4T2ZOZXdGbGFnRGV0YWlsID0gdmFsdWUuZGV0YWlscy5maW5kSW5kZXgoZWxlbWVudCA9PiAhZWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnaWQnKSk7XG4gICAgICAgIGlmIChpbmRleE9mTmV3RmxhZ0RldGFpbCA+IC0xKSB7XG4gICAgICAgICAgdmFsdWUuZGV0YWlscy5zcGxpY2UoaW5kZXhPZk5ld0ZsYWdEZXRhaWwsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWU7XG4gICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmcm9tIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAvLyBDYXNlRmllbGQgdmFsdWUgdG8gYXBwbHkgY2hhbmdlcyB0b1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgaWYgKHBhdGguaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgIHBhdGguc2xpY2UocGF0aC5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gZmxhZ3NDYXNlRmllbGRWYWx1ZVtwYXJ0XSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBDYXNlRmllbGQgZm9yIHRoZSBzZWxlY3RlZCBmbGFncyBsb2NhdGlvbiBoYXMgbm8gdmFsdWUsIHNldCBpdCB0byBhbiBlbXB0eSBvYmplY3Qgc28gaXQgY2FuIGJlIHBvcHVsYXRlZFxuICAgIC8vIHdpdGggZmxhZyBkZXRhaWxzXG4gICAgaWYgKCFmbGFnc0Nhc2VGaWVsZFZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWUgPSB7fTtcbiAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWU7XG4gICAgfVxuICAgIC8vIENyZWF0ZSBhIGRldGFpbHMgYXJyYXkgaWYgb25lIGRvZXMgbm90IGV4aXN0XG4gICAgaWYgKCFmbGFnc0Nhc2VGaWVsZFZhbHVlLmhhc093blByb3BlcnR5KCdkZXRhaWxzJykpIHtcbiAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUuZGV0YWlscyA9IFtdO1xuICAgIH1cbiAgICAvLyBQb3B1bGF0ZSBuZXcgRmxhZ0RldGFpbCBpbnN0YW5jZSBhbmQgYWRkIHRvIHRoZSBGbGFncyBkYXRhIHdpdGhpbiB0aGUgQ2FzZUZpZWxkIGluc3RhbmNlIG9mIHRoZSBzZWxlY3RlZCBmbGFnXG4gICAgLy8gbG9jYXRpb25cbiAgICBmbGFnc0Nhc2VGaWVsZFZhbHVlLmRldGFpbHMucHVzaCh7dmFsdWU6IHRoaXMucG9wdWxhdGVOZXdGbGFnRGV0YWlsSW5zdGFuY2UoKX0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZsYWdJbkNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgLy8gRW5zdXJlIG5vIG1vcmUgdGhhbiBvbmUgZmxhZyBpcyBiZWluZyB1cGRhdGVkIGF0IGEgdGltZSwgYnkgaXRlcmF0aW5nIHRocm91Z2ggZWFjaCBGbGFncyBjYXNlIGZpZWxkIGFuZCByZXNldHRpbmdcbiAgICAvLyB0aGUgY29tbWVudHMsIHN0YXR1cywgYW5kIGRhdGUvdGltZSBtb2RpZmllZCAoaWYgcHJlc2VudCkgZm9yIGVhY2ggZW50cnkgaW4gdGhlIGRldGFpbHMgYXJyYXksIHdpdGggb3JpZ2luYWwgdmFsdWVzXG4gICAgLy8gZnJvbSB0aGUgY29ycmVzcG9uZGluZyBmb3JtYXR0ZWRfdmFsdWUgcHJvcGVydHkuIChUaGlzIHNjZW5hcmlvIG9jY3VycyBpZiB0aGUgdXNlciByZXBlYXRzIHRoZSBNYW5hZ2UgQ2FzZSBGbGFnXG4gICAgLy8gam91cm5leSBieSB1c2luZyB0aGUgXCJDaGFuZ2VcIiBsaW5rIGFuZCBzZWxlY3RzIGEgZGlmZmVyZW50IGZsYWcgdG8gdXBkYXRlLilcbiAgICB0aGlzLmZsYWdzRGF0YS5mb3JFYWNoKGluc3RhbmNlID0+IHtcbiAgICAgIC8vIFVzZSB0aGUgcGF0aFRvRmxhZ3NGb3JtR3JvdXAgcHJvcGVydHkgZm9yIGVhY2ggRmxhZ3MgY2FzZSBmaWVsZCB0byBkcmlsbCBkb3duIHRvIHRoZSBjb3JyZWN0IHBhcnQgb2YgdGhlXG4gICAgICAvLyBDYXNlRmllbGQgdmFsdWUgZm9yIHdoaWNoIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIHZhbHVlc1xuICAgICAgbGV0IHZhbHVlID0gaW5zdGFuY2UuY2FzZUZpZWxkLnZhbHVlO1xuICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gaW5zdGFuY2UuY2FzZUZpZWxkLmZvcm1hdHRlZF92YWx1ZTtcbiAgICAgIGNvbnN0IHBhdGhUb1ZhbHVlID0gaW5zdGFuY2UucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgICBpZiAocGF0aFRvVmFsdWUuaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgICAgcGF0aFRvVmFsdWUuc2xpY2UocGF0aFRvVmFsdWUuaW5kZXhPZignLicpICsgMSkuc3BsaXQoJy4nKS5mb3JFYWNoKHBhcnQgPT4ge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWVbcGFydF07XG4gICAgICAgICAgaWYgKGZvcm1hdHRlZFZhbHVlICYmIEZpZWxkc1V0aWxzLmlzTm9uRW1wdHlPYmplY3QoZm9ybWF0dGVkVmFsdWUpKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlW3BhcnRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUuZGV0YWlscyAmJiB2YWx1ZS5kZXRhaWxzLmxlbmd0aCA+IDAgJiYgZm9ybWF0dGVkVmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChmb3JtYXR0ZWRWYWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZGV0YWlscy5mb3JFYWNoKGZsYWdEZXRhaWwgPT4ge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRmxhZ0RldGFpbCA9IGZvcm1hdHRlZFZhbHVlLmRldGFpbHMuZmluZChkZXRhaWwgPT4gZGV0YWlsLmlkID09PSBmbGFnRGV0YWlsLmlkKTtcbiAgICAgICAgICBpZiAob3JpZ2luYWxGbGFnRGV0YWlsKSB7XG4gICAgICAgICAgICBmbGFnRGV0YWlsLnZhbHVlLmZsYWdDb21tZW50ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlLmZsYWdDb21tZW50XG4gICAgICAgICAgICAgID8gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlLmZsYWdDb21tZW50XG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuc3RhdHVzID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlLnN0YXR1cztcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuZGF0ZVRpbWVNb2RpZmllZCA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZS5kYXRlVGltZU1vZGlmaWVkXG4gICAgICAgICAgICAgID8gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlLmRhdGVUaW1lTW9kaWZpZWRcbiAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZy5jYXNlRmllbGQudmFsdWU7XG4gICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmcm9tIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAvLyBDYXNlRmllbGQgdmFsdWUgdG8gYXBwbHkgY2hhbmdlcyB0b1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnNlbGVjdGVkRmxhZy5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgaWYgKHBhdGguaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgIHBhdGguc2xpY2UocGF0aC5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gZmxhZ3NDYXNlRmllbGRWYWx1ZVtwYXJ0XSk7XG4gICAgfVxuICAgIGlmIChmbGFnc0Nhc2VGaWVsZFZhbHVlKSB7XG4gICAgICBjb25zdCBmbGFnRGV0YWlsVG9VcGRhdGUgPSBmbGFnc0Nhc2VGaWVsZFZhbHVlLmRldGFpbHMuZmluZChcbiAgICAgICAgZGV0YWlsID0+IGRldGFpbC5pZCA9PT0gdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbC5pZCk7XG4gICAgICBpZiAoZmxhZ0RldGFpbFRvVXBkYXRlKSB7XG4gICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5mbGFnQ29tbWVudCA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUuZmxhZ0NvbW1lbnRzXG4gICAgICAgICAgPyB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLmZsYWdDb21tZW50c1xuICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLnN0YXR1cyA9IHRoaXMuc2VsZWN0ZWRGbGFnLmZsYWdEZXRhaWxEaXNwbGF5LmZsYWdEZXRhaWwuc3RhdHVzO1xuICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUuZGF0ZVRpbWVNb2RpZmllZCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNBdEZpbmFsU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZVxuICAgICAgPyB0aGlzLmZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURVxuICAgICAgOiB0aGlzLmZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9FcnJvckVsZW1lbnQoZWxlbWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZWxlbWVudElkKSB7XG4gICAgICBjb25zdCBodG1sRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7XG4gICAgICBpZiAoaHRtbEVsZW1lbnQpIHtcbiAgICAgICAgaHRtbEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgaHRtbEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZWQoXzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mbGFnQ29tbWVudHNPcHRpb25hbCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBwYXJlbnQge0BsaW5rIEZvcm1Hcm91cH0gZm9yIHRoaXMgY29tcG9uZW50J3MgY2hpbGRyZW4sIGRlcGVuZGluZyBvbiB0aGUgYEZsYWdzYCB7QGxpbmsgQ2FzZUZpZWxkfSBpbnN0YW5jZVxuICAgKiB0byB3aGljaCBkYXRhIHNob3VsZCBiZSBhdHRhY2hlZC4gKipOb3RlOioqIFRoZSBwYXJlbnQgaXMgbm90IF90aGlzXyBjb21wb25lbnQncyBgRm9ybUdyb3VwYCAoYXMgbWlnaHQgb3RoZXJ3aXNlIGJlXG4gICAqIGV4cGVjdGVkKSBiZWNhdXNlIHRoaXMgY29tcG9uZW50IGlzIG5vdCBleHBlY3RlZCB0byBoYXZlIGEgdmFsdWUsIGdpdmVuIGl0IGlzIHVzZWQgZm9yIHRoZSBlbXB0eSBgRmxhZ0xhdW5jaGVyYCBiYXNlXG4gICAqIGZpZWxkIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBUaGUgZG90LWRlbGltaXRlZCBzdHJpbmcgdGhhdCBpcyB0aGUgcGF0aCB0byB0aGUgYEZvcm1Hcm91cGAgZm9yIGEgYEZsYWdzYCBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHNldENhc2VGbGFnUGFyZW50Rm9ybUdyb3VwKHBhdGhUb0ZsYWdzRm9ybUdyb3VwOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXAucGFyZW50LmdldChwYXRoVG9GbGFnc0Zvcm1Hcm91cCkgYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgcHVibGljIHBvcHVsYXRlTmV3RmxhZ0RldGFpbEluc3RhbmNlKCk6IEZsYWdEZXRhaWwge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLmZsYWdOYW1lLFxuICAgICAgLy8gQ3VycmVudGx5LCBzdWJUeXBlVmFsdWUgYW5kIHN1YlR5cGVLZXkgYXJlIGFwcGxpY2FibGUgb25seSB0byBsYW5ndWFnZSBmbGFnIHR5cGVzXG4gICAgICBzdWJUeXBlVmFsdWU6IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUubGFuZ3VhZ2VTZWFyY2hUZXJtXG4gICAgICAgID8gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZS5sYW5ndWFnZVNlYXJjaFRlcm0udmFsdWVcbiAgICAgICAgOiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLm1hbnVhbExhbmd1YWdlRW50cnlcbiAgICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUubWFudWFsTGFuZ3VhZ2VFbnRyeVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIC8vIEZvciB1c2VyLWVudGVyZWQgKGkuZS4gbm9uLVJlZmVyZW5jZSBEYXRhKSBsYW5ndWFnZXMsIHRoZXJlIGlzIG5vIGtleVxuICAgICAgc3ViVHlwZUtleTogdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZS5sYW5ndWFnZVNlYXJjaFRlcm1cbiAgICAgICAgPyB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLmxhbmd1YWdlU2VhcmNoVGVybS5rZXlcbiAgICAgICAgOiBudWxsLFxuICAgICAgb3RoZXJEZXNjcmlwdGlvbjogdGhpcy5mbGFnQ29kZSA9PT0gdGhpcy5vdGhlckZsYWdUeXBlQ29kZSAmJiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLm90aGVyRmxhZ1R5cGVEZXNjcmlwdGlvblxuICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUub3RoZXJGbGFnVHlwZURlc2NyaXB0aW9uXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGZsYWdDb21tZW50OiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLmZsYWdDb21tZW50cyA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUuZmxhZ0NvbW1lbnRzIDogbnVsbCxcbiAgICAgIGRhdGVUaW1lQ3JlYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgcGF0aDogdGhpcy5mbGFnUGF0aCxcbiAgICAgIGhlYXJpbmdSZWxldmFudDogdGhpcy5oZWFyaW5nUmVsZXZhbnRGbGFnID8gJ1llcycgOiAnTm8nLFxuICAgICAgZmxhZ0NvZGU6IHRoaXMuZmxhZ0NvZGUsXG4gICAgICBzdGF0dXM6IENhc2VGbGFnU3RhdHVzLkFDVElWRVxuICAgIH0gYXMgRmxhZ0RldGFpbDtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlVG9GaW5hbFJldmlld1N0YWdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RmxhZ3NDYXNlRmllbGRWYWx1ZSgpO1xuICAgIC8vIENsZWFyIHRoZSBcIm5vdEFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkXCIgZXJyb3JcbiAgICB0aGlzLmFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldFRyaWdnZXJTdWJtaXRFdmVudCh0cnVlKTtcbiAgfVxufVxuIiwiPCEtLSBFcnJvciBtZXNzYWdlIHN1bW1hcnkgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiIHJvbGU9XCJhbGVydFwiIHRhYmluZGV4PVwiLTFcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWVycm9yLXN1bW1hcnlcIj5cbiAgPGgyIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fdGl0bGVcIiBpZD1cImVycm9yLXN1bW1hcnktdGl0bGVcIj5cbiAgICBUaGVyZSBpcyBhIHByb2JsZW1cbiAgPC9oMj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGVycm9yTWVzc2FnZXNcIiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIj5cbiAgICA8dWwgY2xhc3M9XCJnb3Z1ay1saXN0IGdvdnVrLWVycm9yLXN1bW1hcnlfX2xpc3RcIj5cbiAgICAgIDxsaT5cbiAgICAgICAgPGEgKGNsaWNrKT1cIm5hdmlnYXRlVG9FcnJvckVsZW1lbnQoZXJyb3JNZXNzYWdlLmZpZWxkSWQpXCIgY2xhc3M9XCJ2YWxpZGF0aW9uLWVycm9yXCI+e3tlcnJvck1lc3NhZ2UuZGVzY3JpcHRpb259fTwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZVwiIGNsYXNzPVwiZm9ybS1ncm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nU3dpdGNoXT1cImZpZWxkU3RhdGVcIj5cbiAgICA8ZGl2IGlkPVwiY3JlYXRlLWZsYWctY2FwdGlvblwiIGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwfVwiPlxuICAgICAge3tjcmVhdGVGbGFnQ2FwdGlvbn19XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTE9DQVRJT05cIj5cbiAgICAgIDxjY2Qtc2VsZWN0LWZsYWctbG9jYXRpb24gW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtmbGFnc0RhdGFdPVwiZmxhZ3NEYXRhXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLXNlbGVjdC1mbGFnLWxvY2F0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEVcIj5cbiAgICAgIDxjY2Qtc2VsZWN0LWZsYWctdHlwZSBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW2p1cmlzZGljdGlvbl09XCJqdXJpc2RpY3Rpb25cIiBbY2FzZVR5cGVJZF09XCJjYXNlVHlwZUlkXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiXG4gICAgICAgIChmbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZXIpPVwib25GbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLXNlbGVjdC1mbGFnLXR5cGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTEFOR1VBR0VfSU5URVJQUkVURVJcIj5cbiAgICAgIDxjY2Qtc2VhcmNoLWxhbmd1YWdlLWludGVycHJldGVyIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbbGFuZ3VhZ2VzXT1cImxpc3RPZlZhbHVlc1wiIFtmbGFnQ29kZV09XCJmbGFnQ29kZVwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC1zZWFyY2gtbGFuZ3VhZ2UtaW50ZXJwcmV0ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFNcIj5cbiAgICAgIDxjY2QtYWRkLWNvbW1lbnRzIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbb3B0aW9uYWxdPVwiZmxhZ0NvbW1lbnRzT3B0aW9uYWxcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtYWRkLWNvbW1lbnRzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGVcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ1N3aXRjaF09XCJmaWVsZFN0YXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1NcIj5cbiAgICAgIDxjY2QtbWFuYWdlLWNhc2UtZmxhZ3MgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtmbGFnc0RhdGFdPVwiZmxhZ3NEYXRhXCIgW2Nhc2VUaXRsZV09XCJjYXNlVGl0bGVcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtbWFuYWdlLWNhc2UtZmxhZ3M+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFXCI+XG4gICAgICA8Y2NkLXVwZGF0ZS1mbGFnIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbc2VsZWN0ZWRGbGFnXT1cInNlbGVjdGVkRmxhZ1wiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC11cGRhdGUtZmxhZz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
480
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2Nhc2UtZmxhZy93cml0ZS1jYXNlLWZsYWctZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL3dyaXRlLWNhc2UtZmxhZy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUU3RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7Ozs7OztJQ0h6RSw4QkFBa0Y7SUFDaEYsNkJBQWlEO0lBQy9DLDBCQUFJO0lBQ0YsNEJBQW1GO0lBQWhGLDJRQUFzRDtJQUEwQixZQUE0QjtJQUFBLGlCQUFJO0lBQ3JILGlCQUFLO0lBQ1AsaUJBQUs7SUFDUCxpQkFBTTs7O0lBSG1GLGVBQTRCO0lBQTVCLGlEQUE0Qjs7O0lBUHZILDhCQUFxSztJQUNuSyw2QkFBZ0U7SUFDOUQsb0NBQ0Y7SUFBQSxp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OztRQWhEQSxtREFBOEI7UUFZOUIsZUFBc0M7UUFBdEMsMkRBQXNDO1FBeUJ0QyxlQUFxQztRQUFyQywwREFBcUM7O3VGRHZCOUIsMkJBQTJCO2NBTHZDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsMkJBQTJCO2dCQUNyQyxXQUFXLEVBQUUsd0NBQXdDO2dCQUNyRCxTQUFTLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQzthQUN0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBDYXNlRWRpdERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9jYXNlLWVkaXQtZGF0YS9jYXNlLWVkaXQtZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENhc2VGaWVsZCwgRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmllbGRzJztcbmltcG9ydCB7IEFic3RyYWN0RmllbGRXcml0ZUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtZmllbGQvYWJzdHJhY3QtZmllbGQtd3JpdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhc2VGbGFnU3RhdGUsIEZsYWdEZXRhaWwsIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGgsIEZsYWdQYXRoLCBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoIH0gZnJvbSAnLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZUZsYWdGaWVsZFN0YXRlLCBDYXNlRmxhZ1N0YXR1cywgQ2FzZUZsYWdUZXh0IH0gZnJvbSAnLi9lbnVtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC13cml0ZS1jYXNlLWZsYWctZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd3JpdGUtY2FzZS1mbGFnLWZpZWxkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgV3JpdGVDYXNlRmxhZ0ZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBmaWVsZFN0YXRlOiBudW1iZXI7XG4gIHB1YmxpYyBjYXNlRmxhZ0ZpZWxkU3RhdGUgPSBDYXNlRmxhZ0ZpZWxkU3RhdGU7XG4gIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBFcnJvck1lc3NhZ2VbXSA9IFtdO1xuICBwdWJsaWMgY3JlYXRlRmxhZ0NhcHRpb246IENhc2VGbGFnVGV4dDtcbiAgcHVibGljIGZsYWdzRGF0YTogRmxhZ3NXaXRoRm9ybUdyb3VwUGF0aFtdO1xuICBwdWJsaWMgc2VsZWN0ZWRGbGFnOiBGbGFnRGV0YWlsRGlzcGxheVdpdGhGb3JtR3JvdXBQYXRoO1xuICBwdWJsaWMgc2VsZWN0ZWRGbGFnc0xvY2F0aW9uOiBGbGFnc1dpdGhGb3JtR3JvdXBQYXRoO1xuICBwdWJsaWMgY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgcHVibGljIGZsYWdDb21tZW50c09wdGlvbmFsID0gZmFsc2U7XG4gIHB1YmxpYyBqdXJpc2RpY3Rpb246IHN0cmluZztcbiAgcHVibGljIGNhc2VUeXBlSWQ6IHN0cmluZztcbiAgcHVibGljIGhtY3RzU2VydmljZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBmbGFnTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZmxhZ1BhdGg6IEZsYWdQYXRoW107XG4gIHB1YmxpYyBoZWFyaW5nUmVsZXZhbnRGbGFnOiBib29sZWFuO1xuICBwdWJsaWMgZmxhZ0NvZGU6IHN0cmluZztcbiAgcHVibGljIGxpc3RPZlZhbHVlczoge2tleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nfVtdID0gbnVsbDtcbiAgcHVibGljIGlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGU6IGJvb2xlYW47XG4gIHB1YmxpYyBjYXNlVGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBhbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHVwZGF0ZU1vZGUgPSAnI0FSR1VNRU5UKFVQREFURSknO1xuICAvLyBDb2RlIGZvciBcIk90aGVyXCIgZmxhZyB0eXBlIGFzIGRlZmluZWQgaW4gUmVmZXJlbmNlIERhdGFcbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckZsYWdUeXBlQ29kZSA9ICdPVDAwMDEnO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FzZU5hbWVNaXNzaW5nID0gJ0Nhc2UgbmFtZSBtaXNzaW5nJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VFZGl0RGF0YVNlcnZpY2U6IENhc2VFZGl0RGF0YVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuICAgIC8vIENoZWNrIGZvciBleGlzdGluZyBGbGFnTGF1bmNoZXIgY29udHJvbCBpbiBwYXJlbnQgYW5kIHJlbW92ZSBpdCAtIHRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIGVuc3VyZSBpdHMgaW52YWxpZGl0eVxuICAgIC8vIGlzIHNldCBjb3JyZWN0bHkgYXQgdGhlIHN0YXJ0LCB3aGVuIHRoZSBjb21wb25lbnQgaXMgcmVsb2FkZWQgYW5kIHRoZSBjb250cm9sIGlzIHJlLXJlZ2lzdGVyZWQuIE90aGVyd2lzZSwgdGhlXG4gICAgLy8gdmFsaWRhdG9yIHN0YXRlIGdldHMgY2FycmllZCBvdmVyXG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwICYmIHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLmNhc2VGaWVsZC5pZCkpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2wodGhpcy5jYXNlRmllbGQuaWQpO1xuICAgIH1cbiAgICAvLyBGcm9tIHRoaXMgcG9pbnQsIHRoaXMuZm9ybUdyb3VwIHJlZmVycyB0byB0aGUgRm9ybUdyb3VwIGZvciB0aGUgRmxhZ0xhdW5jaGVyIGZpZWxkLCBub3QgdGhlIHBhcmVudCBGb3JtR3JvdXBcbiAgICB0aGlzLmZvcm1Hcm91cCA9IHRoaXMucmVnaXN0ZXJDb250cm9sKG5ldyBGb3JtR3JvdXAoe30sIHtcbiAgICAgIHZhbGlkYXRvcnM6IChfOiBBYnN0cmFjdENvbnRyb2wpOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0gfCBudWxsID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIGFuIGVycm9yIHRvIG1hcmsgdGhlIEZvcm1Hcm91cCBhcyBpbnZhbGlkIGlmIG5vdCBhbGwgQ2FzZSBGbGFnIHN0YWdlcyBoYXZlIGJlZW4gY29tcGxldGVkXG4gICAgICAgICAgcmV0dXJuIHtub3RBbGxDYXNlRmxhZ1N0YWdlc0NvbXBsZXRlZDogdHJ1ZX07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfSksIHRydWUpIGFzIEZvcm1Hcm91cDtcblxuICAgIHRoaXMuY3JlYXRlRmxhZ0NhcHRpb24gPSBDYXNlRmxhZ1RleHQuQ0FQVElPTjtcbiAgICAvLyBHZXQgdGhlIGNhc2UgdHlwZSBJRCBmcm9tIHRoZSBDYXNlVmlldyBvYmplY3QgaW4gdGhlIHNuYXBzaG90IGRhdGEgKHJlcXVpcmVkIGZvciByZXRyaWV2aW5nIHRoZSBhdmFpbGFibGUgZmxhZ1xuICAgIC8vIHR5cGVzIGZvciBhIGNhc2UpXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlICYmIHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5jYXNlLmNhc2VfdHlwZSkge1xuICAgICAgdGhpcy5jYXNlVHlwZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlLmlkO1xuICAgICAgLy8gR2V0IHRoZSBqdXJpc2RpY3Rpb24gKHJlcXVpcmVkIGZvciByZXRyaWV2aW5nIHRoZSBhdmFpbGFibGUgZmxhZyB0eXBlcyBpZiB1bmFibGUgdG8gZGV0ZXJtaW5lIHVzaW5nIGNhc2UgdHlwZSBJRClcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGEuY2FzZS5jYXNlX3R5cGUuanVyaXNkaWN0aW9uKSB7XG4gICAgICAgIHRoaXMuanVyaXNkaWN0aW9uID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmNhc2UuY2FzZV90eXBlLmp1cmlzZGljdGlvbi5pZDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gRXh0cmFjdCBhbGwgZmxhZ3MtcmVsYXRlZCBkYXRhIGZyb20gdGhlIENhc2VFdmVudFRyaWdnZXIgb2JqZWN0IGluIHRoZSBzbmFwc2hvdCBkYXRhXG4gICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIpIHtcbiAgICAgIC8vIEdldCB0aGUgSE1DVFNTZXJ2aWNlSWQgZnJvbSBzdXBwbGVtZW50YXJ5IGRhdGEsIGlmIGl0IGV4aXN0cyAocmVxdWlyZWQgZm9yIHJldHJpZXZpbmcgdGhlIGF2YWlsYWJsZSBmbGFnIHR5cGVzIGluXG4gICAgICAvLyB0aGUgZmlyc3QgaW5zdGFuY2UsIG9ubHkgZmFsbGluZyBiYWNrIG9uIGNhc2UgdHlwZSBJRCBvciBqdXJpc2lkaWN0aW9uIGlmIGl0J3Mgbm90IHByZXNlbnQpXG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5zdXBwbGVtZW50YXJ5X2RhdGFcbiAgICAgICAgJiYgdGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5zdXBwbGVtZW50YXJ5X2RhdGEuSE1DVFNTZXJ2aWNlSWQpIHtcbiAgICAgICAgdGhpcy5obWN0c1NlcnZpY2VJZCA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YS5ldmVudFRyaWdnZXIuc3VwcGxlbWVudGFyeV9kYXRhLkhNQ1RTU2VydmljZUlkO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykge1xuICAgICAgICB0aGlzLmZsYWdzRGF0YSA9ICgodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykgYXMgQ2FzZUZpZWxkW10pXG4gICAgICAgIC5yZWR1Y2UoKGZsYWdzLCBjYXNlRmllbGQpID0+IHtcbiAgICAgICAgICByZXR1cm4gRmllbGRzVXRpbHMuZXh0cmFjdEZsYWdzRGF0YUZyb21DYXNlRmllbGQoZmxhZ3MsIGNhc2VGaWVsZCwgY2FzZUZpZWxkLmlkLCBjYXNlRmllbGQpO1xuICAgICAgICB9LCBbXSk7XG5cbiAgICAgICAgLy8gU2V0IGJvb2xlYW4gaW5kaWNhdGluZyB0aGUgZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciBpcyBcInVwZGF0ZVwiXG4gICAgICAgIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZSA9XG4gICAgICAgICAgdGhpcy5zZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZSgodGhpcy5yb3V0ZS5zbmFwc2hvdC5kYXRhLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcykgYXMgQ2FzZUZpZWxkW10pO1xuXG4gICAgICAgIC8vIFNldCBzdGFydGluZyBmaWVsZCBzdGF0ZVxuICAgICAgICB0aGlzLmZpZWxkU3RhdGUgPSB0aGlzLmlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGUgPyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19NQU5BR0VfQ0FTRV9GTEFHUyA6IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OO1xuICAgICAgICAvLyBHZXQgY2FzZSB0aXRsZSwgdG8gYmUgdXNlZCBieSBjaGlsZCBjb21wb25lbnRzXG4gICAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jYXNlVGl0bGUkLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogdGl0bGUgPT4ge1xuICAgICAgICAgICAgdGhpcy5jYXNlVGl0bGUgPSB0aXRsZS5sZW5ndGggPiAwID8gdGl0bGUgOiB0aGlzLmNhc2VOYW1lTWlzc2luZztcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXREaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZShjYXNlRmllbGRzOiBDYXNlRmllbGRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjYXNlRmllbGRzLnNvbWUoXG4gICAgICBjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNGbGFnTGF1bmNoZXJDYXNlRmllbGQoY2FzZUZpZWxkKSAmJiBjYXNlRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gdGhpcy51cGRhdGVNb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKGNhc2VGbGFnU3RhdGU6IENhc2VGbGFnU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2xlYXJGb3JtVmFsaWRhdGlvbkVycm9ycygpO1xuICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0xPQ0FUSU9OIGFuZCBhIGZsYWcgbG9jYXRpb24gKGEgRmxhZ3MgaW5zdGFuY2UpIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgIC8vIHNldCB0aGUgcGFyZW50IENhc2UgRmxhZyBGb3JtR3JvdXAgZm9yIHRoaXMgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgdXNpbmcgdGhlIHByb3ZpZGVkIHBhdGhUb0ZsYWdzRm9ybUdyb3VwLCBhbmRcbiAgICAvLyBzZXQgdGhlIHNlbGVjdGVkIGZsYWcgbG9jYXRpb24gb24gdGhpcyBjb21wb25lbnRcbiAgICBpZiAoY2FzZUZsYWdTdGF0ZS5jdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19MT0NBVElPTlxuICAgICAgJiYgY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWdzTG9jYXRpb25cbiAgICAgICYmIGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uLnBhdGhUb0ZsYWdzRm9ybUdyb3VwKSB7XG4gICAgICB0aGlzLnNldENhc2VGbGFnUGFyZW50Rm9ybUdyb3VwKGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uLnBhdGhUb0ZsYWdzRm9ybUdyb3VwKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGbGFnc0xvY2F0aW9uID0gY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWdzTG9jYXRpb247XG4gICAgfVxuICAgIC8vIElmIHRoZSBjdXJyZW50IHN0YXRlIGlzIENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEUsIGNhY2hlIHRoZSBmbGFnIG5hbWUsIHBhdGgsIGhlYXJpbmcgcmVsZXZhbnQgaW5kaWNhdG9yLCBjb2RlLFxuICAgIC8vIGFuZCBcImxpc3Qgb2YgdmFsdWVzXCIgKGN1cnJlbnRseSBhcHBsaWNhYmxlIHRvIGxhbmd1YWdlIGZsYWcgdHlwZXMpXG4gICAgaWYgKGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSkge1xuICAgICAgdGhpcy5mbGFnTmFtZSA9IGNhc2VGbGFnU3RhdGUuZmxhZ05hbWU7XG4gICAgICB0aGlzLmZsYWdQYXRoID0gY2FzZUZsYWdTdGF0ZS5mbGFnUGF0aDtcbiAgICAgIHRoaXMuaGVhcmluZ1JlbGV2YW50RmxhZyA9IGNhc2VGbGFnU3RhdGUuaGVhcmluZ1JlbGV2YW50RmxhZztcbiAgICAgIHRoaXMuZmxhZ0NvZGUgPSBjYXNlRmxhZ1N0YXRlLmZsYWdDb2RlO1xuICAgICAgdGhpcy5saXN0T2ZWYWx1ZXMgPSBjYXNlRmxhZ1N0YXRlLmxpc3RPZlZhbHVlcztcbiAgICB9XG4gICAgLy8gSWYgdGhlIGN1cnJlbnQgc3RhdGUgaXMgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1MgYW5kIGEgZmxhZyBoYXMgYmVlbiBzZWxlY3RlZCwgc2V0IHRoZSBwYXJlbnRcbiAgICAvLyBDYXNlIEZsYWcgRm9ybUdyb3VwIGZvciB0aGlzIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHVzaW5nIHRoZSBwcm92aWRlZCBwYXRoVG9GbGFnc0Zvcm1Hcm91cFxuICAgIGlmIChjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX01BTkFHRV9DQVNFX0ZMQUdTXG4gICAgICAmJiBjYXNlRmxhZ1N0YXRlLnNlbGVjdGVkRmxhZ1xuICAgICAgJiYgY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWcucGF0aFRvRmxhZ3NGb3JtR3JvdXApIHtcbiAgICAgIHRoaXMuc2V0Q2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAoY2FzZUZsYWdTdGF0ZS5zZWxlY3RlZEZsYWcucGF0aFRvRmxhZ3NGb3JtR3JvdXApO1xuICAgIH1cblxuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IGNhc2VGbGFnU3RhdGUuZXJyb3JNZXNzYWdlcztcbiAgICB0aGlzLnNlbGVjdGVkRmxhZyA9IGNhc2VGbGFnU3RhdGUuc2VsZWN0ZWRGbGFnO1xuICAgIC8vIFZhbGlkYXRpb24gc3VjY2VlZGVkOyBwcm9jZWVkIHRvIG5leHQgc3RhdGUgb3IgZmluYWwgcmV2aWV3IHN0YWdlIChcIkNoZWNrIHlvdXIgYW5zd2Vyc1wiKVxuICAgIGlmICh0aGlzLmVycm9yTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUyBvciBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEUsIG1vdmUgdG8gZmluYWxcbiAgICAgIC8vIHJldmlldyBzdGFnZVxuICAgICAgaWYgKGNhc2VGbGFnU3RhdGUuY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZSA9PT0gQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFMgfHxcbiAgICAgICAgICBjYXNlRmxhZ1N0YXRlLmN1cnJlbnRDYXNlRmxhZ0ZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURSkge1xuICAgICAgICB0aGlzLm1vdmVUb0ZpbmFsUmV2aWV3U3RhZ2UoKTtcbiAgICAgICAgLy8gRG9uJ3QgbW92ZSB0byBuZXh0IHN0YXRlIGlmIGN1cnJlbnQgc3RhdGUgaXMgQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVFlQRSBhbmQgdGhlIGZsYWcgdHlwZSBpcyBhIHBhcmVudCAtIHRoaXNcbiAgICAgICAgLy8gbWVhbnMgdGhlIHVzZXIgbmVlZHMgdG8gc2VsZWN0IGZyb20gdGhlIG5leHQgc2V0IG9mIGZsYWcgdHlwZXMgYmVmb3JlIHRoZXkgY2FuIG1vdmUgb25cbiAgICAgIH0gZWxzZSBpZiAoIWNhc2VGbGFnU3RhdGUuaXNQYXJlbnRGbGFnVHlwZSkge1xuICAgICAgICAvLyBQcm9jZWVkIHRvIG5leHQgc3RhdGVcbiAgICAgICAgdGhpcy5wcm9jZWVkVG9OZXh0U3RhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJvY2VlZFRvTmV4dFN0YXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pc0F0RmluYWxTdGF0ZSgpKSB7XG4gICAgICAvLyBTa2lwIHRoZSBcImxhbmd1YWdlIGludGVycHJldGVyXCIgc3RhdGUgaWYgY3VycmVudCBzdGF0ZSBpcyBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFIGFuZCB0aGUgZmxhZyB0eXBlIGRvZXNuJ3RcbiAgICAgIC8vIGhhdmUgYSBcImxpc3Qgb2YgdmFsdWVzXCIgLSBjdXJyZW50bHksIHRoaXMgaXMgcHJlc2VudCBvbmx5IGZvciB0aG9zZSBmbGFnIHR5cGVzIHRoYXQgcmVxdWlyZSBsYW5ndWFnZSBpbnRlcnByZXRlclxuICAgICAgLy8gc2VsZWN0aW9uXG4gICAgICBpZiAodGhpcy5maWVsZFN0YXRlID09PSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19UWVBFICYmICF0aGlzLmxpc3RPZlZhbHVlcykge1xuICAgICAgICB0aGlzLmZpZWxkU3RhdGUgPSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZmllbGRTdGF0ZSsrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRGbGFnc0Nhc2VGaWVsZFZhbHVlKCk6IHZvaWQge1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogc3dpdGNoLWRlZmF1bHRcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGRTdGF0ZSkge1xuICAgICAgY2FzZSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19DT01NRU5UUzpcbiAgICAgICAgdGhpcy5hZGRGbGFnVG9Db2xsZWN0aW9uKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEU6XG4gICAgICAgIHRoaXMudXBkYXRlRmxhZ0luQ29sbGVjdGlvbigpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkRmxhZ1RvQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICAvLyBFbnN1cmUgbm8gbW9yZSB0aGFuIG9uZSBuZXcgZmxhZyBpcyBiZWluZyBhZGRlZCBhdCBhIHRpbWUsIGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGVhY2ggRmxhZ3MgY2FzZSBmaWVsZCBhbmQgcmVtb3ZpbmdcbiAgICAvLyBhbnkgcHJldmlvdXMgZW50cnkgZnJvbSB0aGUgZGV0YWlscyBhcnJheSB3aGVyZSB0aGF0IGVudHJ5IGhhcyBubyBpZCAoaGVuY2UgaXQgaXMgbmV3IC0gYW5kIHRoZXJlIHNob3VsZCBiZSBvbmx5XG4gICAgLy8gb25lIHN1Y2ggZW50cnkpLiAoVGhpcyBzY2VuYXJpbyBvY2N1cnMgaWYgdGhlIHVzZXIgcmVwZWF0cyB0aGUgQ2FzZSBGbGFnIGNyZWF0aW9uIGpvdXJuZXkgYnkgdXNpbmcgdGhlIFwiQ2hhbmdlXCJcbiAgICAvLyBsaW5rIGFuZCBzZWxlY3RzIGVpdGhlciB0aGUgc2FtZSBmbGFnIGxvY2F0aW9uIGFzIGJlZm9yZSBvciBhIGRpZmZlcmVudCBvbmUuKVxuICAgIHRoaXMuZmxhZ3NEYXRhLmZvckVhY2goaW5zdGFuY2UgPT4ge1xuICAgICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmb3IgZWFjaCBGbGFncyBjYXNlIGZpZWxkIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAgIC8vIENhc2VGaWVsZCB2YWx1ZSB0byByZW1vdmUgdGhlIG5ldyB2YWx1ZSBmcm9tXG4gICAgICBsZXQgdmFsdWUgPSBpbnN0YW5jZS5jYXNlRmllbGQudmFsdWU7XG4gICAgICBjb25zdCBwYXRoVG9WYWx1ZSA9IGluc3RhbmNlLnBhdGhUb0ZsYWdzRm9ybUdyb3VwO1xuICAgICAgLy8gUm9vdC1sZXZlbCBGbGFncyBDYXNlRmllbGRzIGRvbid0IGhhdmUgYSBkb3QtZGVsaW1pdGVkIHBhdGggLSBqdXN0IHRoZSBDYXNlRmllbGQgSUQgaXRzZWxmIC0gc28gZG9uJ3QgZHJpbGwgZG93blxuICAgICAgaWYgKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSA+IC0xKSB7XG4gICAgICAgIHBhdGhUb1ZhbHVlLnNsaWNlKHBhdGhUb1ZhbHVlLmluZGV4T2YoJy4nKSArIDEpLnNwbGl0KCcuJykuZm9yRWFjaChwYXJ0ID0+IHZhbHVlID0gdmFsdWVbcGFydF0pO1xuICAgICAgfVxuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmRldGFpbHMgJiYgdmFsdWUuZGV0YWlscy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGluZGV4T2ZOZXdGbGFnRGV0YWlsID0gdmFsdWUuZGV0YWlscy5maW5kSW5kZXgoZWxlbWVudCA9PiAhZWxlbWVudC5oYXNPd25Qcm9wZXJ0eSgnaWQnKSk7XG4gICAgICAgIGlmIChpbmRleE9mTmV3RmxhZ0RldGFpbCA+IC0xKSB7XG4gICAgICAgICAgdmFsdWUuZGV0YWlscy5zcGxpY2UoaW5kZXhPZk5ld0ZsYWdEZXRhaWwsIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWU7XG4gICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmcm9tIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAvLyBDYXNlRmllbGQgdmFsdWUgdG8gYXBwbHkgY2hhbmdlcyB0b1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgaWYgKHBhdGguaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgIHBhdGguc2xpY2UocGF0aC5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gZmxhZ3NDYXNlRmllbGRWYWx1ZVtwYXJ0XSk7XG4gICAgfVxuICAgIC8vIElmIHRoZSBDYXNlRmllbGQgZm9yIHRoZSBzZWxlY3RlZCBmbGFncyBsb2NhdGlvbiBoYXMgbm8gdmFsdWUsIHNldCBpdCB0byBhbiBlbXB0eSBvYmplY3Qgc28gaXQgY2FuIGJlIHBvcHVsYXRlZFxuICAgIC8vIHdpdGggZmxhZyBkZXRhaWxzXG4gICAgaWYgKCFmbGFnc0Nhc2VGaWVsZFZhbHVlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWUgPSB7fTtcbiAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZ3NMb2NhdGlvbi5jYXNlRmllbGQudmFsdWU7XG4gICAgfVxuICAgIC8vIENyZWF0ZSBhIGRldGFpbHMgYXJyYXkgaWYgb25lIGRvZXMgbm90IGV4aXN0XG4gICAgaWYgKCFmbGFnc0Nhc2VGaWVsZFZhbHVlLmhhc093blByb3BlcnR5KCdkZXRhaWxzJykpIHtcbiAgICAgIGZsYWdzQ2FzZUZpZWxkVmFsdWUuZGV0YWlscyA9IFtdO1xuICAgIH1cbiAgICAvLyBQb3B1bGF0ZSBuZXcgRmxhZ0RldGFpbCBpbnN0YW5jZSBhbmQgYWRkIHRvIHRoZSBGbGFncyBkYXRhIHdpdGhpbiB0aGUgQ2FzZUZpZWxkIGluc3RhbmNlIG9mIHRoZSBzZWxlY3RlZCBmbGFnXG4gICAgLy8gbG9jYXRpb25cbiAgICBmbGFnc0Nhc2VGaWVsZFZhbHVlLmRldGFpbHMucHVzaCh7dmFsdWU6IHRoaXMucG9wdWxhdGVOZXdGbGFnRGV0YWlsSW5zdGFuY2UoKX0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUZsYWdJbkNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgLy8gRW5zdXJlIG5vIG1vcmUgdGhhbiBvbmUgZmxhZyBpcyBiZWluZyB1cGRhdGVkIGF0IGEgdGltZSwgYnkgaXRlcmF0aW5nIHRocm91Z2ggZWFjaCBGbGFncyBjYXNlIGZpZWxkIGFuZCByZXNldHRpbmdcbiAgICAvLyB0aGUgY29tbWVudHMsIHN0YXR1cywgYW5kIGRhdGUvdGltZSBtb2RpZmllZCAoaWYgcHJlc2VudCkgZm9yIGVhY2ggZW50cnkgaW4gdGhlIGRldGFpbHMgYXJyYXksIHdpdGggb3JpZ2luYWwgdmFsdWVzXG4gICAgLy8gZnJvbSB0aGUgY29ycmVzcG9uZGluZyBmb3JtYXR0ZWRfdmFsdWUgcHJvcGVydHkuIChUaGlzIHNjZW5hcmlvIG9jY3VycyBpZiB0aGUgdXNlciByZXBlYXRzIHRoZSBNYW5hZ2UgQ2FzZSBGbGFnXG4gICAgLy8gam91cm5leSBieSB1c2luZyB0aGUgXCJDaGFuZ2VcIiBsaW5rIGFuZCBzZWxlY3RzIGEgZGlmZmVyZW50IGZsYWcgdG8gdXBkYXRlLilcbiAgICB0aGlzLmZsYWdzRGF0YS5mb3JFYWNoKGluc3RhbmNlID0+IHtcbiAgICAgIC8vIFVzZSB0aGUgcGF0aFRvRmxhZ3NGb3JtR3JvdXAgcHJvcGVydHkgZm9yIGVhY2ggRmxhZ3MgY2FzZSBmaWVsZCB0byBkcmlsbCBkb3duIHRvIHRoZSBjb3JyZWN0IHBhcnQgb2YgdGhlXG4gICAgICAvLyBDYXNlRmllbGQgdmFsdWUgZm9yIHdoaWNoIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIHZhbHVlc1xuICAgICAgbGV0IHZhbHVlID0gaW5zdGFuY2UuY2FzZUZpZWxkLnZhbHVlO1xuICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gaW5zdGFuY2UuY2FzZUZpZWxkLmZvcm1hdHRlZF92YWx1ZTtcbiAgICAgIGNvbnN0IHBhdGhUb1ZhbHVlID0gaW5zdGFuY2UucGF0aFRvRmxhZ3NGb3JtR3JvdXA7XG4gICAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgICBpZiAocGF0aFRvVmFsdWUuaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgICAgcGF0aFRvVmFsdWUuc2xpY2UocGF0aFRvVmFsdWUuaW5kZXhPZignLicpICsgMSkuc3BsaXQoJy4nKS5mb3JFYWNoKHBhcnQgPT4ge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWVbcGFydF07XG4gICAgICAgICAgaWYgKGZvcm1hdHRlZFZhbHVlICYmIEZpZWxkc1V0aWxzLmlzTm9uRW1wdHlPYmplY3QoZm9ybWF0dGVkVmFsdWUpKSB7XG4gICAgICAgICAgICBmb3JtYXR0ZWRWYWx1ZSA9IGZvcm1hdHRlZFZhbHVlW3BhcnRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUuZGV0YWlscyAmJiB2YWx1ZS5kZXRhaWxzLmxlbmd0aCA+IDAgJiYgZm9ybWF0dGVkVmFsdWUgJiYgRmllbGRzVXRpbHMuaXNOb25FbXB0eU9iamVjdChmb3JtYXR0ZWRWYWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZGV0YWlscy5mb3JFYWNoKGZsYWdEZXRhaWwgPT4ge1xuICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRmxhZ0RldGFpbCA9IGZvcm1hdHRlZFZhbHVlLmRldGFpbHMuZmluZChkZXRhaWwgPT4gZGV0YWlsLmlkID09PSBmbGFnRGV0YWlsLmlkKTtcbiAgICAgICAgICBpZiAob3JpZ2luYWxGbGFnRGV0YWlsKSB7XG4gICAgICAgICAgICBmbGFnRGV0YWlsLnZhbHVlLmZsYWdDb21tZW50ID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlLmZsYWdDb21tZW50XG4gICAgICAgICAgICAgID8gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlLmZsYWdDb21tZW50XG4gICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuc3RhdHVzID0gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlLnN0YXR1cztcbiAgICAgICAgICAgIGZsYWdEZXRhaWwudmFsdWUuZGF0ZVRpbWVNb2RpZmllZCA9IG9yaWdpbmFsRmxhZ0RldGFpbC52YWx1ZS5kYXRlVGltZU1vZGlmaWVkXG4gICAgICAgICAgICAgID8gb3JpZ2luYWxGbGFnRGV0YWlsLnZhbHVlLmRhdGVUaW1lTW9kaWZpZWRcbiAgICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IGZsYWdzQ2FzZUZpZWxkVmFsdWUgPSB0aGlzLnNlbGVjdGVkRmxhZy5jYXNlRmllbGQudmFsdWU7XG4gICAgLy8gVXNlIHRoZSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBwcm9wZXJ0eSBmcm9tIHRoZSBzZWxlY3RlZCBmbGFnIGxvY2F0aW9uIHRvIGRyaWxsIGRvd24gdG8gdGhlIGNvcnJlY3QgcGFydCBvZiB0aGVcbiAgICAvLyBDYXNlRmllbGQgdmFsdWUgdG8gYXBwbHkgY2hhbmdlcyB0b1xuICAgIGNvbnN0IHBhdGggPSB0aGlzLnNlbGVjdGVkRmxhZy5wYXRoVG9GbGFnc0Zvcm1Hcm91cDtcbiAgICAvLyBSb290LWxldmVsIEZsYWdzIENhc2VGaWVsZHMgZG9uJ3QgaGF2ZSBhIGRvdC1kZWxpbWl0ZWQgcGF0aCAtIGp1c3QgdGhlIENhc2VGaWVsZCBJRCBpdHNlbGYgLSBzbyBkb24ndCBkcmlsbCBkb3duXG4gICAgaWYgKHBhdGguaW5kZXhPZignLicpID4gLTEpIHtcbiAgICAgIHBhdGguc2xpY2UocGF0aC5pbmRleE9mKCcuJykgKyAxKS5zcGxpdCgnLicpLmZvckVhY2gocGFydCA9PiBmbGFnc0Nhc2VGaWVsZFZhbHVlID0gZmxhZ3NDYXNlRmllbGRWYWx1ZVtwYXJ0XSk7XG4gICAgfVxuICAgIGlmIChmbGFnc0Nhc2VGaWVsZFZhbHVlKSB7XG4gICAgICBjb25zdCBmbGFnRGV0YWlsVG9VcGRhdGUgPSBmbGFnc0Nhc2VGaWVsZFZhbHVlLmRldGFpbHMuZmluZChcbiAgICAgICAgZGV0YWlsID0+IGRldGFpbC5pZCA9PT0gdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbC5pZCk7XG4gICAgICBpZiAoZmxhZ0RldGFpbFRvVXBkYXRlKSB7XG4gICAgICAgIGZsYWdEZXRhaWxUb1VwZGF0ZS52YWx1ZS5mbGFnQ29tbWVudCA9IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUuZmxhZ0NvbW1lbnRzXG4gICAgICAgICAgPyB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLmZsYWdDb21tZW50c1xuICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgZmxhZ0RldGFpbFRvVXBkYXRlLnZhbHVlLnN0YXR1cyA9IHRoaXMuc2VsZWN0ZWRGbGFnLmZsYWdEZXRhaWxEaXNwbGF5LmZsYWdEZXRhaWwuc3RhdHVzO1xuICAgICAgICBmbGFnRGV0YWlsVG9VcGRhdGUudmFsdWUuZGF0ZVRpbWVNb2RpZmllZCA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNBdEZpbmFsU3RhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZVxuICAgICAgPyB0aGlzLmZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1VQREFURVxuICAgICAgOiB0aGlzLmZpZWxkU3RhdGUgPT09IENhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX0NPTU1FTlRTO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9FcnJvckVsZW1lbnQoZWxlbWVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoZWxlbWVudElkKSB7XG4gICAgICBjb25zdCBodG1sRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7XG4gICAgICBpZiAoaHRtbEVsZW1lbnQpIHtcbiAgICAgICAgaHRtbEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ3Ntb290aCcsIGJsb2NrOiAnY2VudGVyJyB9KTtcbiAgICAgICAgaHRtbEVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25GbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZWQoXzogYW55KTogdm9pZCB7XG4gICAgdGhpcy5mbGFnQ29tbWVudHNPcHRpb25hbCA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBwYXJlbnQge0BsaW5rIEZvcm1Hcm91cH0gZm9yIHRoaXMgY29tcG9uZW50J3MgY2hpbGRyZW4sIGRlcGVuZGluZyBvbiB0aGUgYEZsYWdzYCB7QGxpbmsgQ2FzZUZpZWxkfSBpbnN0YW5jZVxuICAgKiB0byB3aGljaCBkYXRhIHNob3VsZCBiZSBhdHRhY2hlZC4gKipOb3RlOioqIFRoZSBwYXJlbnQgaXMgbm90IF90aGlzXyBjb21wb25lbnQncyBgRm9ybUdyb3VwYCAoYXMgbWlnaHQgb3RoZXJ3aXNlIGJlXG4gICAqIGV4cGVjdGVkKSBiZWNhdXNlIHRoaXMgY29tcG9uZW50IGlzIG5vdCBleHBlY3RlZCB0byBoYXZlIGEgdmFsdWUsIGdpdmVuIGl0IGlzIHVzZWQgZm9yIHRoZSBlbXB0eSBgRmxhZ0xhdW5jaGVyYCBiYXNlXG4gICAqIGZpZWxkIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoVG9GbGFnc0Zvcm1Hcm91cCBUaGUgZG90LWRlbGltaXRlZCBzdHJpbmcgdGhhdCBpcyB0aGUgcGF0aCB0byB0aGUgYEZvcm1Hcm91cGAgZm9yIGEgYEZsYWdzYCBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHNldENhc2VGbGFnUGFyZW50Rm9ybUdyb3VwKHBhdGhUb0ZsYWdzRm9ybUdyb3VwOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXAucGFyZW50LmdldChwYXRoVG9GbGFnc0Zvcm1Hcm91cCkgYXMgRm9ybUdyb3VwO1xuICB9XG5cbiAgcHVibGljIHBvcHVsYXRlTmV3RmxhZ0RldGFpbEluc3RhbmNlKCk6IEZsYWdEZXRhaWwge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiB0aGlzLmZsYWdOYW1lLFxuICAgICAgLy8gQ3VycmVudGx5LCBzdWJUeXBlVmFsdWUgYW5kIHN1YlR5cGVLZXkgYXJlIGFwcGxpY2FibGUgb25seSB0byBsYW5ndWFnZSBmbGFnIHR5cGVzXG4gICAgICBzdWJUeXBlVmFsdWU6IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUubGFuZ3VhZ2VTZWFyY2hUZXJtXG4gICAgICAgID8gdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZS5sYW5ndWFnZVNlYXJjaFRlcm0udmFsdWVcbiAgICAgICAgOiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLm1hbnVhbExhbmd1YWdlRW50cnlcbiAgICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUubWFudWFsTGFuZ3VhZ2VFbnRyeVxuICAgICAgICAgIDogbnVsbCxcbiAgICAgIC8vIEZvciB1c2VyLWVudGVyZWQgKGkuZS4gbm9uLVJlZmVyZW5jZSBEYXRhKSBsYW5ndWFnZXMsIHRoZXJlIGlzIG5vIGtleVxuICAgICAgc3ViVHlwZUtleTogdGhpcy5jYXNlRmxhZ1BhcmVudEZvcm1Hcm91cC52YWx1ZS5sYW5ndWFnZVNlYXJjaFRlcm1cbiAgICAgICAgPyB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLmxhbmd1YWdlU2VhcmNoVGVybS5rZXlcbiAgICAgICAgOiBudWxsLFxuICAgICAgb3RoZXJEZXNjcmlwdGlvbjogdGhpcy5mbGFnQ29kZSA9PT0gdGhpcy5vdGhlckZsYWdUeXBlQ29kZSAmJiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLm90aGVyRmxhZ1R5cGVEZXNjcmlwdGlvblxuICAgICAgICA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUub3RoZXJGbGFnVHlwZURlc2NyaXB0aW9uXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGZsYWdDb21tZW50OiB0aGlzLmNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwLnZhbHVlLmZsYWdDb21tZW50cyA/IHRoaXMuY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXAudmFsdWUuZmxhZ0NvbW1lbnRzIDogbnVsbCxcbiAgICAgIGRhdGVUaW1lQ3JlYXRlZDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgcGF0aDogdGhpcy5mbGFnUGF0aCxcbiAgICAgIGhlYXJpbmdSZWxldmFudDogdGhpcy5oZWFyaW5nUmVsZXZhbnRGbGFnID8gJ1llcycgOiAnTm8nLFxuICAgICAgZmxhZ0NvZGU6IHRoaXMuZmxhZ0NvZGUsXG4gICAgICBzdGF0dXM6IENhc2VGbGFnU3RhdHVzLkFDVElWRVxuICAgIH0gYXMgRmxhZ0RldGFpbDtcbiAgfVxuXG4gIHB1YmxpYyBtb3ZlVG9GaW5hbFJldmlld1N0YWdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2V0RmxhZ3NDYXNlRmllbGRWYWx1ZSgpO1xuICAgIC8vIENsZWFyIHRoZSBcIm5vdEFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkXCIgZXJyb3JcbiAgICB0aGlzLmFsbENhc2VGbGFnU3RhZ2VzQ29tcGxldGVkID0gdHJ1ZTtcbiAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldFRyaWdnZXJTdWJtaXRFdmVudCh0cnVlKTtcbiAgfVxufVxuIiwiPCEtLSBFcnJvciBtZXNzYWdlIHN1bW1hcnkgLS0+XG48ZGl2ICpuZ0lmPVwiZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1zdW1tYXJ5XCIgYXJpYS1sYWJlbGxlZGJ5PVwiZXJyb3Itc3VtbWFyeS10aXRsZVwiIHJvbGU9XCJhbGVydFwiIHRhYmluZGV4PVwiLTFcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWVycm9yLXN1bW1hcnlcIj5cbiAgPGgyIGNsYXNzPVwiZ292dWstZXJyb3Itc3VtbWFyeV9fdGl0bGVcIiBpZD1cImVycm9yLXN1bW1hcnktdGl0bGVcIj5cbiAgICBUaGVyZSBpcyBhIHByb2JsZW1cbiAgPC9oMj5cbiAgPGRpdiAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mIGVycm9yTWVzc2FnZXNcIiBjbGFzcz1cImdvdnVrLWVycm9yLXN1bW1hcnlfX2JvZHlcIj5cbiAgICA8dWwgY2xhc3M9XCJnb3Z1ay1saXN0IGdvdnVrLWVycm9yLXN1bW1hcnlfX2xpc3RcIj5cbiAgICAgIDxsaT5cbiAgICAgICAgPGEgKGNsaWNrKT1cIm5hdmlnYXRlVG9FcnJvckVsZW1lbnQoZXJyb3JNZXNzYWdlLmZpZWxkSWQpXCIgY2xhc3M9XCJ2YWxpZGF0aW9uLWVycm9yXCI+e3tlcnJvck1lc3NhZ2UuZGVzY3JpcHRpb259fTwvYT5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCIhaXNEaXNwbGF5Q29udGV4dFBhcmFtZXRlclVwZGF0ZVwiIGNsYXNzPVwiZm9ybS1ncm91cFwiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nU3dpdGNoXT1cImZpZWxkU3RhdGVcIj5cbiAgICA8ZGl2IGlkPVwiY3JlYXRlLWZsYWctY2FwdGlvblwiIGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwfVwiPlxuICAgICAge3tjcmVhdGVGbGFnQ2FwdGlvbn19XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTE9DQVRJT05cIj5cbiAgICAgIDxjY2Qtc2VsZWN0LWZsYWctbG9jYXRpb24gW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtmbGFnc0RhdGFdPVwiZmxhZ3NEYXRhXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLXNlbGVjdC1mbGFnLWxvY2F0aW9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNhc2VGbGFnRmllbGRTdGF0ZS5GTEFHX1RZUEVcIj5cbiAgICAgIDxjY2Qtc2VsZWN0LWZsYWctdHlwZSBbZm9ybUdyb3VwXT1cImNhc2VGbGFnUGFyZW50Rm9ybUdyb3VwXCIgW2p1cmlzZGljdGlvbl09XCJqdXJpc2RpY3Rpb25cIiBbY2FzZVR5cGVJZF09XCJjYXNlVHlwZUlkXCJcbiAgICAgICAgW2htY3RzU2VydmljZUlkXT1cImhtY3RzU2VydmljZUlkXCJcbiAgICAgICAgKGNhc2VGbGFnU3RhdGVFbWl0dGVyKT1cIm9uQ2FzZUZsYWdTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiXG4gICAgICAgIChmbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZXIpPVwib25GbGFnQ29tbWVudHNPcHRpb25hbEVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLXNlbGVjdC1mbGFnLXR5cGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTEFOR1VBR0VfSU5URVJQUkVURVJcIj5cbiAgICAgIDxjY2Qtc2VhcmNoLWxhbmd1YWdlLWludGVycHJldGVyIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbbGFuZ3VhZ2VzXT1cImxpc3RPZlZhbHVlc1wiIFtmbGFnQ29kZV09XCJmbGFnQ29kZVwiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC1zZWFyY2gtbGFuZ3VhZ2UtaW50ZXJwcmV0ZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfQ09NTUVOVFNcIj5cbiAgICAgIDxjY2QtYWRkLWNvbW1lbnRzIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbb3B0aW9uYWxdPVwiZmxhZ0NvbW1lbnRzT3B0aW9uYWxcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtYWRkLWNvbW1lbnRzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj1cImlzRGlzcGxheUNvbnRleHRQYXJhbWV0ZXJVcGRhdGVcIiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ1N3aXRjaF09XCJmaWVsZFN0YXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfTUFOQUdFX0NBU0VfRkxBR1NcIj5cbiAgICAgIDxjY2QtbWFuYWdlLWNhc2UtZmxhZ3MgW2Zvcm1Hcm91cF09XCJjYXNlRmxhZ1BhcmVudEZvcm1Hcm91cFwiIFtmbGFnc0RhdGFdPVwiZmxhZ3NEYXRhXCIgW2Nhc2VUaXRsZV09XCJjYXNlVGl0bGVcIlxuICAgICAgICAoY2FzZUZsYWdTdGF0ZUVtaXR0ZXIpPVwib25DYXNlRmxhZ1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtbWFuYWdlLWNhc2UtZmxhZ3M+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFXCI+XG4gICAgICA8Y2NkLXVwZGF0ZS1mbGFnIFtmb3JtR3JvdXBdPVwiY2FzZUZsYWdQYXJlbnRGb3JtR3JvdXBcIiBbc2VsZWN0ZWRGbGFnXT1cInNlbGVjdGVkRmxhZ1wiXG4gICAgICAgIChjYXNlRmxhZ1N0YXRlRW1pdHRlcik9XCJvbkNhc2VGbGFnU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC11cGRhdGUtZmxhZz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|