@reusa/ngx-reusa-app-lib 0.0.1302 → 0.0.1304
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/components/add-participant/add-participant.component.mjs +10 -9
- package/esm2022/lib/components/address/address.component.mjs +34 -15
- package/esm2022/lib/components/address-suggestion/address-suggestion.component.mjs +11 -5
- package/esm2022/lib/components/history-page/history-page.component.mjs +12 -1
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs +63 -26
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -1
- package/lib/components/add-participant/add-participant.component.d.ts.map +1 -1
- package/lib/components/address/address.component.d.ts +4 -1
- package/lib/components/address/address.component.d.ts.map +1 -1
- package/lib/components/address-suggestion/address-suggestion.component.d.ts +2 -1
- package/lib/components/address-suggestion/address-suggestion.component.d.ts.map +1 -1
- package/lib/components/history-page/history-page.component.d.ts.map +1 -1
- package/lib/components/weekly-work-search-journal/weekly-work-search-journal.component.d.ts +1 -1
- package/lib/components/weekly-work-search-question-v2/work-search-question.component-v2.d.ts +1 -1
- package/package.json +1 -1
|
@@ -13,11 +13,16 @@ const _c0 = ["addressFormDirective"];
|
|
|
13
13
|
const _c1 = ["addressSuggestion"];
|
|
14
14
|
const _c2 = () => ({ required: "required" });
|
|
15
15
|
function AddressComponent_ion_col_54_Template(rf, ctx) { if (rf & 1) {
|
|
16
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
16
17
|
i0.ɵɵelementStart(0, "ion-col", 20)(1, "div", 14)(2, "label", 5);
|
|
17
18
|
i0.ɵɵtext(3);
|
|
18
19
|
i0.ɵɵpipe(4, "translate");
|
|
19
20
|
i0.ɵɵelementEnd();
|
|
20
|
-
i0.ɵɵelement(5, "br")
|
|
21
|
+
i0.ɵɵelement(5, "br");
|
|
22
|
+
i0.ɵɵelementStart(6, "app-dropdown", 6);
|
|
23
|
+
i0.ɵɵlistener("onChange", function AddressComponent_ion_col_54_Template_app_dropdown_onChange_6_listener() { i0.ɵɵrestoreView(_r7); const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.getAddressSuggestion()); });
|
|
24
|
+
i0.ɵɵelementEnd();
|
|
25
|
+
i0.ɵɵelement(7, "br")(8, "app-error", 7);
|
|
21
26
|
i0.ɵɵelementEnd()();
|
|
22
27
|
} if (rf & 2) {
|
|
23
28
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -34,11 +39,16 @@ function AddressComponent_ion_col_54_Template(rf, ctx) { if (rf & 1) {
|
|
|
34
39
|
i0.ɵɵproperty("field", ctx_r1.county)("form", _r0)("errDef", i0.ɵɵpureFunction0(14, _c2));
|
|
35
40
|
} }
|
|
36
41
|
function AddressComponent_ion_col_55_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
37
43
|
i0.ɵɵelementStart(0, "ion-col", 20)(1, "div", 14)(2, "label", 5);
|
|
38
44
|
i0.ɵɵtext(3);
|
|
39
45
|
i0.ɵɵpipe(4, "translate");
|
|
40
46
|
i0.ɵɵelementEnd();
|
|
41
|
-
i0.ɵɵelement(5, "br")
|
|
47
|
+
i0.ɵɵelement(5, "br");
|
|
48
|
+
i0.ɵɵelementStart(6, "app-dropdown", 6);
|
|
49
|
+
i0.ɵɵlistener("onChange", function AddressComponent_ion_col_55_Template_app_dropdown_onChange_6_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r8.getAddressSuggestion()); });
|
|
50
|
+
i0.ɵɵelementEnd();
|
|
51
|
+
i0.ɵɵelement(7, "br")(8, "app-error", 7);
|
|
42
52
|
i0.ɵɵelementEnd()();
|
|
43
53
|
} if (rf & 2) {
|
|
44
54
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
@@ -97,13 +107,13 @@ function AddressComponent_ion_col_58_Template(rf, ctx) { if (rf & 1) {
|
|
|
97
107
|
i0.ɵɵproperty("field", ctx_r4.neighbourFlag)("form", _r0)("errDef", i0.ɵɵpureFunction0(13, _c2));
|
|
98
108
|
} }
|
|
99
109
|
function AddressComponent_app_address_suggestion_59_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
-
const
|
|
110
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
101
111
|
i0.ɵɵelementStart(0, "app-address-suggestion", 23, 24);
|
|
102
|
-
i0.ɵɵlistener("checkFormIsBlur", function AddressComponent_app_address_suggestion_59_Template_app_address_suggestion_checkFormIsBlur_0_listener() { i0.ɵɵrestoreView(
|
|
112
|
+
i0.ɵɵlistener("checkFormIsBlur", function AddressComponent_app_address_suggestion_59_Template_app_address_suggestion_checkFormIsBlur_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.checkFormBlurr()); });
|
|
103
113
|
i0.ɵɵelementEnd();
|
|
104
114
|
} if (rf & 2) {
|
|
105
115
|
const ctx_r5 = i0.ɵɵnextContext();
|
|
106
|
-
i0.ɵɵproperty("form", ctx_r5.addressForm)("formName", ctx_r5.inputId)("diffMailAddressFlag", ctx_r5.diffMailAddress)("formBlur", ctx_r5.checkFormBlurr())("questionaireForm", ctx_r5.questionaireForm)("standaloneAddressForm", ctx_r5.standaloneAddressForm);
|
|
116
|
+
i0.ɵɵproperty("form", ctx_r5.addressForm)("formName", ctx_r5.inputId)("diffMailAddressFlag", ctx_r5.diffMailAddress)("formBlur", ctx_r5.checkFormBlurr())("questionaireForm", ctx_r5.questionaireForm)("standaloneAddressForm", ctx_r5.standaloneAddressForm)("parentFormComponent", ctx_r5.parentFormComponent);
|
|
107
117
|
} }
|
|
108
118
|
const _c3 = () => ({ required: "required", invalidLength: "Zip code should be of 5 or 9 digits.", invalidNumber: "Zip code should only have numbers.", invalidZipCode: "please enter a valid zip code" });
|
|
109
119
|
export class AddressComponent {
|
|
@@ -198,7 +208,6 @@ export class AddressComponent {
|
|
|
198
208
|
}
|
|
199
209
|
}
|
|
200
210
|
}
|
|
201
|
-
this.getAddressSuggestion();
|
|
202
211
|
});
|
|
203
212
|
this.zip.valueChanges.subscribe(zip => {
|
|
204
213
|
if (zip && this.state.value == this.forState) {
|
|
@@ -325,7 +334,7 @@ export class AddressComponent {
|
|
|
325
334
|
this.county.patchValue(this.addressData.county);
|
|
326
335
|
}
|
|
327
336
|
this.state.updateValueAndValidity();
|
|
328
|
-
this.getAddressSuggestion();
|
|
337
|
+
// this.getAddressSuggestion();
|
|
329
338
|
}, err => {
|
|
330
339
|
this.logger.debug(err);
|
|
331
340
|
});
|
|
@@ -497,7 +506,7 @@ export class AddressComponent {
|
|
|
497
506
|
let _t;
|
|
498
507
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addressFormDirective = _t.first);
|
|
499
508
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.addressSuggestion = _t.first);
|
|
500
|
-
} }, inputs: { countyRequired: "countyRequired", fromPopup: "fromPopup", inputId: "inputId", componentData: "componentData", showSuggestion: "showSuggestion", diffMailAddress: "diffMailAddress", enableAddressValidation: "enableAddressValidation", questionaireForm: "questionaireForm", standaloneAddressForm: "standaloneAddressForm" }, outputs: { address: "address" }, features: [i0.ɵɵProvidersFeature([{
|
|
509
|
+
} }, inputs: { countyRequired: "countyRequired", fromPopup: "fromPopup", inputId: "inputId", componentData: "componentData", showSuggestion: "showSuggestion", diffMailAddress: "diffMailAddress", enableAddressValidation: "enableAddressValidation", questionaireForm: "questionaireForm", standaloneAddressForm: "standaloneAddressForm", parentFormComponent: "parentFormComponent" }, outputs: { address: "address" }, features: [i0.ɵɵProvidersFeature([{
|
|
501
510
|
provide: NG_VALUE_ACCESSOR,
|
|
502
511
|
useExisting: AddressComponent,
|
|
503
512
|
multi: true
|
|
@@ -507,12 +516,16 @@ export class AddressComponent {
|
|
|
507
516
|
multi: true,
|
|
508
517
|
useExisting: AddressComponent
|
|
509
518
|
}
|
|
510
|
-
]), i0.ɵɵNgOnChangesFeature], decls: 60, vars: 79, consts: [[2, "margin-bottom", "0px", "margin-left", "0px", 3, "formGroup"], ["addressFormDirective", "ngForm"], [1, "p-formgrid", 3, "id"], [3, "ngClass"], [1, "field"], [3, "for"], ["optionLabel", "text", "appendTo", "body", 3, "options", "formControl", "autoDisplayFirst", "inputId"], [3, "field", "form", "errDef"], ["type", "input", "pInputText", "", "minlength", "5", "maxlength", "9", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], [2, "padding-right", "0px", 3, "ngClass"], [1, "field", "p-fluid"], ["type", "input", "pInputText", "", "maxlength", "40", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], ["type", "input", "pInputText", "", "placeholder", "Optional", "maxlength", "40", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], [2, "padding-bottom", "0px", 3, "ngClass"], [1, "field", 2, "margin-bottom", "0px"], ["type", "input", "pInputText", "", "maxlength", "30", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], ["size", "12", "style", "padding-bottom: 0px;", 3, "ngClass", 4, "ngIf"], [2, "padding-top", "4px"], ["style", "padding-top: 0px;", 3, "ngClass", 4, "ngIf"], [3, "form", "formName", "diffMailAddressFlag", "formBlur", "questionaireForm", "standaloneAddressForm", "checkFormIsBlur", 4, "ngIf"], ["size", "12", 2, "padding-bottom", "0px", 3, "ngClass"], [2, "padding-top", "0px", 3, "ngClass"], ["unselectable", "true", "optionLabel", "text", "optionValue", "value", "appendTo", "body", 3, "inputId", "options", "formControl"], [3, "form", "formName", "diffMailAddressFlag", "formBlur", "questionaireForm", "standaloneAddressForm", "checkFormIsBlur"], ["addressSuggestion", ""]], template: function AddressComponent_Template(rf, ctx) { if (rf & 1) {
|
|
519
|
+
]), i0.ɵɵNgOnChangesFeature], decls: 60, vars: 79, consts: [[2, "margin-bottom", "0px", "margin-left", "0px", 3, "formGroup"], ["addressFormDirective", "ngForm"], [1, "p-formgrid", 3, "id"], [3, "ngClass"], [1, "field"], [3, "for"], ["optionLabel", "text", "appendTo", "body", 3, "options", "formControl", "autoDisplayFirst", "inputId", "onChange"], [3, "field", "form", "errDef"], ["type", "input", "pInputText", "", "minlength", "5", "maxlength", "9", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], [2, "padding-right", "0px", 3, "ngClass"], [1, "field", "p-fluid"], ["type", "input", "pInputText", "", "maxlength", "40", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], ["type", "input", "pInputText", "", "placeholder", "Optional", "maxlength", "40", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], [2, "padding-bottom", "0px", 3, "ngClass"], [1, "field", 2, "margin-bottom", "0px"], ["type", "input", "pInputText", "", "maxlength", "30", "appStripInvisibleChars", "", 3, "id", "formControl", "blur", "focus"], ["size", "12", "style", "padding-bottom: 0px;", 3, "ngClass", 4, "ngIf"], [2, "padding-top", "4px"], ["style", "padding-top: 0px;", 3, "ngClass", 4, "ngIf"], [3, "form", "formName", "diffMailAddressFlag", "formBlur", "questionaireForm", "standaloneAddressForm", "parentFormComponent", "checkFormIsBlur", 4, "ngIf"], ["size", "12", 2, "padding-bottom", "0px", 3, "ngClass"], [2, "padding-top", "0px", 3, "ngClass"], ["unselectable", "true", "optionLabel", "text", "optionValue", "value", "appendTo", "body", 3, "inputId", "options", "formControl"], [3, "form", "formName", "diffMailAddressFlag", "formBlur", "questionaireForm", "standaloneAddressForm", "parentFormComponent", "checkFormIsBlur"], ["addressSuggestion", ""]], template: function AddressComponent_Template(rf, ctx) { if (rf & 1) {
|
|
511
520
|
i0.ɵɵelementStart(0, "form", 0, 1)(2, "div", 2)(3, "ion-row")(4, "ion-col", 3)(5, "div", 4)(6, "label", 5);
|
|
512
521
|
i0.ɵɵtext(7);
|
|
513
522
|
i0.ɵɵpipe(8, "translate");
|
|
514
523
|
i0.ɵɵelementEnd();
|
|
515
|
-
i0.ɵɵelement(9, "br")
|
|
524
|
+
i0.ɵɵelement(9, "br");
|
|
525
|
+
i0.ɵɵelementStart(10, "app-dropdown", 6);
|
|
526
|
+
i0.ɵɵlistener("onChange", function AddressComponent_Template_app_dropdown_onChange_10_listener() { return ctx.getAddressSuggestion(); });
|
|
527
|
+
i0.ɵɵelementEnd();
|
|
528
|
+
i0.ɵɵelement(11, "app-error", 7);
|
|
516
529
|
i0.ɵɵelementEnd()();
|
|
517
530
|
i0.ɵɵelementStart(12, "ion-col", 3)(13, "div", 4)(14, "label", 5);
|
|
518
531
|
i0.ɵɵtext(15);
|
|
@@ -520,7 +533,7 @@ export class AddressComponent {
|
|
|
520
533
|
i0.ɵɵelementEnd();
|
|
521
534
|
i0.ɵɵelement(17, "br");
|
|
522
535
|
i0.ɵɵelementStart(18, "input", 8);
|
|
523
|
-
i0.ɵɵlistener("blur", function AddressComponent_Template_input_blur_18_listener($event) { ctx.getAddressData($event); return ctx.setFieldBlur("zip"); })("focus", function AddressComponent_Template_input_focus_18_listener() { return ctx.setFieldFocus("zip"); });
|
|
536
|
+
i0.ɵɵlistener("blur", function AddressComponent_Template_input_blur_18_listener($event) { ctx.getAddressData($event); ctx.getAddressSuggestion(); return ctx.setFieldBlur("zip"); })("focus", function AddressComponent_Template_input_focus_18_listener() { return ctx.setFieldFocus("zip"); });
|
|
524
537
|
i0.ɵɵelementEnd();
|
|
525
538
|
i0.ɵɵelement(19, "br")(20, "app-error", 7);
|
|
526
539
|
i0.ɵɵelementEnd()()();
|
|
@@ -551,14 +564,18 @@ export class AddressComponent {
|
|
|
551
564
|
i0.ɵɵtext(48);
|
|
552
565
|
i0.ɵɵpipe(49, "translate");
|
|
553
566
|
i0.ɵɵelementEnd();
|
|
554
|
-
i0.ɵɵelement(50, "br")
|
|
567
|
+
i0.ɵɵelement(50, "br");
|
|
568
|
+
i0.ɵɵelementStart(51, "app-dropdown", 6);
|
|
569
|
+
i0.ɵɵlistener("onChange", function AddressComponent_Template_app_dropdown_onChange_51_listener() { return ctx.getAddressSuggestion(); });
|
|
570
|
+
i0.ɵɵelementEnd();
|
|
571
|
+
i0.ɵɵelement(52, "br")(53, "app-error", 7);
|
|
555
572
|
i0.ɵɵelementEnd()();
|
|
556
573
|
i0.ɵɵtemplate(54, AddressComponent_ion_col_54_Template, 9, 15, "ion-col", 16)(55, AddressComponent_ion_col_55_Template, 9, 15, "ion-col", 16);
|
|
557
574
|
i0.ɵɵelementEnd();
|
|
558
575
|
i0.ɵɵelementStart(56, "ion-row", 17);
|
|
559
576
|
i0.ɵɵtemplate(57, AddressComponent_ion_col_57_Template, 8, 14, "ion-col", 18)(58, AddressComponent_ion_col_58_Template, 8, 14, "ion-col", 18);
|
|
560
577
|
i0.ɵɵelementEnd()()();
|
|
561
|
-
i0.ɵɵtemplate(59, AddressComponent_app_address_suggestion_59_Template, 2,
|
|
578
|
+
i0.ɵɵtemplate(59, AddressComponent_app_address_suggestion_59_Template, 2, 7, "app-address-suggestion", 19);
|
|
562
579
|
} if (rf & 2) {
|
|
563
580
|
const _r0 = i0.ɵɵreference(1);
|
|
564
581
|
i0.ɵɵproperty("formGroup", ctx.addressForm);
|
|
@@ -647,7 +664,7 @@ export class AddressComponent {
|
|
|
647
664
|
multi: true,
|
|
648
665
|
useExisting: AddressComponent
|
|
649
666
|
}
|
|
650
|
-
], template: "<form [formGroup]=\"addressForm\" #addressFormDirective=\"ngForm\" style=\"margin-bottom: 0px; margin-left: 0px;\">\r\n <!-- <div [formGroup]=\"addressForm\" #addressFormDirective=\"ngForm\" > -->\r\n\r\n <div class=\"p-formgrid\" [id]=\"inputId ? inputId : 'address-div'\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-country' : 'country'\">{{'Country' | translate}}</label><br />\r\n <app-dropdown [options]=\"countryOptions\" [formControl]=\"country\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-country' : 'country'\" ></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='country' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col app-col' : 'col col-fit-content'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-zip' : 'zip'\">{{'Zip code' | translate}}</label><br />\r\n <input [id]=\"inputId ? inputId + '-zip' : 'zip'\" type=\"input\" pInputText [formControl]=\"zip\" minlength=\"5\" maxlength=\"9\" appStripInvisibleChars\r\n (blur)=\"getAddressData($event); setFieldBlur('zip')\" (focus)=\"setFieldFocus('zip')\" /><br />\r\n <app-error [class]=\"'app-grid'\" [field]='zip' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n invalidLength: 'Zip code should be of 5 or 9 digits.',\r\n invalidNumber: 'Zip code should only have numbers.',\r\n invalidZipCode: 'please enter a valid zip code',\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n \r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-right: 0px;\">\r\n <div class=\"field p-fluid\">\r\n <label [for]=\"inputId ? inputId + '-streetAddress' : 'streetAddress'\">{{'Street Address' | translate}}</label><br />\r\n <input [id]=\"inputId ? inputId + '-streetAddress' : 'streetAddress'\" type=\"input\" pInputText \r\n [formControl]=\"streetAddress\" maxlength=\"40\" (blur)=\"getAddressSuggestion(); setFieldBlur('streetAddress')\" (focus)=\"setFieldFocus('streetAddress')\" appStripInvisibleChars/><br />\r\n <app-error [class]=\"'app-grid'\" [field]='streetAddress' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-right: 0px;\">\r\n <div class=\"field p-fluid\">\r\n <input [id]=\"inputId ? inputId + '-optionalAddress' : 'optionalAddress'\" type=\"input\" pInputText \r\n [formControl]=\"optionalAddress\" placeholder=\"Optional\" (blur)=\"getAddressSuggestion();setFieldBlur('optionalAddress')\" (focus)=\"setFieldFocus('optionalAddress')\"\r\n maxlength=\"40\" appStripInvisibleChars/>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-city' : 'city'\">{{'City' | translate}}</label><br />\r\n <input [id]=\"inputId ? inputId + '-city' : 'city'\" type=\"input\" pInputText [formControl]=\"city\" \r\n maxlength=\"30\" (blur)=\"getAddressSuggestion(); setFieldBlur('city')\" (focus)=\"setFieldFocus('city')\" appStripInvisibleChars/><br />\r\n <app-error [class]=\"'app-grid'\" [field]='city' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col app-col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-state' : 'state'\">{{'State' | translate}}</label><br />\r\n <app-dropdown [options]=\"stateOptions\" [formControl]=\"state\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-state' : 'state'\"></app-dropdown><br />\r\n <app-error [class]=\"'app-grid'\" [field]='state' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" *ngIf=\"state.value && (state.value.value==='MS' && forState==='MS' \r\n || (state.value.value==='CT' && forState==='MS')) && countyRequired===true\" size=\"12\"style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-county' : 'county'\">{{'County' | translate}}</label><br />\r\n <app-dropdown [options]=\"countyOptions\" [formControl]=\"county\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-county' : 'county'\"></app-dropdown><br/>\r\n <app-error [class]=\"'app-grid'\" [field]='county' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" *ngIf=\"state.value && state.value.value==='ME' && forState==='ME' && countyRequired===true\" size=\"12\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-town' : 'town'\">{{'Town' | translate}}</label><br />\r\n <app-dropdown [options]=\"townOptions\" [formControl]=\"town\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-town' : 'town'\"></app-dropdown><br/>\r\n <app-error [class]=\"'app-grid'\" [field]='town' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row style=\"padding-top: 4px;\">\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-top: 0px;\"\r\n *ngIf=\"showNeighbourQuestion===true && forState==='ME'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\">{{'Are you continuing to look for work in Maine?' | translate}}</label><br />\r\n <p-selectButton [inputId]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\" unselectable=\"true\" [options]=\"yesNoOptions\"\r\n [formControl]=\"neighbourFlag\" optionLabel=\"text\" optionValue=\"value\" appendTo=\"body\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='neighbourFlag' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-top: 0px;\"\r\n *ngIf=\"showNeighbourQuestion===true && forState==='MS'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\">{{'Do you normally work in Mississippi?' | translate}}</label><br />\r\n <p-selectButton [inputId]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\" unselectable=\"true\" [options]=\"yesNoOptions\"\r\n [formControl]=\"neighbourFlag\" optionLabel=\"text\" optionValue=\"value\" appendTo=\"body\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='neighbourFlag' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n <!-- </div> -->\r\n</form>\r\n<app-address-suggestion #addressSuggestion *ngIf=\"(enableAddressValidation) && this.addressForm.valid && (((inputId==='resAddress' || inputId==='resAdress') && diffMailAddress=== false) || (inputId==='mailAddress' && diffMailAddress=== true) || (standaloneAddressForm === true))\"\r\n[form]=\"addressForm\" [formName]=\"inputId\" [diffMailAddressFlag]=\"diffMailAddress\" [formBlur]=\"checkFormBlurr()\" (checkFormIsBlur)=\"checkFormBlurr()\" [questionaireForm]=\"questionaireForm\" [standaloneAddressForm]=\"standaloneAddressForm\"></app-address-suggestion>\r\n", styles: [".col{padding-top:0;padding-bottom:0}.form-lbl{padding-bottom:6px}.inline-flex{display:inline-flex}ion-col{padding-left:0}.app-col{margin-left:27px;padding-right:0}\n"] }]
|
|
667
|
+
], template: "<form [formGroup]=\"addressForm\" #addressFormDirective=\"ngForm\" style=\"margin-bottom: 0px; margin-left: 0px;\">\r\n <!-- <div [formGroup]=\"addressForm\" #addressFormDirective=\"ngForm\" > -->\r\n\r\n <div class=\"p-formgrid\" [id]=\"inputId ? inputId : 'address-div'\">\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-country' : 'country'\">{{'Country' | translate}}</label><br />\r\n <app-dropdown [options]=\"countryOptions\" [formControl]=\"country\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-country' : 'country'\" (onChange)=\"getAddressSuggestion()\"></app-dropdown>\r\n <app-error [class]=\"'app-grid'\" [field]='country' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col app-col' : 'col col-fit-content'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-zip' : 'zip'\">{{'Zip code' | translate}}</label><br />\r\n <input [id]=\"inputId ? inputId + '-zip' : 'zip'\" type=\"input\" pInputText [formControl]=\"zip\" minlength=\"5\" maxlength=\"9\" appStripInvisibleChars\r\n (blur)=\"getAddressData($event); getAddressSuggestion(); setFieldBlur('zip')\" (focus)=\"setFieldFocus('zip')\" /><br />\r\n <app-error [class]=\"'app-grid'\" [field]='zip' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required',\r\n invalidLength: 'Zip code should be of 5 or 9 digits.',\r\n invalidNumber: 'Zip code should only have numbers.',\r\n invalidZipCode: 'please enter a valid zip code',\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n \r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-right: 0px;\">\r\n <div class=\"field p-fluid\">\r\n <label [for]=\"inputId ? inputId + '-streetAddress' : 'streetAddress'\">{{'Street Address' | translate}}</label><br />\r\n <input [id]=\"inputId ? inputId + '-streetAddress' : 'streetAddress'\" type=\"input\" pInputText \r\n [formControl]=\"streetAddress\" maxlength=\"40\" (blur)=\"getAddressSuggestion(); setFieldBlur('streetAddress')\" (focus)=\"setFieldFocus('streetAddress')\" appStripInvisibleChars/><br />\r\n <app-error [class]=\"'app-grid'\" [field]='streetAddress' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-right: 0px;\">\r\n <div class=\"field p-fluid\">\r\n <input [id]=\"inputId ? inputId + '-optionalAddress' : 'optionalAddress'\" type=\"input\" pInputText \r\n [formControl]=\"optionalAddress\" placeholder=\"Optional\" (blur)=\"getAddressSuggestion();setFieldBlur('optionalAddress')\" (focus)=\"setFieldFocus('optionalAddress')\"\r\n maxlength=\"40\" appStripInvisibleChars/>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n\r\n\r\n <ion-row>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-city' : 'city'\">{{'City' | translate}}</label><br />\r\n <input [id]=\"inputId ? inputId + '-city' : 'city'\" type=\"input\" pInputText [formControl]=\"city\" \r\n maxlength=\"30\" (blur)=\"getAddressSuggestion(); setFieldBlur('city')\" (focus)=\"setFieldFocus('city')\" appStripInvisibleChars/><br />\r\n <app-error [class]=\"'app-grid'\" [field]='city' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col app-col' : 'col col-fit-content'\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-state' : 'state'\">{{'State' | translate}}</label><br />\r\n <app-dropdown [options]=\"stateOptions\" [formControl]=\"state\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-state' : 'state'\" (onChange)=\"getAddressSuggestion()\"></app-dropdown><br />\r\n <app-error [class]=\"'app-grid'\" [field]='state' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" *ngIf=\"state.value && (state.value.value==='MS' && forState==='MS' \r\n || (state.value.value==='CT' && forState==='MS')) && countyRequired===true\" size=\"12\"style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-county' : 'county'\">{{'County' | translate}}</label><br />\r\n <app-dropdown [options]=\"countyOptions\" [formControl]=\"county\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-county' : 'county'\" (onChange)=\"getAddressSuggestion()\"></app-dropdown><br/>\r\n <app-error [class]=\"'app-grid'\" [field]='county' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" *ngIf=\"state.value && state.value.value==='ME' && forState==='ME' && countyRequired===true\" size=\"12\" style=\"padding-bottom: 0px;\">\r\n <div class=\"field\" style=\"margin-bottom: 0px;\">\r\n <label [for]=\"inputId ? inputId + '-town' : 'town'\">{{'Town' | translate}}</label><br />\r\n <app-dropdown [options]=\"townOptions\" [formControl]=\"town\" optionLabel=\"text\" appendTo=\"body\"\r\n [autoDisplayFirst]=\"false\" [inputId]=\"inputId ? inputId + '-town' : 'town'\" (onChange)=\"getAddressSuggestion()\" ></app-dropdown><br/>\r\n <app-error [class]=\"'app-grid'\" [field]='town' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n <ion-row style=\"padding-top: 4px;\">\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-top: 0px;\"\r\n *ngIf=\"showNeighbourQuestion===true && forState==='ME'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\">{{'Are you continuing to look for work in Maine?' | translate}}</label><br />\r\n <p-selectButton [inputId]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\" unselectable=\"true\" [options]=\"yesNoOptions\"\r\n [formControl]=\"neighbourFlag\" optionLabel=\"text\" optionValue=\"value\" appendTo=\"body\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='neighbourFlag' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n <ion-col [ngClass]=\"fromPopup ? 'col' : 'col col-fit-content'\" style=\"padding-top: 0px;\"\r\n *ngIf=\"showNeighbourQuestion===true && forState==='MS'\" >\r\n <div class=\"field\">\r\n <label [for]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\">{{'Do you normally work in Mississippi?' | translate}}</label><br />\r\n <p-selectButton [inputId]=\"inputId ? inputId + '-neighbourFlag' : 'neighbourFlag'\" unselectable=\"true\" [options]=\"yesNoOptions\"\r\n [formControl]=\"neighbourFlag\" optionLabel=\"text\" optionValue=\"value\" appendTo=\"body\"></p-selectButton>\r\n <app-error [class]=\"'app-grid'\" [field]='neighbourFlag' [form]=\"addressFormDirective\" [errDef]=\"{ \r\n required: 'required'\r\n }\"></app-error>\r\n </div>\r\n </ion-col>\r\n </ion-row>\r\n </div>\r\n <!-- </div> -->\r\n</form>\r\n<app-address-suggestion #addressSuggestion *ngIf=\"(enableAddressValidation) && this.addressForm.valid && (((inputId==='resAddress' || inputId==='resAdress') && diffMailAddress=== false) || (inputId==='mailAddress' && diffMailAddress=== true) || (standaloneAddressForm === true))\"\r\n[form]=\"addressForm\" [formName]=\"inputId\" [diffMailAddressFlag]=\"diffMailAddress\" [formBlur]=\"checkFormBlurr()\" (checkFormIsBlur)=\"checkFormBlurr()\" [questionaireForm]=\"questionaireForm\" [standaloneAddressForm]=\"standaloneAddressForm\" [parentFormComponent]=\"parentFormComponent\"></app-address-suggestion>\r\n", styles: [".col{padding-top:0;padding-bottom:0}.form-lbl{padding-bottom:6px}.inline-flex{display:inline-flex}ion-col{padding-left:0}.app-col{margin-left:27px;padding-right:0}\n"] }]
|
|
651
668
|
}], () => [{ type: i1.UntypedFormBuilder }, { type: i2.UtilService }, { type: i3.QuestionnaireService }, { type: i4.LoggerService }, { type: i5.DmsService }], { addressFormDirective: [{
|
|
652
669
|
type: ViewChild,
|
|
653
670
|
args: ['addressFormDirective', { static: false }]
|
|
@@ -674,8 +691,10 @@ export class AddressComponent {
|
|
|
674
691
|
type: Input
|
|
675
692
|
}], standaloneAddressForm: [{
|
|
676
693
|
type: Input
|
|
694
|
+
}], parentFormComponent: [{
|
|
695
|
+
type: Input
|
|
677
696
|
}] }); })();
|
|
678
697
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AddressComponent, { className: "AddressComponent", filePath: "lib\\components\\address\\address.component.ts", lineNumber: 29 }); })();
|
|
679
698
|
export class AddressFieldFocusStatus {
|
|
680
699
|
}
|
|
681
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWEsU0FBUyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQXVGLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxVQUFVLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzTCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFLcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7OztJQ21FMUQsbUNBQ3NILGNBQUEsZUFBQTtJQUV4RCxZQUF3Qjs7SUFBQSxpQkFBUTtJQUFBLHFCQUFNLHNCQUFBLFNBQUEsbUJBQUE7SUFNaEcsaUJBQU0sRUFBQTs7OztJQVRELDBFQUFxRDtJQUdqRCxlQUFnRDtJQUFoRCw0RUFBZ0Q7SUFBQyxlQUF3QjtJQUF4QixxREFBd0I7SUFDbEUsZUFBeUI7SUFBekIsOENBQXlCLDhCQUFBLDJCQUFBLG1FQUFBO0lBRTVCLGVBQW9CO0lBQXBCLHlCQUFvQjtJQUFDLHFDQUFnQixhQUFBLHVDQUFBOzs7SUFLdEQsbUNBQW1NLGNBQUEsZUFBQTtJQUV6SSxZQUFzQjs7SUFBQSxpQkFBUTtJQUFBLHFCQUFNLHNCQUFBLFNBQUEsbUJBQUE7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N0IsTUFBTSxPQUFPLHVCQUF1QjtDQUtuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgT25DaGFuZ2VzLCBWaWV3Q2hpbGQsU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBOZ0Zvcm0sIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZGRyZXNzQ29tcG9uZW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvQWRkcmVzc0NvbXBvbmVudE1vZGVsJztcbmltcG9ydCB7IENvbWJvT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvQ29tYm9Nb2RlbCc7XG5pbXBvcnQgeyBEbXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG1zLXNlcnZpY2UvZG1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb25zL0FwcFZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgQWRkcmVzc1N1Z2dlc3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9hZGRyZXNzLXN1Z2dlc3Rpb24vYWRkcmVzcy1zdWdnZXN0aW9uLmNvbXBvbmVudCc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWRkcmVzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGRyZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWRkcmVzcy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IEFkZHJlc3NDb21wb25lbnQsXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgbXVsdGk6IHRydWUsXG4gICAgdXNlRXhpc3Rpbmc6IEFkZHJlc3NDb21wb25lbnRcbiAgfVxuICBdLFxuXG59KVxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIFZhbGlkYXRvcixPbkNoYW5nZXN7XG5cbiAgQFZpZXdDaGlsZCgnYWRkcmVzc0Zvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGFkZHJlc3NGb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XG5cbiAgQFZpZXdDaGlsZCgnYWRkcmVzc1N1Z2dlc3Rpb24nKVxuICBwdWJsaWMgYWRkcmVzc1N1Z2dlc3Rpb246QWRkcmVzc1N1Z2dlc3Rpb25Db21wb25lbnQ7XG5cbiAgcHVibGljIGFkZHJlc3NGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwdWJsaWMgc3RhdGVPcHRpb25zOiBhbnkgPSBbXTtcbiAgcHVibGljIGNvdW50eU9wdGlvbnM6IGFueSA9IFtdO1xuICBwdWJsaWMgdG93bk9wdGlvbnM6IGFueSA9IFtdO1xuICBwdWJsaWMgeWVzTm9PcHRpb25zID0gQ29tYm9PcHRpb24uWUVTX05PO1xuICBwdWJsaWMgY291bnRyeU9wdGlvbnMgPSBDb21ib09wdGlvbi5DT1VOVFJZO1xuICBwdWJsaWMgYWRkcmVzc0RhdGE6IEFkZHJlc3NDb21wb25lbnRNb2RlbCA9IG5ldyBBZGRyZXNzQ29tcG9uZW50TW9kZWwoKTtcbiAgQE91dHB1dCgpIGFkZHJlc3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGNvdW50eVJlcXVpcmVkOiBCb29sZWFuO1xuICBASW5wdXQoKSBmcm9tUG9wdXA6IEJvb2xlYW47XG4gIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgY29tcG9uZW50RGF0YTpzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dTdWdnZXN0aW9uOiBib29sZWFuO1xuICBASW5wdXQoKSBkaWZmTWFpbEFkZHJlc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGVuYWJsZUFkZHJlc3NWYWxpZGF0aW9uOmJvb2xlYW5cbiAgQElucHV0KCkgcXVlc3Rpb25haXJlRm9ybTtcbiAgQElucHV0KCkgc3RhbmRhbG9uZUFkZHJlc3NGb3JtOiBib29sZWFuXG4gIGFkZHJlc3NUeXBlRm9yTmVpZ2hib3VyQ2hlY2s6IHN0cmluZyA9IFwiTlwiO1xuICBuZWlnaGJvdXJpbmdTdGF0ZU1FOiBzdHJpbmdbXSA9IFsnTkgnLCdWVCcsJ01BJ107XG4gIG5laWdoYm91cmluZ1N0YXRlTVM6IHN0cmluZ1tdID0gWydBTCcsJ0FSJywnTEEnLCdUTiddO1xuICBzaG93TmVpZ2hib3VyUXVlc3Rpb246Ym9vbGVhbiA9IGZhbHNlO1xuICBibHVyRnJvbUZpZWxkOiBib29sZWFuID0gZmFsc2U7XG4gIGZvcm1CbHVyOiBib29sZWFuO1xuICBwdWJsaWMgZm9yU3RhdGU6IHN0cmluZztcbiAgdXNaaXBjb2RlVmFsaWRhdGlvbnM6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc1ZhbGlkWmlwQ29kZV07XG4gIGNhbmFkYVppcGNvZGVWYWxpZGF0aW9uczogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRDYW5hZGlhblppcENvZGVdO1xuICBhZGRyZXNzRmllbGRGb2N1c1N0YXR1czpBZGRyZXNzRmllbGRGb2N1c1N0YXR1cz0ge307XG4gIGxhc3RWYWxpZEFkZHJlc3M6YW55O1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgcXVlc3Rpb25uYWlyZVNlcnZpY2U6IFF1ZXN0aW9ubmFpcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcml2YXRlIGRtczogRG1zU2VydmljZSkge1xuICAgIHRoaXMuZm9yU3RhdGUgPSB1dGlsLmdldFN0YXRlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFkZHJlc3NGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAnY291bnRyeSc6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICd6aXAnOiBbbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSldLFxuICAgICAgJ3N0cmVldEFkZHJlc3MnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnc3RhdGUnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnb3B0aW9uYWxBZGRyZXNzJzogW251bGxdLFxuICAgICAgJ3Rvd24nOiBbbnVsbF0sXG4gICAgICAnY291bnR5JzogW251bGxdLFxuICAgICAgJ2NpdHknOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnbmVpZ2hib3VyRmxhZyc6IFtudWxsXSxcbiAgICAgICduZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZCc6IFtudWxsXVxuICAgIH0pO1xuICAgIFxuICAgIHRoaXMuc2V0UmVxdWlyZWRWYWxpZGF0aW9uKCk7XG4gICAgaWYodGhpcy5jb21wb25lbnREYXRhICE9bnVsbCl7XG4gICAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKHRoaXMuY29tcG9uZW50RGF0YSk7XG4gICAgICB0aGlzLmFkZHJlc3NUeXBlRm9yTmVpZ2hib3VyQ2hlY2sgPSBvYmpbXCJuZWlnaGJvcmluZ1N0YXRlQ2hlY2tSZXF1aXJlZFwiXTtcbiAgICAgLy8gdGhpcy5uZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZC5zZXRWYWx1ZSh0aGlzLm5laWdoYm9yaW5nU3RhdGVDaGVja1JlcXVpcmVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvdW50cnkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjb3VudHJ5ID0+IHtcbiAgICAgIHRoaXMuZmlsdGVyU3RhdGUoY291bnRyeSlcbiAgICAgIHRoaXMuZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICBpZihzdGF0ZSl7XG4gICAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdNUycpICYmIHN0YXRlLnZhbHVlID09ICdNUycpe1xuICAgICAgICAgIHRoaXMuZmlsdGVyQ291bnR5KHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLnV0aWwuaXNTdGF0ZSgnQ1QnKSAmJiBzdGF0ZS52YWx1ZSA9PSAnQ1QnKXtcbiAgICAgICAgICB0aGlzLmZpbHRlckNvdW50eShzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy51dGlsLmlzU3RhdGUoJ01FJykgJiYgc3RhdGUudmFsdWUgPT0gJ01FJyl7XG4gICAgICAgICAgdGhpcy5maWx0ZXJUb3duKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLmFkZHJlc3NUeXBlRm9yTmVpZ2hib3VyQ2hlY2sgPT09ICdZJyl7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ25laWdoYm91ciBjaGVjayB0byBoYXBwZW4nKTtcbiAgICAgICAgICBpZih0aGlzLnV0aWwuaXNTdGF0ZSgnTVMnKSl7XG4gICAgICAgICAgICBpZih0aGlzLm5laWdoYm91cmluZ1N0YXRlTVMuaW5jbHVkZXMoc3RhdGUudmFsdWUpKXtcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnbmVpZ2hib3VyIHF1ZXN0aW9uIHNob3VsZCBkaXNwbGF5Jyk7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd05laWdoYm91clF1ZXN0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMubmVpZ2hib3VyRmxhZyk7XG4gICAgICAgICAgICAgIHRoaXMubmVpZ2hib3JTdGF0ZUNoZWNrUmVxdWlyZWQuc2V0VmFsdWUoXCJZXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TmVpZ2hib3VyUXVlc3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLm5laWdoYm91ckZsYWcpO1xuICAgICAgICAgICAgICB0aGlzLm5laWdoYm91ckZsYWcuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgIHRoaXMubmVpZ2hib3JTdGF0ZUNoZWNrUmVxdWlyZWQuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdNRScpKXtcbiAgICAgICAgICAgIGlmKHRoaXMubmVpZ2hib3VyaW5nU3RhdGVNRS5pbmNsdWRlcyhzdGF0ZS52YWx1ZSkpe1xuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCduZWlnaGJvdXIgcXVlc3Rpb24gc2hvdWxkIGRpc3BsYXknKTtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TmVpZ2hib3VyUXVlc3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5uZWlnaGJvdXJGbGFnKTtcbiAgICAgICAgICAgICAgdGhpcy5uZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZC5zZXRWYWx1ZShcIllcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNob3dOZWlnaGJvdXJRdWVzdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMubmVpZ2hib3VyRmxhZyk7XG4gICAgICAgICAgICAgIHRoaXMubmVpZ2hib3VyRmxhZy5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgdGhpcy5uZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gICAgICAgIFxuICAgICAgfVxuICAgICAgdGhpcy5nZXRBZGRyZXNzU3VnZ2VzdGlvbigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy56aXAudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSggemlwID0+IHtcbiAgICAgIGlmKHppcCAmJiB0aGlzLnN0YXRlLnZhbHVlID09IHRoaXMuZm9yU3RhdGUpe1xuICAgICAgICB0aGlzLmZpbHRlckNvdW50eSh0aGlzLnN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuY291bnRyeS5zZXRWYWx1ZSh7IHZhbHVlOiBcIlVTXCIsIHRleHQ6IFwiVW5pdGVkIFN0YXRlc1wiIH0pO1xuICAgIHRoaXMuZm9ybUJsdXIgPSB0aGlzLmNoZWNrRm9ybUJsdXJyKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2U6U2ltcGxlQ2hhbmdlcyl7XG4gICAgaWYoY2hhbmdlWydkaWZmTWFpbEFkZHJlc3MnXSl7XG4gICAgICBpZihjaGFuZ2VbJ2RpZmZNYWlsQWRkcmVzcyddLmN1cnJlbnRWYWx1ZSA9PT0gZmFsc2UgJiYgKHRoaXMuaW5wdXRJZCA9PT0gJ3Jlc0FkZHJlc3MnfHwgdGhpcy5pbnB1dElkPT09J3Jlc0FkcmVzcycpKXtcbiAgICAgICAgdGhpcy5kaWZmTWFpbEFkZHJlc3MgPSBmYWxzZTtcbiAgICAgICAgaWYodGhpcy5jaGVja0Zvcm1CbHVycigpICYmIHRoaXMuYWRkcmVzc0Zvcm0/LnZhbGlkKXtcbiAgICAgICAgICB0aGlzLmFkZHJlc3NTdWdnZXN0aW9uLmdldFZhbGlkYXRlQWRkcmVzcyh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBzZXRGaWVsZEJsdXIoZmllbGQpe1xuICAgIHRoaXMuYWRkcmVzc0ZpZWxkRm9jdXNTdGF0dXNbZmllbGRdID0gZmFsc2U7XG4gIH1cbiAgXG4gIHNldEZpZWxkRm9jdXMoZmllbGQpe1xuICAgIHRoaXMuYWRkcmVzc0ZpZWxkRm9jdXNTdGF0dXNbZmllbGRdID0gdHJ1ZTtcbiAgfVxuXG4gIGdldEFkZHJlc3NTdWdnZXN0aW9uKCl7XG4gICAgdGhpcy5ibHVyRnJvbUZpZWxkID0gdGhpcy5hZGRyZXNzRm9ybS5kaXJ0eSAmJiB0aGlzLmFkZHJlc3NGb3JtLnZhbGlkO1xuXG4gICAgc2V0VGltZW91dCgoKT0+e1xuICAgICAgaWYodGhpcy5ibHVyRnJvbUZpZWxkICYmIHRoaXMuYWRkcmVzc1N1Z2dlc3Rpb24gJiYgdGhpcy5lbmFibGVBZGRyZXNzVmFsaWRhdGlvbiAmJiB0aGlzLmNoZWNrRm9ybUJsdXJyKCkpe1xuICAgICAgICB0aGlzLmFkZHJlc3NTdWdnZXN0aW9uLmdldFZhbGlkYXRlQWRkcmVzcyhmYWxzZSk7XG4gICAgICAgIHRoaXMuYWRkcmVzc0Zvcm0ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIH1cbiAgICB9LDEwKVxuICAgIFxuICB9XG4gIGNoZWNrRm9ybUJsdXJyKCl7XG4gICAgbGV0IGZpZWxkQmx1ciA9IHRydWU7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5hZGRyZXNzRmllbGRGb2N1c1N0YXR1cykge1xuICAgICAgaWYodGhpcy5hZGRyZXNzRmllbGRGb2N1c1N0YXR1c1trZXldKXtcbiAgICAgICAgZmllbGRCbHVyID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZm9ybUJsdXIgPSBmaWVsZEJsdXJcbiAgICByZXR1cm4gZmllbGRCbHVyO1xuICB9XG5cbiAgdmFsaWRBZGRyZXNzKGFkZHJlc3Mpe1xuICAgIHRoaXMubGFzdFZhbGlkQWRkcmVzcyA9IGFkZHJlc3NcbiAgfVxuICBzZXRSZXF1aXJlZFZhbGlkYXRpb24oKSB7XG4gICAgdGhpcy5jb3VudHJ5LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoYyA9PiB7XG4gICAgICBpZihjLnZhbHVlID09ICdVUycpe1xuICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuemlwKTtcbiAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy56aXAsIHRoaXMudXNaaXBjb2RlVmFsaWRhdGlvbnMpO1xuICAgICAgfSBlbHNlIGlmKGMudmFsdWUgPT0gJ0NBJyl7XG4gICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy56aXApO1xuICAgICAgICB0aGlzLnV0aWwuc2V0VmFsaWRhdGlvbih0aGlzLnppcCwgdGhpcy5jYW5hZGFaaXBjb2RlVmFsaWRhdGlvbnMpO1xuICAgICAgfVxuICAgIH0pXG4gICAgdGhpcy5zdGF0ZS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHN0YXRlVmFsdWUgPT4ge1xuICAgICAgaWYgKHN0YXRlVmFsdWUpIHtcbiAgICAgICAgaWYgKCgoc3RhdGVWYWx1ZS52YWx1ZSA9PT0gJ01TJyAmJiB0aGlzLmZvclN0YXRlID09PSAnTVMnKVxuICAgICAgICAgIHx8IChzdGF0ZVZhbHVlLnZhbHVlID09PSAnQ1QnICYmIHRoaXMuZm9yU3RhdGUgPT09ICdDVCcpKSAmJiB0aGlzLmNvdW50eVJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMuY291bnR5KTtcbiAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMudG93bik7XG4gICAgICAgICAgdGhpcy50b3duLnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXRlVmFsdWUudmFsdWUgPT09ICdNRScgJiYgdGhpcy5mb3JTdGF0ZSA9PT0gJ01FJyAmJiB0aGlzLmNvdW50eVJlcXVpcmVkID09PSB0cnVlKSB7XG4gICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMudG93bik7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvdW50eSk7XG4gICAgICAgICAgdGhpcy5jb3VudHkuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLmNvdW50eSk7XG4gICAgICAgICAgdGhpcy5jb3VudHkuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnRvd24pO1xuICAgICAgICAgIHRoaXMudG93bi5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgfSk7XG5cbiAgfVxuXG4gIGdldCBuZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZCgpe1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWyduZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZCddO1xuICB9XG4gIFxuICBnZXQgdG93bigpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1sndG93biddO1xuICB9XG5cbiAgZ2V0IGNvdW50eSgpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snY291bnR5J107XG4gIH1cblxuICBnZXQgY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snY2l0eSddO1xuICB9XG5cbiAgZ2V0IGNvdW50cnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ2NvdW50cnknXTtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snc3RhdGUnXTtcbiAgfVxuXG4gIGdldCB6aXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ3ppcCddO1xuICB9XG5cbiAgZ2V0IHN0cmVldEFkZHJlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ3N0cmVldEFkZHJlc3MnXTtcbiAgfVxuXG4gIGdldCBvcHRpb25hbEFkZHJlc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ29wdGlvbmFsQWRkcmVzcyddO1xuICB9XG5cbiAgZ2V0IG5laWdoYm91ckZsYWcoKXtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snbmVpZ2hib3VyRmxhZyddO1xuICB9XG5cbiAgZ2V0QWRkcmVzc0RhdGEoZXZlbnQpIHtcbiAgICBpZiAodGhpcy56aXAgJiYgdGhpcy56aXAudmFsdWUpIHtcbiAgICAgIHRoaXMuZG1zXG4gICAgICAgIC5nZXRBZGRyZXNzKHRoaXMuemlwLnZhbHVlKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmFkZHJlc3NEYXRhID0gcmVzO1xuICAgICAgICAgICAgaWYodGhpcy5hZGRyZXNzRGF0YS5jaXR5KXtcbiAgICAgICAgICAgICAgdGhpcy5jaXR5LnBhdGNoVmFsdWUodGhpcy5hZGRyZXNzRGF0YS5jaXR5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYodGhpcy5hZGRyZXNzRGF0YS5zdGF0ZSl7XG4gICAgICAgICAgICAgIHRoaXMuc3RhdGUucGF0Y2hWYWx1ZSh0aGlzLmFkZHJlc3NEYXRhLnN0YXRlKTtcbiAgICAgICAgICAgIH0gXG5cbiAgICAgICAgICAgIGlmKHRoaXMuYWRkcmVzc0RhdGEuY291bnR5KXtcbiAgICAgICAgICAgICAgdGhpcy5jb3VudHkucGF0Y2hWYWx1ZSh0aGlzLmFkZHJlc3NEYXRhLmNvdW50eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN0YXRlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgICAgIHRoaXMuZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlcnIpO1xuICAgICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpbHRlckNvdW50cnkoZXZlbnQpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnZXZlbnQnLCBldmVudClcbiAgICBsZXQgZmlsdGVyZWQ6IGFueVtdID0gW107XG4gICAgbGV0IHF1ZXJ5ID0gZXZlbnQucXVlcnk7XG4gICAgdGhpcy5jb3VudHJ5T3B0aW9ucyA9IENvbWJvT3B0aW9uLkNPVU5UUlk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvdW50cnlPcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY291bnRyeSA9IHRoaXMuY291bnRyeU9wdGlvbnNbaV07XG4gICAgICBpZiAoY291bnRyeS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKSB7XG4gICAgICAgIGZpbHRlcmVkLnB1c2goY291bnRyeSk7XG4gICAgICAgIHRoaXMuc3RhdGUuc2V0VmFsdWUobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY291bnRyeU9wdGlvbnMgPSBmaWx0ZXJlZDtcblxuICB9XG5cbiAgZmlsdGVyQ291bnR5KGV2ZW50KSB7XG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRDb3VudHkodGhpcy5zdGF0ZS52YWx1ZVsndmFsdWUnXSwgdGhpcy56aXAudmFsdWUpLnN1YnNjcmliZShcbiAgICAgIHJlcyA9PiB7XG4gICAgICAgIC8qdGhpcy5sb2dnZXIuZGVidWcoJ3JlcycsIHJlcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzWydjaG9pY2VzJ10ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBsZXQgY2hvaWNlID0gcmVzWydjaG9pY2VzJ11baV07XG4gICAgICAgICAgaWYgKGNob2ljZS50ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxdWVyeS50b0xvd2VyQ2FzZSgpKSA9PSAwKSB7XG4gICAgICAgICAgICBmaWx0ZXJlZC5wdXNoKGNob2ljZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9Ki9cbiAgICAgICAgdGhpcy5jb3VudHlPcHRpb25zID0gcmVzWydjaG9pY2VzJ107XG4gICAgICB9KTtcbiAgfVxuXG4gIGZpbHRlclRvd24oZXZlbnQpIHtcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLmdldENvdW50eSh0aGlzLnN0YXRlLnZhbHVlWyd2YWx1ZSddLCB0aGlzLnppcC52YWx1ZSkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgdGhpcy50b3duT3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xuICAgICAgfSk7XG4gIH1cblxuICBmaWx0ZXJTdGF0ZShldmVudCkge1xuICAgIGxldCBjaG9pY2U6IGFueTtcbiAgICBpZiAodGhpcy5jb3VudHJ5Py52YWx1ZT8udmFsdWUgPT09ICdVUycpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRTdGF0ZSA9IENvbWJvT3B0aW9uLlVTX1NUQVRFUy5maW5kKHN0YXRlID0+IHN0YXRlLnZhbHVlID09IHRoaXMudXRpbC5nZXRTdGF0ZSgpKVxuICAgICAgY2hvaWNlID0gW2N1cnJlbnRTdGF0ZSwgLi4uQ29tYm9PcHRpb24uVVNfU1RBVEVTLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS52YWx1ZSAhPSB0aGlzLnV0aWwuZ2V0U3RhdGUoKSldO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvdW50cnk/LnZhbHVlPy52YWx1ZSA9PT0gJ0NBJykge1xuICAgICAgY2hvaWNlID0gQ29tYm9PcHRpb24uQ0FfU1RBVEVTO1xuICAgIH1cblxuICAgIC8qZm9yIChsZXQgaSA9IDA7IGkgPCBjaG9pY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChjaG9pY2VbaV0udGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkudG9Mb3dlckNhc2UoKSkgPT0gMCkge1xuICAgICAgICBmaWx0ZXJlZC5wdXNoKGNob2ljZVtpXSk7XG4gICAgICB9XG4gICAgfSovXG4gICAgdGhpcy5zdGF0ZU9wdGlvbnMgPSBjaG9pY2U7XG5cbiAgfVxuXG4gIHNldFdpZHRoU3R5bGUoKTogb2JqZWN0IHtcbiAgICBpZiAodGhpcy5mcm9tUG9wdXApIHtcbiAgICAgIGxldCBzdHlsZU9iaiA9IHtcbiAgICAgICAgJ21heC13aWR0aCc6ICdpbml0aWFsJ1xuICAgICAgfTtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHN0eWxlT2JqID0ge1xuICAgICAgICAnbWF4LXdpZHRoJzogJ2ZpdC1jb250ZW50J1xuICAgICAgfTtcbiAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHN0eWxlT2JqKTtcbiAgICB9XG4gIH1cblxuICBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4geyB9O1xuXG4gIG9uQ2hhbmdlU3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBmb3IgKGxldCBzdWIgb2YgdGhpcy5vbkNoYW5nZVN1YnMpIHtcbiAgICAgIHN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSkge1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuYWRkcmVzc0Zvcm0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShvbkNoYW5nZSk7XG4gICAgdGhpcy5vbkNoYW5nZVN1YnMucHVzaChzdWIpO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQob25Ub3VjaGVkOiBGdW5jdGlvbikge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgdGhpcy5hZGRyZXNzRm9ybS5kaXNhYmxlKCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5hZGRyZXNzRm9ybS5lbmFibGUoKTtcbiAgICB9XG4gIH1cblxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGxldCBmb3JtVmFsdWUgOiBBZGRyZXNzQ29tcG9uZW50TW9kZWw7XG4gICAgaWYodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKXtcbiAgICAgIGZvcm1WYWx1ZSA9IEpTT04ucGFyc2UodmFsdWUudG9TdHJpbmcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1WYWx1ZSA9IHZhbHVlO1xuICAgIH1cbiAgICBpZiAoZm9ybVZhbHVlKSB7XG4gICAgICBpZiAoZm9ybVZhbHVlLmNvdW50cnkgJiYgIWZvcm1WYWx1ZS5jb3VudHJ5LnRleHQgJiYgZm9ybVZhbHVlLmNvdW50cnkudmFsdWUpIHtcbiAgICAgICAgbGV0IGNvdW50cnkgPSB0aGlzLmdldENvdW50cnkoZm9ybVZhbHVlLmNvdW50cnk/LnZhbHVlKVxuICAgICAgICBmb3JtVmFsdWUuY291bnRyeSA9IGNvdW50cnk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtVmFsdWUuc3RhdGUgJiYgIWZvcm1WYWx1ZS5zdGF0ZS50ZXh0ICYmIGZvcm1WYWx1ZS5zdGF0ZS52YWx1ZSkge1xuICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmdldFN0YXRlKGZvcm1WYWx1ZS5jb3VudHJ5Py52YWx1ZSwgZm9ybVZhbHVlLnN0YXRlLnZhbHVlLnRyaW0oKSlcbiAgICAgICAgZm9ybVZhbHVlLnN0YXRlID0gc3RhdGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtVmFsdWUuY291bnR5ICYmICFmb3JtVmFsdWUuY291bnR5LnRleHQgJiYgZm9ybVZhbHVlLmNvdW50eS52YWx1ZSAmJiBmb3JtVmFsdWUuc3RhdGUudmFsdWUgPT09ICdNUycpIHtcbiAgICAgICAgdGhpcy5zZXRNU0NvdW50eShmb3JtVmFsdWVbJ3ppcCddLCBmb3JtVmFsdWUuY291bnR5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZvcm1WYWx1ZS50b3duICYmICFmb3JtVmFsdWUudG93bi50ZXh0ICYmIGZvcm1WYWx1ZS50b3duLnZhbHVlICYmIGZvcm1WYWx1ZS5zdGF0ZS52YWx1ZSA9PT0gJ01FJykge1xuICAgICAgICB0aGlzLnNldE1FVG93bihmb3JtVmFsdWVbJ3ppcCddICxmb3JtVmFsdWUudG93bik7XG4gICAgICB9XG4gICAgICB0aGlzLmFkZHJlc3NGb3JtLnBhdGNoVmFsdWUoZm9ybVZhbHVlKTtcbiAgICB9XG4gIH1cblxuXG5cbiAgZ2V0Q291bnRyeShjb3VudHJ5KSB7XG4gICAgaWYgKGNvdW50cnkgPT0gbnVsbCB8fCBjb3VudHJ5ID09ICdVUycpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiBcIlVTXCIsIHRleHQ6IFwiVW5pdGVkIFN0YXRlc1wiIH07XG4gICAgfSBlbHNlIGlmIChjb3VudHJ5ID09ICdDQScpIHtcbiAgICAgIHJldHVybiB7IHZhbHVlOiBcIkNBXCIsIHRleHQ6IFwiQ2FuYWRhXCIgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignTm8gQ291bnRyeSBjb25maWd1cmVkICcsIGNvdW50cnkpO1xuICAgIH1cblxuICB9XG5cbiAgZ2V0U3RhdGUoY291bnRyeSwgc3RhdGUpIHtcbiAgICBpZiAoY291bnRyeSA9PSBudWxsIHx8IGNvdW50cnkgPT0gJ1VTJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhdGVWYWx1ZShDb21ib09wdGlvbi5VU19TVEFURVMsIHN0YXRlKTtcbiAgICB9IGVsc2UgaWYgKGNvdW50cnkgPT0gJ0NBJykge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RhdGVWYWx1ZShDb21ib09wdGlvbi5DQV9TVEFURVMsIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcignTm8gQ291bnRyeSBjb25maWd1cmVkICcsIGNvdW50cnkpO1xuICAgIH1cbiAgfVxuXG5cbiAgZ2V0U3RhdGVWYWx1ZShzdGF0ZXM6IENvbWJvT3B0aW9uW10sIG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBzdGF0ZXMuZmlsdGVyKHN0YXRlID0+IHN0YXRlLnZhbHVlID09IG5hbWUpWzBdO1xuICB9XG5cbiAgc2V0TUVUb3duKHppcENvZGUgOiBzdHJpbmcsIHRvd246IENvbWJvT3B0aW9uKSB7XG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRDb3VudHkoJ01FJywgemlwQ29kZSkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgdGhpcy50b3duT3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xuICAgICAgICBsZXQgc2VsZWN0ZWRDb3VudHkgPSB0aGlzLnRvd25PcHRpb25zLmZpbHRlcihjID0+IHtcbiAgICAgICAgICByZXR1cm4gYy52YWx1ZSA9PSB0b3duLnZhbHVlO1xuICAgICAgICB9KVswXTtcbiAgICAgICAgdGhpcy50b3duLnBhdGNoVmFsdWUoc2VsZWN0ZWRDb3VudHkpO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRNU0NvdW50eSh6aXBDb2RlOiBzdHJpbmcsIGNvdW50eTogQ29tYm9PcHRpb24pIHtcbiAgICB0aGlzLnF1ZXN0aW9ubmFpcmVTZXJ2aWNlLmdldENvdW50eSgnTVMnLCB6aXBDb2RlKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICB0aGlzLmNvdW50eU9wdGlvbnMgPSByZXNbJ2Nob2ljZXMnXTtcbiAgICAgICAgbGV0IHNlbGVjdGVkQ291bnR5ID0gdGhpcy5jb3VudHlPcHRpb25zLmZpbHRlcihjID0+IHtcbiAgICAgICAgICByZXR1cm4gYy52YWx1ZSA9PSBjb3VudHkudmFsdWU7XG4gICAgICAgIH0pWzBdO1xuICAgICAgICB0aGlzLmNvdW50eS5wYXRjaFZhbHVlKHNlbGVjdGVkQ291bnR5KTtcbiAgICAgIH0pO1xuICB9XG5cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAodGhpcy5hZGRyZXNzRm9ybS52YWxpZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc3VibWl0KCl7XG4gICAgdGhpcy5hZGRyZXNzRm9ybURpcmVjdGl2ZS5vblN1Ym1pdCh1bmRlZmluZWQpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzRmllbGRGb2N1c1N0YXR1cyB7XG4gIHN0cmVldEFkZHJlc3M/OmJvb2xlYW47XG4gIG9wdGlvbmFsQWRkcmVzcz86Ym9vbGVhbjtcbiAgY2l0eT86Ym9vbGVhbjtcbiAgemlwPzpib29sZWFuO1xufSIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiYWRkcmVzc0Zvcm1cIiAjYWRkcmVzc0Zvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDsgbWFyZ2luLWxlZnQ6IDBweDtcIj5cclxuICA8IS0tIDxkaXYgW2Zvcm1Hcm91cF09XCJhZGRyZXNzRm9ybVwiICAjYWRkcmVzc0Zvcm1EaXJlY3RpdmU9XCJuZ0Zvcm1cIiA+IC0tPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwicC1mb3JtZ3JpZFwiIFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCA6ICdhZGRyZXNzLWRpdidcIj5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnRyeScgOiAnY291bnRyeSdcIj57eydDb3VudHJ5JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJjb3VudHJ5T3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJjb3VudHJ5XCIgb3B0aW9uTGFiZWw9XCJ0ZXh0XCIgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnRyeScgOiAnY291bnRyeSdcIiA+PC9hcHAtZHJvcGRvd24+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdjb3VudHJ5JyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCBhcHAtY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctemlwJyA6ICd6aXAnXCI+e3snWmlwIGNvZGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy16aXAnIDogJ3ppcCdcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJ6aXBcIiBtaW5sZW5ndGg9XCI1XCIgbWF4bGVuZ3RoPVwiOVwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnNcclxuICAgICAgICAgICAgICAoYmx1cik9XCJnZXRBZGRyZXNzRGF0YSgkZXZlbnQpOyBzZXRGaWVsZEJsdXIoJ3ppcCcpXCIgKGZvY3VzKT1cInNldEZpZWxkRm9jdXMoJ3ppcCcpXCIgLz48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3ppcCcgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJyxcclxuICAgICAgICAgICAgICAgIGludmFsaWRMZW5ndGg6ICdaaXAgY29kZSBzaG91bGQgYmUgb2YgNSBvciA5IGRpZ2l0cy4nLFxyXG4gICAgICAgICAgICAgICAgaW52YWxpZE51bWJlcjogJ1ppcCBjb2RlIHNob3VsZCBvbmx5IGhhdmUgbnVtYmVycy4nLFxyXG4gICAgICAgICAgICAgICAgaW52YWxpZFppcENvZGU6ICdwbGVhc2UgZW50ZXIgYSB2YWxpZCB6aXAgY29kZScsXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuICBcclxuXHJcbiAgICA8aW9uLXJvdz5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDBweDtcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgcC1mbHVpZFwiPlxyXG4gICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXN0cmVldEFkZHJlc3MnIDogJ3N0cmVldEFkZHJlc3MnXCI+e3snU3RyZWV0IEFkZHJlc3MnIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgPGlucHV0IFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctc3RyZWV0QWRkcmVzcycgOiAnc3RyZWV0QWRkcmVzcydcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cInN0cmVldEFkZHJlc3NcIiBtYXhsZW5ndGg9XCI0MFwiIChibHVyKT1cImdldEFkZHJlc3NTdWdnZXN0aW9uKCk7IHNldEZpZWxkQmx1cignc3RyZWV0QWRkcmVzcycpXCIgKGZvY3VzKT1cInNldEZpZWxkRm9jdXMoJ3N0cmVldEFkZHJlc3MnKVwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPjxiciAvPlxyXG4gICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3N0cmVldEFkZHJlc3MnIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcblxyXG4gICAgPGlvbi1yb3c+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgIHN0eWxlPVwicGFkZGluZy1yaWdodDogMHB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIHAtZmx1aWRcIj5cclxuICAgICAgICAgICAgPGlucHV0IFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctb3B0aW9uYWxBZGRyZXNzJyA6ICdvcHRpb25hbEFkZHJlc3MnXCIgdHlwZT1cImlucHV0XCIgcElucHV0VGV4dCBcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm9wdGlvbmFsQWRkcmVzc1wiIHBsYWNlaG9sZGVyPVwiT3B0aW9uYWxcIiAoYmx1cik9XCJnZXRBZGRyZXNzU3VnZ2VzdGlvbigpO3NldEZpZWxkQmx1cignb3B0aW9uYWxBZGRyZXNzJylcIiAoZm9jdXMpPVwic2V0RmllbGRGb2N1cygnb3B0aW9uYWxBZGRyZXNzJylcIlxyXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCI0MFwiIGFwcFN0cmlwSW52aXNpYmxlQ2hhcnMvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuXHJcblxyXG4gICAgPGlvbi1yb3c+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctY2l0eScgOiAnY2l0eSdcIj57eydDaXR5JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGlucHV0IFtpZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctY2l0eScgOiAnY2l0eSdcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFtmb3JtQ29udHJvbF09XCJjaXR5XCIgXHJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjMwXCIgKGJsdXIpPVwiZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKTsgc2V0RmllbGRCbHVyKCdjaXR5JylcIiAoZm9jdXMpPVwic2V0RmllbGRGb2N1cygnY2l0eScpXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSdjaXR5JyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sIGFwcC1jb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctc3RhdGUnIDogJ3N0YXRlJ1wiPnt7J1N0YXRlJyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJzdGF0ZU9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwic3RhdGVcIiBvcHRpb25MYWJlbD1cInRleHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiIFtpbnB1dElkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1zdGF0ZScgOiAnc3RhdGUnXCI+PC9hcHAtZHJvcGRvd24+PGJyIC8+XHJcbiAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nc3RhdGUnIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiAqbmdJZj1cInN0YXRlLnZhbHVlICYmIChzdGF0ZS52YWx1ZS52YWx1ZT09PSdNUycgJiYgZm9yU3RhdGU9PT0nTVMnIFxyXG4gICAgICAgIHx8IChzdGF0ZS52YWx1ZS52YWx1ZT09PSdDVCcgICYmIGZvclN0YXRlPT09J01TJykpICAmJiBjb3VudHlSZXF1aXJlZD09PXRydWVcIiBzaXplPVwiMTJcInN0eWxlPVwicGFkZGluZy1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnR5JyA6ICdjb3VudHknXCI+e3snQ291bnR5JyB8IHRyYW5zbGF0ZX19PC9sYWJlbD48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1kcm9wZG93biBbb3B0aW9uc109XCJjb3VudHlPcHRpb25zXCIgW2Zvcm1Db250cm9sXT1cImNvdW50eVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctY291bnR5JyA6ICdjb3VudHknXCI+PC9hcHAtZHJvcGRvd24+PGJyLz5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NvdW50eScgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgKm5nSWY9XCJzdGF0ZS52YWx1ZSAmJiBzdGF0ZS52YWx1ZS52YWx1ZT09PSdNRScgJiYgZm9yU3RhdGU9PT0nTUUnICYmIGNvdW50eVJlcXVpcmVkPT09dHJ1ZVwiIHNpemU9XCIxMlwiICBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXRvd24nIDogJ3Rvd24nXCI+e3snVG93bicgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwidG93bk9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwidG93blwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctdG93bicgOiAndG93bidcIj48L2FwcC1kcm9wZG93bj48YnIvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0ndG93bicgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgICA8aW9uLXJvdyBzdHlsZT1cInBhZGRpbmctdG9wOiA0cHg7XCI+XHJcbiAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAwcHg7XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dOZWlnaGJvdXJRdWVzdGlvbj09PXRydWUgJiYgZm9yU3RhdGU9PT0nTUUnXCIgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctbmVpZ2hib3VyRmxhZycgOiAnbmVpZ2hib3VyRmxhZydcIj57eydBcmUgeW91IGNvbnRpbnVpbmcgdG8gbG9vayBmb3Igd29yayBpbiBNYWluZT8nIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gW2lucHV0SWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLW5laWdoYm91ckZsYWcnIDogJ25laWdoYm91ckZsYWcnXCIgdW5zZWxlY3RhYmxlPVwidHJ1ZVwiIFtvcHRpb25zXT1cInllc05vT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm5laWdoYm91ckZsYWdcIiBvcHRpb25MYWJlbD1cInRleHRcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nbmVpZ2hib3VyRmxhZycgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy10b3A6IDBweDtcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd05laWdoYm91clF1ZXN0aW9uPT09dHJ1ZSAmJiBmb3JTdGF0ZT09PSdNUydcIiA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1uZWlnaGJvdXJGbGFnJyA6ICduZWlnaGJvdXJGbGFnJ1wiPnt7J0RvIHlvdSBub3JtYWxseSB3b3JrIGluIE1pc3Npc3NpcHBpPycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctbmVpZ2hib3VyRmxhZycgOiAnbmVpZ2hib3VyRmxhZydcIiB1bnNlbGVjdGFibGU9XCJ0cnVlXCIgW29wdGlvbnNdPVwieWVzTm9PcHRpb25zXCJcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmVpZ2hib3VyRmxhZ1wiIG9wdGlvbkxhYmVsPVwidGV4dFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSduZWlnaGJvdXJGbGFnJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gPC9kaXY+IC0tPlxyXG48L2Zvcm0+XHJcbjxhcHAtYWRkcmVzcy1zdWdnZXN0aW9uICNhZGRyZXNzU3VnZ2VzdGlvbiAqbmdJZj1cIihlbmFibGVBZGRyZXNzVmFsaWRhdGlvbikgJiYgdGhpcy5hZGRyZXNzRm9ybS52YWxpZCAgJiYgKCgoaW5wdXRJZD09PSdyZXNBZGRyZXNzJyB8fCBpbnB1dElkPT09J3Jlc0FkcmVzcycpICYmIGRpZmZNYWlsQWRkcmVzcz09PSBmYWxzZSkgfHwgKGlucHV0SWQ9PT0nbWFpbEFkZHJlc3MnICYmIGRpZmZNYWlsQWRkcmVzcz09PSB0cnVlKSB8fCAoc3RhbmRhbG9uZUFkZHJlc3NGb3JtID09PSB0cnVlKSlcIlxyXG5bZm9ybV09XCJhZGRyZXNzRm9ybVwiIFtmb3JtTmFtZV09XCJpbnB1dElkXCIgW2RpZmZNYWlsQWRkcmVzc0ZsYWddPVwiZGlmZk1haWxBZGRyZXNzXCIgW2Zvcm1CbHVyXT1cImNoZWNrRm9ybUJsdXJyKClcIiAoY2hlY2tGb3JtSXNCbHVyKT1cImNoZWNrRm9ybUJsdXJyKClcIiBbcXVlc3Rpb25haXJlRm9ybV09XCJxdWVzdGlvbmFpcmVGb3JtXCIgW3N0YW5kYWxvbmVBZGRyZXNzRm9ybV09XCJzdGFuZGFsb25lQWRkcmVzc0Zvcm1cIj48L2FwcC1hZGRyZXNzLXN1Z2dlc3Rpb24+XHJcbiJdfQ==
|
|
700
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvYWRkcmVzcy9hZGRyZXNzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvY29tcG9uZW50cy9hZGRyZXNzL2FkZHJlc3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWEsU0FBUyxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUM5SCxPQUFPLEVBQXVGLGFBQWEsRUFBRSxpQkFBaUIsRUFBYSxVQUFVLEVBQWUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzTCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFLcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7SUNtRTFELG1DQUNzSCxjQUFBLGVBQUE7SUFFeEQsWUFBd0I7O0lBQUEsaUJBQVE7SUFBQSxxQkFBTTtJQUM5Rix1Q0FDc0g7SUFBcEMsOEtBQVksZUFBQSw2QkFBc0IsQ0FBQSxJQUFDO0lBQUMsaUJBQWU7SUFBQSxxQkFBSyxtQkFBQTtJQUk1SSxpQkFBTSxFQUFBOzs7O0lBVEQsMEVBQXFEO0lBR2pELGVBQWdEO0lBQWhELDRFQUFnRDtJQUFDLGVBQXdCO0lBQXhCLHFEQUF3QjtJQUNsRSxlQUF5QjtJQUF6Qiw4Q0FBeUIsOEJBQUEsMkJBQUEsbUVBQUE7SUFFNUIsZUFBb0I7SUFBcEIseUJBQW9CO0lBQUMscUNBQWdCLGFBQUEsdUNBQUE7Ozs7SUFLdEQsbUNBQW1NLGNB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SztZQUNHLE9BQU87a0JBQWYsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csZUFBZTtrQkFBdkIsS0FBSztZQUNHLHVCQUF1QjtrQkFBL0IsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLHFCQUFxQjtrQkFBN0IsS0FBSztZQUNHLG1CQUFtQjtrQkFBM0IsS0FBSzs7a0ZBekJLLGdCQUFnQjtBQXVjN0IsTUFBTSxPQUFPLHVCQUF1QjtDQU9uQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgT25DaGFuZ2VzLCBWaWV3Q2hpbGQsU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1CdWlsZGVyLCBVbnR5cGVkRm9ybUdyb3VwLCBOZ0Zvcm0sIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SLCBWYWxpZGF0b3IsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBZGRyZXNzQ29tcG9uZW50TW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvQWRkcmVzc0NvbXBvbmVudE1vZGVsJztcbmltcG9ydCB7IENvbWJvT3B0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3F1ZXN0aW9ubmFpcmUvQ29tYm9Nb2RlbCc7XG5pbXBvcnQgeyBEbXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZG1zLXNlcnZpY2UvZG1zLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbm5haXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9ubmFpcmUvcXVlc3Rpb25uYWlyZS5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRpb25zL0FwcFZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgQWRkcmVzc1N1Z2dlc3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9hZGRyZXNzLXN1Z2dlc3Rpb24vYWRkcmVzcy1zdWdnZXN0aW9uLmNvbXBvbmVudCc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWRkcmVzcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGRyZXNzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWRkcmVzcy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IEFkZHJlc3NDb21wb25lbnQsXG4gICAgbXVsdGk6IHRydWVcbiAgfSxcbiAge1xuICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgbXVsdGk6IHRydWUsXG4gICAgdXNlRXhpc3Rpbmc6IEFkZHJlc3NDb21wb25lbnRcbiAgfVxuICBdLFxuXG59KVxuZXhwb3J0IGNsYXNzIEFkZHJlc3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkRlc3Ryb3ksIFZhbGlkYXRvcixPbkNoYW5nZXN7XG5cbiAgQFZpZXdDaGlsZCgnYWRkcmVzc0Zvcm1EaXJlY3RpdmUnLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGFkZHJlc3NGb3JtRGlyZWN0aXZlOiBOZ0Zvcm07XG5cbiAgQFZpZXdDaGlsZCgnYWRkcmVzc1N1Z2dlc3Rpb24nKVxuICBwdWJsaWMgYWRkcmVzc1N1Z2dlc3Rpb246QWRkcmVzc1N1Z2dlc3Rpb25Db21wb25lbnQ7XG5cbiAgcHVibGljIGFkZHJlc3NGb3JtOiBVbnR5cGVkRm9ybUdyb3VwO1xuICBwdWJsaWMgc3RhdGVPcHRpb25zOiBhbnkgPSBbXTtcbiAgcHVibGljIGNvdW50eU9wdGlvbnM6IGFueSA9IFtdO1xuICBwdWJsaWMgdG93bk9wdGlvbnM6IGFueSA9IFtdO1xuICBwdWJsaWMgeWVzTm9PcHRpb25zID0gQ29tYm9PcHRpb24uWUVTX05PO1xuICBwdWJsaWMgY291bnRyeU9wdGlvbnMgPSBDb21ib09wdGlvbi5DT1VOVFJZO1xuICBwdWJsaWMgYWRkcmVzc0RhdGE6IEFkZHJlc3NDb21wb25lbnRNb2RlbCA9IG5ldyBBZGRyZXNzQ29tcG9uZW50TW9kZWwoKTtcbiAgQE91dHB1dCgpIGFkZHJlc3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBJbnB1dCgpIGNvdW50eVJlcXVpcmVkOiBCb29sZWFuO1xuICBASW5wdXQoKSBmcm9tUG9wdXA6IEJvb2xlYW47XG4gIEBJbnB1dCgpIGlucHV0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgY29tcG9uZW50RGF0YTpzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dTdWdnZXN0aW9uOiBib29sZWFuO1xuICBASW5wdXQoKSBkaWZmTWFpbEFkZHJlc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGVuYWJsZUFkZHJlc3NWYWxpZGF0aW9uOmJvb2xlYW5cbiAgQElucHV0KCkgcXVlc3Rpb25haXJlRm9ybTtcbiAgQElucHV0KCkgc3RhbmRhbG9uZUFkZHJlc3NGb3JtOiBib29sZWFuO1xuICBASW5wdXQoKSBwYXJlbnRGb3JtQ29tcG9uZW50OiBzdHJpbmc7XG4gIGFkZHJlc3NUeXBlRm9yTmVpZ2hib3VyQ2hlY2s6IHN0cmluZyA9IFwiTlwiO1xuICBuZWlnaGJvdXJpbmdTdGF0ZU1FOiBzdHJpbmdbXSA9IFsnTkgnLCdWVCcsJ01BJ107XG4gIG5laWdoYm91cmluZ1N0YXRlTVM6IHN0cmluZ1tdID0gWydBTCcsJ0FSJywnTEEnLCdUTiddO1xuICBzaG93TmVpZ2hib3VyUXVlc3Rpb246Ym9vbGVhbiA9IGZhbHNlO1xuICBibHVyRnJvbUZpZWxkOiBib29sZWFuID0gZmFsc2U7XG4gIGZvcm1CbHVyOiBib29sZWFuO1xuICBwdWJsaWMgZm9yU3RhdGU6IHN0cmluZztcbiAgdXNaaXBjb2RlVmFsaWRhdGlvbnM6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgQXBwVmFsaWRhdG9ycy5pc1ZhbGlkWmlwQ29kZV07XG4gIGNhbmFkYVppcGNvZGVWYWxpZGF0aW9uczogVmFsaWRhdG9yRm5bXSA9IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBBcHBWYWxpZGF0b3JzLmlzVmFsaWRDYW5hZGlhblppcENvZGVdO1xuICBhZGRyZXNzRmllbGRGb2N1c1N0YXR1czpBZGRyZXNzRmllbGRGb2N1c1N0YXR1cz0ge307XG4gIGxhc3RWYWxpZEFkZHJlc3M6YW55O1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHVibGljIHV0aWw6IFV0aWxTZXJ2aWNlLCBwdWJsaWMgcXVlc3Rpb25uYWlyZVNlcnZpY2U6IFF1ZXN0aW9ubmFpcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLCBwcml2YXRlIGRtczogRG1zU2VydmljZSkge1xuICAgIHRoaXMuZm9yU3RhdGUgPSB1dGlsLmdldFN0YXRlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmFkZHJlc3NGb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XG4gICAgICAnY291bnRyeSc6IFtudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICd6aXAnOiBbbnVsbCwgVmFsaWRhdG9ycy5jb21wb3NlKFtWYWxpZGF0b3JzLnJlcXVpcmVkXSldLFxuICAgICAgJ3N0cmVldEFkZHJlc3MnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnc3RhdGUnOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnb3B0aW9uYWxBZGRyZXNzJzogW251bGxdLFxuICAgICAgJ3Rvd24nOiBbbnVsbF0sXG4gICAgICAnY291bnR5JzogW251bGxdLFxuICAgICAgJ2NpdHknOiBbbnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICAnbmVpZ2hib3VyRmxhZyc6IFtudWxsXSxcbiAgICAgICduZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZCc6IFtudWxsXVxuICAgIH0pO1xuICAgIFxuICAgIHRoaXMuc2V0UmVxdWlyZWRWYWxpZGF0aW9uKCk7XG4gICAgaWYodGhpcy5jb21wb25lbnREYXRhICE9bnVsbCl7XG4gICAgICBjb25zdCBvYmogPSBKU09OLnBhcnNlKHRoaXMuY29tcG9uZW50RGF0YSk7XG4gICAgICB0aGlzLmFkZHJlc3NUeXBlRm9yTmVpZ2hib3VyQ2hlY2sgPSBvYmpbXCJuZWlnaGJvcmluZ1N0YXRlQ2hlY2tSZXF1aXJlZFwiXTtcbiAgICAgLy8gdGhpcy5uZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZC5zZXRWYWx1ZSh0aGlzLm5laWdoYm9yaW5nU3RhdGVDaGVja1JlcXVpcmVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvdW50cnkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjb3VudHJ5ID0+IHtcbiAgICAgIHRoaXMuZmlsdGVyU3RhdGUoY291bnRyeSlcbiAgICAgIHRoaXMuZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICBpZihzdGF0ZSl7XG4gICAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdNUycpICYmIHN0YXRlLnZhbHVlID09ICdNUycpe1xuICAgICAgICAgIHRoaXMuZmlsdGVyQ291bnR5KHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLnV0aWwuaXNTdGF0ZSgnQ1QnKSAmJiBzdGF0ZS52YWx1ZSA9PSAnQ1QnKXtcbiAgICAgICAgICB0aGlzLmZpbHRlckNvdW50eShzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYodGhpcy51dGlsLmlzU3RhdGUoJ01FJykgJiYgc3RhdGUudmFsdWUgPT0gJ01FJyl7XG4gICAgICAgICAgdGhpcy5maWx0ZXJUb3duKHN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBpZih0aGlzLmFkZHJlc3NUeXBlRm9yTmVpZ2hib3VyQ2hlY2sgPT09ICdZJyl7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ25laWdoYm91ciBjaGVjayB0byBoYXBwZW4nKTtcbiAgICAgICAgICBpZih0aGlzLnV0aWwuaXNTdGF0ZSgnTVMnKSl7XG4gICAgICAgICAgICBpZih0aGlzLm5laWdoYm91cmluZ1N0YXRlTVMuaW5jbHVkZXMoc3RhdGUudmFsdWUpKXtcbiAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnbmVpZ2hib3VyIHF1ZXN0aW9uIHNob3VsZCBkaXNwbGF5Jyk7XG4gICAgICAgICAgICAgIHRoaXMuc2hvd05laWdoYm91clF1ZXN0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy51dGlsLnNldFJlcXVpcmVkVmFsaWRhdG9yKHRoaXMubmVpZ2hib3VyRmxhZyk7XG4gICAgICAgICAgICAgIHRoaXMubmVpZ2hib3JTdGF0ZUNoZWNrUmVxdWlyZWQuc2V0VmFsdWUoXCJZXCIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TmVpZ2hib3VyUXVlc3Rpb24gPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLm5laWdoYm91ckZsYWcpO1xuICAgICAgICAgICAgICB0aGlzLm5laWdoYm91ckZsYWcuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICAgIHRoaXMubmVpZ2hib3JTdGF0ZUNoZWNrUmVxdWlyZWQuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKHRoaXMudXRpbC5pc1N0YXRlKCdNRScpKXtcbiAgICAgICAgICAgIGlmKHRoaXMubmVpZ2hib3VyaW5nU3RhdGVNRS5pbmNsdWRlcyhzdGF0ZS52YWx1ZSkpe1xuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCduZWlnaGJvdXIgcXVlc3Rpb24gc2hvdWxkIGRpc3BsYXknKTtcbiAgICAgICAgICAgICAgdGhpcy5zaG93TmVpZ2hib3VyUXVlc3Rpb24gPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLnV0aWwuc2V0UmVxdWlyZWRWYWxpZGF0b3IodGhpcy5uZWlnaGJvdXJGbGFnKTtcbiAgICAgICAgICAgICAgdGhpcy5uZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZC5zZXRWYWx1ZShcIllcIik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNob3dOZWlnaGJvdXJRdWVzdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMubmVpZ2hib3VyRmxhZyk7XG4gICAgICAgICAgICAgIHRoaXMubmVpZ2hib3VyRmxhZy5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgdGhpcy5uZWlnaGJvclN0YXRlQ2hlY2tSZXF1aXJlZC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gICAgICAgIFxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuemlwLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoIHppcCA9PiB7XG4gICAgICBpZih6aXAgJiYgdGhpcy5zdGF0ZS52YWx1ZSA9PSB0aGlzLmZvclN0YXRlKXtcbiAgICAgICAgdGhpcy5maWx0ZXJDb3VudHkodGhpcy5zdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvdW50cnkuc2V0VmFsdWUoeyB2YWx1ZTogXCJVU1wiLCB0ZXh0OiBcIlVuaXRlZCBTdGF0ZXNcIiB9KTtcbiAgICB0aGlzLmZvcm1CbHVyID0gdGhpcy5jaGVja0Zvcm1CbHVycigpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlOlNpbXBsZUNoYW5nZXMpe1xuICAgIGlmKGNoYW5nZVsnZGlmZk1haWxBZGRyZXNzJ10pe1xuICAgICAgaWYoY2hhbmdlWydkaWZmTWFpbEFkZHJlc3MnXS5jdXJyZW50VmFsdWUgPT09IGZhbHNlICYmICh0aGlzLmlucHV0SWQgPT09ICdyZXNBZGRyZXNzJ3x8IHRoaXMuaW5wdXRJZD09PSdyZXNBZHJlc3MnKSl7XG4gICAgICAgIHRoaXMuZGlmZk1haWxBZGRyZXNzID0gZmFsc2U7XG4gICAgICAgIGlmKHRoaXMuY2hlY2tGb3JtQmx1cnIoKSAmJiB0aGlzLmFkZHJlc3NGb3JtPy52YWxpZCl7XG4gICAgICAgICAgdGhpcy5hZGRyZXNzU3VnZ2VzdGlvbi5nZXRWYWxpZGF0ZUFkZHJlc3ModHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2V0RmllbGRCbHVyKGZpZWxkKXtcbiAgICB0aGlzLmFkZHJlc3NGaWVsZEZvY3VzU3RhdHVzW2ZpZWxkXSA9IGZhbHNlO1xuICB9XG4gIFxuICBzZXRGaWVsZEZvY3VzKGZpZWxkKXtcbiAgICB0aGlzLmFkZHJlc3NGaWVsZEZvY3VzU3RhdHVzW2ZpZWxkXSA9IHRydWU7XG4gIH1cblxuICBnZXRBZGRyZXNzU3VnZ2VzdGlvbigpe1xuICAgIHRoaXMuYmx1ckZyb21GaWVsZCA9IHRoaXMuYWRkcmVzc0Zvcm0uZGlydHkgJiYgdGhpcy5hZGRyZXNzRm9ybS52YWxpZDtcblxuICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgIGlmKHRoaXMuYmx1ckZyb21GaWVsZCAmJiB0aGlzLmFkZHJlc3NTdWdnZXN0aW9uICYmIHRoaXMuZW5hYmxlQWRkcmVzc1ZhbGlkYXRpb24gJiYgdGhpcy5jaGVja0Zvcm1CbHVycigpKXtcbiAgICAgICAgdGhpcy5hZGRyZXNzU3VnZ2VzdGlvbi5nZXRWYWxpZGF0ZUFkZHJlc3MoZmFsc2UpO1xuICAgICAgICB0aGlzLmFkZHJlc3NGb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB9XG4gICAgfSwxMClcbiAgICBcbiAgfVxuICBjaGVja0Zvcm1CbHVycigpe1xuICAgIGxldCBmaWVsZEJsdXIgPSB0cnVlO1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuYWRkcmVzc0ZpZWxkRm9jdXNTdGF0dXMpIHtcbiAgICAgIGlmKHRoaXMuYWRkcmVzc0ZpZWxkRm9jdXNTdGF0dXNba2V5XSl7XG4gICAgICAgIGZpZWxkQmx1ciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmZvcm1CbHVyID0gZmllbGRCbHVyXG4gICAgcmV0dXJuIGZpZWxkQmx1cjtcbiAgfVxuXG4gIHZhbGlkQWRkcmVzcyhhZGRyZXNzKXtcbiAgICB0aGlzLmxhc3RWYWxpZEFkZHJlc3MgPSBhZGRyZXNzXG4gIH1cbiAgc2V0UmVxdWlyZWRWYWxpZGF0aW9uKCkge1xuICAgIHRoaXMuY291bnRyeS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGMgPT4ge1xuICAgICAgaWYoYy52YWx1ZSA9PSAnVVMnKXtcbiAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnppcCk7XG4gICAgICAgIHRoaXMudXRpbC5zZXRWYWxpZGF0aW9uKHRoaXMuemlwLCB0aGlzLnVzWmlwY29kZVZhbGlkYXRpb25zKTtcbiAgICAgIH0gZWxzZSBpZihjLnZhbHVlID09ICdDQScpe1xuICAgICAgICB0aGlzLnV0aWwuY2xlYXJWYWxpZGF0aW9uKHRoaXMuemlwKTtcbiAgICAgICAgdGhpcy51dGlsLnNldFZhbGlkYXRpb24odGhpcy56aXAsIHRoaXMuY2FuYWRhWmlwY29kZVZhbGlkYXRpb25zKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMuc3RhdGUudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShzdGF0ZVZhbHVlID0+IHtcbiAgICAgIGlmIChzdGF0ZVZhbHVlKSB7XG4gICAgICAgIGlmICgoKHN0YXRlVmFsdWUudmFsdWUgPT09ICdNUycgJiYgdGhpcy5mb3JTdGF0ZSA9PT0gJ01TJylcbiAgICAgICAgICB8fCAoc3RhdGVWYWx1ZS52YWx1ZSA9PT0gJ0NUJyAmJiB0aGlzLmZvclN0YXRlID09PSAnQ1QnKSkgJiYgdGhpcy5jb3VudHlSZXF1aXJlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLmNvdW50eSk7XG4gICAgICAgICAgdGhpcy51dGlsLmNsZWFyVmFsaWRhdGlvbih0aGlzLnRvd24pO1xuICAgICAgICAgIHRoaXMudG93bi5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdGF0ZVZhbHVlLnZhbHVlID09PSAnTUUnICYmIHRoaXMuZm9yU3RhdGUgPT09ICdNRScgJiYgdGhpcy5jb3VudHlSZXF1aXJlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMudXRpbC5zZXRSZXF1aXJlZFZhbGlkYXRvcih0aGlzLnRvd24pO1xuICAgICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jb3VudHkpO1xuICAgICAgICAgIHRoaXMuY291bnR5LnNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy5jb3VudHkpO1xuICAgICAgICAgIHRoaXMuY291bnR5LnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgIHRoaXMudXRpbC5jbGVhclZhbGlkYXRpb24odGhpcy50b3duKTtcbiAgICAgICAgICB0aGlzLnRvd24uc2V0VmFsdWUobnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgfVxuICAgIH0pO1xuXG4gIH1cblxuICBnZXQgbmVpZ2hib3JTdGF0ZUNoZWNrUmVxdWlyZWQoKXtcbiAgICByZXR1cm4gdGhpcy5hZGRyZXNzRm9ybS5jb250cm9sc1snbmVpZ2hib3JTdGF0ZUNoZWNrUmVxdWlyZWQnXTtcbiAgfVxuICBcbiAgZ2V0IHRvd24oKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ3Rvd24nXTtcbiAgfVxuXG4gIGdldCBjb3VudHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ2NvdW50eSddO1xuICB9XG5cbiAgZ2V0IGNpdHkoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ2NpdHknXTtcbiAgfVxuXG4gIGdldCBjb3VudHJ5KCkge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWydjb3VudHJ5J107XG4gIH1cblxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ3N0YXRlJ107XG4gIH1cblxuICBnZXQgemlwKCkge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWyd6aXAnXTtcbiAgfVxuXG4gIGdldCBzdHJlZXRBZGRyZXNzKCkge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWydzdHJlZXRBZGRyZXNzJ107XG4gIH1cblxuICBnZXQgb3B0aW9uYWxBZGRyZXNzKCkge1xuICAgIHJldHVybiB0aGlzLmFkZHJlc3NGb3JtLmNvbnRyb2xzWydvcHRpb25hbEFkZHJlc3MnXTtcbiAgfVxuXG4gIGdldCBuZWlnaGJvdXJGbGFnKCl7XG4gICAgcmV0dXJuIHRoaXMuYWRkcmVzc0Zvcm0uY29udHJvbHNbJ25laWdoYm91ckZsYWcnXTtcbiAgfVxuXG4gIGdldEFkZHJlc3NEYXRhKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuemlwICYmIHRoaXMuemlwLnZhbHVlKSB7XG4gICAgICB0aGlzLmRtc1xuICAgICAgICAuZ2V0QWRkcmVzcyh0aGlzLnppcC52YWx1ZSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5hZGRyZXNzRGF0YSA9IHJlcztcbiAgICAgICAgICAgIGlmKHRoaXMuYWRkcmVzc0RhdGEuY2l0eSl7XG4gICAgICAgICAgICAgIHRoaXMuY2l0eS5wYXRjaFZhbHVlKHRoaXMuYWRkcmVzc0RhdGEuY2l0eSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKHRoaXMuYWRkcmVzc0RhdGEuc3RhdGUpe1xuICAgICAgICAgICAgICB0aGlzLnN0YXRlLnBhdGNoVmFsdWUodGhpcy5hZGRyZXNzRGF0YS5zdGF0ZSk7XG4gICAgICAgICAgICB9IFxuXG4gICAgICAgICAgICBpZih0aGlzLmFkZHJlc3NEYXRhLmNvdW50eSl7XG4gICAgICAgICAgICAgIHRoaXMuY291bnR5LnBhdGNoVmFsdWUodGhpcy5hZGRyZXNzRGF0YS5jb3VudHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGF0ZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICAvLyB0aGlzLmdldEFkZHJlc3NTdWdnZXN0aW9uKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJDb3VudHJ5KGV2ZW50KSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ2V2ZW50JywgZXZlbnQpXG4gICAgbGV0IGZpbHRlcmVkOiBhbnlbXSA9IFtdO1xuICAgIGxldCBxdWVyeSA9IGV2ZW50LnF1ZXJ5O1xuICAgIHRoaXMuY291bnRyeU9wdGlvbnMgPSBDb21ib09wdGlvbi5DT1VOVFJZO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb3VudHJ5T3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNvdW50cnkgPSB0aGlzLmNvdW50cnlPcHRpb25zW2ldO1xuICAgICAgaWYgKGNvdW50cnkudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkudG9Mb3dlckNhc2UoKSkgPT0gMCkge1xuICAgICAgICBmaWx0ZXJlZC5wdXNoKGNvdW50cnkpO1xuICAgICAgICB0aGlzLnN0YXRlLnNldFZhbHVlKG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNvdW50cnlPcHRpb25zID0gZmlsdGVyZWQ7XG5cbiAgfVxuXG4gIGZpbHRlckNvdW50eShldmVudCkge1xuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0Q291bnR5KHRoaXMuc3RhdGUudmFsdWVbJ3ZhbHVlJ10sIHRoaXMuemlwLnZhbHVlKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICAvKnRoaXMubG9nZ2VyLmRlYnVnKCdyZXMnLCByZXMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc1snY2hvaWNlcyddLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbGV0IGNob2ljZSA9IHJlc1snY2hvaWNlcyddW2ldO1xuICAgICAgICAgIGlmIChjaG9pY2UudGV4dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocXVlcnkudG9Mb3dlckNhc2UoKSkgPT0gMCkge1xuICAgICAgICAgICAgZmlsdGVyZWQucHVzaChjaG9pY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSovXG4gICAgICAgIHRoaXMuY291bnR5T3B0aW9ucyA9IHJlc1snY2hvaWNlcyddO1xuICAgICAgfSk7XG4gIH1cblxuICBmaWx0ZXJUb3duKGV2ZW50KSB7XG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRDb3VudHkodGhpcy5zdGF0ZS52YWx1ZVsndmFsdWUnXSwgdGhpcy56aXAudmFsdWUpLnN1YnNjcmliZShcbiAgICAgIHJlcyA9PiB7XG4gICAgICAgIHRoaXMudG93bk9wdGlvbnMgPSByZXNbJ2Nob2ljZXMnXTtcbiAgICAgIH0pO1xuICB9XG5cbiAgZmlsdGVyU3RhdGUoZXZlbnQpIHtcbiAgICBsZXQgY2hvaWNlOiBhbnk7XG4gICAgaWYgKHRoaXMuY291bnRyeT8udmFsdWU/LnZhbHVlID09PSAnVVMnKSB7XG4gICAgICBjb25zdCBjdXJyZW50U3RhdGUgPSBDb21ib09wdGlvbi5VU19TVEFURVMuZmluZChzdGF0ZSA9PiBzdGF0ZS52YWx1ZSA9PSB0aGlzLnV0aWwuZ2V0U3RhdGUoKSlcbiAgICAgIGNob2ljZSA9IFtjdXJyZW50U3RhdGUsIC4uLkNvbWJvT3B0aW9uLlVTX1NUQVRFUy5maWx0ZXIoc3RhdGUgPT4gc3RhdGUudmFsdWUgIT0gdGhpcy51dGlsLmdldFN0YXRlKCkpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jb3VudHJ5Py52YWx1ZT8udmFsdWUgPT09ICdDQScpIHtcbiAgICAgIGNob2ljZSA9IENvbWJvT3B0aW9uLkNBX1NUQVRFUztcbiAgICB9XG5cbiAgICAvKmZvciAobGV0IGkgPSAwOyBpIDwgY2hvaWNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoY2hvaWNlW2ldLnRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpID09IDApIHtcbiAgICAgICAgZmlsdGVyZWQucHVzaChjaG9pY2VbaV0pO1xuICAgICAgfVxuICAgIH0qL1xuICAgIHRoaXMuc3RhdGVPcHRpb25zID0gY2hvaWNlO1xuXG4gIH1cblxuICBzZXRXaWR0aFN0eWxlKCk6IG9iamVjdCB7XG4gICAgaWYgKHRoaXMuZnJvbVBvcHVwKSB7XG4gICAgICBsZXQgc3R5bGVPYmogPSB7XG4gICAgICAgICdtYXgtd2lkdGgnOiAnaW5pdGlhbCdcbiAgICAgIH07XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdHlsZU9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBzdHlsZU9iaiA9IHtcbiAgICAgICAgJ21heC13aWR0aCc6ICdmaXQtY29udGVudCdcbiAgICAgIH07XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihzdHlsZU9iaik7XG4gICAgfVxuICB9XG5cbiAgb25Ub3VjaGVkOiBGdW5jdGlvbiA9ICgpID0+IHsgfTtcblxuICBvbkNoYW5nZVN1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgZm9yIChsZXQgc3ViIG9mIHRoaXMub25DaGFuZ2VTdWJzKSB7XG4gICAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKG9uQ2hhbmdlOiBhbnkpIHtcbiAgICBjb25zdCBzdWIgPSB0aGlzLmFkZHJlc3NGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUob25DaGFuZ2UpO1xuICAgIHRoaXMub25DaGFuZ2VTdWJzLnB1c2goc3ViKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogRnVuY3Rpb24pIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IG9uVG91Y2hlZDtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm0uZGlzYWJsZSgpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuYWRkcmVzc0Zvcm0uZW5hYmxlKCk7XG4gICAgfVxuICB9XG5cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBsZXQgZm9ybVZhbHVlIDogQWRkcmVzc0NvbXBvbmVudE1vZGVsO1xuICAgIGlmKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyl7XG4gICAgICBmb3JtVmFsdWUgPSBKU09OLnBhcnNlKHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JtVmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gICAgaWYgKGZvcm1WYWx1ZSkge1xuICAgICAgaWYgKGZvcm1WYWx1ZS5jb3VudHJ5ICYmICFmb3JtVmFsdWUuY291bnRyeS50ZXh0ICYmIGZvcm1WYWx1ZS5jb3VudHJ5LnZhbHVlKSB7XG4gICAgICAgIGxldCBjb3VudHJ5ID0gdGhpcy5nZXRDb3VudHJ5KGZvcm1WYWx1ZS5jb3VudHJ5Py52YWx1ZSlcbiAgICAgICAgZm9ybVZhbHVlLmNvdW50cnkgPSBjb3VudHJ5O1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybVZhbHVlLnN0YXRlICYmICFmb3JtVmFsdWUuc3RhdGUudGV4dCAmJiBmb3JtVmFsdWUuc3RhdGUudmFsdWUpIHtcbiAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5nZXRTdGF0ZShmb3JtVmFsdWUuY291bnRyeT8udmFsdWUsIGZvcm1WYWx1ZS5zdGF0ZS52YWx1ZS50cmltKCkpXG4gICAgICAgIGZvcm1WYWx1ZS5zdGF0ZSA9IHN0YXRlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybVZhbHVlLmNvdW50eSAmJiAhZm9ybVZhbHVlLmNvdW50eS50ZXh0ICYmIGZvcm1WYWx1ZS5jb3VudHkudmFsdWUgJiYgZm9ybVZhbHVlLnN0YXRlLnZhbHVlID09PSAnTVMnKSB7XG4gICAgICAgIHRoaXMuc2V0TVNDb3VudHkoZm9ybVZhbHVlWyd6aXAnXSwgZm9ybVZhbHVlLmNvdW50eSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3JtVmFsdWUudG93biAmJiAhZm9ybVZhbHVlLnRvd24udGV4dCAmJiBmb3JtVmFsdWUudG93bi52YWx1ZSAmJiBmb3JtVmFsdWUuc3RhdGUudmFsdWUgPT09ICdNRScpIHtcbiAgICAgICAgdGhpcy5zZXRNRVRvd24oZm9ybVZhbHVlWyd6aXAnXSAsZm9ybVZhbHVlLnRvd24pO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRyZXNzRm9ybS5wYXRjaFZhbHVlKGZvcm1WYWx1ZSk7XG4gICAgfVxuICB9XG5cblxuXG4gIGdldENvdW50cnkoY291bnRyeSkge1xuICAgIGlmIChjb3VudHJ5ID09IG51bGwgfHwgY291bnRyeSA9PSAnVVMnKSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogXCJVU1wiLCB0ZXh0OiBcIlVuaXRlZCBTdGF0ZXNcIiB9O1xuICAgIH0gZWxzZSBpZiAoY291bnRyeSA9PSAnQ0EnKSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogXCJDQVwiLCB0ZXh0OiBcIkNhbmFkYVwiIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIENvdW50cnkgY29uZmlndXJlZCAnLCBjb3VudHJ5KTtcbiAgICB9XG5cbiAgfVxuXG4gIGdldFN0YXRlKGNvdW50cnksIHN0YXRlKSB7XG4gICAgaWYgKGNvdW50cnkgPT0gbnVsbCB8fCBjb3VudHJ5ID09ICdVUycpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFN0YXRlVmFsdWUoQ29tYm9PcHRpb24uVVNfU1RBVEVTLCBzdGF0ZSk7XG4gICAgfSBlbHNlIGlmIChjb3VudHJ5ID09ICdDQScpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldFN0YXRlVmFsdWUoQ29tYm9PcHRpb24uQ0FfU1RBVEVTLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIENvdW50cnkgY29uZmlndXJlZCAnLCBjb3VudHJ5KTtcbiAgICB9XG4gIH1cblxuXG4gIGdldFN0YXRlVmFsdWUoc3RhdGVzOiBDb21ib09wdGlvbltdLCBuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc3RhdGVzLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS52YWx1ZSA9PSBuYW1lKVswXTtcbiAgfVxuXG4gIHNldE1FVG93bih6aXBDb2RlIDogc3RyaW5nLCB0b3duOiBDb21ib09wdGlvbikge1xuICAgIHRoaXMucXVlc3Rpb25uYWlyZVNlcnZpY2UuZ2V0Q291bnR5KCdNRScsIHppcENvZGUpLnN1YnNjcmliZShcbiAgICAgIHJlcyA9PiB7XG4gICAgICAgIHRoaXMudG93bk9wdGlvbnMgPSByZXNbJ2Nob2ljZXMnXTtcbiAgICAgICAgbGV0IHNlbGVjdGVkQ291bnR5ID0gdGhpcy50b3duT3B0aW9ucy5maWx0ZXIoYyA9PiB7XG4gICAgICAgICAgcmV0dXJuIGMudmFsdWUgPT0gdG93bi52YWx1ZTtcbiAgICAgICAgfSlbMF07XG4gICAgICAgIHRoaXMudG93bi5wYXRjaFZhbHVlKHNlbGVjdGVkQ291bnR5KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc2V0TVNDb3VudHkoemlwQ29kZTogc3RyaW5nLCBjb3VudHk6IENvbWJvT3B0aW9uKSB7XG4gICAgdGhpcy5xdWVzdGlvbm5haXJlU2VydmljZS5nZXRDb3VudHkoJ01TJywgemlwQ29kZSkuc3Vic2NyaWJlKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgdGhpcy5jb3VudHlPcHRpb25zID0gcmVzWydjaG9pY2VzJ107XG4gICAgICAgIGxldCBzZWxlY3RlZENvdW50eSA9IHRoaXMuY291bnR5T3B0aW9ucy5maWx0ZXIoYyA9PiB7XG4gICAgICAgICAgcmV0dXJuIGMudmFsdWUgPT0gY291bnR5LnZhbHVlO1xuICAgICAgICB9KVswXTtcbiAgICAgICAgdGhpcy5jb3VudHkucGF0Y2hWYWx1ZShzZWxlY3RlZENvdW50eSk7XG4gICAgICB9KTtcbiAgfVxuXG5cbiAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKHRoaXMuYWRkcmVzc0Zvcm0udmFsaWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHN1Ym1pdCgpe1xuICAgIHRoaXMuYWRkcmVzc0Zvcm1EaXJlY3RpdmUub25TdWJtaXQodW5kZWZpbmVkKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWRkcmVzc0ZpZWxkRm9jdXNTdGF0dXMge1xuICBzdHJlZXRBZGRyZXNzPzpib29sZWFuO1xuICBvcHRpb25hbEFkZHJlc3M/OmJvb2xlYW47XG4gIGNpdHk/OmJvb2xlYW47XG4gIHppcD86Ym9vbGVhbjtcbiAgc3RhdGU/OmJvb2xlYW47XG4gIGNvdW50eT86Ym9vbGVhbjtcbn0iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImFkZHJlc3NGb3JtXCIgI2FkZHJlc3NGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7IG1hcmdpbi1sZWZ0OiAwcHg7XCI+XHJcbiAgPCEtLSA8ZGl2IFtmb3JtR3JvdXBdPVwiYWRkcmVzc0Zvcm1cIiAgI2FkZHJlc3NGb3JtRGlyZWN0aXZlPVwibmdGb3JtXCIgPiAtLT5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInAtZm9ybWdyaWRcIiBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgOiAnYWRkcmVzcy1kaXYnXCI+XHJcbiAgICA8aW9uLXJvdz5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNvdW50cnknIDogJ2NvdW50cnknXCI+e3snQ291bnRyeScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwiY291bnRyeU9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwiY291bnRyeVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgW2lucHV0SWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNvdW50cnknIDogJ2NvdW50cnknXCIgKG9uQ2hhbmdlKT1cImdldEFkZHJlc3NTdWdnZXN0aW9uKClcIj48L2FwcC1kcm9wZG93bj5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NvdW50cnknIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sIGFwcC1jb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy16aXAnIDogJ3ppcCdcIj57eydaaXAgY29kZScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXppcCcgOiAnemlwJ1wiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cInppcFwiIG1pbmxlbmd0aD1cIjVcIiBtYXhsZW5ndGg9XCI5XCIgYXBwU3RyaXBJbnZpc2libGVDaGFyc1xyXG4gICAgICAgICAgICAgIChibHVyKT1cImdldEFkZHJlc3NEYXRhKCRldmVudCk7IGdldEFkZHJlc3NTdWdnZXN0aW9uKCk7IHNldEZpZWxkQmx1cignemlwJylcIiAoZm9jdXMpPVwic2V0RmllbGRGb2N1cygnemlwJylcIiAvPjxiciAvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nemlwJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnLFxyXG4gICAgICAgICAgICAgICAgaW52YWxpZExlbmd0aDogJ1ppcCBjb2RlIHNob3VsZCBiZSBvZiA1IG9yIDkgZGlnaXRzLicsXHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkTnVtYmVyOiAnWmlwIGNvZGUgc2hvdWxkIG9ubHkgaGF2ZSBudW1iZXJzLicsXHJcbiAgICAgICAgICAgICAgICBpbnZhbGlkWmlwQ29kZTogJ3BsZWFzZSBlbnRlciBhIHZhbGlkIHppcCBjb2RlJyxcclxuICAgICAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gIFxyXG5cclxuICAgIDxpb24tcm93PlxyXG4gICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy1yaWdodDogMHB4O1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBwLWZsdWlkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctc3RyZWV0QWRkcmVzcycgOiAnc3RyZWV0QWRkcmVzcydcIj57eydTdHJlZXQgQWRkcmVzcycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1zdHJlZXRBZGRyZXNzJyA6ICdzdHJlZXRBZGRyZXNzJ1wiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic3RyZWV0QWRkcmVzc1wiIG1heGxlbmd0aD1cIjQwXCIgKGJsdXIpPVwiZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKTsgc2V0RmllbGRCbHVyKCdzdHJlZXRBZGRyZXNzJylcIiAoZm9jdXMpPVwic2V0RmllbGRGb2N1cygnc3RyZWV0QWRkcmVzcycpXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+PGJyIC8+XHJcbiAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nc3RyZWV0QWRkcmVzcycgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICB9XCI+PC9hcHAtZXJyb3I+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvaW9uLWNvbD5cclxuICAgIDwvaW9uLXJvdz5cclxuXHJcbiAgICA8aW9uLXJvdz5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiAgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgcC1mbHVpZFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1vcHRpb25hbEFkZHJlc3MnIDogJ29wdGlvbmFsQWRkcmVzcydcIiB0eXBlPVwiaW5wdXRcIiBwSW5wdXRUZXh0IFxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwib3B0aW9uYWxBZGRyZXNzXCIgcGxhY2Vob2xkZXI9XCJPcHRpb25hbFwiIChibHVyKT1cImdldEFkZHJlc3NTdWdnZXN0aW9uKCk7c2V0RmllbGRCbHVyKCdvcHRpb25hbEFkZHJlc3MnKVwiIChmb2N1cyk9XCJzZXRGaWVsZEZvY3VzKCdvcHRpb25hbEFkZHJlc3MnKVwiXHJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjQwXCIgYXBwU3RyaXBJbnZpc2libGVDaGFycy8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG5cclxuXHJcbiAgICA8aW9uLXJvdz5cclxuICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiAgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jaXR5JyA6ICdjaXR5J1wiPnt7J0NpdHknIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgW2lkXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1jaXR5JyA6ICdjaXR5J1wiIHR5cGU9XCJpbnB1dFwiIHBJbnB1dFRleHQgW2Zvcm1Db250cm9sXT1cImNpdHlcIiBcclxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMzBcIiAoYmx1cik9XCJnZXRBZGRyZXNzU3VnZ2VzdGlvbigpOyBzZXRGaWVsZEJsdXIoJ2NpdHknKVwiIChmb2N1cyk9XCJzZXRGaWVsZEZvY3VzKCdjaXR5JylcIiBhcHBTdHJpcEludmlzaWJsZUNoYXJzLz48YnIgLz5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NpdHknIFtmb3JtXT1cImFkZHJlc3NGb3JtRGlyZWN0aXZlXCIgW2VyckRlZl09XCJ7IFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wgYXBwLWNvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiAgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMHB4O1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1zdGF0ZScgOiAnc3RhdGUnXCI+e3snU3RhdGUnIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8YXBwLWRyb3Bkb3duIFtvcHRpb25zXT1cInN0YXRlT3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJzdGF0ZVwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgW2lucHV0SWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXN0YXRlJyA6ICdzdGF0ZSdcIiAob25DaGFuZ2UpPVwiZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKVwiPjwvYXBwLWRyb3Bkb3duPjxiciAvPlxyXG4gICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J3N0YXRlJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgcmVxdWlyZWQ6ICdyZXF1aXJlZCdcclxuICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgKm5nSWY9XCJzdGF0ZS52YWx1ZSAmJiAoc3RhdGUudmFsdWUudmFsdWU9PT0nTVMnICYmIGZvclN0YXRlPT09J01TJyBcclxuICAgICAgICB8fCAoc3RhdGUudmFsdWUudmFsdWU9PT0nQ1QnICAmJiBmb3JTdGF0ZT09PSdNUycpKSAgJiYgY291bnR5UmVxdWlyZWQ9PT10cnVlXCIgc2l6ZT1cIjEyXCJzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNvdW50eScgOiAnY291bnR5J1wiPnt7J0NvdW50eScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwiY291bnR5T3B0aW9uc1wiIFtmb3JtQ29udHJvbF09XCJjb3VudHlcIiBvcHRpb25MYWJlbD1cInRleHRcIiBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCIgW2lucHV0SWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLWNvdW50eScgOiAnY291bnR5J1wiIChvbkNoYW5nZSk9XCJnZXRBZGRyZXNzU3VnZ2VzdGlvbigpXCI+PC9hcHAtZHJvcGRvd24+PGJyLz5cclxuICAgICAgICAgICAgPGFwcC1lcnJvciBbY2xhc3NdPVwiJ2FwcC1ncmlkJ1wiIFtmaWVsZF09J2NvdW50eScgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICAgIDxpb24tY29sIFtuZ0NsYXNzXT1cImZyb21Qb3B1cCA/ICdjb2wnIDogJ2NvbCBjb2wtZml0LWNvbnRlbnQnXCIgKm5nSWY9XCJzdGF0ZS52YWx1ZSAmJiBzdGF0ZS52YWx1ZS52YWx1ZT09PSdNRScgJiYgZm9yU3RhdGU9PT0nTUUnICYmIGNvdW50eVJlcXVpcmVkPT09dHJ1ZVwiIHNpemU9XCIxMlwiICBzdHlsZT1cInBhZGRpbmctYm90dG9tOiAwcHg7XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDBweDtcIj5cclxuICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLXRvd24nIDogJ3Rvd24nXCI+e3snVG93bicgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxhcHAtZHJvcGRvd24gW29wdGlvbnNdPVwidG93bk9wdGlvbnNcIiBbZm9ybUNvbnRyb2xdPVwidG93blwiIG9wdGlvbkxhYmVsPVwidGV4dFwiIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctdG93bicgOiAndG93bidcIiAob25DaGFuZ2UpPVwiZ2V0QWRkcmVzc1N1Z2dlc3Rpb24oKVwiID48L2FwcC1kcm9wZG93bj48YnIvPlxyXG4gICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0ndG93bicgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2lvbi1jb2w+XHJcbiAgICA8L2lvbi1yb3c+XHJcbiAgICA8aW9uLXJvdyBzdHlsZT1cInBhZGRpbmctdG9wOiA0cHg7XCI+XHJcbiAgICAgICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZnJvbVBvcHVwID8gJ2NvbCcgOiAnY29sIGNvbC1maXQtY29udGVudCdcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAwcHg7XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cInNob3dOZWlnaGJvdXJRdWVzdGlvbj09PXRydWUgJiYgZm9yU3RhdGU9PT0nTUUnXCIgPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkXCI+XHJcbiAgICAgICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkID8gaW5wdXRJZCArICctbmVpZ2hib3VyRmxhZycgOiAnbmVpZ2hib3VyRmxhZydcIj57eydBcmUgeW91IGNvbnRpbnVpbmcgdG8gbG9vayBmb3Igd29yayBpbiBNYWluZT8nIHwgdHJhbnNsYXRlfX08L2xhYmVsPjxiciAvPlxyXG4gICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gW2lucHV0SWRdPVwiaW5wdXRJZCA/IGlucHV0SWQgKyAnLW5laWdoYm91ckZsYWcnIDogJ25laWdoYm91ckZsYWcnXCIgdW5zZWxlY3RhYmxlPVwidHJ1ZVwiIFtvcHRpb25zXT1cInllc05vT3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm5laWdoYm91ckZsYWdcIiBvcHRpb25MYWJlbD1cInRleHRcIiBvcHRpb25WYWx1ZT1cInZhbHVlXCIgYXBwZW5kVG89XCJib2R5XCI+PC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICA8YXBwLWVycm9yIFtjbGFzc109XCInYXBwLWdyaWQnXCIgW2ZpZWxkXT0nbmVpZ2hib3VyRmxhZycgW2Zvcm1dPVwiYWRkcmVzc0Zvcm1EaXJlY3RpdmVcIiBbZXJyRGVmXT1cInsgXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH1cIj48L2FwcC1lcnJvcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvaW9uLWNvbD5cclxuICAgICAgICA8aW9uLWNvbCBbbmdDbGFzc109XCJmcm9tUG9wdXAgPyAnY29sJyA6ICdjb2wgY29sLWZpdC1jb250ZW50J1wiIHN0eWxlPVwicGFkZGluZy10b3A6IDBweDtcIlxyXG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd05laWdoYm91clF1ZXN0aW9uPT09dHJ1ZSAmJiBmb3JTdGF0ZT09PSdNUydcIiA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGRcIj5cclxuICAgICAgICAgIDxsYWJlbCBbZm9yXT1cImlucHV0SWQgPyBpbnB1dElkICsgJy1uZWlnaGJvdXJGbGFnJyA6ICduZWlnaGJvdXJGbGFnJ1wiPnt7J0RvIHlvdSBub3JtYWxseSB3b3JrIGluIE1pc3Npc3NpcHBpPycgfCB0cmFuc2xhdGV9fTwvbGFiZWw+PGJyIC8+XHJcbiAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiBbaW5wdXRJZF09XCJpbnB1dElkID8gaW5wdXRJZCArICctbmVpZ2hib3VyRmxhZycgOiAnbmVpZ2hib3VyRmxhZydcIiB1bnNlbGVjdGFibGU9XCJ0cnVlXCIgW29wdGlvbnNdPVwieWVzTm9PcHRpb25zXCJcclxuICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmVpZ2hib3VyRmxhZ1wiIG9wdGlvbkxhYmVsPVwidGV4dFwiIG9wdGlvblZhbHVlPVwidmFsdWVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3Atc2VsZWN0QnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxhcHAtZXJyb3IgW2NsYXNzXT1cIidhcHAtZ3JpZCdcIiBbZmllbGRdPSduZWlnaGJvdXJGbGFnJyBbZm9ybV09XCJhZGRyZXNzRm9ybURpcmVjdGl2ZVwiIFtlcnJEZWZdPVwieyBcclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiAncmVxdWlyZWQnXHJcbiAgICAgICAgICAgICAgfVwiPjwvYXBwLWVycm9yPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9pb24tY29sPlxyXG4gICAgPC9pb24tcm93PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gPC9kaXY+IC0tPlxyXG48L2Zvcm0+XHJcbjxhcHAtYWRkcmVzcy1zdWdnZXN0aW9uICNhZGRyZXNzU3VnZ2VzdGlvbiAqbmdJZj1cIihlbmFibGVBZGRyZXNzVmFsaWRhdGlvbikgJiYgdGhpcy5hZGRyZXNzRm9ybS52YWxpZCAgJiYgKCgoaW5wdXRJZD09PSdyZXNBZGRyZXNzJyB8fCBpbnB1dElkPT09J3Jlc0FkcmVzcycpICYmIGRpZmZNYWlsQWRkcmVzcz09PSBmYWxzZSkgfHwgKGlucHV0SWQ9PT0nbWFpbEFkZHJlc3MnICYmIGRpZmZNYWlsQWRkcmVzcz09PSB0cnVlKSB8fCAoc3RhbmRhbG9uZUFkZHJlc3NGb3JtID09PSB0cnVlKSlcIlxyXG5bZm9ybV09XCJhZGRyZXNzRm9ybVwiIFtmb3JtTmFtZV09XCJpbnB1dElkXCIgW2RpZmZNYWlsQWRkcmVzc0ZsYWddPVwiZGlmZk1haWxBZGRyZXNzXCIgW2Zvcm1CbHVyXT1cImNoZWNrRm9ybUJsdXJyKClcIiAoY2hlY2tGb3JtSXNCbHVyKT1cImNoZWNrRm9ybUJsdXJyKClcIiBbcXVlc3Rpb25haXJlRm9ybV09XCJxdWVzdGlvbmFpcmVGb3JtXCIgW3N0YW5kYWxvbmVBZGRyZXNzRm9ybV09XCJzdGFuZGFsb25lQWRkcmVzc0Zvcm1cIiBbcGFyZW50Rm9ybUNvbXBvbmVudF09XCJwYXJlbnRGb3JtQ29tcG9uZW50XCI+PC9hcHAtYWRkcmVzcy1zdWdnZXN0aW9uPlxyXG4iXX0=
|