@hmcts/ccd-case-ui-toolkit 7.1.24-case-links-fix → 7.1.26
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/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +3 -3
- package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +17 -17
- package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +10 -10
- package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +13 -30
- package/esm2022/lib/shared/components/search-result/search-result.component.mjs +39 -35
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +76 -89
- package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
- package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts.map +1 -1
- package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
- package/package.json +1 -1
package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs
CHANGED
|
@@ -544,7 +544,7 @@ export class CaseEditSubmitComponent {
|
|
|
544
544
|
return 'Cancel';
|
|
545
545
|
}
|
|
546
546
|
static ɵfac = function CaseEditSubmitComponent_Factory(t) { return new (t || CaseEditSubmitComponent)(i0.ɵɵdirectiveInject(i1.CaseEditComponent), i0.ɵɵdirectiveInject(i2.FieldsUtils), i0.ɵɵdirectiveInject(i2.CaseFieldService), i0.ɵɵdirectiveInject(i3.ActivatedRoute), i0.ɵɵdirectiveInject(i2.OrderService), i0.ɵɵdirectiveInject(i2.ProfileNotifier), i0.ɵɵdirectiveInject(i2.FormValidatorsService)); };
|
|
547
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEditSubmitComponent, selectors: [["ccd-case-edit-submit"]], decls: 23, vars: 21, consts: [["titleBlock", ""], ["idBlock", ""], [1, "govuk-heading-l"], [4, "ngIf", "ngIfThen", "ngIfElse"], [3, "error"], [3, "callbackErrorsContext", "callbackErrorsSubject"], [1, "check-your-answers", 3, "submit", "formGroup"], [4, "ngIf"], [3, "eventCompletionParams", "eventCanBeCompleted", 4, "ngIf"], [1, "form-group", "form-group-related"], ["class", "button button-secondary", "type", "button", 3, "disabled", "click", 4, "ngIf"], ["type", "submit", 1, "button", 3, "disabled"], [1, "cancel"], ["href", "javascript:void(0)", 3, "click"], [3, "content"], ["class", "heading-h2", 4, "ngIf"], [1, "heading-h2"], ["class", "text-16", 4, "ngIf"], ["aria-describedby", "check your answers table", 1, "form-table"], [4, "ngFor", "ngForOf"], [1, "text-16"], ["ccdLabelSubstitutor", "", 3, "caseField", "hidden", "formGroup", "contextFields"], ["class", "valign-top case-field-label", 4, "ngIf"], [1, "form-cell", "case-field-content"], [3, "formGroup", "topLevelFormGroup", "caseField", "context", "caseFields"], [1, "valign-top", "case-field-label"], [1, "valign-top", "check-your-answers__change", "case-field-change"], ["href", "javascript:void(0)", 3, "click", 4, "ngIf"], ["aria-describedby", "summary fields table", 1, "summary-fields"], [3, "ngSwitch"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["class", "compound-field", "ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields"], ["id", "summary-field-label"], [1, "form-cell"], [3, "formGroup", "caseField"], ["ccdLabelSubstitutor", "", 1, "compound-field", 3, "caseField", "formGroup", "contextFields"], ["colspan", "2"], [3, "formGroup", "caseField", "caseFields"], ["id", "fieldset-event", "formGroupName", "event"], [2, "display", "none"], [1, "form-group", 3, "ngClass"], ["for", "field-trigger-summary", 1, "form-label"], [1, "form-hint"], ["class", "error-message", 4, "ngIf"], ["type", "text", "id", "field-trigger-summary", "formControlName", "summary", "maxlength", "1024", 1, "form-control", "bottom-30", "width-50", 3, "ngClass"], ["for", "field-trigger-description", 1, "form-label"], ["id", "field-trigger-description", "formControlName", "description", "maxlength", "65536", 1, "form-control", "bottom-30", "width-50", 3, "ngClass"], [1, "error-message"], [3, "eventCanBeCompleted", "eventCompletionParams"], ["type", "button", 1, "button", "button-secondary", 3, "click", "disabled"]], template: function CaseEditSubmitComponent_Template(rf, ctx) { if (rf & 1) {
|
|
547
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CaseEditSubmitComponent, selectors: [["ccd-case-edit-submit"]], decls: 23, vars: 21, consts: [["titleBlock", ""], ["idBlock", ""], [1, "govuk-heading-l"], [4, "ngIf", "ngIfThen", "ngIfElse"], [3, "error"], [3, "callbackErrorsContext", "callbackErrorsSubject"], [1, "check-your-answers", 3, "submit", "formGroup"], [4, "ngIf"], [3, "eventCompletionParams", "eventCanBeCompleted", 4, "ngIf"], [1, "form-group", "form-group-related"], ["class", "button button-secondary", "type", "button", 3, "disabled", "click", 4, "ngIf"], ["type", "submit", 1, "button", 3, "disabled"], [1, "cancel"], ["href", "javascript:void(0)", 3, "click"], [3, "content"], ["class", "heading-h2", 4, "ngIf"], [1, "heading-h2"], ["class", "text-16", 4, "ngIf"], ["aria-describedby", "check your answers table", 1, "form-table"], [4, "ngFor", "ngForOf"], [1, "text-16"], ["ccdLabelSubstitutor", "", 3, "caseField", "hidden", "formGroup", "contextFields"], ["class", "valign-top case-field-label", 4, "ngIf"], [1, "form-cell", "case-field-content", "text-16"], [3, "formGroup", "topLevelFormGroup", "caseField", "context", "caseFields"], [1, "valign-top", "case-field-label"], [1, "valign-top", "check-your-answers__change", "case-field-change"], ["href", "javascript:void(0)", 3, "click", 4, "ngIf"], ["aria-describedby", "summary fields table", 1, "summary-fields"], [3, "ngSwitch"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["class", "compound-field", "ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields", 4, "ngSwitchCase"], ["ccdLabelSubstitutor", "", 3, "caseField", "formGroup", "contextFields"], ["id", "summary-field-label"], [1, "form-cell"], [3, "formGroup", "caseField"], ["ccdLabelSubstitutor", "", 1, "compound-field", 3, "caseField", "formGroup", "contextFields"], ["colspan", "2"], [3, "formGroup", "caseField", "caseFields"], ["id", "fieldset-event", "formGroupName", "event"], [2, "display", "none"], [1, "form-group", 3, "ngClass"], ["for", "field-trigger-summary", 1, "form-label"], [1, "form-hint"], ["class", "error-message", 4, "ngIf"], ["type", "text", "id", "field-trigger-summary", "formControlName", "summary", "maxlength", "1024", 1, "form-control", "bottom-30", "width-50", 3, "ngClass"], ["for", "field-trigger-description", 1, "form-label"], ["id", "field-trigger-description", "formControlName", "description", "maxlength", "65536", 1, "form-control", "bottom-30", "width-50", 3, "ngClass"], [1, "error-message"], [3, "eventCanBeCompleted", "eventCompletionParams"], ["type", "button", 1, "button", "button-secondary", 3, "click", "disabled"]], template: function CaseEditSubmitComponent_Template(rf, ctx) { if (rf & 1) {
|
|
548
548
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
549
549
|
i0.ɵɵelementStart(0, "div")(1, "h1", 2);
|
|
550
550
|
i0.ɵɵtext(2);
|
|
@@ -600,7 +600,7 @@ export class CaseEditSubmitComponent {
|
|
|
600
600
|
}
|
|
601
601
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseEditSubmitComponent, [{
|
|
602
602
|
type: Component,
|
|
603
|
-
args: [{ selector: 'ccd-case-edit-submit', template: "<div>\n <!-- Event trigger name -->\n <h1 class=\"govuk-heading-l\">{{eventTrigger.name | rpxTranslate}}</h1>\n\n <!--Case ID or Title -->\n <div *ngIf=\"getCaseTitle(); then titleBlock; else idBlock\"></div>\n <ng-template #titleBlock>\n <ccd-markdown [content]=\"getCaseTitle() | ccdCaseTitle: contextFields : editForm.controls['data']\"></ccd-markdown>\n </ng-template>\n <ng-template #idBlock>\n <h2 *ngIf=\"getCaseId()\" class=\"heading-h2\">#{{ getCaseId() | ccdCaseReference }}</h2>\n </ng-template>\n\n <ccd-case-edit-generic-errors [error]=\"caseEdit.error\"></ccd-case-edit-generic-errors>\n\n <ccd-callback-errors [callbackErrorsSubject]=\"caseEdit.callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\"></ccd-callback-errors>\n\n <form class=\"check-your-answers\" [formGroup]=\"editForm\" (submit)=\"submit()\">\n <div *ngIf=\"!caseEdit.isEventCompletionChecksRequired\">\n <ng-container *ngIf=\"checkYourAnswerFieldsToDisplayExists()\">\n <h2 class=\"heading-h2\">{{pageTitle | rpxTranslate }}</h2>\n <span class=\"text-16\" *ngIf=\"!caseEdit.isCaseFlagSubmission\">{{'Check the information below carefully.' | rpxTranslate}}</span>\n\n <table class=\"form-table\" aria-describedby=\"check your answers table\">\n <tbody>\n <ng-container *ngFor=\"let page of wizard.pages\">\n <ng-container *ngIf=\"isShown(page)\">\n <ng-container *ngFor=\"let field of page\n | ccdPageFields: editForm\n | ccdReadFieldsFilter: false :undefined :true :allFieldsValues\n | ccdCYAPageLabelFilter\">\n <ng-container *ngIf=\"canShowFieldInCYA(field)\">\n <tr ccdLabelSubstitutor [caseField]=\"field\" [hidden]=\"field.hidden\"\n [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <th *ngIf=\"!isLabel(field) && !caseEdit.isCaseFlagSubmission\" class=\"valign-top case-field-label\">\n <span class=\"text-16\">{{field.label | rpxTranslate}}</span>\n </th>\n <td class=\"form-cell case-field-content\" [attr.colspan]=\"isLabel(field) ? '2' : '1'\">\n <ccd-field-read\n [formGroup]=\"editForm.controls['data']\" [topLevelFormGroup]=\"editForm.controls['data']\"\n [caseField]=\"summaryCaseField(field)\" [context]=\"paletteContext\" [caseFields]=\"contextFields\"></ccd-field-read>\n </td>\n <ng-container *ngIf=\"!caseEdit.isCaseFlagSubmission\">\n <td class=\"valign-top check-your-answers__change case-field-change\">\n <a *ngIf=\"isChangeAllowed(field)\" (click)=\"navigateToPage(page.id)\"\n href=\"javascript:void(0)\">\n <span class=\"text-16\" attr.aria-label=\"{{'Change' | rpxTranslate}} {{ field.label | rpxTranslate }}\">\n {{'Change' | rpxTranslate}}\n </span>\n </a>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"readOnlySummaryFieldsToDisplayExists()\">\n\n <table class=\"summary-fields\" aria-describedby=\"summary fields table\">\n <tbody>\n <ng-container *ngFor=\"let field of showSummaryFields\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\" ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <th id=\"summary-field-label\">{{field.label}}</th>\n <td class=\"form-cell\">\n <ccd-field-read [formGroup]=\"editForm.controls['data']\" [caseField]=\"summaryCaseField(field)\"></ccd-field-read>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\" ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <td colspan=\"2\">\n <ccd-field-read [formGroup]=\"editForm.controls['data']\" [caseField]=\"summaryCaseField(field)\" [caseFields]=\"contextFields\"></ccd-field-read>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"showEventNotes()\">\n <fieldset id=\"fieldset-event\" formGroupName=\"event\">\n <legend style=\"display: none;\"></legend>\n <div class=\"form-group\" [ngClass]=\"{'form-group-error': !!summary && !summary.valid && (summary.dirty || summary.touched)}\">\n <label for=\"field-trigger-summary\" class=\"form-label\">\n Event summary (optional)\n <span class=\"form-hint\">A few words describing the purpose of the event.</span>\n </label>\n <span class=\"error-message\" *ngIf=\"summary?.errors && (summary.dirty || summary.touched)\">\n {{summary.errors | ccdFirstError: eventSummaryLabel | rpxTranslate}}\n </span>\n <input type=\"text\" id=\"field-trigger-summary\" class=\"form-control bottom-30 width-50\"\n [ngClass]=\"{'govuk-input--error': summary?.errors && (summary.dirty || summary.touched)}\" formControlName=\"summary\" maxlength=\"1024\">\n </div>\n <div class=\"form-group\" [ngClass]=\"{'form-group-error': !!description && !description.valid && (description.dirty || description.touched)}\">\n <label for=\"field-trigger-description\" class=\"form-label\">Event description (optional)</label>\n <span class=\"error-message\" *ngIf=\"description?.errors && (description.dirty || description.touched)\">\n {{description.errors | ccdFirstError: eventDescriptionLabel | rpxTranslate}}\n </span>\n <textarea id=\"field-trigger-description\" class=\"form-control bottom-30 width-50\" formControlName=\"description\"\n [ngClass]=\"{'govuk-input--error': description?.errors && (description.dirty || description.touched)}\" maxlength=\"65536\"></textarea>\n </div>\n </fieldset>\n </ng-container>\n </div>\n <ccd-case-event-completion *ngIf=\"caseEdit.isEventCompletionChecksRequired\"\n [eventCompletionParams]=\"caseEdit.eventCompletionParams\"\n (eventCanBeCompleted)=\"onEventCanBeCompleted($event)\">\n </ccd-case-event-completion>\n <div class=\"form-group form-group-related\">\n <button *ngIf=\"!caseEdit.isCaseFlagSubmission\" class=\"button button-secondary\" type=\"button\" [disabled]=\"!hasPrevious() || caseEdit.isSubmitting\" (click)=\"previous()\">\n {{'Previous' | rpxTranslate}}\n </button>\n <button type=\"submit\" [disabled]=\"isDisabled\" class=\"button\">\n {{triggerText | rpxTranslate}}\n </button>\n </div>\n <p class=\"cancel\">\n <a (click)=\"cancel()\" href=\"javascript:void(0)\" [class.disabled]=\"caseEdit.isSubmitting\">{{getCancelText() | rpxTranslate}}</a>\n </p>\n </form>\n</div>\n\n", styles: ["#fieldset-case-data{margin-bottom:30px}#fieldset-case-data th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}#confirmation-header{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body{width:630px;background-color:#fff}.valign-top{vertical-align:top}.summary-fields{margin-bottom:30px}.summary-fields tbody tr th,.summary-fields tbody tr td{border-bottom:0px}a.disabled{pointer-events:none;cursor:default}.case-field-label{width:45%}.case-field-content{width:50%}.no-bottom-border{border-bottom:none}.case-field-change{width:5%}\n"] }]
|
|
603
|
+
args: [{ selector: 'ccd-case-edit-submit', template: "<div>\n <!-- Event trigger name -->\n <h1 class=\"govuk-heading-l\">{{eventTrigger.name | rpxTranslate}}</h1>\n\n <!--Case ID or Title -->\n <div *ngIf=\"getCaseTitle(); then titleBlock; else idBlock\"></div>\n <ng-template #titleBlock>\n <ccd-markdown [content]=\"getCaseTitle() | ccdCaseTitle: contextFields : editForm.controls['data']\"></ccd-markdown>\n </ng-template>\n <ng-template #idBlock>\n <h2 *ngIf=\"getCaseId()\" class=\"heading-h2\">#{{ getCaseId() | ccdCaseReference }}</h2>\n </ng-template>\n\n <ccd-case-edit-generic-errors [error]=\"caseEdit.error\"></ccd-case-edit-generic-errors>\n\n <ccd-callback-errors [callbackErrorsSubject]=\"caseEdit.callbackErrorsSubject\"\n (callbackErrorsContext)=\"callbackErrorsNotify($event)\"></ccd-callback-errors>\n\n <form class=\"check-your-answers\" [formGroup]=\"editForm\" (submit)=\"submit()\">\n <div *ngIf=\"!caseEdit.isEventCompletionChecksRequired\">\n <ng-container *ngIf=\"checkYourAnswerFieldsToDisplayExists()\">\n <h2 class=\"heading-h2\">{{pageTitle | rpxTranslate }}</h2>\n <span class=\"text-16\" *ngIf=\"!caseEdit.isCaseFlagSubmission\">{{'Check the information below carefully.' | rpxTranslate}}</span>\n\n <table class=\"form-table\" aria-describedby=\"check your answers table\">\n <tbody>\n <ng-container *ngFor=\"let page of wizard.pages\">\n <ng-container *ngIf=\"isShown(page)\">\n <ng-container *ngFor=\"let field of page\n | ccdPageFields: editForm\n | ccdReadFieldsFilter: false :undefined :true :allFieldsValues\n | ccdCYAPageLabelFilter\">\n <ng-container *ngIf=\"canShowFieldInCYA(field)\">\n <tr ccdLabelSubstitutor [caseField]=\"field\" [hidden]=\"field.hidden\"\n [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <th *ngIf=\"!isLabel(field) && !caseEdit.isCaseFlagSubmission\" class=\"valign-top case-field-label\">\n <span class=\"text-16\">{{field.label | rpxTranslate}}</span>\n </th>\n <td class=\"form-cell case-field-content text-16\" [attr.colspan]=\"isLabel(field) ? '2' : '1'\">\n <ccd-field-read\n [formGroup]=\"editForm.controls['data']\" [topLevelFormGroup]=\"editForm.controls['data']\"\n [caseField]=\"summaryCaseField(field)\" [context]=\"paletteContext\" [caseFields]=\"contextFields\"></ccd-field-read>\n </td>\n <ng-container *ngIf=\"!caseEdit.isCaseFlagSubmission\">\n <td class=\"valign-top check-your-answers__change case-field-change\">\n <a *ngIf=\"isChangeAllowed(field)\" (click)=\"navigateToPage(page.id)\"\n href=\"javascript:void(0)\">\n <span class=\"text-16\" attr.aria-label=\"{{'Change' | rpxTranslate}} {{ field.label | rpxTranslate }}\">\n {{'Change' | rpxTranslate}}\n </span>\n </a>\n </td>\n </ng-container>\n </tr>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"readOnlySummaryFieldsToDisplayExists()\">\n\n <table class=\"summary-fields\" aria-describedby=\"summary fields table\">\n <tbody>\n <ng-container *ngFor=\"let field of showSummaryFields\">\n <ng-container [ngSwitch]=\"!(field | ccdIsCompound)\">\n <tr *ngSwitchCase=\"true\" ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <th id=\"summary-field-label\">{{field.label}}</th>\n <td class=\"form-cell\">\n <ccd-field-read [formGroup]=\"editForm.controls['data']\" [caseField]=\"summaryCaseField(field)\"></ccd-field-read>\n </td>\n </tr>\n <tr *ngSwitchCase=\"false\" class=\"compound-field\" ccdLabelSubstitutor [caseField]=\"field\" [formGroup]=\"editForm.controls['data']\" [contextFields]=\"contextFields\">\n <td colspan=\"2\">\n <ccd-field-read [formGroup]=\"editForm.controls['data']\" [caseField]=\"summaryCaseField(field)\" [caseFields]=\"contextFields\"></ccd-field-read>\n </td>\n </tr>\n </ng-container>\n </ng-container>\n </tbody>\n </table>\n </ng-container>\n <ng-container *ngIf=\"showEventNotes()\">\n <fieldset id=\"fieldset-event\" formGroupName=\"event\">\n <legend style=\"display: none;\"></legend>\n <div class=\"form-group\" [ngClass]=\"{'form-group-error': !!summary && !summary.valid && (summary.dirty || summary.touched)}\">\n <label for=\"field-trigger-summary\" class=\"form-label\">\n Event summary (optional)\n <span class=\"form-hint\">A few words describing the purpose of the event.</span>\n </label>\n <span class=\"error-message\" *ngIf=\"summary?.errors && (summary.dirty || summary.touched)\">\n {{summary.errors | ccdFirstError: eventSummaryLabel | rpxTranslate}}\n </span>\n <input type=\"text\" id=\"field-trigger-summary\" class=\"form-control bottom-30 width-50\"\n [ngClass]=\"{'govuk-input--error': summary?.errors && (summary.dirty || summary.touched)}\" formControlName=\"summary\" maxlength=\"1024\">\n </div>\n <div class=\"form-group\" [ngClass]=\"{'form-group-error': !!description && !description.valid && (description.dirty || description.touched)}\">\n <label for=\"field-trigger-description\" class=\"form-label\">Event description (optional)</label>\n <span class=\"error-message\" *ngIf=\"description?.errors && (description.dirty || description.touched)\">\n {{description.errors | ccdFirstError: eventDescriptionLabel | rpxTranslate}}\n </span>\n <textarea id=\"field-trigger-description\" class=\"form-control bottom-30 width-50\" formControlName=\"description\"\n [ngClass]=\"{'govuk-input--error': description?.errors && (description.dirty || description.touched)}\" maxlength=\"65536\"></textarea>\n </div>\n </fieldset>\n </ng-container>\n </div>\n <ccd-case-event-completion *ngIf=\"caseEdit.isEventCompletionChecksRequired\"\n [eventCompletionParams]=\"caseEdit.eventCompletionParams\"\n (eventCanBeCompleted)=\"onEventCanBeCompleted($event)\">\n </ccd-case-event-completion>\n <div class=\"form-group form-group-related\">\n <button *ngIf=\"!caseEdit.isCaseFlagSubmission\" class=\"button button-secondary\" type=\"button\" [disabled]=\"!hasPrevious() || caseEdit.isSubmitting\" (click)=\"previous()\">\n {{'Previous' | rpxTranslate}}\n </button>\n <button type=\"submit\" [disabled]=\"isDisabled\" class=\"button\">\n {{triggerText | rpxTranslate}}\n </button>\n </div>\n <p class=\"cancel\">\n <a (click)=\"cancel()\" href=\"javascript:void(0)\" [class.disabled]=\"caseEdit.isSubmitting\">{{getCancelText() | rpxTranslate}}</a>\n </p>\n </form>\n</div>\n\n", styles: ["#fieldset-case-data{margin-bottom:30px}#fieldset-case-data th{width:1%;white-space:nowrap;vertical-align:top}.compound-field td{padding:0}#confirmation-header{width:630px;background-color:#17958b;border:solid 1px #979797;color:#fff;text-align:center}#confirmation-body{width:630px;background-color:#fff}.valign-top{vertical-align:top}.summary-fields{margin-bottom:30px}.summary-fields tbody tr th,.summary-fields tbody tr td{border-bottom:0px}a.disabled{pointer-events:none;cursor:default}.case-field-label{width:45%}.case-field-content{width:50%}.no-bottom-border{border-bottom:none}.case-field-change{width:5%}\n"] }]
|
|
604
604
|
}], () => [{ type: i1.CaseEditComponent }, { type: i2.FieldsUtils }, { type: i2.CaseFieldService }, { type: i3.ActivatedRoute }, { type: i2.OrderService }, { type: i2.ProfileNotifier }, { type: i2.FormValidatorsService }], null); })();
|
|
605
605
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CaseEditSubmitComponent, { className: "CaseEditSubmitComponent", filePath: "lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.ts", lineNumber: 27 }); })();
|
|
606
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvY2FzZS1lZGl0LXN1Ym1pdC9jYXNlLWVkaXQtc3VibWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixlQUFlLEVBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLHVCQUF1QixFQUF5QixNQUFNLGFBQWEsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7SUNicEUsc0JBQWlFOzs7SUFFL0QsbUNBQWtIOzs7O0lBQXBHLDZIQUFvRjs7O0lBR2xHLDhCQUEyQztJQUFBLFlBQXFDOztJQUFBLGlCQUFLOzs7SUFBMUMsY0FBcUM7SUFBckMsd0VBQXFDOzs7SUFBaEYscUZBQTJD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QWlCLEFBQWpCLEFBQXRCLHlDQUFzQiwyQkFBaUIseUJBQVk7WUFRM0IsZUFBd0I7WUFBeEIsMENBQXdCO1lBRWpDLGNBQXdEO1lBQXhELDBFQUF3RDtZQUc1QyxjQUFzQjtZQUF0Qix3Q0FBc0I7WUFDL0MsY0FBK0M7WUFBL0Msb0VBQStDO1lBeUZ6QixjQUE4QztZQUE5QyxtRUFBOEM7WUFLL0QsZUFBb0M7WUFBcEMseURBQW9DO1lBR3ZCLGNBQXVCO1lBQXZCLHlDQUF1QjtZQUMzQyxjQUNGO1lBREUsd0VBQ0Y7WUFHZ0QsZUFBd0M7WUFBeEMscURBQXdDO1lBQUMsY0FBa0M7WUFBbEMsaUVBQWtDOzs7aUZEL0ZwSCx1QkFBdUI7Y0FMbkMsU0FBUzsyQkFDRSxzQkFBc0I7O2tGQUlyQix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50VHJpZ2dlciwgQ2FzZUZpZWxkLCBQcm9maWxlIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2snO1xuaW1wb3J0IHtcbiAgQ2FzZUZpZWxkU2VydmljZSxcbiAgRmllbGRzVXRpbHMsXG4gIEZvcm1WYWxpZGF0b3JzU2VydmljZSxcbiAgT3JkZXJTZXJ2aWNlLFxuICBQcm9maWxlTm90aWZpZXJcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgQ2FsbGJhY2tFcnJvcnNDb21wb25lbnQsIENhbGxiYWNrRXJyb3JzQ29udGV4dCB9IGZyb20gJy4uLy4uL2Vycm9yJztcbmltcG9ydCB7IFBhbGV0dGVDb250ZXh0IH0gZnJvbSAnLi4vLi4vcGFsZXR0ZSc7XG5pbXBvcnQgeyBDYXNlRWRpdFBhZ2VDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQtcGFnZS9jYXNlLWVkaXQtcGFnZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FzZUVkaXRDb21wb25lbnQgfSBmcm9tICcuLi9jYXNlLWVkaXQvY2FzZS1lZGl0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmQsIFdpemFyZFBhZ2UgfSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZUVkaXRTdWJtaXRUaXRsZXMgfSBmcm9tICcuL2Nhc2UtZWRpdC1zdWJtaXQtdGl0bGVzLmVudW0nO1xuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWNhc2UtZWRpdC1zdWJtaXQnLFxuICB0ZW1wbGF0ZVVybDogJ2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuLi9jYXNlLWVkaXQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENhc2VFZGl0U3VibWl0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgZXZlbnRUcmlnZ2VyOiBDYXNlRXZlbnRUcmlnZ2VyO1xuICBwdWJsaWMgZWRpdEZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIHRyaWdnZXJUZXh0OiBzdHJpbmc7XG4gIHB1YmxpYyB3aXphcmQ6IFdpemFyZDtcbiAgcHVibGljIHByb2ZpbGU6IFByb2ZpbGU7XG4gIHB1YmxpYyBzaG93U3VtbWFyeUZpZWxkczogQ2FzZUZpZWxkW107XG4gIHB1YmxpYyBwYWxldHRlQ29udGV4dDogUGFsZXR0ZUNvbnRleHQgPSBQYWxldHRlQ29udGV4dC5DSEVDS19ZT1VSX0FOU1dFUjtcbiAgcHVibGljIHByb2ZpbGVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHVibGljIGNvbnRleHRGaWVsZHM6IENhc2VGaWVsZFtdO1xuICBwdWJsaWMgdGFzazogVGFzaztcbiAgcHVibGljIHBhZ2VUaXRsZTogc3RyaW5nO1xuICBwdWJsaWMgbWV0YWRhdGFGaWVsZHNPYmplY3Q6IG9iamVjdDtcbiAgcHVibGljIGFsbEZpZWxkc1ZhbHVlczogYW55O1xuICBwdWJsaWMgc3VtbWFyeTogQWJzdHJhY3RDb250cm9sO1xuICBwdWJsaWMgZGVzY3JpcHRpb246IEFic3RyYWN0Q29udHJvbDtcbiAgcHVibGljIGV2ZW50U3VtbWFyeUxhYmVsOiBzdHJpbmcgPSAnRXZlbnQgc3VtbWFyeSc7XG4gIHB1YmxpYyBldmVudERlc2NyaXB0aW9uTGFiZWw6IHN0cmluZyA9ICdFdmVudCBkZXNjcmlwdGlvbic7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTSE9XX1NVTU1BUllfQ09OVEVOVF9DT01QQVJFX0ZVTkNUSU9OID0gKGE6IENhc2VGaWVsZCwgYjogQ2FzZUZpZWxkKTogbnVtYmVyID0+IHtcbiAgICBjb25zdCBhQ2FzZUZpZWxkID0gYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPT09IDAgfHwgYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG4gICAgY29uc3QgYkNhc2VGaWVsZCA9IGIuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uID09PSAwIHx8IGIuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uO1xuXG4gICAgaWYgKCFhQ2FzZUZpZWxkKSB7XG4gICAgICByZXR1cm4gIWJDYXNlRmllbGQgPyAwIDogMTtcbiAgICB9XG5cbiAgICBpZiAoIWJDYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgcmV0dXJuIGEuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uIC0gYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG4gIH07XG5cbiAgcHVibGljIGdldCBpc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIEVVSS0zNDUyLlxuICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY2hlY2sgdGhlIHZhbGlkaXR5IG9mIHRoZSBlZGl0Rm9ybSBhcyBpdCBpcyByZWFkb25seS5cbiAgICAvLyBUaGlzIHdhcyBjYXVzaW5nIGlzc3VlcyB3aXRoIGhpZGRlbiBmaWVsZHMgdGhhdCBhcmVuJ3Qgd2FudGVkIGJ1dCBoYXZlXG4gICAgLy8gbm90IGJlZW4gZGlzYWJsZWQuXG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQuaXNTdWJtaXR0aW5nIHx8IHRoaXMuaGFzRXJyb3JzO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNhc2VFZGl0OiBDYXNlRWRpdENvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZpZWxkc1V0aWxzOiBGaWVsZHNVdGlscyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VGaWVsZFNlcnZpY2U6IENhc2VGaWVsZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2ZpbGVOb3RpZmllcjogUHJvZmlsZU5vdGlmaWVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybVZhbGlkYXRvcnNTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yc1NlcnZpY2VcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uID0gdGhpcy5wcm9maWxlTm90aWZpZXIucHJvZmlsZS5zdWJzY3JpYmUoKF8pID0+IHRoaXMucHJvZmlsZSA9IF8pO1xuICAgIHRoaXMuZXZlbnRUcmlnZ2VyID0gdGhpcy5jYXNlRWRpdC5ldmVudFRyaWdnZXI7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IHRoaXMuZXZlbnRUcmlnZ2VyLmVuZF9idXR0b25fbGFiZWwgfHwgQ2FsbGJhY2tFcnJvcnNDb21wb25lbnQuVFJJR0dFUl9URVhUX1NVQk1JVDtcbiAgICB0aGlzLmVkaXRGb3JtID0gdGhpcy5jYXNlRWRpdC5mb3JtO1xuICAgIHRoaXMud2l6YXJkID0gdGhpcy5jYXNlRWRpdC53aXphcmQ7XG4gICAgdGhpcy5zaG93U3VtbWFyeUZpZWxkcyA9IHRoaXMuc29ydEZpZWxkc0J5U2hvd1N1bW1hcnlDb250ZW50KHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzKTtcbiAgICB0aGlzLmNhc2VFZGl0LmlzU3VibWl0dGluZyA9IGZhbHNlO1xuICAgIHRoaXMuY29udGV4dEZpZWxkcyA9IHRoaXMuZ2V0Q2FzZUZpZWxkcygpO1xuICAgIHRoaXMubWV0YWRhdGFGaWVsZHNPYmplY3QgPSB0aGlzLmNhc2VFZGl0Py5jYXNlRGV0YWlscz8ubWV0YWRhdGFGaWVsZHM/LlxuICAgICAgcmVkdWNlKChvLCBrZXkpID0+IE9iamVjdC5hc3NpZ24obywgeyBba2V5LmlkXToga2V5LnZhbHVlIH0pLCB7fSk7XG4gICAgdGhpcy5hbGxGaWVsZHNWYWx1ZXMgPSBPYmplY3QuYXNzaWduKHRoaXMubWV0YWRhdGFGaWVsZHNPYmplY3QgPyB0aGlzLm1ldGFkYXRhRmllbGRzT2JqZWN0IDoge30sIHRoaXMuZWRpdEZvcm0uZ2V0UmF3VmFsdWUoKS5kYXRhKTtcbiAgICAvLyBJbmRpY2F0ZXMgaWYgdGhlIHN1Ym1pc3Npb24gaXMgZm9yIGEgQ2FzZSBGbGFnLCBhcyBvcHBvc2VkIHRvIGEgXCJyZWd1bGFyXCIgZm9ybSBzdWJtaXNzaW9uLCBieSB0aGUgcHJlc2VuY2Ugb2ZcbiAgICAvLyBhIEZsYWdMYXVuY2hlciBmaWVsZCBpbiB0aGUgZXZlbnQgdHJpZ2dlclxuICAgIHRoaXMuY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb24gPVxuICAgICAgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMuc29tZSgoY2FzZUZpZWxkKSA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKTtcbiAgICB0aGlzLmNhc2VFZGl0LmlzTGlua2VkQ2FzZXNTdWJtaXNzaW9uID1cbiAgICAgIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VGaWVsZCwgWydDb21wb25lbnRMYXVuY2hlciddKSk7XG4gICAgdGhpcy5wYWdlVGl0bGUgPSB0aGlzLmdldFBhZ2VUaXRsZSgpO1xuXG4gICAgdGhpcy5zdW1tYXJ5ID0gdGhpcy5mb3JtVmFsaWRhdG9yc1NlcnZpY2UuYWRkTWFya0Rvd25WYWxpZGF0b3JzKHRoaXMuZWRpdEZvcm0sICdldmVudC5zdW1tYXJ5Jyk7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IHRoaXMuZm9ybVZhbGlkYXRvcnNTZXJ2aWNlLmFkZE1hcmtEb3duVmFsaWRhdG9ycyh0aGlzLmVkaXRGb3JtLCAnZXZlbnQuZGVzY3JpcHRpb24nKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3VtbWFyeS52YWxpZCAmJiB0aGlzLmRlc2NyaXB0aW9uLnZhbGlkKSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LnN1Ym1pdEZvcm0oe1xuICAgICAgICBldmVudFRyaWdnZXI6IHRoaXMuZXZlbnRUcmlnZ2VyLFxuICAgICAgICBmb3JtOiB0aGlzLmVkaXRGb3JtLFxuICAgICAgICBzdWJtaXQ6IHRoaXMuY2FzZUVkaXQuc3VibWl0LFxuICAgICAgICBjYXNlRGV0YWlsczogdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlsc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRXZlbnRDYW5CZUNvbXBsZXRlZChldmVudENhbkJlQ29tcGxldGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdC5vbkV2ZW50Q2FuQmVDb21wbGV0ZWQoe1xuICAgICAgZXZlbnRUcmlnZ2VyOiB0aGlzLmV2ZW50VHJpZ2dlcixcbiAgICAgIGV2ZW50Q2FuQmVDb21wbGV0ZWQsXG4gICAgICBjYXNlRGV0YWlsczogdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyxcbiAgICAgIGZvcm06IHRoaXMuZWRpdEZvcm0sXG4gICAgICBzdWJtaXQ6IHRoaXMuY2FzZUVkaXQuc3VibWl0XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2VUaXRsZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNhc2VGbGFnRmllbGQgPSB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5maW5kKGNhc2VGaWVsZCA9PiBGaWVsZHNVdGlscy5pc0Nhc2VGaWVsZE9mVHlwZShjYXNlRmllbGQsIFsnRmxhZ0xhdW5jaGVyJ10pKTtcbiAgICBpZiAoY2FzZUZsYWdGaWVsZCkge1xuICAgICAgY29uc3QgaXNDYXNlRmxhZ0V4dGVybmFsTW9kZSA9IGNhc2VGbGFnRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChVUERBVEUsRVhURVJOQUwpJyB8fFxuICAgICAgICBjYXNlRmxhZ0ZpZWxkLmRpc3BsYXlfY29udGV4dF9wYXJhbWV0ZXIgPT09ICcjQVJHVU1FTlQoQ1JFQVRFLEVYVEVSTkFMKSc7XG4gICAgICByZXR1cm4gaXNDYXNlRmxhZ0V4dGVybmFsTW9kZVxuICAgICAgICA/IENhc2VFZGl0U3VibWl0VGl0bGVzLlJFVklFV19TVVBQT1JUX1JFUVVFU1RcbiAgICAgICAgOiBDYXNlRWRpdFN1Ym1pdFRpdGxlcy5SRVZJRVdfRkxBR19ERVRBSUxTO1xuICAgIH1cbiAgICByZXR1cm4gQ2FzZUVkaXRTdWJtaXRUaXRsZXMuQ0hFQ0tfWU9VUl9BTlNXRVJTO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0Py5lcnJvcj8uY2FsbGJhY2tFcnJvcnM/Lmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvUGFnZShwYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQubmF2aWdhdGVUb1BhZ2UocGFnZUlkKTtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYmFja0Vycm9yc05vdGlmeShlcnJvckNvbnRleHQ6IENhbGxiYWNrRXJyb3JzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuY2FzZUVkaXQuaWdub3JlV2FybmluZyA9IGVycm9yQ29udGV4dC5pZ25vcmVXYXJuaW5nO1xuICAgIHRoaXMudHJpZ2dlclRleHQgPSBlcnJvckNvbnRleHQudHJpZ2dlclRleHQ7XG4gIH1cblxuICBwdWJsaWMgc3VtbWFyeUNhc2VGaWVsZChmaWVsZDogQ2FzZUZpZWxkKTogQ2FzZUZpZWxkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChudWxsID09PSB0aGlzLmVkaXRGb3JtLmdldCgnZGF0YScpLmdldChmaWVsZC5pZCkpIHtcbiAgICAgIC8vIElmIG5vdCBpbiBmb3JtLCByZXR1cm4gZmllbGQgaXRzZWxmXG4gICAgICByZXR1cm4gZmllbGQ7XG4gICAgfVxuXG4gICAgY29uc3QgY2xvbmVGaWVsZDogQ2FzZUZpZWxkID0gdGhpcy5maWVsZHNVdGlscy5jbG9uZUNhc2VGaWVsZChmaWVsZCk7XG4gICAgY2xvbmVGaWVsZC52YWx1ZSA9IHRoaXMuZWRpdEZvcm0uZ2V0KCdkYXRhJykuZ2V0KGZpZWxkLmlkKS52YWx1ZTtcblxuICAgIHJldHVybiBjbG9uZUZpZWxkO1xuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuY2FuX3NhdmVfZHJhZnQpIHtcbiAgICAgIGlmICh0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KENhc2VFZGl0Q29tcG9uZW50Lk9SSUdJTl9RVUVSWV9QQVJBTSkgPT09ICd2aWV3RHJhZnQnKSB7XG4gICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5SRVNVTUVEX0ZPUk1fRElTQ0FSRCB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoeyBzdGF0dXM6IENhc2VFZGl0UGFnZUNvbXBvbmVudC5ORVdfRk9STV9ESVNDQVJEIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhc2VFZGl0LmNhbmNlbGxlZC5lbWl0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzTGFiZWwoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNhc2VGaWVsZFNlcnZpY2UuaXNMYWJlbChmaWVsZCk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGFuZ2VBbGxvd2VkKGZpZWxkOiBDYXNlRmllbGQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuY2FzZUZpZWxkU2VydmljZS5pc1JlYWRPbmx5KGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuc2hvd19zdW1tYXJ5IHx8IHRoaXMuZXZlbnRUcmlnZ2VyLnNob3dfc3VtbWFyeSA9PT0gbnVsbCkge1xuICAgICAgZm9yIChjb25zdCBwYWdlIG9mIHRoaXMud2l6YXJkLnBhZ2VzKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmIChwYWdlLmNhc2VfZmllbGRzICYmIHRoaXMuaXNTaG93bihwYWdlKSkge1xuICAgICAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgcGFnZS5jYXNlX2ZpZWxkcykge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICAgIGlmICh0aGlzLmNhblNob3dGaWVsZEluQ1lBKGZpZWxkKSkge1xuICAgICAgICAgICAgICAvLyBhdCBsZWFzdCBvbmUgZmllbGQgbmVlZHMgc2hvd2luZ1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZm91bmQgbm8gZmllbGRzIHRvIHNob3cgaW4gQ1lBIHN1bW1hcnkgcGFnZVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLnNvbWUoKGZpZWxkKSA9PiBmaWVsZC5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPj0gMCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0V2ZW50Tm90ZXMoKTogYm9vbGVhbiB7XG4gICAgLy8gRGlzcGxheSBldmVudCBub3RlcyByZWxhdGVkIGNvbnRyb2xzIG9ubHkgaWYgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXRcbiAgICAvLyAxLiBzaG93X2V2ZW50X25vdGVzIGZsYWcgaXMgc2V0IHRvIHRydWVcbiAgICAvLyAyLiBwcm9maWxlIGlzIG5vdCBhIHNvbGljaXRvclxuICAgIC8vIDMuIGlzIG5vdCBhIGNhc2UgZmxhZ3Mgam91cm5leSwgYXMgaXQgdXNlcyBhIGN1c3RvbSBjaGVjayB5b3VyIGFuc3dlcnMgY29tcG9uZW50XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLnNob3dfZXZlbnRfbm90ZXMpIHtcbiAgICAgIHJldHVybiAhdGhpcy5wcm9maWxlPy5pc1NvbGljaXRvcigpXG4gICAgICAgICYmICF0aGlzLmNhc2VFZGl0LmlzQ2FzZUZsYWdTdWJtaXNzaW9uO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldExhc3RQYWdlU2hvd24oKTogV2l6YXJkUGFnZSB7XG4gICAgbGV0IGxhc3RQYWdlOiBXaXphcmRQYWdlO1xuICAgIHRoaXMud2l6YXJkLnJldmVyc2UoKS5mb3JFYWNoKChwYWdlKSA9PiB7XG4gICAgICBpZiAoIWxhc3RQYWdlICYmIHRoaXMuaXNTaG93bihwYWdlKSkge1xuICAgICAgICBsYXN0UGFnZSA9IHBhZ2U7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gbm9pbnNwZWN0aW9uIEpTVW51c2VkQXNzaWdubWVudFxuICAgIHJldHVybiBsYXN0UGFnZTtcbiAgfVxuXG4gIHB1YmxpYyBwcmV2aW91cygpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmhhc1ByZXZpb3VzKCkpIHtcbiAgICAgIHRoaXMubmF2aWdhdGVUb1BhZ2UodGhpcy5nZXRMYXN0UGFnZVNob3duKCkuaWQpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBoYXNQcmV2aW91cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmdldExhc3RQYWdlU2hvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1Nob3duKHBhZ2U6IFdpemFyZFBhZ2UpOiBib29sZWFuIHtcbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkc1V0aWxzXG4gICAgICAubWVyZ2VDYXNlRmllbGRzQW5kRm9ybUZpZWxkcyh0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcywgdGhpcy5lZGl0Rm9ybS5jb250cm9scy5kYXRhLnZhbHVlKTtcbiAgICByZXR1cm4gcGFnZS5wYXJzZWRTaG93Q29uZGl0aW9uLm1hdGNoKGZpZWxkcyk7XG4gIH1cblxuICBwdWJsaWMgY2FuU2hvd0ZpZWxkSW5DWUEoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmaWVsZC5zaG93X3N1bW1hcnlfY2hhbmdlX29wdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgc29ydEZpZWxkc0J5U2hvd1N1bW1hcnlDb250ZW50KGZpZWxkczogQ2FzZUZpZWxkW10pOiBDYXNlRmllbGRbXSB7XG4gICAgcmV0dXJuIHRoaXMub3JkZXJTZXJ2aWNlXG4gICAgICAuc29ydChmaWVsZHMsIENhc2VFZGl0U3VibWl0Q29tcG9uZW50LlNIT1dfU1VNTUFSWV9DT05URU5UX0NPTVBBUkVfRlVOQ1RJT04pXG4gICAgICAuZmlsdGVyKChjZikgPT4gY2Yuc2hvd19zdW1tYXJ5X2NvbnRlbnRfb3B0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkcygpOiBDYXNlRmllbGRbXSB7XG4gICAgaWYgKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpIHtcbiAgICAgIHJldHVybiBGaWVsZHNVdGlscy5nZXRDYXNlRmllbGRzKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5nZXRDYXNlSWQodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzICYmIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUgJiZcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA/IHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMuc3RhdGUudGl0bGVfZGlzcGxheSA6ICcnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYW5jZWxUZXh0KCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZXZlbnRUcmlnZ2VyLmNhbl9zYXZlX2RyYWZ0KSB7XG4gICAgICByZXR1cm4gJ1JldHVybiB0byBjYXNlIGxpc3QnO1xuICAgIH1cbiAgICByZXR1cm4gJ0NhbmNlbCc7XG4gIH1cbn1cblxuIiwiPGRpdj5cbiAgPCEtLSBFdmVudCB0cmlnZ2VyIG5hbWUgLS0+XG4gIDxoMSBjbGFzcz1cImdvdnVrLWhlYWRpbmctbFwiPnt7ZXZlbnRUcmlnZ2VyLm5hbWUgfCBycHhUcmFuc2xhdGV9fTwvaDE+XG5cbiAgPCEtLUNhc2UgSUQgb3IgVGl0bGUgLS0+XG4gIDxkaXYgKm5nSWY9XCJnZXRDYXNlVGl0bGUoKTsgdGhlbiB0aXRsZUJsb2NrOyBlbHNlIGlkQmxvY2tcIj48L2Rpdj5cbiAgPG5nLXRlbXBsYXRlICN0aXRsZUJsb2NrPlxuICAgIDxjY2QtbWFya2Rvd24gW2NvbnRlbnRdPVwiZ2V0Q2FzZVRpdGxlKCkgfCBjY2RDYXNlVGl0bGU6IGNvbnRleHRGaWVsZHMgOiBlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCI+PC9jY2QtbWFya2Rvd24+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxuZy10ZW1wbGF0ZSAjaWRCbG9jaz5cbiAgICA8aDIgKm5nSWY9XCJnZXRDYXNlSWQoKVwiIGNsYXNzPVwiaGVhZGluZy1oMlwiPiN7eyBnZXRDYXNlSWQoKSB8IGNjZENhc2VSZWZlcmVuY2UgfX08L2gyPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxjY2QtY2FzZS1lZGl0LWdlbmVyaWMtZXJyb3JzIFtlcnJvcl09XCJjYXNlRWRpdC5lcnJvclwiPjwvY2NkLWNhc2UtZWRpdC1nZW5lcmljLWVycm9ycz5cblxuICA8Y2NkLWNhbGxiYWNrLWVycm9ycyBbY2FsbGJhY2tFcnJvcnNTdWJqZWN0XT1cImNhc2VFZGl0LmNhbGxiYWNrRXJyb3JzU3ViamVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgKGNhbGxiYWNrRXJyb3JzQ29udGV4dCk9XCJjYWxsYmFja0Vycm9yc05vdGlmeSgkZXZlbnQpXCI+PC9jY2QtY2FsbGJhY2stZXJyb3JzPlxuXG4gIDxmb3JtIGNsYXNzPVwiY2hlY2steW91ci1hbnN3ZXJzXCIgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybVwiIChzdWJtaXQpPVwic3VibWl0KClcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWNhc2VFZGl0LmlzRXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWRcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGVja1lvdXJBbnN3ZXJGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuICAgICAgICA8aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+e3twYWdlVGl0bGUgfCBycHhUcmFuc2xhdGUgfX08L2gyPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIiAqbmdJZj1cIiFjYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvblwiPnt7J0NoZWNrIHRoZSBpbmZvcm1hdGlvbiBiZWxvdyBjYXJlZnVsbHkuJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cImZvcm0tdGFibGVcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiY2hlY2sgeW91ciBhbnN3ZXJzIHRhYmxlXCI+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhZ2Ugb2Ygd2l6YXJkLnBhZ2VzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNTaG93bihwYWdlKVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBwYWdlXG4gICAgICAgICAgICAgIHwgY2NkUGFnZUZpZWxkczogZWRpdEZvcm1cbiAgICAgICAgICAgICAgfCBjY2RSZWFkRmllbGRzRmlsdGVyOiBmYWxzZSA6dW5kZWZpbmVkIDp0cnVlIDphbGxGaWVsZHNWYWx1ZXNcbiAgICAgICAgICAgICAgfCBjY2RDWUFQYWdlTGFiZWxGaWx0ZXJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FuU2hvd0ZpZWxkSW5DWUEoZmllbGQpXCI+XG4gICAgICAgICAgICAgICAgICA8dHIgY2NkTGFiZWxTdWJzdGl0dXRvciBbY2FzZUZpZWxkXT1cImZpZWxkXCIgW2hpZGRlbl09XCJmaWVsZC5oaWRkZW5cIlxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWlzTGFiZWwoZmllbGQpICYmICFjYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvblwiIGNsYXNzPVwidmFsaWduLXRvcCBjYXNlLWZpZWxkLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LTE2XCI+e3tmaWVsZC5sYWJlbCB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWNlbGwgY2FzZS1maWVsZC1jb250ZW50XCIgW2F0dHIuY29sc3Bhbl09XCJpc0xhYmVsKGZpZWxkKSA/ICcyJyA6ICcxJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZFxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW3RvcExldmVsRm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Nhc2VGaWVsZF09XCJzdW1tYXJ5Q2FzZUZpZWxkKGZpZWxkKVwiIFtjb250ZXh0XT1cInBhbGV0dGVDb250ZXh0XCIgW2Nhc2VGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ2YWxpZ24tdG9wIGNoZWNrLXlvdXItYW5zd2Vyc19fY2hhbmdlIGNhc2UtZmllbGQtY2hhbmdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cImlzQ2hhbmdlQWxsb3dlZChmaWVsZClcIiAoY2xpY2spPVwibmF2aWdhdGVUb1BhZ2UocGFnZS5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiIGF0dHIuYXJpYS1sYWJlbD1cInt7J0NoYW5nZScgfCBycHhUcmFuc2xhdGV9fSB7eyBmaWVsZC5sYWJlbCB8IHJweFRyYW5zbGF0ZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0NoYW5nZScgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZWFkT25seVN1bW1hcnlGaWVsZHNUb0Rpc3BsYXlFeGlzdHMoKVwiPlxuXG4gICAgICAgIDx0YWJsZSBjbGFzcz1cInN1bW1hcnktZmllbGRzXCIgYXJpYS1kZXNjcmliZWRieT1cInN1bW1hcnkgZmllbGRzIHRhYmxlXCI+XG4gICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygc2hvd1N1bW1hcnlGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCIhKGZpZWxkIHwgY2NkSXNDb21wb3VuZClcIj5cbiAgICAgICAgICAgICAgICAgIDx0ciAqbmdTd2l0Y2hDYXNlPVwidHJ1ZVwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRoIGlkPVwic3VtbWFyeS1maWVsZC1sYWJlbFwiPnt7ZmllbGQubGFiZWx9fTwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvcm0tY2VsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cImZhbHNlXCIgY2xhc3M9XCJjb21wb3VuZC1maWVsZFwiIGNjZExhYmVsU3Vic3RpdHV0b3IgW2Nhc2VGaWVsZF09XCJmaWVsZFwiIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjb250ZXh0RmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj5cbiAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCIyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGNjZC1maWVsZC1yZWFkIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFtjYXNlRmllbGRdPVwic3VtbWFyeUNhc2VGaWVsZChmaWVsZClcIiBbY2FzZUZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+PC9jY2QtZmllbGQtcmVhZD5cbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RXZlbnROb3RlcygpXCI+XG4gICAgICAgIDxmaWVsZHNldCBpZD1cImZpZWxkc2V0LWV2ZW50XCIgZm9ybUdyb3VwTmFtZT1cImV2ZW50XCI+XG4gICAgICAgICAgPGxlZ2VuZCBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCI+PC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiAhIXN1bW1hcnkgJiYgIXN1bW1hcnkudmFsaWQgJiYgKHN1bW1hcnkuZGlydHkgfHwgc3VtbWFyeS50b3VjaGVkKX1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaWVsZC10cmlnZ2VyLXN1bW1hcnlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5cbiAgICAgICAgICAgICAgRXZlbnQgc3VtbWFyeSAob3B0aW9uYWwpXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1oaW50XCI+QSBmZXcgd29yZHMgZGVzY3JpYmluZyB0aGUgcHVycG9zZSBvZiB0aGUgZXZlbnQuPC9zcGFuPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwic3VtbWFyeT8uZXJyb3JzICYmIChzdW1tYXJ5LmRpcnR5IHx8IHN1bW1hcnkudG91Y2hlZClcIj5cbiAgICAgICAgICAgICAge3tzdW1tYXJ5LmVycm9ycyB8IGNjZEZpcnN0RXJyb3I6IGV2ZW50U3VtbWFyeUxhYmVsIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGlkPVwiZmllbGQtdHJpZ2dlci1zdW1tYXJ5XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYm90dG9tLTMwIHdpZHRoLTUwXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBzdW1tYXJ5Py5lcnJvcnMgJiYgKHN1bW1hcnkuZGlydHkgfHwgc3VtbWFyeS50b3VjaGVkKX1cIiBmb3JtQ29udHJvbE5hbWU9XCJzdW1tYXJ5XCIgbWF4bGVuZ3RoPVwiMTAyNFwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogISFkZXNjcmlwdGlvbiAmJiAhZGVzY3JpcHRpb24udmFsaWQgJiYgKGRlc2NyaXB0aW9uLmRpcnR5IHx8IGRlc2NyaXB0aW9uLnRvdWNoZWQpfVwiPlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZpZWxkLXRyaWdnZXItZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5FdmVudCBkZXNjcmlwdGlvbiAob3B0aW9uYWwpPC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiZGVzY3JpcHRpb24/LmVycm9ycyAmJiAoZGVzY3JpcHRpb24uZGlydHkgfHwgZGVzY3JpcHRpb24udG91Y2hlZClcIj5cbiAgICAgICAgICAgICAge3tkZXNjcmlwdGlvbi5lcnJvcnMgfCBjY2RGaXJzdEVycm9yOiBldmVudERlc2NyaXB0aW9uTGFiZWwgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHRleHRhcmVhIGlkPVwiZmllbGQtdHJpZ2dlci1kZXNjcmlwdGlvblwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGJvdHRvbS0zMCB3aWR0aC01MFwiIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydnb3Z1ay1pbnB1dC0tZXJyb3InOiBkZXNjcmlwdGlvbj8uZXJyb3JzICYmIChkZXNjcmlwdGlvbi5kaXJ0eSB8fCBkZXNjcmlwdGlvbi50b3VjaGVkKX1cIiBtYXhsZW5ndGg9XCI2NTUzNlwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8Y2NkLWNhc2UtZXZlbnQtY29tcGxldGlvbiAqbmdJZj1cImNhc2VFZGl0LmlzRXZlbnRDb21wbGV0aW9uQ2hlY2tzUmVxdWlyZWRcIlxuICAgICAgW2V2ZW50Q29tcGxldGlvblBhcmFtc109XCJjYXNlRWRpdC5ldmVudENvbXBsZXRpb25QYXJhbXNcIlxuICAgICAgKGV2ZW50Q2FuQmVDb21wbGV0ZWQpPVwib25FdmVudENhbkJlQ29tcGxldGVkKCRldmVudClcIj5cbiAgICA8L2NjZC1jYXNlLWV2ZW50LWNvbXBsZXRpb24+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZm9ybS1ncm91cC1yZWxhdGVkXCI+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIWNhc2VFZGl0LmlzQ2FzZUZsYWdTdWJtaXNzaW9uXCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWhhc1ByZXZpb3VzKCkgfHwgY2FzZUVkaXQuaXNTdWJtaXR0aW5nXCIgKGNsaWNrKT1cInByZXZpb3VzKClcIj5cbiAgICAgICAge3snUHJldmlvdXMnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIiBjbGFzcz1cImJ1dHRvblwiPlxuICAgICAgICB7e3RyaWdnZXJUZXh0IHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxwIGNsYXNzPVwiY2FuY2VsXCI+XG4gICAgICA8YSAoY2xpY2spPVwiY2FuY2VsKClcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgW2NsYXNzLmRpc2FibGVkXT1cImNhc2VFZGl0LmlzU3VibWl0dGluZ1wiPnt7Z2V0Q2FuY2VsVGV4dCgpIHwgcnB4VHJhbnNsYXRlfX08L2E+XG4gICAgPC9wPlxuICA8L2Zvcm0+XG48L2Rpdj5cblxuIl19
|
|
606
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1lZGl0LXN1Ym1pdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3IvY2FzZS1lZGl0LXN1Ym1pdC9jYXNlLWVkaXQtc3VibWl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLWVkaXRvci9jYXNlLWVkaXQtc3VibWl0L2Nhc2UtZWRpdC1zdWJtaXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixlQUFlLEVBQ2hCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLHVCQUF1QixFQUF5QixNQUFNLGFBQWEsQ0FBQztBQUM3RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7SUNicEUsc0JBQWlFOzs7SUFFL0QsbUNBQWtIOzs7O0lBQXBHLDZIQUFvRjs7O0lBR2xHLDhCQUEyQztJQUFBLFlBQXFDOztJQUFBLGlCQUFLOzs7SUFBMUMsY0FBcUM7SUFBckMsd0VBQXFDOzs7SUFBaEYscUZBQTJD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aUIsQUFBakIsQUFBdEIseUNBQXNCLDJCQUFpQix5QkFBWTtZQVEzQixlQUF3QjtZQUF4QiwwQ0FBd0I7WUFFakMsY0FBd0Q7WUFBeEQsMEVBQXdEO1lBRzVDLGNBQXNCO1lBQXRCLHdDQUFzQjtZQUMvQyxjQUErQztZQUEvQyxvRUFBK0M7WUF5RnpCLGNBQThDO1lBQTlDLG1FQUE4QztZQUsvRCxlQUFvQztZQUFwQyx5REFBb0M7WUFHdkIsY0FBdUI7WUFBdkIseUNBQXVCO1lBQzNDLGNBQ0Y7WUFERSx3RUFDRjtZQUdnRCxlQUF3QztZQUF4QyxxREFBd0M7WUFBQyxjQUFrQztZQUFsQyxpRUFBa0M7OztpRkQvRnBILHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLHNCQUFzQjs7a0ZBSXJCLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlRXZlbnRUcmlnZ2VyLCBDYXNlRmllbGQsIFByb2ZpbGUgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFzayc7XG5pbXBvcnQge1xuICBDYXNlRmllbGRTZXJ2aWNlLFxuICBGaWVsZHNVdGlscyxcbiAgRm9ybVZhbGlkYXRvcnNTZXJ2aWNlLFxuICBPcmRlclNlcnZpY2UsXG4gIFByb2ZpbGVOb3RpZmllclxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBDYWxsYmFja0Vycm9yc0NvbXBvbmVudCwgQ2FsbGJhY2tFcnJvcnNDb250ZXh0IH0gZnJvbSAnLi4vLi4vZXJyb3InO1xuaW1wb3J0IHsgUGFsZXR0ZUNvbnRleHQgfSBmcm9tICcuLi8uLi9wYWxldHRlJztcbmltcG9ydCB7IENhc2VFZGl0UGFnZUNvbXBvbmVudCB9IGZyb20gJy4uL2Nhc2UtZWRpdC1wYWdlL2Nhc2UtZWRpdC1wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYXNlRWRpdENvbXBvbmVudCB9IGZyb20gJy4uL2Nhc2UtZWRpdC9jYXNlLWVkaXQuY29tcG9uZW50JztcbmltcG9ydCB7IFdpemFyZCwgV2l6YXJkUGFnZSB9IGZyb20gJy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDYXNlRWRpdFN1Ym1pdFRpdGxlcyB9IGZyb20gJy4vY2FzZS1lZGl0LXN1Ym1pdC10aXRsZXMuZW51bSc7XG5cbi8vIEBkeW5hbWljXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2QtY2FzZS1lZGl0LXN1Ym1pdCcsXG4gIHRlbXBsYXRlVXJsOiAnY2FzZS1lZGl0LXN1Ym1pdC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4uL2Nhc2UtZWRpdC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZUVkaXRTdWJtaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBldmVudFRyaWdnZXI6IENhc2VFdmVudFRyaWdnZXI7XG4gIHB1YmxpYyBlZGl0Rm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgdHJpZ2dlclRleHQ6IHN0cmluZztcbiAgcHVibGljIHdpemFyZDogV2l6YXJkO1xuICBwdWJsaWMgcHJvZmlsZTogUHJvZmlsZTtcbiAgcHVibGljIHNob3dTdW1tYXJ5RmllbGRzOiBDYXNlRmllbGRbXTtcbiAgcHVibGljIHBhbGV0dGVDb250ZXh0OiBQYWxldHRlQ29udGV4dCA9IFBhbGV0dGVDb250ZXh0LkNIRUNLX1lPVVJfQU5TV0VSO1xuICBwdWJsaWMgcHJvZmlsZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwdWJsaWMgY29udGV4dEZpZWxkczogQ2FzZUZpZWxkW107XG4gIHB1YmxpYyB0YXNrOiBUYXNrO1xuICBwdWJsaWMgcGFnZVRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyBtZXRhZGF0YUZpZWxkc09iamVjdDogb2JqZWN0O1xuICBwdWJsaWMgYWxsRmllbGRzVmFsdWVzOiBhbnk7XG4gIHB1YmxpYyBzdW1tYXJ5OiBBYnN0cmFjdENvbnRyb2w7XG4gIHB1YmxpYyBkZXNjcmlwdGlvbjogQWJzdHJhY3RDb250cm9sO1xuICBwdWJsaWMgZXZlbnRTdW1tYXJ5TGFiZWw6IHN0cmluZyA9ICdFdmVudCBzdW1tYXJ5JztcbiAgcHVibGljIGV2ZW50RGVzY3JpcHRpb25MYWJlbDogc3RyaW5nID0gJ0V2ZW50IGRlc2NyaXB0aW9uJztcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNIT1dfU1VNTUFSWV9DT05URU5UX0NPTVBBUkVfRlVOQ1RJT04gPSAoYTogQ2FzZUZpZWxkLCBiOiBDYXNlRmllbGQpOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IGFDYXNlRmllbGQgPSBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiA9PT0gMCB8fCBhLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcbiAgICBjb25zdCBiQ2FzZUZpZWxkID0gYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gPT09IDAgfHwgYi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb247XG5cbiAgICBpZiAoIWFDYXNlRmllbGQpIHtcbiAgICAgIHJldHVybiAhYkNhc2VGaWVsZCA/IDAgOiAxO1xuICAgIH1cblxuICAgIGlmICghYkNhc2VGaWVsZCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICByZXR1cm4gYS5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24gLSBiLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbjtcbiAgfTtcblxuICBwdWJsaWMgZ2V0IGlzRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gRVVJLTM0NTIuXG4gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIGVkaXRGb3JtIGFzIGl0IGlzIHJlYWRvbmx5LlxuICAgIC8vIFRoaXMgd2FzIGNhdXNpbmcgaXNzdWVzIHdpdGggaGlkZGVuIGZpZWxkcyB0aGF0IGFyZW4ndCB3YW50ZWQgYnV0IGhhdmVcbiAgICAvLyBub3QgYmVlbiBkaXNhYmxlZC5cbiAgICByZXR1cm4gdGhpcy5jYXNlRWRpdC5pc1N1Ym1pdHRpbmcgfHwgdGhpcy5oYXNFcnJvcnM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgY2FzZUVkaXQ6IENhc2VFZGl0Q29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmllbGRzVXRpbHM6IEZpZWxkc1V0aWxzLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZUZpZWxkU2VydmljZTogQ2FzZUZpZWxkU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZmlsZU5vdGlmaWVyOiBQcm9maWxlTm90aWZpZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtVmFsaWRhdG9yc1NlcnZpY2U6IEZvcm1WYWxpZGF0b3JzU2VydmljZVxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnByb2ZpbGVTdWJzY3JpcHRpb24gPSB0aGlzLnByb2ZpbGVOb3RpZmllci5wcm9maWxlLnN1YnNjcmliZSgoXykgPT4gdGhpcy5wcm9maWxlID0gXyk7XG4gICAgdGhpcy5ldmVudFRyaWdnZXIgPSB0aGlzLmNhc2VFZGl0LmV2ZW50VHJpZ2dlcjtcbiAgICB0aGlzLnRyaWdnZXJUZXh0ID0gdGhpcy5ldmVudFRyaWdnZXIuZW5kX2J1dHRvbl9sYWJlbCB8fCBDYWxsYmFja0Vycm9yc0NvbXBvbmVudC5UUklHR0VSX1RFWFRfU1VCTUlUO1xuICAgIHRoaXMuZWRpdEZvcm0gPSB0aGlzLmNhc2VFZGl0LmZvcm07XG4gICAgdGhpcy53aXphcmQgPSB0aGlzLmNhc2VFZGl0LndpemFyZDtcbiAgICB0aGlzLnNob3dTdW1tYXJ5RmllbGRzID0gdGhpcy5zb3J0RmllbGRzQnlTaG93U3VtbWFyeUNvbnRlbnQodGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMpO1xuICAgIHRoaXMuY2FzZUVkaXQuaXNTdWJtaXR0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5jb250ZXh0RmllbGRzID0gdGhpcy5nZXRDYXNlRmllbGRzKCk7XG4gICAgdGhpcy5tZXRhZGF0YUZpZWxkc09iamVjdCA9IHRoaXMuY2FzZUVkaXQ/LmNhc2VEZXRhaWxzPy5tZXRhZGF0YUZpZWxkcz8uXG4gICAgICByZWR1Y2UoKG8sIGtleSkgPT4gT2JqZWN0LmFzc2lnbihvLCB7IFtrZXkuaWRdOiBrZXkudmFsdWUgfSksIHt9KTtcbiAgICB0aGlzLmFsbEZpZWxkc1ZhbHVlcyA9IE9iamVjdC5hc3NpZ24odGhpcy5tZXRhZGF0YUZpZWxkc09iamVjdCA/IHRoaXMubWV0YWRhdGFGaWVsZHNPYmplY3QgOiB7fSwgdGhpcy5lZGl0Rm9ybS5nZXRSYXdWYWx1ZSgpLmRhdGEpO1xuICAgIC8vIEluZGljYXRlcyBpZiB0aGUgc3VibWlzc2lvbiBpcyBmb3IgYSBDYXNlIEZsYWcsIGFzIG9wcG9zZWQgdG8gYSBcInJlZ3VsYXJcIiBmb3JtIHN1Ym1pc3Npb24sIGJ5IHRoZSBwcmVzZW5jZSBvZlxuICAgIC8vIGEgRmxhZ0xhdW5jaGVyIGZpZWxkIGluIHRoZSBldmVudCB0cmlnZ2VyXG4gICAgdGhpcy5jYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvbiA9XG4gICAgICB0aGlzLmV2ZW50VHJpZ2dlci5jYXNlX2ZpZWxkcy5zb21lKChjYXNlRmllbGQpID0+IEZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VGaWVsZCwgWydGbGFnTGF1bmNoZXInXSkpO1xuICAgIHRoaXMuY2FzZUVkaXQuaXNMaW5rZWRDYXNlc1N1Ym1pc3Npb24gPVxuICAgICAgdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMuc29tZShjYXNlRmllbGQgPT4gRmllbGRzVXRpbHMuaXNDYXNlRmllbGRPZlR5cGUoY2FzZUZpZWxkLCBbJ0NvbXBvbmVudExhdW5jaGVyJ10pKTtcbiAgICB0aGlzLnBhZ2VUaXRsZSA9IHRoaXMuZ2V0UGFnZVRpdGxlKCk7XG5cbiAgICB0aGlzLnN1bW1hcnkgPSB0aGlzLmZvcm1WYWxpZGF0b3JzU2VydmljZS5hZGRNYXJrRG93blZhbGlkYXRvcnModGhpcy5lZGl0Rm9ybSwgJ2V2ZW50LnN1bW1hcnknKTtcbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5mb3JtVmFsaWRhdG9yc1NlcnZpY2UuYWRkTWFya0Rvd25WYWxpZGF0b3JzKHRoaXMuZWRpdEZvcm0sICdldmVudC5kZXNjcmlwdGlvbicpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMucHJvZmlsZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5wcm9maWxlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zdW1tYXJ5LnZhbGlkICYmIHRoaXMuZGVzY3JpcHRpb24udmFsaWQpIHtcbiAgICAgIHRoaXMuY2FzZUVkaXQuc3VibWl0Rm9ybSh7XG4gICAgICAgIGV2ZW50VHJpZ2dlcjogdGhpcy5ldmVudFRyaWdnZXIsXG4gICAgICAgIGZvcm06IHRoaXMuZWRpdEZvcm0sXG4gICAgICAgIHN1Ym1pdDogdGhpcy5jYXNlRWRpdC5zdWJtaXQsXG4gICAgICAgIGNhc2VEZXRhaWxzOiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25FdmVudENhbkJlQ29tcGxldGVkKGV2ZW50Q2FuQmVDb21wbGV0ZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNhc2VFZGl0Lm9uRXZlbnRDYW5CZUNvbXBsZXRlZCh7XG4gICAgICBldmVudFRyaWdnZXI6IHRoaXMuZXZlbnRUcmlnZ2VyLFxuICAgICAgZXZlbnRDYW5CZUNvbXBsZXRlZCxcbiAgICAgIGNhc2VEZXRhaWxzOiB0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzLFxuICAgICAgZm9ybTogdGhpcy5lZGl0Rm9ybSxcbiAgICAgIHN1Ym1pdDogdGhpcy5jYXNlRWRpdC5zdWJtaXRcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGFnZVRpdGxlKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY2FzZUZsYWdGaWVsZCA9IHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLmZpbmQoY2FzZUZpZWxkID0+IEZpZWxkc1V0aWxzLmlzQ2FzZUZpZWxkT2ZUeXBlKGNhc2VGaWVsZCwgWydGbGFnTGF1bmNoZXInXSkpO1xuICAgIGlmIChjYXNlRmxhZ0ZpZWxkKSB7XG4gICAgICBjb25zdCBpc0Nhc2VGbGFnRXh0ZXJuYWxNb2RlID0gY2FzZUZsYWdGaWVsZC5kaXNwbGF5X2NvbnRleHRfcGFyYW1ldGVyID09PSAnI0FSR1VNRU5UKFVQREFURSxFWFRFUk5BTCknIHx8XG4gICAgICAgIGNhc2VGbGFnRmllbGQuZGlzcGxheV9jb250ZXh0X3BhcmFtZXRlciA9PT0gJyNBUkdVTUVOVChDUkVBVEUsRVhURVJOQUwpJztcbiAgICAgIHJldHVybiBpc0Nhc2VGbGFnRXh0ZXJuYWxNb2RlXG4gICAgICAgID8gQ2FzZUVkaXRTdWJtaXRUaXRsZXMuUkVWSUVXX1NVUFBPUlRfUkVRVUVTVFxuICAgICAgICA6IENhc2VFZGl0U3VibWl0VGl0bGVzLlJFVklFV19GTEFHX0RFVEFJTFM7XG4gICAgfVxuICAgIHJldHVybiBDYXNlRWRpdFN1Ym1pdFRpdGxlcy5DSEVDS19ZT1VSX0FOU1dFUlM7XG4gIH1cblxuICBwcml2YXRlIGdldCBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUVkaXQ/LmVycm9yPy5jYWxsYmFja0Vycm9ycz8ubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIG5hdmlnYXRlVG9QYWdlKHBhZ2VJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdC5uYXZpZ2F0ZVRvUGFnZShwYWdlSWQpO1xuICB9XG5cbiAgcHVibGljIGNhbGxiYWNrRXJyb3JzTm90aWZ5KGVycm9yQ29udGV4dDogQ2FsbGJhY2tFcnJvcnNDb250ZXh0KTogdm9pZCB7XG4gICAgdGhpcy5jYXNlRWRpdC5pZ25vcmVXYXJuaW5nID0gZXJyb3JDb250ZXh0Lmlnbm9yZVdhcm5pbmc7XG4gICAgdGhpcy50cmlnZ2VyVGV4dCA9IGVycm9yQ29udGV4dC50cmlnZ2VyVGV4dDtcbiAgfVxuXG4gIHB1YmxpYyBzdW1tYXJ5Q2FzZUZpZWxkKGZpZWxkOiBDYXNlRmllbGQpOiBDYXNlRmllbGQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKG51bGwgPT09IHRoaXMuZWRpdEZvcm0uZ2V0KCdkYXRhJykuZ2V0KGZpZWxkLmlkKSkge1xuICAgICAgLy8gSWYgbm90IGluIGZvcm0sIHJldHVybiBmaWVsZCBpdHNlbGZcbiAgICAgIHJldHVybiBmaWVsZDtcbiAgICB9XG5cbiAgICBjb25zdCBjbG9uZUZpZWxkOiBDYXNlRmllbGQgPSB0aGlzLmZpZWxkc1V0aWxzLmNsb25lQ2FzZUZpZWxkKGZpZWxkKTtcbiAgICBjbG9uZUZpZWxkLnZhbHVlID0gdGhpcy5lZGl0Rm9ybS5nZXQoJ2RhdGEnKS5nZXQoZmllbGQuaWQpLnZhbHVlO1xuXG4gICAgcmV0dXJuIGNsb25lRmllbGQ7XG4gIH1cblxuICBwdWJsaWMgY2FuY2VsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5jYW5fc2F2ZV9kcmFmdCkge1xuICAgICAgaWYgKHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoQ2FzZUVkaXRDb21wb25lbnQuT1JJR0lOX1FVRVJZX1BBUkFNKSA9PT0gJ3ZpZXdEcmFmdCcpIHtcbiAgICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlQ29tcG9uZW50LlJFU1VNRURfRk9STV9ESVNDQVJEIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jYXNlRWRpdC5jYW5jZWxsZWQuZW1pdCh7IHN0YXR1czogQ2FzZUVkaXRQYWdlQ29tcG9uZW50Lk5FV19GT1JNX0RJU0NBUkQgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2FzZUVkaXQuY2FuY2VsbGVkLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNMYWJlbChmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2FzZUZpZWxkU2VydmljZS5pc0xhYmVsKGZpZWxkKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NoYW5nZUFsbG93ZWQoZmllbGQ6IENhc2VGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5jYXNlRmllbGRTZXJ2aWNlLmlzUmVhZE9ubHkoZmllbGQpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrWW91ckFuc3dlckZpZWxkc1RvRGlzcGxheUV4aXN0cygpOiBib29sZWFuIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLmV2ZW50VHJpZ2dlci5zaG93X3N1bW1hcnkgfHwgdGhpcy5ldmVudFRyaWdnZXIuc2hvd19zdW1tYXJ5ID09PSBudWxsKSB7XG4gICAgICBmb3IgKGNvbnN0IHBhZ2Ugb2YgdGhpcy53aXphcmQucGFnZXMpIHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHBhZ2UuY2FzZV9maWVsZHMgJiYgdGhpcy5pc1Nob3duKHBhZ2UpKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBmaWVsZCBvZiBwYWdlLmNhc2VfZmllbGRzKSB7XG4gICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FuU2hvd0ZpZWxkSW5DWUEoZmllbGQpKSB7XG4gICAgICAgICAgICAgIC8vIGF0IGxlYXN0IG9uZSBmaWVsZCBuZWVkcyBzaG93aW5nXG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBmb3VuZCBubyBmaWVsZHMgdG8gc2hvdyBpbiBDWUEgc3VtbWFyeSBwYWdlXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlYWRPbmx5U3VtbWFyeUZpZWxkc1RvRGlzcGxheUV4aXN0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFRyaWdnZXIuY2FzZV9maWVsZHMuc29tZSgoZmllbGQpID0+IGZpZWxkLnNob3dfc3VtbWFyeV9jb250ZW50X29wdGlvbiA+PSAwKTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RXZlbnROb3RlcygpOiBib29sZWFuIHtcbiAgICAvLyBEaXNwbGF5IGV2ZW50IG5vdGVzIHJlbGF0ZWQgY29udHJvbHMgb25seSBpZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldFxuICAgIC8vIDEuIHNob3dfZXZlbnRfbm90ZXMgZmxhZyBpcyBzZXQgdG8gdHJ1ZVxuICAgIC8vIDIuIHByb2ZpbGUgaXMgbm90IGEgc29saWNpdG9yXG4gICAgLy8gMy4gaXMgbm90IGEgY2FzZSBmbGFncyBqb3VybmV5LCBhcyBpdCB1c2VzIGEgY3VzdG9tIGNoZWNrIHlvdXIgYW5zd2VycyBjb21wb25lbnRcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuc2hvd19ldmVudF9ub3Rlcykge1xuICAgICAgcmV0dXJuICF0aGlzLnByb2ZpbGU/LmlzU29saWNpdG9yKClcbiAgICAgICAgJiYgIXRoaXMuY2FzZUVkaXQuaXNDYXNlRmxhZ1N1Ym1pc3Npb247XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGFzdFBhZ2VTaG93bigpOiBXaXphcmRQYWdlIHtcbiAgICBsZXQgbGFzdFBhZ2U6IFdpemFyZFBhZ2U7XG4gICAgdGhpcy53aXphcmQucmV2ZXJzZSgpLmZvckVhY2goKHBhZ2UpID0+IHtcbiAgICAgIGlmICghbGFzdFBhZ2UgJiYgdGhpcy5pc1Nob3duKHBhZ2UpKSB7XG4gICAgICAgIGxhc3RQYWdlID0gcGFnZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBub2luc3BlY3Rpb24gSlNVbnVzZWRBc3NpZ25tZW50XG4gICAgcmV0dXJuIGxhc3RQYWdlO1xuICB9XG5cbiAgcHVibGljIHByZXZpb3VzKCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuaGFzUHJldmlvdXMoKSkge1xuICAgICAgdGhpcy5uYXZpZ2F0ZVRvUGFnZSh0aGlzLmdldExhc3RQYWdlU2hvd24oKS5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhc1ByZXZpb3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0TGFzdFBhZ2VTaG93bigpO1xuICB9XG5cbiAgcHVibGljIGlzU2hvd24ocGFnZTogV2l6YXJkUGFnZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuZmllbGRzVXRpbHNcbiAgICAgIC5tZXJnZUNhc2VGaWVsZHNBbmRGb3JtRmllbGRzKHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzLCB0aGlzLmVkaXRGb3JtLmNvbnRyb2xzLmRhdGEudmFsdWUpO1xuICAgIHJldHVybiBwYWdlLnBhcnNlZFNob3dDb25kaXRpb24ubWF0Y2goZmllbGRzKTtcbiAgfVxuXG4gIHB1YmxpYyBjYW5TaG93RmllbGRJbkNZQShmaWVsZDogQ2FzZUZpZWxkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpZWxkLnNob3dfc3VtbWFyeV9jaGFuZ2Vfb3B0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBzb3J0RmllbGRzQnlTaG93U3VtbWFyeUNvbnRlbnQoZmllbGRzOiBDYXNlRmllbGRbXSk6IENhc2VGaWVsZFtdIHtcbiAgICByZXR1cm4gdGhpcy5vcmRlclNlcnZpY2VcbiAgICAgIC5zb3J0KGZpZWxkcywgQ2FzZUVkaXRTdWJtaXRDb21wb25lbnQuU0hPV19TVU1NQVJZX0NPTlRFTlRfQ09NUEFSRV9GVU5DVElPTilcbiAgICAgIC5maWx0ZXIoKGNmKSA9PiBjZi5zaG93X3N1bW1hcnlfY29udGVudF9vcHRpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRzKCk6IENhc2VGaWVsZFtdIHtcbiAgICBpZiAodGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscykge1xuICAgICAgcmV0dXJuIEZpZWxkc1V0aWxzLmdldENhc2VGaWVsZHModGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXZlbnRUcmlnZ2VyLmNhc2VfZmllbGRzO1xuICB9XG5cbiAgcHVibGljIGdldENhc2VJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNhc2VFZGl0LmdldENhc2VJZCh0aGlzLmNhc2VFZGl0LmNhc2VEZXRhaWxzKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDYXNlVGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY2FzZUVkaXQuY2FzZURldGFpbHMgJiYgdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5zdGF0ZSAmJlxuICAgICAgdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5zdGF0ZS50aXRsZV9kaXNwbGF5ID8gdGhpcy5jYXNlRWRpdC5jYXNlRGV0YWlscy5zdGF0ZS50aXRsZV9kaXNwbGF5IDogJycpO1xuICB9XG5cbiAgcHVibGljIGdldENhbmNlbFRleHQoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5ldmVudFRyaWdnZXIuY2FuX3NhdmVfZHJhZnQpIHtcbiAgICAgIHJldHVybiAnUmV0dXJuIHRvIGNhc2UgbGlzdCc7XG4gICAgfVxuICAgIHJldHVybiAnQ2FuY2VsJztcbiAgfVxufVxuXG4iLCI8ZGl2PlxuICA8IS0tIEV2ZW50IHRyaWdnZXIgbmFtZSAtLT5cbiAgPGgxIGNsYXNzPVwiZ292dWstaGVhZGluZy1sXCI+e3tldmVudFRyaWdnZXIubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9oMT5cblxuICA8IS0tQ2FzZSBJRCBvciBUaXRsZSAtLT5cbiAgPGRpdiAqbmdJZj1cImdldENhc2VUaXRsZSgpOyB0aGVuIHRpdGxlQmxvY2s7IGVsc2UgaWRCbG9ja1wiPjwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3RpdGxlQmxvY2s+XG4gICAgPGNjZC1tYXJrZG93biBbY29udGVudF09XCJnZXRDYXNlVGl0bGUoKSB8IGNjZENhc2VUaXRsZTogY29udGV4dEZpZWxkcyA6IGVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIj48L2NjZC1tYXJrZG93bj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlICNpZEJsb2NrPlxuICAgIDxoMiAqbmdJZj1cImdldENhc2VJZCgpXCIgY2xhc3M9XCJoZWFkaW5nLWgyXCI+I3t7IGdldENhc2VJZCgpIHwgY2NkQ2FzZVJlZmVyZW5jZSB9fTwvaDI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPGNjZC1jYXNlLWVkaXQtZ2VuZXJpYy1lcnJvcnMgW2Vycm9yXT1cImNhc2VFZGl0LmVycm9yXCI+PC9jY2QtY2FzZS1lZGl0LWdlbmVyaWMtZXJyb3JzPlxuXG4gIDxjY2QtY2FsbGJhY2stZXJyb3JzIFtjYWxsYmFja0Vycm9yc1N1YmplY3RdPVwiY2FzZUVkaXQuY2FsbGJhY2tFcnJvcnNTdWJqZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2FsbGJhY2tFcnJvcnNDb250ZXh0KT1cImNhbGxiYWNrRXJyb3JzTm90aWZ5KCRldmVudClcIj48L2NjZC1jYWxsYmFjay1lcnJvcnM+XG5cbiAgPGZvcm0gY2xhc3M9XCJjaGVjay15b3VyLWFuc3dlcnNcIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKHN1Ym1pdCk9XCJzdWJtaXQoKVwiPlxuICAgIDxkaXYgKm5nSWY9XCIhY2FzZUVkaXQuaXNFdmVudENvbXBsZXRpb25DaGVja3NSZXF1aXJlZFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoZWNrWW91ckFuc3dlckZpZWxkc1RvRGlzcGxheUV4aXN0cygpXCI+XG4gICAgICAgIDxoMiBjbGFzcz1cImhlYWRpbmctaDJcIj57e3BhZ2VUaXRsZSB8IHJweFRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC0xNlwiICpuZ0lmPVwiIWNhc2VFZGl0LmlzQ2FzZUZsYWdTdWJtaXNzaW9uXCI+e3snQ2hlY2sgdGhlIGluZm9ybWF0aW9uIGJlbG93IGNhcmVmdWxseS4nIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwiZm9ybS10YWJsZVwiIGFyaWEtZGVzY3JpYmVkYnk9XCJjaGVjayB5b3VyIGFuc3dlcnMgdGFibGVcIj5cbiAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcGFnZSBvZiB3aXphcmQucGFnZXNcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Nob3duKHBhZ2UpXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHBhZ2VcbiAgICAgICAgICAgICAgfCBjY2RQYWdlRmllbGRzOiBlZGl0Rm9ybVxuICAgICAgICAgICAgICB8IGNjZFJlYWRGaWVsZHNGaWx0ZXI6IGZhbHNlIDp1bmRlZmluZWQgOnRydWUgOmFsbEZpZWxkc1ZhbHVlc1xuICAgICAgICAgICAgICB8IGNjZENZQVBhZ2VMYWJlbEZpbHRlclwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYW5TaG93RmllbGRJbkNZQShmaWVsZClcIj5cbiAgICAgICAgICAgICAgICAgIDx0ciBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbaGlkZGVuXT1cImZpZWxkLmhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2NvbnRleHRGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPlxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIhaXNMYWJlbChmaWVsZCkgJiYgIWNhc2VFZGl0LmlzQ2FzZUZsYWdTdWJtaXNzaW9uXCIgY2xhc3M9XCJ2YWxpZ24tdG9wIGNhc2UtZmllbGQtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIj57e2ZpZWxkLmxhYmVsIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImZvcm0tY2VsbCBjYXNlLWZpZWxkLWNvbnRlbnQgdGV4dC0xNlwiIFthdHRyLmNvbHNwYW5dPVwiaXNMYWJlbChmaWVsZCkgPyAnMicgOiAnMSdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBdPVwiZWRpdEZvcm0uY29udHJvbHNbJ2RhdGEnXVwiIFt0b3BMZXZlbEZvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYXNlRmllbGRdPVwic3VtbWFyeUNhc2VGaWVsZChmaWVsZClcIiBbY29udGV4dF09XCJwYWxldHRlQ29udGV4dFwiIFtjYXNlRmllbGRzXT1cImNvbnRleHRGaWVsZHNcIj48L2NjZC1maWVsZC1yZWFkPlxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWNhc2VFZGl0LmlzQ2FzZUZsYWdTdWJtaXNzaW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidmFsaWduLXRvcCBjaGVjay15b3VyLWFuc3dlcnNfX2NoYW5nZSBjYXNlLWZpZWxkLWNoYW5nZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJpc0NoYW5nZUFsbG93ZWQoZmllbGQpXCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9QYWdlKHBhZ2UuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtMTZcIiBhdHRyLmFyaWEtbGFiZWw9XCJ7eydDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlfX0ge3sgZmllbGQubGFiZWwgfCBycHhUcmFuc2xhdGUgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eydDaGFuZ2UnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVhZE9ubHlTdW1tYXJ5RmllbGRzVG9EaXNwbGF5RXhpc3RzKClcIj5cblxuICAgICAgICA8dGFibGUgY2xhc3M9XCJzdW1tYXJ5LWZpZWxkc1wiIGFyaWEtZGVzY3JpYmVkYnk9XCJzdW1tYXJ5IGZpZWxkcyB0YWJsZVwiPlxuICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHNob3dTdW1tYXJ5RmllbGRzXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiIShmaWVsZCB8IGNjZElzQ29tcG91bmQpXCI+XG4gICAgICAgICAgICAgICAgICA8dHIgKm5nU3dpdGNoQ2FzZT1cInRydWVcIiBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY29udGV4dEZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0aCBpZD1cInN1bW1hcnktZmllbGQtbGFiZWxcIj57e2ZpZWxkLmxhYmVsfX08L3RoPlxuICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJmb3JtLWNlbGxcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Y2NkLWZpZWxkLXJlYWQgW2Zvcm1Hcm91cF09XCJlZGl0Rm9ybS5jb250cm9sc1snZGF0YSddXCIgW2Nhc2VGaWVsZF09XCJzdW1tYXJ5Q2FzZUZpZWxkKGZpZWxkKVwiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgPHRyICpuZ1N3aXRjaENhc2U9XCJmYWxzZVwiIGNsYXNzPVwiY29tcG91bmQtZmllbGRcIiBjY2RMYWJlbFN1YnN0aXR1dG9yIFtjYXNlRmllbGRdPVwiZmllbGRcIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY29udGV4dEZpZWxkc109XCJjb250ZXh0RmllbGRzXCI+XG4gICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxjY2QtZmllbGQtcmVhZCBbZm9ybUdyb3VwXT1cImVkaXRGb3JtLmNvbnRyb2xzWydkYXRhJ11cIiBbY2FzZUZpZWxkXT1cInN1bW1hcnlDYXNlRmllbGQoZmllbGQpXCIgW2Nhc2VGaWVsZHNdPVwiY29udGV4dEZpZWxkc1wiPjwvY2NkLWZpZWxkLXJlYWQ+XG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0V2ZW50Tm90ZXMoKVwiPlxuICAgICAgICA8ZmllbGRzZXQgaWQ9XCJmaWVsZHNldC1ldmVudFwiIGZvcm1Hcm91cE5hbWU9XCJldmVudFwiPlxuICAgICAgICAgIDxsZWdlbmQgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiPjwvbGVnZW5kPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogISFzdW1tYXJ5ICYmICFzdW1tYXJ5LnZhbGlkICYmIChzdW1tYXJ5LmRpcnR5IHx8IHN1bW1hcnkudG91Y2hlZCl9XCI+XG4gICAgICAgICAgICA8bGFiZWwgZm9yPVwiZmllbGQtdHJpZ2dlci1zdW1tYXJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+XG4gICAgICAgICAgICAgIEV2ZW50IHN1bW1hcnkgKG9wdGlvbmFsKVxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZvcm0taGludFwiPkEgZmV3IHdvcmRzIGRlc2NyaWJpbmcgdGhlIHB1cnBvc2Ugb2YgdGhlIGV2ZW50Ljwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cInN1bW1hcnk/LmVycm9ycyAmJiAoc3VtbWFyeS5kaXJ0eSB8fCBzdW1tYXJ5LnRvdWNoZWQpXCI+XG4gICAgICAgICAgICAgIHt7c3VtbWFyeS5lcnJvcnMgfCBjY2RGaXJzdEVycm9yOiBldmVudFN1bW1hcnlMYWJlbCB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cImZpZWxkLXRyaWdnZXItc3VtbWFyeVwiIGNsYXNzPVwiZm9ybS1jb250cm9sIGJvdHRvbS0zMCB3aWR0aC01MFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogc3VtbWFyeT8uZXJyb3JzICYmIChzdW1tYXJ5LmRpcnR5IHx8IHN1bW1hcnkudG91Y2hlZCl9XCIgZm9ybUNvbnRyb2xOYW1lPVwic3VtbWFyeVwiIG1heGxlbmd0aD1cIjEwMjRcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIFtuZ0NsYXNzXT1cInsnZm9ybS1ncm91cC1lcnJvcic6ICEhZGVzY3JpcHRpb24gJiYgIWRlc2NyaXB0aW9uLnZhbGlkICYmIChkZXNjcmlwdGlvbi5kaXJ0eSB8fCBkZXNjcmlwdGlvbi50b3VjaGVkKX1cIj5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaWVsZC10cmlnZ2VyLWRlc2NyaXB0aW9uXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+RXZlbnQgZGVzY3JpcHRpb24gKG9wdGlvbmFsKTwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImRlc2NyaXB0aW9uPy5lcnJvcnMgJiYgKGRlc2NyaXB0aW9uLmRpcnR5IHx8IGRlc2NyaXB0aW9uLnRvdWNoZWQpXCI+XG4gICAgICAgICAgICAgIHt7ZGVzY3JpcHRpb24uZXJyb3JzIHwgY2NkRmlyc3RFcnJvcjogZXZlbnREZXNjcmlwdGlvbkxhYmVsIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD1cImZpZWxkLXRyaWdnZXItZGVzY3JpcHRpb25cIiBjbGFzcz1cImZvcm0tY29udHJvbCBib3R0b20tMzAgd2lkdGgtNTBcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZ292dWstaW5wdXQtLWVycm9yJzogZGVzY3JpcHRpb24/LmVycm9ycyAmJiAoZGVzY3JpcHRpb24uZGlydHkgfHwgZGVzY3JpcHRpb24udG91Y2hlZCl9XCIgbWF4bGVuZ3RoPVwiNjU1MzZcIj48L3RleHRhcmVhPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGNjZC1jYXNlLWV2ZW50LWNvbXBsZXRpb24gKm5nSWY9XCJjYXNlRWRpdC5pc0V2ZW50Q29tcGxldGlvbkNoZWNrc1JlcXVpcmVkXCJcbiAgICAgIFtldmVudENvbXBsZXRpb25QYXJhbXNdPVwiY2FzZUVkaXQuZXZlbnRDb21wbGV0aW9uUGFyYW1zXCJcbiAgICAgIChldmVudENhbkJlQ29tcGxldGVkKT1cIm9uRXZlbnRDYW5CZUNvbXBsZXRlZCgkZXZlbnQpXCI+XG4gICAgPC9jY2QtY2FzZS1ldmVudC1jb21wbGV0aW9uPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGZvcm0tZ3JvdXAtcmVsYXRlZFwiPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFjYXNlRWRpdC5pc0Nhc2VGbGFnU3VibWlzc2lvblwiIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFoYXNQcmV2aW91cygpIHx8IGNhc2VFZGl0LmlzU3VibWl0dGluZ1wiIChjbGljayk9XCJwcmV2aW91cygpXCI+XG4gICAgICAgIHt7J1ByZXZpb3VzJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCIgY2xhc3M9XCJidXR0b25cIj5cbiAgICAgICAge3t0cmlnZ2VyVGV4dCB8IHJweFRyYW5zbGF0ZX19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8cCBjbGFzcz1cImNhbmNlbFwiPlxuICAgICAgPGEgKGNsaWNrKT1cImNhbmNlbCgpXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFtjbGFzcy5kaXNhYmxlZF09XCJjYXNlRWRpdC5pc1N1Ym1pdHRpbmdcIj57e2dldENhbmNlbFRleHQoKSB8IHJweFRyYW5zbGF0ZX19PC9hPlxuICAgIDwvcD5cbiAgPC9mb3JtPlxuPC9kaXY+XG5cbiJdfQ==
|
|
@@ -272,8 +272,8 @@ export class LinkCasesComponent {
|
|
|
272
272
|
})), this.validatorsUtils.formArraySelectedValidator());
|
|
273
273
|
}
|
|
274
274
|
toggleLinkCaseReasonOtherComments(event) {
|
|
275
|
-
this.linkCaseReasons.find(
|
|
276
|
-
this.showComments = this.linkCaseReasons.find(
|
|
275
|
+
this.linkCaseReasons.find(reason => reason.value_en === event.target.value).selected = event.target.checked;
|
|
276
|
+
this.showComments = this.linkCaseReasons.find(reason => reason.value_en === 'Other').selected;
|
|
277
277
|
}
|
|
278
278
|
submitCaseInfo() {
|
|
279
279
|
this.errorMessages = [];
|
|
@@ -312,7 +312,7 @@ export class LinkCasesComponent {
|
|
|
312
312
|
this.errorMessages.push({
|
|
313
313
|
title: 'dummy-case-number',
|
|
314
314
|
description: LinkedCasesErrorMessages.CaseNumberError,
|
|
315
|
-
fieldId: 'caseNumber'
|
|
315
|
+
fieldId: 'caseNumber',
|
|
316
316
|
});
|
|
317
317
|
}
|
|
318
318
|
if (this.linkCaseForm.controls.reasonType.invalid) {
|
|
@@ -320,17 +320,17 @@ export class LinkCasesComponent {
|
|
|
320
320
|
this.errorMessages.push({
|
|
321
321
|
title: 'dummy-case-reason',
|
|
322
322
|
description: LinkedCasesErrorMessages.ReasonSelectionError,
|
|
323
|
-
fieldId: 'caseReason'
|
|
323
|
+
fieldId: 'caseReason',
|
|
324
324
|
});
|
|
325
325
|
}
|
|
326
326
|
if (this.linkCaseForm.controls.reasonType.valid
|
|
327
|
-
&& this.linkCaseReasons.find(
|
|
327
|
+
&& this.linkCaseReasons.find(reason => reason.value_en === 'Other').selected) {
|
|
328
328
|
if (this.linkCaseForm.controls.otherDescription.value.trim().length === 0) {
|
|
329
329
|
this.caseReasonCommentsError = LinkedCasesErrorMessages.otherDescriptionError;
|
|
330
330
|
this.errorMessages.push({
|
|
331
331
|
title: 'dummy-case-reason-comments',
|
|
332
332
|
description: LinkedCasesErrorMessages.otherDescriptionError,
|
|
333
|
-
fieldId: 'otherDescription'
|
|
333
|
+
fieldId: 'otherDescription',
|
|
334
334
|
});
|
|
335
335
|
}
|
|
336
336
|
if (this.linkCaseForm.controls.otherDescription.value.trim().length > 100) {
|
|
@@ -338,7 +338,7 @@ export class LinkCasesComponent {
|
|
|
338
338
|
this.errorMessages.push({
|
|
339
339
|
title: 'dummy-case-reason-comments',
|
|
340
340
|
description: LinkedCasesErrorMessages.otherDescriptionMaxLengthError,
|
|
341
|
-
fieldId: 'otherDescription'
|
|
341
|
+
fieldId: 'otherDescription',
|
|
342
342
|
});
|
|
343
343
|
}
|
|
344
344
|
}
|
|
@@ -347,7 +347,7 @@ export class LinkCasesComponent {
|
|
|
347
347
|
this.errorMessages.push({
|
|
348
348
|
title: 'dummy-case-number',
|
|
349
349
|
description: LinkedCasesErrorMessages.CaseProposedError,
|
|
350
|
-
fieldId: 'caseNumber'
|
|
350
|
+
fieldId: 'caseNumber',
|
|
351
351
|
});
|
|
352
352
|
}
|
|
353
353
|
if (this.isCaseSelected(this.linkedCasesService.linkedCases)) {
|
|
@@ -355,14 +355,14 @@ export class LinkCasesComponent {
|
|
|
355
355
|
this.errorMessages.push({
|
|
356
356
|
title: 'dummy-case-number',
|
|
357
357
|
description: LinkedCasesErrorMessages.CasesLinkedError,
|
|
358
|
-
fieldId: 'caseNumber'
|
|
358
|
+
fieldId: 'caseNumber',
|
|
359
359
|
});
|
|
360
360
|
}
|
|
361
361
|
if (this.linkCaseForm.value.caseNumber.split('-').join('') === this.linkedCasesService.caseId.split('-').join('')) {
|
|
362
362
|
this.errorMessages.push({
|
|
363
363
|
title: 'dummy-case-number',
|
|
364
364
|
description: LinkedCasesErrorMessages.ProposedCaseWithIn,
|
|
365
|
-
fieldId: 'caseNumber'
|
|
365
|
+
fieldId: 'caseNumber',
|
|
366
366
|
});
|
|
367
367
|
}
|
|
368
368
|
window.scrollTo(0, 0);
|
|
@@ -383,7 +383,7 @@ export class LinkCasesComponent {
|
|
|
383
383
|
caseState: caseView.state.name || '',
|
|
384
384
|
caseStateDescription: caseView.state.description || '',
|
|
385
385
|
caseService: caseView.case_type && caseView.case_type.jurisdiction && caseView.case_type.jurisdiction.description || '',
|
|
386
|
-
caseName: this.linkedCasesService.getCaseName(caseView)
|
|
386
|
+
caseName: this.linkedCasesService.getCaseName(caseView),
|
|
387
387
|
};
|
|
388
388
|
const ccdApiCaseLinkData = {
|
|
389
389
|
CaseReference: caseView.case_id,
|
|
@@ -396,7 +396,7 @@ export class LinkCasesComponent {
|
|
|
396
396
|
}
|
|
397
397
|
this.linkedCasesService.caseFieldValue.push({ id: caseView.case_id.toString(), value: ccdApiCaseLinkData });
|
|
398
398
|
this.selectedCases.push(caseLink);
|
|
399
|
-
this.linkCaseReasons.forEach(
|
|
399
|
+
this.linkCaseReasons.forEach(reason => reason.selected = false);
|
|
400
400
|
this.initForm();
|
|
401
401
|
this.emitLinkedCasesState(false);
|
|
402
402
|
}, (error) => {
|
|
@@ -404,7 +404,7 @@ export class LinkCasesComponent {
|
|
|
404
404
|
this.errorMessages.push({
|
|
405
405
|
title: 'dummy-case-number',
|
|
406
406
|
description: LinkedCasesErrorMessages.CaseCheckAgainError,
|
|
407
|
-
fieldId: 'caseNumber'
|
|
407
|
+
fieldId: 'caseNumber',
|
|
408
408
|
});
|
|
409
409
|
this.emitLinkedCasesState(false);
|
|
410
410
|
window.scrollTo(0, 0);
|
|
@@ -416,7 +416,7 @@ export class LinkCasesComponent {
|
|
|
416
416
|
this.linkedCasesStateEmitter.emit({
|
|
417
417
|
currentLinkedCasesPage: LinkedCasesPages.LINK_CASE,
|
|
418
418
|
errorMessages: this.errorMessages,
|
|
419
|
-
navigateToNextPage: isNavigateToNextPage
|
|
419
|
+
navigateToNextPage: isNavigateToNextPage,
|
|
420
420
|
});
|
|
421
421
|
}
|
|
422
422
|
getSelectedCaseReasons() {
|
|
@@ -451,7 +451,7 @@ export class LinkCasesComponent {
|
|
|
451
451
|
}
|
|
452
452
|
onSelectedLinkedCaseRemove(pos, selectedCaseReference) {
|
|
453
453
|
const caseFieldValue = this.linkedCasesService.caseFieldValue || [];
|
|
454
|
-
const updatedItems = caseFieldValue.filter(
|
|
454
|
+
const updatedItems = caseFieldValue.filter(item => item.value && item.value.CaseReference !== selectedCaseReference);
|
|
455
455
|
if (updatedItems) {
|
|
456
456
|
this.linkedCasesService.caseFieldValue = updatedItems;
|
|
457
457
|
}
|
|
@@ -472,7 +472,7 @@ export class LinkCasesComponent {
|
|
|
472
472
|
this.errorMessages.push({
|
|
473
473
|
title: 'dummy-case-selection',
|
|
474
474
|
description: LinkedCasesErrorMessages.CaseSelectionError,
|
|
475
|
-
fieldId: 'caseReason'
|
|
475
|
+
fieldId: 'caseReason',
|
|
476
476
|
});
|
|
477
477
|
navigateToNextPage = false;
|
|
478
478
|
}
|
|
@@ -540,4 +540,4 @@ export class LinkCasesComponent {
|
|
|
540
540
|
type: Output
|
|
541
541
|
}] }); })();
|
|
542
542
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LinkCasesComponent, { className: "LinkCasesComponent", filePath: "lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.ts", lineNumber: 24 }); })();
|
|
543
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1jYXNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9saW5rZWQtY2FzZXMvY29tcG9uZW50cy9saW5rLWNhc2VzL2xpbmstY2FzZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGlua2VkLWNhc2VzL2NvbXBvbmVudHMvbGluay1jYXNlcy9saW5rLWNhc2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQWEsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQVE5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7O0lDUG5ELEFBREYsZ0NBQTBELGVBQ3BCO0lBQUEsc0JBQU07SUFBQSxpQkFBTztJQUFDLFlBQ3BEO0lBQUEsaUJBQU87OztJQUQ2QyxlQUNwRDtJQURvRCx1REFDcEQ7OztJQVVFLEFBREYsZ0NBQTBELGVBQ3BCO0lBQUEsc0JBQU07SUFBQSxpQkFBTztJQUFDLFlBQ3BEO0lBQUEsaUJBQU87OztJQUQ2QyxlQUNwRDtJQURvRCx1REFDcEQ7Ozs7SUFHSSxBQURGLCtCQUE4RyxnQkFFWDtJQUFyRCw2TEFBVSxnREFBeUMsS0FBQztJQURoRyxpQkFDaUc7SUFDakcsaUNBQXdFO0lBQUEsWUFBbUI7SUFDN0YsQUFENkYsaUJBQVEsRUFDL0Y7Ozs7SUFKa0Ysc0NBQXFCO0lBQ3BFLGNBQW1CO0lBQW5CLDZDQUFtQjtJQUN4QywwQ0FBeUI7SUFDUSxjQUFvQjtJQUFwQiw4Q0FBb0I7SUFBQyxjQUFtQjtJQUFuQix3Q0FBbUI7OztJQU83RixBQURGLGdDQUFrRSxlQUM1QjtJQUFBLHNCQUFNO0lBQUEsaUJBQU87SUFBQyxZQUNwRDtJQUFBLGlCQUFPOzs7SUFENkMsZUFDcEQ7SUFEb0QsK0RBQ3BEOzs7SUFIQSxBQURGLCtCQUFrSyxhQUNwSTtJQUFBLHdCQUFRO0lBQUEsaUJBQUs7SUFDekMsa0ZBQWtFO0lBR2xFLG9DQUVpSDtJQUNqSCwwQkFBQTtJQUFBLGlCQUFXO0lBQ1gsK0JBQWlIO0lBQy9HLG9EQUNGO0lBQ0YsQUFERSxpQkFBTSxFQUNGOzs7SUFadUMsc0ZBQWtFO0lBRTFFLGVBQTZCO0lBQTdCLHFEQUE2Qjs7O0lBYWhFLEFBREYsZ0NBQTZELGVBQ3ZCO0lBQUEsc0JBQU07SUFBQSxpQkFBTztJQUFDLFlBQ3BEO0lBQUEsaUJBQU87OztJQUQ2QyxlQUNwRDtJQURvRCwwREFDcEQ7Ozs7SUF2Q0UsQUFERixBQURGLCtCQUF3RSxhQUNtQyxhQUMzRTtJQUFBLG9DQUFvQjtJQUFBLGlCQUFLO0lBQ3JELDJFQUEwRDtJQUcxRCw0QkFDYztJQUNoQixpQkFBTTtJQUVKLEFBREYsK0JBQTZGLGFBQy9EO0lBQUEsaURBQWlDO0lBQUEsaUJBQUs7SUFDbEUsK0JBQXdDO0lBQ3RDLHlDQUNGO0lBQUEsaUJBQU07SUFDTiw2RUFBMEQ7SUFHMUQsZ0NBQXdHO0lBQ3RHLDRFQUE4RztJQU1sSCxBQURFLGlCQUFNLEVBQ0Y7SUFDTiw0RUFBa0s7SUFhOUosQUFBSixzQkFBSSxVQUFJO0lBQ1IsNkVBQTZEO0lBRzdELG1DQUM2QjtJQUEzQiwrS0FBUyx1QkFBZ0IsS0FBQztJQUFDLGtDQUFpQjtJQUNoRCxBQURnRCxpQkFBUyxFQUNuRDs7O0lBNUNrQiwrQ0FBMEI7SUFDRixjQUEwRDtJQUExRCw4RUFBMEQ7SUFFbkUsZUFBcUI7SUFBckIsNkNBQXFCO0lBTXJELGVBQTBEO0lBQTFELCtFQUEwRDtJQUsxQixlQUFxQjtJQUFyQiw2Q0FBcUI7SUFJQyxlQUFtQjtJQUFuQixnREFBbUI7SUFPZ0UsY0FBa0I7SUFBbEIsMENBQWtCO0lBYzdILGVBQXdCO0lBQXhCLGdEQUF3Qjs7O0lBVXpELEFBREYsZ0NBQThELGVBQ3hCO0lBQUEsc0JBQU07SUFBQSxpQkFBTztJQUFDLFlBQ3BEO0lBQUEsaUJBQU87OztJQUQ2QyxlQUNwRDtJQURvRCwyREFDcEQ7OztJQXdCb0MsNEJBQ1U7SUFBQSxZQUFvQzs7SUFBQSxxQkFBSTtJQUFBLGlCQUFPOzs7SUFBL0MsY0FBb0M7SUFBcEMscURBQW9DOzs7O0lBVjVFLEFBREYsOEJBQWlGLGFBQ2pEO0lBQzVCLDBCQUVNO0lBQ04sNEJBQU07SUFBQSxZQUFrQjtJQUFBLHFCQUFJO0lBQUMsWUFBeUM7O0lBQ3hFLEFBRHdFLGlCQUFPLEVBQzFFO0lBQ0wsOEJBQWlFO0lBQUEsWUFBaUI7SUFBQSxpQkFBSztJQUN2RiwrQkFBOEI7SUFBQSxhQUFvQjtJQUFBLGlCQUFLO0lBQ3ZELCtCQUFrRTtJQUFBLGFBQWtCO0lBQUEsaUJBQUs7SUFDekYsK0JBQThCO0lBQUEsOEVBQ1U7SUFBK0MsaUJBQUs7SUFDOUQsQUFBOUIsK0JBQThCLGFBQ1U7SUFEd0IseVBBQVMsaUVBQW1ELEtBQUU7SUFDdEYsdUJBQU07SUFDaEQsQUFEb0QsQUFBSixpQkFBSSxFQUFLLEVBQ3BEOzs7O0lBWEMsZUFBNEc7SUFBNUcsa0pBQTRHO0lBRXhHLGVBQWtCO0lBQWxCLGdEQUFrQjtJQUFLLGVBQXlDO0lBQXpDLDRFQUF5QztJQUUxQyxlQUFrQztJQUFsQyxtREFBa0M7SUFBQyxjQUFpQjtJQUFqQixzQ0FBaUI7SUFDcEQsZUFBb0I7SUFBcEIseUNBQW9CO0lBQ3BCLGNBQW1DO0lBQW5DLG9EQUFtQztJQUFDLGNBQWtCO0lBQWxCLHVDQUFrQjtJQUU3RCxlQUFlO0lBQWYseUNBQWU7SUFDTCxlQUE4Qjs7OztJQUkvRCxBQURGLDhCQUEyRCxhQUNmO0lBQ3hDLHNCQUNGO0lBQ0YsQUFERSxpQkFBSyxFQUNGOztBRGpFakIsTUFBTSxPQUFPLGtCQUFrQjtJQW1CVjtJQUNBO0lBQ0E7SUFDQTtJQXBCWix1QkFBdUIsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7SUFFL0YsYUFBYSxHQUFtQixFQUFFLENBQUM7SUFDbkMsWUFBWSxDQUFZO0lBQ3hCLGFBQWEsR0FBZSxFQUFFLENBQUM7SUFDL0IsZUFBZSxDQUFTO0lBQ3hCLGVBQWUsQ0FBUztJQUN4Qix1QkFBdUIsQ0FBUztJQUNoQyxrQkFBa0IsQ0FBUztJQUMzQixtQkFBbUIsQ0FBUztJQUM1QixNQUFNLENBQVM7SUFDZixRQUFRLENBQVM7SUFDakIsZUFBZSxDQUFvQjtJQUNuQyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ1gsVUFBVSxHQUFHLHlCQUF5QixDQUFDO0lBRXhELFlBQ21CLFlBQTBCLEVBQzFCLEVBQWUsRUFDZixlQUFnQyxFQUNoQyxrQkFBc0M7UUFIdEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUksQ0FBQztJQUV2RCxRQUFRO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUM7UUFDL0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLDBFQUEwRTtZQUMxRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUM7UUFDM0QsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDO1FBQ2pGLENBQUM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDaEMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNsRyxVQUFVLEVBQUUsSUFBSSxDQUFDLHNCQUFzQjtZQUN2QyxnQkFBZ0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNwRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBVyxzQkFBc0I7UUFDL0IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNaLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFDZCxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3hCLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDeEIsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztZQUNoQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO1lBQ2hDLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUM7WUFDMUIsVUFBVSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztZQUM1QixRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztTQUMzQixDQUFDLENBQ0gsRUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLDBCQUEwQixFQUFFLENBQ2xELENBQUM7SUFDSixDQUFDO0lBRU0saUNBQWlDLENBQUMsS0FBVTtRQUNqRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUM5RyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQztJQUNuRyxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNoQyxJQUNFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSztZQUN2QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN4QyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQztZQUN6RCxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRTtZQUN2QyxDQUFDLElBQUksQ0FBQyxrREFBa0QsRUFBRSxFQUMxRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRU0sY0FBYyxDQUFDLFdBQXVCO1FBQzNDLElBQUksV0FBVyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDdEQsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDdkIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FDNUYsQ0FBQztJQUNKLENBQUM7SUFFTywrQkFBK0I7UUFDckMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkgsQ0FBQztJQUVPLGtEQUFrRDtRQUN4RCxPQUFPLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsZUFBZSxHQUFHLHdCQUF3QixDQUFDLGVBQWUsQ0FBQztZQUNoRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDdEIsS0FBSyxFQUFFLG1CQUFtQjtnQkFDMUIsV0FBVyxFQUFFLHdCQUF3QixDQUFDLGVBQWU7Z0JBQ3JELE9BQU8sRUFBRSxZQUFZO2FBQ3RCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsZUFBZSxHQUFHLHdCQUF3QixDQUFDLG9CQUFvQixDQUFDO1lBQ3JFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUN0QixLQUFLLEVBQUUsbUJBQW1CO2dCQUMxQixXQUFXLEVBQUUsd0JBQXdCLENBQUMsb0JBQW9CO2dCQUMxRCxPQUFPLEVBQUUsWUFBWTthQUN0QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSztlQUMxQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNqRixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyx3QkFBd0IsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDOUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ3RCLEtBQUssRUFBRSw0QkFBNEI7b0JBQ25DLFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxxQkFBcUI7b0JBQzNELE9BQU8sRUFBRSxrQkFBa0I7aUJBQzVCLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQzFFLElBQUksQ0FBQyx1QkFBdUIsR0FBRyx3QkFBd0IsQ0FBQyw4QkFBOEIsQ0FBQztnQkFDdkYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7b0JBQ3RCLEtBQUssRUFBRSw0QkFBNEI7b0JBQ25DLFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyw4QkFBOEI7b0JBQ3BFLE9BQU8sRUFBRSxrQkFBa0I7aUJBQzVCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQztZQUNyRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDdEIsS0FBSyxFQUFFLG1CQUFtQjtnQkFDMUIsV0FBVyxFQUFFLHdCQUF3QixDQUFDLGlCQUFpQjtnQkFDdkQsT0FBTyxFQUFFLFlBQVk7YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsd0JBQXdCLENBQUMsZ0JBQWdCLENBQUM7WUFDcEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLEtBQUssRUFBRSxtQkFBbUI7Z0JBQzFCLFdBQVcsRUFBRSx3QkFBd0IsQ0FBQyxnQkFBZ0I7Z0JBQ3RELE9BQU8sRUFBRSxZQUFZO2FBQ3RCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ2xILElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDO2dCQUN0QixLQUFLLEVBQUUsbUJBQW1CO2dCQUMxQixXQUFXLEVBQUUsd0JBQXdCLENBQUMsa0JBQWtCO2dCQUN4RCxPQUFPLEVBQUUsWUFBWTthQUN0QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxZQUFZO2FBQ2QsYUFBYSxDQUFDLGNBQWMsQ0FBQzthQUM3QixTQUFTLENBQ1IsQ0FBQyxRQUFrQixFQUFFLEVBQUU7WUFDckIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7WUFDL0MsTUFBTSxRQUFRLEdBQWE7Z0JBQ3pCLGFBQWEsRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDL0IsT0FBTyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtnQkFDdEMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQzNELFFBQVEsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUN2QyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsSUFBSSxFQUFFO2dCQUN6RCxTQUFTLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDcEMsb0JBQW9CLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRTtnQkFDdEQsV0FBVyxFQUFFLFFBQVEsQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxJQUFJLEVBQUU7Z0JBQ3ZILFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQzthQUN4RCxDQUFDO1lBQ0YsTUFBTSxrQkFBa0IsR0FBb0I7Z0JBQzFDLGFBQWEsRUFBRSxRQUFRLENBQUMsT0FBTztnQkFDL0IsUUFBUSxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDL0IsZUFBZSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7Z0JBQzNELGFBQWEsRUFBRSxJQUFJLENBQUMsNEJBQTRCLEVBQUU7YUFDbkQsQ0FBQztZQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1lBQzlDLENBQUM7WUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUM7WUFDNUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDLEVBQ0QsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLGVBQWUsR0FBRyx3QkFBd0IsQ0FBQyxtQkFBbUIsQ0FBQztZQUNwRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDdEIsS0FBSyxFQUFFLG1CQUFtQjtnQkFDMUIsV0FBVyxFQUFFLHdCQUF3QixDQUFDLG1CQUFtQjtnQkFDekQsT0FBTyxFQUFFLFlBQVk7YUFDdEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELDZEQUE2RDtJQUN0RCxvQkFBb0IsQ0FBQyxvQkFBNkI7UUFDdkQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQztZQUNoQyxzQkFBc0IsRUFBRSxnQkFBZ0IsQ0FBQyxTQUFTO1lBQ2xELGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxrQkFBa0IsRUFBRSxvQkFBb0I7U0FDekMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLHNCQUFzQjtRQUMzQixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2pELENBQUMsY0FBOEIsRUFBRSxFQUFFO1lBQ2pDLElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUM1QixlQUFlLENBQUMsSUFBSSxDQUFDO29CQUNuQixNQUFNLEVBQUUsY0FBYyxDQUFDLEdBQUc7b0JBQzFCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxRQUFRLEtBQUssT0FBTzt3QkFDbkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUs7d0JBQ25ELENBQUMsQ0FBQyxFQUFFO2lCQUNPLENBQUMsQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQyxDQUNGLENBQUM7UUFDRixPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRU0sNEJBQTRCO1FBQ2pDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDakQsQ0FBQyxjQUE4QixFQUFFLEVBQUU7WUFDakMsSUFBSSxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzVCLGVBQWUsQ0FBQyxJQUFJLENBQUM7b0JBQ25CLEtBQUssRUFBRTt3QkFDTCxNQUFNLEVBQUUsY0FBYyxDQUFDLEdBQUc7d0JBQzFCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxRQUFRLEtBQUssT0FBTzs0QkFDbkQsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEtBQUs7NEJBQ25ELENBQUMsQ0FBQyxFQUFFO3FCQUNQO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQ0YsQ0FBQztRQUNGLE9BQU8sZUFBZSxDQUFDO0lBQ3pCLENBQUM7SUFFTSwwQkFBMEIsQ0FBQyxHQUFHLEVBQUUscUJBQXFCO1FBQzFELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1FBQ3BFLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEtBQUsscUJBQXFCLENBQUMsQ0FBQztRQUN2SCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUMzRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQztZQUN2RSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztnQkFDdEIsS0FBSyxFQUFFLHNCQUFzQjtnQkFDN0IsV0FBVyxFQUFFLHdCQUF3QixDQUFDLGtCQUFrQjtnQkFDeEQsT0FBTyxFQUFFLFlBQVk7YUFDdEIsQ0FBQyxDQUFDO1lBQ0gsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNoRCxDQUFDOzRFQWpTVSxrQkFBa0I7NkRBQWxCLGtCQUFrQjtZQ3BCekIsQUFERixBQURGLEFBREYsOEJBQTRCLGFBQ1UsVUFDN0IsY0FDMkI7WUFBQSxZQUF3RDs7WUFBQSxpQkFBTztZQUM3Riw2QkFBNkI7WUFBQSxnRUFBZ0Q7WUFBQSxpQkFBSztZQUNsRixxRUFBd0U7WUE4Q3BFLEFBQUosQUFEQSxxQkFBSSxVQUNBLFVBQUk7WUFDUiwrQkFBNkc7WUFDM0csdUVBQThEO1lBSTVELEFBREYsaUNBQTJCLGtCQUNxQztZQUFBLHFDQUFvQjtZQUFBLGlCQUFVO1lBR3hGLEFBREYsQUFERixpQ0FBaUMsY0FDRixjQUM2QjtZQUFBLHFDQUFvQjtZQUFBLGlCQUFLO1lBQ2pGLCtCQUF3RDtZQUFBLDJCQUFVO1lBQUEsaUJBQUs7WUFDdkUsK0JBQXdEO1lBQUEsd0JBQU87WUFBQSxpQkFBSztZQUNwRSwrQkFBd0Q7WUFBQSxzQkFBSztZQUFBLGlCQUFLO1lBQ2xFLCtCQUF3RDtZQUFBLHNDQUFxQjtZQUFBLGlCQUFLO1lBQ2xGLDBCQUE0RDtZQUVoRSxBQURFLGlCQUFLLEVBQ0M7WUFDUixrQ0FBaUM7WUFnQi9CLEFBZkEsc0VBQWlGLHVEQWV0QjtZQU9qRSxBQURFLEFBREUsaUJBQVEsRUFDRixFQUNKO1lBRUosQUFERixnQ0FBZ0Msa0JBQzBEO1lBQW5CLGdHQUFTLFlBQVEsSUFBQztZQUFDLHFCQUFJO1lBSXBHLEFBREUsQUFERSxBQURFLEFBRDhGLGlCQUFTLEVBQ2pHLEVBQ0YsRUFDRixFQUNGOztZQTlGOEIsZUFBd0Q7WUFBeEQsZ0dBQXdEO1lBRWxDLGVBQWtCO1lBQWxCLHVDQUFrQjtZQStDeEIsZUFBOEQ7WUFBOUQsK0VBQThEO1lBQ3ZFLGNBQXlCO1lBQXpCLDhDQUF5QjtZQWdCVixnQkFBa0I7WUFBbEIsMkNBQWtCO1lBZWxDLGNBQTJCO1lBQTNCLGdEQUEyQjs7O2lGRDdEeEQsa0JBQWtCO2NBTDlCLFNBQVM7MkJBQ0UsZ0JBQWdCO3NJQU1uQix1QkFBdUI7a0JBRDdCLE1BQU07O2tGQURJLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2FzZVZpZXcsIEVycm9yTWVzc2FnZSwgSHR0cEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IExvdlJlZkRhdGFNb2RlbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL2NvbW1vbi1kYXRhLXNlcnZpY2UvY29tbW9uLWRhdGEtc2VydmljZSc7XG5pbXBvcnQgeyBDYXNlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9jYXNlLWVkaXRvci9zZXJ2aWNlcy9jYXNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IExpbmtlZENhc2VzU3RhdGUgfSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHtcbiAgQ2FzZUxpbmssXG4gIENDRENhc2VMaW5rVHlwZSxcbiAgTGlua0Nhc2VSZWFzb24sXG4gIExpbmtSZWFzb25cbn0gZnJvbSAnLi4vLi4vZG9tYWluL2xpbmtlZC1jYXNlcy5tb2RlbCc7XG5pbXBvcnQgeyBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMsIExpbmtlZENhc2VzUGFnZXMsIFBhdHRlcm5zIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgTGlua2VkQ2FzZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGlua2VkLWNhc2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdG9yc1V0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9ycy51dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1saW5rLWNhc2VzJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGluay1jYXNlcy5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vbGluay1jYXNlcy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTGlua0Nhc2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBsaW5rZWRDYXNlc1N0YXRlRW1pdHRlcjogRXZlbnRFbWl0dGVyPExpbmtlZENhc2VzU3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxMaW5rZWRDYXNlc1N0YXRlPigpO1xuXG4gIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBFcnJvck1lc3NhZ2VbXSA9IFtdO1xuICBwdWJsaWMgbGlua0Nhc2VGb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzZWxlY3RlZENhc2VzOiBDYXNlTGlua1tdID0gW107XG4gIHB1YmxpYyBjYXNlTnVtYmVyRXJyb3I6IHN0cmluZztcbiAgcHVibGljIGNhc2VSZWFzb25FcnJvcjogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVJlYXNvbkNvbW1lbnRzRXJyb3I6IHN0cmluZztcbiAgcHVibGljIGNhc2VTZWxlY3Rpb25FcnJvcjogc3RyaW5nO1xuICBwdWJsaWMgbm9TZWxlY3RlZENhc2VFcnJvcjogc3RyaW5nO1xuICBwdWJsaWMgY2FzZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgbGlua0Nhc2VSZWFzb25zOiBMb3ZSZWZEYXRhTW9kZWxbXTtcbiAgcHVibGljIHNob3dDb21tZW50cyA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IElTT19GT1JNQVQgPSAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWxpZGF0b3JzVXRpbHM6IFZhbGlkYXRvcnNVdGlscyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpbmtlZENhc2VzU2VydmljZTogTGlua2VkQ2FzZXNTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlSWQgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlSWQ7XG4gICAgdGhpcy5jYXNlTmFtZSA9IHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VOYW1lO1xuICAgIHRoaXMubGlua0Nhc2VSZWFzb25zID0gdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UubGlua0Nhc2VSZWFzb25zO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICBpZiAodGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuZWRpdE1vZGUpIHtcbiAgICAgIC8vIHRoaXMgbWF5IGhhdmUgaW5jbHVkZXMgdGhlIGN1cnJlbnRseSBhZGRlZCBvbmUgYnV0IHlldCB0byBiZSBzdWJtaXR0ZWQuXG4gICAgICB0aGlzLnNlbGVjdGVkQ2FzZXMgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5saW5rZWRDYXNlcztcbiAgICB9IGVsc2UgaWYgKHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmluaXRpYWxDYXNlTGlua3MubGVuZ3RoICE9PSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmxpbmtlZENhc2VzID0gdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuaW5pdGlhbENhc2VMaW5rcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5pdEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5saW5rQ2FzZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGNhc2VOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDE2KSwgdGhpcy52YWxpZGF0b3JzVXRpbHMucmVnZXhQYXR0ZXJuKFBhdHRlcm5zLkNBU0VfUkVGKV1dLFxuICAgICAgcmVhc29uVHlwZTogdGhpcy5nZXRSZWFzb25UeXBlRm9ybUFycmF5LFxuICAgICAgb3RoZXJEZXNjcmlwdGlvbjogWycnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV1dXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdldFJlYXNvblR5cGVGb3JtQXJyYXkoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5mYi5hcnJheShcbiAgICAgIHRoaXMubGlua0Nhc2VSZWFzb25zLm1hcCgodmFsKSA9PlxuICAgICAgICB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICBrZXk6IFt2YWwua2V5XSxcbiAgICAgICAgICB2YWx1ZV9lbjogW3ZhbC52YWx1ZV9lbl0sXG4gICAgICAgICAgdmFsdWVfY3k6IFt2YWwudmFsdWVfY3ldLFxuICAgICAgICAgIGhpbnRfdGV4dF9lbjogW3ZhbC5oaW50X3RleHRfZW5dLFxuICAgICAgICAgIGhpbnRfdGV4dF9jeTogW3ZhbC5oaW50X3RleHRfY3ldLFxuICAgICAgICAgIGxvdl9vcmRlcjogW3ZhbC5sb3Zfb3JkZXJdLFxuICAgICAgICAgIHBhcmVudF9rZXk6IFt2YWwucGFyZW50X2tleV0sXG4gICAgICAgICAgc2VsZWN0ZWQ6IFshIXZhbC5zZWxlY3RlZF0sXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdGhpcy52YWxpZGF0b3JzVXRpbHMuZm9ybUFycmF5U2VsZWN0ZWRWYWxpZGF0b3IoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTGlua0Nhc2VSZWFzb25PdGhlckNvbW1lbnRzKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxpbmtDYXNlUmVhc29ucy5maW5kKChyZWFzb24pID0+IHJlYXNvbi52YWx1ZV9lbiA9PT0gZXZlbnQudGFyZ2V0LnZhbHVlKS5zZWxlY3RlZCA9IGV2ZW50LnRhcmdldC5jaGVja2VkO1xuICAgIHRoaXMuc2hvd0NvbW1lbnRzID0gdGhpcy5saW5rQ2FzZVJlYXNvbnMuZmluZCgocmVhc29uKSA9PiByZWFzb24udmFsdWVfZW4gPT09ICdPdGhlcicpPy5zZWxlY3RlZDtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXRDYXNlSW5mbygpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICB0aGlzLmNhc2VSZWFzb25FcnJvciA9IG51bGw7XG4gICAgdGhpcy5jYXNlUmVhc29uQ29tbWVudHNFcnJvciA9IG51bGw7XG4gICAgdGhpcy5jYXNlTnVtYmVyRXJyb3IgPSBudWxsO1xuICAgIHRoaXMuY2FzZVNlbGVjdGlvbkVycm9yID0gbnVsbDtcbiAgICB0aGlzLm5vU2VsZWN0ZWRDYXNlRXJyb3IgPSBudWxsO1xuICAgIGlmIChcbiAgICAgIHRoaXMubGlua0Nhc2VGb3JtLnZhbGlkICYmXG4gICAgICAhdGhpcy5pc0Nhc2VTZWxlY3RlZCh0aGlzLnNlbGVjdGVkQ2FzZXMpICYmXG4gICAgICAhdGhpcy5pc0Nhc2VTZWxlY3RlZCh0aGlzLmxpbmtlZENhc2VzU2VydmljZS5saW5rZWRDYXNlcykgJiZcbiAgICAgICF0aGlzLmlzQ2FzZVNlbGVjdGVkU2FtZUFzQ3VycmVudENhc2UoKSAmJlxuICAgICAgIXRoaXMuaXNPdGhlck9wdGlvblNlbGVjdGVkQnV0T3RoZXJEZXNjcmlwdGlvbk5vdEVudGVyZWQoKVxuICAgICkge1xuICAgICAgdGhpcy5nZXRDYXNlSW5mbygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dFcnJvckluZm8oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNDYXNlU2VsZWN0ZWQobGlua2VkQ2FzZXM6IENhc2VMaW5rW10pOiBib29sZWFuIHtcbiAgICBpZiAobGlua2VkQ2FzZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGNhc2VOdW1iZXIgPSB0aGlzLmxpbmtDYXNlRm9ybS52YWx1ZS5jYXNlTnVtYmVyO1xuICAgIHJldHVybiAhIWxpbmtlZENhc2VzLmZpbmQoXG4gICAgICAoY2FzZUxpbmspID0+IGNhc2VMaW5rLmNhc2VSZWZlcmVuY2Uuc3BsaXQoJy0nKS5qb2luKCcnKSA9PT0gY2FzZU51bWJlci5zcGxpdCgnLScpLmpvaW4oJycpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDYXNlU2VsZWN0ZWRTYW1lQXNDdXJyZW50Q2FzZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5saW5rQ2FzZUZvcm0udmFsdWUuY2FzZU51bWJlci5zcGxpdCgnLScpLmpvaW4oJycpID09PSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlSWQuc3BsaXQoJy0nKS5qb2luKCcnKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNPdGhlck9wdGlvblNlbGVjdGVkQnV0T3RoZXJEZXNjcmlwdGlvbk5vdEVudGVyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0NvbW1lbnRzICYmIHRoaXMubGlua0Nhc2VGb3JtLnZhbHVlLm90aGVyRGVzY3JpcHRpb24udHJpbSgpLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIHB1YmxpYyBzaG93RXJyb3JJbmZvKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpbmtDYXNlRm9ybS5jb250cm9scy5jYXNlTnVtYmVyLmludmFsaWQpIHtcbiAgICAgIHRoaXMuY2FzZU51bWJlckVycm9yID0gTGlua2VkQ2FzZXNFcnJvck1lc3NhZ2VzLkNhc2VOdW1iZXJFcnJvcjtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICdkdW1teS1jYXNlLW51bWJlcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMuQ2FzZU51bWJlckVycm9yLFxuICAgICAgICBmaWVsZElkOiAnY2FzZU51bWJlcidcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5saW5rQ2FzZUZvcm0uY29udHJvbHMucmVhc29uVHlwZS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmNhc2VSZWFzb25FcnJvciA9IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5SZWFzb25TZWxlY3Rpb25FcnJvcjtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICdkdW1teS1jYXNlLXJlYXNvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMuUmVhc29uU2VsZWN0aW9uRXJyb3IsXG4gICAgICAgIGZpZWxkSWQ6ICdjYXNlUmVhc29uJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxpbmtDYXNlRm9ybS5jb250cm9scy5yZWFzb25UeXBlLnZhbGlkXG4gICAgICAmJiB0aGlzLmxpbmtDYXNlUmVhc29ucy5maW5kKChyZWFzb24pID0+IHJlYXNvbi52YWx1ZV9lbiA9PT0gJ090aGVyJykuc2VsZWN0ZWQpIHtcbiAgICAgIGlmICh0aGlzLmxpbmtDYXNlRm9ybS5jb250cm9scy5vdGhlckRlc2NyaXB0aW9uLnZhbHVlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5jYXNlUmVhc29uQ29tbWVudHNFcnJvciA9IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5vdGhlckRlc2NyaXB0aW9uRXJyb3I7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICB0aXRsZTogJ2R1bW15LWNhc2UtcmVhc29uLWNvbW1lbnRzJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogTGlua2VkQ2FzZXNFcnJvck1lc3NhZ2VzLm90aGVyRGVzY3JpcHRpb25FcnJvcixcbiAgICAgICAgICBmaWVsZElkOiAnb3RoZXJEZXNjcmlwdGlvbidcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5saW5rQ2FzZUZvcm0uY29udHJvbHMub3RoZXJEZXNjcmlwdGlvbi52YWx1ZS50cmltKCkubGVuZ3RoID4gMTAwKSB7XG4gICAgICAgIHRoaXMuY2FzZVJlYXNvbkNvbW1lbnRzRXJyb3IgPSBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMub3RoZXJEZXNjcmlwdGlvbk1heExlbmd0aEVycm9yO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgdGl0bGU6ICdkdW1teS1jYXNlLXJlYXNvbi1jb21tZW50cycsXG4gICAgICAgICAgZGVzY3JpcHRpb246IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5vdGhlckRlc2NyaXB0aW9uTWF4TGVuZ3RoRXJyb3IsXG4gICAgICAgICAgZmllbGRJZDogJ290aGVyRGVzY3JpcHRpb24nXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5pc0Nhc2VTZWxlY3RlZCh0aGlzLnNlbGVjdGVkQ2FzZXMpKSB7XG4gICAgICB0aGlzLmNhc2VTZWxlY3Rpb25FcnJvciA9IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5DYXNlUHJvcG9zZWRFcnJvcjtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICdkdW1teS1jYXNlLW51bWJlcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMuQ2FzZVByb3Bvc2VkRXJyb3IsXG4gICAgICAgIGZpZWxkSWQ6ICdjYXNlTnVtYmVyJ1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzQ2FzZVNlbGVjdGVkKHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmxpbmtlZENhc2VzKSkge1xuICAgICAgdGhpcy5jYXNlU2VsZWN0aW9uRXJyb3IgPSBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMuQ2FzZXNMaW5rZWRFcnJvcjtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICdkdW1teS1jYXNlLW51bWJlcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMuQ2FzZXNMaW5rZWRFcnJvcixcbiAgICAgICAgZmllbGRJZDogJ2Nhc2VOdW1iZXInXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMubGlua0Nhc2VGb3JtLnZhbHVlLmNhc2VOdW1iZXIuc3BsaXQoJy0nKS5qb2luKCcnKSA9PT0gdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZUlkLnNwbGl0KCctJykuam9pbignJykpIHtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICdkdW1teS1jYXNlLW51bWJlcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMuUHJvcG9zZWRDYXNlV2l0aEluLFxuICAgICAgICBmaWVsZElkOiAnY2FzZU51bWJlcidcbiAgICAgIH0pO1xuICAgIH1cbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgdGhpcy5lbWl0TGlua2VkQ2FzZXNTdGF0ZShmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZUluZm8oKTogdm9pZCB7XG4gICAgY29uc3QgY2FzZU51bWJlckRhdGEgPSB0aGlzLmxpbmtDYXNlRm9ybS52YWx1ZS5jYXNlTnVtYmVyLnJlcGxhY2UoL1stIF0vZywgJycpO1xuICAgIHRoaXMuY2FzZXNTZXJ2aWNlXG4gICAgICAuZ2V0Q2FzZVZpZXdWMihjYXNlTnVtYmVyRGF0YSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChjYXNlVmlldzogQ2FzZVZpZXcpID0+IHtcbiAgICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRGV0YWlscyA9IGNhc2VWaWV3O1xuICAgICAgICAgIGNvbnN0IGNhc2VMaW5rOiBDYXNlTGluayA9IHtcbiAgICAgICAgICAgIGNhc2VSZWZlcmVuY2U6IGNhc2VWaWV3LmNhc2VfaWQsXG4gICAgICAgICAgICByZWFzb25zOiB0aGlzLmdldFNlbGVjdGVkQ2FzZVJlYXNvbnMoKSxcbiAgICAgICAgICAgIGNyZWF0ZWREYXRlVGltZTogbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdCh0aGlzLklTT19GT1JNQVQpLFxuICAgICAgICAgICAgY2FzZVR5cGU6IGNhc2VWaWV3LmNhc2VfdHlwZS5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgY2FzZVR5cGVEZXNjcmlwdGlvbjogY2FzZVZpZXcuY2FzZV90eXBlLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICAgICAgY2FzZVN0YXRlOiBjYXNlVmlldy5zdGF0ZS5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgY2FzZVN0YXRlRGVzY3JpcHRpb246IGNhc2VWaWV3LnN0YXRlLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICAgICAgY2FzZVNlcnZpY2U6IGNhc2VWaWV3LmNhc2VfdHlwZSAmJiBjYXNlVmlldy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uICYmIGNhc2VWaWV3LmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgICAgICBjYXNlTmFtZTogdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuZ2V0Q2FzZU5hbWUoY2FzZVZpZXcpXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBjY2RBcGlDYXNlTGlua0RhdGE6IENDRENhc2VMaW5rVHlwZSA9IHtcbiAgICAgICAgICAgIENhc2VSZWZlcmVuY2U6IGNhc2VWaWV3LmNhc2VfaWQsXG4gICAgICAgICAgICBDYXNlVHlwZTogY2FzZVZpZXcuY2FzZV90eXBlLmlkLFxuICAgICAgICAgICAgQ3JlYXRlZERhdGVUaW1lOiBtb21lbnQobmV3IERhdGUoKSkuZm9ybWF0KHRoaXMuSVNPX0ZPUk1BVCksXG4gICAgICAgICAgICBSZWFzb25Gb3JMaW5rOiB0aGlzLmdldFNlbGVjdGVkQ0NEVHlwZUNhc2VSZWFzb24oKVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKCF0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZUZpZWxkVmFsdWUgPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZUZpZWxkVmFsdWUucHVzaCh7IGlkOiBjYXNlVmlldy5jYXNlX2lkLnRvU3RyaW5nKCksIHZhbHVlOiBjY2RBcGlDYXNlTGlua0RhdGEgfSk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENhc2VzLnB1c2goY2FzZUxpbmspO1xuICAgICAgICAgIHRoaXMubGlua0Nhc2VSZWFzb25zLmZvckVhY2goKHJlYXNvbikgPT4gcmVhc29uLnNlbGVjdGVkID0gZmFsc2UpO1xuICAgICAgICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICAgICAgICB0aGlzLmVtaXRMaW5rZWRDYXNlc1N0YXRlKGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgICAgKGVycm9yOiBIdHRwRXJyb3IpID0+IHtcbiAgICAgICAgICB0aGlzLmNhc2VOdW1iZXJFcnJvciA9IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5DYXNlQ2hlY2tBZ2FpbkVycm9yO1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiAnZHVtbXktY2FzZS1udW1iZXInLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5DYXNlQ2hlY2tBZ2FpbkVycm9yLFxuICAgICAgICAgICAgZmllbGRJZDogJ2Nhc2VOdW1iZXInXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5lbWl0TGlua2VkQ2FzZXNTdGF0ZShmYWxzZSk7XG4gICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIC8vIFJldHVybiBsaW5rZWQgY2FzZXMgc3RhdGUgYW5kIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBwYXJlbnRcbiAgcHVibGljIGVtaXRMaW5rZWRDYXNlc1N0YXRlKGlzTmF2aWdhdGVUb05leHRQYWdlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5saW5rZWRDYXNlc1N0YXRlRW1pdHRlci5lbWl0KHtcbiAgICAgIGN1cnJlbnRMaW5rZWRDYXNlc1BhZ2U6IExpbmtlZENhc2VzUGFnZXMuTElOS19DQVNFLFxuICAgICAgZXJyb3JNZXNzYWdlczogdGhpcy5lcnJvck1lc3NhZ2VzLFxuICAgICAgbmF2aWdhdGVUb05leHRQYWdlOiBpc05hdmlnYXRlVG9OZXh0UGFnZVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkQ2FzZVJlYXNvbnMoKTogTGlua1JlYXNvbltdIHtcbiAgICBjb25zdCBzZWxlY3RlZFJlYXNvbnMgPSBbXTtcbiAgICB0aGlzLmxpbmtDYXNlRm9ybS5jb250cm9scy5yZWFzb25UeXBlLnZhbHVlLmZvckVhY2goXG4gICAgICAoc2VsZWN0ZWRSZWFzb246IExpbmtDYXNlUmVhc29uKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZFJlYXNvbi5zZWxlY3RlZCkge1xuICAgICAgICAgIHNlbGVjdGVkUmVhc29ucy5wdXNoKHtcbiAgICAgICAgICAgIFJlYXNvbjogc2VsZWN0ZWRSZWFzb24ua2V5LFxuICAgICAgICAgICAgT3RoZXJEZXNjcmlwdGlvbjogc2VsZWN0ZWRSZWFzb24udmFsdWVfZW4gPT09ICdPdGhlcidcbiAgICAgICAgICAgICAgPyB0aGlzLmxpbmtDYXNlRm9ybS5jb250cm9scy5vdGhlckRlc2NyaXB0aW9uLnZhbHVlXG4gICAgICAgICAgICAgIDogJydcbiAgICAgICAgICB9IGFzIExpbmtSZWFzb24pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gc2VsZWN0ZWRSZWFzb25zO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkQ0NEVHlwZUNhc2VSZWFzb24oKTogTGlua1JlYXNvbltdIHtcbiAgICBjb25zdCBzZWxlY3RlZFJlYXNvbnMgPSBbXTtcbiAgICB0aGlzLmxpbmtDYXNlRm9ybS5jb250cm9scy5yZWFzb25UeXBlLnZhbHVlLmZvckVhY2goXG4gICAgICAoc2VsZWN0ZWRSZWFzb246IExpbmtDYXNlUmVhc29uKSA9PiB7XG4gICAgICAgIGlmIChzZWxlY3RlZFJlYXNvbi5zZWxlY3RlZCkge1xuICAgICAgICAgIHNlbGVjdGVkUmVhc29ucy5wdXNoKHtcbiAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgIFJlYXNvbjogc2VsZWN0ZWRSZWFzb24ua2V5LFxuICAgICAgICAgICAgICBPdGhlckRlc2NyaXB0aW9uOiBzZWxlY3RlZFJlYXNvbi52YWx1ZV9lbiA9PT0gJ090aGVyJ1xuICAgICAgICAgICAgICAgID8gdGhpcy5saW5rQ2FzZUZvcm0uY29udHJvbHMub3RoZXJEZXNjcmlwdGlvbi52YWx1ZVxuICAgICAgICAgICAgICAgIDogJydcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHNlbGVjdGVkUmVhc29ucztcbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdGVkTGlua2VkQ2FzZVJlbW92ZShwb3MsIHNlbGVjdGVkQ2FzZVJlZmVyZW5jZSk6IHZvaWQge1xuICAgIGNvbnN0IGNhc2VGaWVsZFZhbHVlID0gdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZUZpZWxkVmFsdWUgfHwgW107XG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zID0gY2FzZUZpZWxkVmFsdWUuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnZhbHVlICYmIGl0ZW0udmFsdWUuQ2FzZVJlZmVyZW5jZSAhPT0gc2VsZWN0ZWRDYXNlUmVmZXJlbmNlKTtcbiAgICBpZiAodXBkYXRlZEl0ZW1zKSB7XG4gICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZSA9IHVwZGF0ZWRJdGVtcztcbiAgICB9XG4gICAgdGhpcy5zZWxlY3RlZENhc2VzLnNwbGljZShwb3MsIDEpO1xuICB9XG5cbiAgcHVibGljIG9uTmV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICB0aGlzLmNhc2VSZWFzb25FcnJvciA9IG51bGw7XG4gICAgdGhpcy5jYXNlTnVtYmVyRXJyb3IgPSBudWxsO1xuICAgIHRoaXMuY2FzZVNlbGVjdGlvbkVycm9yID0gbnVsbDtcbiAgICB0aGlzLm5vU2VsZWN0ZWRDYXNlRXJyb3IgPSBudWxsO1xuICAgIGxldCBuYXZpZ2F0ZVRvTmV4dFBhZ2UgPSB0cnVlO1xuICAgIGlmICh0aGlzLnNlbGVjdGVkQ2FzZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5saW5rZWRDYXNlcyA9IHRoaXMuc2VsZWN0ZWRDYXNlcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub1NlbGVjdGVkQ2FzZUVycm9yID0gTGlua2VkQ2FzZXNFcnJvck1lc3NhZ2VzLkNhc2VTZWxlY3Rpb25FcnJvcjtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICdkdW1teS1jYXNlLXNlbGVjdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMuQ2FzZVNlbGVjdGlvbkVycm9yLFxuICAgICAgICBmaWVsZElkOiAnY2FzZVJlYXNvbidcbiAgICAgIH0pO1xuICAgICAgbmF2aWdhdGVUb05leHRQYWdlID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZW1pdExpbmtlZENhc2VzU3RhdGUobmF2aWdhdGVUb05leHRQYWdlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsXCI+XG4gICAgPGRpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCI+TGluayBjYXNlcyB0byB7e2Nhc2VOYW1lfX0ge3tjYXNlSWQgfCBjY2RDYXNlUmVmZXJlbmNlfX08L3NwYW4+XG4gICAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLXhsXCI+U2VsZWN0IGEmbmJzcDtjYXNlIHlvdSB3YW50IHRvIGxpbmsgdG8gdGhpcyBjYXNlPC9oMT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJsaW5rQ2FzZUZvcm1cIiAqbmdJZj1cImxpbmtDYXNlRm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIGlkPVwiY2FzZU51bWJlclwiIFtuZ0NsYXNzXT1cInsnZ292dWstZm9ybS1ncm91cC0tZXJyb3InOiAhIWNhc2VOdW1iZXJFcnJvcn1cIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLXNcIj5FbnRlciBjYXNlIHJlZmVyZW5jZTwvaDM+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJjYXNlTnVtYmVyRXJyb3JcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+RXJyb3I6PC9zcGFuPiB7e2Nhc2VOdW1iZXJFcnJvcn19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLWlucHV0IGdvdnVrLWlucHV0LS13aWR0aC0yMFwiIGZvcm1Db250cm9sTmFtZT1cImNhc2VOdW1iZXJcIiBpZD1cIndpZHRoLTIwXCIgbmFtZT1cIndpZHRoLTIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnZ292dWstZm9ybS1ncm91cC0tZXJyb3InOiAhIWNhc2VSZWFzb25FcnJvcn1cIiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLXRvcC0zXCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwiZ292dWstaGVhZGluZy1zXCI+V2h5IHNob3VsZCB0aGVzZSBjYXNlcyBiZSBsaW5rZWQ/PC9oMz5cbiAgICAgICAgICA8ZGl2IGlkPVwid2FzdGUtaGludFwiIGNsYXNzPVwiZ292dWstaGludFwiPlxuICAgICAgICAgICAgU2VsZWN0IGFsbCB0aGF0IGFwcGx5LlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiY2FzZVJlYXNvbkVycm9yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPkVycm9yOjwvc3Bhbj4ge3tjYXNlUmVhc29uRXJyb3J9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc1wiIGRhdGEtbW9kdWxlPVwiZ292dWstY2hlY2tib3hlc1wiIGZvcm1BcnJheU5hbWU9XCJyZWFzb25UeXBlXCIgaWQ9XCJjYXNlUmVhc29uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiICpuZ0Zvcj1cImxldCByZWFzb24gb2YgbGlua0Nhc2VSZWFzb25zO2luZGV4IGFzIHBvc1wiIFtmb3JtR3JvdXBOYW1lXT1cInBvc1wiPlxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pbnB1dFwiIGlkPVwie3tyZWFzb24ua2V5fX1cIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZFwiIG5hbWU9XCJwb3NcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIFt2YWx1ZV09XCJyZWFzb24udmFsdWVfZW5cIiAoY2hhbmdlKT1cInRvZ2dsZUxpbmtDYXNlUmVhc29uT3RoZXJDb21tZW50cygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCIgZm9yPVwie3tyZWFzb24ua2V5fX1cIj57e3JlYXNvbi52YWx1ZV9lbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIm90aGVyLWRlc2NyaXB0aW9uLWNoYXItbGltaXQtZXJyb3JcIiBbbmdDbGFzc109XCJ7J2dvdnVrLWZvcm0tZ3JvdXAtLWVycm9yJzogISFjYXNlUmVhc29uQ29tbWVudHNFcnJvcn1cIiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLXRvcC0zXCIgKm5nSWY9XCJzaG93Q29tbWVudHNcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLXNcIj5Db21tZW50czwvaDM+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJjYXNlUmVhc29uQ29tbWVudHNFcnJvclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj5FcnJvcjo8L3NwYW4+IHt7Y2FzZVJlYXNvbkNvbW1lbnRzRXJyb3J9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJnb3Z1ay10ZXh0YXJlYSBnb3Z1ay1pbnB1dC0td2lkdGgtMzBcIiBpZD1cIm90aGVyRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgbmFtZT1cIm90aGVyRGVzY3JpcHRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJvdGhlckRlc2NyaXB0aW9uXCIgcm93cz1cIjVcIlxuICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cIm90aGVyLWRlc2NyaXB0aW9uLWhpbnQgb3RoZXItZGVzY3JpcHRpb24tY2hhci1saW1pdC1pbmZvIG90aGVyLWRlc2NyaXB0aW9uLWNoYXItbGltaXQtZXJyb3JcIj5cbiAgICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICAgIDxkaXYgaWQ9XCJvdGhlci1kZXNjcmlwdGlvbi1jaGFyLWxpbWl0LWluZm9cIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBjbGFzcz1cImdvdnVrLWhpbnQgZ292dWstY2hhcmFjdGVyLWNvdW50X19tZXNzYWdlXCI+XG4gICAgICAgICAgICBZb3UgY2FuIGVudGVyIHVwIHRvIDEwMCBjaGFyYWN0ZXJzXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnI+PGJyPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImNhc2VTZWxlY3Rpb25FcnJvclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+RXJyb3I6PC9zcGFuPiB7e2Nhc2VTZWxlY3Rpb25FcnJvcn19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInByb3Bvc2VcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInN1Ym1pdENhc2VJbmZvKClcIj5Qcm9wb3NlIGNhc2UgbGluazwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8aHI+XG4gICAgICA8YnI+PGJyPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBpZD1cImNhc2VOdW1iZXJcIiBbbmdDbGFzc109XCJ7J2dvdnVrLWZvcm0tZ3JvdXAtLWVycm9yJzogISFub1NlbGVjdGVkQ2FzZUVycm9yfVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cIm5vU2VsZWN0ZWRDYXNlRXJyb3JcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPkVycm9yOjwvc3Bhbj4ge3tub1NlbGVjdGVkQ2FzZUVycm9yfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgICAgICAgIDxjYXB0aW9uIGNsYXNzPVwiZ292dWstdGFibGVfX2NhcHRpb24gZ292dWstdGFibGVfX2NhcHRpb24tLW1cIj5Qcm9wb3NlZCBjYXNlIGxpbmtzIDwvY2FwdGlvbj5cbiAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiB3aWR0aD1cIjMwMFwiPkNhc2UgbmFtZSBhbmQgbnVtYmVyPC90aD5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgd2lkdGg9XCIxNTBcIj5DYXNlIHR5cGUgPC90aD5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgd2lkdGg9XCIyMDBcIj5TZXJ2aWNlPC90aD5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgd2lkdGg9XCIyMDBcIj5TdGF0ZTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHdpZHRoPVwiNDAwXCI+UmVhc29ucyBmb3IgY2FzZSBsaW5rPC90aD5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgd2lkdGg9XCI1MFwiPjwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdGb3I9XCJsZXQgY2FzZSBvZiBzZWxlY3RlZENhc2VzOyBsZXQgcG9zID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cC0tZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0YWJsZS1ncm91cC1lcnJvcic6Y2FzZVNlbGVjdGlvbkVycm9yICYmIGNhc2UuY2FzZVJlZmVyZW5jZSA9PT0gbGlua0Nhc2VGb3JtLnZhbHVlLmNhc2VOdW1iZXJ9XCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3tjYXNlLmNhc2VOYW1lfX0gPGJyPiB7e2Nhc2UuY2FzZVJlZmVyZW5jZSB8IGNjZENhc2VSZWZlcmVuY2V9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiBbdGl0bGVdPVwiY2FzZS5jYXNlVHlwZURlc2NyaXB0aW9uXCI+e3tjYXNlLmNhc2VUeXBlfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7Y2FzZS5jYXNlU2VydmljZX19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiBbdGl0bGVdPVwiY2FzZS5jYXNlU3RhdGVEZXNjcmlwdGlvblwiPnt7Y2FzZS5jYXNlU3RhdGV9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+PHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByZWFzb24gb2YgY2FzZS5yZWFzb25zXCI+e3tyZWFzb24gfCBjY2RMaW5rQ2FzZXNSZWFzb25WYWx1ZX19PGJyPjwvc3Bhbj48L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPjxhIFthdHRyLmlkXT1cImNhc2UuY2FzZVJlZmVyZW5jZVwiIChjbGljayk9XCJvblNlbGVjdGVkTGlua2VkQ2FzZVJlbW92ZShwb3MsIGNhc2UuY2FzZVJlZmVyZW5jZSk7XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstbGluayBuby12aXNpdGVkLXN0YXRlXCI+UmVtb3ZlPC9hPjwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0lmPVwiIXNlbGVjdGVkQ2FzZXMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCIgY29sc3Bhbj1cIjZcIj5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JvdXBcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBidXR0b24tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBpZD1cIm5leHQtYnV0dG9uXCIgKGNsaWNrKT1cIm9uTmV4dCgpXCI+TmV4dDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
543
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1jYXNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvcGFsZXR0ZS9saW5rZWQtY2FzZXMvY29tcG9uZW50cy9saW5rLWNhc2VzL2xpbmstY2FzZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGlua2VkLWNhc2VzL2NvbXBvbmVudHMvbGluay1jYXNlcy9saW5rLWNhc2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQWEsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQVE5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7Ozs7O0lDUG5ELEFBREYsZ0NBQTBELGVBQ3BCO0lBQUEsc0JBQU07SUFBQSxpQkFBTztJQUFDLFlBQ3BEO0lBQUEsaUJBQU87OztJQUQ2QyxlQUNwRDtJQURvRCx1REFDcEQ7OztJQVVFLEFB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RCxrQkFBa0I7Y0FMOUIsU0FBUzsyQkFDRSxnQkFBZ0I7c0lBTW5CLHVCQUF1QjtrQkFEN0IsTUFBTTs7a0ZBREksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDYXNlVmlldywgRXJyb3JNZXNzYWdlLCBIdHRwRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgTG92UmVmRGF0YU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvY29tbW9uLWRhdGEtc2VydmljZS9jb21tb24tZGF0YS1zZXJ2aWNlJztcbmltcG9ydCB7IENhc2VzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Nhc2UtZWRpdG9yL3NlcnZpY2VzL2Nhc2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTGlua2VkQ2FzZXNTdGF0ZSB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQge1xuICBDYXNlTGluayxcbiAgQ0NEQ2FzZUxpbmtUeXBlLFxuICBMaW5rQ2FzZVJlYXNvbixcbiAgTGlua1JlYXNvblxufSBmcm9tICcuLi8uLi9kb21haW4vbGlua2VkLWNhc2VzLm1vZGVsJztcbmltcG9ydCB7IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcywgTGlua2VkQ2FzZXNQYWdlcywgUGF0dGVybnMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBMaW5rZWRDYXNlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9saW5rZWQtY2FzZXMuc2VydmljZSc7XG5pbXBvcnQgeyBWYWxpZGF0b3JzVXRpbHMgfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JzLnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLWxpbmstY2FzZXMnLFxuICBzdHlsZVVybHM6IFsnLi9saW5rLWNhc2VzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5rLWNhc2VzLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgTGlua0Nhc2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBsaW5rZWRDYXNlc1N0YXRlRW1pdHRlcjogRXZlbnRFbWl0dGVyPExpbmtlZENhc2VzU3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxMaW5rZWRDYXNlc1N0YXRlPigpO1xuXG4gIHB1YmxpYyBlcnJvck1lc3NhZ2VzOiBFcnJvck1lc3NhZ2VbXSA9IFtdO1xuICBwdWJsaWMgbGlua0Nhc2VGb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzZWxlY3RlZENhc2VzOiBDYXNlTGlua1tdID0gW107XG4gIHB1YmxpYyBjYXNlTnVtYmVyRXJyb3I6IHN0cmluZztcbiAgcHVibGljIGNhc2VSZWFzb25FcnJvcjogc3RyaW5nO1xuICBwdWJsaWMgY2FzZVJlYXNvbkNvbW1lbnRzRXJyb3I6IHN0cmluZztcbiAgcHVibGljIGNhc2VTZWxlY3Rpb25FcnJvcjogc3RyaW5nO1xuICBwdWJsaWMgbm9TZWxlY3RlZENhc2VFcnJvcjogc3RyaW5nO1xuICBwdWJsaWMgY2FzZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBjYXNlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgbGlua0Nhc2VSZWFzb25zOiBMb3ZSZWZEYXRhTW9kZWxbXTtcbiAgcHVibGljIHNob3dDb21tZW50cyA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IElTT19GT1JNQVQgPSAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1MnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2FzZXNTZXJ2aWNlOiBDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWxpZGF0b3JzVXRpbHM6IFZhbGlkYXRvcnNVdGlscyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpbmtlZENhc2VzU2VydmljZTogTGlua2VkQ2FzZXNTZXJ2aWNlKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlSWQgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlSWQ7XG4gICAgdGhpcy5jYXNlTmFtZSA9IHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VOYW1lO1xuICAgIHRoaXMubGlua0Nhc2VSZWFzb25zID0gdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UubGlua0Nhc2VSZWFzb25zO1xuICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICBpZiAodGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuZWRpdE1vZGUpIHtcbiAgICAgIC8vIHRoaXMgbWF5IGhhdmUgaW5jbHVkZXMgdGhlIGN1cnJlbnRseSBhZGRlZCBvbmUgYnV0IHlldCB0byBiZSBzdWJtaXR0ZWQuXG4gICAgICB0aGlzLnNlbGVjdGVkQ2FzZXMgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5saW5rZWRDYXNlcztcbiAgICB9IGVsc2UgaWYgKHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmluaXRpYWxDYXNlTGlua3MubGVuZ3RoICE9PSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmxpbmtlZENhc2VzID0gdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuaW5pdGlhbENhc2VMaW5rcztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5pdEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5saW5rQ2FzZUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGNhc2VOdW1iZXI6IFsnJywgW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDE2KSwgdGhpcy52YWxpZGF0b3JzVXRpbHMucmVnZXhQYXR0ZXJuKFBhdHRlcm5zLkNBU0VfUkVGKV1dLFxuICAgICAgcmVhc29uVHlwZTogdGhpcy5nZXRSZWFzb25UeXBlRm9ybUFycmF5LFxuICAgICAgb3RoZXJEZXNjcmlwdGlvbjogWycnLCBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwKV1dXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdldFJlYXNvblR5cGVGb3JtQXJyYXkoKTogRm9ybUFycmF5IHtcbiAgICByZXR1cm4gdGhpcy5mYi5hcnJheShcbiAgICAgIHRoaXMubGlua0Nhc2VSZWFzb25zLm1hcCgodmFsKSA9PlxuICAgICAgICB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAgICBrZXk6IFt2YWwua2V5XSxcbiAgICAgICAgICB2YWx1ZV9lbjogW3ZhbC52YWx1ZV9lbl0sXG4gICAgICAgICAgdmFsdWVfY3k6IFt2YWwudmFsdWVfY3ldLFxuICAgICAgICAgIGhpbnRfdGV4dF9lbjogW3ZhbC5oaW50X3RleHRfZW5dLFxuICAgICAgICAgIGhpbnRfdGV4dF9jeTogW3ZhbC5oaW50X3RleHRfY3ldLFxuICAgICAgICAgIGxvdl9vcmRlcjogW3ZhbC5sb3Zfb3JkZXJdLFxuICAgICAgICAgIHBhcmVudF9rZXk6IFt2YWwucGFyZW50X2tleV0sXG4gICAgICAgICAgc2VsZWN0ZWQ6IFshIXZhbC5zZWxlY3RlZF0sXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgdGhpcy52YWxpZGF0b3JzVXRpbHMuZm9ybUFycmF5U2VsZWN0ZWRWYWxpZGF0b3IoKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlTGlua0Nhc2VSZWFzb25PdGhlckNvbW1lbnRzKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmxpbmtDYXNlUmVhc29ucy5maW5kKHJlYXNvbiA9PiByZWFzb24udmFsdWVfZW4gPT09IGV2ZW50LnRhcmdldC52YWx1ZSkuc2VsZWN0ZWQgPSBldmVudC50YXJnZXQuY2hlY2tlZDtcbiAgICB0aGlzLnNob3dDb21tZW50cyA9IHRoaXMubGlua0Nhc2VSZWFzb25zLmZpbmQocmVhc29uID0+IHJlYXNvbi52YWx1ZV9lbiA9PT0gJ090aGVyJykuc2VsZWN0ZWQ7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0Q2FzZUluZm8oKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gW107XG4gICAgdGhpcy5jYXNlUmVhc29uRXJyb3IgPSBudWxsO1xuICAgIHRoaXMuY2FzZVJlYXNvbkNvbW1lbnRzRXJyb3IgPSBudWxsO1xuICAgIHRoaXMuY2FzZU51bWJlckVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNhc2VTZWxlY3Rpb25FcnJvciA9IG51bGw7XG4gICAgdGhpcy5ub1NlbGVjdGVkQ2FzZUVycm9yID0gbnVsbDtcbiAgICBpZiAoXG4gICAgICB0aGlzLmxpbmtDYXNlRm9ybS52YWxpZCAmJlxuICAgICAgIXRoaXMuaXNDYXNlU2VsZWN0ZWQodGhpcy5zZWxlY3RlZENhc2VzKSAmJlxuICAgICAgIXRoaXMuaXNDYXNlU2VsZWN0ZWQodGhpcy5saW5rZWRDYXNlc1NlcnZpY2UubGlua2VkQ2FzZXMpICYmXG4gICAgICAhdGhpcy5pc0Nhc2VTZWxlY3RlZFNhbWVBc0N1cnJlbnRDYXNlKCkgJiZcbiAgICAgICF0aGlzLmlzT3RoZXJPcHRpb25TZWxlY3RlZEJ1dE90aGVyRGVzY3JpcHRpb25Ob3RFbnRlcmVkKClcbiAgICApIHtcbiAgICAgIHRoaXMuZ2V0Q2FzZUluZm8oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93RXJyb3JJbmZvKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzQ2FzZVNlbGVjdGVkKGxpbmtlZENhc2VzOiBDYXNlTGlua1tdKTogYm9vbGVhbiB7XG4gICAgaWYgKGxpbmtlZENhc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjYXNlTnVtYmVyID0gdGhpcy5saW5rQ2FzZUZvcm0udmFsdWUuY2FzZU51bWJlcjtcbiAgICByZXR1cm4gISFsaW5rZWRDYXNlcy5maW5kKFxuICAgICAgKGNhc2VMaW5rKSA9PiBjYXNlTGluay5jYXNlUmVmZXJlbmNlLnNwbGl0KCctJykuam9pbignJykgPT09IGNhc2VOdW1iZXIuc3BsaXQoJy0nKS5qb2luKCcnKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzQ2FzZVNlbGVjdGVkU2FtZUFzQ3VycmVudENhc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlua0Nhc2VGb3JtLnZhbHVlLmNhc2VOdW1iZXIuc3BsaXQoJy0nKS5qb2luKCcnKSA9PT0gdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZUlkLnNwbGl0KCctJykuam9pbignJyk7XG4gIH1cblxuICBwcml2YXRlIGlzT3RoZXJPcHRpb25TZWxlY3RlZEJ1dE90aGVyRGVzY3JpcHRpb25Ob3RFbnRlcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNob3dDb21tZW50cyAmJiB0aGlzLmxpbmtDYXNlRm9ybS52YWx1ZS5vdGhlckRlc2NyaXB0aW9uLnRyaW0oKS5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwdWJsaWMgc2hvd0Vycm9ySW5mbygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5saW5rQ2FzZUZvcm0uY29udHJvbHMuY2FzZU51bWJlci5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmNhc2VOdW1iZXJFcnJvciA9IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5DYXNlTnVtYmVyRXJyb3I7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnZHVtbXktY2FzZS1udW1iZXInLFxuICAgICAgICBkZXNjcmlwdGlvbjogTGlua2VkQ2FzZXNFcnJvck1lc3NhZ2VzLkNhc2VOdW1iZXJFcnJvcixcbiAgICAgICAgZmllbGRJZDogJ2Nhc2VOdW1iZXInLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxpbmtDYXNlRm9ybS5jb250cm9scy5yZWFzb25UeXBlLmludmFsaWQpIHtcbiAgICAgIHRoaXMuY2FzZVJlYXNvbkVycm9yID0gTGlua2VkQ2FzZXNFcnJvck1lc3NhZ2VzLlJlYXNvblNlbGVjdGlvbkVycm9yO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICB0aXRsZTogJ2R1bW15LWNhc2UtcmVhc29uJyxcbiAgICAgICAgZGVzY3JpcHRpb246IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5SZWFzb25TZWxlY3Rpb25FcnJvcixcbiAgICAgICAgZmllbGRJZDogJ2Nhc2VSZWFzb24nLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxpbmtDYXNlRm9ybS5jb250cm9scy5yZWFzb25UeXBlLnZhbGlkXG4gICAgICAmJiB0aGlzLmxpbmtDYXNlUmVhc29ucy5maW5kKHJlYXNvbiA9PiByZWFzb24udmFsdWVfZW4gPT09ICdPdGhlcicpLnNlbGVjdGVkKSB7XG4gICAgICBpZiAodGhpcy5saW5rQ2FzZUZvcm0uY29udHJvbHMub3RoZXJEZXNjcmlwdGlvbi52YWx1ZS50cmltKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuY2FzZVJlYXNvbkNvbW1lbnRzRXJyb3IgPSBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMub3RoZXJEZXNjcmlwdGlvbkVycm9yO1xuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgdGl0bGU6ICdkdW1teS1jYXNlLXJlYXNvbi1jb21tZW50cycsXG4gICAgICAgICAgZGVzY3JpcHRpb246IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5vdGhlckRlc2NyaXB0aW9uRXJyb3IsXG4gICAgICAgICAgZmllbGRJZDogJ290aGVyRGVzY3JpcHRpb24nLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmxpbmtDYXNlRm9ybS5jb250cm9scy5vdGhlckRlc2NyaXB0aW9uLnZhbHVlLnRyaW0oKS5sZW5ndGggPiAxMDApIHtcbiAgICAgICAgdGhpcy5jYXNlUmVhc29uQ29tbWVudHNFcnJvciA9IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5vdGhlckRlc2NyaXB0aW9uTWF4TGVuZ3RoRXJyb3I7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgICB0aXRsZTogJ2R1bW15LWNhc2UtcmVhc29uLWNvbW1lbnRzJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogTGlua2VkQ2FzZXNFcnJvck1lc3NhZ2VzLm90aGVyRGVzY3JpcHRpb25NYXhMZW5ndGhFcnJvcixcbiAgICAgICAgICBmaWVsZElkOiAnb3RoZXJEZXNjcmlwdGlvbicsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5pc0Nhc2VTZWxlY3RlZCh0aGlzLnNlbGVjdGVkQ2FzZXMpKSB7XG4gICAgICB0aGlzLmNhc2VTZWxlY3Rpb25FcnJvciA9IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5DYXNlUHJvcG9zZWRFcnJvcjtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICdkdW1teS1jYXNlLW51bWJlcicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMuQ2FzZVByb3Bvc2VkRXJyb3IsXG4gICAgICAgIGZpZWxkSWQ6ICdjYXNlTnVtYmVyJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0Nhc2VTZWxlY3RlZCh0aGlzLmxpbmtlZENhc2VzU2VydmljZS5saW5rZWRDYXNlcykpIHtcbiAgICAgIHRoaXMuY2FzZVNlbGVjdGlvbkVycm9yID0gTGlua2VkQ2FzZXNFcnJvck1lc3NhZ2VzLkNhc2VzTGlua2VkRXJyb3I7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnZHVtbXktY2FzZS1udW1iZXInLFxuICAgICAgICBkZXNjcmlwdGlvbjogTGlua2VkQ2FzZXNFcnJvck1lc3NhZ2VzLkNhc2VzTGlua2VkRXJyb3IsXG4gICAgICAgIGZpZWxkSWQ6ICdjYXNlTnVtYmVyJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5saW5rQ2FzZUZvcm0udmFsdWUuY2FzZU51bWJlci5zcGxpdCgnLScpLmpvaW4oJycpID09PSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlSWQuc3BsaXQoJy0nKS5qb2luKCcnKSkge1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICB0aXRsZTogJ2R1bW15LWNhc2UtbnVtYmVyJyxcbiAgICAgICAgZGVzY3JpcHRpb246IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5Qcm9wb3NlZENhc2VXaXRoSW4sXG4gICAgICAgIGZpZWxkSWQ6ICdjYXNlTnVtYmVyJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgdGhpcy5lbWl0TGlua2VkQ2FzZXNTdGF0ZShmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2FzZUluZm8oKTogdm9pZCB7XG4gICAgY29uc3QgY2FzZU51bWJlckRhdGEgPSB0aGlzLmxpbmtDYXNlRm9ybS52YWx1ZS5jYXNlTnVtYmVyLnJlcGxhY2UoL1stIF0vZywgJycpO1xuICAgIHRoaXMuY2FzZXNTZXJ2aWNlXG4gICAgICAuZ2V0Q2FzZVZpZXdWMihjYXNlTnVtYmVyRGF0YSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChjYXNlVmlldzogQ2FzZVZpZXcpID0+IHtcbiAgICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRGV0YWlscyA9IGNhc2VWaWV3O1xuICAgICAgICAgIGNvbnN0IGNhc2VMaW5rOiBDYXNlTGluayA9IHtcbiAgICAgICAgICAgIGNhc2VSZWZlcmVuY2U6IGNhc2VWaWV3LmNhc2VfaWQsXG4gICAgICAgICAgICByZWFzb25zOiB0aGlzLmdldFNlbGVjdGVkQ2FzZVJlYXNvbnMoKSxcbiAgICAgICAgICAgIGNyZWF0ZWREYXRlVGltZTogbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdCh0aGlzLklTT19GT1JNQVQpLFxuICAgICAgICAgICAgY2FzZVR5cGU6IGNhc2VWaWV3LmNhc2VfdHlwZS5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgY2FzZVR5cGVEZXNjcmlwdGlvbjogY2FzZVZpZXcuY2FzZV90eXBlLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICAgICAgY2FzZVN0YXRlOiBjYXNlVmlldy5zdGF0ZS5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgY2FzZVN0YXRlRGVzY3JpcHRpb246IGNhc2VWaWV3LnN0YXRlLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgICAgICAgY2FzZVNlcnZpY2U6IGNhc2VWaWV3LmNhc2VfdHlwZSAmJiBjYXNlVmlldy5jYXNlX3R5cGUuanVyaXNkaWN0aW9uICYmIGNhc2VWaWV3LmNhc2VfdHlwZS5qdXJpc2RpY3Rpb24uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICAgICAgICBjYXNlTmFtZTogdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuZ2V0Q2FzZU5hbWUoY2FzZVZpZXcpLFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgY2NkQXBpQ2FzZUxpbmtEYXRhOiBDQ0RDYXNlTGlua1R5cGUgPSB7XG4gICAgICAgICAgICBDYXNlUmVmZXJlbmNlOiBjYXNlVmlldy5jYXNlX2lkLFxuICAgICAgICAgICAgQ2FzZVR5cGU6IGNhc2VWaWV3LmNhc2VfdHlwZS5pZCxcbiAgICAgICAgICAgIENyZWF0ZWREYXRlVGltZTogbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdCh0aGlzLklTT19GT1JNQVQpLFxuICAgICAgICAgICAgUmVhc29uRm9yTGluazogdGhpcy5nZXRTZWxlY3RlZENDRFR5cGVDYXNlUmVhc29uKClcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICghdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZUZpZWxkVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VGaWVsZFZhbHVlID0gW107XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VGaWVsZFZhbHVlLnB1c2goeyBpZDogY2FzZVZpZXcuY2FzZV9pZC50b1N0cmluZygpLCB2YWx1ZTogY2NkQXBpQ2FzZUxpbmtEYXRhIH0pO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlcy5wdXNoKGNhc2VMaW5rKTtcbiAgICAgICAgICB0aGlzLmxpbmtDYXNlUmVhc29ucy5mb3JFYWNoKHJlYXNvbiA9PiByZWFzb24uc2VsZWN0ZWQgPSBmYWxzZSk7XG4gICAgICAgICAgdGhpcy5pbml0Rm9ybSgpO1xuICAgICAgICAgIHRoaXMuZW1pdExpbmtlZENhc2VzU3RhdGUoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IEh0dHBFcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuY2FzZU51bWJlckVycm9yID0gTGlua2VkQ2FzZXNFcnJvck1lc3NhZ2VzLkNhc2VDaGVja0FnYWluRXJyb3I7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6ICdkdW1teS1jYXNlLW51bWJlcicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogTGlua2VkQ2FzZXNFcnJvck1lc3NhZ2VzLkNhc2VDaGVja0FnYWluRXJyb3IsXG4gICAgICAgICAgICBmaWVsZElkOiAnY2FzZU51bWJlcicsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5lbWl0TGlua2VkQ2FzZXNTdGF0ZShmYWxzZSk7XG4gICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIC8vIFJldHVybiBsaW5rZWQgY2FzZXMgc3RhdGUgYW5kIGVycm9yIG1lc3NhZ2VzIHRvIHRoZSBwYXJlbnRcbiAgcHVibGljIGVtaXRMaW5rZWRDYXNlc1N0YXRlKGlzTmF2aWdhdGVUb05leHRQYWdlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5saW5rZWRDYXNlc1N0YXRlRW1pdHRlci5lbWl0KHtcbiAgICAgIGN1cnJlbnRMaW5rZWRDYXNlc1BhZ2U6IExpbmtlZENhc2VzUGFnZXMuTElOS19DQVNFLFxuICAgICAgZXJyb3JNZXNzYWdlczogdGhpcy5lcnJvck1lc3NhZ2VzLFxuICAgICAgbmF2aWdhdGVUb05leHRQYWdlOiBpc05hdmlnYXRlVG9OZXh0UGFnZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZENhc2VSZWFzb25zKCk6IExpbmtSZWFzb25bXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRSZWFzb25zID0gW107XG4gICAgdGhpcy5saW5rQ2FzZUZvcm0uY29udHJvbHMucmVhc29uVHlwZS52YWx1ZS5mb3JFYWNoKFxuICAgICAgKHNlbGVjdGVkUmVhc29uOiBMaW5rQ2FzZVJlYXNvbikgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRSZWFzb24uc2VsZWN0ZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZFJlYXNvbnMucHVzaCh7XG4gICAgICAgICAgICBSZWFzb246IHNlbGVjdGVkUmVhc29uLmtleSxcbiAgICAgICAgICAgIE90aGVyRGVzY3JpcHRpb246IHNlbGVjdGVkUmVhc29uLnZhbHVlX2VuID09PSAnT3RoZXInXG4gICAgICAgICAgICAgID8gdGhpcy5saW5rQ2FzZUZvcm0uY29udHJvbHMub3RoZXJEZXNjcmlwdGlvbi52YWx1ZVxuICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgfSBhcyBMaW5rUmVhc29uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHNlbGVjdGVkUmVhc29ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXRTZWxlY3RlZENDRFR5cGVDYXNlUmVhc29uKCk6IExpbmtSZWFzb25bXSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRSZWFzb25zID0gW107XG4gICAgdGhpcy5saW5rQ2FzZUZvcm0uY29udHJvbHMucmVhc29uVHlwZS52YWx1ZS5mb3JFYWNoKFxuICAgICAgKHNlbGVjdGVkUmVhc29uOiBMaW5rQ2FzZVJlYXNvbikgPT4ge1xuICAgICAgICBpZiAoc2VsZWN0ZWRSZWFzb24uc2VsZWN0ZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZFJlYXNvbnMucHVzaCh7XG4gICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICBSZWFzb246IHNlbGVjdGVkUmVhc29uLmtleSxcbiAgICAgICAgICAgICAgT3RoZXJEZXNjcmlwdGlvbjogc2VsZWN0ZWRSZWFzb24udmFsdWVfZW4gPT09ICdPdGhlcidcbiAgICAgICAgICAgICAgICA/IHRoaXMubGlua0Nhc2VGb3JtLmNvbnRyb2xzLm90aGVyRGVzY3JpcHRpb24udmFsdWVcbiAgICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiBzZWxlY3RlZFJlYXNvbnM7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RlZExpbmtlZENhc2VSZW1vdmUocG9zLCBzZWxlY3RlZENhc2VSZWZlcmVuY2UpOiB2b2lkIHtcbiAgICBjb25zdCBjYXNlRmllbGRWYWx1ZSA9IHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VGaWVsZFZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IHVwZGF0ZWRJdGVtcyA9IGNhc2VGaWVsZFZhbHVlLmZpbHRlcihpdGVtID0+IGl0ZW0udmFsdWUgJiYgaXRlbS52YWx1ZS5DYXNlUmVmZXJlbmNlICE9PSBzZWxlY3RlZENhc2VSZWZlcmVuY2UpO1xuICAgIGlmICh1cGRhdGVkSXRlbXMpIHtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VGaWVsZFZhbHVlID0gdXBkYXRlZEl0ZW1zO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkQ2FzZXMuc3BsaWNlKHBvcywgMSk7XG4gIH1cblxuICBwdWJsaWMgb25OZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xuICAgIHRoaXMuY2FzZVJlYXNvbkVycm9yID0gbnVsbDtcbiAgICB0aGlzLmNhc2VOdW1iZXJFcnJvciA9IG51bGw7XG4gICAgdGhpcy5jYXNlU2VsZWN0aW9uRXJyb3IgPSBudWxsO1xuICAgIHRoaXMubm9TZWxlY3RlZENhc2VFcnJvciA9IG51bGw7XG4gICAgbGV0IG5hdmlnYXRlVG9OZXh0UGFnZSA9IHRydWU7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRDYXNlcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmxpbmtlZENhc2VzID0gdGhpcy5zZWxlY3RlZENhc2VzO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5vU2VsZWN0ZWRDYXNlRXJyb3IgPSBMaW5rZWRDYXNlc0Vycm9yTWVzc2FnZXMuQ2FzZVNlbGVjdGlvbkVycm9yO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICB0aXRsZTogJ2R1bW15LWNhc2Utc2VsZWN0aW9uJyxcbiAgICAgICAgZGVzY3JpcHRpb246IExpbmtlZENhc2VzRXJyb3JNZXNzYWdlcy5DYXNlU2VsZWN0aW9uRXJyb3IsXG4gICAgICAgIGZpZWxkSWQ6ICdjYXNlUmVhc29uJyxcbiAgICAgIH0pO1xuICAgICAgbmF2aWdhdGVUb05leHRQYWdlID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZW1pdExpbmtlZENhc2VzU3RhdGUobmF2aWdhdGVUb05leHRQYWdlKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImdvdnVrLWdyaWQtcm93XCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1mdWxsXCI+XG4gICAgPGRpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstY2FwdGlvbi1sXCI+TGluayBjYXNlcyB0byB7e2Nhc2VOYW1lfX0ge3tjYXNlSWQgfCBjY2RDYXNlUmVmZXJlbmNlfX08L3NwYW4+XG4gICAgICA8aDEgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLXhsXCI+U2VsZWN0IGEmbmJzcDtjYXNlIHlvdSB3YW50IHRvIGxpbmsgdG8gdGhpcyBjYXNlPC9oMT5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgW2Zvcm1Hcm91cF09XCJsaW5rQ2FzZUZvcm1cIiAqbmdJZj1cImxpbmtDYXNlRm9ybVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIGlkPVwiY2FzZU51bWJlclwiIFtuZ0NsYXNzXT1cInsnZ292dWstZm9ybS1ncm91cC0tZXJyb3InOiAhIWNhc2VOdW1iZXJFcnJvcn1cIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLXNcIj5FbnRlciBjYXNlIHJlZmVyZW5jZTwvaDM+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJjYXNlTnVtYmVyRXJyb3JcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+RXJyb3I6PC9zcGFuPiB7e2Nhc2VOdW1iZXJFcnJvcn19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLWlucHV0IGdvdnVrLWlucHV0LS13aWR0aC0yMFwiIGZvcm1Db250cm9sTmFtZT1cImNhc2VOdW1iZXJcIiBpZD1cIndpZHRoLTIwXCIgbmFtZT1cIndpZHRoLTIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnZ292dWstZm9ybS1ncm91cC0tZXJyb3InOiAhIWNhc2VSZWFzb25FcnJvcn1cIiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLXRvcC0zXCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwiZ292dWstaGVhZGluZy1zXCI+V2h5IHNob3VsZCB0aGVzZSBjYXNlcyBiZSBsaW5rZWQ/PC9oMz5cbiAgICAgICAgICA8ZGl2IGlkPVwid2FzdGUtaGludFwiIGNsYXNzPVwiZ292dWstaGludFwiPlxuICAgICAgICAgICAgU2VsZWN0IGFsbCB0aGF0IGFwcGx5LlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiY2FzZVJlYXNvbkVycm9yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPkVycm9yOjwvc3Bhbj4ge3tjYXNlUmVhc29uRXJyb3J9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc1wiIGRhdGEtbW9kdWxlPVwiZ292dWstY2hlY2tib3hlc1wiIGZvcm1BcnJheU5hbWU9XCJyZWFzb25UeXBlXCIgaWQ9XCJjYXNlUmVhc29uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiICpuZ0Zvcj1cImxldCByZWFzb24gb2YgbGlua0Nhc2VSZWFzb25zO2luZGV4IGFzIHBvc1wiIFtmb3JtR3JvdXBOYW1lXT1cInBvc1wiPlxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzX19pbnB1dFwiIGlkPVwie3tyZWFzb24ua2V5fX1cIiBmb3JtQ29udHJvbE5hbWU9XCJzZWxlY3RlZFwiIG5hbWU9XCJwb3NcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIFt2YWx1ZV09XCJyZWFzb24udmFsdWVfZW5cIiAoY2hhbmdlKT1cInRvZ2dsZUxpbmtDYXNlUmVhc29uT3RoZXJDb21tZW50cygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCIgZm9yPVwie3tyZWFzb24ua2V5fX1cIj57e3JlYXNvbi52YWx1ZV9lbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cIm90aGVyLWRlc2NyaXB0aW9uLWNoYXItbGltaXQtZXJyb3JcIiBbbmdDbGFzc109XCJ7J2dvdnVrLWZvcm0tZ3JvdXAtLWVycm9yJzogISFjYXNlUmVhc29uQ29tbWVudHNFcnJvcn1cIiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLXRvcC0zXCIgKm5nSWY9XCJzaG93Q29tbWVudHNcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJnb3Z1ay1oZWFkaW5nLXNcIj5Db21tZW50czwvaDM+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJjYXNlUmVhc29uQ29tbWVudHNFcnJvclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj5FcnJvcjo8L3NwYW4+IHt7Y2FzZVJlYXNvbkNvbW1lbnRzRXJyb3J9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJnb3Z1ay10ZXh0YXJlYSBnb3Z1ay1pbnB1dC0td2lkdGgtMzBcIiBpZD1cIm90aGVyRGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgbmFtZT1cIm90aGVyRGVzY3JpcHRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJvdGhlckRlc2NyaXB0aW9uXCIgcm93cz1cIjVcIlxuICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cIm90aGVyLWRlc2NyaXB0aW9uLWhpbnQgb3RoZXItZGVzY3JpcHRpb24tY2hhci1saW1pdC1pbmZvIG90aGVyLWRlc2NyaXB0aW9uLWNoYXItbGltaXQtZXJyb3JcIj5cbiAgICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICAgIDxkaXYgaWQ9XCJvdGhlci1kZXNjcmlwdGlvbi1jaGFyLWxpbWl0LWluZm9cIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBjbGFzcz1cImdvdnVrLWhpbnQgZ292dWstY2hhcmFjdGVyLWNvdW50X19tZXNzYWdlXCI+XG4gICAgICAgICAgICBZb3UgY2FuIGVudGVyIHVwIHRvIDEwMCBjaGFyYWN0ZXJzXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnI+PGJyPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImNhc2VTZWxlY3Rpb25FcnJvclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+RXJyb3I6PC9zcGFuPiB7e2Nhc2VTZWxlY3Rpb25FcnJvcn19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInByb3Bvc2VcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJnb3Z1ay1idXR0b24gZ292dWstYnV0dG9uLS1zZWNvbmRhcnlcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInN1Ym1pdENhc2VJbmZvKClcIj5Qcm9wb3NlIGNhc2UgbGluazwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8aHI+XG4gICAgICA8YnI+PGJyPlxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBpZD1cImNhc2VOdW1iZXJcIiBbbmdDbGFzc109XCJ7J2dvdnVrLWZvcm0tZ3JvdXAtLWVycm9yJzogISFub1NlbGVjdGVkQ2FzZUVycm9yfVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cIm5vU2VsZWN0ZWRDYXNlRXJyb3JcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPkVycm9yOjwvc3Bhbj4ge3tub1NlbGVjdGVkQ2FzZUVycm9yfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJnb3Z1ay10YWJsZVwiPlxuICAgICAgICAgIDxjYXB0aW9uIGNsYXNzPVwiZ292dWstdGFibGVfX2NhcHRpb24gZ292dWstdGFibGVfX2NhcHRpb24tLW1cIj5Qcm9wb3NlZCBjYXNlIGxpbmtzIDwvY2FwdGlvbj5cbiAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZFwiPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiPlxuICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIiBjbGFzcz1cImdvdnVrLXRhYmxlX19oZWFkZXJcIiB3aWR0aD1cIjMwMFwiPkNhc2UgbmFtZSBhbmQgbnVtYmVyPC90aD5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgd2lkdGg9XCIxNTBcIj5DYXNlIHR5cGUgPC90aD5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgd2lkdGg9XCIyMDBcIj5TZXJ2aWNlPC90aD5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgd2lkdGg9XCIyMDBcIj5TdGF0ZTwvdGg+XG4gICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwiZ292dWstdGFibGVfX2hlYWRlclwiIHdpZHRoPVwiNDAwXCI+UmVhc29ucyBmb3IgY2FzZSBsaW5rPC90aD5cbiAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJnb3Z1ay10YWJsZV9faGVhZGVyXCIgd2lkdGg9XCI1MFwiPjwvdGg+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgPHRib2R5IGNsYXNzPVwiZ292dWstdGFibGVfX2JvZHlcIj5cbiAgICAgICAgICAgIDx0ciBjbGFzcz1cImdvdnVrLXRhYmxlX19yb3dcIiAqbmdGb3I9XCJsZXQgY2FzZSBvZiBzZWxlY3RlZENhc2VzOyBsZXQgcG9zID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cC0tZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0YWJsZS1ncm91cC1lcnJvcic6Y2FzZVNlbGVjdGlvbkVycm9yICYmIGNhc2UuY2FzZVJlZmVyZW5jZSA9PT0gbGlua0Nhc2VGb3JtLnZhbHVlLmNhc2VOdW1iZXJ9XCI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3tjYXNlLmNhc2VOYW1lfX0gPGJyPiB7e2Nhc2UuY2FzZVJlZmVyZW5jZSB8IGNjZENhc2VSZWZlcmVuY2V9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiBbdGl0bGVdPVwiY2FzZS5jYXNlVHlwZURlc2NyaXB0aW9uXCI+e3tjYXNlLmNhc2VUeXBlfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPnt7Y2FzZS5jYXNlU2VydmljZX19PC90ZD5cbiAgICAgICAgICAgICAgPHRkIGNsYXNzPVwiZ292dWstdGFibGVfX2NlbGxcIiBbdGl0bGVdPVwiY2FzZS5jYXNlU3RhdGVEZXNjcmlwdGlvblwiPnt7Y2FzZS5jYXNlU3RhdGV9fTwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCI+PHNwYW5cbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByZWFzb24gb2YgY2FzZS5yZWFzb25zXCI+e3tyZWFzb24gfCBjY2RMaW5rQ2FzZXNSZWFzb25WYWx1ZX19PGJyPjwvc3Bhbj48L3RkPlxuICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJnb3Z1ay10YWJsZV9fY2VsbFwiPjxhIFthdHRyLmlkXT1cImNhc2UuY2FzZVJlZmVyZW5jZVwiIChjbGljayk9XCJvblNlbGVjdGVkTGlua2VkQ2FzZVJlbW92ZShwb3MsIGNhc2UuY2FzZVJlZmVyZW5jZSk7XCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZ292dWstbGluayBuby12aXNpdGVkLXN0YXRlXCI+UmVtb3ZlPC9hPjwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPHRyIGNsYXNzPVwiZ292dWstdGFibGVfX3Jvd1wiICpuZ0lmPVwiIXNlbGVjdGVkQ2FzZXMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImdvdnVrLXRhYmxlX19jZWxsXCIgY29sc3Bhbj1cIjZcIj5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8L3RyPlxuICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgIDwvdGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1idXR0b24tZ3JvdXBcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ1dHRvbiBidXR0b24tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiBpZD1cIm5leHQtYnV0dG9uXCIgKGNsaWNrKT1cIm9uTmV4dCgpXCI+TmV4dDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|