tango-app-ui-analyse-trax 3.6.2-bulktask-10 → 3.6.2-bulktask-13
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/activity-log-v2/activity-log-v2.component.mjs +116 -96
- package/esm2022/lib/components/add-checklist/add-checklist.component.mjs +20 -17
- package/esm2022/lib/components/add-multitask/add-multitask.component.mjs +7 -3
- package/esm2022/lib/components/add-multitask/bulkcreationmodel/bulkcreationmodel.component.mjs +3 -3
- package/esm2022/lib/components/flags/flags.component.mjs +3 -3
- package/esm2022/lib/components/flags-info/flags-info.component.mjs +30 -30
- package/esm2022/lib/components/flags-new/flags-new.component.mjs +24 -15
- package/esm2022/lib/components/flags-new/flags-new.interface.mjs +1 -1
- package/esm2022/lib/components/gallery/gallery.component.mjs +5 -4
- package/esm2022/lib/components/manage-task/manage-task.component.mjs +3 -3
- package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-xWCF4GYV.mjs → tango-app-ui-analyse-trax-eye-test-audit.module-VtfBAXzU.mjs} +2 -2
- package/fesm2022/{tango-app-ui-analyse-trax-eye-test-audit.module-xWCF4GYV.mjs.map → tango-app-ui-analyse-trax-eye-test-audit.module-VtfBAXzU.mjs.map} +1 -1
- package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-BthftGbi.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-DWDpA3zS.mjs} +204 -167
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-DWDpA3zS.mjs.map +1 -0
- package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
- package/lib/components/add-multitask/add-multitask.component.d.ts +1 -0
- package/lib/components/flags-info/flags-info.component.d.ts +1 -1
- package/lib/components/flags-new/flags-new.component.d.ts +1 -1
- package/lib/components/flags-new/flags-new.interface.d.ts +7 -0
- package/package.json +1 -1
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-BthftGbi.mjs.map +0 -1
|
@@ -145,24 +145,26 @@ export class AddChecklistComponent {
|
|
|
145
145
|
...(!['image', 'descriptiveImage', 'multipleImage', 'linearscale'].includes(j?.answerType) && j?.answerType != 'video' ? { 'validation': this.fb.control(k?.validation, [Validators.required]) } : {}),
|
|
146
146
|
...(!['image', 'descriptiveImage', 'multipleImage', 'linearscale'].includes(j?.answerType) && j?.answerType != 'video' ? { 'validationType': this.fb.control(k?.validationType, this.allowedValuesValidator(["Capture Image", "Descriptive Answer", "Capture Video"])) } : {}),
|
|
147
147
|
...(['image', 'descriptiveImage', 'multipleImage'].includes(j?.answerType) ? { 'referenceImage': this.fb.control(k?.referenceImage) } : {}),
|
|
148
|
-
...((['image', 'descriptiveImage', 'multipleImage'].includes(j?.answerType) || j?.answerType == 'video') ? { 'allowUploadfromGallery': this.fb.control(j?.allowUploadfromGallery ? true : false) } : {}),
|
|
149
|
-
...(['image', 'descriptiveImage', 'multipleImage'].includes(j?.answerType) ? { 'runAI': this.fb.control((j?.runAI) ? j?.runAI : false) } : {}),
|
|
148
|
+
...((['image', 'descriptiveImage', 'multipleImage'].includes(j?.answerType) || j?.answerType == 'video') ? { 'allowUploadfromGallery': this.fb.control({ value: j?.allowUploadfromGallery ? true : false, disabled: j?.answerType === 'image' && j?.runAI }) } : {}),
|
|
149
|
+
...(['image', 'descriptiveImage', 'multipleImage'].includes(j?.answerType) ? { 'runAI': this.fb.control({ value: (j?.runAI) ? j?.runAI : false, disabled: j?.answerType === 'image' && j?.runAI }) } : {}),
|
|
150
150
|
...(['multiplechoicesingle', 'yes/no'].includes(j?.answerType) ? { 'showLinked': this.fb.control((k?.showLinked) ? k?.showLinked : false) } : {}),
|
|
151
151
|
...(['multiplechoicesingle', 'yes/no'].includes(j?.answerType) ? { 'linkedQuestion': this.fb.control((k?.linkedQuestion) ? k?.linkedQuestion : 0) } : {}),
|
|
152
152
|
...(!['descriptive', 'image', 'descriptiveImage', 'multipleImage', 'date'].includes(j?.answerType) ? { 'referenceImage': this.fb.control(k?.referenceImage) } : {}),
|
|
153
|
-
...((!['descriptive', 'image', 'descriptiveImage', 'video', 'multipleImage', 'date'].includes(j?.answerType)) ? { 'allowUploadfromGallery': this.fb.control(k?.allowUploadfromGallery ? true : false) } : {}),
|
|
153
|
+
...((!['descriptive', 'image', 'descriptiveImage', 'video', 'multipleImage', 'date'].includes(j?.answerType)) ? { 'allowUploadfromGallery': this.fb.control({ value: k?.allowUploadfromGallery ? true : false, disabled: j?.answerType === 'image' && k?.runAI }) } : {}),
|
|
154
154
|
...(!['descriptive', 'image', 'descriptiveImage', 'multipleImage', 'date'].includes(j?.answerType) ? { 'runAI': this.fb.control((k?.runAI) ? k?.runAI : false) } : {}),
|
|
155
155
|
...(!['date', 'linearscale', 'time'].includes(j?.answerType) ? { 'descriptivetype': this.fb.control(k.descriptivetype) } : {}),
|
|
156
156
|
...(['linearscale'].includes(j?.answerType) ? { 'rangeStart': this.fb.control(k.rangeStart), 'rangeEnd': this.fb.control(k.rangeEnd) } : {}),
|
|
157
157
|
}));
|
|
158
158
|
});
|
|
159
|
+
console.log(j?.answerType === "image" && j?.runAI);
|
|
159
160
|
questions.push(this.fb.group({
|
|
160
161
|
"qno": this.fb.control(questionIndex + 1),
|
|
161
|
-
'qname': this.fb.control(j?.qname, [Validators.required, noWhitespaceValidator()]),
|
|
162
|
+
'qname': this.fb.control({ value: j?.qname, disabled: j?.answerType === 'image' && j?.runAI }, [Validators.required, noWhitespaceValidator()]),
|
|
162
163
|
"oldQname": this.fb.control(j?.qname, [Validators.required, noWhitespaceValidator()]),
|
|
163
|
-
'answerType': this.fb.control(j?.answerType, this.allowedValuesValidator(["descriptive", "yes/no", "multiplechoicesingle", "multiplechoicemultiple", "image", "video", "descriptiveImage", "multipleImage", 'date', 'linearscale', 'time'])),
|
|
164
|
+
'answerType': this.fb.control({ value: j?.answerType, disabled: j?.answerType === 'image' && j?.runAI }, this.allowedValuesValidator(["descriptive", "yes/no", "multiplechoicesingle", "multiplechoicemultiple", "image", "video", "descriptiveImage", "multipleImage", 'date', 'linearscale', 'time'])),
|
|
164
165
|
...(!['descriptive', 'date'].includes(j?.answerType)) ? { 'answers': (['image', 'descriptiveImage', 'video', 'multipleImage', 'time', 'linearscale'].includes(j?.answerType)) ? answer[0] : this.fb.array(answer, [uniqueStringValidator()]) } : {},
|
|
165
|
-
'runAI': this.fb.control((['image', 'descriptiveImage', "multipleImage"].includes(j?.answerType)) ? (j?.runAI) ? true : false : false, [Validators.required]),
|
|
166
|
+
'runAI': this.fb.control({ value: (['image', 'descriptiveImage', "multipleImage"].includes(j?.answerType)) ? (j?.runAI) ? true : false : false, disabled: j?.answerType === 'image' && j?.runAI }, [Validators.required]),
|
|
167
|
+
'runAIDefault': this.fb.control(j?.runAI || false),
|
|
166
168
|
'allowUploadfromGallery': this.fb.control((['image', 'descriptiveImage', 'video', 'multipleImage'].includes(j?.answerType)) ? (j?.allowUploadfromGallery) ? true : false : false, [Validators.required]),
|
|
167
169
|
'runAIDescription': this.fb.control((['image', 'descriptiveImage', 'multipleImage'].includes(j?.answerType)) ? (j?.runAIDescription) : ''),
|
|
168
170
|
'linkType': this.fb.control(j?.linkType),
|
|
@@ -186,6 +188,7 @@ export class AddChecklistComponent {
|
|
|
186
188
|
});
|
|
187
189
|
this.ChecklistForm.updateValueAndValidity();
|
|
188
190
|
this.checklistLoading = false;
|
|
191
|
+
console.log(this.ChecklistForm, 'form');
|
|
189
192
|
}
|
|
190
193
|
initChecklist() {
|
|
191
194
|
this.ChecklistForm = this.fb.group({
|
|
@@ -943,7 +946,7 @@ export class AddChecklistComponent {
|
|
|
943
946
|
}
|
|
944
947
|
// console.log(this.ChecklistForm);
|
|
945
948
|
// return;
|
|
946
|
-
checklist = this.ChecklistForm.
|
|
949
|
+
checklist = this.ChecklistForm.getRawValue();
|
|
947
950
|
if (!this.ChecklistForm.valid) {
|
|
948
951
|
this.markFormControlsAsTouched(this.ChecklistForm, 0);
|
|
949
952
|
this.scrollToErrors(this.ChecklistForm.get('sections'));
|
|
@@ -1178,13 +1181,13 @@ export class AddChecklistComponent {
|
|
|
1178
1181
|
this.getAnswerFormGroup_FormControl(sIdx, qIdx, 'runAI', ansIdx)?.patchValue(true);
|
|
1179
1182
|
this.getQuestionFormControl(sIdx, qIdx, 'runAI', ansIdx)?.patchValue(true);
|
|
1180
1183
|
this.getQuestionFormControl(sIdx, qIdx, 'runAIDescription', ansIdx)?.patchValue(res.data.requestText);
|
|
1181
|
-
this.swalToast(`<span style="padding-right: 36px;">${apires.data.message}</span
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1184
|
+
this.swalToast(`<span style="padding-right: 36px;">${apires.data.message}</span>`, `<img src="../../../../assets/Icons/sop-runai-tosticon.svg" />`);
|
|
1185
|
+
// <a
|
|
1186
|
+
// href="/support/view-tickets"
|
|
1187
|
+
// target="_blank"
|
|
1188
|
+
// style="color: var(--primary-700, #009BF3);font-family: Roboto;font-size: 15px;font-weight: 700;text-decoration: underline;cursor: pointer;">
|
|
1189
|
+
// View Ticket
|
|
1190
|
+
// </a>
|
|
1188
1191
|
}
|
|
1189
1192
|
else {
|
|
1190
1193
|
this.runAIOff(sIdx, qIdx, true, ansIdx);
|
|
@@ -1510,13 +1513,13 @@ export class AddChecklistComponent {
|
|
|
1510
1513
|
return this.getSectionFormArray().at(secIdx).get('questions').at(qIdx - 1).get('qname')?.value;
|
|
1511
1514
|
}
|
|
1512
1515
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddChecklistComponent, deps: [{ token: i1.PageInfoService }, { token: i2.FormBuilder }, { token: i0.ChangeDetectorRef }, { token: i3.NgbModal }, { token: i4.ActivatedRoute }, { token: i5.ToastService }, { token: i4.Router }, { token: i6.TraxService }, { token: i1.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1513
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddChecklistComponent, selector: "lib-add-checklist", viewQueries: [{ propertyName: "formRef", first: true, predicate: ["formRef"], descendants: true }], ngImport: i0, template: "<div class=\"card\" *ngIf=\"checklistLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!checklistLoading\">\r\n <div class=\"card\">\r\n <ng-container [formGroup]=\"ChecklistForm\">\r\n <div class=\"card-header border-0 pt-3 pb-3\">\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-9\">\r\n <h3 class=\"card-title align-items-center mt-3 mb-0\">\r\n <div routerLink=\"/manage/trax/checklist\" class=\"btn btn-sm btn-outline me-5 ps-2 px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 10.0003H4.1665M4.1665 10.0003L9.99984 15.8337M4.1665 10.0003L9.99984 4.16699\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></div>\r\n <div class=\"flex-column w-800px\">\r\n <div class=\"editablecontent mb-4 w-100\"><input type=\"text\" class=\"checklist plain-input\" #checklistName placeholder=\"Enter Checklist Name\" formControlName=\"checklistName\"></div>\r\n <div class=\"editablecontent w-100\"><input type=\"text\" class=\"checklistDescription plain-input\" #checklistDescription placeholder=\"Enter Checklist Description\" formControlName=\"checklistDescription\"></div>\r\n </div>\r\n </h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <div class=\"d-flex my-6 justify-content-end\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\" class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'add'\" (click)=\"saveChecklistQuestions('configure')\"><span class=\"ms-2\">Configure</span>\r\n </button>\r\n \r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'add'\" (click)=\"saveAsDraftPop('create')\"><span class=\"ms-2\">Save as Draft</span> </button>\r\n \r\n <button type=\"button\" class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'edit'\" (click)=\"updateChecklistQuestions('configure')\"><span class=\"ms-2\">Configure</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'edit'\" (click)=\"saveAsDraftPop('update')\"><span class=\"ms-2\">Save as Draft</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-3 mt-2\">\r\n <ng-container [formGroup]=\"ChecklistForm\">\r\n <div class=\"section-left card px-7 py-7\">\r\n <div class=\"fs-18px fw-600 text-left mb-3 concise-checklistname\">\r\n {{getFormControl('checklistName').value ? getFormControl('checklistName').value : 'ChecklistName'}}\r\n </div>\r\n <div class=\"left-panel-container\" formArrayName=\"sections\">\r\n <div *ngFor=\"let section of getSectionFormArray().controls;let i=index;\">\r\n <ng-container [formGroupName]=\"i\">\r\n <div class=\"d-flex section align-items-center justify-content-between\">\r\n <div class=\"fs-18px fw-bold editablecontent-left\">{{\r\n getSectionFormControl(i,'name')?.value === '' ? \"Section \" : ''}}{{\r\n getSectionFormControl(i,'name')?.value ? getSectionFormControl(i,'name')?.value\r\n : getSectionFormControl(i,'sectionNumber')?.value}}</div>\r\n <hr class=\"mx-2\">\r\n <svg (click)=\"deleteSection(i)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"35\"\r\n height=\"35\" viewBox=\"0 0 18 18\" matTooltip=\"Delete section\"\r\n matTooltipPosition=\"above\" matTooltipClass=\"custom-test\" fill=\"none\">\r\n <path\r\n d=\"M2.25 4.5H3.75M3.75 4.5H15.75M3.75 4.5V15C3.75 15.3978 3.90804 15.7794 4.18934 16.0607C4.47064 16.342 4.85218 16.5 5.25 16.5H12.75C13.1478 16.5 13.5294 16.342 13.8107 16.0607C14.092 15.7794 14.25 15.3978 14.25 15V4.5H3.75ZM6 4.5V3C6 2.60218 6.15804 2.22064 6.43934 1.93934C6.72064 1.65804 7.10218 1.5 7.5 1.5H10.5C10.8978 1.5 11.2794 1.65804 11.5607 1.93934C11.842 2.22064 12 2.60218 12 3V4.5M7.5 8.25V12.75M10.5 8.25V12.75\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <ng-container *ngIf=\"show===i\">\r\n <div cdkDropList (cdkDropListDropped)=\"dragDrop(i,$event)\"\r\n [cdkDropListData]=\"getFormArrayQuestions(i).controls\" class=\"question-left\">\r\n <ng-container formArrayName=\"questions\">\r\n <div *ngFor=\"let question of getFormArrayQuestions(i).controls;let j=index;\"\r\n class=\"my-2 cursor-pointer\"\r\n [ngClass]=\"question.get('active')?.value === true ? 'active-question' : 'q-btn'\"\r\n cdkDrag (mouseenter)=\"setActiveQuestion(i,j,1)\"\r\n (click)=\"scrollToQuestion(i,j);\"\r\n (mouseleave)=\"setActiveQuestion(i,j,-1)\">\r\n <ng-container [formGroupName]=\"j\">\r\n <div class=\"concise-question\">\r\n {{getQuestionFormControl(i,j,'qname')?.value ? '' : \"Question\"}}{{ getQuestionFormControl(i,j,'qname')?.value ?\r\n getQuestionFormControl(i,j,'qname')?.value :\r\n getQuestionFormControl(i,j,'qno')?.value }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"col-lg-9 mt-2\">\r\n <form [formGroup]=\"ChecklistForm\" #formRef>\r\n <div class=\"card px-7\">\r\n <!-- <div class=\"checklist-card py-5\">\r\n <input type=\"text\" class=\"mt-2\" style=\"text-transform: capitalize;\"\r\n placeholder=\"Enter checklist name here\" formControlName=\"checklistName\">\r\n <input type=\"text\" class=\"mt-4\" placeholder=\"Enter checklist description here\"\r\n formControlName=\"checklistDescription\">\r\n </div> -->\r\n <ng-container formArrayName=\"sections\" >\r\n <div class=\"sectionArea mt-5\" *ngFor=\"let section of getSectionFormArray().controls;let i=index;\">\r\n <ng-container [formGroupName]=\"i\">\r\n <div class=\"section d-flex align-items-center justify-content-between\">\r\n \r\n <div class=\"fs-18px fw-bold editablecontent\"><input type=\"text\" class=\"plain-input\"\r\n #sectionName (change)=\"updateInputValue(i,sectionName.value)\"\r\n formControlName=\"name\"></div>\r\n <hr>\r\n <svg class=\"ml-5\" (click)=\"deleteSection(i)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" matTooltip=\"Delete section\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M2.25 4.5H3.75M3.75 4.5H15.75M3.75 4.5V15C3.75 15.3978 3.90804 15.7794 4.18934 16.0607C4.47064 16.342 4.85218 16.5 5.25 16.5H12.75C13.1478 16.5 13.5294 16.342 13.8107 16.0607C14.092 15.7794 14.25 15.3978 14.25 15V4.5H3.75ZM6 4.5V3C6 2.60218 6.15804 2.22064 6.43934 1.93934C6.72064 1.65804 7.10218 1.5 7.5 1.5H10.5C10.8978 1.5 11.2794 1.65804 11.5607 1.93934C11.842 2.22064 12 2.60218 12 3V4.5M7.5 8.25V12.75M10.5 8.25V12.75\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"questionsArea\" *ngIf=\"show === i\">\r\n <ng-container formArrayName=\"questions\">\r\n <div class=\"Question-sec mt-10\"\r\n *ngFor=\"let question of getFormArrayQuestions(i).controls;let j = index;\"\r\n (mouseenter)=\"setActiveQuestion(i,j,1)\"\r\n (mouseleave)=\"setActiveQuestion(i,j,-1)\">\r\n <ng-container [formGroupName]=\"j\">\r\n <span class=\"fs-18px px-3 editablecontent questiontitle\"\r\n style=\"cursor: default;\"> Question {{j+1}}</span>\r\n \r\n <div class=\"checklist-card pb-5\">\r\n <textarea class=\"form-control form-control-solid\" rows=\"1\"\r\n type=\"text\" class=\"mt-0\" [id]=\"'q-' + i + '-' + j\"\r\n placeholder=\"Enter question here\"\r\n formControlName=\"qname\"></textarea>\r\n <ng-container\r\n *ngIf=\"question.get('qname')?.invalid && question.get('qname')?.touched\">\r\n <p style=\"color: red;\"\r\n *ngIf=\"question.get('qname')?.hasError('required')\">*\r\n Question is required.</p>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"row\"\r\n *ngIf=\"!['descriptiveImage','image','multipleImage'].includes(question.get('answerType')?.value)\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"ref_img_cont mb-4 mt-5\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n width=\"100%\" height=\"300px\" class=\"auto-adjust\"\r\n alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\" (click)=\"clearReferenceImage(i,j);\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\" [id]=\"'fileupload_'+i+j\" type=\"file\"\r\n name=\"answerFile\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,-1,'questionReferenceImage')\">\r\n <label [for]=\"'fileupload_'+i+j\" (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-2\"\r\n width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4082_3122\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\" [id]=\"'fileupload_'+i+j\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,-1,'questionReferenceImage')\">\r\n <label class=\"pointer\" [for]=\"'fileupload_'+i+j\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"checklist-card pb-5\">\r\n <select class=\"mt-5\" name=\"selectoption\"\r\n (change)=\"answerTypeSelection(i,j,$event)\"\r\n formControlName=\"answerType\">\r\n <option name=\"descriptive\" value=\"descriptive\">Descriptive\r\n Answer</option>\r\n <option name=\"yes/no\" value=\"yes/no\">A/B Question</option>\r\n <option name=\"multiplechoicesingle\"\r\n value=\"multiplechoicesingle\">Multiple Choice Question -\r\n Single Answer</option>\r\n <option name=\"multiplechoicemultiple\"\r\n value=\"multiplechoicemultiple\">Multiple Choice Question -\r\n Multiple Answer</option>\r\n <option name=\"descriptiveImage\" value=\"descriptiveImage\">Capture\r\n Image with Description</option>\r\n <option name=\"image\" value=\"image\">Capture Image as answer\r\n </option>\r\n <option name=\"video\" value=\"video\">Capture video as answer\r\n </option>\r\n <option name=\"multipleImage\" value=\"multipleImage\">Capture\r\n Multiple Image</option>\r\n <option name=\"date\" value=\"date\">Date - DD/MM/YYYY</option>\r\n <option name=\"linearscale\" value=\"linearscale\">Linear Scale</option>\r\n <option name=\"time\" value=\"time\">Time</option>\r\n </select>\r\n \r\n </div>\r\n <div class=\"col-lg-3 mx-4 d-flex mt-3\" *ngIf=\"['descriptive'].includes(question.get('answerType')?.value)\">\r\n <div class=\"form-check\" >\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"text\" [name]=\"'descriptivetype'\" [id]=\"'inlineRadio0'+ i + j\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio0'+ i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"number\" [name]=\"'descriptivetype'\" [id]=\"'inlineRadio1'+ i + j\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio1'+i + j\">Number</label>\r\n </div>\r\n </div>\r\n <ng-container\r\n *ngIf=\"question.get('answerType')?.value === 'yes/no' || question.get('answerType')?.value === 'multiplechoicesingle' || question.get('answerType')?.value === 'multiplechoicemultiple'\">\r\n <div class=\"fs-18px fw-bolder\" style=\"cursor: default;\">Answer\r\n Options</div>\r\n <ng-container formArrayName=\"answers\">\r\n <ng-container\r\n *ngFor=\"let answer of getFormArrayQuestionsAnswer(i,j,'answers')?.controls;let k = index;\">\r\n <div class=\"row\" [formGroupName]=\"k\">\r\n <ng-container *ngIf=\"!answer.get('isdeleted')?.value\">\r\n <div class=\"col-lg-6 Answer1\">\r\n <div class=\"checklist-card pb-0 mt-5\">\r\n <input type=\"text\" class=\"mt-0\"\r\n placeholder=\"Enter answer here\"\r\n formControlName=\"answer\">\r\n <span class=\"vl\"></span>\r\n <ng-container\r\n *ngIf=\"question.get('answerType')?.value === 'yes/no' || question.get('answerType')?.value === 'multiplechoicesingle'\"\r\n ngDefaultControl>\r\n <span class=\"vl2\"></span>\r\n <svg class=\"imgAdd\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\"\r\n (click)=\"updateLinked(i,j,k)\">\r\n <path\r\n d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\"\r\n stroke=\"#344054\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"answer.get('answer')?.invalid && answer.get('answer')?.touched\">\r\n <p style=\"color: red;\"\r\n *ngIf=\"answer.get('answer')?.hasError('required')\">\r\n * Answer is required.</p>\r\n </ng-container>\r\n <p style=\"color: red;\"\r\n *ngIf=\"answer.get('showSOPFlagError')?.value === true\">\r\n Every answer can\u2019t be a flag.</p>\r\n \r\n <ng-container formControlName=\"sopFlag\"\r\n ngDefaultControl>\r\n \r\n <svg (click)=\"raiseflag(i,j,k,true)\"\r\n matTooltip=\"Raise a flag if this answer is selected\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\"\r\n *ngIf=\"answer.get('sopFlag')?.value === false\"\r\n class=\"kiwi\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M2.66669 10.0007C2.66669 10.0007 3.33335 9.33398 5.33335 9.33398C7.33335 9.33398 8.66669 10.6673 10.6667 10.6673C12.6667 10.6673 13.3334 10.0007 13.3334 10.0007V2.00065C13.3334 2.00065 12.6667 2.66732 10.6667 2.66732C8.66669 2.66732 7.33335 1.33398 5.33335 1.33398C3.33335 1.33398 2.66669 2.00065 2.66669 2.00065V10.0007ZM2.66669 10.0007V14.6673\"\r\n stroke=\"#D0D5DD\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n <svg (click)=\"raiseflag(i,j,k,false)\"\r\n matTooltip=\"Raise a flag if this answer is selected\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\"\r\n *ngIf=\"answer.get('sopFlag')?.value === true\"\r\n class=\"active-flag\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M2.66669 10.0007C2.66669 10.0007 3.33335 9.33398 5.33335 9.33398C7.33335 9.33398 8.66669 10.6673 10.6667 10.6673C12.6667 10.6673 13.3334 10.0007 13.3334 10.0007V2.00065C13.3334 2.00065 12.6667 2.66732 10.6667 2.66732C8.66669 2.66732 7.33335 1.33398 5.33335 1.33398C3.33335 1.33398 2.66669 2.00065 2.66669 2.00065V10.0007ZM2.66669 10.0007V14.6673\"\r\n stroke=\"#D0D5DD\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\"\r\n *ngIf=\"!answer.get('showLinked')?.value\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"d-flex answervalidation\">\r\n <input class=\"mt-7\" type=\"checkbox\"\r\n style=\"width:16px;height:16px;cursor: pointer;\"\r\n value=\"1\"\r\n (change)=\"getvalidation(i,j,k,$event)\"\r\n formControlName=\"validation\">\r\n <div class=\"chackbox pt-4 mt-2 mx-2\"\r\n style=\"cursor: default;\">\r\n <h3>Validate response</h3>\r\n <p class=\"mb-0\">Trigger an action\r\n for each response to validate it\r\n </p>\r\n </div>\r\n </div>\r\n <svg *ngIf=\"question.get('answerType')?.value !== 'yes/no' && getFormArrayQuestionsAnswer(i,j,'answers').value.length > 2\"\r\n (click)=\"deleteAnswer(i,j,k)\"\r\n class=\"mt-8\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n matTooltip=\"Delete answer\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M15 5L5 15M5 5L15 15\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n \r\n </div>\r\n <!-- *ngIf=\"moreqn.validation\" -->\r\n <div *ngIf=\"answer.get('validation')?.value\"\r\n class=\"row\">\r\n <div class=\"col-lg-3 pt-7 fs-4 fw-400 mt-1\">\r\n If the response is this, then\r\n </div>\r\n <div class=\"col-lg-3\">\r\n <select class=\"mt-5 mx-1\"\r\n formControlName=\"validationType\"\r\n (change)=\"updateValidationType($event,i,j,k)\">\r\n <option>Descriptive Answer</option>\r\n <option>Capture Image</option>\r\n <option>Capture Video</option>\r\n </select>\r\n </div>\r\n <div class=\"col-lg-3 mx-4 d-flex pt-8\" *ngIf=\"answer.get('validationType')?.value === 'Descriptive Answer'\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio2' + i + j + k\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio2' + i + j + k\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio3'+ i + j + k\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio3' + i + j + k\">Number</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\"\r\n *ngIf=\"answer.get('showLinked')?.value\">\r\n <div class=\"col-lg-3 pt-7 fs-4 fw-400 mt-1\">\r\n Linked Question\r\n </div>\r\n <div class=\"col-lg-9\">\r\n <select [id]=\"i+'-'+k\" [name]=\"i+'-'+k\" class=\"mt-5\" (change)=\"updateQuestionType(i,j,k,$event)\">\r\n <option value=\"\">Select Question</option>\r\n <option *ngFor=\"let option of getQuestionList(i,j,k)\" [value]=\"option\"\r\n [selected]=\"selectOption(option,answer.get('linkedQuestion')?.value)\">Question {{option}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"row\"\r\n *ngIf=\"answer.get('validation')?.value && answer.get('validationType')?.value === 'Capture Image'\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"ref_img_cont mb-4 mt-5\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n width=\"100%\" height=\"300px\"\r\n class=\"auto-adjust\" alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\"\r\n (click)=\"clearReferenceImage(i,j,k);\">\r\n <svg width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\"\r\n [id]=\"'fileupload_'+i+j+k\"\r\n type=\"file\" name=\"answerFile\"\r\n accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,k)\">\r\n <label [for]=\"'fileupload_'+i+j+k\"\r\n (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mx-2\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g\r\n clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath\r\n id=\"clip0_4082_3122\">\r\n <rect width=\"20\"\r\n height=\"20\"\r\n fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\"\r\n [id]=\"'fileupload_'+i+j+k\"\r\n type=\"file\" name=\"file\"\r\n accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,k)\">\r\n <label class=\"pointer\"\r\n [for]=\"'fileupload_'+i+j+k\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n <div\r\n class=\"col-lg-4 form-check form-switch mx-2 btn-sec mt-6 text-left align-items-center\">\r\n <input\r\n class=\"form-check-input mx-0 pointer\"\r\n type=\"checkbox\" name=\"toc\" value=\"1\"\r\n ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n Allow upload from gallery\r\n </div>\r\n <div class=\"col-lg-2\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"question.get('answers')?.hasError('duplicateString')\" class=\"text-danger mt-2\">* Same answer cannot be\r\n repeated</div>\r\n <ng-container class=\"row\"\r\n *ngIf=\"(question.get('answerType')?.value === 'multiplechoicemultiple' || \r\n question.get('answerType')?.value === 'multiplechoicesingle') && \r\n allowAddAnswer(question.get('answers')?.value)\">\r\n <div (click)=\"AddMoreAns(i,j,question.get('answerType')?.value)\"\r\n class=\"btn col-lg-12 btn-light-primary my-3\">\r\n Add More Answer</div>\r\n </ng-container>\r\n \r\n </ng-container>\r\n </ng-container>\r\n \r\n <!-- Image -->\r\n <ng-container\r\n *ngIf=\"['image','descriptiveImage','multipleImage'].includes(question.get('answerType')?.value)\"\r\n class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"ref_img_cont mb-4\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n width=\"100%\" height=\"300px\" class=\"auto-adjust\"\r\n alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\"\r\n (click)=\"clearReferenceImage(i,j);\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\" id=\"fileupload\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event)\">\r\n <label for=\"fileupload\" (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-2\"\r\n width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4082_3122\">\r\n <rect width=\"20\" height=\"20\"\r\n fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\" id=\"fileupload\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event)\">\r\n <label class=\"pointer\" for=\"fileupload\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n <div\r\n class=\"col-lg-4 form-check form-switch mx-2 btn-sec mt-6 text-left align-items-center\">\r\n <input class=\"form-check-input mx-0 pointer\"\r\n type=\"checkbox\" name=\"toc\" value=\"1\"\r\n ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n Allow upload from gallery\r\n </div>\r\n <div\r\n [ngClass]=\"(['multipleImage'].includes(question.get('answerType')?.value) && getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value === '') ? 'col-lg-4 mt-6' : ['image'].includes(question.get('answerType')?.value) ? 'col-lg-2' : ''\">\r\n <div class=\"d-flex\" *ngIf=\"(['multipleImage'].includes(question.get('answerType')?.value) && getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value === '')\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio4' + i + j\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio4' + i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio5' + i + j\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio5' + i + j\">Number</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value && ['image','multipleImage'].includes(question.get('answerType')?.value)\"\r\n [ngClass]=\"question.get('answerType')?.value === 'multipleImage' ? 'col-lg-5 d-flex mt-6' : 'col-lg-3 d-flex justify-content-center align-items-center mt-2'\">\r\n <div class=\"d-flex\" *ngIf=\"question.get('answerType')?.value === 'multipleImage'\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio6' + i + j\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio6' + i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio6' + i + j\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio6' + i + j\">Number</label>\r\n </div>\r\n </div>\r\n <h3 class=\"fs16-600 px-12\"> Run AI \u2728</h3>\r\n <div class=\"form-check form-switch align-items-center btn-sec ml-5\"\r\n (click)=\"RunAI(i,j)\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n formControlName=\"runAI\" name=\"toc\" value=\"1\">\r\n <label class=\"form-check-label\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n </div>\r\n <svg [ngClass]=\"question.get('answerType')?.value === 'multipleImage' ? 'mt-1' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n matTooltip=\"Enable AI where you want tango to identify, track and alert instances.\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\">\r\n <g clip-path=\"url(#clip0_2301_100038)\">\r\n <path\r\n d=\"M7.99967 10.6654V7.9987M7.99967 5.33203H8.00634M14.6663 7.9987C14.6663 11.6806 11.6816 14.6654 7.99967 14.6654C4.31778 14.6654 1.33301 11.6806 1.33301 7.9987C1.33301 4.3168 4.31778 1.33203 7.99967 1.33203C11.6816 1.33203 14.6663 4.3168 14.6663 7.9987Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2301_100038\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n <!-- Video -->\r\n <ng-container *ngIf=\"question.get('answerType')?.value === 'video'\"\r\n class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div\r\n class=\" col-lg-4 form-check form-switch text-left align-items-center btn-sec mt-2\">\r\n <input class=\"form-check-input mx-0 pointer\" type=\"checkbox\"\r\n name=\"toc\" value=\"1\" ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\">Allow upload from gallery</label>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- <ng-container *ngIf=\"question.get('answerType')?.value === 'time'\" class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div class=\" col-lg-4 btn-sec mt-2\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\" type=\"time\" name=\"time\" ngDefaultControl formControlName=\"answer\">\r\n </div>\r\n </ng-container>\r\n </ng-container> -->\r\n\r\n <ng-container *ngIf=\"question.get('answerType')?.value === 'linearscale'\">\r\n <ng-container formGroupName=\"answers\">\r\n <div class=\"d-flex\">\r\n <div class=\"btn-sec mt-2 me-3\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-100px\" type=\"number\" name=\"start\" ngDefaultControl formControlName=\"rangeStart\"> \r\n </div>\r\n <div class=\"btn-sec mt-5\">\r\n <span class=\"fs-16px\">to</span>\r\n </div>\r\n <div class=\" btn-sec mt-2 ms-3\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-100px\" type=\"number\" name=\"start\" ngDefaultControl formControlName=\"rangeEnd\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n <div class=\"d-flex justify-content-end py-2\">\r\n <div class=\"pt-1\">\r\n <svg (click)=\"cloneQuestion(i,j)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n matTooltip=\"Duplicate\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_3385_10578)\">\r\n <path\r\n d=\"M4.16663 12.4993H3.33329C2.89127 12.4993 2.46734 12.3238 2.15478 12.0112C1.84222 11.6986 1.66663 11.2747 1.66663 10.8327V3.33268C1.66663 2.89065 1.84222 2.46673 2.15478 2.15417C2.46734 1.84161 2.89127 1.66602 3.33329 1.66602H10.8333C11.2753 1.66602 11.6992 1.84161 12.0118 2.15417C12.3244 2.46673 12.5 2.89065 12.5 3.33268V4.16602M9.16663 7.49935H16.6666C17.5871 7.49935 18.3333 8.24554 18.3333 9.16602V16.666C18.3333 17.5865 17.5871 18.3327 16.6666 18.3327H9.16663C8.24615 18.3327 7.49996 17.5865 7.49996 16.666V9.16602C7.49996 8.24554 8.24615 7.49935 9.16663 7.49935Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3385_10578\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg (click)=\"deleteQuestion(i,j)\"\r\n style=\"margin-left: 24px !important;\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n matTooltip=\"Delete question\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M2.5 4.99935H4.16667M4.16667 4.99935H17.5M4.16667 4.99935V16.666C4.16667 17.108 4.34226 17.532 4.65482 17.8445C4.96738 18.1571 5.39131 18.3327 5.83333 18.3327H14.1667C14.6087 18.3327 15.0326 18.1571 15.3452 17.8445C15.6577 17.532 15.8333 17.108 15.8333 16.666V4.99935H4.16667ZM6.66667 4.99935V3.33268C6.66667 2.89065 6.84226 2.46673 7.15482 2.15417C7.46738 1.84161 7.89131 1.66602 8.33333 1.66602H11.6667C12.1087 1.66602 12.5326 1.84161 12.8452 2.15417C13.1577 2.46673 13.3333 2.89065 13.3333 3.33268V4.99935M8.33333 9.16602V14.166M11.6667 9.16602V14.166\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div>\r\n <div class=\"row mx-0\">\r\n <div class=\"col-lg-6 px-0\" *ngIf=\"ChecklistForm.get('sections')\">\r\n <div class=\"checklist-card py-7 text-center\">\r\n <div (click)=\"addNewQuestion(sectionIndex)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\" class=\"mt-2 btn-sec pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> Add New Question</div>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 pl-5\">\r\n <div class=\"checklist-card py-7 text-center\">\r\n <div (click)=\"addNewSection()\" class=\"mt-2 px-0 btn-sec pointer\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> Add New Section</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>", styles: [".checklist-card div,input[type=text]:not(.plain-input),input[type=time],input[type=number],select{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;line-height:24px}.checklist-card input{padding-right:20%}.card{border-radius:16px}.row>*{padding-right:0}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}input[type=checkbox]:focus{border:none!important;outline:none!important;box-shadow:none!important}input:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}select{-webkit-appearance:none!important;-moz-appearance:none!important;height:45px;width:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAMAAACtdX32AAAAdVBMVEUAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhMdQaAAAAJ3RSTlMAAAECAwQGBwsOFBwkJTg5RUZ4eYCHkJefpaytrsXGy8zW3+Do8vNn0bsyAAAAYElEQVR42tXROwJDQAAA0Ymw1p9kiT+L5P5HVEi3qJn2lcPjtIuzUIJ/rhIGy762N3XaThqMN1ZPALsZPEzG1x8LrFL77DHBnEMxBewz0fJ6LyFHTPL7xhwzWYrJ9z22AqmQBV757MHfAAAAAElFTkSuQmCC);background-position:100%;background-repeat:no-repeat}select:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}textarea:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}textarea,select{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;line-height:24px}.btn-outline{border:1px solid lightgrey;padding:calc(.75rem + 1px) calc(1.5rem + 1px)}.btn-light-primary{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.newbutton{border:1px solid lightgrey;padding:calc(.75rem + 1px) calc(1.5rem + 1px);color:#000;background-color:#fff}.newbutton:hover,.newbutton:active{background-color:#009bf3;color:#fff}.btn.btn-light-primary:hover:not(.btn-active),.btn-light-primary:active{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;outline:none!important;background-color:#d1f0ff82!important}.ml-5{margin-left:10px}.pl-5{padding-left:10px!important}.btn-left{display:inline-block;width:100%;font-size:16px;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important}.card hr{width:-webkit-fill-available}.card{height:100%!important}.rotate{transform:rotate(180deg);transition:1s}.hidesec{visibility:hidden;opacity:.1;transition:1s}.fs-16px{font-size:16px}.card svg{margin-left:5px!important;cursor:pointer}.form-switch,.form-check-label{padding-left:5px!important}.webkitwidth{width:-webkit-fill-available}.fs-18px{font-size:18px;color:var(--black, #000);font-family:inter}.Answer1 .checklist-card,.Answer2 .checklist-card{position:relative}.Answer1 svg,.Answer2 svg{position:absolute;top:15px;right:15px}.Answer1 .imgAdd,.Answer2 .imgAdd{position:absolute;top:13px!important;right:57px!important}.Answer1 .flag,.Answer2 .flag{color:red!important}.Answer1 .flag>.flag-path,.Answer2 .flag>.flag-path{fill:red!important;stroke:red}.Answer1 .vl,.Answer2 .vl{position:absolute;top:1px;right:45px;border-left:1px solid #D0D5DD;height:43px}.Answer1 .vl2,.Answer2 .vl2{position:absolute;top:1px;right:90px;border-left:1px solid #D0D5DD;height:43px}.Answer1 svg:hover,.Answer2 svg:hover{fill:#d0d5dd!important}.editablecontent{display:inline-block;max-width:60ch;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.editablecontent-left{display:inline-block;width:180px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}[contenteditable]{outline:0px solid transparent}.min-width-popup{min-width:46%!important}.max-w-128px{max-width:128px}.fw-600{font-weight:600!important}.fw-400{font-weight:400}.footer1 span{color:#000;font-family:inter;font-size:14px;font-weight:500px;line-height:20px}.footer1 a{font-family:inter;font-size:14px;font-weight:600;text-decoration:underline;color:var(--primary-700, #009BF3)}.footer1 a:hover{color:var(--primary-700, #009BF3);text-decoration-line:underline!important;text-decoration-thickness:1px!important}.btn-sec{color:var(--gray-700, #344054)!important;font-family:Inter;font-size:14px;font-style:normal;font-weight:500!important;line-height:24px}.question-left{max-height:63vh;overflow:auto;overflow-x:hidden}.Question-sec{position:relative;border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--gray-50, #F9FAFB);width:100%;padding:24px 16px 16px}.Question-sec .questiontitle{position:absolute;top:-15px;background-color:#fff;border:1px solid var(--gray-300, #D0D5DD)!important;border-radius:8px}.Question-sec h3{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;margin-bottom:0!important}.Question-sec .fs16-600{font-size:14px;font-style:normal;font-weight:600;line-height:20px}.Question-sec p{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.swal2-confirm{font-family:Inter!important;font-size:30px!important;background-color:var(--white, #FFF)!important;border:solid var(--gray-300, #D0D5DD)!important}.Overlay{top:0;left:0;width:100%;height:100%;z-index:200!important;position:fixed;background:#58575799}.popup{position:absolute;top:50%;left:50%;opacity:1;transform:translate(-50%,-50%);background:var(--white, #FFF);border-radius:12px!important;border-radius:12px;box-shadow:0 8px 8px -4px #10182808,0 20px 24px -4px #10182814;padding:30px;width:400px;height:fit-content}.kiwi:hover{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi:hover path{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi{fill:#fff!important;stroke:#d0d5dd!important}.kiwi path{fill:#fff!important;stroke:#d0d5dd!important}.kiwi:active{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi:active path{fill:#d0d5dd!important;stroke:#d0d5dd!important}.active-flag{fill:red!important;stroke:red!important}.active-flag path{fill:red!important;stroke:red!important}.active-flag:active{fill:red!important;stroke:red!important}.active-flag:active path{fill:red!important;stroke:red!important}.toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.ref_del_icon{position:absolute;top:24px;right:24px;transform:translate(50%,-50%);padding:6px;border-radius:8px;border:1px solid var(--error-50, #FEF3F2);background:var(--error-50, #FEF3F2);box-shadow:0 1px 2px #1018280d}.ref_del_icon svg{margin:0!important}.ref_img_cont{position:relative}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast{border-left:4px solid #009EF7}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .custom-test{color:var(--gray-700, #344054)!important;text-align:start;font-family:Inter;font-size:12px;font-style:normal;border-radius:8px;box-shadow:0 4px 6px -2px #10182808,0 12px 16px -4px #10182814;font-weight:600;line-height:18px;background:#fff}.text-gray-700{color:#344054!important}.mandatoryfield input,.answervalidation input{border:none;padding:0!important}.mandatoryfield input[type=checkbox],.answervalidation input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.mandatoryfield input[type=checkbox]:checked,.answervalidation input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.mandatoryfield input[type=checkbox]:checked:after,.answervalidation input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.concise-checklistname{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-transform:capitalize}.concise-question{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-align:left}.active-question{color:var(--primary-700, #009BF3);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, #EAF8FF)}.q-btn{color:var(--gray-700, #344054);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, white)}.pointer{cursor:pointer}select option{padding:4px}.add-ref-btn{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;padding:14px 0!important}::ng-deep .form-switch .form-check-input{border:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(255, 255, 255, 1)'/%3E%3C/svg%3E\")!important}::ng-deep .form-switch .form-check-input:not(:checked){background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(255, 255, 255, 1)'/%3E%3C/svg%3E\")!important;background-color:var(--gray-100, #F2F4F7)!important}.plain-input{border:none;outline:none;background:transparent;padding:0;margin:0;width:100%;overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.plain-input:focus{border-radius:0!important;border:white!important;outline:none!important;box-shadow:none!important}.auto-adjust{max-width:100%;max-height:100%;object-fit:contain;background-color:#fff}.createbuttons{padding:10px 18px;justify-content:center;align-items:center;gap:8px;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.create{color:var(--white, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.savedraft{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);padding:10px 18px;justify-content:center;align-items:center;gap:8px;box-shadow:0 1px 2px #1018280d}.savedraft:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.savedrafttext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize}.questionsArea{overflow-y:scroll;padding:4px}::ng-deep .questionsArea::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:var(--gray-100, #eaeaea)!important;height:50px!important}::ng-deep .questionsArea::-webkit-scrollbar{width:10px!important}::ng-deep .questionsArea::-webkit-scrollbar-track{background:none!important;box-shadow:none!important}::ng-deep .swal2-html-container{overflow:hidden!important}.ansoptions{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checklist{font-family:Inter;font-size:20px;font-weight:600;line-height:28px;text-align:left;color:#667085!important}.checklistDescription{font-family:Inter;font-size:14px;font-weight:400;line-height:18px;text-align:left}.dscriptiveType{font-size:15px!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] });
|
|
1516
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddChecklistComponent, selector: "lib-add-checklist", viewQueries: [{ propertyName: "formRef", first: true, predicate: ["formRef"], descendants: true }], ngImport: i0, template: "<div class=\"card\" *ngIf=\"checklistLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!checklistLoading\">\r\n <div class=\"card\">\r\n <ng-container [formGroup]=\"ChecklistForm\">\r\n <div class=\"card-header border-0 pt-3 pb-3\">\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-9\">\r\n <h3 class=\"card-title align-items-center mt-3 mb-0\">\r\n <div routerLink=\"/manage/trax/checklist\" class=\"btn btn-sm btn-outline me-5 ps-2 px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 10.0003H4.1665M4.1665 10.0003L9.99984 15.8337M4.1665 10.0003L9.99984 4.16699\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></div>\r\n <div class=\"flex-column w-800px\">\r\n <div class=\"editablecontent mb-4 w-100\"><input type=\"text\" class=\"checklist plain-input\" #checklistName placeholder=\"Enter Checklist Name\" formControlName=\"checklistName\"></div>\r\n <div class=\"editablecontent w-100\"><input type=\"text\" class=\"checklistDescription plain-input\" #checklistDescription placeholder=\"Enter Checklist Description\" formControlName=\"checklistDescription\"></div>\r\n </div>\r\n </h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <div class=\"d-flex my-6 justify-content-end\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\" class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'add'\" (click)=\"saveChecklistQuestions('configure')\"><span class=\"ms-2\">Configure</span>\r\n </button>\r\n \r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'add'\" (click)=\"saveAsDraftPop('create')\"><span class=\"ms-2\">Save as Draft</span> </button>\r\n \r\n <button type=\"button\" class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'edit'\" (click)=\"updateChecklistQuestions('configure')\"><span class=\"ms-2\">Configure</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'edit'\" (click)=\"saveAsDraftPop('update')\"><span class=\"ms-2\">Save as Draft</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-3 mt-2\">\r\n <ng-container [formGroup]=\"ChecklistForm\">\r\n <div class=\"section-left card px-7 py-7\">\r\n <div class=\"fs-18px fw-600 text-left mb-3 concise-checklistname\">\r\n {{getFormControl('checklistName').value ? getFormControl('checklistName').value : 'ChecklistName'}}\r\n </div>\r\n <div class=\"left-panel-container\" formArrayName=\"sections\">\r\n <div *ngFor=\"let section of getSectionFormArray().controls;let i=index;\">\r\n <ng-container [formGroupName]=\"i\">\r\n <div class=\"d-flex section align-items-center justify-content-between\">\r\n <div class=\"fs-18px fw-bold editablecontent-left\">{{\r\n getSectionFormControl(i,'name')?.value === '' ? \"Section \" : ''}}{{\r\n getSectionFormControl(i,'name')?.value ? getSectionFormControl(i,'name')?.value\r\n : getSectionFormControl(i,'sectionNumber')?.value}}</div>\r\n <hr class=\"mx-2\">\r\n <svg (click)=\"deleteSection(i)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"35\"\r\n height=\"35\" viewBox=\"0 0 18 18\" matTooltip=\"Delete section\"\r\n matTooltipPosition=\"above\" matTooltipClass=\"custom-test\" fill=\"none\">\r\n <path\r\n d=\"M2.25 4.5H3.75M3.75 4.5H15.75M3.75 4.5V15C3.75 15.3978 3.90804 15.7794 4.18934 16.0607C4.47064 16.342 4.85218 16.5 5.25 16.5H12.75C13.1478 16.5 13.5294 16.342 13.8107 16.0607C14.092 15.7794 14.25 15.3978 14.25 15V4.5H3.75ZM6 4.5V3C6 2.60218 6.15804 2.22064 6.43934 1.93934C6.72064 1.65804 7.10218 1.5 7.5 1.5H10.5C10.8978 1.5 11.2794 1.65804 11.5607 1.93934C11.842 2.22064 12 2.60218 12 3V4.5M7.5 8.25V12.75M10.5 8.25V12.75\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <ng-container *ngIf=\"show===i\">\r\n <div cdkDropList (cdkDropListDropped)=\"dragDrop(i,$event)\"\r\n [cdkDropListData]=\"getFormArrayQuestions(i).controls\" class=\"question-left\">\r\n <ng-container formArrayName=\"questions\">\r\n <div *ngFor=\"let question of getFormArrayQuestions(i).controls;let j=index;\"\r\n class=\"my-2 cursor-pointer\"\r\n [ngClass]=\"question.get('active')?.value === true ? 'active-question' : 'q-btn'\"\r\n cdkDrag (mouseenter)=\"setActiveQuestion(i,j,1)\"\r\n (click)=\"scrollToQuestion(i,j);\"\r\n (mouseleave)=\"setActiveQuestion(i,j,-1)\">\r\n <ng-container [formGroupName]=\"j\">\r\n <div class=\"concise-question\">\r\n {{getQuestionFormControl(i,j,'qname')?.value ? '' : \"Question\"}}{{ getQuestionFormControl(i,j,'qname')?.value ?\r\n getQuestionFormControl(i,j,'qname')?.value :\r\n getQuestionFormControl(i,j,'qno')?.value }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"col-lg-9 mt-2\">\r\n <form [formGroup]=\"ChecklistForm\" #formRef>\r\n <div class=\"card px-7\">\r\n <!-- <div class=\"checklist-card py-5\">\r\n <input type=\"text\" class=\"mt-2\" style=\"text-transform: capitalize;\"\r\n placeholder=\"Enter checklist name here\" formControlName=\"checklistName\">\r\n <input type=\"text\" class=\"mt-4\" placeholder=\"Enter checklist description here\"\r\n formControlName=\"checklistDescription\">\r\n </div> -->\r\n <ng-container formArrayName=\"sections\" >\r\n <div class=\"sectionArea mt-5\" *ngFor=\"let section of getSectionFormArray().controls;let i=index;\">\r\n <ng-container [formGroupName]=\"i\">\r\n <div class=\"section d-flex align-items-center justify-content-between\">\r\n \r\n <div class=\"fs-18px fw-bold editablecontent\"><input type=\"text\" class=\"plain-input\"\r\n #sectionName (change)=\"updateInputValue(i,sectionName.value)\"\r\n formControlName=\"name\"></div>\r\n <hr>\r\n <svg class=\"ml-5\" (click)=\"deleteSection(i)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" matTooltip=\"Delete section\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M2.25 4.5H3.75M3.75 4.5H15.75M3.75 4.5V15C3.75 15.3978 3.90804 15.7794 4.18934 16.0607C4.47064 16.342 4.85218 16.5 5.25 16.5H12.75C13.1478 16.5 13.5294 16.342 13.8107 16.0607C14.092 15.7794 14.25 15.3978 14.25 15V4.5H3.75ZM6 4.5V3C6 2.60218 6.15804 2.22064 6.43934 1.93934C6.72064 1.65804 7.10218 1.5 7.5 1.5H10.5C10.8978 1.5 11.2794 1.65804 11.5607 1.93934C11.842 2.22064 12 2.60218 12 3V4.5M7.5 8.25V12.75M10.5 8.25V12.75\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"questionsArea\" *ngIf=\"show === i\">\r\n <ng-container formArrayName=\"questions\">\r\n <div class=\"Question-sec mt-10\"\r\n *ngFor=\"let question of getFormArrayQuestions(i).controls;let j = index;\"\r\n (mouseenter)=\"setActiveQuestion(i,j,1)\"\r\n (mouseleave)=\"setActiveQuestion(i,j,-1)\">\r\n <ng-container [formGroupName]=\"j\">\r\n <span class=\"fs-18px px-3 editablecontent questiontitle\"\r\n style=\"cursor: default;\"> Question {{j+1}}</span>\r\n \r\n <div class=\"checklist-card pb-5\">\r\n <textarea class=\"form-control form-control-solid\" rows=\"1\"\r\n type=\"text\" class=\"mt-0\" [id]=\"'q-' + i + '-' + j\"\r\n placeholder=\"Enter question here\"\r\n formControlName=\"qname\"></textarea>\r\n <ng-container\r\n *ngIf=\"question.get('qname')?.invalid && question.get('qname')?.touched\">\r\n <p style=\"color: red;\"\r\n *ngIf=\"question.get('qname')?.hasError('required')\">*\r\n Question is required.</p>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"row\"\r\n *ngIf=\"!['descriptiveImage','image','multipleImage'].includes(question.get('answerType')?.value)\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"ref_img_cont mb-4 mt-5\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n width=\"100%\" height=\"300px\" class=\"auto-adjust\"\r\n alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\" (click)=\"clearReferenceImage(i,j);\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\" [id]=\"'fileupload_'+i+j\" type=\"file\"\r\n name=\"answerFile\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,-1,'questionReferenceImage')\">\r\n <label [for]=\"'fileupload_'+i+j\" (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-2\"\r\n width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4082_3122\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\" [id]=\"'fileupload_'+i+j\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,-1,'questionReferenceImage')\">\r\n <label class=\"pointer\" [for]=\"'fileupload_'+i+j\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"checklist-card pb-5\">\r\n <select class=\"mt-5\" name=\"selectoption\"\r\n (change)=\"answerTypeSelection(i,j,$event)\"\r\n formControlName=\"answerType\">\r\n <option name=\"descriptive\" value=\"descriptive\">Descriptive\r\n Answer</option>\r\n <option name=\"yes/no\" value=\"yes/no\">A/B Question</option>\r\n <option name=\"multiplechoicesingle\"\r\n value=\"multiplechoicesingle\">Multiple Choice Question -\r\n Single Answer</option>\r\n <option name=\"multiplechoicemultiple\"\r\n value=\"multiplechoicemultiple\">Multiple Choice Question -\r\n Multiple Answer</option>\r\n <option name=\"descriptiveImage\" value=\"descriptiveImage\">Capture\r\n Image with Description</option>\r\n <option name=\"image\" value=\"image\">Capture Image as answer\r\n </option>\r\n <option name=\"video\" value=\"video\">Capture video as answer\r\n </option>\r\n <option name=\"multipleImage\" value=\"multipleImage\">Capture\r\n Multiple Image</option>\r\n <option name=\"date\" value=\"date\">Date - DD/MM/YYYY</option>\r\n <option name=\"linearscale\" value=\"linearscale\">Linear Scale</option>\r\n <option name=\"time\" value=\"time\">Time</option>\r\n </select>\r\n \r\n </div>\r\n <div class=\"col-lg-3 mx-4 d-flex mt-3\" *ngIf=\"['descriptive'].includes(question.get('answerType')?.value)\">\r\n <div class=\"form-check\" >\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"text\" [name]=\"'descriptivetype'\" [id]=\"'inlineRadio0'+ i + j\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio0'+ i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"number\" [name]=\"'descriptivetype'\" [id]=\"'inlineRadio1'+ i + j\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio1'+i + j\">Number</label>\r\n </div>\r\n </div>\r\n <ng-container\r\n *ngIf=\"question.get('answerType')?.value === 'yes/no' || question.get('answerType')?.value === 'multiplechoicesingle' || question.get('answerType')?.value === 'multiplechoicemultiple'\">\r\n <div class=\"fs-18px fw-bolder\" style=\"cursor: default;\">Answer\r\n Options</div>\r\n <ng-container formArrayName=\"answers\">\r\n <ng-container\r\n *ngFor=\"let answer of getFormArrayQuestionsAnswer(i,j,'answers')?.controls;let k = index;\">\r\n <div class=\"row\" [formGroupName]=\"k\">\r\n <ng-container *ngIf=\"!answer.get('isdeleted')?.value\">\r\n <div class=\"col-lg-6 Answer1\">\r\n <div class=\"checklist-card pb-0 mt-5\">\r\n <input type=\"text\" class=\"mt-0\"\r\n placeholder=\"Enter answer here\"\r\n formControlName=\"answer\">\r\n <span class=\"vl\"></span>\r\n <ng-container\r\n *ngIf=\"question.get('answerType')?.value === 'yes/no' || question.get('answerType')?.value === 'multiplechoicesingle'\"\r\n ngDefaultControl>\r\n <span class=\"vl2\"></span>\r\n <svg class=\"imgAdd\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\"\r\n (click)=\"updateLinked(i,j,k)\">\r\n <path\r\n d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\"\r\n stroke=\"#344054\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"answer.get('answer')?.invalid && answer.get('answer')?.touched\">\r\n <p style=\"color: red;\"\r\n *ngIf=\"answer.get('answer')?.hasError('required')\">\r\n * Answer is required.</p>\r\n </ng-container>\r\n <p style=\"color: red;\"\r\n *ngIf=\"answer.get('showSOPFlagError')?.value === true\">\r\n Every answer can\u2019t be a flag.</p>\r\n \r\n <ng-container formControlName=\"sopFlag\"\r\n ngDefaultControl>\r\n \r\n <svg (click)=\"raiseflag(i,j,k,true)\"\r\n matTooltip=\"Raise a flag if this answer is selected\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\"\r\n *ngIf=\"answer.get('sopFlag')?.value === false\"\r\n class=\"kiwi\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M2.66669 10.0007C2.66669 10.0007 3.33335 9.33398 5.33335 9.33398C7.33335 9.33398 8.66669 10.6673 10.6667 10.6673C12.6667 10.6673 13.3334 10.0007 13.3334 10.0007V2.00065C13.3334 2.00065 12.6667 2.66732 10.6667 2.66732C8.66669 2.66732 7.33335 1.33398 5.33335 1.33398C3.33335 1.33398 2.66669 2.00065 2.66669 2.00065V10.0007ZM2.66669 10.0007V14.6673\"\r\n stroke=\"#D0D5DD\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n <svg (click)=\"raiseflag(i,j,k,false)\"\r\n matTooltip=\"Raise a flag if this answer is selected\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\"\r\n *ngIf=\"answer.get('sopFlag')?.value === true\"\r\n class=\"active-flag\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M2.66669 10.0007C2.66669 10.0007 3.33335 9.33398 5.33335 9.33398C7.33335 9.33398 8.66669 10.6673 10.6667 10.6673C12.6667 10.6673 13.3334 10.0007 13.3334 10.0007V2.00065C13.3334 2.00065 12.6667 2.66732 10.6667 2.66732C8.66669 2.66732 7.33335 1.33398 5.33335 1.33398C3.33335 1.33398 2.66669 2.00065 2.66669 2.00065V10.0007ZM2.66669 10.0007V14.6673\"\r\n stroke=\"#D0D5DD\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\"\r\n *ngIf=\"!answer.get('showLinked')?.value\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"d-flex answervalidation\">\r\n <input class=\"mt-7\" type=\"checkbox\"\r\n style=\"width:16px;height:16px;cursor: pointer;\"\r\n value=\"1\"\r\n (change)=\"getvalidation(i,j,k,$event)\"\r\n formControlName=\"validation\">\r\n <div class=\"chackbox pt-4 mt-2 mx-2\"\r\n style=\"cursor: default;\">\r\n <h3>Validate response</h3>\r\n <p class=\"mb-0\">Trigger an action\r\n for each response to validate it\r\n </p>\r\n </div>\r\n </div>\r\n <svg *ngIf=\"question.get('answerType')?.value !== 'yes/no' && getFormArrayQuestionsAnswer(i,j,'answers').value.length > 2\"\r\n (click)=\"deleteAnswer(i,j,k)\"\r\n class=\"mt-8\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n matTooltip=\"Delete answer\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M15 5L5 15M5 5L15 15\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n \r\n </div>\r\n <!-- *ngIf=\"moreqn.validation\" -->\r\n <div *ngIf=\"answer.get('validation')?.value\"\r\n class=\"row\">\r\n <div class=\"col-lg-3 pt-7 fs-4 fw-400 mt-1\">\r\n If the response is this, then\r\n </div>\r\n <div class=\"col-lg-3\">\r\n <select class=\"mt-5 mx-1\"\r\n formControlName=\"validationType\"\r\n (change)=\"updateValidationType($event,i,j,k)\">\r\n <option>Descriptive Answer</option>\r\n <option>Capture Image</option>\r\n <option>Capture Video</option>\r\n </select>\r\n </div>\r\n <div class=\"col-lg-3 mx-4 d-flex pt-8\" *ngIf=\"answer.get('validationType')?.value === 'Descriptive Answer'\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio2' + i + j + k\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio2' + i + j + k\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio3'+ i + j + k\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio3' + i + j + k\">Number</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\"\r\n *ngIf=\"answer.get('showLinked')?.value\">\r\n <div class=\"col-lg-3 pt-7 fs-4 fw-400 mt-1\">\r\n Linked Question\r\n </div>\r\n <div class=\"col-lg-9\">\r\n <select [id]=\"i+'-'+k\" [name]=\"i+'-'+k\" class=\"mt-5\" (change)=\"updateQuestionType(i,j,k,$event)\">\r\n <option value=\"\">Select Question</option>\r\n <option *ngFor=\"let option of getQuestionList(i,j,k)\" [value]=\"option\"\r\n [selected]=\"selectOption(option,answer.get('linkedQuestion')?.value)\">Question {{option}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"row\"\r\n *ngIf=\"answer.get('validation')?.value && answer.get('validationType')?.value === 'Capture Image'\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"ref_img_cont mb-4 mt-5\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n width=\"100%\" height=\"300px\"\r\n class=\"auto-adjust\" alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\"\r\n (click)=\"clearReferenceImage(i,j,k);\">\r\n <svg width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\"\r\n [id]=\"'fileupload_'+i+j+k\"\r\n type=\"file\" name=\"answerFile\"\r\n accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,k)\">\r\n <label [for]=\"'fileupload_'+i+j+k\"\r\n (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mx-2\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g\r\n clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath\r\n id=\"clip0_4082_3122\">\r\n <rect width=\"20\"\r\n height=\"20\"\r\n fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\"\r\n [id]=\"'fileupload_'+i+j+k\"\r\n type=\"file\" name=\"file\"\r\n accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,k)\">\r\n <label class=\"pointer\"\r\n [for]=\"'fileupload_'+i+j+k\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n <div\r\n class=\"col-lg-4 form-check form-switch mx-2 btn-sec mt-6 text-left align-items-center\">\r\n <input\r\n class=\"form-check-input mx-0 pointer\"\r\n type=\"checkbox\" name=\"toc\" value=\"1\"\r\n ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n Allow upload from gallery\r\n </div>\r\n <div class=\"col-lg-2\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"question.get('answers')?.hasError('duplicateString')\" class=\"text-danger mt-2\">* Same answer cannot be\r\n repeated</div>\r\n <ng-container class=\"row\"\r\n *ngIf=\"(question.get('answerType')?.value === 'multiplechoicemultiple' || \r\n question.get('answerType')?.value === 'multiplechoicesingle') && \r\n allowAddAnswer(question.get('answers')?.value)\">\r\n <div (click)=\"AddMoreAns(i,j,question.get('answerType')?.value)\"\r\n class=\"btn col-lg-12 btn-light-primary my-3\">\r\n Add More Answer</div>\r\n </ng-container>\r\n \r\n </ng-container>\r\n </ng-container>\r\n \r\n <!-- Image -->\r\n <ng-container\r\n *ngIf=\"['image','descriptiveImage','multipleImage'].includes(question.get('answerType')?.value)\"\r\n class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"ref_img_cont mb-4\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n width=\"100%\" height=\"300px\" class=\"auto-adjust\"\r\n alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\"\r\n (click)=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? '': clearReferenceImage(i,j);\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [style]=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? 'cursor:default':''\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\" id=\"fileupload\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event)\" *ngIf=\"(question.get('answerType')?.value !== 'image' || (question.get('answerType')?.value === 'image' && !question.get('runAIDefault')?.value))\">\r\n <label for=\"fileupload\" (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-2\"\r\n width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4082_3122\">\r\n <rect width=\"20\" height=\"20\"\r\n fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\" id=\"fileupload\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event)\" *ngIf=\"(question.get('answerType')?.value !== 'image' || (question.get('answerType')?.value === 'image' && !question.get('runAIDefault')?.value))\">\r\n <label class=\"pointer\" for=\"fileupload\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n <div\r\n class=\"col-lg-4 form-check form-switch mx-2 btn-sec mt-6 text-left align-items-center\">\r\n <input class=\"form-check-input mx-0 pointer\"\r\n type=\"checkbox\" name=\"toc\" value=\"1\"\r\n ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n Allow upload from gallery\r\n </div>\r\n <div\r\n [ngClass]=\"(['multipleImage'].includes(question.get('answerType')?.value) && getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value === '') ? 'col-lg-4 mt-6' : ['image'].includes(question.get('answerType')?.value) ? 'col-lg-2' : ''\">\r\n <div class=\"d-flex\" *ngIf=\"(['multipleImage'].includes(question.get('answerType')?.value) && getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value === '')\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio4' + i + j\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio4' + i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio5' + i + j\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio5' + i + j\">Number</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value && ['image','multipleImage'].includes(question.get('answerType')?.value)\"\r\n [ngClass]=\"question.get('answerType')?.value === 'multipleImage' ? 'col-lg-5 d-flex mt-6' : 'col-lg-3 d-flex justify-content-center align-items-center mt-2'\">\r\n <div class=\"d-flex\" *ngIf=\"question.get('answerType')?.value === 'multipleImage'\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio6' + i + j\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio6' + i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio6' + i + j\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio6' + i + j\">Number</label>\r\n </div>\r\n </div>\r\n <h3 class=\"fs16-600 px-12\"> Run AI \u2728</h3>\r\n <div class=\"form-check form-switch align-items-center btn-sec ml-5\"\r\n (click)=\"RunAI(i,j)\">\r\n <input class=\"form-check-input pointer\" type=\"checkbox\"\r\n formControlName=\"runAI\" name=\"toc\" value=\"1\">\r\n <label class=\"form-check-label\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n </div>\r\n <svg [ngClass]=\"question.get('answerType')?.value === 'multipleImage' ? 'mt-1' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n matTooltip=\"Enable AI where you want tango to identify, track and alert instances.\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\">\r\n <g clip-path=\"url(#clip0_2301_100038)\">\r\n <path\r\n d=\"M7.99967 10.6654V7.9987M7.99967 5.33203H8.00634M14.6663 7.9987C14.6663 11.6806 11.6816 14.6654 7.99967 14.6654C4.31778 14.6654 1.33301 11.6806 1.33301 7.9987C1.33301 4.3168 4.31778 1.33203 7.99967 1.33203C11.6816 1.33203 14.6663 4.3168 14.6663 7.9987Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2301_100038\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n <!-- Video -->\r\n <ng-container *ngIf=\"question.get('answerType')?.value === 'video'\"\r\n class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div\r\n class=\" col-lg-4 form-check form-switch text-left align-items-center btn-sec mt-2\">\r\n <input class=\"form-check-input mx-0 pointer\" type=\"checkbox\"\r\n name=\"toc\" value=\"1\" ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\">Allow upload from gallery</label>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- <ng-container *ngIf=\"question.get('answerType')?.value === 'time'\" class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div class=\" col-lg-4 btn-sec mt-2\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\" type=\"time\" name=\"time\" ngDefaultControl formControlName=\"answer\">\r\n </div>\r\n </ng-container>\r\n </ng-container> -->\r\n\r\n <ng-container *ngIf=\"question.get('answerType')?.value === 'linearscale'\">\r\n <ng-container formGroupName=\"answers\">\r\n <div class=\"d-flex\">\r\n <div class=\"btn-sec mt-2 me-3\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-100px\" type=\"number\" name=\"start\" ngDefaultControl formControlName=\"rangeStart\"> \r\n </div>\r\n <div class=\"btn-sec mt-5\">\r\n <span class=\"fs-16px\">to</span>\r\n </div>\r\n <div class=\" btn-sec mt-2 ms-3\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-100px\" type=\"number\" name=\"start\" ngDefaultControl formControlName=\"rangeEnd\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n <div class=\"d-flex justify-content-end py-2\">\r\n <div class=\"pt-1\" >\r\n <svg (click)=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? '' : cloneQuestion(i,j)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n matTooltip=\"Duplicate\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" [style]=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? 'cursor:default':''\">\r\n <g clip-path=\"url(#clip0_3385_10578)\">\r\n <path\r\n d=\"M4.16663 12.4993H3.33329C2.89127 12.4993 2.46734 12.3238 2.15478 12.0112C1.84222 11.6986 1.66663 11.2747 1.66663 10.8327V3.33268C1.66663 2.89065 1.84222 2.46673 2.15478 2.15417C2.46734 1.84161 2.89127 1.66602 3.33329 1.66602H10.8333C11.2753 1.66602 11.6992 1.84161 12.0118 2.15417C12.3244 2.46673 12.5 2.89065 12.5 3.33268V4.16602M9.16663 7.49935H16.6666C17.5871 7.49935 18.3333 8.24554 18.3333 9.16602V16.666C18.3333 17.5865 17.5871 18.3327 16.6666 18.3327H9.16663C8.24615 18.3327 7.49996 17.5865 7.49996 16.666V9.16602C7.49996 8.24554 8.24615 7.49935 9.16663 7.49935Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3385_10578\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg (click)=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? '' : deleteQuestion(i,j)\"\r\n style=\"margin-left: 24px !important;\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n matTooltip=\"Delete question\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" [ngStyle]=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? {cursor:'default'}:{}\">\r\n <path\r\n d=\"M2.5 4.99935H4.16667M4.16667 4.99935H17.5M4.16667 4.99935V16.666C4.16667 17.108 4.34226 17.532 4.65482 17.8445C4.96738 18.1571 5.39131 18.3327 5.83333 18.3327H14.1667C14.6087 18.3327 15.0326 18.1571 15.3452 17.8445C15.6577 17.532 15.8333 17.108 15.8333 16.666V4.99935H4.16667ZM6.66667 4.99935V3.33268C6.66667 2.89065 6.84226 2.46673 7.15482 2.15417C7.46738 1.84161 7.89131 1.66602 8.33333 1.66602H11.6667C12.1087 1.66602 12.5326 1.84161 12.8452 2.15417C13.1577 2.46673 13.3333 2.89065 13.3333 3.33268V4.99935M8.33333 9.16602V14.166M11.6667 9.16602V14.166\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div>\r\n <div class=\"row mx-0\">\r\n <div class=\"col-lg-6 px-0\" *ngIf=\"ChecklistForm.get('sections')\">\r\n <div class=\"checklist-card py-7 text-center\">\r\n <div (click)=\"addNewQuestion(sectionIndex)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\" class=\"mt-2 btn-sec pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> Add New Question</div>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 pl-5\">\r\n <div class=\"checklist-card py-7 text-center\">\r\n <div (click)=\"addNewSection()\" class=\"mt-2 px-0 btn-sec pointer\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> Add New Section</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>", styles: [".checklist-card div,input[type=text]:not(.plain-input),input[type=time],input[type=number],select{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;line-height:24px}.checklist-card input{padding-right:20%}.card{border-radius:16px}.row>*{padding-right:0}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}input[type=checkbox]:focus{border:none!important;outline:none!important;box-shadow:none!important}input:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}select{-webkit-appearance:none!important;-moz-appearance:none!important;height:45px;width:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAMAAACtdX32AAAAdVBMVEUAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhMdQaAAAAJ3RSTlMAAAECAwQGBwsOFBwkJTg5RUZ4eYCHkJefpaytrsXGy8zW3+Do8vNn0bsyAAAAYElEQVR42tXROwJDQAAA0Ymw1p9kiT+L5P5HVEi3qJn2lcPjtIuzUIJ/rhIGy762N3XaThqMN1ZPALsZPEzG1x8LrFL77DHBnEMxBewz0fJ6LyFHTPL7xhwzWYrJ9z22AqmQBV757MHfAAAAAElFTkSuQmCC);background-position:100%;background-repeat:no-repeat}select:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}textarea:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}textarea,select{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;line-height:24px}.btn-outline{border:1px solid lightgrey;padding:calc(.75rem + 1px) calc(1.5rem + 1px)}.btn-light-primary{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.newbutton{border:1px solid lightgrey;padding:calc(.75rem + 1px) calc(1.5rem + 1px);color:#000;background-color:#fff}.newbutton:hover,.newbutton:active{background-color:#009bf3;color:#fff}.btn.btn-light-primary:hover:not(.btn-active),.btn-light-primary:active{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;outline:none!important;background-color:#d1f0ff82!important}.ml-5{margin-left:10px}.pl-5{padding-left:10px!important}.btn-left{display:inline-block;width:100%;font-size:16px;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important}.card hr{width:-webkit-fill-available}.card{height:100%!important}.rotate{transform:rotate(180deg);transition:1s}.hidesec{visibility:hidden;opacity:.1;transition:1s}.fs-16px{font-size:16px}.card svg{margin-left:5px!important;cursor:pointer}.form-switch,.form-check-label{padding-left:5px!important}.webkitwidth{width:-webkit-fill-available}.fs-18px{font-size:18px;color:var(--black, #000);font-family:inter}.Answer1 .checklist-card,.Answer2 .checklist-card{position:relative}.Answer1 svg,.Answer2 svg{position:absolute;top:15px;right:15px}.Answer1 .imgAdd,.Answer2 .imgAdd{position:absolute;top:13px!important;right:57px!important}.Answer1 .flag,.Answer2 .flag{color:red!important}.Answer1 .flag>.flag-path,.Answer2 .flag>.flag-path{fill:red!important;stroke:red}.Answer1 .vl,.Answer2 .vl{position:absolute;top:1px;right:45px;border-left:1px solid #D0D5DD;height:43px}.Answer1 .vl2,.Answer2 .vl2{position:absolute;top:1px;right:90px;border-left:1px solid #D0D5DD;height:43px}.Answer1 svg:hover,.Answer2 svg:hover{fill:#d0d5dd!important}.editablecontent{display:inline-block;max-width:60ch;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.editablecontent-left{display:inline-block;width:180px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}[contenteditable]{outline:0px solid transparent}.min-width-popup{min-width:46%!important}.max-w-128px{max-width:128px}.fw-600{font-weight:600!important}.fw-400{font-weight:400}.footer1 span{color:#000;font-family:inter;font-size:14px;font-weight:500px;line-height:20px}.footer1 a{font-family:inter;font-size:14px;font-weight:600;text-decoration:underline;color:var(--primary-700, #009BF3)}.footer1 a:hover{color:var(--primary-700, #009BF3);text-decoration-line:underline!important;text-decoration-thickness:1px!important}.btn-sec{color:var(--gray-700, #344054)!important;font-family:Inter;font-size:14px;font-style:normal;font-weight:500!important;line-height:24px}.question-left{max-height:63vh;overflow:auto;overflow-x:hidden}.Question-sec{position:relative;border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--gray-50, #F9FAFB);width:100%;padding:24px 16px 16px}.Question-sec .questiontitle{position:absolute;top:-15px;background-color:#fff;border:1px solid var(--gray-300, #D0D5DD)!important;border-radius:8px}.Question-sec h3{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;margin-bottom:0!important}.Question-sec .fs16-600{font-size:14px;font-style:normal;font-weight:600;line-height:20px}.Question-sec p{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.swal2-confirm{font-family:Inter!important;font-size:30px!important;background-color:var(--white, #FFF)!important;border:solid var(--gray-300, #D0D5DD)!important}.Overlay{top:0;left:0;width:100%;height:100%;z-index:200!important;position:fixed;background:#58575799}.popup{position:absolute;top:50%;left:50%;opacity:1;transform:translate(-50%,-50%);background:var(--white, #FFF);border-radius:12px!important;border-radius:12px;box-shadow:0 8px 8px -4px #10182808,0 20px 24px -4px #10182814;padding:30px;width:400px;height:fit-content}.kiwi:hover{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi:hover path{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi{fill:#fff!important;stroke:#d0d5dd!important}.kiwi path{fill:#fff!important;stroke:#d0d5dd!important}.kiwi:active{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi:active path{fill:#d0d5dd!important;stroke:#d0d5dd!important}.active-flag{fill:red!important;stroke:red!important}.active-flag path{fill:red!important;stroke:red!important}.active-flag:active{fill:red!important;stroke:red!important}.active-flag:active path{fill:red!important;stroke:red!important}.toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.ref_del_icon{position:absolute;top:24px;right:24px;transform:translate(50%,-50%);padding:6px;border-radius:8px;border:1px solid var(--error-50, #FEF3F2);background:var(--error-50, #FEF3F2);box-shadow:0 1px 2px #1018280d}.ref_del_icon svg{margin:0!important}.ref_img_cont{position:relative}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast{border-left:4px solid #009EF7}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .custom-test{color:var(--gray-700, #344054)!important;text-align:start;font-family:Inter;font-size:12px;font-style:normal;border-radius:8px;box-shadow:0 4px 6px -2px #10182808,0 12px 16px -4px #10182814;font-weight:600;line-height:18px;background:#fff}.text-gray-700{color:#344054!important}.mandatoryfield input,.answervalidation input{border:none;padding:0!important}.mandatoryfield input[type=checkbox],.answervalidation input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.mandatoryfield input[type=checkbox]:checked,.answervalidation input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.mandatoryfield input[type=checkbox]:checked:after,.answervalidation input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.concise-checklistname{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-transform:capitalize}.concise-question{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-align:left}.active-question{color:var(--primary-700, #009BF3);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, #EAF8FF)}.q-btn{color:var(--gray-700, #344054);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, white)}.pointer{cursor:pointer}select option{padding:4px}.add-ref-btn{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;padding:14px 0!important}::ng-deep .form-switch .form-check-input{border:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(255, 255, 255, 1)'/%3E%3C/svg%3E\")!important}::ng-deep .form-switch .form-check-input:not(:checked){background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(255, 255, 255, 1)'/%3E%3C/svg%3E\")!important;background-color:var(--gray-100, #F2F4F7)!important}.plain-input{border:none;outline:none;background:transparent;padding:0;margin:0;width:100%;overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.plain-input:focus{border-radius:0!important;border:white!important;outline:none!important;box-shadow:none!important}.auto-adjust{max-width:100%;max-height:100%;object-fit:contain;background-color:#fff}.createbuttons{padding:10px 18px;justify-content:center;align-items:center;gap:8px;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.create{color:var(--white, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.savedraft{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);padding:10px 18px;justify-content:center;align-items:center;gap:8px;box-shadow:0 1px 2px #1018280d}.savedraft:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.savedrafttext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize}.questionsArea{overflow-y:scroll;padding:4px}::ng-deep .questionsArea::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:var(--gray-100, #eaeaea)!important;height:50px!important}::ng-deep .questionsArea::-webkit-scrollbar{width:10px!important}::ng-deep .questionsArea::-webkit-scrollbar-track{background:none!important;box-shadow:none!important}::ng-deep .swal2-html-container{overflow:hidden!important}.ansoptions{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checklist{font-family:Inter;font-size:20px;font-weight:600;line-height:28px;text-align:left;color:#667085!important}.checklistDescription{font-family:Inter;font-size:14px;font-weight:400;line-height:18px;text-align:left}.dscriptiveType{font-size:15px!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }] });
|
|
1514
1517
|
}
|
|
1515
1518
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddChecklistComponent, decorators: [{
|
|
1516
1519
|
type: Component,
|
|
1517
|
-
args: [{ selector: 'lib-add-checklist', template: "<div class=\"card\" *ngIf=\"checklistLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!checklistLoading\">\r\n <div class=\"card\">\r\n <ng-container [formGroup]=\"ChecklistForm\">\r\n <div class=\"card-header border-0 pt-3 pb-3\">\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-9\">\r\n <h3 class=\"card-title align-items-center mt-3 mb-0\">\r\n <div routerLink=\"/manage/trax/checklist\" class=\"btn btn-sm btn-outline me-5 ps-2 px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 10.0003H4.1665M4.1665 10.0003L9.99984 15.8337M4.1665 10.0003L9.99984 4.16699\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></div>\r\n <div class=\"flex-column w-800px\">\r\n <div class=\"editablecontent mb-4 w-100\"><input type=\"text\" class=\"checklist plain-input\" #checklistName placeholder=\"Enter Checklist Name\" formControlName=\"checklistName\"></div>\r\n <div class=\"editablecontent w-100\"><input type=\"text\" class=\"checklistDescription plain-input\" #checklistDescription placeholder=\"Enter Checklist Description\" formControlName=\"checklistDescription\"></div>\r\n </div>\r\n </h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <div class=\"d-flex my-6 justify-content-end\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\" class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'add'\" (click)=\"saveChecklistQuestions('configure')\"><span class=\"ms-2\">Configure</span>\r\n </button>\r\n \r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'add'\" (click)=\"saveAsDraftPop('create')\"><span class=\"ms-2\">Save as Draft</span> </button>\r\n \r\n <button type=\"button\" class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'edit'\" (click)=\"updateChecklistQuestions('configure')\"><span class=\"ms-2\">Configure</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'edit'\" (click)=\"saveAsDraftPop('update')\"><span class=\"ms-2\">Save as Draft</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-3 mt-2\">\r\n <ng-container [formGroup]=\"ChecklistForm\">\r\n <div class=\"section-left card px-7 py-7\">\r\n <div class=\"fs-18px fw-600 text-left mb-3 concise-checklistname\">\r\n {{getFormControl('checklistName').value ? getFormControl('checklistName').value : 'ChecklistName'}}\r\n </div>\r\n <div class=\"left-panel-container\" formArrayName=\"sections\">\r\n <div *ngFor=\"let section of getSectionFormArray().controls;let i=index;\">\r\n <ng-container [formGroupName]=\"i\">\r\n <div class=\"d-flex section align-items-center justify-content-between\">\r\n <div class=\"fs-18px fw-bold editablecontent-left\">{{\r\n getSectionFormControl(i,'name')?.value === '' ? \"Section \" : ''}}{{\r\n getSectionFormControl(i,'name')?.value ? getSectionFormControl(i,'name')?.value\r\n : getSectionFormControl(i,'sectionNumber')?.value}}</div>\r\n <hr class=\"mx-2\">\r\n <svg (click)=\"deleteSection(i)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"35\"\r\n height=\"35\" viewBox=\"0 0 18 18\" matTooltip=\"Delete section\"\r\n matTooltipPosition=\"above\" matTooltipClass=\"custom-test\" fill=\"none\">\r\n <path\r\n d=\"M2.25 4.5H3.75M3.75 4.5H15.75M3.75 4.5V15C3.75 15.3978 3.90804 15.7794 4.18934 16.0607C4.47064 16.342 4.85218 16.5 5.25 16.5H12.75C13.1478 16.5 13.5294 16.342 13.8107 16.0607C14.092 15.7794 14.25 15.3978 14.25 15V4.5H3.75ZM6 4.5V3C6 2.60218 6.15804 2.22064 6.43934 1.93934C6.72064 1.65804 7.10218 1.5 7.5 1.5H10.5C10.8978 1.5 11.2794 1.65804 11.5607 1.93934C11.842 2.22064 12 2.60218 12 3V4.5M7.5 8.25V12.75M10.5 8.25V12.75\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <ng-container *ngIf=\"show===i\">\r\n <div cdkDropList (cdkDropListDropped)=\"dragDrop(i,$event)\"\r\n [cdkDropListData]=\"getFormArrayQuestions(i).controls\" class=\"question-left\">\r\n <ng-container formArrayName=\"questions\">\r\n <div *ngFor=\"let question of getFormArrayQuestions(i).controls;let j=index;\"\r\n class=\"my-2 cursor-pointer\"\r\n [ngClass]=\"question.get('active')?.value === true ? 'active-question' : 'q-btn'\"\r\n cdkDrag (mouseenter)=\"setActiveQuestion(i,j,1)\"\r\n (click)=\"scrollToQuestion(i,j);\"\r\n (mouseleave)=\"setActiveQuestion(i,j,-1)\">\r\n <ng-container [formGroupName]=\"j\">\r\n <div class=\"concise-question\">\r\n {{getQuestionFormControl(i,j,'qname')?.value ? '' : \"Question\"}}{{ getQuestionFormControl(i,j,'qname')?.value ?\r\n getQuestionFormControl(i,j,'qname')?.value :\r\n getQuestionFormControl(i,j,'qno')?.value }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"col-lg-9 mt-2\">\r\n <form [formGroup]=\"ChecklistForm\" #formRef>\r\n <div class=\"card px-7\">\r\n <!-- <div class=\"checklist-card py-5\">\r\n <input type=\"text\" class=\"mt-2\" style=\"text-transform: capitalize;\"\r\n placeholder=\"Enter checklist name here\" formControlName=\"checklistName\">\r\n <input type=\"text\" class=\"mt-4\" placeholder=\"Enter checklist description here\"\r\n formControlName=\"checklistDescription\">\r\n </div> -->\r\n <ng-container formArrayName=\"sections\" >\r\n <div class=\"sectionArea mt-5\" *ngFor=\"let section of getSectionFormArray().controls;let i=index;\">\r\n <ng-container [formGroupName]=\"i\">\r\n <div class=\"section d-flex align-items-center justify-content-between\">\r\n \r\n <div class=\"fs-18px fw-bold editablecontent\"><input type=\"text\" class=\"plain-input\"\r\n #sectionName (change)=\"updateInputValue(i,sectionName.value)\"\r\n formControlName=\"name\"></div>\r\n <hr>\r\n <svg class=\"ml-5\" (click)=\"deleteSection(i)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" matTooltip=\"Delete section\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M2.25 4.5H3.75M3.75 4.5H15.75M3.75 4.5V15C3.75 15.3978 3.90804 15.7794 4.18934 16.0607C4.47064 16.342 4.85218 16.5 5.25 16.5H12.75C13.1478 16.5 13.5294 16.342 13.8107 16.0607C14.092 15.7794 14.25 15.3978 14.25 15V4.5H3.75ZM6 4.5V3C6 2.60218 6.15804 2.22064 6.43934 1.93934C6.72064 1.65804 7.10218 1.5 7.5 1.5H10.5C10.8978 1.5 11.2794 1.65804 11.5607 1.93934C11.842 2.22064 12 2.60218 12 3V4.5M7.5 8.25V12.75M10.5 8.25V12.75\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"questionsArea\" *ngIf=\"show === i\">\r\n <ng-container formArrayName=\"questions\">\r\n <div class=\"Question-sec mt-10\"\r\n *ngFor=\"let question of getFormArrayQuestions(i).controls;let j = index;\"\r\n (mouseenter)=\"setActiveQuestion(i,j,1)\"\r\n (mouseleave)=\"setActiveQuestion(i,j,-1)\">\r\n <ng-container [formGroupName]=\"j\">\r\n <span class=\"fs-18px px-3 editablecontent questiontitle\"\r\n style=\"cursor: default;\"> Question {{j+1}}</span>\r\n \r\n <div class=\"checklist-card pb-5\">\r\n <textarea class=\"form-control form-control-solid\" rows=\"1\"\r\n type=\"text\" class=\"mt-0\" [id]=\"'q-' + i + '-' + j\"\r\n placeholder=\"Enter question here\"\r\n formControlName=\"qname\"></textarea>\r\n <ng-container\r\n *ngIf=\"question.get('qname')?.invalid && question.get('qname')?.touched\">\r\n <p style=\"color: red;\"\r\n *ngIf=\"question.get('qname')?.hasError('required')\">*\r\n Question is required.</p>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"row\"\r\n *ngIf=\"!['descriptiveImage','image','multipleImage'].includes(question.get('answerType')?.value)\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"ref_img_cont mb-4 mt-5\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n width=\"100%\" height=\"300px\" class=\"auto-adjust\"\r\n alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\" (click)=\"clearReferenceImage(i,j);\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\" [id]=\"'fileupload_'+i+j\" type=\"file\"\r\n name=\"answerFile\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,-1,'questionReferenceImage')\">\r\n <label [for]=\"'fileupload_'+i+j\" (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-2\"\r\n width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4082_3122\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\" [id]=\"'fileupload_'+i+j\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,-1,'questionReferenceImage')\">\r\n <label class=\"pointer\" [for]=\"'fileupload_'+i+j\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"checklist-card pb-5\">\r\n <select class=\"mt-5\" name=\"selectoption\"\r\n (change)=\"answerTypeSelection(i,j,$event)\"\r\n formControlName=\"answerType\">\r\n <option name=\"descriptive\" value=\"descriptive\">Descriptive\r\n Answer</option>\r\n <option name=\"yes/no\" value=\"yes/no\">A/B Question</option>\r\n <option name=\"multiplechoicesingle\"\r\n value=\"multiplechoicesingle\">Multiple Choice Question -\r\n Single Answer</option>\r\n <option name=\"multiplechoicemultiple\"\r\n value=\"multiplechoicemultiple\">Multiple Choice Question -\r\n Multiple Answer</option>\r\n <option name=\"descriptiveImage\" value=\"descriptiveImage\">Capture\r\n Image with Description</option>\r\n <option name=\"image\" value=\"image\">Capture Image as answer\r\n </option>\r\n <option name=\"video\" value=\"video\">Capture video as answer\r\n </option>\r\n <option name=\"multipleImage\" value=\"multipleImage\">Capture\r\n Multiple Image</option>\r\n <option name=\"date\" value=\"date\">Date - DD/MM/YYYY</option>\r\n <option name=\"linearscale\" value=\"linearscale\">Linear Scale</option>\r\n <option name=\"time\" value=\"time\">Time</option>\r\n </select>\r\n \r\n </div>\r\n <div class=\"col-lg-3 mx-4 d-flex mt-3\" *ngIf=\"['descriptive'].includes(question.get('answerType')?.value)\">\r\n <div class=\"form-check\" >\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"text\" [name]=\"'descriptivetype'\" [id]=\"'inlineRadio0'+ i + j\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio0'+ i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"number\" [name]=\"'descriptivetype'\" [id]=\"'inlineRadio1'+ i + j\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio1'+i + j\">Number</label>\r\n </div>\r\n </div>\r\n <ng-container\r\n *ngIf=\"question.get('answerType')?.value === 'yes/no' || question.get('answerType')?.value === 'multiplechoicesingle' || question.get('answerType')?.value === 'multiplechoicemultiple'\">\r\n <div class=\"fs-18px fw-bolder\" style=\"cursor: default;\">Answer\r\n Options</div>\r\n <ng-container formArrayName=\"answers\">\r\n <ng-container\r\n *ngFor=\"let answer of getFormArrayQuestionsAnswer(i,j,'answers')?.controls;let k = index;\">\r\n <div class=\"row\" [formGroupName]=\"k\">\r\n <ng-container *ngIf=\"!answer.get('isdeleted')?.value\">\r\n <div class=\"col-lg-6 Answer1\">\r\n <div class=\"checklist-card pb-0 mt-5\">\r\n <input type=\"text\" class=\"mt-0\"\r\n placeholder=\"Enter answer here\"\r\n formControlName=\"answer\">\r\n <span class=\"vl\"></span>\r\n <ng-container\r\n *ngIf=\"question.get('answerType')?.value === 'yes/no' || question.get('answerType')?.value === 'multiplechoicesingle'\"\r\n ngDefaultControl>\r\n <span class=\"vl2\"></span>\r\n <svg class=\"imgAdd\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\"\r\n (click)=\"updateLinked(i,j,k)\">\r\n <path\r\n d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\"\r\n stroke=\"#344054\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"answer.get('answer')?.invalid && answer.get('answer')?.touched\">\r\n <p style=\"color: red;\"\r\n *ngIf=\"answer.get('answer')?.hasError('required')\">\r\n * Answer is required.</p>\r\n </ng-container>\r\n <p style=\"color: red;\"\r\n *ngIf=\"answer.get('showSOPFlagError')?.value === true\">\r\n Every answer can\u2019t be a flag.</p>\r\n \r\n <ng-container formControlName=\"sopFlag\"\r\n ngDefaultControl>\r\n \r\n <svg (click)=\"raiseflag(i,j,k,true)\"\r\n matTooltip=\"Raise a flag if this answer is selected\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\"\r\n *ngIf=\"answer.get('sopFlag')?.value === false\"\r\n class=\"kiwi\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M2.66669 10.0007C2.66669 10.0007 3.33335 9.33398 5.33335 9.33398C7.33335 9.33398 8.66669 10.6673 10.6667 10.6673C12.6667 10.6673 13.3334 10.0007 13.3334 10.0007V2.00065C13.3334 2.00065 12.6667 2.66732 10.6667 2.66732C8.66669 2.66732 7.33335 1.33398 5.33335 1.33398C3.33335 1.33398 2.66669 2.00065 2.66669 2.00065V10.0007ZM2.66669 10.0007V14.6673\"\r\n stroke=\"#D0D5DD\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n <svg (click)=\"raiseflag(i,j,k,false)\"\r\n matTooltip=\"Raise a flag if this answer is selected\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\"\r\n *ngIf=\"answer.get('sopFlag')?.value === true\"\r\n class=\"active-flag\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M2.66669 10.0007C2.66669 10.0007 3.33335 9.33398 5.33335 9.33398C7.33335 9.33398 8.66669 10.6673 10.6667 10.6673C12.6667 10.6673 13.3334 10.0007 13.3334 10.0007V2.00065C13.3334 2.00065 12.6667 2.66732 10.6667 2.66732C8.66669 2.66732 7.33335 1.33398 5.33335 1.33398C3.33335 1.33398 2.66669 2.00065 2.66669 2.00065V10.0007ZM2.66669 10.0007V14.6673\"\r\n stroke=\"#D0D5DD\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\"\r\n *ngIf=\"!answer.get('showLinked')?.value\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"d-flex answervalidation\">\r\n <input class=\"mt-7\" type=\"checkbox\"\r\n style=\"width:16px;height:16px;cursor: pointer;\"\r\n value=\"1\"\r\n (change)=\"getvalidation(i,j,k,$event)\"\r\n formControlName=\"validation\">\r\n <div class=\"chackbox pt-4 mt-2 mx-2\"\r\n style=\"cursor: default;\">\r\n <h3>Validate response</h3>\r\n <p class=\"mb-0\">Trigger an action\r\n for each response to validate it\r\n </p>\r\n </div>\r\n </div>\r\n <svg *ngIf=\"question.get('answerType')?.value !== 'yes/no' && getFormArrayQuestionsAnswer(i,j,'answers').value.length > 2\"\r\n (click)=\"deleteAnswer(i,j,k)\"\r\n class=\"mt-8\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n matTooltip=\"Delete answer\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M15 5L5 15M5 5L15 15\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n \r\n </div>\r\n <!-- *ngIf=\"moreqn.validation\" -->\r\n <div *ngIf=\"answer.get('validation')?.value\"\r\n class=\"row\">\r\n <div class=\"col-lg-3 pt-7 fs-4 fw-400 mt-1\">\r\n If the response is this, then\r\n </div>\r\n <div class=\"col-lg-3\">\r\n <select class=\"mt-5 mx-1\"\r\n formControlName=\"validationType\"\r\n (change)=\"updateValidationType($event,i,j,k)\">\r\n <option>Descriptive Answer</option>\r\n <option>Capture Image</option>\r\n <option>Capture Video</option>\r\n </select>\r\n </div>\r\n <div class=\"col-lg-3 mx-4 d-flex pt-8\" *ngIf=\"answer.get('validationType')?.value === 'Descriptive Answer'\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio2' + i + j + k\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio2' + i + j + k\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio3'+ i + j + k\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio3' + i + j + k\">Number</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\"\r\n *ngIf=\"answer.get('showLinked')?.value\">\r\n <div class=\"col-lg-3 pt-7 fs-4 fw-400 mt-1\">\r\n Linked Question\r\n </div>\r\n <div class=\"col-lg-9\">\r\n <select [id]=\"i+'-'+k\" [name]=\"i+'-'+k\" class=\"mt-5\" (change)=\"updateQuestionType(i,j,k,$event)\">\r\n <option value=\"\">Select Question</option>\r\n <option *ngFor=\"let option of getQuestionList(i,j,k)\" [value]=\"option\"\r\n [selected]=\"selectOption(option,answer.get('linkedQuestion')?.value)\">Question {{option}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"row\"\r\n *ngIf=\"answer.get('validation')?.value && answer.get('validationType')?.value === 'Capture Image'\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"ref_img_cont mb-4 mt-5\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n width=\"100%\" height=\"300px\"\r\n class=\"auto-adjust\" alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\"\r\n (click)=\"clearReferenceImage(i,j,k);\">\r\n <svg width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\"\r\n [id]=\"'fileupload_'+i+j+k\"\r\n type=\"file\" name=\"answerFile\"\r\n accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,k)\">\r\n <label [for]=\"'fileupload_'+i+j+k\"\r\n (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mx-2\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g\r\n clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath\r\n id=\"clip0_4082_3122\">\r\n <rect width=\"20\"\r\n height=\"20\"\r\n fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\"\r\n [id]=\"'fileupload_'+i+j+k\"\r\n type=\"file\" name=\"file\"\r\n accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,k)\">\r\n <label class=\"pointer\"\r\n [for]=\"'fileupload_'+i+j+k\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n <div\r\n class=\"col-lg-4 form-check form-switch mx-2 btn-sec mt-6 text-left align-items-center\">\r\n <input\r\n class=\"form-check-input mx-0 pointer\"\r\n type=\"checkbox\" name=\"toc\" value=\"1\"\r\n ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n Allow upload from gallery\r\n </div>\r\n <div class=\"col-lg-2\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"question.get('answers')?.hasError('duplicateString')\" class=\"text-danger mt-2\">* Same answer cannot be\r\n repeated</div>\r\n <ng-container class=\"row\"\r\n *ngIf=\"(question.get('answerType')?.value === 'multiplechoicemultiple' || \r\n question.get('answerType')?.value === 'multiplechoicesingle') && \r\n allowAddAnswer(question.get('answers')?.value)\">\r\n <div (click)=\"AddMoreAns(i,j,question.get('answerType')?.value)\"\r\n class=\"btn col-lg-12 btn-light-primary my-3\">\r\n Add More Answer</div>\r\n </ng-container>\r\n \r\n </ng-container>\r\n </ng-container>\r\n \r\n <!-- Image -->\r\n <ng-container\r\n *ngIf=\"['image','descriptiveImage','multipleImage'].includes(question.get('answerType')?.value)\"\r\n class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"ref_img_cont mb-4\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n width=\"100%\" height=\"300px\" class=\"auto-adjust\"\r\n alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\"\r\n (click)=\"clearReferenceImage(i,j);\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\" id=\"fileupload\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event)\">\r\n <label for=\"fileupload\" (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-2\"\r\n width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4082_3122\">\r\n <rect width=\"20\" height=\"20\"\r\n fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\" id=\"fileupload\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event)\">\r\n <label class=\"pointer\" for=\"fileupload\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n <div\r\n class=\"col-lg-4 form-check form-switch mx-2 btn-sec mt-6 text-left align-items-center\">\r\n <input class=\"form-check-input mx-0 pointer\"\r\n type=\"checkbox\" name=\"toc\" value=\"1\"\r\n ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n Allow upload from gallery\r\n </div>\r\n <div\r\n [ngClass]=\"(['multipleImage'].includes(question.get('answerType')?.value) && getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value === '') ? 'col-lg-4 mt-6' : ['image'].includes(question.get('answerType')?.value) ? 'col-lg-2' : ''\">\r\n <div class=\"d-flex\" *ngIf=\"(['multipleImage'].includes(question.get('answerType')?.value) && getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value === '')\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio4' + i + j\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio4' + i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio5' + i + j\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio5' + i + j\">Number</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value && ['image','multipleImage'].includes(question.get('answerType')?.value)\"\r\n [ngClass]=\"question.get('answerType')?.value === 'multipleImage' ? 'col-lg-5 d-flex mt-6' : 'col-lg-3 d-flex justify-content-center align-items-center mt-2'\">\r\n <div class=\"d-flex\" *ngIf=\"question.get('answerType')?.value === 'multipleImage'\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio6' + i + j\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio6' + i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio6' + i + j\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio6' + i + j\">Number</label>\r\n </div>\r\n </div>\r\n <h3 class=\"fs16-600 px-12\"> Run AI \u2728</h3>\r\n <div class=\"form-check form-switch align-items-center btn-sec ml-5\"\r\n (click)=\"RunAI(i,j)\">\r\n <input class=\"form-check-input\" type=\"checkbox\"\r\n formControlName=\"runAI\" name=\"toc\" value=\"1\">\r\n <label class=\"form-check-label\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n </div>\r\n <svg [ngClass]=\"question.get('answerType')?.value === 'multipleImage' ? 'mt-1' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n matTooltip=\"Enable AI where you want tango to identify, track and alert instances.\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\">\r\n <g clip-path=\"url(#clip0_2301_100038)\">\r\n <path\r\n d=\"M7.99967 10.6654V7.9987M7.99967 5.33203H8.00634M14.6663 7.9987C14.6663 11.6806 11.6816 14.6654 7.99967 14.6654C4.31778 14.6654 1.33301 11.6806 1.33301 7.9987C1.33301 4.3168 4.31778 1.33203 7.99967 1.33203C11.6816 1.33203 14.6663 4.3168 14.6663 7.9987Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2301_100038\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n <!-- Video -->\r\n <ng-container *ngIf=\"question.get('answerType')?.value === 'video'\"\r\n class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div\r\n class=\" col-lg-4 form-check form-switch text-left align-items-center btn-sec mt-2\">\r\n <input class=\"form-check-input mx-0 pointer\" type=\"checkbox\"\r\n name=\"toc\" value=\"1\" ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\">Allow upload from gallery</label>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- <ng-container *ngIf=\"question.get('answerType')?.value === 'time'\" class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div class=\" col-lg-4 btn-sec mt-2\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\" type=\"time\" name=\"time\" ngDefaultControl formControlName=\"answer\">\r\n </div>\r\n </ng-container>\r\n </ng-container> -->\r\n\r\n <ng-container *ngIf=\"question.get('answerType')?.value === 'linearscale'\">\r\n <ng-container formGroupName=\"answers\">\r\n <div class=\"d-flex\">\r\n <div class=\"btn-sec mt-2 me-3\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-100px\" type=\"number\" name=\"start\" ngDefaultControl formControlName=\"rangeStart\"> \r\n </div>\r\n <div class=\"btn-sec mt-5\">\r\n <span class=\"fs-16px\">to</span>\r\n </div>\r\n <div class=\" btn-sec mt-2 ms-3\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-100px\" type=\"number\" name=\"start\" ngDefaultControl formControlName=\"rangeEnd\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n <div class=\"d-flex justify-content-end py-2\">\r\n <div class=\"pt-1\">\r\n <svg (click)=\"cloneQuestion(i,j)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n matTooltip=\"Duplicate\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_3385_10578)\">\r\n <path\r\n d=\"M4.16663 12.4993H3.33329C2.89127 12.4993 2.46734 12.3238 2.15478 12.0112C1.84222 11.6986 1.66663 11.2747 1.66663 10.8327V3.33268C1.66663 2.89065 1.84222 2.46673 2.15478 2.15417C2.46734 1.84161 2.89127 1.66602 3.33329 1.66602H10.8333C11.2753 1.66602 11.6992 1.84161 12.0118 2.15417C12.3244 2.46673 12.5 2.89065 12.5 3.33268V4.16602M9.16663 7.49935H16.6666C17.5871 7.49935 18.3333 8.24554 18.3333 9.16602V16.666C18.3333 17.5865 17.5871 18.3327 16.6666 18.3327H9.16663C8.24615 18.3327 7.49996 17.5865 7.49996 16.666V9.16602C7.49996 8.24554 8.24615 7.49935 9.16663 7.49935Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3385_10578\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg (click)=\"deleteQuestion(i,j)\"\r\n style=\"margin-left: 24px !important;\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n matTooltip=\"Delete question\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M2.5 4.99935H4.16667M4.16667 4.99935H17.5M4.16667 4.99935V16.666C4.16667 17.108 4.34226 17.532 4.65482 17.8445C4.96738 18.1571 5.39131 18.3327 5.83333 18.3327H14.1667C14.6087 18.3327 15.0326 18.1571 15.3452 17.8445C15.6577 17.532 15.8333 17.108 15.8333 16.666V4.99935H4.16667ZM6.66667 4.99935V3.33268C6.66667 2.89065 6.84226 2.46673 7.15482 2.15417C7.46738 1.84161 7.89131 1.66602 8.33333 1.66602H11.6667C12.1087 1.66602 12.5326 1.84161 12.8452 2.15417C13.1577 2.46673 13.3333 2.89065 13.3333 3.33268V4.99935M8.33333 9.16602V14.166M11.6667 9.16602V14.166\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div>\r\n <div class=\"row mx-0\">\r\n <div class=\"col-lg-6 px-0\" *ngIf=\"ChecklistForm.get('sections')\">\r\n <div class=\"checklist-card py-7 text-center\">\r\n <div (click)=\"addNewQuestion(sectionIndex)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\" class=\"mt-2 btn-sec pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> Add New Question</div>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 pl-5\">\r\n <div class=\"checklist-card py-7 text-center\">\r\n <div (click)=\"addNewSection()\" class=\"mt-2 px-0 btn-sec pointer\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> Add New Section</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>", styles: [".checklist-card div,input[type=text]:not(.plain-input),input[type=time],input[type=number],select{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;line-height:24px}.checklist-card input{padding-right:20%}.card{border-radius:16px}.row>*{padding-right:0}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}input[type=checkbox]:focus{border:none!important;outline:none!important;box-shadow:none!important}input:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}select{-webkit-appearance:none!important;-moz-appearance:none!important;height:45px;width:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAMAAACtdX32AAAAdVBMVEUAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhMdQaAAAAJ3RSTlMAAAECAwQGBwsOFBwkJTg5RUZ4eYCHkJefpaytrsXGy8zW3+Do8vNn0bsyAAAAYElEQVR42tXROwJDQAAA0Ymw1p9kiT+L5P5HVEi3qJn2lcPjtIuzUIJ/rhIGy762N3XaThqMN1ZPALsZPEzG1x8LrFL77DHBnEMxBewz0fJ6LyFHTPL7xhwzWYrJ9z22AqmQBV757MHfAAAAAElFTkSuQmCC);background-position:100%;background-repeat:no-repeat}select:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}textarea:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}textarea,select{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;line-height:24px}.btn-outline{border:1px solid lightgrey;padding:calc(.75rem + 1px) calc(1.5rem + 1px)}.btn-light-primary{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.newbutton{border:1px solid lightgrey;padding:calc(.75rem + 1px) calc(1.5rem + 1px);color:#000;background-color:#fff}.newbutton:hover,.newbutton:active{background-color:#009bf3;color:#fff}.btn.btn-light-primary:hover:not(.btn-active),.btn-light-primary:active{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;outline:none!important;background-color:#d1f0ff82!important}.ml-5{margin-left:10px}.pl-5{padding-left:10px!important}.btn-left{display:inline-block;width:100%;font-size:16px;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important}.card hr{width:-webkit-fill-available}.card{height:100%!important}.rotate{transform:rotate(180deg);transition:1s}.hidesec{visibility:hidden;opacity:.1;transition:1s}.fs-16px{font-size:16px}.card svg{margin-left:5px!important;cursor:pointer}.form-switch,.form-check-label{padding-left:5px!important}.webkitwidth{width:-webkit-fill-available}.fs-18px{font-size:18px;color:var(--black, #000);font-family:inter}.Answer1 .checklist-card,.Answer2 .checklist-card{position:relative}.Answer1 svg,.Answer2 svg{position:absolute;top:15px;right:15px}.Answer1 .imgAdd,.Answer2 .imgAdd{position:absolute;top:13px!important;right:57px!important}.Answer1 .flag,.Answer2 .flag{color:red!important}.Answer1 .flag>.flag-path,.Answer2 .flag>.flag-path{fill:red!important;stroke:red}.Answer1 .vl,.Answer2 .vl{position:absolute;top:1px;right:45px;border-left:1px solid #D0D5DD;height:43px}.Answer1 .vl2,.Answer2 .vl2{position:absolute;top:1px;right:90px;border-left:1px solid #D0D5DD;height:43px}.Answer1 svg:hover,.Answer2 svg:hover{fill:#d0d5dd!important}.editablecontent{display:inline-block;max-width:60ch;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.editablecontent-left{display:inline-block;width:180px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}[contenteditable]{outline:0px solid transparent}.min-width-popup{min-width:46%!important}.max-w-128px{max-width:128px}.fw-600{font-weight:600!important}.fw-400{font-weight:400}.footer1 span{color:#000;font-family:inter;font-size:14px;font-weight:500px;line-height:20px}.footer1 a{font-family:inter;font-size:14px;font-weight:600;text-decoration:underline;color:var(--primary-700, #009BF3)}.footer1 a:hover{color:var(--primary-700, #009BF3);text-decoration-line:underline!important;text-decoration-thickness:1px!important}.btn-sec{color:var(--gray-700, #344054)!important;font-family:Inter;font-size:14px;font-style:normal;font-weight:500!important;line-height:24px}.question-left{max-height:63vh;overflow:auto;overflow-x:hidden}.Question-sec{position:relative;border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--gray-50, #F9FAFB);width:100%;padding:24px 16px 16px}.Question-sec .questiontitle{position:absolute;top:-15px;background-color:#fff;border:1px solid var(--gray-300, #D0D5DD)!important;border-radius:8px}.Question-sec h3{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;margin-bottom:0!important}.Question-sec .fs16-600{font-size:14px;font-style:normal;font-weight:600;line-height:20px}.Question-sec p{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.swal2-confirm{font-family:Inter!important;font-size:30px!important;background-color:var(--white, #FFF)!important;border:solid var(--gray-300, #D0D5DD)!important}.Overlay{top:0;left:0;width:100%;height:100%;z-index:200!important;position:fixed;background:#58575799}.popup{position:absolute;top:50%;left:50%;opacity:1;transform:translate(-50%,-50%);background:var(--white, #FFF);border-radius:12px!important;border-radius:12px;box-shadow:0 8px 8px -4px #10182808,0 20px 24px -4px #10182814;padding:30px;width:400px;height:fit-content}.kiwi:hover{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi:hover path{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi{fill:#fff!important;stroke:#d0d5dd!important}.kiwi path{fill:#fff!important;stroke:#d0d5dd!important}.kiwi:active{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi:active path{fill:#d0d5dd!important;stroke:#d0d5dd!important}.active-flag{fill:red!important;stroke:red!important}.active-flag path{fill:red!important;stroke:red!important}.active-flag:active{fill:red!important;stroke:red!important}.active-flag:active path{fill:red!important;stroke:red!important}.toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.ref_del_icon{position:absolute;top:24px;right:24px;transform:translate(50%,-50%);padding:6px;border-radius:8px;border:1px solid var(--error-50, #FEF3F2);background:var(--error-50, #FEF3F2);box-shadow:0 1px 2px #1018280d}.ref_del_icon svg{margin:0!important}.ref_img_cont{position:relative}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast{border-left:4px solid #009EF7}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .custom-test{color:var(--gray-700, #344054)!important;text-align:start;font-family:Inter;font-size:12px;font-style:normal;border-radius:8px;box-shadow:0 4px 6px -2px #10182808,0 12px 16px -4px #10182814;font-weight:600;line-height:18px;background:#fff}.text-gray-700{color:#344054!important}.mandatoryfield input,.answervalidation input{border:none;padding:0!important}.mandatoryfield input[type=checkbox],.answervalidation input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.mandatoryfield input[type=checkbox]:checked,.answervalidation input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.mandatoryfield input[type=checkbox]:checked:after,.answervalidation input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.concise-checklistname{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-transform:capitalize}.concise-question{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-align:left}.active-question{color:var(--primary-700, #009BF3);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, #EAF8FF)}.q-btn{color:var(--gray-700, #344054);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, white)}.pointer{cursor:pointer}select option{padding:4px}.add-ref-btn{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;padding:14px 0!important}::ng-deep .form-switch .form-check-input{border:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(255, 255, 255, 1)'/%3E%3C/svg%3E\")!important}::ng-deep .form-switch .form-check-input:not(:checked){background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(255, 255, 255, 1)'/%3E%3C/svg%3E\")!important;background-color:var(--gray-100, #F2F4F7)!important}.plain-input{border:none;outline:none;background:transparent;padding:0;margin:0;width:100%;overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.plain-input:focus{border-radius:0!important;border:white!important;outline:none!important;box-shadow:none!important}.auto-adjust{max-width:100%;max-height:100%;object-fit:contain;background-color:#fff}.createbuttons{padding:10px 18px;justify-content:center;align-items:center;gap:8px;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.create{color:var(--white, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.savedraft{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);padding:10px 18px;justify-content:center;align-items:center;gap:8px;box-shadow:0 1px 2px #1018280d}.savedraft:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.savedrafttext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize}.questionsArea{overflow-y:scroll;padding:4px}::ng-deep .questionsArea::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:var(--gray-100, #eaeaea)!important;height:50px!important}::ng-deep .questionsArea::-webkit-scrollbar{width:10px!important}::ng-deep .questionsArea::-webkit-scrollbar-track{background:none!important;box-shadow:none!important}::ng-deep .swal2-html-container{overflow:hidden!important}.ansoptions{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checklist{font-family:Inter;font-size:20px;font-weight:600;line-height:28px;text-align:left;color:#667085!important}.checklistDescription{font-family:Inter;font-size:14px;font-weight:400;line-height:18px;text-align:left}.dscriptiveType{font-size:15px!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"] }]
|
|
1520
|
+
args: [{ selector: 'lib-add-checklist', template: "<div class=\"card\" *ngIf=\"checklistLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div *ngIf=\"!checklistLoading\">\r\n <div class=\"card\">\r\n <ng-container [formGroup]=\"ChecklistForm\">\r\n <div class=\"card-header border-0 pt-3 pb-3\">\r\n <div class=\"row w-100\">\r\n <div class=\"col-md-9\">\r\n <h3 class=\"card-title align-items-center mt-3 mb-0\">\r\n <div routerLink=\"/manage/trax/checklist\" class=\"btn btn-sm btn-outline me-5 ps-2 px-3\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M15.8332 10.0003H4.1665M4.1665 10.0003L9.99984 15.8337M4.1665 10.0003L9.99984 4.16699\" stroke=\"#344054\" stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg></div>\r\n <div class=\"flex-column w-800px\">\r\n <div class=\"editablecontent mb-4 w-100\"><input type=\"text\" class=\"checklist plain-input\" #checklistName placeholder=\"Enter Checklist Name\" formControlName=\"checklistName\"></div>\r\n <div class=\"editablecontent w-100\"><input type=\"text\" class=\"checklistDescription plain-input\" #checklistDescription placeholder=\"Enter Checklist Description\" formControlName=\"checklistDescription\"></div>\r\n </div>\r\n </h3>\r\n </div>\r\n <div class=\"col-md-3\">\r\n <div class=\"d-flex my-6 justify-content-end\">\r\n <div class=\"d-flex align-items-center position-relative my-1\">\r\n <button type=\"button\" class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'add'\" (click)=\"saveChecklistQuestions('configure')\"><span class=\"ms-2\">Configure</span>\r\n </button>\r\n \r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'add'\" (click)=\"saveAsDraftPop('create')\"><span class=\"ms-2\">Save as Draft</span> </button>\r\n \r\n <button type=\"button\" class=\"btn btn-primary mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'edit'\" (click)=\"updateChecklistQuestions('configure')\"><span class=\"ms-2\">Configure</span>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-default mx-2 btn-outline btn-outline-default rounded-3 text-nowrap border-val\"\r\n *ngIf=\"showvalue === 'edit'\" (click)=\"saveAsDraftPop('update')\"><span class=\"ms-2\">Save as Draft</span>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"row\">\r\n <div class=\"col-lg-3 mt-2\">\r\n <ng-container [formGroup]=\"ChecklistForm\">\r\n <div class=\"section-left card px-7 py-7\">\r\n <div class=\"fs-18px fw-600 text-left mb-3 concise-checklistname\">\r\n {{getFormControl('checklistName').value ? getFormControl('checklistName').value : 'ChecklistName'}}\r\n </div>\r\n <div class=\"left-panel-container\" formArrayName=\"sections\">\r\n <div *ngFor=\"let section of getSectionFormArray().controls;let i=index;\">\r\n <ng-container [formGroupName]=\"i\">\r\n <div class=\"d-flex section align-items-center justify-content-between\">\r\n <div class=\"fs-18px fw-bold editablecontent-left\">{{\r\n getSectionFormControl(i,'name')?.value === '' ? \"Section \" : ''}}{{\r\n getSectionFormControl(i,'name')?.value ? getSectionFormControl(i,'name')?.value\r\n : getSectionFormControl(i,'sectionNumber')?.value}}</div>\r\n <hr class=\"mx-2\">\r\n <svg (click)=\"deleteSection(i)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"35\"\r\n height=\"35\" viewBox=\"0 0 18 18\" matTooltip=\"Delete section\"\r\n matTooltipPosition=\"above\" matTooltipClass=\"custom-test\" fill=\"none\">\r\n <path\r\n d=\"M2.25 4.5H3.75M3.75 4.5H15.75M3.75 4.5V15C3.75 15.3978 3.90804 15.7794 4.18934 16.0607C4.47064 16.342 4.85218 16.5 5.25 16.5H12.75C13.1478 16.5 13.5294 16.342 13.8107 16.0607C14.092 15.7794 14.25 15.3978 14.25 15V4.5H3.75ZM6 4.5V3C6 2.60218 6.15804 2.22064 6.43934 1.93934C6.72064 1.65804 7.10218 1.5 7.5 1.5H10.5C10.8978 1.5 11.2794 1.65804 11.5607 1.93934C11.842 2.22064 12 2.60218 12 3V4.5M7.5 8.25V12.75M10.5 8.25V12.75\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"35\" height=\"35\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <ng-container *ngIf=\"show===i\">\r\n <div cdkDropList (cdkDropListDropped)=\"dragDrop(i,$event)\"\r\n [cdkDropListData]=\"getFormArrayQuestions(i).controls\" class=\"question-left\">\r\n <ng-container formArrayName=\"questions\">\r\n <div *ngFor=\"let question of getFormArrayQuestions(i).controls;let j=index;\"\r\n class=\"my-2 cursor-pointer\"\r\n [ngClass]=\"question.get('active')?.value === true ? 'active-question' : 'q-btn'\"\r\n cdkDrag (mouseenter)=\"setActiveQuestion(i,j,1)\"\r\n (click)=\"scrollToQuestion(i,j);\"\r\n (mouseleave)=\"setActiveQuestion(i,j,-1)\">\r\n <ng-container [formGroupName]=\"j\">\r\n <div class=\"concise-question\">\r\n {{getQuestionFormControl(i,j,'qname')?.value ? '' : \"Question\"}}{{ getQuestionFormControl(i,j,'qname')?.value ?\r\n getQuestionFormControl(i,j,'qname')?.value :\r\n getQuestionFormControl(i,j,'qno')?.value }}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"col-lg-9 mt-2\">\r\n <form [formGroup]=\"ChecklistForm\" #formRef>\r\n <div class=\"card px-7\">\r\n <!-- <div class=\"checklist-card py-5\">\r\n <input type=\"text\" class=\"mt-2\" style=\"text-transform: capitalize;\"\r\n placeholder=\"Enter checklist name here\" formControlName=\"checklistName\">\r\n <input type=\"text\" class=\"mt-4\" placeholder=\"Enter checklist description here\"\r\n formControlName=\"checklistDescription\">\r\n </div> -->\r\n <ng-container formArrayName=\"sections\" >\r\n <div class=\"sectionArea mt-5\" *ngFor=\"let section of getSectionFormArray().controls;let i=index;\">\r\n <ng-container [formGroupName]=\"i\">\r\n <div class=\"section d-flex align-items-center justify-content-between\">\r\n \r\n <div class=\"fs-18px fw-bold editablecontent\"><input type=\"text\" class=\"plain-input\"\r\n #sectionName (change)=\"updateInputValue(i,sectionName.value)\"\r\n formControlName=\"name\"></div>\r\n <hr>\r\n <svg class=\"ml-5\" (click)=\"deleteSection(i)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\" matTooltip=\"Delete section\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 18 18\" fill=\"none\">\r\n <path\r\n d=\"M2.25 4.5H3.75M3.75 4.5H15.75M3.75 4.5V15C3.75 15.3978 3.90804 15.7794 4.18934 16.0607C4.47064 16.342 4.85218 16.5 5.25 16.5H12.75C13.1478 16.5 13.5294 16.342 13.8107 16.0607C14.092 15.7794 14.25 15.3978 14.25 15V4.5H3.75ZM6 4.5V3C6 2.60218 6.15804 2.22064 6.43934 1.93934C6.72064 1.65804 7.10218 1.5 7.5 1.5H10.5C10.8978 1.5 11.2794 1.65804 11.5607 1.93934C11.842 2.22064 12 2.60218 12 3V4.5M7.5 8.25V12.75M10.5 8.25V12.75\"\r\n stroke=\"#667085\" stroke-width=\"1.4\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg (click)=\"accordian(i)\" [ngClass]=\"{'rotate' : show !== i}\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M5 7.5L10 12.5L15 7.5\" stroke=\"#667085\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"questionsArea\" *ngIf=\"show === i\">\r\n <ng-container formArrayName=\"questions\">\r\n <div class=\"Question-sec mt-10\"\r\n *ngFor=\"let question of getFormArrayQuestions(i).controls;let j = index;\"\r\n (mouseenter)=\"setActiveQuestion(i,j,1)\"\r\n (mouseleave)=\"setActiveQuestion(i,j,-1)\">\r\n <ng-container [formGroupName]=\"j\">\r\n <span class=\"fs-18px px-3 editablecontent questiontitle\"\r\n style=\"cursor: default;\"> Question {{j+1}}</span>\r\n \r\n <div class=\"checklist-card pb-5\">\r\n <textarea class=\"form-control form-control-solid\" rows=\"1\"\r\n type=\"text\" class=\"mt-0\" [id]=\"'q-' + i + '-' + j\"\r\n placeholder=\"Enter question here\"\r\n formControlName=\"qname\"></textarea>\r\n <ng-container\r\n *ngIf=\"question.get('qname')?.invalid && question.get('qname')?.touched\">\r\n <p style=\"color: red;\"\r\n *ngIf=\"question.get('qname')?.hasError('required')\">*\r\n Question is required.</p>\r\n </ng-container>\r\n </div>\r\n \r\n <div class=\"row\"\r\n *ngIf=\"!['descriptiveImage','image','multipleImage'].includes(question.get('answerType')?.value)\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"ref_img_cont mb-4 mt-5\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n width=\"100%\" height=\"300px\" class=\"auto-adjust\"\r\n alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\" (click)=\"clearReferenceImage(i,j);\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\" [id]=\"'fileupload_'+i+j\" type=\"file\"\r\n name=\"answerFile\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,-1,'questionReferenceImage')\">\r\n <label [for]=\"'fileupload_'+i+j\" (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-2\"\r\n width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4082_3122\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'questionReferenceImage')?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\" [id]=\"'fileupload_'+i+j\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,-1,'questionReferenceImage')\">\r\n <label class=\"pointer\" [for]=\"'fileupload_'+i+j\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"checklist-card pb-5\">\r\n <select class=\"mt-5\" name=\"selectoption\"\r\n (change)=\"answerTypeSelection(i,j,$event)\"\r\n formControlName=\"answerType\">\r\n <option name=\"descriptive\" value=\"descriptive\">Descriptive\r\n Answer</option>\r\n <option name=\"yes/no\" value=\"yes/no\">A/B Question</option>\r\n <option name=\"multiplechoicesingle\"\r\n value=\"multiplechoicesingle\">Multiple Choice Question -\r\n Single Answer</option>\r\n <option name=\"multiplechoicemultiple\"\r\n value=\"multiplechoicemultiple\">Multiple Choice Question -\r\n Multiple Answer</option>\r\n <option name=\"descriptiveImage\" value=\"descriptiveImage\">Capture\r\n Image with Description</option>\r\n <option name=\"image\" value=\"image\">Capture Image as answer\r\n </option>\r\n <option name=\"video\" value=\"video\">Capture video as answer\r\n </option>\r\n <option name=\"multipleImage\" value=\"multipleImage\">Capture\r\n Multiple Image</option>\r\n <option name=\"date\" value=\"date\">Date - DD/MM/YYYY</option>\r\n <option name=\"linearscale\" value=\"linearscale\">Linear Scale</option>\r\n <option name=\"time\" value=\"time\">Time</option>\r\n </select>\r\n \r\n </div>\r\n <div class=\"col-lg-3 mx-4 d-flex mt-3\" *ngIf=\"['descriptive'].includes(question.get('answerType')?.value)\">\r\n <div class=\"form-check\" >\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"text\" [name]=\"'descriptivetype'\" [id]=\"'inlineRadio0'+ i + j\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio0'+ i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" value=\"number\" [name]=\"'descriptivetype'\" [id]=\"'inlineRadio1'+ i + j\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio1'+i + j\">Number</label>\r\n </div>\r\n </div>\r\n <ng-container\r\n *ngIf=\"question.get('answerType')?.value === 'yes/no' || question.get('answerType')?.value === 'multiplechoicesingle' || question.get('answerType')?.value === 'multiplechoicemultiple'\">\r\n <div class=\"fs-18px fw-bolder\" style=\"cursor: default;\">Answer\r\n Options</div>\r\n <ng-container formArrayName=\"answers\">\r\n <ng-container\r\n *ngFor=\"let answer of getFormArrayQuestionsAnswer(i,j,'answers')?.controls;let k = index;\">\r\n <div class=\"row\" [formGroupName]=\"k\">\r\n <ng-container *ngIf=\"!answer.get('isdeleted')?.value\">\r\n <div class=\"col-lg-6 Answer1\">\r\n <div class=\"checklist-card pb-0 mt-5\">\r\n <input type=\"text\" class=\"mt-0\"\r\n placeholder=\"Enter answer here\"\r\n formControlName=\"answer\">\r\n <span class=\"vl\"></span>\r\n <ng-container\r\n *ngIf=\"question.get('answerType')?.value === 'yes/no' || question.get('answerType')?.value === 'multiplechoicesingle'\"\r\n ngDefaultControl>\r\n <span class=\"vl2\"></span>\r\n <svg class=\"imgAdd\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\"\r\n (click)=\"updateLinked(i,j,k)\">\r\n <path\r\n d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\"\r\n stroke=\"#344054\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-container>\r\n <ng-container\r\n *ngIf=\"answer.get('answer')?.invalid && answer.get('answer')?.touched\">\r\n <p style=\"color: red;\"\r\n *ngIf=\"answer.get('answer')?.hasError('required')\">\r\n * Answer is required.</p>\r\n </ng-container>\r\n <p style=\"color: red;\"\r\n *ngIf=\"answer.get('showSOPFlagError')?.value === true\">\r\n Every answer can\u2019t be a flag.</p>\r\n \r\n <ng-container formControlName=\"sopFlag\"\r\n ngDefaultControl>\r\n \r\n <svg (click)=\"raiseflag(i,j,k,true)\"\r\n matTooltip=\"Raise a flag if this answer is selected\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\"\r\n *ngIf=\"answer.get('sopFlag')?.value === false\"\r\n class=\"kiwi\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M2.66669 10.0007C2.66669 10.0007 3.33335 9.33398 5.33335 9.33398C7.33335 9.33398 8.66669 10.6673 10.6667 10.6673C12.6667 10.6673 13.3334 10.0007 13.3334 10.0007V2.00065C13.3334 2.00065 12.6667 2.66732 10.6667 2.66732C8.66669 2.66732 7.33335 1.33398 5.33335 1.33398C3.33335 1.33398 2.66669 2.00065 2.66669 2.00065V10.0007ZM2.66669 10.0007V14.6673\"\r\n stroke=\"#D0D5DD\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n \r\n <svg (click)=\"raiseflag(i,j,k,false)\"\r\n matTooltip=\"Raise a flag if this answer is selected\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\"\r\n *ngIf=\"answer.get('sopFlag')?.value === true\"\r\n class=\"active-flag\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"16\" height=\"16\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M2.66669 10.0007C2.66669 10.0007 3.33335 9.33398 5.33335 9.33398C7.33335 9.33398 8.66669 10.6673 10.6667 10.6673C12.6667 10.6673 13.3334 10.0007 13.3334 10.0007V2.00065C13.3334 2.00065 12.6667 2.66732 10.6667 2.66732C8.66669 2.66732 7.33335 1.33398 5.33335 1.33398C3.33335 1.33398 2.66669 2.00065 2.66669 2.00065V10.0007ZM2.66669 10.0007V14.6673\"\r\n stroke=\"#D0D5DD\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6\"\r\n *ngIf=\"!answer.get('showLinked')?.value\">\r\n <div class=\"d-flex justify-content-between\">\r\n <div class=\"d-flex answervalidation\">\r\n <input class=\"mt-7\" type=\"checkbox\"\r\n style=\"width:16px;height:16px;cursor: pointer;\"\r\n value=\"1\"\r\n (change)=\"getvalidation(i,j,k,$event)\"\r\n formControlName=\"validation\">\r\n <div class=\"chackbox pt-4 mt-2 mx-2\"\r\n style=\"cursor: default;\">\r\n <h3>Validate response</h3>\r\n <p class=\"mb-0\">Trigger an action\r\n for each response to validate it\r\n </p>\r\n </div>\r\n </div>\r\n <svg *ngIf=\"question.get('answerType')?.value !== 'yes/no' && getFormArrayQuestionsAnswer(i,j,'answers').value.length > 2\"\r\n (click)=\"deleteAnswer(i,j,k)\"\r\n class=\"mt-8\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n matTooltip=\"Delete answer\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path d=\"M15 5L5 15M5 5L15 15\"\r\n stroke=\"#667085\"\r\n stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n \r\n </div>\r\n <!-- *ngIf=\"moreqn.validation\" -->\r\n <div *ngIf=\"answer.get('validation')?.value\"\r\n class=\"row\">\r\n <div class=\"col-lg-3 pt-7 fs-4 fw-400 mt-1\">\r\n If the response is this, then\r\n </div>\r\n <div class=\"col-lg-3\">\r\n <select class=\"mt-5 mx-1\"\r\n formControlName=\"validationType\"\r\n (change)=\"updateValidationType($event,i,j,k)\">\r\n <option>Descriptive Answer</option>\r\n <option>Capture Image</option>\r\n <option>Capture Video</option>\r\n </select>\r\n </div>\r\n <div class=\"col-lg-3 mx-4 d-flex pt-8\" *ngIf=\"answer.get('validationType')?.value === 'Descriptive Answer'\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio2' + i + j + k\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio2' + i + j + k\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio3'+ i + j + k\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio3' + i + j + k\">Number</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row\"\r\n *ngIf=\"answer.get('showLinked')?.value\">\r\n <div class=\"col-lg-3 pt-7 fs-4 fw-400 mt-1\">\r\n Linked Question\r\n </div>\r\n <div class=\"col-lg-9\">\r\n <select [id]=\"i+'-'+k\" [name]=\"i+'-'+k\" class=\"mt-5\" (change)=\"updateQuestionType(i,j,k,$event)\">\r\n <option value=\"\">Select Question</option>\r\n <option *ngFor=\"let option of getQuestionList(i,j,k)\" [value]=\"option\"\r\n [selected]=\"selectOption(option,answer.get('linkedQuestion')?.value)\">Question {{option}}</option>\r\n </select>\r\n </div>\r\n </div>\r\n <div class=\"row\"\r\n *ngIf=\"answer.get('validation')?.value && answer.get('validationType')?.value === 'Capture Image'\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"ref_img_cont mb-4 mt-5\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n width=\"100%\" height=\"300px\"\r\n class=\"auto-adjust\" alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\"\r\n (click)=\"clearReferenceImage(i,j,k);\">\r\n <svg width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\"\r\n [id]=\"'fileupload_'+i+j+k\"\r\n type=\"file\" name=\"answerFile\"\r\n accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,k)\">\r\n <label [for]=\"'fileupload_'+i+j+k\"\r\n (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"mx-2\" width=\"21\"\r\n height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g\r\n clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath\r\n id=\"clip0_4082_3122\">\r\n <rect width=\"20\"\r\n height=\"20\"\r\n fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'referenceImage',k)?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\"\r\n [id]=\"'fileupload_'+i+j+k\"\r\n type=\"file\" name=\"file\"\r\n accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event,k)\">\r\n <label class=\"pointer\"\r\n [for]=\"'fileupload_'+i+j+k\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\"\r\n stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n <div\r\n class=\"col-lg-4 form-check form-switch mx-2 btn-sec mt-6 text-left align-items-center\">\r\n <input\r\n class=\"form-check-input mx-0 pointer\"\r\n type=\"checkbox\" name=\"toc\" value=\"1\"\r\n ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n Allow upload from gallery\r\n </div>\r\n <div class=\"col-lg-2\"></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div *ngIf=\"question.get('answers')?.hasError('duplicateString')\" class=\"text-danger mt-2\">* Same answer cannot be\r\n repeated</div>\r\n <ng-container class=\"row\"\r\n *ngIf=\"(question.get('answerType')?.value === 'multiplechoicemultiple' || \r\n question.get('answerType')?.value === 'multiplechoicesingle') && \r\n allowAddAnswer(question.get('answers')?.value)\">\r\n <div (click)=\"AddMoreAns(i,j,question.get('answerType')?.value)\"\r\n class=\"btn col-lg-12 btn-light-primary my-3\">\r\n Add More Answer</div>\r\n </ng-container>\r\n \r\n </ng-container>\r\n </ng-container>\r\n \r\n <!-- Image -->\r\n <ng-container\r\n *ngIf=\"['image','descriptiveImage','multipleImage'].includes(question.get('answerType')?.value)\"\r\n class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"ref_img_cont mb-4\">\r\n <img [src]=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n width=\"100%\" height=\"300px\" class=\"auto-adjust\"\r\n alt=\"Tango Eye\" />\r\n <div class=\"ref_del_icon\"\r\n (click)=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? '': clearReferenceImage(i,j);\">\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" [style]=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? 'cursor:default':''\">\r\n <path\r\n d=\"M2.5 5.0013H4.16667M4.16667 5.0013H17.5M4.16667 5.0013V16.668C4.16667 17.11 4.34226 17.5339 4.65482 17.8465C4.96738 18.159 5.39131 18.3346 5.83333 18.3346H14.1667C14.6087 18.3346 15.0326 18.159 15.3452 17.8465C15.6577 17.5339 15.8333 17.11 15.8333 16.668V5.0013H4.16667ZM6.66667 5.0013V3.33464C6.66667 2.89261 6.84226 2.46868 7.15482 2.15612C7.46738 1.84356 7.89131 1.66797 8.33333 1.66797H11.6667C12.1087 1.66797 12.5326 1.84356 12.8452 2.15612C13.1577 2.46868 13.3333 2.89261 13.3333 3.33464V5.0013M8.33333 9.16797V14.168M11.6667 9.16797V14.168\"\r\n stroke=\"#B42318\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"d-flex mb-3\">\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"col-lg-3 btn btn-light-primary mt-2\">\r\n <input class=\"d-none\" id=\"fileupload\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event)\" *ngIf=\"(question.get('answerType')?.value !== 'image' || (question.get('answerType')?.value === 'image' && !question.get('runAIDefault')?.value))\">\r\n <label for=\"fileupload\" (click)=\"refImgQIdx=j;\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-2\"\r\n width=\"21\" height=\"20\" viewBox=\"0 0 21 20\"\r\n fill=\"none\">\r\n <g clip-path=\"url(#clip0_4082_3122)\">\r\n <path\r\n d=\"M19.6667 3.33527V8.33527M19.6667 8.33527H14.6667M19.6667 8.33527L15.8 4.70193C14.9044 3.80586 13.7964 3.15127 12.5793 2.79925C11.3623 2.44722 10.0759 2.40923 8.84025 2.68882C7.60456 2.96841 6.45984 3.55646 5.5129 4.39812C4.56595 5.23977 3.84765 6.30759 3.42501 7.50193M1.33334 16.6686V11.6686M1.33334 11.6686H6.33334M1.33334 11.6686L5.20001 15.3019C6.09563 16.198 7.20365 16.8526 8.42068 17.2046C9.63771 17.5567 10.9241 17.5946 12.1598 17.3151C13.3955 17.0355 14.5402 16.4474 15.4871 15.6058C16.4341 14.7641 17.1524 13.6963 17.575 12.5019\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_4082_3122\">\r\n <rect width=\"20\" height=\"20\"\r\n fill=\"white\"\r\n transform=\"translate(0.5)\" />\r\n </clipPath>\r\n </defs>\r\n </svg>Reupload Image</label>\r\n </div>\r\n <div *ngIf=\"!getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value\"\r\n class=\"col-lg-3 btn add-ref-btn btn-light-primary my-2\">\r\n <input class=\"d-none\" id=\"fileupload\" type=\"file\"\r\n name=\"file\" accept=\"image/png, image/jpeg\"\r\n (change)=\"loadImageFromDevice(i,refImgQIdx,$event)\" *ngIf=\"(question.get('answerType')?.value !== 'image' || (question.get('answerType')?.value === 'image' && !question.get('runAIDefault')?.value))\">\r\n <label class=\"pointer\" for=\"fileupload\"\r\n (click)=\"refImgQIdx=j;\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\"\r\n height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M10 4.16797V15.8346M4.16669 10.0013H15.8334\"\r\n stroke=\"#009BF3\" stroke-width=\"1.67\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>Add Reference Image </label>\r\n </div>\r\n <div\r\n class=\"col-lg-4 form-check form-switch mx-2 btn-sec mt-6 text-left align-items-center\">\r\n <input class=\"form-check-input mx-0 pointer\"\r\n type=\"checkbox\" name=\"toc\" value=\"1\"\r\n ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n Allow upload from gallery\r\n </div>\r\n <div\r\n [ngClass]=\"(['multipleImage'].includes(question.get('answerType')?.value) && getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value === '') ? 'col-lg-4 mt-6' : ['image'].includes(question.get('answerType')?.value) ? 'col-lg-2' : ''\">\r\n <div class=\"d-flex\" *ngIf=\"(['multipleImage'].includes(question.get('answerType')?.value) && getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value === '')\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio4' + i + j\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio4' + i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio5' + i + j\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio5' + i + j\">Number</label>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"getAnswerFormGroup_FormControl(i,j,'referenceImage')?.value && ['image','multipleImage'].includes(question.get('answerType')?.value)\"\r\n [ngClass]=\"question.get('answerType')?.value === 'multipleImage' ? 'col-lg-5 d-flex mt-6' : 'col-lg-3 d-flex justify-content-center align-items-center mt-2'\">\r\n <div class=\"d-flex\" *ngIf=\"question.get('answerType')?.value === 'multipleImage'\">\r\n <div class=\"form-check\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio6' + i + j\"\r\n value=\"text\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio6' + i + j\">Text</label>\r\n </div>\r\n <div class=\"form-check ms-5\">\r\n <input formControlName=\"descriptivetype\" class=\"form-check-input cursor-pointer\" type=\"radio\" [id]=\"'inlineRadio6' + i + j\"\r\n value=\"number\" [name]=\"'descriptivetype'\">\r\n <label class=\"cursor-pointer dscriptiveType\" [for]=\"'inlineRadio6' + i + j\">Number</label>\r\n </div>\r\n </div>\r\n <h3 class=\"fs16-600 px-12\"> Run AI \u2728</h3>\r\n <div class=\"form-check form-switch align-items-center btn-sec ml-5\"\r\n (click)=\"RunAI(i,j)\">\r\n <input class=\"form-check-input pointer\" type=\"checkbox\"\r\n formControlName=\"runAI\" name=\"toc\" value=\"1\">\r\n <label class=\"form-check-label\"\r\n for=\"flexSwitchCheckDefault\"></label>\r\n </div>\r\n <svg [ngClass]=\"question.get('answerType')?.value === 'multipleImage' ? 'mt-1' : ''\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"16\"\r\n height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\"\r\n matTooltip=\"Enable AI where you want tango to identify, track and alert instances.\"\r\n matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\">\r\n <g clip-path=\"url(#clip0_2301_100038)\">\r\n <path\r\n d=\"M7.99967 10.6654V7.9987M7.99967 5.33203H8.00634M14.6663 7.9987C14.6663 11.6806 11.6816 14.6654 7.99967 14.6654C4.31778 14.6654 1.33301 11.6806 1.33301 7.9987C1.33301 4.3168 4.31778 1.33203 7.99967 1.33203C11.6816 1.33203 14.6663 4.3168 14.6663 7.9987Z\"\r\n stroke=\"#98A2B3\" stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_2301_100038\">\r\n <rect width=\"16\" height=\"16\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n <!-- Video -->\r\n <ng-container *ngIf=\"question.get('answerType')?.value === 'video'\"\r\n class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div\r\n class=\" col-lg-4 form-check form-switch text-left align-items-center btn-sec mt-2\">\r\n <input class=\"form-check-input mx-0 pointer\" type=\"checkbox\"\r\n name=\"toc\" value=\"1\" ngDefaultControl\r\n formControlName=\"allowUploadfromGallery\">\r\n <label class=\"form-check-label pointer\"\r\n for=\"flexSwitchCheckDefault\">Allow upload from gallery</label>\r\n \r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <!-- <ng-container *ngIf=\"question.get('answerType')?.value === 'time'\" class=\"row\">\r\n <ng-container formGroupName=\"answers\">\r\n <div class=\" col-lg-4 btn-sec mt-2\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-200px\" type=\"time\" name=\"time\" ngDefaultControl formControlName=\"answer\">\r\n </div>\r\n </ng-container>\r\n </ng-container> -->\r\n\r\n <ng-container *ngIf=\"question.get('answerType')?.value === 'linearscale'\">\r\n <ng-container formGroupName=\"answers\">\r\n <div class=\"d-flex\">\r\n <div class=\"btn-sec mt-2 me-3\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-100px\" type=\"number\" name=\"start\" ngDefaultControl formControlName=\"rangeStart\"> \r\n </div>\r\n <div class=\"btn-sec mt-5\">\r\n <span class=\"fs-16px\">to</span>\r\n </div>\r\n <div class=\" btn-sec mt-2 ms-3\">\r\n <input class=\"form-control form-control-solid flatpickr-input w-100px\" type=\"number\" name=\"start\" ngDefaultControl formControlName=\"rangeEnd\">\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n \r\n <div class=\"d-flex justify-content-end py-2\">\r\n <div class=\"pt-1\" >\r\n <svg (click)=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? '' : cloneQuestion(i,j)\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n matTooltip=\"Duplicate\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" [style]=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? 'cursor:default':''\">\r\n <g clip-path=\"url(#clip0_3385_10578)\">\r\n <path\r\n d=\"M4.16663 12.4993H3.33329C2.89127 12.4993 2.46734 12.3238 2.15478 12.0112C1.84222 11.6986 1.66663 11.2747 1.66663 10.8327V3.33268C1.66663 2.89065 1.84222 2.46673 2.15478 2.15417C2.46734 1.84161 2.89127 1.66602 3.33329 1.66602H10.8333C11.2753 1.66602 11.6992 1.84161 12.0118 2.15417C12.3244 2.46673 12.5 2.89065 12.5 3.33268V4.16602M9.16663 7.49935H16.6666C17.5871 7.49935 18.3333 8.24554 18.3333 9.16602V16.666C18.3333 17.5865 17.5871 18.3327 16.6666 18.3327H9.16663C8.24615 18.3327 7.49996 17.5865 7.49996 16.666V9.16602C7.49996 8.24554 8.24615 7.49935 9.16663 7.49935Z\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_3385_10578\">\r\n <rect width=\"20\" height=\"20\" fill=\"white\" />\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n <svg (click)=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? '' : deleteQuestion(i,j)\"\r\n style=\"margin-left: 24px !important;\"\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n matTooltip=\"Delete question\" matTooltipPosition=\"above\"\r\n matTooltipClass=\"custom-test\" viewBox=\"0 0 20 20\"\r\n fill=\"none\" [ngStyle]=\"(question.get('answerType')?.value === 'image' && question.get('runAIDefault')?.value) ? {cursor:'default'}:{}\">\r\n <path\r\n d=\"M2.5 4.99935H4.16667M4.16667 4.99935H17.5M4.16667 4.99935V16.666C4.16667 17.108 4.34226 17.532 4.65482 17.8445C4.96738 18.1571 5.39131 18.3327 5.83333 18.3327H14.1667C14.6087 18.3327 15.0326 18.1571 15.3452 17.8445C15.6577 17.532 15.8333 17.108 15.8333 16.666V4.99935H4.16667ZM6.66667 4.99935V3.33268C6.66667 2.89065 6.84226 2.46673 7.15482 2.15417C7.46738 1.84161 7.89131 1.66602 8.33333 1.66602H11.6667C12.1087 1.66602 12.5326 1.84161 12.8452 2.15417C13.1577 2.46673 13.3333 2.89065 13.3333 3.33268V4.99935M8.33333 9.16602V14.166M11.6667 9.16602V14.166\"\r\n stroke=\"#667085\" stroke-width=\"1.66667\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n <div>\r\n <div class=\"row mx-0\">\r\n <div class=\"col-lg-6 px-0\" *ngIf=\"ChecklistForm.get('sections')\">\r\n <div class=\"checklist-card py-7 text-center\">\r\n <div (click)=\"addNewQuestion(sectionIndex)\"\r\n [attr.disabled]=\"isDisabled ? 'disabled' : null\" class=\"mt-2 btn-sec pointer\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> Add New Question</div>\r\n </div>\r\n </div>\r\n <div class=\"col-lg-6 pl-5\">\r\n <div class=\"checklist-card py-7 text-center\">\r\n <div (click)=\"addNewSection()\" class=\"mt-2 px-0 btn-sec pointer\"> <svg\r\n xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\"\r\n viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path d=\"M9.99999 4.16602V15.8327M4.16666 9.99935H15.8333\" stroke=\"#344054\"\r\n stroke-width=\"1.67\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg> Add New Section</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n</div>", styles: [".checklist-card div,input[type=text]:not(.plain-input),input[type=time],input[type=number],select{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;line-height:24px}.checklist-card input{padding-right:20%}.card{border-radius:16px}.row>*{padding-right:0}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}input[type=checkbox]:focus{border:none!important;outline:none!important;box-shadow:none!important}input:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}select{-webkit-appearance:none!important;-moz-appearance:none!important;height:45px;width:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAMAAACtdX32AAAAdVBMVEUAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhMdQaAAAAJ3RSTlMAAAECAwQGBwsOFBwkJTg5RUZ4eYCHkJefpaytrsXGy8zW3+Do8vNn0bsyAAAAYElEQVR42tXROwJDQAAA0Ymw1p9kiT+L5P5HVEi3qJn2lcPjtIuzUIJ/rhIGy762N3XaThqMN1ZPALsZPEzG1x8LrFL77DHBnEMxBewz0fJ6LyFHTPL7xhwzWYrJ9z22AqmQBV757MHfAAAAAElFTkSuQmCC);background-position:100%;background-repeat:no-repeat}select:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}textarea:focus{border:#F9FAFB!important;outline:1px solid var(--primary-300, #6BCAFF);box-shadow:0 0 0 4px #d5effe,0 1px 2px #1018280d;color:#101828}textarea,select{color:#101828;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d;border-radius:8px;font-size:16px;width:100%;padding:10px 14px;font-family:Inter;font-weight:400;line-height:24px}.btn-outline{border:1px solid lightgrey;padding:calc(.75rem + 1px) calc(1.5rem + 1px)}.btn-light-primary{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.newbutton{border:1px solid lightgrey;padding:calc(.75rem + 1px) calc(1.5rem + 1px);color:#000;background-color:#fff}.newbutton:hover,.newbutton:active{background-color:#009bf3;color:#fff}.btn.btn-light-primary:hover:not(.btn-active),.btn-light-primary:active{color:var(--primary-700, #009BF3);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;outline:none!important;background-color:#d1f0ff82!important}.ml-5{margin-left:10px}.pl-5{padding-left:10px!important}.btn-left{display:inline-block;width:100%;font-size:16px;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important}.card hr{width:-webkit-fill-available}.card{height:100%!important}.rotate{transform:rotate(180deg);transition:1s}.hidesec{visibility:hidden;opacity:.1;transition:1s}.fs-16px{font-size:16px}.card svg{margin-left:5px!important;cursor:pointer}.form-switch,.form-check-label{padding-left:5px!important}.webkitwidth{width:-webkit-fill-available}.fs-18px{font-size:18px;color:var(--black, #000);font-family:inter}.Answer1 .checklist-card,.Answer2 .checklist-card{position:relative}.Answer1 svg,.Answer2 svg{position:absolute;top:15px;right:15px}.Answer1 .imgAdd,.Answer2 .imgAdd{position:absolute;top:13px!important;right:57px!important}.Answer1 .flag,.Answer2 .flag{color:red!important}.Answer1 .flag>.flag-path,.Answer2 .flag>.flag-path{fill:red!important;stroke:red}.Answer1 .vl,.Answer2 .vl{position:absolute;top:1px;right:45px;border-left:1px solid #D0D5DD;height:43px}.Answer1 .vl2,.Answer2 .vl2{position:absolute;top:1px;right:90px;border-left:1px solid #D0D5DD;height:43px}.Answer1 svg:hover,.Answer2 svg:hover{fill:#d0d5dd!important}.editablecontent{display:inline-block;max-width:60ch;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}.editablecontent-left{display:inline-block;width:180px;white-space:nowrap;outline:none!important;border:none!important;box-shadow:none!important;overflow:hidden!important;text-overflow:ellipsis!important}[contenteditable]{outline:0px solid transparent}.min-width-popup{min-width:46%!important}.max-w-128px{max-width:128px}.fw-600{font-weight:600!important}.fw-400{font-weight:400}.footer1 span{color:#000;font-family:inter;font-size:14px;font-weight:500px;line-height:20px}.footer1 a{font-family:inter;font-size:14px;font-weight:600;text-decoration:underline;color:var(--primary-700, #009BF3)}.footer1 a:hover{color:var(--primary-700, #009BF3);text-decoration-line:underline!important;text-decoration-thickness:1px!important}.btn-sec{color:var(--gray-700, #344054)!important;font-family:Inter;font-size:14px;font-style:normal;font-weight:500!important;line-height:24px}.question-left{max-height:63vh;overflow:auto;overflow-x:hidden}.Question-sec{position:relative;border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--gray-50, #F9FAFB);width:100%;padding:24px 16px 16px}.Question-sec .questiontitle{position:absolute;top:-15px;background-color:#fff;border:1px solid var(--gray-300, #D0D5DD)!important;border-radius:8px}.Question-sec h3{color:var(--gray-700, #344054);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px;margin-bottom:0!important}.Question-sec .fs16-600{font-size:14px;font-style:normal;font-weight:600;line-height:20px}.Question-sec p{color:var(--gray-500, #667085);font-family:Inter;font-size:14px;font-style:normal;font-weight:400;line-height:20px}.swal2-confirm{font-family:Inter!important;font-size:30px!important;background-color:var(--white, #FFF)!important;border:solid var(--gray-300, #D0D5DD)!important}.Overlay{top:0;left:0;width:100%;height:100%;z-index:200!important;position:fixed;background:#58575799}.popup{position:absolute;top:50%;left:50%;opacity:1;transform:translate(-50%,-50%);background:var(--white, #FFF);border-radius:12px!important;border-radius:12px;box-shadow:0 8px 8px -4px #10182808,0 20px 24px -4px #10182814;padding:30px;width:400px;height:fit-content}.kiwi:hover{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi:hover path{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi{fill:#fff!important;stroke:#d0d5dd!important}.kiwi path{fill:#fff!important;stroke:#d0d5dd!important}.kiwi:active{fill:#d0d5dd!important;stroke:#d0d5dd!important}.kiwi:active path{fill:#d0d5dd!important;stroke:#d0d5dd!important}.active-flag{fill:red!important;stroke:red!important}.active-flag path{fill:red!important;stroke:red!important}.active-flag:active{fill:red!important;stroke:red!important}.active-flag:active path{fill:red!important;stroke:red!important}.toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}.ref_del_icon{position:absolute;top:24px;right:24px;transform:translate(50%,-50%);padding:6px;border-radius:8px;border:1px solid var(--error-50, #FEF3F2);background:var(--error-50, #FEF3F2);box-shadow:0 1px 2px #1018280d}.ref_del_icon svg{margin:0!important}.ref_img_cont{position:relative}::ng-deep .swal2-popup.swal2-toast .swal2-icon{grid-column:1;grid-row:1/99;align-self:center;min-width:2em;height:0em;margin:0 .5em 0 0}::ng-deep .listitem{display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.5rem 1rem;background-color:#f3f6f9;margin-top:.75rem;border-radius:.42rem}::ng-deep .toasttitile{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .list{overflow-y:auto}::ng-deep .listitemlabel{font-size:13px!important;font-weight:600;font-family:Inter;color:#7e8299}::ng-deep .swal2-container{padding:.4em!important}::ng-deep .swal2-icon{border:1px solid white!important}::ng-deep body.swal2-toast-shown .swal2-container{width:500px!important}::ng-deep .swal2-popup.swal2-toast{border-left:4px solid #009EF7}::ng-deep .swal2-popup.swal2-toast .swal2-title{margin:9px 5px auto!important}::ng-deep .label{color:#3f4254;font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:140%}::ng-deep .custom-test{color:var(--gray-700, #344054)!important;text-align:start;font-family:Inter;font-size:12px;font-style:normal;border-radius:8px;box-shadow:0 4px 6px -2px #10182808,0 12px 16px -4px #10182814;font-weight:600;line-height:18px;background:#fff}.text-gray-700{color:#344054!important}.mandatoryfield input,.answervalidation input{border:none;padding:0!important}.mandatoryfield input[type=checkbox],.answervalidation input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #D0D5DD)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.mandatoryfield input[type=checkbox]:checked,.answervalidation input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00A3FF)!important;background-color:var(--primary-50, #EAF8FF)}.mandatoryfield input[type=checkbox]:checked:after,.answervalidation input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00A3FF;border-right:2px solid #00A3FF;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.concise-checklistname{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-transform:capitalize}.concise-question{display:inline-block;width:100%;white-space:nowrap;overflow:hidden!important;text-overflow:ellipsis!important;text-align:left}.active-question{color:var(--primary-700, #009BF3);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, #EAF8FF)}.q-btn{color:var(--gray-700, #344054);font-size:16px;font-style:normal;font-weight:500;line-height:24px;display:flex;padding:8px 12px;align-items:center;gap:105px;align-self:stretch;border-radius:6px;background:var(--primary-50, white)}.pointer{cursor:pointer}select option{padding:4px}.add-ref-btn{border-radius:8px;border:1px solid var(--primary-50, #EAF8FF);box-shadow:0 1px 2px #1018280d;padding:14px 0!important}::ng-deep .form-switch .form-check-input{border:none;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(255, 255, 255, 1)'/%3E%3C/svg%3E\")!important}::ng-deep .form-switch .form-check-input:not(:checked){background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='rgba(255, 255, 255, 1)'/%3E%3C/svg%3E\")!important;background-color:var(--gray-100, #F2F4F7)!important}.plain-input{border:none;outline:none;background:transparent;padding:0;margin:0;width:100%;overflow:hidden;color:var(--black, #101828);text-overflow:ellipsis;font-family:Inter;font-size:18px;font-style:normal;font-weight:500;line-height:28px}.plain-input:focus{border-radius:0!important;border:white!important;outline:none!important;box-shadow:none!important}.auto-adjust{max-width:100%;max-height:100%;object-fit:contain;background-color:#fff}.createbuttons{padding:10px 18px;justify-content:center;align-items:center;gap:8px;border-radius:8px;border:1px solid var(--primary-600, #00A3FF);background:var(--primary-600, #00A3FF);box-shadow:0 1px 2px #1018280d}.create{color:var(--white, #FFF);font-family:Inter;font-size:16px;font-style:normal;font-weight:600;line-height:24px;text-transform:capitalize}.savedraft{border-radius:8px;border:1px solid var(--gray-300, #D0D5DD);background:var(--white, #FFF);padding:10px 18px;justify-content:center;align-items:center;gap:8px;box-shadow:0 1px 2px #1018280d}.savedraft:hover{background:#f3f8fd!important;border:1px solid var(--gray-300, #D0D5DD)!important}.savedrafttext{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-transform:capitalize}.questionsArea{overflow-y:scroll;padding:4px}::ng-deep .questionsArea::-webkit-scrollbar-thumb{-webkit-border-radius:10px!important;border-radius:10px!important;background:var(--gray-100, #eaeaea)!important;height:50px!important}::ng-deep .questionsArea::-webkit-scrollbar{width:10px!important}::ng-deep .questionsArea::-webkit-scrollbar-track{background:none!important;box-shadow:none!important}::ng-deep .swal2-html-container{overflow:hidden!important}.ansoptions{color:var(--gray-700, #344054);font-family:Inter;font-size:16px;font-style:normal;font-weight:500;line-height:24px}.checklist{font-family:Inter;font-size:20px;font-weight:600;line-height:28px;text-align:left;color:#667085!important}.checklistDescription{font-family:Inter;font-size:14px;font-weight:400;line-height:18px;text-align:left}.dscriptiveType{font-size:15px!important}.loader .title{width:65%}.loader .link{width:85%}.loader .description{width:95%}.loader .shimmer{padding:15px;width:95%;height:120px;margin:10px auto;background:#fff}.loader .shimmer .image-card{height:90px;width:90px;float:right;border-radius:8px}.loader .stroke{height:15px;background:#777;margin-top:20px}.loader .wrapper{width:0px;animation:fullView .5s forwards linear}@keyframes fullView{to{width:100%}}.loader .animate{animation:shimmer 3s;animation-iteration-count:infinite;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}\n"] }]
|
|
1518
1521
|
}], ctorParameters: () => [{ type: i1.PageInfoService }, { type: i2.FormBuilder }, { type: i0.ChangeDetectorRef }, { type: i3.NgbModal }, { type: i4.ActivatedRoute }, { type: i5.ToastService }, { type: i4.Router }, { type: i6.TraxService }, { type: i1.GlobalStateService }], propDecorators: { formRef: [{
|
|
1519
1522
|
type: ViewChild,
|
|
1520
1523
|
args: ['formRef']
|
|
1521
1524
|
}] } });
|
|
1522
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1jaGVja2xpc3QvYWRkLWNoZWNrbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1jaGVja2xpc3QvYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBaUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLFNBQVMsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRyxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLEtBQUssRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSXRFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7Ozs7Ozs7O0FBTzFGLE1BQU0sT0FBTyxxQkFBcUI7SUFpQlo7SUFBaUM7SUFBd0I7SUFBeUM7SUFBd0I7SUFBNkI7SUFBMkI7SUFBc0I7SUFBK0I7SUFoQnJPLE9BQU8sQ0FBYTtJQUUxQyxhQUFhLENBQWE7SUFDMUIsSUFBSSxHQUFXLENBQUMsQ0FBQztJQUNqQixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsQ0FBTTtJQUNmLFNBQVMsQ0FBTTtJQUNmLFVBQVUsR0FB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QUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDekMsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFhLEVBQUMsSUFBVztRQUN2QyxPQUFTLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFlLENBQUMsRUFBRSxDQUFDLElBQUksR0FBQyxDQUFDLENBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzdILENBQUM7d0dBM2lEVSxxQkFBcUI7NEZBQXJCLHFCQUFxQiw2SkNsQmxDLHEzakZBeXdCTTs7NEZEdnZCTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1COzZTQUtQLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlLCBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgdGltZXIsdGFrZVVudGlsLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBUcmF4cG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi90cmF4cG9wdXAvdHJheHBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IG5vV2hpdGVzcGFjZVZhbGlkYXRvciB9IGZyb20gJy4uL2NyZWF0ZS10YXNrL3ZhbGlkYXRvcnMvd2hpdGVzcGFjZS12YWxpZGF0b3InO1xyXG5pbXBvcnQgeyB1bmlxdWVTdHJpbmdWYWxpZGF0b3IgfSBmcm9tICcuLi9jcmVhdGUtdGFzay92YWxpZGF0b3JzL3VuaXF1ZS1zdHJpbmctdmFsaWRhdG9yJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFkZC1jaGVja2xpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtY2hlY2tsaXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZENoZWNrbGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1SZWYnKSBmb3JtUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICBDaGVja2xpc3RGb3JtITogRm9ybUdyb3VwO1xyXG4gIHNob3c6IG51bWJlciA9IDA7XHJcbiAgc2VjdGlvbkluZGV4OiBudW1iZXIgPSAwO1xyXG4gIGdldG9iamVjdDogYW55O1xyXG4gIGVkaXR2YWx1ZTogYW55O1xyXG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG5vc2VjdGlvbjpib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd3ZhbHVlOiBzdHJpbmc7XHJcbiAgcmVmSW1nUUlkeDogbnVtYmVyID0gMDtcclxuICBjaGVja2xpc3RMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcG9wdXBDb3VudDpudW1iZXIgPSAwO1xyXG4gIGNsaWVudElkOmFueTtcclxuICBkZWxldGVkTGlzdDphbnkgPSBbXTtcclxuICBwcml2YXRlIGRldGFjaCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdlSW5mbzpQYWdlSW5mb1NlcnZpY2UscHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIscHJpdmF0ZSBjaGFuZ2VkZXRlY3RvcjpDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIGRpYWxvZzpOZ2JNb2RhbCxwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlLHByaXZhdGUgdG9hc3Q6VG9hc3RTZXJ2aWNlLHByaXZhdGUgcm91dGVyOlJvdXRlcixwcml2YXRlIHNvcFNlcnZpY2U6VHJheFNlcnZpY2UscHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UpIHtcclxuICB9XHJcbiAgXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRDaGVja2xpc3QoKTtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgIGxldCBzdG9yYWdlRGV0YWlscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJykgfHwgJ3t9Jyk7XHJcbiAgICBpZighc3RvcmFnZURldGFpbHM/LmNsaWVudCkge1xyXG4gICAgICBzdG9yYWdlRGV0YWlscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NsaWVudC1kZXRhaWxzJykgfHwgJ3t9Jyk7XHJcbiAgICAgIHN0b3JhZ2VEZXRhaWxzLmNsaWVudCA9IHN0b3JhZ2VEZXRhaWxzLmNsaWVudElkO1xyXG4gICAgfVxyXG4gICAgaWYoc3RvcmFnZURldGFpbHM/LmNsaWVudCkge1xyXG4gICAgICB0aGlzLmNsaWVudElkID0gc3RvcmFnZURldGFpbHMuY2xpZW50O1xyXG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmVkaXR2YWx1ZSA9IHBhcmFtcy5jaGVja2xpc3RJZDtcclxuICAgICAgICBpZiAocGFyYW1zLmNoZWNrbGlzdElkKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3d2YWx1ZSA9ICdlZGl0JztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93dmFsdWUgPSAnYWRkJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zaG93dmFsdWUgPT0gJ2VkaXQnIHx8IHBhcmFtcy50eXBlKSB7XHJcbiAgICAgICAgICBsZXQgb2JqOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGlmIChwYXJhbXMuY2hlY2tsaXN0SWQpIHtcclxuICAgICAgICAgICAgb2JqLmNoZWNrTGlzdElkID0gcGFyYW1zLmNoZWNrbGlzdElkXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBvYmoudHlwZSA9IHBhcmFtcy50eXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb2JqLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNvcFNlcnZpY2UuZ2V0Y29uZmlnKG9iaikucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmKHJlcykge1xyXG4gICAgICAgICAgICAgICAgaWYocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0b2JqZWN0ID0gcmVzLmRhdGEuY2hlY2tMaXN0RGV0YWlscztcclxuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ2hlY2tsaXN0UXVlc3Rpb25zKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbml0Q2hlY2tsaXN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXRhY2gubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGV0YWNoLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJNYW5hZ2UgQ2hlY2tsaXN0XCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcIkF1dG9tYXRlIG9yIGNyZWF0ZSBjaGVja2xpc3RzIHRvIGltcHJvdmUgb3BlcmF0aW9uYWwgZWZmaWNpZW5jeVwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9XHJcbiAgICBdKTtcclxuICB9XHJcbiAgXHJcbiAgdXBkYXRlSW5wdXRWYWx1ZShzZWN0aW9uSW5kZXg6IG51bWJlcixzZWN0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoc2VjdGlvbk5hbWUudHJpbSgpID09PSAnJykge1xyXG4gICAgICB0aGlzLmdldFNlY3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXgsJ25hbWUnKT8uc2V0VmFsdWUoYFNlY3Rpb24gJHtzZWN0aW9uSW5kZXgrMX1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2Nyb2xsVG9RdWVzdGlvbihzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBxdWVzdGlvbklkID0gYHEtJHtzZWN0aW9uSW5kZXh9LSR7cXVlc3Rpb25JbmRleH1gO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHF1ZXN0aW9uRWxlbWVudCA9IHRoaXMuZm9ybVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3F1ZXN0aW9uSWR9YCk7XHJcbiAgXHJcbiAgICAgIGlmIChxdWVzdGlvbkVsZW1lbnQpIHtcclxuICAgICAgICBxdWVzdGlvbkVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGZvcm1DaGVja2xpc3RRdWVzdGlvbnMoKSB7IFxyXG4gICAgbGV0IHNlY3Rpb25zYXJyYXk6IGFueSA9IFtdO1xyXG4gICAgbGV0IHNlY3Rpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgc2VjdGlvbnNhcnJheSA9IHRoaXMuZ2V0b2JqZWN0LnNlY3Rpb25zXHJcbiAgICBcclxuICAgIHNlY3Rpb25zYXJyYXkuZm9yRWFjaCgoaTogYW55LHNlY3Rpb25JbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGxldCBxdWVzdGlvbnM6IGFueVtdID0gW107XHJcbiAgICAgIGxldCBzZWN0aW9uTnVtYmVyID0gaT8uc2VjdGlvbk51bWJlciB8fCAoc2VjdGlvbkluZGV4ICsgMSlcclxuICAgICAgaS5xdWVzdGlvbnMuZm9yRWFjaCgoajogYW55LHF1ZXN0aW9uSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGxldCBhbnN3ZXI6IGFueVtdID0gW107XHJcbiAgICAgICAgai5hbnN3ZXJzPy5mb3JFYWNoKChrOiBhbnksYW5zd2VySW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgYW5zd2VyLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgJiYgaj8uYW5zd2VyVHlwZSAhPSAndmlkZW8nPyB7ICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woaz8uYW5zd2VyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbChhbnN3ZXJJbmRleCksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpICYmIGo/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJz8geyAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChrPy5zb3BGbGFnID8gaz8uc29wRmxhZyA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpICYmIGo/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJz8geyAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChrPy52YWxpZGF0aW9uLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpICYmIGo/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJz8geyAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woaz8udmFsaWRhdGlvblR5cGUsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJDYXB0dXJlIEltYWdlXCIsIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCIsIFwiQ2FwdHVyZSBWaWRlb1wiXSkpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woaz8ucmVmZXJlbmNlSW1hZ2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSB8fCBqPy5hbnN3ZXJUeXBlID09ICd2aWRlbycpID8geyAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChqPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID8gdHJ1ZSA6IGZhbHNlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLihbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSA/IHsgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKChqPy5ydW5BSSkgPyBqPy5ydW5BSSA6IGZhbHNlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLihbJ211bHRpcGxlY2hvaWNlc2luZ2xlJywneWVzL25vJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgPyB7ICdzaG93TGlua2VkJzogdGhpcy5mYi5jb250cm9sKChrPy5zaG93TGlua2VkKSA/IGs/LnNob3dMaW5rZWQgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oWydtdWx0aXBsZWNob2ljZXNpbmdsZScsJ3llcy9ubyddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAnbGlua2VkUXVlc3Rpb24nOiB0aGlzLmZiLmNvbnRyb2woKGs/LmxpbmtlZFF1ZXN0aW9uKSA/IGs/LmxpbmtlZFF1ZXN0aW9uIDogMCkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAgLi4uKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgPyB7ICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbChrPy5yZWZlcmVuY2VJbWFnZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ3ZpZGVvJywnbXVsdGlwbGVJbWFnZScsJ2RhdGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSkgPyB7ICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGs/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPyB0cnVlIDogZmFsc2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgPyB7ICdydW5BSSc6IHRoaXMuZmIuY29udHJvbCgoaz8ucnVuQUkpID8gaz8ucnVuQUkgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnZGF0ZScsJ2xpbmVhcnNjYWxlJywndGltZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woay5kZXNjcmlwdGl2ZXR5cGUpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSA/IHsgJ3JhbmdlU3RhcnQnOnRoaXMuZmIuY29udHJvbChrLnJhbmdlU3RhcnQpLCdyYW5nZUVuZCc6dGhpcy5mYi5jb250cm9sKGsucmFuZ2VFbmQpIH0gOiB7fSksXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBxdWVzdGlvbnMucHVzaChcclxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBcInFub1wiOiB0aGlzLmZiLmNvbnRyb2wocXVlc3Rpb25JbmRleCsxKSxcclxuICAgICAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKGo/LnFuYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICBcIm9sZFFuYW1lXCI6dGhpcy5mYi5jb250cm9sKGo/LnFuYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAnYW5zd2VyVHlwZSc6IHRoaXMuZmIuY29udHJvbChqPy5hbnN3ZXJUeXBlLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCIsJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXSkpLFxyXG4gICAgICAgICAgICAuLi4oIVsnZGVzY3JpcHRpdmUnLCdkYXRlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8geyAnYW5zd2Vycyc6IChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsICd2aWRlbycsJ211bHRpcGxlSW1hZ2UnLCd0aW1lJywnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSkgPyBhbnN3ZXJbMF0gOiB0aGlzLmZiLmFycmF5KGFuc3dlcixbdW5pcXVlU3RyaW5nVmFsaWRhdG9yKCldKSB9IDoge30sXHJcbiAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbCgoWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLFwibXVsdGlwbGVJbWFnZVwiXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSkgPyAoaj8ucnVuQUkpID8gdHJ1ZSA6IGZhbHNlIDogZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ3ZpZGVvJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpKSA/IChqPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5KSA/IHRydWUgOiBmYWxzZSA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncnVuQUlEZXNjcmlwdGlvbic6IHRoaXMuZmIuY29udHJvbCgoWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8gKGo/LnJ1bkFJRGVzY3JpcHRpb24pIDogJycpLFxyXG4gICAgICAgICAgICAnbGlua1R5cGUnOiB0aGlzLmZiLmNvbnRyb2woaj8ubGlua1R5cGUpLFxyXG4gICAgICAgICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKGoucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbChqLmRlc2NyaXB0aXZldHlwZSksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYW5zd2VyID0gW107XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgc2VjdGlvbnMucHVzaChcclxuICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIFwibmFtZVwiOiB0aGlzLmZiLmNvbnRyb2woaT8ubmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICBcIm9sZE5hbWVcIjp0aGlzLmZiLmNvbnRyb2woaT8ubmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICBcInNlY3Rpb25OdW1iZXJcIjogdGhpcy5mYi5jb250cm9sKHNlY3Rpb25OdW1iZXIpLFxyXG4gICAgICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5mYi5hcnJheShxdWVzdGlvbnMpXHJcbiAgICAgIH0pKTtcclxuICAgICAgcXVlc3Rpb25zID0gW107XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgJ2NoZWNrbGlzdE5hbWUnOiB0aGlzLmZiLmNvbnRyb2wodGhpcy5nZXRvYmplY3QuY2hlY2tMaXN0TmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgJ2NoZWNrbGlzdERlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKHRoaXMuZ2V0b2JqZWN0LmNoZWNrTGlzdERlc2NyaXB0aW9uKSxcclxuICAgICAgJ3NlY3Rpb25zJzogdGhpcy5mYi5hcnJheShzZWN0aW9ucylcclxuICAgIH0pOyAgIFxyXG4gICAgdGhpcy5DaGVja2xpc3RGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuY2hlY2tsaXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgaW5pdENoZWNrbGlzdCgpIHtcclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAnY2hlY2tsaXN0TmFtZSc6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgJ2NoZWNrbGlzdERlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgJ3NlY3Rpb25zJzogdGhpcy5mYi5hcnJheShbXHJcbiAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICBcIm5hbWVcIjogdGhpcy5mYi5jb250cm9sKCdTZWN0aW9uIDEnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxWYWxpZGF0b3JzLm1pbkxlbmd0aCgxKSxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgXCJzZWN0aW9uTnVtYmVyXCI6IHRoaXMuZmIuY29udHJvbCgxLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgXCJxdWVzdGlvbnNcIjogdGhpcy5mYi5hcnJheShbXHJcbiAgICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbCgxLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAgICdxbmFtZSc6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgICAnYW5zd2VyVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnZGVzY3JpcHRpdmUnLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcImRlc2NyaXB0aXZlXCIsIFwieWVzL25vXCIsIFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIiwgXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsIFwiaW1hZ2VcIiwgXCJ2aWRlb1wiLCdtdWx0aXBsZUltYWdlJywnZGF0ZScsJ2xpbmVhcnNjYWxlJywndGltZSddKSksXHJcbiAgICAgICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAgICdydW5BSURlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgICAnbGlua1R5cGUnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICAgJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnOnRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCd0ZXh0JyksXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIF0pXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY2hlY2tsaXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihhbGxvd2VkVmFsdWVzOiBzdHJpbmdbXSkge1xyXG4gICAgcmV0dXJuIChjb250cm9sOiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xyXG4gICAgICBpZiAodmFsdWUgJiYgYWxsb3dlZFZhbHVlcy5pbmRleE9mKHZhbHVlKSA9PT0gLTEpIHtcclxuICAgICAgICByZXR1cm4geyBpbnZhbGlkVmFsdWU6IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBhZGROZXdTZWN0aW9uKCkge1xyXG4gICAgbGV0IHNlY3Rpb25zID0gdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICBsZXQgc2VjdGlvbkxlbmd0aCA9IHNlY3Rpb25zLmxlbmd0aDtcclxuICAgIGxldCBmaW5kU2VjTnVtID0gTWF0aC5tYXgoLi4uc2VjdGlvbnMudmFsdWUubWFwKChlbGU6YW55KSA9PiBlbGUuc2VjdGlvbk51bWJlciApKTtcclxuICAgICh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkucHVzaChcclxuICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgXCJuYW1lXCI6IHRoaXMuZmIuY29udHJvbChgU2VjdGlvbiAke3NlY3Rpb25MZW5ndGggKyAxfWAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgXCJzZWN0aW9uTnVtYmVyXCI6IHRoaXMuZmIuY29udHJvbChmaW5kU2VjTnVtICsgMSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLmZiLmFycmF5KFtcclxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBcInFub1wiOiB0aGlzLmZiLmNvbnRyb2woMSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAnYW5zd2VyVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnZGVzY3JpcHRpdmUnLFxyXG4gICAgICAgICAgICAgIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJkZXNjcmlwdGl2ZVwiLCBcInllcy9ub1wiLCBcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsIFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLCBcImltYWdlXCIsIFwidmlkZW9cIiwnbXVsdGlwbGVJbWFnZScsJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXSkpLFxyXG4gICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdydW5BSURlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdsaW5rVHlwZSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnOnRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgndGV4dCcpLFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgXSlcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgICBpZihzZWN0aW9uTGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5zaG93ID0gLTE7XHJcbiAgICB9XHJcbiAgICB0aGlzLmFjY29yZGlhbihzZWN0aW9uTGVuZ3RoKTtcclxuICAgIHRoaXMuc3dhbFRvYXN0KCdOZXcgc2VjdGlvbiBhZGRlZCEnKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVNlY3Rpb24oc2VjdGlvbkluZGV4OiBudW1iZXIpIHtcclxuICAgICh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkucmVtb3ZlQXQoc2VjdGlvbkluZGV4KTtcclxuICB9XHJcblxyXG4gIGRyYWdEcm9wKHNlY3Rpb25JbmRleDogYW55LCBldmVudDogQ2RrRHJhZ0Ryb3A8YW55W10+KSB7XHJcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xyXG4gICAgICBtb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICAgIC8vIHRoaXMudXBkYXRlbGlua2VkUXVlc3Rpb25ObyhzZWN0aW9uSW5kZXgsZXZlbnQucHJldmlvdXNJbmRleCxldmVudC5jdXJyZW50SW5kZXgpXHJcbiAgICAgIHRoaXMudXBkYXRlUXVlc3Rpb25Rbm9zKHNlY3Rpb25JbmRleCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShcclxuICAgICAgICBldmVudC5wcmV2aW91c0NvbnRhaW5lci5kYXRhLFxyXG4gICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxyXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXHJcbiAgICAgICAgZXZlbnQuY3VycmVudEluZGV4XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVsaW5rZWRRdWVzdGlvbk5vKHNlY0lkeDpudW1iZXIscHJldklkeDpudW1iZXIscW5JZHg6bnVtYmVyKSB7XHJcbiAgICBsZXQgcXVlc3Rpb25zID0gKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgZm9yKGxldCBpPTA7aTxxdWVzdGlvbnMubGVuZ3RoLTE7aSsrKSB7XHJcbiAgICAgIGxldCBhbnN3ZXJzID0gKChxdWVzdGlvbnMuYXQoaSkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgICBmb3IobGV0IGo9MDtqPGFuc3dlcnM/Lmxlbmd0aCAtMTtqKyspIHtcclxuICAgICAgICBsZXQgbGlua2VkID0gKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKS5nZXQoJ3Nob3dMaW5rZWQnKT8udmFsdWU7XHJcbiAgICAgICAgaWYobGlua2VkKSB7XHJcbiAgICAgICAgICBsZXQgbGlua2VkTm8gPSAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8udmFsdWU7XHJcbiAgICAgICAgICBpZihsaW5rZWRObyA9PSBwcmV2SWR4ICsgMSkge1xyXG4gICAgICAgICAgICAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8uc2V0VmFsdWUocW5JZHggKyAxKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2UgaWYobGlua2VkTm8gPD0gcW5JZHggKyAxKSB7XHJcbiAgICAgICAgICAgIChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZShsaW5rZWRObyAtIDEpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgYW5zd2VyVHlwZVNlbGVjdGlvbihzZWN0aW9uSW5kZXg6IGFueSwgcXVlc3Rpb25JbmRleDogYW55LCBldmVudDogYW55KSB7XHJcbiAgICBsZXQgc2VsZWN0dmFsdWU6IHN0cmluZyA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpPy5zZXRWYWx1ZSgnJyk7XHJcbiAgICBpZighWydkZXNjcmlwdGl2ZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhzZWxlY3R2YWx1ZSkpIHtcclxuICAgICAgICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgnZGVzY3JpcHRpdmV0eXBlJyk/LnNldFZhbHVlKCcnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Rlc2NyaXB0aXZldHlwZScpPy5zZXRWYWx1ZSgndGV4dCcpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZW1vdmVRdWVzdGlvbkxpbmtlZChzZWN0aW9uSW5kZXgscXVlc3Rpb25JbmRleCk7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09ICd5ZXMvbm8nIHx8IGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnbXVsdGlwbGVjaG9pY2VzaW5nbGUnKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNGb3JtQXJyYXkoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LHNlbGVjdHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09ICdkZXNjcmlwdGl2ZScpIHtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09ICdkZXNjcmlwdGl2ZUltYWdlJykge1xyXG4gICAgICB0aGlzLnNldEFuc3dlckFzRm9ybUdyb3VwKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgc2VsZWN0dmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ211bHRpcGxlY2hvaWNlbXVsdGlwbGUnKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNGb3JtQXJyYXkoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LHNlbGVjdHZhbHVlKTtcclxuICAgIH0gZWxzZSBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09ICdpbWFnZScpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc0Zvcm1Hcm91cChzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdpbWFnZScpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ3ZpZGVvJykge1xyXG4gICAgICB0aGlzLnNldEFuc3dlckFzRm9ybUdyb3VwKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ3ZpZGVvJyk7XHJcbiAgICB9ZWxzZSBpZiAoZXZlbnQudGFyZ2V0LnZhbHVlID09ICdtdWx0aXBsZUltYWdlJykge1xyXG4gICAgICB0aGlzLnNldEFuc3dlckFzRm9ybUdyb3VwKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ211bHRpcGxlSW1hZ2UnKTtcclxuICAgIH1lbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ2RhdGUnKSB7fVxyXG4gICAgZWxzZSBpZihldmVudC50YXJnZXQudmFsdWUgPT0gJ3RpbWUnKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNUaW1lKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ3RpbWUnKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYoZXZlbnQudGFyZ2V0LnZhbHVlID09ICdsaW5lYXJzY2FsZScpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc1RpbWUoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAnbGluZWFyc2NhbGUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldEFuc3dlckFzVGltZShzZWNJZHg6bnVtYmVyLHFuSWR4Om51bWJlcix0eXBlOnN0cmluZykge1xyXG4gICAgbGV0IHF1ZXN0aW9uID0gKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjSWR4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApO1xyXG5cclxuICAgICAgaWYodHlwZSA9PSAndGltZScpIHtcclxuICAgICAgICBxdWVzdGlvbi5zZXRDb250cm9sKCdhbnN3ZXJzJyxcclxuICAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbCgxKSxcclxuICAgICAgICAgICAgICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICAnbGlua2VkUXVlc3Rpb24nOnRoaXMuZmIuY29udHJvbCgwKSxcclxuICAgICAgICAgICAgICdzaG93TGlua2VkJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJycpXHJcbiAgICAgICAgICAgfSksXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcXVlc3Rpb24uc2V0Q29udHJvbCgnYW5zd2VycycsXHJcbiAgICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICAnYW5zd2VyJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woMSksXHJcbiAgICAgICAgICAgICAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgJ2xpbmtlZFF1ZXN0aW9uJzp0aGlzLmZiLmNvbnRyb2woMCksXHJcbiAgICAgICAgICAgICAnc2hvd0xpbmtlZCc6dGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCdudW1iZXInKSxcclxuICAgICAgICAgICAgICdyYW5nZVN0YXJ0Jzp0aGlzLmZiLmNvbnRyb2woMCksXHJcbiAgICAgICAgICAgICAncmFuZ2VFbmQnOnRoaXMuZmIuY29udHJvbCgxMDAsKVxyXG4gICAgICAgICAgIH0pLFxyXG4gICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICBcclxuXHJcbiAgICBjb25zb2xlLmxvZyhxdWVzdGlvbik7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIHJlbW92ZVF1ZXN0aW9uTGlua2VkKHNlY0lkeDphbnkscW5JZHg6YW55KSB7XHJcbiAgICBsZXQgYW5zd2VycyA9ICgoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICBpZihhbnN3ZXJzKSB7XHJcbiAgICAgIGZvcihsZXQgaT0wO2k8YW5zd2Vycy5sZW5ndGg7aSsrKXtcclxuICAgICAgICBsZXQgcW4gPSAoYW5zd2Vycy5hdChpKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8udmFsdWU7XHJcbiAgICAgICAgaWYocW4pIHtcclxuICAgICAgICAgICgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW4gLSAxKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua1R5cGUnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlVmFsaWRhdGlvblR5cGUoZXZlbnQ6YW55LHNlY3Rpb246bnVtYmVyLHF1ZXN0aW9uOm51bWJlcixhbnN3ZXI6bnVtYmVyKSB7XHJcbiAgICBpZihldmVudC50YXJnZXQudmFsdWUgPT0gJ0Rlc2NyaXB0aXZlIEFuc3dlcicpIHtcclxuICAgICAgKCgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWN0aW9uKSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHF1ZXN0aW9uKSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zd2VyKSBhcyBGb3JtR3JvdXApLmdldCgnZGVzY3JpcHRpdmV0eXBlJyk/LnNldFZhbHVlKCd0ZXh0Jyk7XHJcbiAgICB9XHJcbiAgICAoKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHNlY3Rpb24pIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQocXVlc3Rpb24pIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnN3ZXIpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5Jyk/LnNldFZhbHVlKGZhbHNlKTtcclxuICB9XHJcblxyXG4gIHNldEFuc3dlckFzRm9ybUFycmF5KHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsc2VsZWN0dmFsdWU6IHN0cmluZykge1xyXG4gICAgbGV0IHF1ZXN0aW9uID0gKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICBcclxuICAgIGlmIChzZWxlY3R2YWx1ZSA9PSAneWVzL25vJykge1xyXG4gICAgICBxdWVzdGlvbi5zZXRDb250cm9sKCdhbnN3ZXJzJyxcclxuICAgICAgICB0aGlzLmZiLmFycmF5KFtcclxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAnYW5zd2VyJzogdGhpcy5mYi5jb250cm9sKCdZZXMnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAnYW5zd2Vyb3B0aW9uTnVtYmVyJzogdGhpcy5mYi5jb250cm9sKDEpLFxyXG4gICAgICAgICAgICAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgLy8gJ2xpbmtRdWVzdGlvbic6dGhpcy5mYi5jb250cm9sKGZhbHNlLFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgIC8vICdhbnN3ZXJJbnB1dFN0eWxlJzogdGhpcy5mYi5jb250cm9sKCdyYWRpbycsW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3ZhbGlkYXRpb24nOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnQ2FwdHVyZSBJbWFnZScsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJDYXB0dXJlIEltYWdlXCIsIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCIsXCJDYXB0dXJlIFZpZGVvXCJdKSksXHJcbiAgICAgICAgICAgICdsaW5rZWRRdWVzdGlvbic6dGhpcy5mYi5jb250cm9sKDAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdzaG93TGlua2VkJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCcnKVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbCgnTm8nLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAnYW5zd2Vyb3B0aW9uTnVtYmVyJzogdGhpcy5mYi5jb250cm9sKDIpLFxyXG4gICAgICAgICAgICAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3ZhbGlkYXRpb24nOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnQ2FwdHVyZSBJbWFnZScsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJDYXB0dXJlIEltYWdlXCIsIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCIsXCJDYXB0dXJlIFZpZGVvXCJdKSksXHJcbiAgICAgICAgICAgICdsaW5rZWRRdWVzdGlvbic6dGhpcy5mYi5jb250cm9sKDAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdzaG93TGlua2VkJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCcnKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICBdLHVuaXF1ZVN0cmluZ1ZhbGlkYXRvcigpKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVlc3Rpb24uc2V0Q29udHJvbCgnYW5zd2VycycsXHJcbiAgICAgICAgdGhpcy5mYi5hcnJheShbXHJcbiAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbCgxKSxcclxuICAgICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ0NhcHR1cmUgSW1hZ2UnLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiQ2FwdHVyZSBJbWFnZVwiLCBcIkRlc2NyaXB0aXZlIEFuc3dlclwiLFwiQ2FwdHVyZSBWaWRlb1wiXSkpLFxyXG4gICAgICAgICAgICAuLi4oc2VsZWN0dmFsdWUgPT0gJ211bHRpcGxlY2hvaWNlc2luZ2xlJyA/IHtcImxpbmtlZFF1ZXN0aW9uXCI6dGhpcy5mYi5jb250cm9sKDAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksJ3Nob3dMaW5rZWQnOnRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKX0gOiB7fSksXHJcbiAgICAgICAgICAgICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCcnKVxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbCgxKSxcclxuICAgICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ0NhcHR1cmUgSW1hZ2UnLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiQ2FwdHVyZSBJbWFnZVwiLCBcIkRlc2NyaXB0aXZlIEFuc3dlclwiLFwiQ2FwdHVyZSBWaWRlb1wiXSkpLFxyXG4gICAgICAgICAgICAuLi4oc2VsZWN0dmFsdWUgPT0gJ211bHRpcGxlY2hvaWNlc2luZ2xlJyA/IHtcImxpbmtlZFF1ZXN0aW9uXCI6dGhpcy5mYi5jb250cm9sKDAsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksJ3Nob3dMaW5rZWQnOnRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKX0gOiB7fSksXHJcbiAgICAgICAgICAgICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCcnKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICBdLHVuaXF1ZVN0cmluZ1ZhbGlkYXRvcigpKSxcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG5cclxuICBzZXRBbnN3ZXJBc0Zvcm1Hcm91cChzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLCBhbnN3ZXJUeXBlOiBzdHJpbmcpIHtcclxuICAgIGlmIChbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoYW5zd2VyVHlwZSkpIHtcclxuICAgICAgKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldENvbnRyb2woJ2Fuc3dlcnMnLCBcclxuICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgLi4uKGFuc3dlclR5cGUgPT0gJ211bHRpcGxlSW1hZ2UnID8geydkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgndGV4dCcpfTp7fSlcclxuICAgICAgICB9KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcXVlc3Rpb24gPSAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgICAgLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgICAuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG5cclxuICAgICAgcXVlc3Rpb24uc2V0Q29udHJvbCgnYW5zd2VycycsIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgfVxyXG4gICAgdGhpcy5DaGVja2xpc3RGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIGxvYWRJbWFnZUZyb21EZXZpY2Uoc2VjSWR4OiBudW1iZXIscUlkeDogbnVtYmVyLGV2ZW50OiBhbnksYW5zSWR4Om51bWJlcj0tMSxjdHJsTmFtZTpzdHJpbmcgPSAnJykge1xyXG4gICAgaWYgKGV2ZW50LnRhcmdldC5maWxlcyAhPSB1bmRlZmluZWQgJiYgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCkge1xyXG4gICAgfVxyXG4gICAgbGV0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICBsZXQgZmlsZTogRmlsZSA9IGV2ZW50LnRhcmdldC5maWxlc1swXTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XHJcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2NsaWVudElkJyx0aGlzLmNsaWVudElkKVxyXG4gICAgdGhpcy5zb3BTZXJ2aWNlLmltYWdldXBsb2FkKGZvcm1EYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgaWYoY3RybE5hbWUpXHJcbiAgICAgICAgdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc2VjSWR4LHFJZHgsJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8uc2V0VmFsdWUocmVzLmRhdGEuaW1nVXJsKTtcclxuICAgICAgZWxzZVxyXG4gICAgICAgIHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNlY0lkeCxxSWR4LCdyZWZlcmVuY2VJbWFnZScsYW5zSWR4KT8uc2V0VmFsdWUocmVzLmRhdGEuaW1nVXJsKTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpOyAgICAgIFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGNsZWFyUmVmZXJlbmNlSW1hZ2Uoc2VjSWR4OiBudW1iZXIscUlkeDogbnVtYmVyLGFuc0lkeDpudW1iZXI9LTEpIHtcclxuICAgIHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNlY0lkeCxxSWR4LCdyZWZlcmVuY2VJbWFnZScsYW5zSWR4KT8uc2V0VmFsdWUoJycpO1xyXG4gICAgdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc2VjSWR4LHFJZHgsJ3J1bkFJJyxhbnNJZHgpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzZWNJZHgscUlkeCwncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpPy5zZXRWYWx1ZSgnJyk7XHJcbiAgfVxyXG5cclxuICBnZXR2YWxpZGF0aW9uKHNlY3Rpb25JbmRleDogYW55LCBxdWVzdGlvbkluZGV4OiBhbnksIGFkZG1vcmVxbkluZGV4OiBhbnksIGV2ZW50OiBhbnkpIHtcclxuICAgICgoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhZGRtb3JlcW5JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3ZhbGlkYXRpb24nKT8uc2V0VmFsdWUoZXZlbnQudGFyZ2V0LmNoZWNrZWQpO1xyXG4gIH1cclxuXHJcbiAgYWRkTmV3UXVlc3Rpb24oc2VjdGlvbkluZGV4OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLnNlY3Rpb25JbmRleCA+IC0xKSB7XHJcbiAgICAgIGlmICghKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3F1ZXN0aW9ucycpKSkge1xyXG4gICAgICAgICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5zZXRDb250cm9sKCdxdWVzdGlvbnMnLCB0aGlzLmZiLmFycmF5KFtdKSk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHF1ZXN0aW9ucyA9ICgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgICBsZXQgcXVlc3Rpb25zTGVuZ3RoID0gcXVlc3Rpb25zLmxlbmd0aDtcclxuICAgICAgcXVlc3Rpb25zLnB1c2godGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgXCJxbm9cIjogdGhpcy5mYi5jb250cm9sKHF1ZXN0aW9uc0xlbmd0aCArIDEsKSxcclxuICAgICAgICAncW5hbWUnOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgJ2Fuc3dlclR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ2Rlc2NyaXB0aXZlJyxcclxuICAgICAgICAgIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJkZXNjcmlwdGl2ZVwiLCBcInllcy9ub1wiLCBcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsIFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLCBcImltYWdlXCIsIFwidmlkZW9cIiwnbXVsdGlwbGVJbWFnZScsJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXSkpLFxyXG4gICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAncnVuQUlEZXNjcmlwdGlvbic6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgJ2xpbmtUeXBlJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJzp0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgndGV4dCcpLFxyXG4gICAgICB9KSk7ICAgICAgXHJcbiAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB0aGlzLnN3YWxUb2FzdCgnTmV3IHF1ZXN0aW9uIGFkZGVkIScpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpPT4ge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsVG9RdWVzdGlvbihzZWN0aW9uSW5kZXgscXVlc3Rpb25zTGVuZ3RoKTtcclxuICAgICAgfSwxMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVsZXRlUXVlc3Rpb24oc2VjdGlvbkluZGV4OiBhbnksIHF1ZXN0aW9uSW5kZXg6IGFueSkge1xyXG4gICAgdGhpcy5kZWxldGVkTGlzdCA9IFtdO1xyXG4gICAgbGV0IHF1ZXN0aW9uID0gdGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ3FuYW1lJyk/LnZhbHVlIHx8ICcnO1xyXG4gICAgbGV0IHFubyA9IHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdxbm8nKT8udmFsdWU7XHJcbiAgICBxdWVzdGlvbiA9IHF1ZXN0aW9uID8gcXVlc3Rpb24gOiBgUXVlc3Rpb24gJHt0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAncW5vJyk/LnZhbHVlIHx8ICcnfWA7XHJcbiAgICBxdWVzdGlvbiA9IHF1ZXN0aW9uLmxlbmd0aCA+IDIwID8gcXVlc3Rpb24uc2xpY2UoMCwyMCkgKyAnLi4uJyA6IHF1ZXN0aW9uO1xyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQse2NlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnfSk7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHtcclxuICAgICAgaW1hZ2VzcmM6IGA8c3Bhbj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVFNEUyXCIvPjxwYXRoIGQ9XCJNMjggMjRWMjhNMjggMzJIMjguMDFNMzggMjhDMzggMzMuNTIyOCAzMy41MjI4IDM4IDI4IDM4QzIyLjQ3NzIgMzggMTggMzMuNTIyOCAxOCAyOEMxOCAyMi40NzcyIDIyLjQ3NzIgMTggMjggMThDMzMuNTIyOCAxOCAzOCAyMi40NzcyIDM4IDI4WlwiIHN0cm9rZT1cIiNEOTJEMjBcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZFRjNGMlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+PC9zcGFuPmAsXHJcbiAgICAgIHRpdGxlOiBgRGVsZXRlICcke3F1ZXN0aW9ufSc/YCxcclxuICAgICAgY29udGVudDogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgPGI+JyR7cXVlc3Rpb259JzwvYj4/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuYCxcclxuICAgICAgYnV0dG9udHlwZTogJ2RlbGV0ZSdcclxuICAgIH1cclxuICAgIGRpYWxvZ1JlZi5yZXN1bHQudGhlbigocmVzKSA9PiB7XHJcbiAgICAgIGlmIChyZXMgPT0gJ2RlbGV0ZScpIHtcclxuICAgICAgICBsZXQgbGlua2VkUXVlc3Rpb246YW55ID0gKCgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgICAgIGxldCB0eXBlOmFueSA9ICgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWU7XHJcbiAgICAgICAgaWYoIVsnZGVzY3JpcHRpdmUnLCdpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZScsJ3ZpZGVvJywnbGluZWFyc2NhbGUnLCd0aW1lJywnZGF0ZSddLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgICAgICBmb3IobGV0IGk9MDtpPGxpbmtlZFF1ZXN0aW9uPy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBsaW5rZWRRbiA9ICgobGlua2VkUXVlc3Rpb24uYXQoaSkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlKTtcclxuICAgICAgICAgICAgaWYobGlua2VkUW4pIHtcclxuICAgICAgICAgICAgICBsZXQgbm8gPSBsaW5rZWRRbiAtMTtcclxuICAgICAgICAgICAgICAoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KG5vKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua1R5cGUnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgICAgICAgIGlmKGxpbmtlZFFuICYmIHBhcnNlSW50KGxpbmtlZFFuKSA+IHF1ZXN0aW9uSW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3VidHJhY3RRdWVzdGlvbm5vKHNlY3Rpb25JbmRleCxsaW5rZWRRbi0xKVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAodGhpcy5nZXRTZWN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbkluZGV4LCAncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5yZW1vdmVBdChxdWVzdGlvbkluZGV4KTtcclxuICAgICAgICB0aGlzLnJlbW92ZWROZXN0ZWRRdWVzdGlvbihzZWN0aW9uSW5kZXgscW5vKTtcclxuICAgICAgICB0aGlzLnVwZGF0ZVF1ZXN0aW9uUW5vcyhzZWN0aW9uSW5kZXgpO1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KGAke3F1ZXN0aW9ufSBoYXMgYmVlbiBkZWxldGVkIWApO1xyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBzdWJ0cmFjdFF1ZXN0aW9ubm8oc2VjdGlvbkluZGV4Om51bWJlcixxdWVzdGlvbkluZGV4OmFueSkge1xyXG4gICAgbGV0IGxpbmtlZFF1ZXN0aW9uQW5zd2VycyA9ICgoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGxldCBubyA9ICgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3FubycpPy52YWx1ZTtcclxuICAgIHRoaXMuZGVsZXRlZExpc3QucHVzaChubyk7XHJcbiAgICBmb3IobGV0IGo9MDtqPGxpbmtlZFF1ZXN0aW9uQW5zd2Vycz8ubGVuZ3RoO2orKykge1xyXG4gICAgICBsZXQgbGlua2VkUW4gPSAoKGxpbmtlZFF1ZXN0aW9uQW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8udmFsdWUpO1xyXG4gICAgICBpZihsaW5rZWRRbiAmJiBwYXJzZUludChsaW5rZWRRbikgPiBxdWVzdGlvbkluZGV4KSB7XHJcbiAgICAgICAgKChsaW5rZWRRdWVzdGlvbkFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJykpPy5zZXRWYWx1ZShsaW5rZWRRbiAtIDEpO1xyXG4gICAgICAgIHRoaXMuc3VidHJhY3RRdWVzdGlvbm5vKHNlY3Rpb25JbmRleCxsaW5rZWRRbi0xKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmFpc2VmbGFnKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsIGFuc0lkeDogbnVtYmVyLHZhbHVlOiBib29sZWFuLGxpbmtJbmRleDpudW1iZXIgPSAtMSxsaW5rQW5zSW5kZXg6bnVtYmVyID0gLTEpIHtcclxuICAgIGxldCBxdWVzdGlvbiA9ICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSk/LmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgIGlmKHZhbHVlID09IHRydWUpIHtcclxuICAgICAgbGV0IGFuc3dlcnMgPSAocXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS52YWx1ZTtcclxuICAgICAgaWYobGlua0luZGV4ID09IC0xKSB7XHJcbiAgICAgICAgaWYoYW5zd2Vycy5maWx0ZXIoKHg6YW55KT0+IHguc29wRmxhZyA9PSB0cnVlKS5sZW5ndGggPT0gKGFuc3dlcnMubGVuZ3RoIC0xKSkge1xyXG4gICAgICAgICAgKChxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5hZGRDb250cm9sKCdzaG93U09QRmxhZ0Vycm9yJyx0aGlzLmZiLmNvbnRyb2wodHJ1ZSkpO1xyXG4gICAgICAgICAgdGltZXIoNTAwMCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgKChxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5yZW1vdmVDb250cm9sKCdzaG93U09QRmxhZ0Vycm9yJyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGFuc3dlcnMgPSAoKHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgIGxldCBsaW5rUXVlc3Rpb24gPSAoKGFuc3dlcnMuZ2V0KCdsaW5rUXVlc3Rpb25BbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChsaW5rSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgICAgbGV0IGxpbmtBbnN3ZXJzID0gKGxpbmtRdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLnZhbHVlXHJcbiAgICAgICAgaWYobGlua0Fuc3dlcnMuZmlsdGVyKCh4OmFueSk9PiB4LnNvcEZsYWcgPT0gdHJ1ZSkubGVuZ3RoID09IChsaW5rQW5zd2Vycy5sZW5ndGggLTEpKSB7XHJcbiAgICAgICAgICAoKGxpbmtRdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGxpbmtBbnNJbmRleCkgYXMgRm9ybUdyb3VwKS5hZGRDb250cm9sKCdzaG93U09QRmxhZ0Vycm9yJyx0aGlzLmZiLmNvbnRyb2wodHJ1ZSkpO1xyXG4gICAgICAgICAgdGltZXIoNTAwMCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAoKGxpbmtRdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGxpbmtBbnNJbmRleCkgYXMgRm9ybUdyb3VwKS5yZW1vdmVDb250cm9sKCdzaG93U09QRmxhZ0Vycm9yJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAgaWYobGlua0luZGV4ID09IC0xKVxyXG4gICAgICAgICgoKChxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpPy5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCk/LmdldCgnc29wRmxhZycpIGFzIEZvcm1Db250cm9sKSk/LnNldFZhbHVlKHZhbHVlKTsgXHJcbiAgICBlbHNlICAge1xyXG4gICAgICAgbGV0IGFuc3dlcnMgPSAoKHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgIGxldCBsaW5rUXVlc3Rpb24gPSAoKGFuc3dlcnMuZ2V0KCdsaW5rUXVlc3Rpb25BbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChsaW5rSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgICgoKChsaW5rUXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KT8uYXQobGlua0Fuc0luZGV4KSBhcyBGb3JtR3JvdXApPy5nZXQoJ3NvcEZsYWcnKSBhcyBGb3JtQ29udHJvbCkpPy5zZXRWYWx1ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhZGROZXN0ZWRRdWVzdGlvbihzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLCBhbnNJZHg6IG51bWJlcix2YWx1ZTogYm9vbGVhbixsaW5rZWRRdWVzdGlvbkluZGV4Om51bWJlcj0tMSxsaW5rZWRBbnN3ZXI6bnVtYmVyID0gLTEpIHtcclxuICAgICBsZXQgYW5zd2VyID0gKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cFxyXG5cclxuICAgICAgXHJcbiAgICAgIFxyXG4gICAgaWYoIWFuc3dlcj8uZ2V0KCdsaW5rUXVlc3Rpb25BbnN3ZXJzJyk/LnZhbHVlLmxlbmd0aCkge1xyXG4gICAgICBhbnN3ZXIuc2V0Q29udHJvbCgnbGlua1F1ZXN0aW9uQW5zd2VycycsXHJcbiAgICAgICAgdGhpcy5mYi5hcnJheShbXHJcbiAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgXCJxbm9cIjogdGhpcy5mYi5jb250cm9sKDEpLFxyXG4gICAgICAgICAgICAncW5hbWUnOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAgICdhbnN3ZXJUeXBlJzogdGhpcy5mYi5jb250cm9sKCdkZXNjcmlwdGl2ZScsXHJcbiAgICAgICAgICAgICAgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcImRlc2NyaXB0aXZlXCIsIFwieWVzL25vXCIsIFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIiwgXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsIFwiaW1hZ2VcIiwgXCJ2aWRlb1wiLCdtdWx0aXBsZUltYWdlJywnZGF0ZScsJ2xpbmVhcnNjYWxlJywndGltZSddKSksXHJcbiAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnOnRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgndGV4dCcpLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICBdKVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IG5lc3RlZFF1ZXN0aW9uID0gYW5zd2VyLmdldCgnbGlua1F1ZXN0aW9uQW5zd2VycycpIGFzIEZvcm1BcnJheVxyXG4gICAgICBuZXN0ZWRRdWVzdGlvbi5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbCgxKSxcclxuICAgICAgICAncW5hbWUnOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgJ2Fuc3dlclR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ2Rlc2NyaXB0aXZlJyxcclxuICAgICAgICAgIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJkZXNjcmlwdGl2ZVwiLCBcInllcy9ub1wiLCBcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsIFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLCBcImltYWdlXCIsIFwidmlkZW9cIiwnbXVsdGlwbGVJbWFnZScsJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXSkpLFxyXG4gICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAncnVuQUlEZXNjcmlwdGlvbic6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnOnRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCd0ZXh0JyksXHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgfVxyXG4gXHJcbiAgYWNjb3JkaWFuKGluZGV4OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnNob3cgPT0gaW5kZXgpIHtcclxuICAgICAgdGhpcy5zaG93ID0gLTE7XHJcbiAgICAgIHRoaXMuc2VjdGlvbkluZGV4ID0gLTE7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3cgPSBpbmRleDtcclxuICAgICAgdGhpcy5zZWN0aW9uSW5kZXggPSBpbmRleDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZVNlY3Rpb24oc2VjdGlvbkluZGV4OiBhbnkpIHtcclxuICAgIGxldCBzZWN0aW9uID0gKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgbGV0IHNlY3Rpb25MZW5ndGg6YW55ID0gXCIgXCIgKyAoc2VjdGlvbi5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkubGVuZ3RoO1xyXG4gICAgbGV0IHNlY3Rpb25OYW1lOnN0cmluZyA9IHNlY3Rpb24uZ2V0KCduYW1lJyk/LnZhbHVlO1xyXG4gICAgc2VjdGlvbk5hbWUgPSBzZWN0aW9uTmFtZS5sZW5ndGggPiAyMCA/IChzZWN0aW9uTmFtZS5zbGljZSgwLCAyMCkgKyBcIi4uLlwiKSA6IHNlY3Rpb25OYW1lO1xyXG4gICAgbGV0IHF1ZXN0aW9uX3RleHQgPSAnJ1xyXG4gICAgaWYgKHNlY3Rpb25MZW5ndGggPT0gMSlcclxuICAgICAgcXVlc3Rpb25fdGV4dCA9ICdRdWVzdGlvbidcclxuICAgIGVsc2VcclxuICAgICBxdWVzdGlvbl90ZXh0ID0gJ1F1ZXN0aW9ucydcclxuICAgIGNvbnN0IHBvcHVwY29udGVudCA9IHtcclxuICAgICAgZGlzcGxheXByb3A6IGZhbHNlLFxyXG4gICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUU0RTJcIi8+PHBhdGggZD1cIk0yOCAyNFYyOE0yOCAzMkgyOC4wMU0zOCAyOEMzOCAzMy41MjI4IDMzLjUyMjggMzggMjggMzhDMjIuNDc3MiAzOCAxOCAzMy41MjI4IDE4IDI4QzE4IDIyLjQ3NzIgMjIuNDc3MiAxOCAyOCAxOEMzMy41MjI4IDE4IDM4IDIyLjQ3NzIgMzggMjhaXCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkVGM0YyXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz5gLFxyXG4gICAgICB0aXRsZTogYERlbGV0ZSAnJHtzZWN0aW9uTmFtZX0gU2VjdGlvbic/YCxcclxuICAgICAgY29udGVudDogYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUnIDxiPicke3NlY3Rpb25OYW1lfSc8L2I+PyB3aXRoIDxiPiR7c2VjdGlvbkxlbmd0aH0gJHtxdWVzdGlvbl90ZXh0fTwvYj4gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS5gLFxyXG4gICAgICBidXR0b250eXBlOiAnZGVsZXRlJ1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQse2NlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnfSk7XHJcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHBvcHVwY29udGVudFxyXG4gICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcyA9PSAnZGVsZXRlJykge1xyXG4gICAgICAgICh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkucmVtb3ZlQXQoc2VjdGlvbkluZGV4KVxyXG4gICAgICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIEFkZE1vcmVBbnMoc2VjdGlvbmluZGV4OiBhbnksIHF1ZXN0aW9uSW5kZXg6IGFueSx0eXBlOnN0cmluZykge1xyXG4gICAgbGV0IGFuc29wdGlvbiA9XHJcbiAgICAgICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgICAuYXQoc2VjdGlvbmluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAgIC5hdChxdWVzdGlvbkluZGV4KVxyXG4gICAgICAgIC5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgbGV0IGFuc29wdGlvbkxlbmd0aCA9IGFuc29wdGlvbi5sZW5ndGg7XHJcbiAgICBpZiAoYW5zb3B0aW9uTGVuZ3RoIDw9IDI5KSB7XHJcbiAgICAgIGFuc29wdGlvbi5wdXNoKFxyXG4gICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbChgYCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woYW5zb3B0aW9uTGVuZ3RoICsgMSksXHJcbiAgICAgICAgICAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKCdDYXB0dXJlIEltYWdlJywgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcIkNhcHR1cmUgSW1hZ2VcIiwgXCJEZXNjcmlwdGl2ZSBBbnN3ZXJcIixcIkNhcHR1cmUgVmlkZW9cIl0pKSxcclxuICAgICAgICAgICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAuLi4odHlwZSA9PSAnbXVsdGlwbGVjaG9pY2VzaW5nbGUnID8ge1wibGlua2VkUXVlc3Rpb25cIjp0aGlzLmZiLmNvbnRyb2woMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSwnc2hvd0xpbmtlZCc6dGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pfSA6IHt9KSxcclxuICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgLi4uKHR5cGUgPT0gJ211bHRpcGxlSW1hZ2UnID8geydkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgndGV4dCcpfTp7fSlcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVsZXRlQW5zd2VyKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsIGFkZG1vcmVxbkluZGV4OiBudW1iZXIsYW5zSW5kZXg6bnVtYmVyID0gLTEpIHtcclxuICAgIGlmKGFuc0luZGV4ICE9IC0xKSB7XHJcbiAgICAgIHRoaXMuZ2V0Rm9ybUFycmF5UXVlc3Rpb25zQW5zd2VyKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ2Fuc3dlcnMnLGFuc0luZGV4KS5yZW1vdmVBdChhZGRtb3JlcW5JbmRleCk7ICAgIFxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuZ2V0Rm9ybUFycmF5UXVlc3Rpb25zQW5zd2VyKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ2Fuc3dlcnMnLGFuc0luZGV4KS5yZW1vdmVBdChhZGRtb3JlcW5JbmRleCk7ICAgIFxyXG4gICAgfVxyXG4gICAgdGhpcy5DaGVja2xpc3RGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIGNsb25lUXVlc3Rpb24oc2VjdGlvbmluZGV4OiBhbnksIHF1ZXN0aW9uaW5kZXg6IGFueSkge1xyXG4gICAgbGV0IGNsb25lUXVlc3Rpb24gPSAoKHRoaXMuZ2V0U2VjdGlvbkZvcm1Db250cm9sKHNlY3Rpb25pbmRleCwgJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25pbmRleCkgYXMgRm9ybUdyb3VwKS52YWx1ZTtcclxuICAgIGxldCBxdWVzdGlvbkxlbmd0aCA9ICAodGhpcy5nZXRTZWN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbmluZGV4LCAncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS52YWx1ZTtcclxuICAgIGxldCBxdWVzdGlvbjogYW55O1xyXG4gICAgbGV0IGFuc3dlcjogYW55O1xyXG4gICAgaWYgKGNsb25lUXVlc3Rpb24uYW5zd2Vycykge1xyXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShjbG9uZVF1ZXN0aW9uLmFuc3dlcnMpICYmIGNsb25lUXVlc3Rpb24uYW5zd2Vycy5sZW5ndGgpIHtcclxuICAgICAgICBhbnN3ZXIgPSBbXTtcclxuICAgICAgICBjbG9uZVF1ZXN0aW9uLmFuc3dlcnMuZm9yRWFjaCgoazogYW55KSA9PiB7XHJcbiAgICAgICAgICBhbnN3ZXIucHVzaChcclxuICAgICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgJiYgY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSAhPSAndmlkZW8nID8geyAnYW5zd2VyJzogdGhpcy5mYi5jb250cm9sKGs/LmFuc3dlciwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpICYmIGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJyA/IHsgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbChrPy5hbnN3ZXJvcHRpb25OdW1iZXIgKyAxKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpICYmIGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJyA/IHsgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woaz8uc29wRmxhZyA/IGs/LnNvcEZsYWcgOiBmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpICYmIGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJyA/IHsgJ3ZhbGlkYXRpb24nOiB0aGlzLmZiLmNvbnRyb2woaz8udmFsaWRhdGlvbiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpICYmIGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJyA/IHsgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKGs/LnZhbGlkYXRpb25UeXBlLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiQ2FwdHVyZSBJbWFnZVwiLCBcIkRlc2NyaXB0aXZlIEFuc3dlclwiLCBcIkNhcHR1cmUgVmlkZW9cIl0pKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLighWydkZXNjcmlwdGl2ZScsJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnZGF0ZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woaz8ucmVmZXJlbmNlSW1hZ2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCghWydkZXNjcmlwdGl2ZScsJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnZGF0ZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpKSA/IHsgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woaz8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA9PSB0cnVlID8gdHJ1ZSA6IGZhbHNlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLighWydkZXNjcmlwdGl2ZScsJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnZGF0ZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woaz8ucnVuQUkgPyBrPy5ydW5BSSA6IGZhbHNlKSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLihbJ211bHRpcGxlY2hvaWNlc2luZ2xlJywneWVzL25vJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdzaG93TGlua2VkJzogZmFsc2UgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oWydtdWx0aXBsZWNob2ljZXNpbmdsZScsJ3llcy9ubyddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAnbGlua2VkUXVlc3Rpb24nOiAwIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnbXVsdGlwbGVjaG9pY2VzaW5nbGUnLCd5ZXMvbm8nXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ2xpbmtlZFF1ZXN0aW9uJzogMCB9IDoge30pLFxyXG4gICAgICAgICAgICAgIGRlc2NyaXB0aXZldHlwZTp0aGlzLmZiLmNvbnRyb2woaz8uZGVzY3JpcHRpdmV0eXBlKVxyXG5cclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYodHlwZW9mIGNsb25lUXVlc3Rpb24uYW5zd2VycyA9PT0gJ29iamVjdCcgJiYgY2xvbmVRdWVzdGlvbi5hbnN3ZXJzICE9PSBudWxsKSB7XHJcbiAgICAgICAgYW5zd2VyID0gdGhpcy5mYi5ncm91cCh7ICAgICAgICAgIFxyXG4gICAgICAgICAgLi4uKFsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmFuc3dlcnM/LnJlZmVyZW5jZUltYWdlKSB9IDoge30pLFxyXG4gICAgICAgICAgLi4uKChbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgfHwgY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSA9PSAndmlkZW8nKSA/IHsgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8uYW5zd2Vycz8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA9PSB0cnVlID8gdHJ1ZSA6IGZhbHNlKSB9IDoge30pLFxyXG4gICAgICAgICAgLi4uKFsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmFuc3dlcnM/LnJ1bkFJID8gY2xvbmVRdWVzdGlvbj8uYW5zd2Vycz8ucnVuQUkgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgIC4uLihbJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgZGVzY3JpcHRpdmV0eXBlOnRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJzPy5kZXNjcmlwdGl2ZXR5cGUpIH0gOiB7fSksXHJcbiAgICAgICAgICAuLi4oWydsaW5lYXJzY2FsZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAncmFuZ2VTdGFydCc6dGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmFuc3dlcnMucmFuZ2VTdGFydCksJ3JhbmdlRW5kJzp0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8uYW5zd2Vycy5yYW5nZUVuZCkgfSA6IHt9KSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcXVlc3Rpb24gPSB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgXCJxbm9cIjogdGhpcy5mYi5jb250cm9sKHF1ZXN0aW9uTGVuZ3RoLmxlbmd0aCArIDEpLFxyXG4gICAgICAncW5hbWUnOiB0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8ucW5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICdhbnN3ZXJUeXBlJzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJkZXNjcmlwdGl2ZVwiLCBcInllcy9ub1wiLCBcIm11bHRpcGxlY2hvaWNlc2luZ2xlXCIsIFwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiLFwiZGVzY3JpcHRpdmVJbWFnZVwiLCBcImltYWdlXCIsIFwidmlkZW9cIiwnbXVsdGlwbGVJbWFnZScsJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXSkpLFxyXG4gICAgICAuLi4oIVsnZGVzY3JpcHRpdmUnLCdkYXRlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdhbnN3ZXJzJzogKFsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJywgJ3ZpZGVvJywnbXVsdGlwbGVJbWFnZScsJ2xpbmVhcnNjYWxlJywndGltZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpKSA/IGFuc3dlciA6IHRoaXMuZmIuYXJyYXkoYW5zd2VyLFt1bmlxdWVTdHJpbmdWYWxpZGF0b3IoKV0pIH0gOiB7fSksXHJcbiAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5ydW5BSSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8ucnVuQUlEZXNjcmlwdGlvbiksXHJcbiAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkpLFxyXG4gICAgICAnbGlua1R5cGUnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8uZGVzY3JpcHRpdmV0eXBlKSxcclxuICAgICAgJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnOnRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5xdWVzdGlvblJlZmVyZW5jZUltYWdlKVxyXG5cclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcy51cGRhdGVDbG9uZWRsaW5rZWRRdWVzdGlvbk5vKHNlY3Rpb25pbmRleCwgY2xvbmVRdWVzdGlvbj8ucW5vKTtcclxuICAgICh0aGlzLmdldFNlY3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uaW5kZXgsICdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmluc2VydChjbG9uZVF1ZXN0aW9uPy5xbm8scXVlc3Rpb24pO1xyXG4gICAgdGhpcy5DaGVja2xpc3RGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMudXBkYXRlUXVlc3Rpb25Rbm9zKHNlY3Rpb25pbmRleCk7XHJcbiAgICB0aGlzLnN3YWxUb2FzdChgUXVlc3Rpb24gJHtjbG9uZVF1ZXN0aW9uPy5xbm99IGhhcyBiZWVuIGR1cGxpY2F0ZWQhYCk7XHJcbiAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNsb25lZGxpbmtlZFF1ZXN0aW9uTm8oc2VjSWR4Om51bWJlcixxaWR4Om51bWJlcikge1xyXG4gICAgbGV0IHF1ZXN0aW9ucyA9ICh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlc3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBhbnN3ZXJzID0gKHF1ZXN0aW9ucy5hdChpKSBhcyBGb3JtR3JvdXApPy5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgIGlmKGFuc3dlcnMpIHtcclxuICAgICAgICBmb3IobGV0IGo9MDtqPGFuc3dlcnMubGVuZ3RoO2orKykge1xyXG4gICAgICAgICAgbGV0IGxpbmtlZCA9IChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCk/LmdldCgnc2hvd0xpbmtlZCcpPy52YWx1ZTtcclxuICAgICAgICAgIGlmKGxpbmtlZCkge1xyXG4gICAgICAgICAgICBsZXQgcXVlc3Rpb25ObyA9IChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCk/LmdldCgnbGlua2VkUXVlc3Rpb24nKT8udmFsdWU7XHJcbiAgICAgICAgICAgIGlmKHF1ZXN0aW9uTm8gPiBxaWR4KSB7XHJcbiAgICAgICAgICAgICAgKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZShxdWVzdGlvbk5vICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNhdmVDaGVja2xpc3RRdWVzdGlvbnModHlwZTogc3RyaW5nKSB7XHJcbiAgICAgIGxldCBjaGVja2xpc3QgPSB0aGlzLkNoZWNrbGlzdEZvcm0udmFsdWU7XHJcbiAgICAgIGlmKCF0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnZhbGlkKSB7XHJcbiAgICAgICAgbGV0IGVycjogc3RyaW5nID0gJ1BsZWFzZSBlbnRlciBjaGVja2xpc3QgbmFtZSEnO1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gICAgICBcclxuICAgICAgXHJcbiAgICAgIGlmICghdGhpcy5DaGVja2xpc3RGb3JtLnZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5tYXJrRm9ybUNvbnRyb2xzQXNUb3VjaGVkKHRoaXMuQ2hlY2tsaXN0Rm9ybSwwKTtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvRXJyb3JzKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHNlY3Rpb25zID0gY2hlY2tsaXN0LnNlY3Rpb25zO1xyXG4gICAgICBpZih0eXBlID09ICdzYXZlQXNEcmFmdCcpIHtcclxuICAgICAgICBjaGVja2xpc3Quc3VibWl0VHlwZSA9ICdzYXZlJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjaGVja2xpc3Quc3VibWl0VHlwZSA9ICdjb25maWd1cmUnO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKCFzZWN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgZXJyOiBzdHJpbmcgPSAnUGxlYXNlIGFkZCBhdGxlYXN0IG9uZSBzZWN0aW9uISc7XHJcbiAgICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYodHlwZSA9PSAnY29uZmlndXJlJyAmJiAhc2VjdGlvbnNbaV0ucXVlc3Rpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgbGV0IGVycjogc3RyaW5nID0gJ1BsZWFzZSBhZGQgYXRsZWFzdCBvbmUgcXVlc3Rpb24gaW4gc2VjdGlvbiEnO1xyXG4gICAgICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZmluZEV4aXN0cyA9IHNlY3Rpb25zLmZpbHRlcigoZWxlOmFueSxpbmRleDphbnkpID0+IHtcclxuICAgICAgICAgIGlmKGluZGV4ICE9IGkgJiYgc2VjdGlvbnNbaV0ubmFtZS50cmltKCkgPT0gZWxlLm5hbWUudHJpbSgpKVxyXG4gICAgICAgICAgICByZXR1cm4gZWxlO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgaWYoZmluZEV4aXN0cy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KGAke3NlY3Rpb25zW2ldLm5hbWV9IHNlY3Rpb24gbmFtZSBpcyBEdXBsaWNhdGVkYCAsJ2Vycm9yJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2VjdGlvbnNbaV0ucXVlc3Rpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICBsZXQgYW5zVHlwZSA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlO1xyXG4gICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLnFuYW1lID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLnFuYW1lLnRyaW0oKS5yZXBsYWNlQWxsKC9cXG4vZywgJycpXHJcbiAgICAgICAgICBsZXQgZmluZEV4aXN0cyA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9ucy5maWx0ZXIoKGVsZTphbnksaW5kZXg6YW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmKGluZGV4ICE9IGogJiYgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLnFuYW1lLnRyaW0oKSA9PSBlbGUucW5hbWUudHJpbSgpKVxyXG4gICAgICAgICAgICAgIHJldHVybiBlbGU7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgaWYoZmluZEV4aXN0cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zd2FsVG9hc3QoYCR7c2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLnFuYW1lfSBxdWVzdGlvbiBuYW1lIGlzIER1cGxpY2F0ZWRgICwnZXJyb3InKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYoYW5zVHlwZSA9PSAnbGluZWFyc2NhbGUnKSB7XHJcbiAgICAgICAgICAgIGlmKHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzLnJhbmdlU3RhcnQgPiBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5yYW5nZUVuZCl7XHJcbiAgICAgICAgICAgICAgbGV0IGVycjogc3RyaW5nID0gJ1JhbmdlIHN0YXJ0IGlzIGdyZWF0ZXIgdGhhbiByYW5nZSBFbmQuJztcclxuICAgICAgICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZihhbnNUeXBlICE9ICdkZXNjcmlwdGl2ZScpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5kZXNjcmlwdGl2ZXR5cGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoW1wibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiXS5pbmNsdWRlcyhhbnNUeXBlKSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ3Nob3dMaW5rZWQnXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbnN3ZXInXSA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbnN3ZXInXS50cmltKCk7XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2xpbmtlZFF1ZXN0aW9uJ10gPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoW1wibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcInllcy9ub1wiXS5pbmNsdWRlcyhhbnNUeXBlKSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2VycyA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMgIT09IG51bGwgJiZcclxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMpIHx8IFsnZGVzY3JpcHRpdmUnLCdkYXRlJ10uaW5jbHVkZXMoYW5zVHlwZSkpIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgXCJhbnN3ZXJcIjogJycsXHJcbiAgICAgICAgICAgICAgXCJhbnN3ZXJvcHRpb25OdW1iZXJcIjogMSxcclxuICAgICAgICAgICAgICBcInNvcEZsYWdcIjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9uXCI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIFwidmFsaWRhdGlvblR5cGVcIjogXCJcIixcclxuICAgICAgICAgICAgICBcInZhbGlkYXRpb25BbnN3ZXJcIjogXCJcIixcclxuICAgICAgICAgICAgICBcInJlZmVyZW5jZUltYWdlXCI6IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA/IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJzaG93TGlua2VkXCI6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgXCJsaW5rZWRRdWVzdGlvblwiOjAsXHJcbiAgICAgICAgICAgICAgLi4uKGFuc1R5cGUgPT0gJ211bHRpcGxlSW1hZ2UnID8geydkZXNjcmlwdGl2ZXR5cGUnOnNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5kZXNjcmlwdGl2ZXR5cGV9Ont9KSxcclxuICAgICAgICAgICAgICAuLi4oYW5zVHlwZSA9PSAnbGluZWFyc2NhbGUnID8geydyYW5nZVN0YXJ0JzpzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmFuZ2VTdGFydH06e30pLFxyXG4gICAgICAgICAgICAgIC4uLihhbnNUeXBlID09ICdsaW5lYXJzY2FsZScgPyB7J3JhbmdlRW5kJzpzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmFuZ2VFbmR9Ont9KVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID8gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYoYW5zVHlwZSA9PSAnbXVsdGlwbGVJbWFnZScpIHtcclxuICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uZGVzY3JpcHRpdmV0eXBlID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZSA/IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5kZXNjcmlwdGl2ZXR5cGUgOiAndGV4dCc7XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UgPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmVmZXJlbmNlSW1hZ2UgPyBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmVmZXJlbmNlSW1hZ2UgOiAnJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2VycyA9IFtpdGVtXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY2hlY2tsaXN0LnNlY3Rpb25zID0gc2VjdGlvbnM7XHJcbiAgICAgIGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lID0gY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpLnNsaWNlKDEpO1xyXG4gICAgICBjaGVja2xpc3QuY2xpZW50SWQgPSB0aGlzLmNsaWVudElkO1xyXG4gICAgICBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZSA9IGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lLnRyaW0oKTtcclxuICAgICAgY2hlY2tsaXN0LmNoZWNrbGlzdERlc2NyaXB0aW9uID0gY2hlY2tsaXN0Py5jaGVja2xpc3REZXNjcmlwdGlvbiA/IGNoZWNrbGlzdD8uY2hlY2tsaXN0RGVzY3JpcHRpb24/LnRyaW0oKSA6ICcnO1xyXG4gICAgICB0aGlzLnNvcFNlcnZpY2UuY3JlYXRlY2hlY2tsaXN0KGNoZWNrbGlzdCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgICBpZiAocmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICBpZih0eXBlPT0nY29uZmlndXJlJykge1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoYC9tYW5hZ2UvdHJheC9jb25maWd1cmU/Y2hlY2tMaXN0SWQ9JHtyZXMuZGF0YS5jaGVja2xpc3RJZH1gKTsgICAgIFxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9tYW5hZ2UvdHJheC9jaGVja2xpc3QnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zd2FsVG9hc3QoJ1VuYWJsZSB0byBjcmVhdGUgY2hlY2tsaXN0IScsJ2Vycm9yJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KCdVbmFibGUgdG8gY3JlYXRlIGNoZWNrbGlzdCEnLCdlcnJvcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBlcnIgPSBlcnJvcj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8ICdVbmFibGUgdG8gY3JlYXRlIGNoZWNrbGlzdCFTZXJ2ZXIgRXJyb3IhJztcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICAgIH1cclxuICAgIClcclxuICB9XHJcblxyXG4gIHNhdmVBc0RyYWZ0UG9wKHR5cGU6IHN0cmluZykge1xyXG4gICAgICB0aGlzLnBvcHVwQ291bnQgPSB0aGlzLnBvcHVwQ291bnQgKyAxO1xyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCx7Y2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCd9KTtcclxuICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSB7XHJcbiAgICAgICAgaW1hZ2VzcmM6ICBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRjBDN1wiLz48cGF0aCBkPVwiTTI3Ljk5OTggMjQuMDAxMlYyOC4wMDEyTTI3Ljk5OTggMzIuMDAxMkgyOC4wMDk4TTI2LjI4OTggMTguODYxMkwxNy44MTk4IDMzLjAwMTJDMTcuNjQ1MSAzMy4zMDM2IDE3LjU1MjcgMzMuNjQ2NSAxNy41NTE4IDMzLjk5NTdDMTcuNTUwOCAzNC4zNDQ5IDE3LjY0MTMgMzQuNjg4MyAxNy44MTQyIDM0Ljk5MTdDMTcuOTg3MSAzNS4yOTUxIDE4LjIzNjUgMzUuNTQ3OSAxOC41Mzc1IDM1LjcyNUMxOC44Mzg1IDM1LjkwMjEgMTkuMTgwNiAzNS45OTczIDE5LjUyOTggMzYuMDAxMkgzNi40Njk4QzM2LjgxOSAzNS45OTczIDM3LjE2MTEgMzUuOTAyMSAzNy40NjIxIDM1LjcyNUMzNy43NjMxIDM1LjU0NzkgMzguMDEyNCAzNS4yOTUxIDM4LjE4NTQgMzQuOTkxN0MzOC4zNTgzIDM0LjY4ODMgMzguNDQ4OCAzNC4zNDQ5IDM4LjQ0NzggMzMuOTk1N0MzOC40NDY4IDMzLjY0NjUgMzguMzU0NCAzMy4zMDM2IDM4LjE3OTggMzMuMDAxMkwyOS43MDk4IDE4Ljg2MTJDMjkuNTMxNSAxOC41NjczIDI5LjI4MDUgMTguMzI0MyAyOC45ODEgMTguMTU1N0MyOC42ODE0IDE3Ljk4NyAyOC4zNDM1IDE3Ljg5ODQgMjcuOTk5OCAxNy44OTg0QzI3LjY1NiAxNy44OTg0IDI3LjMxODEgMTcuOTg3IDI3LjAxODYgMTguMTU1N0MyNi43MTkxIDE4LjMyNDMgMjYuNDY4IDE4LjU2NzMgMjYuMjg5OCAxOC44NjEyWlwiIHN0cm9rZT1cIiNEQzY4MDNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0ZGRkFFQlwiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICB0aXRsZTpgVW5zYXZlZCBjaGFuZ2VzYCxcclxuICAgICAgICBjb250ZW50OmBEbyB5b3Ugd2FudCB0byBzYXZlIGFzIGRyYWZ0P2AsXHJcbiAgICAgICAgYnV0dG9udHlwZTonZHJhZnQnXHJcbiAgICAgIH1cclxuICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpPT57XHJcbiAgICAgICAgaWYoIXJlcykge1xyXG4gICAgICAgICAgdGhpcy5wb3B1cENvdW50ID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYocmVzKSB7XHJcbiAgICAgICAgICBpZih0eXBlID09ICdjcmVhdGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2F2ZUNoZWNrbGlzdFF1ZXN0aW9ucygnc2F2ZUFzRHJhZnQnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hlY2tsaXN0UXVlc3Rpb25zKCdzYXZlQXNEcmFmdCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGVja2xpc3RRdWVzdGlvbnModHlwZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgc2VjdGlvbnNhcnJheTogYW55ID0gW107XHJcbiAgICBsZXQgY2hlY2tsaXN0OiBhbnk7XHJcbiAgICBcclxuICAgIGlmKCF0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnZhbGlkKSB7XHJcbiAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgZW50ZXIgY2hlY2tsaXN0IG5hbWUhJztcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9ICAgICAgXHJcbiAgICBcclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuQ2hlY2tsaXN0Rm9ybSk7XHJcbiAgICAvLyByZXR1cm47XHJcbiAgICBjaGVja2xpc3QgPSB0aGlzLkNoZWNrbGlzdEZvcm0udmFsdWU7XHJcbiAgICBpZiAoIXRoaXMuQ2hlY2tsaXN0Rm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLm1hcmtGb3JtQ29udHJvbHNBc1RvdWNoZWQodGhpcy5DaGVja2xpc3RGb3JtLDApO1xyXG4gICAgICB0aGlzLnNjcm9sbFRvRXJyb3JzKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc2VjdGlvbnNhcnJheSA9IGNoZWNrbGlzdC5zZWN0aW9ucztcclxuICAgIGlmKCF0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnZhbGlkKSB7XHJcbiAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgZW50ZXIgY2hlY2tsaXN0IG5hbWUhJztcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZih0eXBlID09ICdzYXZlQXNEcmFmdCcpIHtcclxuICAgICAgY2hlY2tsaXN0LnN1Ym1pdFR5cGUgPSAnc2F2ZSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjaGVja2xpc3Quc3VibWl0VHlwZSA9ICdjb25maWd1cmUnO1xyXG4gICAgfVxyXG4gICAgaWYoIXNlY3Rpb25zYXJyYXkubGVuZ3RoKSB7XHJcbiAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgYWRkIGF0bGVhc3Qgb25lIHNlY3Rpb24hJztcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlY3Rpb25zYXJyYXkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHNlY3Rpb25OYW1lID0gc2VjdGlvbnNhcnJheVtpXS5uYW1lO1xyXG4gICAgICBsZXQgZmluZEV4aXN0cyA9IHNlY3Rpb25zYXJyYXkuZmlsdGVyKChlbGU6YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoaW5kZXggIT0gaSAmJiBzZWN0aW9uTmFtZS50cmltKCkgPT0gZWxlLm5hbWUudHJpbSgpKVxyXG4gICAgICAgICAgICByZXR1cm4gZWxlO1xyXG4gICAgICB9KVxyXG4gICAgICBpZihmaW5kRXhpc3RzLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KGAke3NlY3Rpb25OYW1lfSBzZWN0aW9uIG5hbWUgaXMgRHVwbGljYXRlZGAgLCdlcnJvcicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZih0eXBlID09ICdjb25maWd1cmUnICYmICFzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9ucy5sZW5ndGgpIHtcclxuICAgICAgICBsZXQgZXJyOiBzdHJpbmcgPSAnUGxlYXNlIGFkZCBhdGxlYXN0IG9uZSBxdWVzdGlvbiBpbiBzZWN0aW9uISc7XHJcbiAgICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0ucW5hbWUgPSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5xbmFtZS50cmltKCkucmVwbGFjZUFsbCgvXFxuL2csICcnKVxyXG4gICAgICAgIGxldCBmaW5kRXhpc3RzID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnMuZmlsdGVyKChlbGU6YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoaW5kZXggIT0gaiAmJiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5xbmFtZS50cmltKCkgPT0gZWxlLnFuYW1lLnRyaW0oKSlcclxuICAgICAgICAgICAgcmV0dXJuIGVsZTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmKGZpbmRFeGlzdHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnN3YWxUb2FzdChgJHtzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5xbmFtZX0gcXVlc3Rpb24gbmFtZSBpcyBEdXBsaWNhdGVkYCAsJ2Vycm9yJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUgPT0gJ2xpbmVhcnNjYWxlJykge1xyXG4gICAgICAgICAgaWYoc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5yYW5nZVN0YXJ0ID4gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5yYW5nZUVuZCl7XHJcbiAgICAgICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdSYW5nZSBzdGFydCBpcyBncmVhdGVyIHRoYW4gcmFuZ2UgRW5kLic7XHJcbiAgICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlICE9ICdkZXNjcmlwdGl2ZScpIHtcclxuICAgICAgICAgIGRlbGV0ZSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5kZXNjcmlwdGl2ZXR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChbXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCJdLmluY2x1ZGVzKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgLy8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VySW5wdXRTdHlsZSddID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZTtcclxuICAgICAgICAgICAgLy8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsncmVmZXJlbmNlSW1hZ2UnXSA9IFwiXCI7XHJcbiAgICAgICAgICAgIC8vIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWyd2YWxpZGF0aW9uQW5zd2VyJ10gPSBcIlwiOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydydW5BSSddID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10udHJpbSgpO1xyXG4gICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydzaG93TGlua2VkJ10gPSBmYWxzZTtcclxuICAgICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnbGlua2VkUXVlc3Rpb24nXSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChbXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwieWVzL25vXCJdLmluY2x1ZGVzKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10udHJpbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgaWYgKHR5cGVvZiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VycyAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgIUFycmF5LmlzQXJyYXkoc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VycykgfHwgWydkZXNjcmlwdGl2ZScsJ2RhdGUnXS5pbmNsdWRlcyhzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlKSkge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHtcclxuICAgICAgICAgICAgICBcImFuc3dlclwiOiAnJyxcclxuICAgICAgICAgICAgICBcImFuc3dlcm9wdGlvbk51bWJlclwiOiAxLFxyXG4gICAgICAgICAgICAgIFwic29wRmxhZ1wiOiBmYWxzZSxcclxuICAgICAgICAgICAgICBcInZhbGlkYXRpb25cIjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9uQW5zd2VyXCI6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9uVHlwZVwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwicmVmZXJlbmNlSW1hZ2VcIjogc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmVmZXJlbmNlSW1hZ2UgPyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgXCJzaG93TGlua2VkXCI6ZmFsc2UsXHJcbiAgICAgICAgICAgICAgXCJsaW5rZWRRdWVzdGlvblwiOjAsXHJcbiAgICAgICAgICAgICAgLi4uKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUgPT0gJ211bHRpcGxlSW1hZ2UnID8geydkZXNjcmlwdGl2ZXR5cGUnOnNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZX06e30pLFxyXG4gICAgICAgICAgICAgIC4uLihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlID09ICdsaW5lYXJzY2FsZScgPyB7J3JhbmdlU3RhcnQnOnNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LnJhbmdlU3RhcnR9Ont9KSxcclxuICAgICAgICAgICAgICAuLi4oc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZSA9PSAnbGluZWFyc2NhbGUnID8geydyYW5nZUVuZCc6c2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmFuZ2VFbmR9Ont9KVxyXG4gICAgICAgICAgICAgIC8vIFwiYWxsb3dVcGxvYWRmcm9tR2FsbGVyeVwiOiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIC8vIFwiYW5zd2VySW5wdXRTdHlsZVwiOiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbnN3ZXJJbnB1dFN0eWxlID8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uYW5zd2VySW5wdXRTdHlsZSA6IFwiXCIsXHJcbiAgICAgICAgICAgICAgLy8gXCJydW5BSVwiOiBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzLnJ1bkFJID8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5ydW5BSSA6IGZhbHNlLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA/IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgOiBmYWxzZTtcclxuICAgICAgICAgICAgaWYoc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZSA9PSAnbXVsdGlwbGVJbWFnZScpIHtcclxuICAgICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5kZXNjcmlwdGl2ZXR5cGUgPSBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5kZXNjcmlwdGl2ZXR5cGUgPyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5kZXNjcmlwdGl2ZXR5cGUgOiAndGV4dCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VycyA9IFtpdGVtXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNoZWNrbGlzdC5zZWN0aW9ucyA9IHNlY3Rpb25zYXJyYXk7XHJcbiAgICBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZSA9IGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lLnRyaW0oKS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lLnRyaW0oKS5zbGljZSgxKTtcclxuICAgIGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lID0gY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpO1xyXG4gICAgY2hlY2tsaXN0LmNoZWNrbGlzdERlc2NyaXB0aW9uID0gY2hlY2tsaXN0Py5jaGVja2xpc3REZXNjcmlwdGlvbiA/IGNoZWNrbGlzdD8uY2hlY2tsaXN0RGVzY3JpcHRpb24/LnRyaW0oKSA6ICcnO1xyXG4gICAgY2hlY2tsaXN0LmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuICAgIHRoaXMuc29wU2VydmljZS5nZXR1cGRhdGVjaGVja2xpc3QodGhpcy5lZGl0dmFsdWUsIGNoZWNrbGlzdCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmKHJlcykge1xyXG4gICAgICAgIGlmIChyZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICBpZih0eXBlPT0nY29uZmlndXJlJykge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAvbWFuYWdlL3RyYXgvY29uZmlndXJlP2NoZWNrTGlzdElkPSR7cmVzLmRhdGEuY2hlY2tsaXN0SWR9JnNob3dFZGl0PXRydWVgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9tYW5hZ2UvdHJheC9jaGVja2xpc3QnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zd2FsVG9hc3QoJ1VuYWJsZSB0byB1cGRhdGUgY2hlY2tsaXN0IScsJ2Vycm9yJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KCdVbmFibGUgdG8gdXBkYXRlIGNoZWNrbGlzdCEnLCdlcnJvcicpO1xyXG4gICAgICB9XHJcbiAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgbGV0IGVyciA9IGVycm9yPy5lcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ1VuYWJsZSB0byBjcmVhdGUgY2hlY2tsaXN0IVNlcnZlciBFcnJvciEnO1xyXG4gICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG1hcmtGb3JtQ29udHJvbHNBc1RvdWNoZWQoY29udHJvbDogRm9ybUdyb3VwIHwgRm9ybUFycmF5LHNlY3Rpb25JbmRleD86IG51bWJlcikge1xyXG4gICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcblxyXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcclxuICAgICAgZm9yIChjb25zdCBjb250cm9sTmFtZSBpbiBjb250cm9sLmNvbnRyb2xzKSB7XHJcbiAgICAgICAgdGhpcy5tYXJrRm9ybUNvbnRyb2xzQXNUb3VjaGVkKGNvbnRyb2wuZ2V0KGNvbnRyb2xOYW1lKSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcclxuICAgICAgY29udHJvbC5jb250cm9scy5mb3JFYWNoKGZvcm1Db250cm9sID0+IHtcclxuICAgICAgICB0aGlzLm1hcmtGb3JtQ29udHJvbHNBc1RvdWNoZWQoZm9ybUNvbnRyb2wgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzY3JvbGxUb0Vycm9ycyhzZWN0aW9uczogRm9ybUFycmF5KSB7XHJcbiAgICBmb3IobGV0IGk9MDtpPHNlY3Rpb25zLmxlbmd0aDtpKyspIHtcclxuICAgICAgbGV0IHNlY3Rpb24gPSBzZWN0aW9ucy5hdChpKSBhcyBGb3JtR3JvdXA7XHJcbiAgICAgIGlmIChzZWN0aW9uLmludmFsaWQpIHtcclxuICAgICAgICBsZXQgcXVlc3Rpb25zID0gc2VjdGlvbi5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheTtcclxuICAgICAgICBmb3IobGV0IGo9MDtqPHF1ZXN0aW9ucy5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICBsZXQgcXVlc3Rpb24gPSBxdWVzdGlvbnMuYXQoaikgYXMgRm9ybUdyb3VwO1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocXVlc3Rpb24sJ3F1ZXN0aW9uJyk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAocXVlc3Rpb24uaW52YWxpZCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvdyA9IGk7XHJcbiAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb1F1ZXN0aW9uKGksIGopO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KCdQbGVhc2UgZmlsbCBvdXQgYWxsIHRoZSBmaWVsZHMhJywnZXJyb3InKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzd2FsVG9hc3QoZXJyOiBzdHJpbmcsdHlwZT86c3RyaW5nLGljb24/OiBzdHJpbmcpIHtcclxuICAgIGlmKHR5cGUgPT0gJ2Vycm9yJykge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldEVycm9yVG9hc3QoZXJyKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnRvYXN0LmdldFN1Y2Nlc3NUb2FzdChlcnIpO1xyXG4gICAgfVxyXG4gICAgLy8gU3dhbC5maXJlKHtcclxuICAgIC8vICAgdG9hc3Q6IHRydWUsXHJcbiAgICAvLyAgIC4uLiggaWNvbiA/IHsgaWNvbkh0bWw6IGljb24gfSA6IHt9KSxcclxuICAgIC8vICAgLy8gdGl0bGVUZXh0OiBgQ2hlY2tsaXN0IEZvcm0gRXJyb3JgLFxyXG4gICAgLy8gICBodG1sOiBgPGRpdiBjbGFzcz1cInJvdyBcIj5cclxuICAgIC8vICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC0yXCI+XHJcbiAgICAvLyAgIDxkaXYgY2xhc3M9XCJ0b2FzdHRpdGlsZVwiPiR7ZXJyfTwvZGl2PlxyXG4gICAgLy8gICA8L2Rpdj5cclxuICAgICBcclxuICAgIC8vICAgPC9kaXY+YCxcclxuICAgIC8vICAgcG9zaXRpb246ICdib3R0b20nLFxyXG4gICAgLy8gICBzaG93Q29uZmlybUJ1dHRvbjogZmFsc2UsXHJcbiAgICAvLyAgIHNob3dDbG9zZUJ1dHRvbjogdHJ1ZSxcclxuICAgIC8vICAgdGltZXI6IDYwMDAsXHJcbiAgICAvLyAgIHRpbWVyUHJvZ3Jlc3NCYXI6IHRydWUsXHJcbiAgICAvLyAgIGRpZE9wZW46ICh0b2FzdCkgPT4ge1xyXG4gICAgLy8gICAgIHRvYXN0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCBTd2FsLnN0b3BUaW1lcilcclxuICAgIC8vICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJywgU3dhbC5yZXN1bWVUaW1lcilcclxuICAgIC8vICAgICAkKFwiI2t0X2NyZWF0ZV9hY2NvdW50X2Zvcm1fYWNjb3VudF90eXBlX3BlcnNvbmFsXCIpPy52YWwoJycpO1xyXG4gICAgLy8gICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KTtcclxuICB9XHJcblxyXG4gIFJ1bkFJKHNJZHg6bnVtYmVyLHFJZHg6IG51bWJlcixhbnNJZHg6bnVtYmVyPS0xKSB7XHJcbiAgICBsZXQgZGlhbG9nUmVmOiBhbnk7XHJcbiAgICBsZXQgcXVlc3Rpb246IGFueSA9IHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzSWR4LHFJZHgsJ3FuYW1lJyk/LnZhbHVlO1xyXG4gICAgaWYodGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc0lkeCxxSWR4LCdydW5BSScsYW5zSWR4KT8udmFsdWUgPT0gZmFsc2UpIHtcclxuICAgICAgaWYoIXF1ZXN0aW9uIHx8ICF0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnZhbHVlKSB7XHJcbiAgICAgICAgbGV0IGVycjogc3RyaW5nID0gIXF1ZXN0aW9uID8gJ1BsZWFzZSBlbnRlciBxdWVzdGlvbiB0byBjb250aW51ZSEnIDogJ1BsZWFzZSBlbnRlciBDaGVja2xpc3QgTmFtZSB0byBjb250aW51ZSEnO1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTsgICAgICAgIFxyXG4gICAgICAgIHRoaXMucnVuQUlPZmYoc0lkeCwgcUlkeCxmYWxzZSxhbnNJZHgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCx7Y2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCd9KTtcclxuICAgICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHtcclxuICAgICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0QxRkFERlwiLz48cGF0aCBkPVwiTTIzLjM1NjQgMTkuMzUyNUMyNC4xNzQ4IDE4LjczMjcgMjUuMTczOCAxOC4zOTg1IDI2LjIwMDQgMTguNDAwOUMyNi41NTQ5IDE4LjM5MyAyNi45MDU3IDE4LjQ3NDYgMjcuMjIwNCAxOC42MzgyQzI3LjUzNSAxOC44MDE4IDI3LjgwMzMgMTkuMDQyMSAyOC4wMDA0IDE5LjMzNjlDMjguMTk3NSAxOS4wNDIxIDI4LjQ2NTggMTguODAxOCAyOC43ODA0IDE4LjYzODJDMjkuMDk1IDE4LjQ3NDYgMjkuNDQ1OSAxOC4zOTMgMjkuODAwNCAxOC40MDA5QzMwLjgyNyAxOC4zOTg1IDMxLjgyNiAxOC43MzI3IDMyLjY0NDQgMTkuMzUyNUMzMy4yNzQ0IDE5Ljg0MjEgMzMuNzYwNCAyMC41MjAxIDMzLjkzMiAyMS4zMzk3QzM0LjMyNTYgMjEuMzY5NyAzNC42ODU2IDIxLjUzMjkgMzQuOTg4IDIxLjc3ODlDMzUuNDQ2NCAyMi4xNTA5IDM1Ljc4IDIyLjcwODkgMzUuOTkgMjMuMjk5M0MzNi4zMTg4IDI0LjIxNzMgMzYuNDA3NiAyNS4zODczIDM2LjA2NjggMjYuMzgzM0MzNi4xNTMyIDI2LjQyNDEgMzYuMjM4NCAyNi40NzIxIDM2LjMyMTIgMjYuNTI3M0MzNi42NTEyIDI2Ljc0NjkgMzYuOTAyIDI3LjA2MTMgMzcuMDg2OCAyNy40MzIxQzM3LjQ1MDQgMjguMTU4MSAzNy42MDA0IDI5LjE3MDkgMzcuNjAwNCAzMC40MDA5QzM3LjYwMDQgMzEuNzcwMSAzNy4wNzg0IDMyLjY4OTMgMzYuNDE2IDMzLjI1NjlDMzYuMDQ5NyAzMy41NzEgMzUuNjE3NCAzMy43OTg2IDM1LjE1MTIgMzMuOTIyOUMzNS4wMzEyIDM0LjU5MjUgMzQuNjk1MiAzNS4zNjc3IDM0LjE2ODQgMzYuMDI1M0MzMy40ODQ0IDM2Ljg4MzMgMzIuNDIzNiAzNy42MDA5IDMxLjAwMDQgMzcuNjAwOUMyOS44NzI0IDM3LjYwMDkgMjguOTc0OCAzNi45NzY5IDI4LjM5MTYgMzYuMzY0OUMyOC4yNTIyIDM2LjIxODggMjguMTIxNSAzNi4wNjQ1IDI4LjAwMDQgMzUuOTAyOUMyNy44NzkzIDM2LjA2NDUgMjcuNzQ4NiAzNi4yMTg4IDI3LjYwOTIgMzYuMzY0OUMyNy4wMjYgMzYuOTc2OSAyNi4xMjk2IDM3LjYwMDkgMjUuMDAwNCAzNy42MDA5QzIzLjU3NzIgMzcuNjAwOSAyMi41MTc2IDM2Ljg4MzMgMjEuODMyNCAzNi4wMjUzQzIxLjM0MDEgMzUuNDE0IDIxLjAwMjkgMzQuNjkyNyAyMC44NDk2IDMzLjkyMjlDMjAuMzgzNCAzMy43OTg2IDE5Ljk1MTEgMzMuNTcxIDE5LjU4NDggMzMuMjU2OUMxOC45MjI0IDMyLjY4OTMgMTguNDAwNCAzMS43Njg5IDE4LjQwMDQgMzAuNDAwOUMxOC40MDA0IDI5LjE3MDkgMTguNTUxNiAyOC4xNTY5IDE4LjkxNCAyNy40MzIxQzE5LjA4NTcgMjcuMDY4NSAxOS4zNDk3IDI2Ljc1NjEgMTkuNjc5NiAyNi41MjYxQzE5Ljc2MDYgMjYuNDcyNSAxOS44NDU3IDI2LjQyNTEgMTkuOTM0IDI2LjM4NDVDMTkuNTkzMiAyNS4zODYxIDE5LjY4MiAyNC4yMTczIDIwLjAxMDggMjMuMjk5M0MyMC4yMjA4IDIyLjcwODkgMjAuNTU0NCAyMi4xNTA5IDIxLjAxMjggMjEuNzc4OUMyMS4zMTUyIDIxLjUzMjkgMjEuNjc1MiAyMS4zNzA5IDIyLjA2ODggMjEuMzM5N0MyMi4yNDE2IDIwLjUyMDEgMjIuNzI2NCAxOS44NDIxIDIzLjM1NjQgMTkuMzUyNVpNMjcuNDAwNCAyMS40MDA5VjIxLjM4ODlMMjcuMzk4IDIxLjMyODlDMjcuMzgwMyAyMS4wMTYxIDI3LjMxODEgMjAuNzA3NCAyNy4yMTMyIDIwLjQxMjFDMjcuMTM4NSAyMC4xODkyIDI3LjAxMTMgMTkuOTg3NiAyNi44NDI0IDE5LjgyNDFDMjYuNjY1MSAxOS42Njk4IDI2LjQzNTIgMTkuNTg5OCAyNi4yMDA0IDE5LjYwMDlDMjUuNDQwNyAxOS41OTgzIDI0LjcwMDkgMTkuODQzNSAyNC4wOTMyIDIwLjI5OTNDMjMuNTM2NCAyMC43MzI1IDIzLjIwMDQgMjEuMzE5MyAyMy4yMDA0IDIyLjAwMDlDMjMuMjAwMyAyMi4wOTU5IDIzLjE3NzcgMjIuMTg5NiAyMy4xMzQzIDIyLjI3NDFDMjMuMDkxIDIyLjM1ODcgMjMuMDI4MiAyMi40MzE4IDIyLjk1MTEgMjIuNDg3M0MyMi44NzQgMjIuNTQyOCAyMi43ODQ4IDIyLjU3OTMgMjIuNjkwOSAyMi41OTM2QzIyLjU5NjkgMjIuNjA3OSAyMi41MDA5IDIyLjU5OTcgMjIuNDEwOCAyMi41Njk3QzIyLjE4NTIgMjIuNDk1MyAyMS45ODM2IDIyLjUzNzMgMjEuNzY4OCAyMi43MTAxQzIxLjUzMzYgMjIuOTAyMSAyMS4zMDQ0IDIzLjI0MjkgMjEuMTQgMjMuNzAyNUMyMC44MDUyIDI0LjY0MDkgMjAuODQgMjUuNzc3MyAyMS4yOTk2IDI2LjQ2ODVDMjEuMzY1MiAyNi41NjcgMjEuNDAwMyAyNi42ODI2IDIxLjQwMDQgMjYuODAwOUgyMi4zMDA0QzIzLjAxNjUgMjYuODAwOSAyMy43MDMyIDI3LjA4NTQgMjQuMjA5NiAyNy41OTE3QzI0LjcxNTkgMjguMDk4MSAyNS4wMDA0IDI4Ljc4NDggMjUuMDAwNCAyOS41MDA5VjI5LjkwMjlDMjUuNDAwNyAzMC4wNDQ1IDI1LjczODEgMzAuMzIzIDI1Ljk1MyAzMC42ODkyQzI2LjE2NzggMzEuMDU1NSAyNi4yNDYzIDMxLjQ4NTkgMjYuMTc0NSAzMS45MDQ0QzI2LjEwMjcgMzIuMzIyOSAyNS44ODUyIDMyLjcwMjUgMjUuNTYwNiAzMi45NzYyQzI1LjIzNTkgMzMuMjQ5OSAyNC44MjUgMzMuNCAyNC40MDA0IDMzLjRDMjMuOTc1OCAzMy40IDIzLjU2NDggMzMuMjQ5OSAyMy4yNDAyIDMyLjk3NjJDMjIuOTE1NiAzMi43MDI1IDIyLjY5ODEgMzIuMzIyOSAyMi42MjYzIDMxLjkwNDRDMjIuNTU0NSAzMS40ODU5IDIyLjYzMyAzMS4wNTU1IDIyLjg0NzggMzAuNjg5MkMyMy4wNjI3IDMwLjMyMyAyMy40MDAxIDMwLjA0NDUgMjMuODAwNCAyOS45MDI5VjI5LjUwMDlDMjMuODAwNCAyOC42NzI5IDIzLjEyODQgMjguMDAwOSAyMi4zMDA0IDI4LjAwMDlIMjAuMjAwNEMyMC4xMjg3IDI4LjAwMDggMjAuMDU3NSAyNy45ODc4IDE5Ljk5MDQgMjcuOTYyNUwxOS45ODY4IDI3Ljk2OTdDMTkuNzQ5MiAyOC40NDM3IDE5LjYwMDQgMjkuMjMwOSAxOS42MDA0IDMwLjQwMDlDMTkuNjAwNCAzMS40MzE3IDE5Ljk3ODQgMzIuMDEyNSAyMC4zNjYgMzIuMzQ0OUMyMC43ODI0IDMyLjcwMjUgMjEuMjQ0NCAzMi44MDA5IDIxLjQwMDQgMzIuODAwOUMyMS41NTk1IDMyLjgwMDkgMjEuNzEyMSAzMi44NjQxIDIxLjgyNDcgMzIuOTc2N0MyMS45MzcyIDMzLjA4OTIgMjIuMDAwNCAzMy4yNDE4IDIyLjAwMDQgMzMuNDAwOUMyMi4wMDA0IDMzLjg0MjUgMjIuMjQwNCAzNC42MTQxIDIyLjc2ODQgMzUuMjc2NUMyMy4yODMyIDM1LjkxODUgMjQuMDIzNiAzNi40MDA5IDI1LjAwMDQgMzYuNDAwOUMyNS42NzI0IDM2LjQwMDkgMjYuMjc0OCAzNi4wMjUzIDI2Ljc0MDQgMzUuNTM2OUMyNi45Njk2IDM1LjI5NjkgMjcuMTQ4NCAzNS4wNDg1IDI3LjI2NDggMzQuODQ0NUMyNy4zMTc4IDM0Ljc1NDEgMjcuMzYzMSAzNC42NTkzIDI3LjQwMDQgMzQuNTYxM1YyNS4wMDA5SDI2LjA5ODRDMjUuOTU2OSAyNS40MDEyIDI1LjY3ODMgMjUuNzM4NyAyNS4zMTIxIDI1Ljk1MzVDMjQuOTQ1OSAyNi4xNjgzIDI0LjUxNTQgMjYuMjQ2OCAyNC4wOTcgMjYuMTc1QzIzLjY3ODUgMjYuMTAzMiAyMy4yOTg4IDI1Ljg4NTggMjMuMDI1MSAyNS41NjExQzIyLjc1MTQgMjUuMjM2NSAyMi42MDEzIDI0LjgyNTUgMjIuNjAxMyAyNC40MDA5QzIyLjYwMTMgMjMuOTc2MyAyMi43NTE0IDIzLjU2NTQgMjMuMDI1MSAyMy4yNDA3QzIzLjI5ODggMjIuOTE2MSAyMy42Nzg1IDIyLjY5ODYgMjQuMDk3IDIyLjYyNjhDMjQuNTE1NCAyMi41NTUgMjQuOTQ1OSAyMi42MzM1IDI1LjMxMjEgMjIuODQ4M0MyNS42NzgzIDIzLjA2MzIgMjUuOTU2OSAyMy40MDA2IDI2LjA5ODQgMjMuODAwOUgyNy40MDA0VjIxLjQwMDlaTTI4LjYwMDQgMzMuMzk5N1YzNC41NjAxQzI4LjYzNzcgMzQuNjU4MSAyOC42ODMgMzQuNzUyOCAyOC43MzYgMzQuODQzM0MyOC44NTM2IDM1LjA0NzMgMjkuMDMxMiAzNS4yOTU3IDI5LjI1OTIgMzUuNTM1N0MyOS43MjYgMzYuMDI0MSAzMC4zMjk2IDM2LjM5OTcgMzEuMDAwNCAzNi4zOTk3QzMxLjk3NzIgMzYuMzk5NyAzMi43MTc2IDM1LjkxNzMgMzMuMjMyNCAzNS4yNzUzQzMzLjc2MDQgMzQuNjEyOSAzNC4wMDA0IDMzLjg0MTMgMzQuMDAwNCAzMy4zOTk3QzM0LjAwMDQgMzMuMjQwNiAzNC4wNjM2IDMzLjA4OCAzNC4xNzYxIDMyLjk3NTVDMzQuMjg4NiAzMi44NjI5IDM0LjQ0MTMgMzIuNzk5NyAzNC42MDA0IDMyLjc5OTdDMzQuNzU2NCAzMi43OTk3IDM1LjIxODQgMzIuNzAxMyAzNS42MzQ4IDMyLjM0MzdDMzYuMDIyNCAzMi4wMTEzIDM2LjQwMDQgMzEuNDMwNSAzNi40MDA0IDMwLjM5OTdDMzYuNDAwNCAyOS4yMjk3IDM2LjI1MDQgMjguNDQzNyAzNi4wMTQgMjcuOTY4NUMzNS45MzQ5IDI3Ljc5MTYgMzUuODEwOCAyNy42Mzg1IDM1LjY1NCAyNy41MjQ1QzM1LjUxODkgMjcuNDM4MSAzNS4zNjA2IDI3LjM5NSAzNS4yMDA0IDI3LjQwMDlDMzUuMDkxOSAyNy40MDA5IDM0Ljk4NTQgMjcuMzcxNCAzNC44OTIzIDI3LjMxNTZDMzQuNzk5MiAyNy4yNTk4IDM0LjcyMyAyNy4xNzk4IDM0LjY3MTcgMjcuMDg0MUMzNC42MjA1IDI2Ljk4ODQgMzQuNTk2MiAyNi44ODA3IDM0LjYwMTQgMjYuNzcyM0MzNC42MDY2IDI2LjY2MzggMzQuNjQxMSAyNi41NTg5IDM0LjcwMTIgMjYuNDY4NUMzNS4xNjIgMjUuNzc3MyAzNS4xOTU2IDI0LjY0MDkgMzQuODYwOCAyMy43MDI1QzM0LjY5NjQgMjMuMjQyOSAzNC40NjcyIDIyLjkwMDkgMzQuMjMyIDIyLjcxMDFDMzQuMDE3MiAyMi41MzczIDMzLjgxNTYgMjIuNDk0MSAzMy41OSAyMi41Njk3QzMzLjQ5OTggMjIuNTk5NyAzMy40MDM4IDIyLjYwNzkgMzMuMzA5OSAyMi41OTM2QzMzLjIxNiAyMi41NzkzIDMzLjEyNjggMjIuNTQyOCAzMy4wNDk3IDIyLjQ4NzNDMzIuOTcyNiAyMi40MzE4IDMyLjkwOTggMjIuMzU4NyAzMi44NjY0IDIyLjI3NDFDMzIuODIzMSAyMi4xODk2IDMyLjgwMDUgMjIuMDk1OSAzMi44MDA0IDIyLjAwMDlDMzIuODAwNCAyMS4zMTkzIDMyLjQ2NDQgMjAuNzMyNSAzMS45MDY0IDIwLjI5OTNDMzEuMjk5IDE5Ljg0MzggMzAuNTU5NiAxOS41OTg2IDI5LjgwMDQgMTkuNjAwOUMyOS41NjU2IDE5LjU4OTggMjkuMzM1NiAxOS42Njk4IDI5LjE1ODQgMTkuODI0MUMyOC45ODg5IDE5Ljk4NzQgMjguODYxMyAyMC4xODkxIDI4Ljc4NjQgMjAuNDEyMUMyOC42NzIxIDIwLjcyNTYgMjguNjA5MyAyMS4wNTU0IDI4LjYwMDQgMjEuMzg4OVYzMi4yMDA5SDI5LjUwMDRDMzAuMzI4NCAzMi4yMDA5IDMxLjAwMDQgMzEuNTI4OSAzMS4wMDA0IDMwLjcwMDlWMjguNDk4OUMzMC42MDAxIDI4LjM1NzQgMzAuMjYyNyAyOC4wNzg5IDMwLjA0NzggMjcuNzEyNkMyOS44MzMgMjcuMzQ2NCAyOS43NTQ1IDI2LjkxNiAyOS44MjYzIDI2LjQ5NzVDMjkuODk4MSAyNi4wNzkgMzAuMTE1NiAyNS42OTkzIDMwLjQ0MDIgMjUuNDI1N0MzMC43NjQ4IDI1LjE1MiAzMS4xNzU4IDI1LjAwMTkgMzEuNjAwNCAyNS4wMDE5QzMyLjAyNSAyNS4wMDE5IDMyLjQzNTkgMjUuMTUyIDMyLjc2MDYgMjUuNDI1N0MzMy4wODUyIDI1LjY5OTMgMzMuMzAyNyAyNi4wNzkgMzMuMzc0NSAyNi40OTc1QzMzLjQ0NjMgMjYuOTE2IDMzLjM2NzggMjcuMzQ2NCAzMy4xNTMgMjcuNzEyNkMzMi45MzgxIDI4LjA3ODkgMzIuNjAwNyAyOC4zNTc0IDMyLjIwMDQgMjguNDk4OVYzMC43MDA5QzMyLjIwMDQgMzEuNDE3IDMxLjkxNTkgMzIuMTAzOCAzMS40MDk2IDMyLjYxMDFDMzAuOTAzMiAzMy4xMTY1IDMwLjIxNjUgMzMuNDAwOSAyOS41MDA0IDMzLjQwMDlIMjguNjAwNFYzMy4zOTk3Wk0yMy44MDA0IDI0LjQwMDlDMjMuODAwNCAyNC41NjAxIDIzLjg2MzYgMjQuNzEyNyAyMy45NzYxIDI0LjgyNTJDMjQuMDg4NiAyNC45Mzc3IDI0LjI0MTMgMjUuMDAwOSAyNC40MDA0IDI1LjAwMDlDMjQuNTU5NSAyNS4wMDA5IDI0LjcxMjEgMjQuOTM3NyAyNC44MjQ3IDI0LjgyNTJDMjQuOTM3MiAyNC43MTI3IDI1LjAwMDQgMjQuNTYwMSAyNS4wMDA0IDI0LjQwMDlDMjUuMDAwNCAyNC4yNDE4IDI0LjkzNzIgMjQuMDg5MiAyNC44MjQ3IDIzLjk3NjdDMjQuNzEyMSAyMy44NjQxIDI0LjU1OTUgMjMuODAwOSAyNC40MDA0IDIzLjgwMDlDMjQuMjQxMyAyMy44MDA5IDI0LjA4ODYgMjMuODY0MSAyMy45NzYxIDIzLjk3NjdDMjMuODYzNiAyNC4wODkyIDIzLjgwMDQgMjQuMjQxOCAyMy44MDA0IDI0LjQwMDlaTTMxLjYwMDQgMjcuNDAwOUMzMS43NTk1IDI3LjQwMDkgMzEuOTEyMSAyNy4zMzc3IDMyLjAyNDcgMjcuMjI1MkMzMi4xMzcyIDI3LjExMjcgMzIuMjAwNCAyNi45NjAxIDMyLjIwMDQgMjYuODAwOUMzMi4yMDA0IDI2LjY0MTggMzIuMTM3MiAyNi40ODkyIDMyLjAyNDcgMjYuMzc2N0MzMS45MTIxIDI2LjI2NDEgMzEuNzU5NSAyNi4yMDA5IDMxLjYwMDQgMjYuMjAwOUMzMS40NDEzIDI2LjIwMDkgMzEuMjg4NiAyNi4yNjQxIDMxLjE3NjEgMjYuMzc2N0MzMS4wNjM2IDI2LjQ4OTIgMzEuMDAwNCAyNi42NDE4IDMxLjAwMDQgMjYuODAwOUMzMS4wMDA0IDI2Ljk2MDEgMzEuMDYzNiAyNy4xMTI3IDMxLjE3NjEgMjcuMjI1MkMzMS4yODg2IDI3LjMzNzcgMzEuNDQxMyAyNy40MDA5IDMxLjYwMDQgMjcuNDAwOVpNMjQuNDAwNCAzMS4wMDA5QzI0LjI0MTMgMzEuMDAwOSAyNC4wODg2IDMxLjA2NDEgMjMuOTc2MSAzMS4xNzY3QzIzLjg2MzYgMzEuMjg5MiAyMy44MDA0IDMxLjQ0MTggMjMuODAwNCAzMS42MDA5QzIzLjgwMDQgMzEuNzYwMSAyMy44NjM2IDMxLjkxMjcgMjMuOTc2MSAzMi4wMjUyQzI0LjA4ODYgMzIuMTM3NyAyNC4yNDEzIDMyLjIwMDkgMjQuNDAwNCAzMi4yMDA5QzI0LjU1OTUgMzIuMjAwOSAyNC43MTIxIDMyLjEzNzcgMjQuODI0NyAzMi4wMjUyQzI0LjkzNzIgMzEuOTEyNyAyNS4wMDA0IDMxLjc2MDEgMjUuMDAwNCAzMS42MDA5QzI1LjAwMDQgMzEuNDQxOCAyNC45MzcyIDMxLjI4OTIgMjQuODI0NyAzMS4xNzY3QzI0LjcxMjEgMzEuMDY0MSAyNC41NTk1IDMxLjAwMDkgMjQuNDAwNCAzMS4wMDA5WlwiIGZpbGw9XCIjMDM5ODU1XCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VDRkRGM1wiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICAgIHRpdGxlOiBgUnVuIEFJIG9uIGltYWdlIHVwbG9hZGVkYCxcclxuICAgICAgICAgIGNvbnRlbnQ6IGBVc2UgdGhlIHBvd2VyIG9mIEFJIHRvIGNvbXBhcmUgYW5kIGRldGVjdCBhbm9tYWxpZXMgYmV0d2VlbiB1cGxvYWRlZCBhbmQgcmVmZXJlbmNlIGltYWdlLmAsXHJcbiAgICAgICAgICBpbnB1dGxhYmVsMTogJ1F1ZXN0aW9uJyxcclxuICAgICAgICAgIGlucHV0dHlwZTE6ICd0ZXh0JyxcclxuICAgICAgICAgIGlucHV0MTogJ3RydWUnLFxyXG4gICAgICAgICAgaW5wdXRsYWJlbDI6ICdTcGVjaWZ5IHlvdXIgcmVxdWVzdCcsXHJcbiAgICAgICAgICBpbnB1dHR5cGUyOiAndGV4dCcsXHJcbiAgICAgICAgICByZXNUeXBlOiAnY3VzdG9tJyxcclxuICAgICAgICAgIGlucHV0MjogJ3RydWUnLFxyXG4gICAgICAgICAgcGxhY2Vob2xkZXIxOiBxdWVzdGlvbixcclxuICAgICAgICAgIHBsYWNlaG9sZGVyMjogJ1BsZWFzZSBjb21wYXJlIHRoZSB1cGxvYWRlZCBpbWFnZXMgYS4uJyxcclxuICAgICAgICAgIGJ1dHRvbnR5cGU6ICdSZXF1ZXN0J1xyXG4gICAgICAgIH1cclxuICAgICAgICBkaWFsb2dSZWYucmVzdWx0LnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzICYmIHJlcy5zdGF0dXMgPT0gJ2NvbmZpcm0nKSB7XHJcbiAgICAgICAgICAgIGxldCByZXE6IGFueSA9IHtcclxuICAgICAgICAgICAgICBjaGVja2xpc3ROYW1lOiB0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdjaGVja2xpc3ROYW1lJyk/LnZhbHVlLFxyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uTmFtZTogcXVlc3Rpb24sXHJcbiAgICAgICAgICAgICAgcnVuQUlEZXNjcmlwdGlvbjogcmVzLmRhdGEucmVxdWVzdFRleHQsXHJcbiAgICAgICAgICAgICAgYW5zd2VyVHlwZTogXCJpbWFnZVwiLFxyXG4gICAgICAgICAgICAgIHJlZmVyZW5jZUltYWdlOiB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncmVmZXJlbmNlSW1hZ2UnLGFuc0lkeCk/LnZhbHVlIHx8ICcnLFxyXG4gICAgICAgICAgICAgIGNsaWVudElkOnRoaXMuY2xpZW50SWRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnNvcFNlcnZpY2UucnVuQUlJbnNlcnQocmVxKS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgoYXBpcmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYXBpcmVzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXBpcmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNJZHgsIHFJZHgsICdydW5BSScsYW5zSWR4KT8ucGF0Y2hWYWx1ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNJZHgsIHFJZHgsICdydW5BSScsYW5zSWR4KT8ucGF0Y2hWYWx1ZSh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNJZHgsIHFJZHgsICdydW5BSURlc2NyaXB0aW9uJyxhbnNJZHgpPy5wYXRjaFZhbHVlKHJlcy5kYXRhLnJlcXVlc3RUZXh0KTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zd2FsVG9hc3QoXHJcbiAgICAgICAgICAgICAgICAgICAgYDxzcGFuIHN0eWxlPVwicGFkZGluZy1yaWdodDogMzZweDtcIj4ke2FwaXJlcy5kYXRhLm1lc3NhZ2V9PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICA8YSBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9zdXBwb3J0L3ZpZXctdGlja2V0c1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjb2xvcjogdmFyKC0tcHJpbWFyeS03MDAsICMwMDlCRjMpO2ZvbnQtZmFtaWx5OiBSb2JvdG87Zm9udC1zaXplOiAxNXB4O2ZvbnQtd2VpZ2h0OiA3MDA7dGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Y3Vyc29yOiBwb2ludGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgVGlja2V0XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPmAsXHJcbiAgICAgICAgICAgICAgICAgICAgYDxpbWcgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL0ljb25zL3NvcC1ydW5haS10b3N0aWNvbi5zdmdcIiAvPmBcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucnVuQUlPZmYoc0lkeCwgcUlkeCx0cnVlLGFuc0lkeCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucnVuQUlPZmYoc0lkeCwgcUlkeCx0cnVlLGFuc0lkeCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnJ1bkFJT2ZmKHNJZHgsIHFJZHgsdHJ1ZSxhbnNJZHgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMucnVuQUlPZmYoc0lkeCwgcUlkeCxmYWxzZSxhbnNJZHgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCx7Y2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCd9KTtcclxuICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSB7XHJcbiAgICAgICAgaW1hZ2VzcmM6IGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRDFGQURGXCIvPjxwYXRoIGQ9XCJNMjMuMzU2NCAxOS4zNTI1QzI0LjE3NDggMTguNzMyNyAyNS4xNzM4IDE4LjM5ODUgMjYuMjAwNCAxOC40MDA5QzI2LjU1NDkgMTguMzkzIDI2LjkwNTcgMTguNDc0NiAyNy4yMjA0IDE4LjYzODJDMjcuNTM1IDE4LjgwMTggMjcuODAzMyAxOS4wNDIxIDI4LjAwMDQgMTkuMzM2OUMyOC4xOTc1IDE5LjA0MjEgMjguNDY1OCAxOC44MDE4IDI4Ljc4MDQgMTguNjM4MkMyOS4wOTUgMTguNDc0NiAyOS40NDU5IDE4LjM5MyAyOS44MDA0IDE4LjQwMDlDMzAuODI3IDE4LjM5ODUgMzEuODI2IDE4LjczMjcgMzIuNjQ0NCAxOS4zNTI1QzMzLjI3NDQgMTkuODQyMSAzMy43NjA0IDIwLjUyMDEgMzMuOTMyIDIxLjMzOTdDMzQuMzI1NiAyMS4zNjk3IDM0LjY4NTYgMjEuNTMyOSAzNC45ODggMjEuNzc4OUMzNS40NDY0IDIyLjE1MDkgMzUuNzggMjIuNzA4OSAzNS45OSAyMy4yOTkzQzM2LjMxODggMjQuMjE3MyAzNi40MDc2IDI1LjM4NzMgMzYuMDY2OCAyNi4zODMzQzM2LjE1MzIgMjYuNDI0MSAzNi4yMzg0IDI2LjQ3MjEgMzYuMzIxMiAyNi41MjczQzM2LjY1MTIgMjYuNzQ2OSAzNi45MDIgMjcuMDYxMyAzNy4wODY4IDI3LjQzMjFDMzcuNDUwNCAyOC4xNTgxIDM3LjYwMDQgMjkuMTcwOSAzNy42MDA0IDMwLjQwMDlDMzcuNjAwNCAzMS43NzAxIDM3LjA3ODQgMzIuNjg5MyAzNi40MTYgMzMuMjU2OUMzNi4wNDk3IDMzLjU3MSAzNS42MTc0IDMzLjc5ODYgMzUuMTUxMiAzMy45MjI5QzM1LjAzMTIgMzQuNTkyNSAzNC42OTUyIDM1LjM2NzcgMzQuMTY4NCAzNi4wMjUzQzMzLjQ4NDQgMzYuODgzMyAzMi40MjM2IDM3LjYwMDkgMzEuMDAwNCAzNy42MDA5QzI5Ljg3MjQgMzcuNjAwOSAyOC45NzQ4IDM2Ljk3NjkgMjguMzkxNiAzNi4zNjQ5QzI4LjI1MjIgMzYuMjE4OCAyOC4xMjE1IDM2LjA2NDUgMjguMDAwNCAzNS45MDI5QzI3Ljg3OTMgMzYuMDY0NSAyNy43NDg2IDM2LjIxODggMjcuNjA5MiAzNi4zNjQ5QzI3LjAyNiAzNi45NzY5IDI2LjEyOTYgMzcuNjAwOSAyNS4wMDA0IDM3LjYwMDlDMjMuNTc3MiAzNy42MDA5IDIyLjUxNzYgMzYuODgzMyAyMS44MzI0IDM2LjAyNTNDMjEuMzQwMSAzNS40MTQgMjEuMDAyOSAzNC42OTI3IDIwLjg0OTYgMzMuOTIyOUMyMC4zODM0IDMzLjc5ODYgMTkuOTUxMSAzMy41NzEgMTkuNTg0OCAzMy4yNTY5QzE4LjkyMjQgMzIuNjg5MyAxOC40MDA0IDMxLjc2ODkgMTguNDAwNCAzMC40MDA5QzE4LjQwMDQgMjkuMTcwOSAxOC41NTE2IDI4LjE1NjkgMTguOTE0IDI3LjQzMjFDMTkuMDg1NyAyNy4wNjg1IDE5LjM0OTcgMjYuNzU2MSAxOS42Nzk2IDI2LjUyNjFDMTkuNzYwNiAyNi40NzI1IDE5Ljg0NTcgMjYuNDI1MSAxOS45MzQgMjYuMzg0NUMxOS41OTMyIDI1LjM4NjEgMTkuNjgyIDI0LjIxNzMgMjAuMDEwOCAyMy4yOTkzQzIwLjIyMDggMjIuNzA4OSAyMC41NTQ0IDIyLjE1MDkgMjEuMDEyOCAyMS43Nzg5QzIxLjMxNTIgMjEuNTMyOSAyMS42NzUyIDIxLjM3MDkgMjIuMDY4OCAyMS4zMzk3QzIyLjI0MTYgMjAuNTIwMSAyMi43MjY0IDE5Ljg0MjEgMjMuMzU2NCAxOS4zNTI1Wk0yNy40MDA0IDIxLjQwMDlWMjEuMzg4OUwyNy4zOTggMjEuMzI4OUMyNy4zODAzIDIxLjAxNjEgMjcuMzE4MSAyMC43MDc0IDI3LjIxMzIgMjAuNDEyMUMyNy4xMzg1IDIwLjE4OTIgMjcuMDExMyAxOS45ODc2IDI2Ljg0MjQgMTkuODI0MUMyNi42NjUxIDE5LjY2OTggMjYuNDM1MiAxOS41ODk4IDI2LjIwMDQgMTkuNjAwOUMyNS40NDA3IDE5LjU5ODMgMjQuNzAwOSAxOS44NDM1IDI0LjA5MzIgMjAuMjk5M0MyMy41MzY0IDIwLjczMjUgMjMuMjAwNCAyMS4zMTkzIDIzLjIwMDQgMjIuMDAwOUMyMy4yMDAzIDIyLjA5NTkgMjMuMTc3NyAyMi4xODk2IDIzLjEzNDMgMjIuMjc0MUMyMy4wOTEgMjIuMzU4NyAyMy4wMjgyIDIyLjQzMTggMjIuOTUxMSAyMi40ODczQzIyLjg3NCAyMi41NDI4IDIyLjc4NDggMjIuNTc5MyAyMi42OTA5IDIyLjU5MzZDMjIuNTk2OSAyMi42MDc5IDIyLjUwMDkgMjIuNTk5NyAyMi40MTA4IDIyLjU2OTdDMjIuMTg1MiAyMi40OTUzIDIxLjk4MzYgMjIuNTM3MyAyMS43Njg4IDIyLjcxMDFDMjEuNTMzNiAyMi45MDIxIDIxLjMwNDQgMjMuMjQyOSAyMS4xNCAyMy43MDI1QzIwLjgwNTIgMjQuNjQwOSAyMC44NCAyNS43NzczIDIxLjI5OTYgMjYuNDY4NUMyMS4zNjUyIDI2LjU2NyAyMS40MDAzIDI2LjY4MjYgMjEuNDAwNCAyNi44MDA5SDIyLjMwMDRDMjMuMDE2NSAyNi44MDA5IDIzLjcwMzIgMjcuMDg1NCAyNC4yMDk2IDI3LjU5MTdDMjQuNzE1OSAyOC4wOTgxIDI1LjAwMDQgMjguNzg0OCAyNS4wMDA0IDI5LjUwMDlWMjkuOTAyOUMyNS40MDA3IDMwLjA0NDUgMjUuNzM4MSAzMC4zMjMgMjUuOTUzIDMwLjY4OTJDMjYuMTY3OCAzMS4wNTU1IDI2LjI0NjMgMzEuNDg1OSAyNi4xNzQ1IDMxLjkwNDRDMjYuMTAyNyAzMi4zMjI5IDI1Ljg4NTIgMzIuNzAyNSAyNS41NjA2IDMyLjk3NjJDMjUuMjM1OSAzMy4yNDk5IDI0LjgyNSAzMy40IDI0LjQwMDQgMzMuNEMyMy45NzU4IDMzLjQgMjMuNTY0OCAzMy4yNDk5IDIzLjI0MDIgMzIuOTc2MkMyMi45MTU2IDMyLjcwMjUgMjIuNjk4MSAzMi4zMjI5IDIyLjYyNjMgMzEuOTA0NEMyMi41NTQ1IDMxLjQ4NTkgMjIuNjMzIDMxLjA1NTUgMjIuODQ3OCAzMC42ODkyQzIzLjA2MjcgMzAuMzIzIDIzLjQwMDEgMzAuMDQ0NSAyMy44MDA0IDI5LjkwMjlWMjkuNTAwOUMyMy44MDA0IDI4LjY3MjkgMjMuMTI4NCAyOC4wMDA5IDIyLjMwMDQgMjguMDAwOUgyMC4yMDA0QzIwLjEyODcgMjguMDAwOCAyMC4wNTc1IDI3Ljk4NzggMTkuOTkwNCAyNy45NjI1TDE5Ljk4NjggMjcuOTY5N0MxOS43NDkyIDI4LjQ0MzcgMTkuNjAwNCAyOS4yMzA5IDE5LjYwMDQgMzAuNDAwOUMxOS42MDA0IDMxLjQzMTcgMTkuOTc4NCAzMi4wMTI1IDIwLjM2NiAzMi4zNDQ5QzIwLjc4MjQgMzIuNzAyNSAyMS4yNDQ0IDMyLjgwMDkgMjEuNDAwNCAzMi44MDA5QzIxLjU1OTUgMzIuODAwOSAyMS43MTIxIDMyLjg2NDEgMjEuODI0NyAzMi45NzY3QzIxLjkzNzIgMzMuMDg5MiAyMi4wMDA0IDMzLjI0MTggMjIuMDAwNCAzMy40MDA5QzIyLjAwMDQgMzMuODQyNSAyMi4yNDA0IDM0LjYxNDEgMjIuNzY4NCAzNS4yNzY1QzIzLjI4MzIgMzUuOTE4NSAyNC4wMjM2IDM2LjQwMDkgMjUuMDAwNCAzNi40MDA5QzI1LjY3MjQgMzYuNDAwOSAyNi4yNzQ4IDM2LjAyNTMgMjYuNzQwNCAzNS41MzY5QzI2Ljk2OTYgMzUuMjk2OSAyNy4xNDg0IDM1LjA0ODUgMjcuMjY0OCAzNC44NDQ1QzI3LjMxNzggMzQuNzU0MSAyNy4zNjMxIDM0LjY1OTMgMjcuNDAwNCAzNC41NjEzVjI1LjAwMDlIMjYuMDk4NEMyNS45NTY5IDI1LjQwMTIgMjUuNjc4MyAyNS43Mzg3IDI1LjMxMjEgMjUuOTUzNUMyNC45NDU5IDI2LjE2ODMgMjQuNTE1NCAyNi4yNDY4IDI0LjA5NyAyNi4xNzVDMjMuNjc4NSAyNi4xMDMyIDIzLjI5ODggMjUuODg1OCAyMy4wMjUxIDI1LjU2MTFDMjIuNzUxNCAyNS4yMzY1IDIyLjYwMTMgMjQuODI1NSAyMi42MDEzIDI0LjQwMDlDMjIuNjAxMyAyMy45NzYzIDIyLjc1MTQgMjMuNTY1NCAyMy4wMjUxIDIzLjI0MDdDMjMuMjk4OCAyMi45MTYxIDIzLjY3ODUgMjIuNjk4NiAyNC4wOTcgMjIuNjI2OEMyNC41MTU0IDIyLjU1NSAyNC45NDU5IDIyLjYzMzUgMjUuMzEyMSAyMi44NDgzQzI1LjY3ODMgMjMuMDYzMiAyNS45NTY5IDIzLjQwMDYgMjYuMDk4NCAyMy44MDA5SDI3LjQwMDRWMjEuNDAwOVpNMjguNjAwNCAzMy4zOTk3VjM0LjU2MDFDMjguNjM3NyAzNC42NTgxIDI4LjY4MyAzNC43NTI4IDI4LjczNiAzNC44NDMzQzI4Ljg1MzYgMzUuMDQ3MyAyOS4wMzEyIDM1LjI5NTcgMjkuMjU5MiAzNS41MzU3QzI5LjcyNiAzNi4wMjQxIDMwLjMyOTYgMzYuMzk5NyAzMS4wMDA0IDM2LjM5OTdDMzEuOTc3MiAzNi4zOTk3IDMyLjcxNzYgMzUuOTE3MyAzMy4yMzI0IDM1LjI3NTNDMzMuNzYwNCAzNC42MTI5IDM0LjAwMDQgMzMuODQxMyAzNC4wMDA0IDMzLjM5OTdDMzQuMDAwNCAzMy4yNDA2IDM0LjA2MzYgMzMuMDg4IDM0LjE3NjEgMzIuOTc1NUMzNC4yODg2IDMyLjg2MjkgMzQuNDQxMyAzMi43OTk3IDM0LjYwMDQgMzIuNzk5N0MzNC43NTY0IDMyLjc5OTcgMzUuMjE4NCAzMi43MDEzIDM1LjYzNDggMzIuMzQzN0MzNi4wMjI0IDMyLjAxMTMgMzYuNDAwNCAzMS40MzA1IDM2LjQwMDQgMzAuMzk5N0MzNi40MDA0IDI5LjIyOTcgMzYuMjUwNCAyOC40NDM3IDM2LjAxNCAyNy45Njg1QzM1LjkzNDkgMjcuNzkxNiAzNS44MTA4IDI3LjYzODUgMzUuNjU0IDI3LjUyNDVDMzUuNTE4OSAyNy40MzgxIDM1LjM2MDYgMjcuMzk1IDM1LjIwMDQgMjcuNDAwOUMzNS4wOTE5IDI3LjQwMDkgMzQuOTg1NCAyNy4zNzE0IDM0Ljg5MjMgMjcuMzE1NkMzNC43OTkyIDI3LjI1OTggMzQuNzIzIDI3LjE3OTggMzQuNjcxNyAyNy4wODQxQzM0LjYyMDUgMjYuOTg4NCAzNC41OTYyIDI2Ljg4MDcgMzQuNjAxNCAyNi43NzIzQzM0LjYwNjYgMjYuNjYzOCAzNC42NDExIDI2LjU1ODkgMzQuNzAxMiAyNi40Njg1QzM1LjE2MiAyNS43NzczIDM1LjE5NTYgMjQuNjQwOSAzNC44NjA4IDIzLjcwMjVDMzQuNjk2NCAyMy4yNDI5IDM0LjQ2NzIgMjIuOTAwOSAzNC4yMzIgMjIuNzEwMUMzNC4wMTcyIDIyLjUzNzMgMzMuODE1NiAyMi40OTQxIDMzLjU5IDIyLjU2OTdDMzMuNDk5OCAyMi41OTk3IDMzLjQwMzggMjIuNjA3OSAzMy4zMDk5IDIyLjU5MzZDMzMuMjE2IDIyLjU3OTMgMzMuMTI2OCAyMi41NDI4IDMzLjA0OTcgMjIuNDg3M0MzMi45NzI2IDIyLjQzMTggMzIuOTA5OCAyMi4zNTg3IDMyLjg2NjQgMjIuMjc0MUMzMi44MjMxIDIyLjE4OTYgMzIuODAwNSAyMi4wOTU5IDMyLjgwMDQgMjIuMDAwOUMzMi44MDA0IDIxLjMxOTMgMzIuNDY0NCAyMC43MzI1IDMxLjkwNjQgMjAuMjk5M0MzMS4yOTkgMTkuODQzOCAzMC41NTk2IDE5LjU5ODYgMjkuODAwNCAxOS42MDA5QzI5LjU2NTYgMTkuNTg5OCAyOS4zMzU2IDE5LjY2OTggMjkuMTU4NCAxOS44MjQxQzI4Ljk4ODkgMTkuOTg3NCAyOC44NjEzIDIwLjE4OTEgMjguNzg2NCAyMC40MTIxQzI4LjY3MjEgMjAuNzI1NiAyOC42MDkzIDIxLjA1NTQgMjguNjAwNCAyMS4zODg5VjMyLjIwMDlIMjkuNTAwNEMzMC4zMjg0IDMyLjIwMDkgMzEuMDAwNCAzMS41Mjg5IDMxLjAwMDQgMzAuNzAwOVYyOC40OTg5QzMwLjYwMDEgMjguMzU3NCAzMC4yNjI3IDI4LjA3ODkgMzAuMDQ3OCAyNy43MTI2QzI5LjgzMyAyNy4zNDY0IDI5Ljc1NDUgMjYuOTE2IDI5LjgyNjMgMjYuNDk3NUMyOS44OTgxIDI2LjA3OSAzMC4xMTU2IDI1LjY5OTMgMzAuNDQwMiAyNS40MjU3QzMwLjc2NDggMjUuMTUyIDMxLjE3NTggMjUuMDAxOSAzMS42MDA0IDI1LjAwMTlDMzIuMDI1IDI1LjAwMTkgMzIuNDM1OSAyNS4xNTIgMzIuNzYwNiAyNS40MjU3QzMzLjA4NTIgMjUuNjk5MyAzMy4zMDI3IDI2LjA3OSAzMy4zNzQ1IDI2LjQ5NzVDMzMuNDQ2MyAyNi45MTYgMzMuMzY3OCAyNy4zNDY0IDMzLjE1MyAyNy43MTI2QzMyLjkzODEgMjguMDc4OSAzMi42MDA3IDI4LjM1NzQgMzIuMjAwNCAyOC40OTg5VjMwLjcwMDlDMzIuMjAwNCAzMS40MTcgMzEuOTE1OSAzMi4xMDM4IDMxLjQwOTYgMzIuNjEwMUMzMC45MDMyIDMzLjExNjUgMzAuMjE2NSAzMy40MDA5IDI5LjUwMDQgMzMuNDAwOUgyOC42MDA0VjMzLjM5OTdaTTIzLjgwMDQgMjQuNDAwOUMyMy44MDA0IDI0LjU2MDEgMjMuODYzNiAyNC43MTI3IDIzLjk3NjEgMjQuODI1MkMyNC4wODg2IDI0LjkzNzcgMjQuMjQxMyAyNS4wMDA5IDI0LjQwMDQgMjUuMDAwOUMyNC41NTk1IDI1LjAwMDkgMjQuNzEyMSAyNC45Mzc3IDI0LjgyNDcgMjQuODI1MkMyNC45MzcyIDI0LjcxMjcgMjUuMDAwNCAyNC41NjAxIDI1LjAwMDQgMjQuNDAwOUMyNS4wMDA0IDI0LjI0MTggMjQuOTM3MiAyNC4wODkyIDI0LjgyNDcgMjMuOTc2N0MyNC43MTIxIDIzLjg2NDEgMjQuNTU5NSAyMy44MDA5IDI0LjQwMDQgMjMuODAwOUMyNC4yNDEzIDIzLjgwMDkgMjQuMDg4NiAyMy44NjQxIDIzLjk3NjEgMjMuOTc2N0MyMy44NjM2IDI0LjA4OTIgMjMuODAwNCAyNC4yNDE4IDIzLjgwMDQgMjQuNDAwOVpNMzEuNjAwNCAyNy40MDA5QzMxLjc1OTUgMjcuNDAwOSAzMS45MTIxIDI3LjMzNzcgMzIuMDI0NyAyNy4yMjUyQzMyLjEzNzIgMjcuMTEyNyAzMi4yMDA0IDI2Ljk2MDEgMzIuMjAwNCAyNi44MDA5QzMyLjIwMDQgMjYuNjQxOCAzMi4xMzcyIDI2LjQ4OTIgMzIuMDI0NyAyNi4zNzY3QzMxLjkxMjEgMjYuMjY0MSAzMS43NTk1IDI2LjIwMDkgMzEuNjAwNCAyNi4yMDA5QzMxLjQ0MTMgMjYuMjAwOSAzMS4yODg2IDI2LjI2NDEgMzEuMTc2MSAyNi4zNzY3QzMxLjA2MzYgMjYuNDg5MiAzMS4wMDA0IDI2LjY0MTggMzEuMDAwNCAyNi44MDA5QzMxLjAwMDQgMjYuOTYwMSAzMS4wNjM2IDI3LjExMjcgMzEuMTc2MSAyNy4yMjUyQzMxLjI4ODYgMjcuMzM3NyAzMS40NDEzIDI3LjQwMDkgMzEuNjAwNCAyNy40MDA5Wk0yNC40MDA0IDMxLjAwMDlDMjQuMjQxMyAzMS4wMDA5IDI0LjA4ODYgMzEuMDY0MSAyMy45NzYxIDMxLjE3NjdDMjMuODYzNiAzMS4yODkyIDIzLjgwMDQgMzEuNDQxOCAyMy44MDA0IDMxLjYwMDlDMjMuODAwNCAzMS43NjAxIDIzLjg2MzYgMzEuOTEyNyAyMy45NzYxIDMyLjAyNTJDMjQuMDg4NiAzMi4xMzc3IDI0LjI0MTMgMzIuMjAwOSAyNC40MDA0IDMyLjIwMDlDMjQuNTU5NSAzMi4yMDA5IDI0LjcxMjEgMzIuMTM3NyAyNC44MjQ3IDMyLjAyNTJDMjQuOTM3MiAzMS45MTI3IDI1LjAwMDQgMzEuNzYwMSAyNS4wMDA0IDMxLjYwMDlDMjUuMDAwNCAzMS40NDE4IDI0LjkzNzIgMzEuMjg5MiAyNC44MjQ3IDMxLjE3NjdDMjQuNzEyMSAzMS4wNjQxIDI0LjU1OTUgMzEuMDAwOSAyNC40MDA0IDMxLjAwMDlaXCIgZmlsbD1cIiMwMzk4NTVcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRUNGREYzXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz5gLFxyXG4gICAgICAgIHRpdGxlOiBgRG9uJ3QgcnVuIEFJIG9uIGltYWdlIHVwbG9hZGVkYCxcclxuICAgICAgICBjb250ZW50OiBgRG8geW91IHdpc2ggdG8gbm90IHJ1biBBSSBpbiB0aGUgaW1hZ2U/YCxcclxuICAgICAgICBidXR0b250eXBlOiAnY29uZmlybSdcclxuICAgICAgfVxyXG4gICAgICBkaWFsb2dSZWYucmVzdWx0LnRoZW4oKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgdGhpcy5ydW5BSU9mZihzSWR4LHFJZHgsZmFsc2UsYW5zSWR4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc0lkeCwgcUlkeCwgJ3J1bkFJJyk/LnBhdGNoVmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgICB0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc0lkeCwgcUlkeCwgJ3J1bkFJJyk/LnBhdGNoVmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJ1bkFJT2ZmKHNJZHg6IG51bWJlciwgcUlkeDogbnVtYmVyLCBzaG93RXJyb3I/OiBib29sZWFuLGFuc0lkeDpudW1iZXI9LTEpIHtcclxuICAgIGNvbnN0IGFuc3dlckZvcm1Hcm91cCA9IHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNJZHgsIHFJZHgsICdydW5BSScsYW5zSWR4KTtcclxuICAgIGlmIChhbnN3ZXJGb3JtR3JvdXApIHtcclxuICAgICAgYW5zd2VyRm9ybUdyb3VwLnBhdGNoVmFsdWUoZmFsc2UpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgY29uc3QgcXVlc3Rpb25Db250cm9sID0gdGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNJZHgsIHFJZHgsICdydW5BSScsYW5zSWR4KTtcclxuICAgIGlmIChxdWVzdGlvbkNvbnRyb2wpIHtcclxuICAgICAgcXVlc3Rpb25Db250cm9sLnBhdGNoVmFsdWUoZmFsc2UpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgLy8gY29uc29sZS5sb2cocXVlc3Rpb25Db250cm9sKTtcclxuICAgIFxyXG4gICAgY29uc3QgZGVzY3JpcHRpb25Db250cm9sID0gdGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNJZHgsIHFJZHgsICdydW5BSURlc2NyaXB0aW9uJyxhbnNJZHgpO1xyXG4gICAgaWYgKGRlc2NyaXB0aW9uQ29udHJvbCkge1xyXG4gICAgICBkZXNjcmlwdGlvbkNvbnRyb2wucGF0Y2hWYWx1ZSgnJyk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBpZiAoc2hvd0Vycm9yKSB7XHJcbiAgICAgIHRoaXMuc3dhbFRvYXN0KCdVbmFibGUgdG8gcHJvY2VzcyBydW5BSSByZXF1ZXN0ISBUcnkgYWdhaW4gYWZ0ZXIgc29tZSB0aW1lIScsJ2Vycm9yJyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG5cclxuICBnZXRTZWN0aW9uRm9ybUFycmF5KCkge1xyXG4gICAgcmV0dXJuICh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtQ29udHJvbChmb3JtQ29udHJvbDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoZm9ybUNvbnRyb2wpIGFzIEZvcm1Db250cm9sKTtcclxuICB9XHJcblxyXG4gIGdldFNlY3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXg6IG51bWJlciwgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgICAuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoZm9ybUNvbnRyb2xOYW1lKTtcclxuICB9XHJcblxyXG4gIGdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsYW5zSWR4Om51bWJlciA9IC0xKSB7XHJcbiAgICBjb25zdCBzZWN0aW9ucyA9IHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5IHwgbnVsbDtcclxuICAgIGlmICghc2VjdGlvbnMpIHJldHVybiBudWxsO1xyXG4gIFxyXG4gICAgY29uc3Qgc2VjdGlvbiA9IHNlY3Rpb25zLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgIGlmICghc2VjdGlvbikgcmV0dXJuIG51bGw7XHJcbiAgXHJcbiAgICBjb25zdCBxdWVzdGlvbnMgPSBzZWN0aW9uLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5IHwgbnVsbDtcclxuICAgIGlmICghcXVlc3Rpb25zKSByZXR1cm4gbnVsbDtcclxuICBcclxuICAgIGxldCBxdWVzdGlvbiA9IHF1ZXN0aW9ucy5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gICAgaWYgKCFxdWVzdGlvbikgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgaWYoYW5zSWR4ICE9IC0xKSB7XHJcbiAgICAgIGxldCBhbnN3ZXJMaXN0ID0gcXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5IHwgbnVsbDtcclxuICAgICAgaWYoIWFuc3dlckxpc3QpIHJldHVybiBudWxsO1xyXG4gICAgICBxdWVzdGlvbiA9IGFuc3dlckxpc3QuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gICAgICBpZighcXVlc3Rpb24pIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgY29uc3QgY29udHJvbCA9IHF1ZXN0aW9uLmdldChmb3JtQ29udHJvbE5hbWUpIGFzIEZvcm1Db250cm9sIHwgbnVsbDtcclxuICAgIHJldHVybiBjb250cm9sO1xyXG4gIH1cclxuICBcclxuXHJcbiAgZ2V0Rm9ybUFycmF5UXVlc3Rpb25zKHNlY3Rpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgfVxyXG5cclxuICAvLyBpbmRpdmlkdWFsIHF1ZXN0aW9uXHJcbiAgZ2V0UXVlc3Rpb25zRm9ybUdyb3VwKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICB9XHJcblxyXG4gIGdldEZvcm1BcnJheVF1ZXN0aW9uc0Fuc3dlcihzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLCBmb3JtQXJyYXlOYW1lOiBzdHJpbmcsYW5zSW5kZXg6bnVtYmVyID0gLTEsbGlua3F1ZXN0aW9uSW5kZXg6bnVtYmVyID0gLTEpIHtcclxuICAgIGxldCBzZWN0aW9uID0gKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSk/LmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgIGxldCBxdWVzdGlvbnMgPSAoKHNlY3Rpb24uZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpPy5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgaWYoYW5zSW5kZXggPT0gLTEpIHtcclxuICAgICAgcmV0dXJuIChxdWVzdGlvbnMuZ2V0KGZvcm1BcnJheU5hbWUpIGFzIEZvcm1BcnJheSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGFuc3dlcnMgPSAoKHF1ZXN0aW9ucy5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpPy5hdChhbnNJbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgbGV0IGxpbmtlZEluZGV4ID0gKChhbnN3ZXJzLmdldCgnbGlua1F1ZXN0aW9uQW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQobGlua3F1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgIHJldHVybiAobGlua2VkSW5kZXguZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybUFycmF5TGlua2VkUXVlc3Rpb25zKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsYW5zd2VySW5kZXg6bnVtYmVyKSB7XHJcbiAgICBsZXQgc2VjdGlvbiA9ICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpPy5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICBsZXQgcXVlc3Rpb25zID0gKChzZWN0aW9uLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KT8uYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgIGxldCBhbnN3ZXIgPSAocXVlc3Rpb25zLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk/LmF0KGFuc3dlckluZGV4KSBhcyBGb3JtR3JvdXA7XHJcbiAgICByZXR1cm4gKGFuc3dlci5nZXQoJ2xpbmtRdWVzdGlvbkFuc3dlcnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbnNGb3JtQXJyYXlWYWx1ZXMoc2VjdGlvbkluZGV4OiBudW1iZXIpOiBhbnlbXSB7XHJcbiAgICByZXR1cm4gKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuZ2V0UmF3VmFsdWUoKSB8fCBbXTtcclxuICB9XHJcblxyXG4gIGdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLCBmb3JtQ29udHJvbE5hbWU6IHN0cmluZyxhbnNJZHg6bnVtYmVyPSAtMSkge1xyXG4gICAgY29uc3Qgc2VjdGlvbnMgPSB0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSB8IG51bGw7XHJcbiAgICBpZiAoIXNlY3Rpb25zKSByZXR1cm4gbnVsbDtcclxuICBcclxuICAgIGNvbnN0IHNlY3Rpb24gPSBzZWN0aW9ucy5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgICBpZiAoIXNlY3Rpb24pIHJldHVybiBudWxsO1xyXG4gIFxyXG4gICAgY29uc3QgcXVlc3Rpb25zID0gc2VjdGlvbi5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSB8IG51bGw7XHJcbiAgICBpZiAoIXF1ZXN0aW9ucykgcmV0dXJuIG51bGw7XHJcbiAgXHJcbiAgICBjb25zdCBxdWVzdGlvbiA9IHF1ZXN0aW9ucy5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gICAgaWYgKCFxdWVzdGlvbikgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgaWYoZm9ybUNvbnRyb2xOYW1lID09ICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJykge1xyXG4gICAgICBjb25zdCBjb250cm9sID0gcXVlc3Rpb24uZ2V0KGZvcm1Db250cm9sTmFtZSkgYXMgRm9ybUNvbnRyb2wgfCBudWxsO1xyXG4gICAgICByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgYW5zd2VycyA9IHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgICAgIGlmICghYW5zd2VycykgcmV0dXJuIG51bGw7XHJcbiAgXHJcbiAgICAgIGlmKGFuc0lkeCAhPSAtMSkge1xyXG4gIFxyXG4gICAgICAgIGxldCBhbnN3ZXJMaXN0ID0gcXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5IHwgbnVsbDtcclxuICAgICAgICBpZighYW5zd2VyTGlzdCkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgYW5zd2VycyA9IGFuc3dlckxpc3QuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gICAgICAgIGlmICghYW5zd2VycykgcmV0dXJuIG51bGw7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBhbnN3ZXJzLmdldChmb3JtQ29udHJvbE5hbWUpIGFzIEZvcm1Db250cm9sIHwgbnVsbDtcclxuICAgICAgXHJcbiAgICAgIHJldHVybiBjb250cm9sO1xyXG4gICAgfVxyXG4gIFxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlZE5lc3RlZFF1ZXN0aW9uKHNlY3Rpb25pbmRleDogbnVtYmVyLHFubzphbnkpIHtcclxuICAgIGxldCBxdWVzdGlvbnMgPSAodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjdGlvbmluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHF1ZXN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgYW5zd2VycyA9IChxdWVzdGlvbnMuYXQoaSkgYXMgRm9ybUdyb3VwKT8uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5O1xyXG4gICAgICBpZihhbnN3ZXJzKSB7XHJcbiAgICAgICAgZm9yKGxldCBqPTA7ajxhbnN3ZXJzLmxlbmd0aDtqKyspIHtcclxuICAgICAgICAgIGxldCBsaW5rZWQgPSAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApPy5nZXQoJ3Nob3dMaW5rZWQnKT8udmFsdWU7XHJcbiAgICAgICAgICBpZihsaW5rZWQpIHtcclxuICAgICAgICAgICAgbGV0IHF1ZXN0aW9uTm8gPSAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApPy5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlO1xyXG4gICAgICAgICAgICBpZihxdWVzdGlvbk5vID09IHFubykge1xyXG4gICAgICAgICAgICAgIChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCk/LmdldCgnbGlua2VkUXVlc3Rpb24nKT8uc2V0VmFsdWUoMCk7XHJcbiAgICAgICAgICAgICAgKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdzaG93TGlua2VkJyk/LnNldFZhbHVlKGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlUXVlc3Rpb25Rbm9zKHNlY3Rpb25pbmRleDogbnVtYmVyKSB7XHJcbiAgICBsZXQgcXVlc3Rpb25zID0gKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25pbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgbGV0IHVwZGF0ZWRMaXN0OmFueSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVzdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHFubyA9IChxdWVzdGlvbnMuYXQoaSkgYXMgRm9ybUdyb3VwKT8uZ2V0KCdxbm8nKT8udmFsdWU7XHJcbiAgICAgIGlmKCF0aGlzLmRlbGV0ZWRMaXN0LmluY2x1ZGVzKHFubykpIHtcclxuICAgICAgICBsZXQgcXVlc3Rpb25BcnJheSA9IHF1ZXN0aW9ucz8udmFsdWU7XHJcbiAgICAgICAgZm9yKGxldCBxbiA9IDA7IHFuIDwgcXVlc3Rpb25BcnJheS5sZW5ndGggO3FuKyspIHtcclxuICAgICAgICAgIGlmKCF1cGRhdGVkTGlzdC5pbmNsdWRlcyhxbikpIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSBxdWVzdGlvbkFycmF5W3FuXTtcclxuICAgICAgICAgICAgaWYgKCFbJ2Rlc2NyaXB0aXZlJywgJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCAnbXVsdGlwbGVJbWFnZScsICd2aWRlbycsJ2xpbmVhcnNjYWxlJywndGltZScsJ2RhdGUnXS5pbmNsdWRlcyhpdGVtLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgZm9yKGxldCBhbnMgPSAwOyBhbnMgPCBpdGVtLmFuc3dlcnMubGVuZ3RoIDsgYW5zKyspIHtcclxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmFuc3dlcnNbYW5zXS5saW5rZWRRdWVzdGlvbiA9PSBxbm8pIHtcclxuICAgICAgICAgICAgICAgICAgdXBkYXRlZExpc3QucHVzaChxbik7XHJcbiAgICAgICAgICAgICAgICAgICgoKHF1ZXN0aW9ucy5hdChxbikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnMpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZShpKzEpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAocXVlc3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cCk/LmdldCgncW5vJyk/LnNldFZhbHVlKGkrMSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgLy8gdXBkYXRlUXVlc3Rpb25Rbm9zKHNlY3Rpb25pbmRleDogbnVtYmVyKSB7XHJcbiAgLy8gICBsZXQgcXVlc3Rpb25zID0gKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25pbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gIC8vICAgbGV0IHF1ZXN0aW9uQXJyYXkgPSBxdWVzdGlvbnM/LnZhbHVlO1xyXG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVzdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAvLyAgICAgbGV0IHFubyA9IChxdWVzdGlvbnMuYXQoaSkgYXMgRm9ybUdyb3VwKT8uZ2V0KCdxbm8nKT8udmFsdWU7XHJcbiAgLy8gICAgIGlmKCF0aGlzLmRlbGV0ZWRMaXN0LmluY2x1ZGVzKHFubykpIHtcclxuICAvLyAgICAgICBmb3IobGV0IHFuID0gMDsgcW4gPCBxdWVzdGlvbkFycmF5Lmxlbmd0aCA7cW4rKykge1xyXG4gIC8vICAgICAgICAgbGV0IGl0ZW0gPSBxdWVzdGlvbkFycmF5W3FuXTtcclxuICAvLyAgICAgICAgIGlmICghWydkZXNjcmlwdGl2ZScsICdpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywgJ211bHRpcGxlSW1hZ2UnLCAndmlkZW8nLCdsaW5lYXJzY2FsZScsJ3RpbWUnLCdkYXRlJ10uaW5jbHVkZXMoaXRlbS5hbnN3ZXJUeXBlKSkge1xyXG4gIC8vICAgICAgICAgICBsZXQgZmluZEluZGV4ID0gaXRlbS5hbnN3ZXJzLm1hcCgoaXRlbTphbnksIGluZGV4OmFueSkgPT4gKGl0ZW0ubGlua2VkUXVlc3Rpb24gPT0gcW5vID8gaW5kZXggOiAtMSkpLmZpbHRlcigoaW5kZXg6YW55KSA9PiBpbmRleCAhPT0gLTEpO1xyXG4gIC8vICAgICAgICAgICBpZihmaW5kSW5kZXgubGVuZ3RoKSB7XHJcbiAgLy8gICAgICAgICAgICAgZmluZEluZGV4LmZvckVhY2goKGlkeDpudW1iZXIpID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGl0ZW0uYW5zd2Vyc1tpZHhdLmNoZWNrZWQgPSB0cnVlO1xyXG4gIC8vICAgICAgICAgICAgICAgKCgocXVlc3Rpb25zLmF0KHFuKSBhcyBGb3JtR3JvdXApPy5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGlkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKGkrMSk7XHJcbiAgLy8gICAgICAgICAgICAgfSlcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgICAvLyBsZXQgZmluZEFuc0lkeCA9IGl0ZW0uYW5zd2Vycy5maW5kSW5kZXgoKGVsZTphbnkpID0+IGVsZS5saW5rZWRRdWVzdGlvbiA9PSBxbm8gJiYgIWl0ZW0uY2hlY2tlZCk7XHJcbiAgLy8gICAgICAgICAgIC8vIGlmKGZpbmRBbnNJZHggIT0gLTEpIHtcclxuICAvLyAgICAgICAgICAgLy8gfVxyXG4gIC8vICAgICAgICAgfVxyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgICAocXVlc3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cCk/LmdldCgncW5vJyk/LnNldFZhbHVlKGkrMSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIC8vIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25zQW5zd2VyRm9ybUdyb3VwKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsYW5zSW5kZXg6bnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0luZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZlUXVlc3Rpb24oc2VjSWR4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgYWN0aXZlc3RhdHVzOiBudW1iZXIsYW5zd2VySW5kZXg6bnVtYmVyID0gLTEpIHtcclxuICAgIGlmKGFjdGl2ZXN0YXR1cyA9PSAxKSB7XHJcbiAgICAgIGlmKGFuc3dlckluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5nZXRRdWVzdGlvbnNBbnN3ZXJGb3JtR3JvdXAoc2VjSWR4LHF1ZXN0aW9uSW5kZXgsYW5zd2VySW5kZXgpLmFkZENvbnRyb2woJ2FjdGl2ZScsdGhpcy5mYi5jb250cm9sKHRydWUpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmdldFF1ZXN0aW9uc0Zvcm1Hcm91cChzZWNJZHgscXVlc3Rpb25JbmRleCkuYWRkQ29udHJvbCgnYWN0aXZlJyx0aGlzLmZiLmNvbnRyb2wodHJ1ZSkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYoYW5zd2VySW5kZXggIT0gLTEpIHtcclxuICAgICAgICB0aGlzLmdldFF1ZXN0aW9uc0Fuc3dlckZvcm1Hcm91cChzZWNJZHgscXVlc3Rpb25JbmRleCxhbnN3ZXJJbmRleCkucmVtb3ZlQ29udHJvbCgnYWN0aXZlJyk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXRRdWVzdGlvbnNGb3JtR3JvdXAoc2VjSWR4LHF1ZXN0aW9uSW5kZXgpLnJlbW92ZUNvbnRyb2woJ2FjdGl2ZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWxsb3dBZGRBbnN3ZXIoYW5zd2VyczogYW55W10pIHtcclxuICAgIHJldHVybiBhbnN3ZXJzLmxlbmd0aCA8IDMwO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25MaXN0KHNlY0lkeDpudW1iZXIscW50SWR4Om51bWJlcixhbnNJZHg6bnVtYmVyKSB7XHJcbiAgICAvLyBmb3IobGV0IGFuc3dlciBvZiBxdWVzdGlvbj8uYW5zd2Vycykge1xyXG4gICAgLy8gICAgICAgICBpZigoYW5zd2VyLmxpbmtlZFF1ZXN0aW9uICYmIGFuc3dlci5saW5rZWRRdWVzdGlvbiA9PSBgJHtxdWVzdGlvbi5xbm99YCAmJiBxdWVzdGlvbi5xbm8gPT0gKHFudElkeCsxKSkgfHwgKCFhbnN3ZXIubGlua2VkUXVlc3Rpb24ubGVuZ3RoICYmIHF1ZXN0aW9uLnFubyAhPSAocW50SWR4KzEpKSkge1xyXG4gICAgLy8gICAgICAgICAgICAgcXVlc3Rpb25MaXN0LnB1c2gocXVlc3Rpb24ucW5vKVxyXG4gICAgLy8gICAgICAgICB9XHJcbiAgICAvLyAgICAgICB9XHJcbiAgICBsZXQgcXVlc3Rpb25EZXRhaWxzID0gKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuZ2V0UmF3VmFsdWUoKSB8fCBbXTtcclxuICAgIFxyXG4gICAgbGV0IHF1ZXN0aW9uTGlzdDphbnkgPSBbXTtcclxuICAgIGxldCBsaW5rZWRRdWVzdGlvbnM6YW55ID0gW107XHJcbiAgICBpZihxdWVzdGlvbkRldGFpbHMubGVuZ3RoKSB7XHJcbiAgICAgIGZvcihsZXQgcXVlc3Rpb24gb2YgcXVlc3Rpb25EZXRhaWxzKSB7XHJcbiAgICAgICAgaWYocXVlc3Rpb24uYW5zd2Vycykge1xyXG4gICAgICAgICAgaWYoWyd2aWRlbycsJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZScsJ3RpbWUnLCdkYXRlJ10uaW5jbHVkZXMocXVlc3Rpb24uYW5zd2VyVHlwZSkpIHtcclxuICAgICAgICAgICAgcXVlc3Rpb24uYW5zd2VycyA9IFtxdWVzdGlvbi5hbnN3ZXJzXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICBmb3IobGV0IFtpbmRleCxhbnN3ZXJdIG9mIHF1ZXN0aW9uLmFuc3dlcnMuZW50cmllcygpKSB7XHJcbiAgICAgICAgICAgIGlmKGFuc3dlcj8ubGlua2VkUXVlc3Rpb24pIHtcclxuICAgICAgICAgICAgICBsaW5rZWRRdWVzdGlvbnMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBxbm86cXVlc3Rpb24ucW5vLFxyXG4gICAgICAgICAgICAgICAgYW5zSWR4OmluZGV4LFxyXG4gICAgICAgICAgICAgICAgbGlua2VkUXVlc3Rpb246cGFyc2VJbnQoYW5zd2VyLmxpbmtlZFF1ZXN0aW9uKVxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gcXVlc3Rpb25EZXRhaWxzID0gcXVlc3Rpb25EZXRhaWxzLmZpbHRlcigoaXRlbTphbnkpID0+IGl0ZW0ucW5vICE9IChxbnRJZHgrMSkpO1xyXG4gICAgICBmb3IobGV0IHF1ZXN0aW9uIG9mIHF1ZXN0aW9uRGV0YWlscykge1xyXG4gICAgICAgIGlmKHF1ZXN0aW9uPy5hbnN3ZXJzKSB7XHJcbiAgICAgICAgICBsZXQgZmluZEV4aXN0cyA9IGxpbmtlZFF1ZXN0aW9ucy5maW5kKChpdGVtOmFueSkgPT4gIGl0ZW0ucW5vID09IHF1ZXN0aW9uLnFubyAmJiBpdGVtLmFuc0lkeCA9PSBhbnNJZHggJiYgaXRlbS5xbm8gPT0gKHFudElkeCsxKSk7XHJcbiAgICAgICAgICBsZXQgY2hlY2tMaW5rZWQgPSBsaW5rZWRRdWVzdGlvbnMuZmluZCgoaXRlbTphbnkpID0+IGl0ZW0ubGlua2VkUXVlc3Rpb24gPT0gcXVlc3Rpb24ucW5vKTtcclxuICAgICAgICAgICAgaWYoIWNoZWNrTGlua2VkICYmICFmaW5kRXhpc3RzICYmIHF1ZXN0aW9uLnFubyAhPSAocW50SWR4KzEpICYmICFxdWVzdGlvbkxpc3QuaW5jbHVkZXMocXVlc3Rpb24ucW5vKSkge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uTGlzdC5wdXNoKHF1ZXN0aW9uLnFubyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoZmluZEV4aXN0cyAmJiAhcXVlc3Rpb25MaXN0LmluY2x1ZGVzKGZpbmRFeGlzdHMubGlua2VkUXVlc3Rpb24pICkge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uTGlzdC5wdXNoKGZpbmRFeGlzdHMubGlua2VkUXVlc3Rpb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGZpbmRFeGlzdHMgPSBsaW5rZWRRdWVzdGlvbnMuZmluZCgoaXRlbTphbnkpID0+ICBpdGVtLmxpbmtlZFF1ZXN0aW9uID09IHF1ZXN0aW9uLnFubyk7XHJcbiAgICAgICAgICBpZighZmluZEV4aXN0cyAmJiBxdWVzdGlvbi5xbm8gIT0gKHFudElkeCsxKSAmJiAhcXVlc3Rpb25MaXN0LmluY2x1ZGVzKHF1ZXN0aW9uLnFubykpIHtcclxuICAgICAgICAgICAgcXVlc3Rpb25MaXN0LnB1c2gocXVlc3Rpb24ucW5vKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICAgIHJldHVybiBxdWVzdGlvbkxpc3Q7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVMaW5rZWQoc2VjSWR4Om51bWJlcixxbklkeDpudW1iZXIsYW5zSWR4Om51bWJlcikge1xyXG4gICAgbGV0IGxpbmtWYWx1ZSA9ICgoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnc2hvd0xpbmtlZCcpPy52YWx1ZTtcclxuICAgIGlmKGxpbmtWYWx1ZSkge1xyXG4gICAgICBsZXQgbGlua2VkUXVlc3Rpb24gPSAoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlO1xyXG4gICAgICBpZihsaW5rZWRRdWVzdGlvbikge1xyXG4gICAgICAgICgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChsaW5rZWRRdWVzdGlvbiAtIDEpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rVHlwZScpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgIH1cclxuICAgICAgKCgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZSgwKTtcclxuICAgIH1cclxuXHJcbiAgICBpZighbGlua1ZhbHVlKSB7XHJcbiAgICAgICgoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmdldCgndmFsaWRhdGlvbicpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgIHRoaXMuY2xlYXJSZWZlcmVuY2VJbWFnZShzZWNJZHgscW5JZHgsYW5zSWR4KTtcclxuICAgIH1cclxuXHJcbiAgICAoKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3Nob3dMaW5rZWQnKT8uc2V0VmFsdWUoIWxpbmtWYWx1ZSlcclxuICB9XHJcblxyXG4gIHVwZGF0ZVF1ZXN0aW9uVHlwZShzZWNJZHg6bnVtYmVyLHFuSWR4Om51bWJlcixhbnNJZHg6bnVtYmVyLGV2ZW50OmFueSkge1xyXG4gICAgbGV0IGxpbmtlZFF1ZXN0aW9uID0gKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgIGlmKGxpbmtlZFF1ZXN0aW9uKSB7XHJcbiAgICAgICgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChsaW5rZWRRdWVzdGlvbiAtIDEpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rVHlwZScpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgICBpZihldmVudC50YXJnZXQudmFsdWUpIHtcclxuICAgICAgbGV0IGluZGV4ID0gcGFyc2VJbnQoZXZlbnQudGFyZ2V0LnZhbHVlKSAtIDE7XHJcbiAgICAgICgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChpbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtUeXBlJyk/LnNldFZhbHVlKHRydWUpO1xyXG4gICAgICAoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZSgwKTtcclxuICAgICAgKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdzaG93TGlua2VkJyk/LnNldFZhbHVlKGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNlbGVjdE9wdGlvbihxbm86YW55LGFuc0xpbmtlZDphbnkpIHtcclxuICAgIHJldHVybiBxbm8gPT0gYW5zTGlua2VkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25OYW1lKHNlY0lkeDpudW1iZXIscUlkeDpudW1iZXIpIHtcclxuICAgIHJldHVybiAoKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFJZHgtMSkgYXMgRm9ybUdyb3VwKS5nZXQoJ3FuYW1lJyk/LnZhbHVlO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZFwiICpuZ0lmPVwiY2hlY2tsaXN0TG9hZGluZ1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiIWNoZWNrbGlzdExvYWRpbmdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cIkNoZWNrbGlzdEZvcm1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTMgcGItM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0zIG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgcm91dGVyTGluaz1cIi9tYW5hZ2UvdHJheC9jaGVja2xpc3RcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUgbWUtNSBwcy0yIHB4LTNcIj48c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1LjgzMzIgMTAuMDAwM0g0LjE2NjVNNC4xNjY1IDEwLjAwMDNMOS45OTk4NCAxNS44MzM3TTQuMTY2NSAxMC4wMDAzTDkuOTk5ODQgNC4xNjY5OVwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29sdW1uIHctODAwcHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdGFibGVjb250ZW50IG1iLTQgdy0xMDBcIj48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImNoZWNrbGlzdCBwbGFpbi1pbnB1dFwiICNjaGVja2xpc3ROYW1lIHBsYWNlaG9sZGVyPVwiRW50ZXIgQ2hlY2tsaXN0IE5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2xpc3ROYW1lXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVkaXRhYmxlY29udGVudCB3LTEwMFwiPjxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiY2hlY2tsaXN0RGVzY3JpcHRpb24gcGxhaW4taW5wdXRcIiAjY2hlY2tsaXN0RGVzY3JpcHRpb24gcGxhY2Vob2xkZXI9XCJFbnRlciBDaGVja2xpc3QgRGVzY3JpcHRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2xpc3REZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXktNiBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBwb3NpdGlvbi1yZWxhdGl2ZSBteS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93dmFsdWUgPT09ICdhZGQnXCIgKGNsaWNrKT1cInNhdmVDaGVja2xpc3RRdWVzdGlvbnMoJ2NvbmZpZ3VyZScpXCI+PHNwYW4gY2xhc3M9XCJtcy0yXCI+Q29uZmlndXJlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93dmFsdWUgPT09ICdhZGQnXCIgKGNsaWNrKT1cInNhdmVBc0RyYWZ0UG9wKCdjcmVhdGUnKVwiPjxzcGFuIGNsYXNzPVwibXMtMlwiPlNhdmUgYXMgRHJhZnQ8L3NwYW4+IDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXgtMiBidG4tb3V0bGluZSBidG4tb3V0bGluZS1kZWZhdWx0IHJvdW5kZWQtMyB0ZXh0LW5vd3JhcCBib3JkZXItdmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93dmFsdWUgPT09ICdlZGl0J1wiIChjbGljayk9XCJ1cGRhdGVDaGVja2xpc3RRdWVzdGlvbnMoJ2NvbmZpZ3VyZScpXCI+PHNwYW4gY2xhc3M9XCJtcy0yXCI+Q29uZmlndXJlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd3ZhbHVlID09PSAnZWRpdCdcIiAoY2xpY2spPVwic2F2ZUFzRHJhZnRQb3AoJ3VwZGF0ZScpXCI+PHNwYW4gY2xhc3M9XCJtcy0yXCI+U2F2ZSBhcyBEcmFmdDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIG10LTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cIkNoZWNrbGlzdEZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWxlZnQgY2FyZCBweC03IHB5LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMThweCBmdy02MDAgdGV4dC1sZWZ0IG1iLTMgY29uY2lzZS1jaGVja2xpc3RuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Z2V0Rm9ybUNvbnRyb2woJ2NoZWNrbGlzdE5hbWUnKS52YWx1ZSA/IGdldEZvcm1Db250cm9sKCdjaGVja2xpc3ROYW1lJykudmFsdWUgOiAnQ2hlY2tsaXN0TmFtZSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsZWZ0LXBhbmVsLWNvbnRhaW5lclwiIGZvcm1BcnJheU5hbWU9XCJzZWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGdldFNlY3Rpb25Gb3JtQXJyYXkoKS5jb250cm9scztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggc2VjdGlvbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTE4cHggZnctYm9sZCBlZGl0YWJsZWNvbnRlbnQtbGVmdFwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWN0aW9uRm9ybUNvbnRyb2woaSwnbmFtZScpPy52YWx1ZSA9PT0gJycgPyBcIlNlY3Rpb24gXCIgOiAnJ319e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNlY3Rpb25Gb3JtQ29udHJvbChpLCduYW1lJyk/LnZhbHVlID8gZ2V0U2VjdGlvbkZvcm1Db250cm9sKGksJ25hbWUnKT8udmFsdWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0U2VjdGlvbkZvcm1Db250cm9sKGksJ3NlY3Rpb25OdW1iZXInKT8udmFsdWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cImRlbGV0ZVNlY3Rpb24oaSlcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIzNVwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBtYXRUb29sdGlwPVwiRGVsZXRlIHNlY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIiBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4yNSA0LjVIMy43NU0zLjc1IDQuNUgxNS43NU0zLjc1IDQuNVYxNUMzLjc1IDE1LjM5NzggMy45MDgwNCAxNS43Nzk0IDQuMTg5MzQgMTYuMDYwN0M0LjQ3MDY0IDE2LjM0MiA0Ljg1MjE4IDE2LjUgNS4yNSAxNi41SDEyLjc1QzEzLjE0NzggMTYuNSAxMy41Mjk0IDE2LjM0MiAxMy44MTA3IDE2LjA2MDdDMTQuMDkyIDE1Ljc3OTQgMTQuMjUgMTUuMzk3OCAxNC4yNSAxNVY0LjVIMy43NVpNNiA0LjVWM0M2IDIuNjAyMTggNi4xNTgwNCAyLjIyMDY0IDYuNDM5MzQgMS45MzkzNEM2LjcyMDY0IDEuNjU4MDQgNy4xMDIxOCAxLjUgNy41IDEuNUgxMC41QzEwLjg5NzggMS41IDExLjI3OTQgMS42NTgwNCAxMS41NjA3IDEuOTM5MzRDMTEuODQyIDIuMjIwNjQgMTIgMi42MDIxOCAxMiAzVjQuNU03LjUgOC4yNVYxMi43NU0xMC41IDguMjVWMTIuNzVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJhY2NvcmRpYW4oaSlcIiBbbmdDbGFzc109XCJ7J3JvdGF0ZScgOiBzaG93ICE9PSBpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIzNVwiIGhlaWdodD1cIjM1XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvdz09PWlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyYWdEcm9wKGksJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImdldEZvcm1BcnJheVF1ZXN0aW9ucyhpKS5jb250cm9sc1wiIGNsYXNzPVwicXVlc3Rpb24tbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwicXVlc3Rpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcXVlc3Rpb24gb2YgZ2V0Rm9ybUFycmF5UXVlc3Rpb25zKGkpLmNvbnRyb2xzO2xldCBqPWluZGV4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXktMiBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInF1ZXN0aW9uLmdldCgnYWN0aXZlJyk/LnZhbHVlID09PSB0cnVlID8gJ2FjdGl2ZS1xdWVzdGlvbicgOiAncS1idG4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrRHJhZyAobW91c2VlbnRlcik9XCJzZXRBY3RpdmVRdWVzdGlvbihpLGosMSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2Nyb2xsVG9RdWVzdGlvbihpLGopO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWxlYXZlKT1cInNldEFjdGl2ZVF1ZXN0aW9uKGksaiwtMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uY2lzZS1xdWVzdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Z2V0UXVlc3Rpb25Gb3JtQ29udHJvbChpLGosJ3FuYW1lJyk/LnZhbHVlID8gJycgOiBcIlF1ZXN0aW9uXCJ9fXt7IGdldFF1ZXN0aW9uRm9ybUNvbnRyb2woaSxqLCdxbmFtZScpPy52YWx1ZSA/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChpLGosJ3FuYW1lJyk/LnZhbHVlIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRRdWVzdGlvbkZvcm1Db250cm9sKGksaiwncW5vJyk/LnZhbHVlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgbXQtMlwiPlxyXG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cIkNoZWNrbGlzdEZvcm1cIiAjZm9ybVJlZj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIHB4LTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtY2FyZCBweS01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwibXQtMlwiIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgY2hlY2tsaXN0IG5hbWUgaGVyZVwiIGZvcm1Db250cm9sTmFtZT1cImNoZWNrbGlzdE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtdC00XCIgcGxhY2Vob2xkZXI9XCJFbnRlciBjaGVja2xpc3QgZGVzY3JpcHRpb24gaGVyZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2xpc3REZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJzZWN0aW9uc1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb25BcmVhIG10LTVcIiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBnZXRTZWN0aW9uRm9ybUFycmF5KCkuY29udHJvbHM7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTE4cHggZnctYm9sZCBlZGl0YWJsZWNvbnRlbnRcIj48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cInBsYWluLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc2VjdGlvbk5hbWUgKGNoYW5nZSk9XCJ1cGRhdGVJbnB1dFZhbHVlKGksc2VjdGlvbk5hbWUudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxocj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cIm1sLTVcIiAoY2xpY2spPVwiZGVsZXRlU2VjdGlvbihpKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgbWF0VG9vbHRpcD1cIkRlbGV0ZSBzZWN0aW9uXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRlc3RcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjI1IDQuNUgzLjc1TTMuNzUgNC41SDE1Ljc1TTMuNzUgNC41VjE1QzMuNzUgMTUuMzk3OCAzLjkwODA0IDE1Ljc3OTQgNC4xODkzNCAxNi4wNjA3QzQuNDcwNjQgMTYuMzQyIDQuODUyMTggMTYuNSA1LjI1IDE2LjVIMTIuNzVDMTMuMTQ3OCAxNi41IDEzLjUyOTQgMTYuMzQyIDEzLjgxMDcgMTYuMDYwN0MxNC4wOTIgMTUuNzc5NCAxNC4yNSAxNS4zOTc4IDE0LjI1IDE1VjQuNUgzLjc1Wk02IDQuNVYzQzYgMi42MDIxOCA2LjE1ODA0IDIuMjIwNjQgNi40MzkzNCAxLjkzOTM0QzYuNzIwNjQgMS42NTgwNCA3LjEwMjE4IDEuNSA3LjUgMS41SDEwLjVDMTAuODk3OCAxLjUgMTEuMjc5NCAxLjY1ODA0IDExLjU2MDcgMS45MzkzNEMxMS44NDIgMi4yMjA2NCAxMiAyLjYwMjE4IDEyIDNWNC41TTcuNSA4LjI1VjEyLjc1TTEwLjUgOC4yNVYxMi43NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNFwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKGNsaWNrKT1cImFjY29yZGlhbihpKVwiIFtuZ0NsYXNzXT1cInsncm90YXRlJyA6IHNob3cgIT09IGl9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTUgNy41TDEwIDEyLjVMMTUgNy41XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbnNBcmVhXCIgKm5nSWY9XCJzaG93ID09PSBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cInF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlF1ZXN0aW9uLXNlYyBtdC0xMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIGdldEZvcm1BcnJheVF1ZXN0aW9ucyhpKS5jb250cm9scztsZXQgaiA9IGluZGV4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwic2V0QWN0aXZlUXVlc3Rpb24oaSxqLDEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJzZXRBY3RpdmVRdWVzdGlvbihpLGosLTEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJqXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMThweCBweC0zIGVkaXRhYmxlY29udGVudCBxdWVzdGlvbnRpdGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBkZWZhdWx0O1wiPiBRdWVzdGlvbiB7e2orMX19PC9zcGFuPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtY2FyZCBwYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNvbGlkXCIgcm93cz1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtdC0wXCIgW2lkXT1cIidxLScgKyBpICsgJy0nICsgalwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBxdWVzdGlvbiBoZXJlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJxbmFtZVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5nZXQoJ3FuYW1lJyk/LmludmFsaWQgJiYgcXVlc3Rpb24uZ2V0KCdxbmFtZScpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJjb2xvcjogcmVkO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdxbmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPipcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb24gaXMgcmVxdWlyZWQuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhWydkZXNjcmlwdGl2ZUltYWdlJywnaW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVmX2ltZ19jb250IG1iLTQgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMzAwcHhcIiBjbGFzcz1cImF1dG8tYWRqdXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiVGFuZ28gRXllXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVmX2RlbF9pY29uXCIgKGNsaWNrKT1cImNsZWFyUmVmZXJlbmNlSW1hZ2UoaSxqKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNSA1LjAwMTNINC4xNjY2N000LjE2NjY3IDUuMDAxM0gxNy41TTQuMTY2NjcgNS4wMDEzVjE2LjY2OEM0LjE2NjY3IDE3LjExIDQuMzQyMjYgMTcuNTMzOSA0LjY1NDgyIDE3Ljg0NjVDNC45NjczOCAxOC4xNTkgNS4zOTEzMSAxOC4zMzQ2IDUuODMzMzMgMTguMzM0NkgxNC4xNjY3QzE0LjYwODcgMTguMzM0NiAxNS4wMzI2IDE4LjE1OSAxNS4zNDUyIDE3Ljg0NjVDMTUuNjU3NyAxNy41MzM5IDE1LjgzMzMgMTcuMTEgMTUuODMzMyAxNi42NjhWNS4wMDEzSDQuMTY2NjdaTTYuNjY2NjcgNS4wMDEzVjMuMzM0NjRDNi42NjY2NyAyLjg5MjYxIDYuODQyMjYgMi40Njg2OCA3LjE1NDgyIDIuMTU2MTJDNy40NjczOCAxLjg0MzU2IDcuODkxMzEgMS42Njc5NyA4LjMzMzMzIDEuNjY3OTdIMTEuNjY2N0MxMi4xMDg3IDEuNjY3OTcgMTIuNTMyNiAxLjg0MzU2IDEyLjg0NTIgMi4xNTYxMkMxMy4xNTc3IDIuNDY4NjggMTMuMzMzMyAyLjg5MjYxIDEzLjMzMzMgMy4zMzQ2NFY1LjAwMTNNOC4zMzMzMyA5LjE2Nzk3VjE0LjE2OE0xMS42NjY3IDkuMTY3OTdWMTQuMTY4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjQjQyMzE4XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBidG4gYnRuLWxpZ2h0LXByaW1hcnkgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkLW5vbmVcIiBbaWRdPVwiJ2ZpbGV1cGxvYWRfJytpK2pcIiB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiYW5zd2VyRmlsZVwiIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImxvYWRJbWFnZUZyb21EZXZpY2UoaSxyZWZJbWdRSWR4LCRldmVudCwtMSwncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidmaWxldXBsb2FkXycraStqXCIgKGNsaWNrKT1cInJlZkltZ1FJZHg9ajtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwibXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyMVwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzQwODJfMzEyMilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTkuNjY2NyAzLjMzNTI3VjguMzM1MjdNMTkuNjY2NyA4LjMzNTI3SDE0LjY2NjdNMTkuNjY2NyA4LjMzNTI3TDE1LjggNC43MDE5M0MxNC45MDQ0IDMuODA1ODYgMTMuNzk2NCAzLjE1MTI3IDEyLjU3OTMgMi43OTkyNUMxMS4zNjIzIDIuNDQ3MjIgMTAuMDc1OSAyLjQwOTIzIDguODQwMjUgMi42ODg4MkM3LjYwNDU2IDIuOTY4NDEgNi40NTk4NCAzLjU1NjQ2IDUuNTEyOSA0LjM5ODEyQzQuNTY1OTUgNS4yMzk3NyAzLjg0NzY1IDYuMzA3NTkgMy40MjUwMSA3LjUwMTkzTTEuMzMzMzQgMTYuNjY4NlYxMS42Njg2TTEuMzMzMzQgMTEuNjY4Nkg2LjMzMzM0TTEuMzMzMzQgMTEuNjY4Nkw1LjIwMDAxIDE1LjMwMTlDNi4wOTU2MyAxNi4xOTggNy4yMDM2NSAxNi44NTI2IDguNDIwNjggMTcuMjA0NkM5LjYzNzcxIDE3LjU1NjcgMTAuOTI0MSAxNy41OTQ2IDEyLjE1OTggMTcuMzE1MUMxMy4zOTU1IDE3LjAzNTUgMTQuNTQwMiAxNi40NDc0IDE1LjQ4NzEgMTUuNjA1OEMxNi40MzQxIDE0Ljc2NDEgMTcuMTUyNCAxMy42OTYzIDE3LjU3NSAxMi41MDE5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNDA4Ml8zMTIyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybT1cInRyYW5zbGF0ZSgwLjUpXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5SZXVwbG9hZCBJbWFnZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBidG4gYWRkLXJlZi1idG4gYnRuLWxpZ2h0LXByaW1hcnkgbXktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkLW5vbmVcIiBbaWRdPVwiJ2ZpbGV1cGxvYWRfJytpK2pcIiB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImxvYWRJbWFnZUZyb21EZXZpY2UoaSxyZWZJbWdRSWR4LCRldmVudCwtMSwncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInBvaW50ZXJcIiBbZm9yXT1cIidmaWxldXBsb2FkXycraStqXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWZJbWdRSWR4PWo7XCI+IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTEwIDQuMTY3OTdWMTUuODM0Nk00LjE2NjY5IDEwLjAwMTNIMTUuODMzNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPkFkZCBSZWZlcmVuY2UgSW1hZ2UgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkIHBiLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJtdC01XCIgbmFtZT1cInNlbGVjdG9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJhbnN3ZXJUeXBlU2VsZWN0aW9uKGksaiwkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbnN3ZXJUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwiZGVzY3JpcHRpdmVcIiB2YWx1ZT1cImRlc2NyaXB0aXZlXCI+RGVzY3JpcHRpdmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwieWVzL25vXCIgdmFsdWU9XCJ5ZXMvbm9cIj5BL0IgUXVlc3Rpb248L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIj5NdWx0aXBsZSBDaG9pY2UgUXVlc3Rpb24gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGUgQW5zd2VyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiPk11bHRpcGxlIENob2ljZSBRdWVzdGlvbiAtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpcGxlIEFuc3dlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cImRlc2NyaXB0aXZlSW1hZ2VcIiB2YWx1ZT1cImRlc2NyaXB0aXZlSW1hZ2VcIj5DYXB0dXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltYWdlIHdpdGggRGVzY3JpcHRpb248L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJpbWFnZVwiIHZhbHVlPVwiaW1hZ2VcIj5DYXB0dXJlIEltYWdlIGFzIGFuc3dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cInZpZGVvXCIgdmFsdWU9XCJ2aWRlb1wiPkNhcHR1cmUgdmlkZW8gYXMgYW5zd2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwibXVsdGlwbGVJbWFnZVwiIHZhbHVlPVwibXVsdGlwbGVJbWFnZVwiPkNhcHR1cmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlwbGUgSW1hZ2U8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJkYXRlXCIgdmFsdWU9XCJkYXRlXCI+RGF0ZSAtIEREL01NL1lZWVk8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJsaW5lYXJzY2FsZVwiIHZhbHVlPVwibGluZWFyc2NhbGVcIj5MaW5lYXIgU2NhbGU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJ0aW1lXCIgdmFsdWU9XCJ0aW1lXCI+VGltZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBteC00IGQtZmxleCBtdC0zXCIgKm5nSWY9XCJbJ2Rlc2NyaXB0aXZlJ10uaW5jbHVkZXMocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIHZhbHVlPVwidGV4dFwiIFtuYW1lXT1cIidkZXNjcmlwdGl2ZXR5cGUnXCIgW2lkXT1cIidpbmxpbmVSYWRpbzAnKyBpICsgalwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRzY3JpcHRpdmVUeXBlXCIgW2Zvcl09XCInaW5saW5lUmFkaW8wJysgaSArIGpcIj5UZXh0PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGl2ZXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiB2YWx1ZT1cIm51bWJlclwiIFtuYW1lXT1cIidkZXNjcmlwdGl2ZXR5cGUnXCIgW2lkXT1cIidpbmxpbmVSYWRpbzEnKyBpICsgalwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRzY3JpcHRpdmVUeXBlXCIgIFtmb3JdPVwiJ2lubGluZVJhZGlvMScraSArIGpcIj5OdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ3llcy9ubycgfHwgcXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVjaG9pY2VzaW5nbGUnIHx8IHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlY2hvaWNlbXVsdGlwbGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMThweCBmdy1ib2xkZXJcIiBzdHlsZT1cImN1cnNvcjogZGVmYXVsdDtcIj5BbnN3ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25zPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJhbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYW5zd2VyIG9mIGdldEZvcm1BcnJheVF1ZXN0aW9uc0Fuc3dlcihpLGosJ2Fuc3dlcnMnKT8uY29udHJvbHM7bGV0IGsgPSBpbmRleDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIFtmb3JtR3JvdXBOYW1lXT1cImtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYW5zd2VyLmdldCgnaXNkZWxldGVkJyk/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IEFuc3dlcjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkIHBiLTAgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtdC0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGFuc3dlciBoZXJlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgPT09ICd5ZXMvbm8nIHx8IHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlY2hvaWNlc2luZ2xlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdEZWZhdWx0Q29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZsMlwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaW1nQWRkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVMaW5rZWQoaSxqLGspXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTkuOTk5OTkgNC4xNjYwMlYxNS44MzI3TTQuMTY2NjYgOS45OTkzNUgxNS44MzMzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyLmdldCgnYW5zd2VyJyk/LmludmFsaWQgJiYgYW5zd2VyLmdldCgnYW5zd2VyJyk/LnRvdWNoZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cImNvbG9yOiByZWQ7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbnN3ZXIuZ2V0KCdhbnN3ZXInKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBBbnN3ZXIgaXMgcmVxdWlyZWQuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT1cImNvbG9yOiByZWQ7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFuc3dlci5nZXQoJ3Nob3dTT1BGbGFnRXJyb3InKT8udmFsdWUgPT09IHRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVyeSBhbnN3ZXIgY2Fu4oCZdCBiZSBhIGZsYWcuPC9wPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1Db250cm9sTmFtZT1cInNvcEZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2w+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJyYWlzZWZsYWcoaSxqLGssdHJ1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiUmFpc2UgYSBmbGFnIGlmIHRoaXMgYW5zd2VyIGlzIHNlbGVjdGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyLmdldCgnc29wRmxhZycpPy52YWx1ZSA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImtpd2lcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjY2NjY5IDEwLjAwMDdDMi42NjY2OSAxMC4wMDA3IDMuMzMzMzUgOS4zMzM5OCA1LjMzMzM1IDkuMzMzOThDNy4zMzMzNSA5LjMzMzk4IDguNjY2NjkgMTAuNjY3MyAxMC42NjY3IDEwLjY2NzNDMTIuNjY2NyAxMC42NjczIDEzLjMzMzQgMTAuMDAwNyAxMy4zMzM0IDEwLjAwMDdWMi4wMDA2NUMxMy4zMzM0IDIuMDAwNjUgMTIuNjY2NyAyLjY2NzMyIDEwLjY2NjcgMi42NjczMkM4LjY2NjY5IDIuNjY3MzIgNy4zMzMzNSAxLjMzMzk4IDUuMzMzMzUgMS4zMzM5OEMzLjMzMzM1IDEuMzMzOTggMi42NjY2OSAyLjAwMDY1IDIuNjY2NjkgMi4wMDA2NVYxMC4wMDA3Wk0yLjY2NjY5IDEwLjAwMDdWMTQuNjY3M1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRDBENUREXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJyYWlzZWZsYWcoaSxqLGssZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlJhaXNlIGEgZmxhZyBpZiB0aGlzIGFuc3dlciBpcyBzZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFuc3dlci5nZXQoJ3NvcEZsYWcnKT8udmFsdWUgPT09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZS1mbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi42NjY2OSAxMC4wMDA3QzIuNjY2NjkgMTAuMDAwNyAzLjMzMzM1IDkuMzMzOTggNS4zMzMzNSA5LjMzMzk4QzcuMzMzMzUgOS4zMzM5OCA4LjY2NjY5IDEwLjY2NzMgMTAuNjY2NyAxMC42NjczQzEyLjY2NjcgMTAuNjY3MyAxMy4zMzM0IDEwLjAwMDcgMTMuMzMzNCAxMC4wMDA3VjIuMDAwNjVDMTMuMzMzNCAyLjAwMDY1IDEyLjY2NjcgMi42NjczMiAxMC42NjY3IDIuNjY3MzJDOC42NjY2OSAyLjY2NzMyIDcuMzMzMzUgMS4zMzM5OCA1LjMzMzM1IDEuMzMzOThDMy4zMzMzNSAxLjMzMzk4IDIuNjY2NjkgMi4wMDA2NSAyLjY2NjY5IDIuMDAwNjVWMTAuMDAwN1pNMi42NjY2OSAxMC4wMDA3VjE0LjY2NzNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0QwRDVERFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWFuc3dlci5nZXQoJ3Nob3dMaW5rZWQnKT8udmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbnN3ZXJ2YWxpZGF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibXQtN1wiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6MTZweDtoZWlnaHQ6MTZweDtjdXJzb3I6IHBvaW50ZXI7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJnZXR2YWxpZGF0aW9uKGksaixrLCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWxpZGF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoYWNrYm94IHB0LTQgbXQtMiBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJjdXJzb3I6IGRlZmF1bHQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5WYWxpZGF0ZSByZXNwb25zZTwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibWItMFwiPlRyaWdnZXIgYW4gYWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZWFjaCByZXNwb25zZSB0byB2YWxpZGF0ZSBpdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgIT09ICd5ZXMvbm8nICYmIGdldEZvcm1BcnJheVF1ZXN0aW9uc0Fuc3dlcihpLGosJ2Fuc3dlcnMnKS52YWx1ZS5sZW5ndGggPiAyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQW5zd2VyKGksaixrKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC04XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRGVsZXRlIGFuc3dlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCIgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNUw1IDE1TTUgNUwxNSAxNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gKm5nSWY9XCJtb3JlcW4udmFsaWRhdGlvblwiIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhbnN3ZXIuZ2V0KCd2YWxpZGF0aW9uJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zIHB0LTcgZnMtNCBmdy00MDAgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHJlc3BvbnNlIGlzIHRoaXMsIHRoZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cIm10LTUgbXgtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsaWRhdGlvblR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlVmFsaWRhdGlvblR5cGUoJGV2ZW50LGksaixrKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+RGVzY3JpcHRpdmUgQW5zd2VyPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5DYXB0dXJlIEltYWdlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbj5DYXB0dXJlIFZpZGVvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBteC00IGQtZmxleCBwdC04XCIgKm5nSWY9XCJhbnN3ZXIuZ2V0KCd2YWxpZGF0aW9uVHlwZScpPy52YWx1ZSA9PT0gJ0Rlc2NyaXB0aXZlIEFuc3dlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIFtpZF09XCInaW5saW5lUmFkaW8yJyArIGkgKyBqICsga1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwidGV4dFwiIFtuYW1lXT1cIidkZXNjcmlwdGl2ZXR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZHNjcmlwdGl2ZVR5cGVcIiBbZm9yXT1cIidpbmxpbmVSYWRpbzInICsgaSArIGogKyBrXCI+VGV4dDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1zLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidpbmxpbmVSYWRpbzMnKyBpICsgaiArIGtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIm51bWJlclwiIFtuYW1lXT1cIidkZXNjcmlwdGl2ZXR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZHNjcmlwdGl2ZVR5cGVcIiBbZm9yXT1cIidpbmxpbmVSYWRpbzMnICsgaSArIGogKyBrXCI+TnVtYmVyPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbnN3ZXIuZ2V0KCdzaG93TGlua2VkJyk/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBwdC03IGZzLTQgZnctNDAwIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmtlZCBRdWVzdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IFtpZF09XCJpKyctJytrXCIgW25hbWVdPVwiaSsnLScra1wiIGNsYXNzPVwibXQtNVwiIChjaGFuZ2UpPVwidXBkYXRlUXVlc3Rpb25UeXBlKGksaixrLCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IFF1ZXN0aW9uPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGdldFF1ZXN0aW9uTGlzdChpLGosaylcIiBbdmFsdWVdPVwib3B0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdE9wdGlvbihvcHRpb24sYW5zd2VyLmdldCgnbGlua2VkUXVlc3Rpb24nKT8udmFsdWUpXCI+UXVlc3Rpb24ge3tvcHRpb259fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFuc3dlci5nZXQoJ3ZhbGlkYXRpb24nKT8udmFsdWUgJiYgYW5zd2VyLmdldCgndmFsaWRhdGlvblR5cGUnKT8udmFsdWUgPT09ICdDYXB0dXJlIEltYWdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnLGspPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZl9pbWdfY29udCBtYi00IG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScsayk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIzMDBweFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhdXRvLWFkanVzdFwiIGFsdD1cIlRhbmdvIEV5ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVmX2RlbF9pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xlYXJSZWZlcmVuY2VJbWFnZShpLGosayk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNSA1LjAwMTNINC4xNjY2N000LjE2NjY3IDUuMDAxM0gxNy41TTQuMTY2NjcgNS4wMDEzVjE2LjY2OEM0LjE2NjY3IDE3LjExIDQuMzQyMjYgMTcuNTMzOSA0LjY1NDgyIDE3Ljg0NjVDNC45NjczOCAxOC4xNTkgNS4zOTEzMSAxOC4zMzQ2IDUuODMzMzMgMTguMzM0NkgxNC4xNjY3QzE0LjYwODcgMTguMzM0NiAxNS4wMzI2IDE4LjE1OSAxNS4zNDUyIDE3Ljg0NjVDMTUuNjU3NyAxNy41MzM5IDE1LjgzMzMgMTcuMTEgMTUuODMzMyAxNi42NjhWNS4wMDEzSDQuMTY2NjdaTTYuNjY2NjcgNS4wMDEzVjMuMzM0NjRDNi42NjY2NyAyLjg5MjYxIDYuODQyMjYgMi40Njg2OCA3LjE1NDgyIDIuMTU2MTJDNy40NjczOCAxLjg0MzU2IDcuODkxMzEgMS42Njc5NyA4LjMzMzMzIDEuNjY3OTdIMTEuNjY2N0MxMi4xMDg3IDEuNjY3OTcgMTIuNTMyNiAxLjg0MzU2IDEyLjg0NTIgMi4xNTYxMkMxMy4xNTc3IDIuNDY4NjggMTMuMzMzMyAyLjg5MjYxIDEzLjMzMzMgMy4zMzQ2NFY1LjAwMTNNOC4zMzMzMyA5LjE2Nzk3VjE0LjE2OE0xMS42NjY3IDkuMTY3OTdWMTQuMTY4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNCNDIzMThcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnLGspPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBidG4gYnRuLWxpZ2h0LXByaW1hcnkgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmlsZXVwbG9hZF8nK2kraitrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIiBuYW1lPVwiYW5zd2VyRmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibG9hZEltYWdlRnJvbURldmljZShpLHJlZkltZ1FJZHgsJGV2ZW50LGspXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2ZpbGV1cGxvYWRfJytpK2ora1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWZJbWdRSWR4PWo7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm14LTJcIiB3aWR0aD1cIjIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMSAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzQwODJfMzEyMilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE5LjY2NjcgMy4zMzUyN1Y4LjMzNTI3TTE5LjY2NjcgOC4zMzUyN0gxNC42NjY3TTE5LjY2NjcgOC4zMzUyN0wxNS44IDQuNzAxOTNDMTQuOTA0NCAzLjgwNTg2IDEzLjc5NjQgMy4xNTEyNyAxMi41NzkzIDIuNzk5MjVDMTEuMzYyMyAyLjQ0NzIyIDEwLjA3NTkgMi40MDkyMyA4Ljg0MDI1IDIuNjg4ODJDNy42MDQ1NiAyLjk2ODQxIDYuNDU5ODQgMy41NTY0NiA1LjUxMjkgNC4zOTgxMkM0LjU2NTk1IDUuMjM5NzcgMy44NDc2NSA2LjMwNzU5IDMuNDI1MDEgNy41MDE5M00xLjMzMzM0IDE2LjY2ODZWMTEuNjY4Nk0xLjMzMzM0IDExLjY2ODZINi4zMzMzNE0xLjMzMzM0IDExLjY2ODZMNS4yMDAwMSAxNS4zMDE5QzYuMDk1NjMgMTYuMTk4IDcuMjAzNjUgMTYuODUyNiA4LjQyMDY4IDE3LjIwNDZDOS42Mzc3MSAxNy41NTY3IDEwLjkyNDEgMTcuNTk0NiAxMi4xNTk4IDE3LjMxNTFDMTMuMzk1NSAxNy4wMzU1IDE0LjU0MDIgMTYuNDQ3NCAxNS40ODcxIDE1LjYwNThDMTYuNDM0MSAxNC43NjQxIDE3LjE1MjQgMTMuNjk2MyAxNy41NzUgMTIuNTAxOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNsaXAwXzQwODJfMzEyMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJ3aGl0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+UmV1cGxvYWQgSW1hZ2U8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyxrKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgYnRuIGFkZC1yZWYtYnRuIGJ0bi1saWdodC1wcmltYXJ5IG15LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkLW5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2ZpbGV1cGxvYWRfJytpK2ora1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCIgbmFtZT1cImZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS9wbmcsIGltYWdlL2pwZWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImxvYWRJbWFnZUZyb21EZXZpY2UoaSxyZWZJbWdRSWR4LCRldmVudCxrKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9yXT1cIidmaWxldXBsb2FkXycraStqK2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVmSW1nUUlkeD1qO1wiPiA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMCA0LjE2Nzk3VjE1LjgzNDZNNC4xNjY2OSAxMC4wMDEzSDE1LjgzMzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+QWRkIFJlZmVyZW5jZSBJbWFnZSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctNCBmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG14LTIgYnRuLXNlYyBtdC02IHRleHQtbGVmdCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG14LTAgcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFsbG93VXBsb2FkZnJvbUdhbGxlcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmbGV4U3dpdGNoQ2hlY2tEZWZhdWx0XCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvdyB1cGxvYWQgZnJvbSBnYWxsZXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMlwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJyk/Lmhhc0Vycm9yKCdkdXBsaWNhdGVTdHJpbmcnKVwiIGNsYXNzPVwidGV4dC1kYW5nZXIgbXQtMlwiPiogU2FtZSBhbnN3ZXIgY2Fubm90IGJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdGVkPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBjbGFzcz1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlY2hvaWNlbXVsdGlwbGUnIHx8IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgPT09ICdtdWx0aXBsZWNob2ljZXNpbmdsZScpICYmICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dBZGRBbnN3ZXIocXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJyk/LnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJBZGRNb3JlQW5zKGksaixxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGNvbC1sZy0xMiBidG4tbGlnaHQtcHJpbWFyeSBteS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGQgTW9yZSBBbnN3ZXI8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtR3JvdXBOYW1lPVwiYW5zd2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicmVmX2ltZ19jb250IG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjMwMHB4XCIgY2xhc3M9XCJhdXRvLWFkanVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJUYW5nbyBFeWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVmX2RlbF9pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhclJlZmVyZW5jZUltYWdlKGksaik7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi41IDUuMDAxM0g0LjE2NjY3TTQuMTY2NjcgNS4wMDEzSDE3LjVNNC4xNjY2NyA1LjAwMTNWMTYuNjY4QzQuMTY2NjcgMTcuMTEgNC4zNDIyNiAxNy41MzM5IDQuNjU0ODIgMTcuODQ2NUM0Ljk2NzM4IDE4LjE1OSA1LjM5MTMxIDE4LjMzNDYgNS44MzMzMyAxOC4zMzQ2SDE0LjE2NjdDMTQuNjA4NyAxOC4zMzQ2IDE1LjAzMjYgMTguMTU5IDE1LjM0NTIgMTcuODQ2NUMxNS42NTc3IDE3LjUzMzkgMTUuODMzMyAxNy4xMSAxNS44MzMzIDE2LjY2OFY1LjAwMTNINC4xNjY2N1pNNi42NjY2NyA1LjAwMTNWMy4zMzQ2NEM2LjY2NjY3IDIuODkyNjEgNi44NDIyNiAyLjQ2ODY4IDcuMTU0ODIgMi4xNTYxMkM3LjQ2NzM4IDEuODQzNTYgNy44OTEzMSAxLjY2Nzk3IDguMzMzMzMgMS42Njc5N0gxMS42NjY3QzEyLjEwODcgMS42Njc5NyAxMi41MzI2IDEuODQzNTYgMTIuODQ1MiAyLjE1NjEyQzEzLjE1NzcgMi40Njg2OCAxMy4zMzMzIDIuODkyNjEgMTMuMzMzMyAzLjMzNDY0VjUuMDAxM004LjMzMzMzIDkuMTY3OTdWMTQuMTY4TTExLjY2NjcgOS4xNjc5N1YxNC4xNjhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjQjQyMzE4XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGJ0biBidG4tbGlnaHQtcHJpbWFyeSBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkLW5vbmVcIiBpZD1cImZpbGV1cGxvYWRcIiB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZpbGVcIiBhY2NlcHQ9XCJpbWFnZS9wbmcsIGltYWdlL2pwZWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibG9hZEltYWdlRnJvbURldmljZShpLHJlZkltZ1FJZHgsJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImZpbGV1cGxvYWRcIiAoY2xpY2spPVwicmVmSW1nUUlkeD1qO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGNsYXNzPVwibXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzQwODJfMzEyMilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOS42NjY3IDMuMzM1MjdWOC4zMzUyN00xOS42NjY3IDguMzM1MjdIMTQuNjY2N00xOS42NjY3IDguMzM1MjdMMTUuOCA0LjcwMTkzQzE0LjkwNDQgMy44MDU4NiAxMy43OTY0IDMuMTUxMjcgMTIuNTc5MyAyLjc5OTI1QzExLjM2MjMgMi40NDcyMiAxMC4wNzU5IDIuNDA5MjMgOC44NDAyNSAyLjY4ODgyQzcuNjA0NTYgMi45Njg0MSA2LjQ1OTg0IDMuNTU2NDYgNS41MTI5IDQuMzk4MTJDNC41NjU5NSA1LjIzOTc3IDMuODQ3NjUgNi4zMDc1OSAzLjQyNTAxIDcuNTAxOTNNMS4zMzMzNCAxNi42Njg2VjExLjY2ODZNMS4zMzMzNCAxMS42Njg2SDYuMzMzMzRNMS4zMzMzNCAxMS42Njg2TDUuMjAwMDEgMTUuMzAxOUM2LjA5NTYzIDE2LjE5OCA3LjIwMzY1IDE2Ljg1MjYgOC40MjA2OCAxNy4yMDQ2QzkuNjM3NzEgMTcuNTU2NyAxMC45MjQxIDE3LjU5NDYgMTIuMTU5OCAxNy4zMTUxQzEzLjM5NTUgMTcuMDM1NSAxNC41NDAyIDE2LjQ0NzQgMTUuNDg3MSAxNS42MDU4QzE2LjQzNDEgMTQuNzY0MSAxNy4xNTI0IDEzLjY5NjMgMTcuNTc1IDEyLjUwMTlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF80MDgyXzMxMjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+UmV1cGxvYWQgSW1hZ2U8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGJ0biBhZGQtcmVmLWJ0biBidG4tbGlnaHQtcHJpbWFyeSBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkLW5vbmVcIiBpZD1cImZpbGV1cGxvYWRcIiB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZpbGVcIiBhY2NlcHQ9XCJpbWFnZS9wbmcsIGltYWdlL2pwZWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibG9hZEltYWdlRnJvbURldmljZShpLHJlZkltZ1FJZHgsJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicG9pbnRlclwiIGZvcj1cImZpbGV1cGxvYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWZJbWdRSWR4PWo7XCI+IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMCA0LjE2Nzk3VjE1LjgzNDZNNC4xNjY2OSAxMC4wMDEzSDE1LjgzMzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+QWRkIFJlZmVyZW5jZSBJbWFnZSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctNCBmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG14LTIgYnRuLXNlYyBtdC02IHRleHQtbGVmdCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXgtMCBwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwidG9jXCIgdmFsdWU9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dVcGxvYWRmcm9tR2FsbGVyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmbGV4U3dpdGNoQ2hlY2tEZWZhdWx0XCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93IHVwbG9hZCBmcm9tIGdhbGxlcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihbJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpICYmIGdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyk/LnZhbHVlID09PSAnJykgPyAnY29sLWxnLTQgbXQtNicgOiBbJ2ltYWdlJ10uaW5jbHVkZXMocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlKSA/ICdjb2wtbGctMicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwiKFsnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSkgJiYgZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnKT8udmFsdWUgPT09ICcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGl2ZXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBbaWRdPVwiJ2lubGluZVJhZGlvNCcgKyBpICsgalwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInRleHRcIiBbbmFtZV09XCInZGVzY3JpcHRpdmV0eXBlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvNCcgKyBpICsgalwiPlRleHQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1zLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIFtpZF09XCInaW5saW5lUmFkaW81JyArIGkgKyBqXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwibnVtYmVyXCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZHNjcmlwdGl2ZVR5cGVcIiBbZm9yXT1cIidpbmxpbmVSYWRpbzUnICsgaSArIGpcIj5OdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnKT8udmFsdWUgJiYgWydpbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlSW1hZ2UnID8gJ2NvbC1sZy01IGQtZmxleCBtdC02JyA6ICdjb2wtbGctMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlSW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIFtpZF09XCInaW5saW5lUmFkaW82JyArIGkgKyBqXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwidGV4dFwiIFtuYW1lXT1cIidkZXNjcmlwdGl2ZXR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRzY3JpcHRpdmVUeXBlXCIgW2Zvcl09XCInaW5saW5lUmFkaW82JyArIGkgKyBqXCI+VGV4dDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidpbmxpbmVSYWRpbzYnICsgaSArIGpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJudW1iZXJcIiBbbmFtZV09XCInZGVzY3JpcHRpdmV0eXBlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvNicgKyBpICsgalwiPk51bWJlcjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZzMTYtNjAwIHB4LTEyXCI+IFJ1biBBSSDinKg8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggYWxpZ24taXRlbXMtY2VudGVyIGJ0bi1zZWMgbWwtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlJ1bkFJKGksailcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicnVuQUlcIiBuYW1lPVwidG9jXCIgdmFsdWU9XCIxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcj1cImZsZXhTd2l0Y2hDaGVja0RlZmF1bHRcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIFtuZ0NsYXNzXT1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlSW1hZ2UnID8gJ210LTEnIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVuYWJsZSBBSSB3aGVyZSB5b3Ugd2FudCB0YW5nbyB0byBpZGVudGlmeSwgdHJhY2sgYW5kIGFsZXJ0IGluc3RhbmNlcy5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfMjMwMV8xMDAwMzgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTcuOTk5NjcgMTAuNjY1NFY3Ljk5ODdNNy45OTk2NyA1LjMzMjAzSDguMDA2MzRNMTQuNjY2MyA3Ljk5ODdDMTQuNjY2MyAxMS42ODA2IDExLjY4MTYgMTQuNjY1NCA3Ljk5OTY3IDE0LjY2NTRDNC4zMTc3OCAxNC42NjU0IDEuMzMzMDEgMTEuNjgwNiAxLjMzMzAxIDcuOTk4N0MxLjMzMzAxIDQuMzE2OCA0LjMxNzc4IDEuMzMyMDMgNy45OTk2NyAxLjMzMjAzQzExLjY4MTYgMS4zMzIwMyAxNC42NjYzIDQuMzE2OCAxNC42NjYzIDcuOTk4N1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzk4QTJCM1wiIHN0cm9rZS13aWR0aD1cIjJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9nPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8yMzAxXzEwMDAzOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBWaWRlbyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ3ZpZGVvJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtR3JvdXBOYW1lPVwiYW5zd2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCIgY29sLWxnLTQgZm9ybS1jaGVjayBmb3JtLXN3aXRjaCB0ZXh0LWxlZnQgYWxpZ24taXRlbXMtY2VudGVyIGJ0bi1zZWMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG14LTAgcG9pbnRlclwiIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidG9jXCIgdmFsdWU9XCIxXCIgbmdEZWZhdWx0Q29udHJvbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dVcGxvYWRmcm9tR2FsbGVyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZmxleFN3aXRjaENoZWNrRGVmYXVsdFwiPkFsbG93IHVwbG9hZCBmcm9tIGdhbGxlcnk8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ3RpbWUnXCIgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUdyb3VwTmFtZT1cImFuc3dlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGNvbC1sZy00IGJ0bi1zZWMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNvbGlkIGZsYXRwaWNrci1pbnB1dCB3LTIwMHB4XCIgdHlwZT1cInRpbWVcIiBuYW1lPVwidGltZVwiIG5nRGVmYXVsdENvbnRyb2wgZm9ybUNvbnRyb2xOYW1lPVwiYW5zd2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ2xpbmVhcnNjYWxlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtR3JvdXBOYW1lPVwiYW5zd2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1zZWMgbXQtMiBtZS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNvbGlkIGZsYXRwaWNrci1pbnB1dCB3LTEwMHB4XCIgdHlwZT1cIm51bWJlclwiIG5hbWU9XCJzdGFydFwiIG5nRGVmYXVsdENvbnRyb2wgZm9ybUNvbnRyb2xOYW1lPVwicmFuZ2VTdGFydFwiPiAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXNlYyBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTE2cHhcIj50bzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnRuLXNlYyBtdC0yIG1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWQgZmxhdHBpY2tyLWlucHV0IHctMTAwcHhcIiB0eXBlPVwibnVtYmVyXCIgbmFtZT1cInN0YXJ0XCIgbmdEZWZhdWx0Q29udHJvbCBmb3JtQ29udHJvbE5hbWU9XCJyYW5nZUVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB0LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJjbG9uZVF1ZXN0aW9uKGksailcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkR1cGxpY2F0ZVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRlc3RcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8zMzg1XzEwNTc4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQuMTY2NjMgMTIuNDk5M0gzLjMzMzI5QzIuODkxMjcgMTIuNDk5MyAyLjQ2NzM0IDEyLjMyMzggMi4xNTQ3OCAxMi4wMTEyQzEuODQyMjIgMTEuNjk4NiAxLjY2NjYzIDExLjI3NDcgMS42NjY2MyAxMC44MzI3VjMuMzMyNjhDMS42NjY2MyAyLjg5MDY1IDEuODQyMjIgMi40NjY3MyAyLjE1NDc4IDIuMTU0MTdDMi40NjczNCAxLjg0MTYxIDIuODkxMjcgMS42NjYwMiAzLjMzMzI5IDEuNjY2MDJIMTAuODMzM0MxMS4yNzUzIDEuNjY2MDIgMTEuNjk5MiAxLjg0MTYxIDEyLjAxMTggMi4xNTQxN0MxMi4zMjQ0IDIuNDY2NzMgMTIuNSAyLjg5MDY1IDEyLjUgMy4zMzI2OFY0LjE2NjAyTTkuMTY2NjMgNy40OTkzNUgxNi42NjY2QzE3LjU4NzEgNy40OTkzNSAxOC4zMzMzIDguMjQ1NTQgMTguMzMzMyA5LjE2NjAyVjE2LjY2NkMxOC4zMzMzIDE3LjU4NjUgMTcuNTg3MSAxOC4zMzI3IDE2LjY2NjYgMTguMzMyN0g5LjE2NjYzQzguMjQ2MTUgMTguMzMyNyA3LjQ5OTk2IDE3LjU4NjUgNy40OTk5NiAxNi42NjZWOS4xNjYwMkM3LjQ5OTk2IDguMjQ1NTQgOC4yNDYxNSA3LjQ5OTM1IDkuMTY2NjMgNy40OTkzNVpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMzM4NV8xMDU3OFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwiZGVsZXRlUXVlc3Rpb24oaSxqKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDI0cHggIWltcG9ydGFudDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSBxdWVzdGlvblwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRlc3RcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi41IDQuOTk5MzVINC4xNjY2N000LjE2NjY3IDQuOTk5MzVIMTcuNU00LjE2NjY3IDQuOTk5MzVWMTYuNjY2QzQuMTY2NjcgMTcuMTA4IDQuMzQyMjYgMTcuNTMyIDQuNjU0ODIgMTcuODQ0NUM0Ljk2NzM4IDE4LjE1NzEgNS4zOTEzMSAxOC4zMzI3IDUuODMzMzMgMTguMzMyN0gxNC4xNjY3QzE0LjYwODcgMTguMzMyNyAxNS4wMzI2IDE4LjE1NzEgMTUuMzQ1MiAxNy44NDQ1QzE1LjY1NzcgMTcuNTMyIDE1LjgzMzMgMTcuMTA4IDE1LjgzMzMgMTYuNjY2VjQuOTk5MzVINC4xNjY2N1pNNi42NjY2NyA0Ljk5OTM1VjMuMzMyNjhDNi42NjY2NyAyLjg5MDY1IDYuODQyMjYgMi40NjY3MyA3LjE1NDgyIDIuMTU0MTdDNy40NjczOCAxLjg0MTYxIDcuODkxMzEgMS42NjYwMiA4LjMzMzMzIDEuNjY2MDJIMTEuNjY2N0MxMi4xMDg3IDEuNjY2MDIgMTIuNTMyNiAxLjg0MTYxIDEyLjg0NTIgMi4xNTQxN0MxMy4xNTc3IDIuNDY2NzMgMTMuMzMzMyAyLjg5MDY1IDEzLjMzMzMgMy4zMzI2OFY0Ljk5OTM1TTguMzMzMzMgOS4xNjYwMlYxNC4xNjZNMTEuNjY2NyA5LjE2NjAyVjE0LjE2NlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXgtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy02IHB4LTBcIiAqbmdJZj1cIkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkIHB5LTcgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiYWRkTmV3UXVlc3Rpb24oc2VjdGlvbkluZGV4KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJpc0Rpc2FibGVkID8gJ2Rpc2FibGVkJyA6IG51bGxcIiBjbGFzcz1cIm10LTIgYnRuLXNlYyBwb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOS45OTk5OSA0LjE2NjAyVjE1LjgzMjdNNC4xNjY2NiA5Ljk5OTM1SDE1LjgzMzNcIiBzdHJva2U9XCIjMzQ0MDU0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4gQWRkIE5ldyBRdWVzdGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgcGwtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtY2FyZCBweS03IHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKGNsaWNrKT1cImFkZE5ld1NlY3Rpb24oKVwiIGNsYXNzPVwibXQtMiBweC0wIGJ0bi1zZWMgcG9pbnRlclwiPiA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05Ljk5OTk5IDQuMTY2MDJWMTUuODMyN000LjE2NjY2IDkuOTk5MzVIMTUuODMzM1wiIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiBBZGQgTmV3IFNlY3Rpb248L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
1525
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1jaGVja2xpc3QvYWRkLWNoZWNrbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2FkZC1jaGVja2xpc3QvYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBaUMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxTQUFTLEVBQWUsVUFBVSxFQUFFLFNBQVMsRUFBcUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRyxPQUFPLEVBQWUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekYsT0FBTyxFQUFFLEtBQUssRUFBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBSXRFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDOzs7Ozs7Ozs7O0FBTzFGLE1BQU0sT0FBTyxxQkFBcUI7SUFpQlo7SUFBaUM7SUFBd0I7SUFBeUM7SUFBd0I7SUFBNkI7SUFBMkI7SUFBc0I7SUFBK0I7SUFoQnJPLE9BQU8sQ0FBYTtJQUUxQyxhQUFhLENBQWE7SUFDMUIsSUFBSSxHQUFXLENBQUMsQ0FBQztJQUNqQixZQUFZLEdBQVcsQ0FBQyxDQUFDO0lBQ3pCLFNBQVMsQ0FBTTtJQUNmLFNBQVMsQ0FBTTtJQUNmLFVBQVUsR0FB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RUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFlLENBQUMsRUFBRSxDQUFDLElBQUksR0FBQyxDQUFDLENBQWUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQzdILENBQUM7d0dBL2lEVSxxQkFBcUI7NEZBQXJCLHFCQUFxQiw2SkNsQmxDLGd6bEZBeXdCTTs7NEZEdnZCTyxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1COzZTQUtQLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycywgRm9ybUFycmF5LCBGb3JtQnVpbGRlciwgRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlLCBQYWdlSW5mb1NlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgdGltZXIsdGFrZVVudGlsLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE5nYk1vZGFsIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5pbXBvcnQgeyBUcmF4cG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi90cmF4cG9wdXAvdHJheHBvcHVwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJ3RhbmdvLWFwcC11aS1zaGFyZWQnO1xyXG5pbXBvcnQgeyBUcmF4U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RyYXguc2VydmljZSc7XHJcbmltcG9ydCB7IG5vV2hpdGVzcGFjZVZhbGlkYXRvciB9IGZyb20gJy4uL2NyZWF0ZS10YXNrL3ZhbGlkYXRvcnMvd2hpdGVzcGFjZS12YWxpZGF0b3InO1xyXG5pbXBvcnQgeyB1bmlxdWVTdHJpbmdWYWxpZGF0b3IgfSBmcm9tICcuLi9jcmVhdGUtdGFzay92YWxpZGF0b3JzL3VuaXF1ZS1zdHJpbmctdmFsaWRhdG9yJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFkZC1jaGVja2xpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hZGQtY2hlY2tsaXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYWRkLWNoZWNrbGlzdC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZENoZWNrbGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ2Zvcm1SZWYnKSBmb3JtUmVmOiBFbGVtZW50UmVmO1xyXG5cclxuICBDaGVja2xpc3RGb3JtITogRm9ybUdyb3VwO1xyXG4gIHNob3c6IG51bWJlciA9IDA7XHJcbiAgc2VjdGlvbkluZGV4OiBudW1iZXIgPSAwO1xyXG4gIGdldG9iamVjdDogYW55O1xyXG4gIGVkaXR2YWx1ZTogYW55O1xyXG4gIGlzRGlzYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG5vc2VjdGlvbjpib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd3ZhbHVlOiBzdHJpbmc7XHJcbiAgcmVmSW1nUUlkeDogbnVtYmVyID0gMDtcclxuICBjaGVja2xpc3RMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcG9wdXBDb3VudDpudW1iZXIgPSAwO1xyXG4gIGNsaWVudElkOmFueTtcclxuICBkZWxldGVkTGlzdDphbnkgPSBbXTtcclxuICBwcml2YXRlIGRldGFjaCA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwYWdlSW5mbzpQYWdlSW5mb1NlcnZpY2UscHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIscHJpdmF0ZSBjaGFuZ2VkZXRlY3RvcjpDaGFuZ2VEZXRlY3RvclJlZixwcml2YXRlIGRpYWxvZzpOZ2JNb2RhbCxwcml2YXRlIHJvdXRlOkFjdGl2YXRlZFJvdXRlLHByaXZhdGUgdG9hc3Q6VG9hc3RTZXJ2aWNlLHByaXZhdGUgcm91dGVyOlJvdXRlcixwcml2YXRlIHNvcFNlcnZpY2U6VHJheFNlcnZpY2UscHJpdmF0ZSBnczpHbG9iYWxTdGF0ZVNlcnZpY2UpIHtcclxuICB9XHJcbiAgXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRDaGVja2xpc3QoKTtcclxuICAgIHRoaXMuc2V0UGFnZURhdGEoKTtcclxuICAgIGxldCBzdG9yYWdlRGV0YWlscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2hlYWRlci1maWx0ZXJzJykgfHwgJ3t9Jyk7XHJcbiAgICBpZighc3RvcmFnZURldGFpbHM/LmNsaWVudCkge1xyXG4gICAgICBzdG9yYWdlRGV0YWlscyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NsaWVudC1kZXRhaWxzJykgfHwgJ3t9Jyk7XHJcbiAgICAgIHN0b3JhZ2VEZXRhaWxzLmNsaWVudCA9IHN0b3JhZ2VEZXRhaWxzLmNsaWVudElkO1xyXG4gICAgfVxyXG4gICAgaWYoc3RvcmFnZURldGFpbHM/LmNsaWVudCkge1xyXG4gICAgICB0aGlzLmNsaWVudElkID0gc3RvcmFnZURldGFpbHMuY2xpZW50O1xyXG4gICAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmVkaXR2YWx1ZSA9IHBhcmFtcy5jaGVja2xpc3RJZDtcclxuICAgICAgICBpZiAocGFyYW1zLmNoZWNrbGlzdElkKSB7XHJcbiAgICAgICAgICB0aGlzLnNob3d2YWx1ZSA9ICdlZGl0JztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zaG93dmFsdWUgPSAnYWRkJ1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zaG93dmFsdWUgPT0gJ2VkaXQnIHx8IHBhcmFtcy50eXBlKSB7XHJcbiAgICAgICAgICBsZXQgb2JqOiBhbnkgPSB7fTtcclxuICAgICAgICAgIGlmIChwYXJhbXMuY2hlY2tsaXN0SWQpIHtcclxuICAgICAgICAgICAgb2JqLmNoZWNrTGlzdElkID0gcGFyYW1zLmNoZWNrbGlzdElkXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBvYmoudHlwZSA9IHBhcmFtcy50eXBlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb2JqLmNsaWVudElkID0gdGhpcy5jbGllbnRJZDtcclxuICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLnNvcFNlcnZpY2UuZ2V0Y29uZmlnKG9iaikucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmKHJlcykge1xyXG4gICAgICAgICAgICAgICAgaWYocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0b2JqZWN0ID0gcmVzLmRhdGEuY2hlY2tMaXN0RGV0YWlscztcclxuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ2hlY2tsaXN0UXVlc3Rpb25zKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrbGlzdExvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tsaXN0TG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbml0Q2hlY2tsaXN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXRhY2gubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGV0YWNoLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBzZXRQYWdlRGF0YSgpIHtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0VGl0bGUoXCJNYW5hZ2UgQ2hlY2tsaXN0XCIpO1xyXG4gICAgdGhpcy5wYWdlSW5mby5zZXREZXNjcmlwdGlvbihcIkF1dG9tYXRlIG9yIGNyZWF0ZSBjaGVja2xpc3RzIHRvIGltcHJvdmUgb3BlcmF0aW9uYWwgZWZmaWNpZW5jeVwiKTtcclxuICAgIHRoaXMucGFnZUluZm8uc2V0QnJlYWRjcnVtYnMoW1xyXG4gICAgICB7IHRpdGxlOiBcIlRhbmdvIFRyYXhcIiwgcGF0aDogXCIvbWFuYWdlL3RyYXgvZGFzaGJvYXJkXCIsIGlzQWN0aXZlOiBmYWxzZSwgaXNTZXBhcmF0b3I6IGZhbHNlIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwiVGFuZ28gVHJheFwiLCBwYXRoOiBcIi9tYW5hZ2UvdHJheC9kYXNoYm9hcmRcIiwgaXNBY3RpdmU6IGZhbHNlLCBpc1NlcGFyYXRvcjogdHJ1ZSB9XHJcbiAgICBdKTtcclxuICB9XHJcbiAgXHJcbiAgdXBkYXRlSW5wdXRWYWx1ZShzZWN0aW9uSW5kZXg6IG51bWJlcixzZWN0aW9uTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoc2VjdGlvbk5hbWUudHJpbSgpID09PSAnJykge1xyXG4gICAgICB0aGlzLmdldFNlY3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXgsJ25hbWUnKT8uc2V0VmFsdWUoYFNlY3Rpb24gJHtzZWN0aW9uSW5kZXgrMX1gKTtcclxuICAgIH1cclxuICB9XHJcbiAgc2Nyb2xsVG9RdWVzdGlvbihzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBjb25zdCBxdWVzdGlvbklkID0gYHEtJHtzZWN0aW9uSW5kZXh9LSR7cXVlc3Rpb25JbmRleH1gO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHF1ZXN0aW9uRWxlbWVudCA9IHRoaXMuZm9ybVJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoYCMke3F1ZXN0aW9uSWR9YCk7XHJcbiAgXHJcbiAgICAgIGlmIChxdWVzdGlvbkVsZW1lbnQpIHtcclxuICAgICAgICBxdWVzdGlvbkVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoeyBibG9jazogJ2NlbnRlcicsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIGZvcm1DaGVja2xpc3RRdWVzdGlvbnMoKSB7IFxyXG4gICAgbGV0IHNlY3Rpb25zYXJyYXk6IGFueSA9IFtdO1xyXG4gICAgbGV0IHNlY3Rpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgc2VjdGlvbnNhcnJheSA9IHRoaXMuZ2V0b2JqZWN0LnNlY3Rpb25zXHJcbiAgICBcclxuICAgIHNlY3Rpb25zYXJyYXkuZm9yRWFjaCgoaTogYW55LHNlY3Rpb25JbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGxldCBxdWVzdGlvbnM6IGFueVtdID0gW107XHJcbiAgICAgIGxldCBzZWN0aW9uTnVtYmVyID0gaT8uc2VjdGlvbk51bWJlciB8fCAoc2VjdGlvbkluZGV4ICsgMSlcclxuICAgICAgaS5xdWVzdGlvbnMuZm9yRWFjaCgoajogYW55LHF1ZXN0aW9uSW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGxldCBhbnN3ZXI6IGFueVtdID0gW107XHJcbiAgICAgICAgai5hbnN3ZXJzPy5mb3JFYWNoKChrOiBhbnksYW5zd2VySW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgYW5zd2VyLnB1c2goXHJcbiAgICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgIC4uLighWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgJiYgaj8uYW5zd2VyVHlwZSAhPSAndmlkZW8nPyB7ICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woaz8uYW5zd2VyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbChhbnN3ZXJJbmRleCksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpICYmIGo/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJz8geyAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChrPy5zb3BGbGFnID8gaz8uc29wRmxhZyA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpICYmIGo/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJz8geyAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChrPy52YWxpZGF0aW9uLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdsaW5lYXJzY2FsZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpICYmIGo/LmFuc3dlclR5cGUgIT0gJ3ZpZGVvJz8geyAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woaz8udmFsaWRhdGlvblR5cGUsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJDYXB0dXJlIEltYWdlXCIsIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCIsIFwiQ2FwdHVyZSBWaWRlb1wiXSkpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woaz8ucmVmZXJlbmNlSW1hZ2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSB8fCBqPy5hbnN3ZXJUeXBlID09ICd2aWRlbycpID8geyAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbCh7dmFsdWU6aj8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA/IHRydWUgOiBmYWxzZSxkaXNhYmxlZDogaj8uYW5zd2VyVHlwZSA9PT0gJ2ltYWdlJyAmJiBqPy5ydW5BSX0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woe3ZhbHVlOihqPy5ydW5BSSkgPyBqPy5ydW5BSSA6IGZhbHNlLGRpc2FibGVkOiBqPy5hbnN3ZXJUeXBlID09PSAnaW1hZ2UnICYmIGo/LnJ1bkFJfSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oWydtdWx0aXBsZWNob2ljZXNpbmdsZScsJ3llcy9ubyddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAnc2hvd0xpbmtlZCc6IHRoaXMuZmIuY29udHJvbCgoaz8uc2hvd0xpbmtlZCkgPyBrPy5zaG93TGlua2VkIDogZmFsc2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnbXVsdGlwbGVjaG9pY2VzaW5nbGUnLCd5ZXMvbm8nXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSA/IHsgJ2xpbmtlZFF1ZXN0aW9uJzogdGhpcy5mYi5jb250cm9sKChrPy5saW5rZWRRdWVzdGlvbikgPyBrPy5saW5rZWRRdWVzdGlvbiA6IDApIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgIC4uLighWydkZXNjcmlwdGl2ZScsJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnZGF0ZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woaz8ucmVmZXJlbmNlSW1hZ2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCghWydkZXNjcmlwdGl2ZScsJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCd2aWRlbycsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8geyAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbCh7dmFsdWU6az8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA/IHRydWUgOiBmYWxzZSxkaXNhYmxlZDogaj8uYW5zd2VyVHlwZSA9PT0gJ2ltYWdlJyAmJiBrPy5ydW5BSX0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkgPyB7ICdydW5BSSc6IHRoaXMuZmIuY29udHJvbCgoaz8ucnVuQUkpID8gaz8ucnVuQUkgOiBmYWxzZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oIVsnZGF0ZScsJ2xpbmVhcnNjYWxlJywndGltZSddLmluY2x1ZGVzKGo/LmFuc3dlclR5cGUpID8geyAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woay5kZXNjcmlwdGl2ZXR5cGUpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSA/IHsgJ3JhbmdlU3RhcnQnOnRoaXMuZmIuY29udHJvbChrLnJhbmdlU3RhcnQpLCdyYW5nZUVuZCc6dGhpcy5mYi5jb250cm9sKGsucmFuZ2VFbmQpIH0gOiB7fSksXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zb2xlLmxvZyhqPy5hbnN3ZXJUeXBlID09PSBcImltYWdlXCIgJiYgaj8ucnVuQUkpO1xyXG4gICAgICAgIHF1ZXN0aW9ucy5wdXNoKFxyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbChxdWVzdGlvbkluZGV4KzEpLFxyXG4gICAgICAgICAgICAncW5hbWUnOiB0aGlzLmZiLmNvbnRyb2woe3ZhbHVlOmo/LnFuYW1lLGRpc2FibGVkOiBqPy5hbnN3ZXJUeXBlID09PSAnaW1hZ2UnICYmIGo/LnJ1bkFJfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgXCJvbGRRbmFtZVwiOnRoaXMuZmIuY29udHJvbChqPy5xbmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgJ2Fuc3dlclR5cGUnOiB0aGlzLmZiLmNvbnRyb2woe3ZhbHVlOmo/LmFuc3dlclR5cGUsZGlzYWJsZWQ6IGo/LmFuc3dlclR5cGUgPT09ICdpbWFnZScgJiYgaj8ucnVuQUl9LCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsXCJtdWx0aXBsZUltYWdlXCIsJ2RhdGUnLCdsaW5lYXJzY2FsZScsJ3RpbWUnXSkpLFxyXG4gICAgICAgICAgICAuLi4oIVsnZGVzY3JpcHRpdmUnLCdkYXRlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8geyAnYW5zd2Vycyc6IChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsICd2aWRlbycsJ211bHRpcGxlSW1hZ2UnLCd0aW1lJywnbGluZWFyc2NhbGUnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSkgPyBhbnN3ZXJbMF0gOiB0aGlzLmZiLmFycmF5KGFuc3dlcixbdW5pcXVlU3RyaW5nVmFsaWRhdG9yKCldKSB9IDoge30sXHJcbiAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbCh7dmFsdWU6KFsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJyxcIm11bHRpcGxlSW1hZ2VcIl0uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8gKGo/LnJ1bkFJKSA/IHRydWUgOiBmYWxzZSA6IGZhbHNlLGRpc2FibGVkOiBqPy5hbnN3ZXJUeXBlID09PSAnaW1hZ2UnICYmIGo/LnJ1bkFJfSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3J1bkFJRGVmYXVsdCc6dGhpcy5mYi5jb250cm9sKGo/LnJ1bkFJIHx8IGZhbHNlKSxcclxuICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woKFsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJywndmlkZW8nLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoaj8uYW5zd2VyVHlwZSkpID8gKGo/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkpID8gdHJ1ZSA6IGZhbHNlIDogZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICdydW5BSURlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKChbJ2ltYWdlJywnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhqPy5hbnN3ZXJUeXBlKSkgPyAoaj8ucnVuQUlEZXNjcmlwdGlvbikgOiAnJyksXHJcbiAgICAgICAgICAgICdsaW5rVHlwZSc6IHRoaXMuZmIuY29udHJvbChqPy5saW5rVHlwZSksXHJcbiAgICAgICAgICAgICdxdWVzdGlvblJlZmVyZW5jZUltYWdlJzp0aGlzLmZiLmNvbnRyb2woai5xdWVzdGlvblJlZmVyZW5jZUltYWdlKSxcclxuICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKGouZGVzY3JpcHRpdmV0eXBlKSxcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgICBhbnN3ZXIgPSBbXTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICBzZWN0aW9ucy5wdXNoKFxyXG4gICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgXCJuYW1lXCI6IHRoaXMuZmIuY29udHJvbChpPy5uYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgIFwib2xkTmFtZVwiOnRoaXMuZmIuY29udHJvbChpPy5uYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgIFwic2VjdGlvbk51bWJlclwiOiB0aGlzLmZiLmNvbnRyb2woc2VjdGlvbk51bWJlciksXHJcbiAgICAgICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLmZiLmFycmF5KHF1ZXN0aW9ucylcclxuICAgICAgfSkpO1xyXG4gICAgICBxdWVzdGlvbnMgPSBbXTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuQ2hlY2tsaXN0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAnY2hlY2tsaXN0TmFtZSc6IHRoaXMuZmIuY29udHJvbCh0aGlzLmdldG9iamVjdC5jaGVja0xpc3ROYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAnY2hlY2tsaXN0RGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2wodGhpcy5nZXRvYmplY3QuY2hlY2tMaXN0RGVzY3JpcHRpb24pLFxyXG4gICAgICAnc2VjdGlvbnMnOiB0aGlzLmZiLmFycmF5KHNlY3Rpb25zKVxyXG4gICAgfSk7ICAgXHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5jaGVja2xpc3RMb2FkaW5nID0gZmFsc2U7XHJcblxyXG4gICAgY29uc29sZS5sb2codGhpcy5DaGVja2xpc3RGb3JtLCdmb3JtJyk7XHJcbiAgfVxyXG5cclxuICBpbml0Q2hlY2tsaXN0KCkge1xyXG4gICAgdGhpcy5DaGVja2xpc3RGb3JtID0gdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICdjaGVja2xpc3ROYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAnY2hlY2tsaXN0RGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAnc2VjdGlvbnMnOiB0aGlzLmZiLmFycmF5KFtcclxuICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgIFwibmFtZVwiOiB0aGlzLmZiLmNvbnRyb2woJ1NlY3Rpb24gMScsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLFZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICBcInNlY3Rpb25OdW1iZXJcIjogdGhpcy5mYi5jb250cm9sKDEsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICBcInF1ZXN0aW9uc1wiOiB0aGlzLmZiLmFycmF5KFtcclxuICAgICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICAgXCJxbm9cIjogdGhpcy5mYi5jb250cm9sKDEsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICAgJ3FuYW1lJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAgICdhbnN3ZXJUeXBlJzogdGhpcy5mYi5jb250cm9sKCdkZXNjcmlwdGl2ZScsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImRlc2NyaXB0aXZlSW1hZ2VcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgICAgICAgICAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAgICdsaW5rVHlwZSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgfSlcclxuICAgICAgXSlcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jaGVja2xpc3RMb2FkaW5nID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBhbGxvd2VkVmFsdWVzVmFsaWRhdG9yKGFsbG93ZWRWYWx1ZXM6IHN0cmluZ1tdKSB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWU7XHJcbiAgICAgIGlmICh2YWx1ZSAmJiBhbGxvd2VkVmFsdWVzLmluZGV4T2YodmFsdWUpID09PSAtMSkge1xyXG4gICAgICAgIHJldHVybiB7IGludmFsaWRWYWx1ZTogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGFkZE5ld1NlY3Rpb24oKSB7XHJcbiAgICBsZXQgc2VjdGlvbnMgPSB0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheTtcclxuICAgIGxldCBzZWN0aW9uTGVuZ3RoID0gc2VjdGlvbnMubGVuZ3RoO1xyXG4gICAgbGV0IGZpbmRTZWNOdW0gPSBNYXRoLm1heCguLi5zZWN0aW9ucy52YWx1ZS5tYXAoKGVsZTphbnkpID0+IGVsZS5zZWN0aW9uTnVtYmVyICkpO1xyXG4gICAgKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5wdXNoKFxyXG4gICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICBcIm5hbWVcIjogdGhpcy5mYi5jb250cm9sKGBTZWN0aW9uICR7c2VjdGlvbkxlbmd0aCArIDF9YCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsVmFsaWRhdG9ycy5taW5MZW5ndGgoMSksbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICBcInNlY3Rpb25OdW1iZXJcIjogdGhpcy5mYi5jb250cm9sKGZpbmRTZWNOdW0gKyAxLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgIFwicXVlc3Rpb25zXCI6IHRoaXMuZmIuYXJyYXkoW1xyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgIFwicW5vXCI6IHRoaXMuZmIuY29udHJvbCgxLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncW5hbWUnOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAgICdhbnN3ZXJUeXBlJzogdGhpcy5mYi5jb250cm9sKCdkZXNjcmlwdGl2ZScsXHJcbiAgICAgICAgICAgICAgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcImRlc2NyaXB0aXZlXCIsIFwieWVzL25vXCIsIFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIiwgXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsIFwiaW1hZ2VcIiwgXCJ2aWRlb1wiLCdtdWx0aXBsZUltYWdlJywnZGF0ZScsJ2xpbmVhcnNjYWxlJywndGltZSddKSksXHJcbiAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3J1bkFJRGVzY3JpcHRpb24nOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ2xpbmtUeXBlJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCd0ZXh0JyksXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfSlcclxuICAgICAgICBdKVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICAgIGlmKHNlY3Rpb25MZW5ndGggPT0gMCkge1xyXG4gICAgICB0aGlzLnNob3cgPSAtMTtcclxuICAgIH1cclxuICAgIHRoaXMuYWNjb3JkaWFuKHNlY3Rpb25MZW5ndGgpO1xyXG4gICAgdGhpcy5zd2FsVG9hc3QoJ05ldyBzZWN0aW9uIGFkZGVkIScpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlU2VjdGlvbihzZWN0aW9uSW5kZXg6IG51bWJlcikge1xyXG4gICAgKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5yZW1vdmVBdChzZWN0aW9uSW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZHJhZ0Ryb3Aoc2VjdGlvbkluZGV4OiBhbnksIGV2ZW50OiBDZGtEcmFnRHJvcDxhbnlbXT4pIHtcclxuICAgIGlmIChldmVudC5wcmV2aW91c0NvbnRhaW5lciA9PT0gZXZlbnQuY29udGFpbmVyKSB7XHJcbiAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgICAgLy8gdGhpcy51cGRhdGVsaW5rZWRRdWVzdGlvbk5vKHNlY3Rpb25JbmRleCxldmVudC5wcmV2aW91c0luZGV4LGV2ZW50LmN1cnJlbnRJbmRleClcclxuICAgICAgdGhpcy51cGRhdGVRdWVzdGlvblFub3Moc2VjdGlvbkluZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyYW5zZmVyQXJyYXlJdGVtKFxyXG4gICAgICAgIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXHJcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXHJcbiAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcclxuICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZWxpbmtlZFF1ZXN0aW9uTm8oc2VjSWR4Om51bWJlcixwcmV2SWR4Om51bWJlcixxbklkeDpudW1iZXIpIHtcclxuICAgIGxldCBxdWVzdGlvbnMgPSAodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICBmb3IobGV0IGk9MDtpPHF1ZXN0aW9ucy5sZW5ndGgtMTtpKyspIHtcclxuICAgICAgbGV0IGFuc3dlcnMgPSAoKHF1ZXN0aW9ucy5hdChpKSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICAgIGZvcihsZXQgaj0wO2o8YW5zd2Vycz8ubGVuZ3RoIC0xO2orKykge1xyXG4gICAgICAgIGxldCBsaW5rZWQgPSAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApLmdldCgnc2hvd0xpbmtlZCcpPy52YWx1ZTtcclxuICAgICAgICBpZihsaW5rZWQpIHtcclxuICAgICAgICAgIGxldCBsaW5rZWRObyA9IChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgICAgICAgIGlmKGxpbmtlZE5vID09IHByZXZJZHggKyAxKSB7XHJcbiAgICAgICAgICAgIChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZShxbklkeCArIDEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZWxzZSBpZihsaW5rZWRObyA8PSBxbklkeCArIDEpIHtcclxuICAgICAgICAgICAgKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKS5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKGxpbmtlZE5vIC0gMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBhbnN3ZXJUeXBlU2VsZWN0aW9uKHNlY3Rpb25JbmRleDogYW55LCBxdWVzdGlvbkluZGV4OiBhbnksIGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCBzZWxlY3R2YWx1ZTogc3RyaW5nID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJyk/LnNldFZhbHVlKCcnKTtcclxuICAgIGlmKCFbJ2Rlc2NyaXB0aXZlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKHNlbGVjdHZhbHVlKSkge1xyXG4gICAgICAgKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdkZXNjcmlwdGl2ZXR5cGUnKT8uc2V0VmFsdWUoJycpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgnZGVzY3JpcHRpdmV0eXBlJyk/LnNldFZhbHVlKCd0ZXh0Jyk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJlbW92ZVF1ZXN0aW9uTGlua2VkKHNlY3Rpb25JbmRleCxxdWVzdGlvbkluZGV4KTtcclxuICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ3llcy9ubycgfHwgZXZlbnQudGFyZ2V0LnZhbHVlID09ICdtdWx0aXBsZWNob2ljZXNpbmdsZScpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc0Zvcm1BcnJheShzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsc2VsZWN0dmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ2Rlc2NyaXB0aXZlJykge1xyXG4gICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ2Rlc2NyaXB0aXZlSW1hZ2UnKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNGb3JtR3JvdXAoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCBzZWxlY3R2YWx1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnbXVsdGlwbGVjaG9pY2VtdWx0aXBsZScpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc0Zvcm1BcnJheShzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsc2VsZWN0dmFsdWUpO1xyXG4gICAgfSBlbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ2ltYWdlJykge1xyXG4gICAgICB0aGlzLnNldEFuc3dlckFzRm9ybUdyb3VwKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ2ltYWdlJyk7XHJcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAndmlkZW8nKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNGb3JtR3JvdXAoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAndmlkZW8nKTtcclxuICAgIH1lbHNlIGlmIChldmVudC50YXJnZXQudmFsdWUgPT0gJ211bHRpcGxlSW1hZ2UnKSB7XHJcbiAgICAgIHRoaXMuc2V0QW5zd2VyQXNGb3JtR3JvdXAoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAnbXVsdGlwbGVJbWFnZScpO1xyXG4gICAgfWVsc2UgaWYgKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnZGF0ZScpIHt9XHJcbiAgICBlbHNlIGlmKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAndGltZScpIHtcclxuICAgICAgdGhpcy5zZXRBbnN3ZXJBc1RpbWUoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAndGltZScpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZihldmVudC50YXJnZXQudmFsdWUgPT0gJ2xpbmVhcnNjYWxlJykge1xyXG4gICAgICB0aGlzLnNldEFuc3dlckFzVGltZShzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdsaW5lYXJzY2FsZScpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QW5zd2VyQXNUaW1lKHNlY0lkeDpudW1iZXIscW5JZHg6bnVtYmVyLHR5cGU6c3RyaW5nKSB7XHJcbiAgICBsZXQgcXVlc3Rpb24gPSAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWNJZHgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCk7XHJcblxyXG4gICAgICBpZih0eXBlID09ICd0aW1lJykge1xyXG4gICAgICAgIHF1ZXN0aW9uLnNldENvbnRyb2woJ2Fuc3dlcnMnLFxyXG4gICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAgJ2Fuc3dlcic6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICAnYW5zd2Vyb3B0aW9uTnVtYmVyJzogdGhpcy5mYi5jb250cm9sKDEpLFxyXG4gICAgICAgICAgICAgJ3NvcEZsYWcnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ3ZhbGlkYXRpb24nOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICdsaW5rZWRRdWVzdGlvbic6dGhpcy5mYi5jb250cm9sKDApLFxyXG4gICAgICAgICAgICAgJ3Nob3dMaW5rZWQnOnRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJylcclxuICAgICAgICAgICB9KSxcclxuICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBxdWVzdGlvbi5zZXRDb250cm9sKCdhbnN3ZXJzJyxcclxuICAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woJycpLFxyXG4gICAgICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbCgxKSxcclxuICAgICAgICAgICAgICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICd2YWxpZGF0aW9uJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICAnbGlua2VkUXVlc3Rpb24nOnRoaXMuZmIuY29udHJvbCgwKSxcclxuICAgICAgICAgICAgICdzaG93TGlua2VkJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ251bWJlcicpLFxyXG4gICAgICAgICAgICAgJ3JhbmdlU3RhcnQnOnRoaXMuZmIuY29udHJvbCgwKSxcclxuICAgICAgICAgICAgICdyYW5nZUVuZCc6dGhpcy5mYi5jb250cm9sKDEwMCwpXHJcbiAgICAgICAgICAgfSksXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIFxyXG5cclxuICAgIGNvbnNvbGUubG9nKHF1ZXN0aW9uKTtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlUXVlc3Rpb25MaW5rZWQoc2VjSWR4OmFueSxxbklkeDphbnkpIHtcclxuICAgIGxldCBhbnN3ZXJzID0gKCgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGlmKGFuc3dlcnMpIHtcclxuICAgICAgZm9yKGxldCBpPTA7aTxhbnN3ZXJzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgIGxldCBxbiA9IChhbnN3ZXJzLmF0KGkpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgICAgICBpZihxbikge1xyXG4gICAgICAgICAgKCh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbiAtIDEpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rVHlwZScpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB1cGRhdGVWYWxpZGF0aW9uVHlwZShldmVudDphbnksc2VjdGlvbjpudW1iZXIscXVlc3Rpb246bnVtYmVyLGFuc3dlcjpudW1iZXIpIHtcclxuICAgIGlmKGV2ZW50LnRhcmdldC52YWx1ZSA9PSAnRGVzY3JpcHRpdmUgQW5zd2VyJykge1xyXG4gICAgICAoKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHNlY3Rpb24pIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQocXVlc3Rpb24pIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnN3ZXIpIGFzIEZvcm1Hcm91cCkuZ2V0KCdkZXNjcmlwdGl2ZXR5cGUnKT8uc2V0VmFsdWUoJ3RleHQnKTtcclxuICAgIH1cclxuICAgICgoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjdGlvbikgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChxdWVzdGlvbikgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc3dlcikgYXMgRm9ybUdyb3VwKS5nZXQoJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgc2V0QW5zd2VyQXNGb3JtQXJyYXkoc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlcixzZWxlY3R2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBsZXQgcXVlc3Rpb24gPSAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgIC5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgIFxyXG4gICAgaWYgKHNlbGVjdHZhbHVlID09ICd5ZXMvbm8nKSB7XHJcbiAgICAgIHF1ZXN0aW9uLnNldENvbnRyb2woJ2Fuc3dlcnMnLFxyXG4gICAgICAgIHRoaXMuZmIuYXJyYXkoW1xyXG4gICAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAgICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woJ1llcycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAgICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woMSksXHJcbiAgICAgICAgICAgICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAvLyAnbGlua1F1ZXN0aW9uJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UsW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgLy8gJ2Fuc3dlcklucHV0U3R5bGUnOiB0aGlzLmZiLmNvbnRyb2woJ3JhZGlvJyxbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKCdDYXB0dXJlIEltYWdlJywgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcIkNhcHR1cmUgSW1hZ2VcIiwgXCJEZXNjcmlwdGl2ZSBBbnN3ZXJcIixcIkNhcHR1cmUgVmlkZW9cIl0pKSxcclxuICAgICAgICAgICAgJ2xpbmtlZFF1ZXN0aW9uJzp0aGlzLmZiLmNvbnRyb2woMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3Nob3dMaW5rZWQnOnRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJycpXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAnYW5zd2VyJzogdGhpcy5mYi5jb250cm9sKCdObycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLG5vV2hpdGVzcGFjZVZhbGlkYXRvcigpXSksXHJcbiAgICAgICAgICAgICdhbnN3ZXJvcHRpb25OdW1iZXInOiB0aGlzLmZiLmNvbnRyb2woMiksXHJcbiAgICAgICAgICAgICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3ZhbGlkYXRpb25UeXBlJzogdGhpcy5mYi5jb250cm9sKCdDYXB0dXJlIEltYWdlJywgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcIkNhcHR1cmUgSW1hZ2VcIiwgXCJEZXNjcmlwdGl2ZSBBbnN3ZXJcIixcIkNhcHR1cmUgVmlkZW9cIl0pKSxcclxuICAgICAgICAgICAgJ2xpbmtlZFF1ZXN0aW9uJzp0aGlzLmZiLmNvbnRyb2woMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3Nob3dMaW5rZWQnOnRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJycpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIF0sdW5pcXVlU3RyaW5nVmFsaWRhdG9yKCkpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWVzdGlvbi5zZXRDb250cm9sKCdhbnN3ZXJzJyxcclxuICAgICAgICB0aGlzLmZiLmFycmF5KFtcclxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAnYW5zd2VyJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAnYW5zd2Vyb3B0aW9uTnVtYmVyJzogdGhpcy5mYi5jb250cm9sKDEpLFxyXG4gICAgICAgICAgICAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3ZhbGlkYXRpb24nOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnQ2FwdHVyZSBJbWFnZScsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJDYXB0dXJlIEltYWdlXCIsIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCIsXCJDYXB0dXJlIFZpZGVvXCJdKSksXHJcbiAgICAgICAgICAgIC4uLihzZWxlY3R2YWx1ZSA9PSAnbXVsdGlwbGVjaG9pY2VzaW5nbGUnID8ge1wibGlua2VkUXVlc3Rpb25cIjp0aGlzLmZiLmNvbnRyb2woMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSwnc2hvd0xpbmtlZCc6dGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pfSA6IHt9KSxcclxuICAgICAgICAgICAgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJycpXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICAnYW5zd2VyJzogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgICAnYW5zd2Vyb3B0aW9uTnVtYmVyJzogdGhpcy5mYi5jb250cm9sKDEpLFxyXG4gICAgICAgICAgICAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAgICAgJ3ZhbGlkYXRpb24nOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAgICd2YWxpZGF0aW9uVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnQ2FwdHVyZSBJbWFnZScsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJDYXB0dXJlIEltYWdlXCIsIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCIsXCJDYXB0dXJlIFZpZGVvXCJdKSksXHJcbiAgICAgICAgICAgIC4uLihzZWxlY3R2YWx1ZSA9PSAnbXVsdGlwbGVjaG9pY2VzaW5nbGUnID8ge1wibGlua2VkUXVlc3Rpb25cIjp0aGlzLmZiLmNvbnRyb2woMCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSwnc2hvd0xpbmtlZCc6dGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pfSA6IHt9KSxcclxuICAgICAgICAgICAgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJycpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIF0sdW5pcXVlU3RyaW5nVmFsaWRhdG9yKCkpLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgdGhpcy5DaGVja2xpc3RGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIHNldEFuc3dlckFzRm9ybUdyb3VwKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsIGFuc3dlclR5cGU6IHN0cmluZykge1xyXG4gICAgaWYgKFsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhhbnN3ZXJUeXBlKSkge1xyXG4gICAgICAoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0Q29udHJvbCgnYW5zd2VycycsIFxyXG4gICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICAgICAuLi4oYW5zd2VyVHlwZSA9PSAnbXVsdGlwbGVJbWFnZScgPyB7J2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCd0ZXh0Jyl9Ont9KVxyXG4gICAgICAgIH0pKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBxdWVzdGlvbiA9ICgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgICAuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgICAgLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAgIC5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcblxyXG4gICAgICBxdWVzdGlvbi5zZXRDb250cm9sKCdhbnN3ZXJzJywgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UpLFxyXG4gICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9XHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgbG9hZEltYWdlRnJvbURldmljZShzZWNJZHg6IG51bWJlcixxSWR4OiBudW1iZXIsZXZlbnQ6IGFueSxhbnNJZHg6bnVtYmVyPS0xLGN0cmxOYW1lOnN0cmluZyA9ICcnKSB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmZpbGVzICE9IHVuZGVmaW5lZCAmJiBldmVudC50YXJnZXQuZmlsZXMubGVuZ3RoKSB7XHJcbiAgICB9XHJcbiAgICBsZXQgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGxldCBmaWxlOiBGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSwgZmlsZS5uYW1lKTtcclxuICAgIGZvcm1EYXRhLmFwcGVuZCgnY2xpZW50SWQnLHRoaXMuY2xpZW50SWQpXHJcbiAgICB0aGlzLnNvcFNlcnZpY2UuaW1hZ2V1cGxvYWQoZm9ybURhdGEpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZihjdHJsTmFtZSlcclxuICAgICAgICB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzZWNJZHgscUlkeCwncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpPy5zZXRWYWx1ZShyZXMuZGF0YS5pbWdVcmwpO1xyXG4gICAgICBlbHNlXHJcbiAgICAgICAgdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc2VjSWR4LHFJZHgsJ3JlZmVyZW5jZUltYWdlJyxhbnNJZHgpPy5zZXRWYWx1ZShyZXMuZGF0YS5pbWdVcmwpO1xyXG4gICAgICBcclxuICAgICAgdGhpcy5DaGVja2xpc3RGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7ICAgICAgXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgY2xlYXJSZWZlcmVuY2VJbWFnZShzZWNJZHg6IG51bWJlcixxSWR4OiBudW1iZXIsYW5zSWR4Om51bWJlcj0tMSkge1xyXG4gICAgdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc2VjSWR4LHFJZHgsJ3JlZmVyZW5jZUltYWdlJyxhbnNJZHgpPy5zZXRWYWx1ZSgnJyk7XHJcbiAgICB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzZWNJZHgscUlkeCwncnVuQUknLGFuc0lkeCk/LnNldFZhbHVlKGZhbHNlKTtcclxuICAgIHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNlY0lkeCxxSWR4LCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJyk/LnNldFZhbHVlKCcnKTtcclxuICB9XHJcblxyXG4gIGdldHZhbGlkYXRpb24oc2VjdGlvbkluZGV4OiBhbnksIHF1ZXN0aW9uSW5kZXg6IGFueSwgYWRkbW9yZXFuSW5kZXg6IGFueSwgZXZlbnQ6IGFueSkge1xyXG4gICAgKCgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFkZG1vcmVxbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgndmFsaWRhdGlvbicpPy5zZXRWYWx1ZShldmVudC50YXJnZXQuY2hlY2tlZCk7XHJcbiAgfVxyXG5cclxuICBhZGROZXdRdWVzdGlvbihzZWN0aW9uSW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuc2VjdGlvbkluZGV4ID4gLTEpIHtcclxuICAgICAgaWYgKCEoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykpKSB7XHJcbiAgICAgICAgKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLnNldENvbnRyb2woJ3F1ZXN0aW9ucycsIHRoaXMuZmIuYXJyYXkoW10pKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgcXVlc3Rpb25zID0gKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICAgIGxldCBxdWVzdGlvbnNMZW5ndGggPSBxdWVzdGlvbnMubGVuZ3RoO1xyXG4gICAgICBxdWVzdGlvbnMucHVzaCh0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICBcInFub1wiOiB0aGlzLmZiLmNvbnRyb2wocXVlc3Rpb25zTGVuZ3RoICsgMSwpLFxyXG4gICAgICAgICdxbmFtZSc6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAnYW5zd2VyVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnZGVzY3JpcHRpdmUnLFxyXG4gICAgICAgICAgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcImRlc2NyaXB0aXZlXCIsIFwieWVzL25vXCIsIFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIiwgXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsIFwiaW1hZ2VcIiwgXCJ2aWRlb1wiLCdtdWx0aXBsZUltYWdlJywnZGF0ZScsJ2xpbmVhcnNjYWxlJywndGltZSddKSksXHJcbiAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICdydW5BSURlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAnbGlua1R5cGUnOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnOnRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCd0ZXh0JyksXHJcbiAgICAgIH0pKTsgICAgICBcclxuICAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMuc3dhbFRvYXN0KCdOZXcgcXVlc3Rpb24gYWRkZWQhJyk7XHJcbiAgICAgIHNldFRpbWVvdXQoKCk9PiB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxUb1F1ZXN0aW9uKHNlY3Rpb25JbmRleCxxdWVzdGlvbnNMZW5ndGgpO1xyXG4gICAgICB9LDEwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxldGVRdWVzdGlvbihzZWN0aW9uSW5kZXg6IGFueSwgcXVlc3Rpb25JbmRleDogYW55KSB7XHJcbiAgICB0aGlzLmRlbGV0ZWRMaXN0ID0gW107XHJcbiAgICBsZXQgcXVlc3Rpb24gPSB0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAncW5hbWUnKT8udmFsdWUgfHwgJyc7XHJcbiAgICBsZXQgcW5vID0gdGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNlY3Rpb25JbmRleCwgcXVlc3Rpb25JbmRleCwgJ3FubycpPy52YWx1ZTtcclxuICAgIHF1ZXN0aW9uID0gcXVlc3Rpb24gPyBxdWVzdGlvbiA6IGBRdWVzdGlvbiAke3RoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXgsIHF1ZXN0aW9uSW5kZXgsICdxbm8nKT8udmFsdWUgfHwgJyd9YDtcclxuICAgIHF1ZXN0aW9uID0gcXVlc3Rpb24ubGVuZ3RoID4gMjAgPyBxdWVzdGlvbi5zbGljZSgwLDIwKSArICcuLi4nIDogcXVlc3Rpb247XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCx7Y2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCd9KTtcclxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0ge1xyXG4gICAgICBpbWFnZXNyYzogYDxzcGFuPjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNGRUU0RTJcIi8+PHBhdGggZD1cIk0yOCAyNFYyOE0yOCAzMkgyOC4wMU0zOCAyOEMzOCAzMy41MjI4IDMzLjUyMjggMzggMjggMzhDMjIuNDc3MiAzOCAxOCAzMy41MjI4IDE4IDI4QzE4IDIyLjQ3NzIgMjIuNDc3MiAxOCAyOCAxOEMzMy41MjI4IDE4IDM4IDIyLjQ3NzIgMzggMjhaXCIgc3Ryb2tlPVwiI0Q5MkQyMFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkVGM0YyXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz48L3NwYW4+YCxcclxuICAgICAgdGl0bGU6IGBEZWxldGUgJyR7cXVlc3Rpb259Jz9gLFxyXG4gICAgICBjb250ZW50OiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSA8Yj4nJHtxdWVzdGlvbn0nPC9iPj8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZS5gLFxyXG4gICAgICBidXR0b250eXBlOiAnZGVsZXRlJ1xyXG4gICAgfVxyXG4gICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXMpID0+IHtcclxuICAgICAgaWYgKHJlcyA9PSAnZGVsZXRlJykge1xyXG4gICAgICAgIGxldCBsaW5rZWRRdWVzdGlvbjphbnkgPSAoKCh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWN0aW9uSW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICAgICAgbGV0IHR5cGU6YW55ID0gKCh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWN0aW9uSW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZTtcclxuICAgICAgICBpZighWydkZXNjcmlwdGl2ZScsJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywndmlkZW8nLCdsaW5lYXJzY2FsZScsJ3RpbWUnLCdkYXRlJ10uaW5jbHVkZXModHlwZSkpIHtcclxuICAgICAgICAgIGZvcihsZXQgaT0wO2k8bGlua2VkUXVlc3Rpb24/Lmxlbmd0aDtpKyspIHtcclxuICAgICAgICAgICAgbGV0IGxpbmtlZFFuID0gKChsaW5rZWRRdWVzdGlvbi5hdChpKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8udmFsdWUpO1xyXG4gICAgICAgICAgICBpZihsaW5rZWRRbikge1xyXG4gICAgICAgICAgICAgIGxldCBubyA9IGxpbmtlZFFuIC0xO1xyXG4gICAgICAgICAgICAgICgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQobm8pIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rVHlwZScpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgaWYobGlua2VkUW4gJiYgcGFyc2VJbnQobGlua2VkUW4pID4gcXVlc3Rpb25JbmRleCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdWJ0cmFjdFF1ZXN0aW9ubm8oc2VjdGlvbkluZGV4LGxpbmtlZFFuLTEpXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICh0aGlzLmdldFNlY3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uSW5kZXgsICdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLnJlbW92ZUF0KHF1ZXN0aW9uSW5kZXgpO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlZE5lc3RlZFF1ZXN0aW9uKHNlY3Rpb25JbmRleCxxbm8pO1xyXG4gICAgICAgIHRoaXMudXBkYXRlUXVlc3Rpb25Rbm9zKHNlY3Rpb25JbmRleCk7XHJcbiAgICAgICAgdGhpcy5zd2FsVG9hc3QoYCR7cXVlc3Rpb259IGhhcyBiZWVuIGRlbGV0ZWQhYCk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIHN1YnRyYWN0UXVlc3Rpb25ubyhzZWN0aW9uSW5kZXg6bnVtYmVyLHF1ZXN0aW9uSW5kZXg6YW55KSB7XHJcbiAgICBsZXQgbGlua2VkUXVlc3Rpb25BbnN3ZXJzID0gKCgodGhpcy5nZXRTZWN0aW9uRm9ybUFycmF5KCkuYXQoc2VjdGlvbkluZGV4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgbGV0IG5vID0gKCh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWN0aW9uSW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgncW5vJyk/LnZhbHVlO1xyXG4gICAgdGhpcy5kZWxldGVkTGlzdC5wdXNoKG5vKTtcclxuICAgIGZvcihsZXQgaj0wO2o8bGlua2VkUXVlc3Rpb25BbnN3ZXJzPy5sZW5ndGg7aisrKSB7XHJcbiAgICAgIGxldCBsaW5rZWRRbiA9ICgobGlua2VkUXVlc3Rpb25BbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZSk7XHJcbiAgICAgIGlmKGxpbmtlZFFuICYmIHBhcnNlSW50KGxpbmtlZFFuKSA+IHF1ZXN0aW9uSW5kZXgpIHtcclxuICAgICAgICAoKGxpbmtlZFF1ZXN0aW9uQW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKSk/LnNldFZhbHVlKGxpbmtlZFFuIC0gMSk7XHJcbiAgICAgICAgdGhpcy5zdWJ0cmFjdFF1ZXN0aW9ubm8oc2VjdGlvbkluZGV4LGxpbmtlZFFuLTEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByYWlzZWZsYWcoc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgYW5zSWR4OiBudW1iZXIsdmFsdWU6IGJvb2xlYW4sbGlua0luZGV4Om51bWJlciA9IC0xLGxpbmtBbnNJbmRleDpudW1iZXIgPSAtMSkge1xyXG4gICAgbGV0IHF1ZXN0aW9uID0gKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KT8uYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgaWYodmFsdWUgPT0gdHJ1ZSkge1xyXG4gICAgICBsZXQgYW5zd2VycyA9IChxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLnZhbHVlO1xyXG4gICAgICBpZihsaW5rSW5kZXggPT0gLTEpIHtcclxuICAgICAgICBpZihhbnN3ZXJzLmZpbHRlcigoeDphbnkpPT4geC5zb3BGbGFnID09IHRydWUpLmxlbmd0aCA9PSAoYW5zd2Vycy5sZW5ndGggLTEpKSB7XHJcbiAgICAgICAgICAoKHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmFkZENvbnRyb2woJ3Nob3dTT1BGbGFnRXJyb3InLHRoaXMuZmIuY29udHJvbCh0cnVlKSk7XHJcbiAgICAgICAgICB0aW1lcig1MDAwKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAoKHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLnJlbW92ZUNvbnRyb2woJ3Nob3dTT1BGbGFnRXJyb3InKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgYW5zd2VycyA9ICgocXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgICAgbGV0IGxpbmtRdWVzdGlvbiA9ICgoYW5zd2Vycy5nZXQoJ2xpbmtRdWVzdGlvbkFuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGxpbmtJbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICBsZXQgbGlua0Fuc3dlcnMgPSAobGlua1F1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkudmFsdWVcclxuICAgICAgICBpZihsaW5rQW5zd2Vycy5maWx0ZXIoKHg6YW55KT0+IHguc29wRmxhZyA9PSB0cnVlKS5sZW5ndGggPT0gKGxpbmtBbnN3ZXJzLmxlbmd0aCAtMSkpIHtcclxuICAgICAgICAgICgobGlua1F1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQobGlua0Fuc0luZGV4KSBhcyBGb3JtR3JvdXApLmFkZENvbnRyb2woJ3Nob3dTT1BGbGFnRXJyb3InLHRoaXMuZmIuY29udHJvbCh0cnVlKSk7XHJcbiAgICAgICAgICB0aW1lcig1MDAwKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICgobGlua1F1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQobGlua0Fuc0luZGV4KSBhcyBGb3JtR3JvdXApLnJlbW92ZUNvbnRyb2woJ3Nob3dTT1BGbGFnRXJyb3InKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICBpZihsaW5rSW5kZXggPT0gLTEpXHJcbiAgICAgICAgKCgoKHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk/LmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKT8uZ2V0KCdzb3BGbGFnJykgYXMgRm9ybUNvbnRyb2wpKT8uc2V0VmFsdWUodmFsdWUpOyBcclxuICAgIGVsc2UgICB7XHJcbiAgICAgICBsZXQgYW5zd2VycyA9ICgocXVlc3Rpb24uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgICAgbGV0IGxpbmtRdWVzdGlvbiA9ICgoYW5zd2Vycy5nZXQoJ2xpbmtRdWVzdGlvbkFuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGxpbmtJbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgKCgoKGxpbmtRdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpPy5hdChsaW5rQW5zSW5kZXgpIGFzIEZvcm1Hcm91cCk/LmdldCgnc29wRmxhZycpIGFzIEZvcm1Db250cm9sKSk/LnNldFZhbHVlKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZE5lc3RlZFF1ZXN0aW9uKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsIGFuc0lkeDogbnVtYmVyLHZhbHVlOiBib29sZWFuLGxpbmtlZFF1ZXN0aW9uSW5kZXg6bnVtYmVyPS0xLGxpbmtlZEFuc3dlcjpudW1iZXIgPSAtMSkge1xyXG4gICAgIGxldCBhbnN3ZXIgPSAoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApXHJcbiAgICAgIC5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSlcclxuICAgICAgLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwXHJcblxyXG4gICAgICBcclxuICAgICAgXHJcbiAgICBpZighYW5zd2VyPy5nZXQoJ2xpbmtRdWVzdGlvbkFuc3dlcnMnKT8udmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIGFuc3dlci5zZXRDb250cm9sKCdsaW5rUXVlc3Rpb25BbnN3ZXJzJyxcclxuICAgICAgICB0aGlzLmZiLmFycmF5KFtcclxuICAgICAgICAgIHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBcInFub1wiOiB0aGlzLmZiLmNvbnRyb2woMSksXHJcbiAgICAgICAgICAgICdxbmFtZSc6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAgICAgJ2Fuc3dlclR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ2Rlc2NyaXB0aXZlJyxcclxuICAgICAgICAgICAgICB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiZGVzY3JpcHRpdmVcIiwgXCJ5ZXMvbm9cIiwgXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLCBcIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIixcImRlc2NyaXB0aXZlSW1hZ2VcIiwgXCJpbWFnZVwiLCBcInZpZGVvXCIsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10pKSxcclxuICAgICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncnVuQUlEZXNjcmlwdGlvbic6IHRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICAgJ2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCd0ZXh0JyksXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIF0pXHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgbmVzdGVkUXVlc3Rpb24gPSBhbnN3ZXIuZ2V0KCdsaW5rUXVlc3Rpb25BbnN3ZXJzJykgYXMgRm9ybUFycmF5XHJcbiAgICAgIG5lc3RlZFF1ZXN0aW9uLnB1c2godGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgXCJxbm9cIjogdGhpcy5mYi5jb250cm9sKDEpLFxyXG4gICAgICAgICdxbmFtZSc6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgICAnYW5zd2VyVHlwZSc6IHRoaXMuZmIuY29udHJvbCgnZGVzY3JpcHRpdmUnLFxyXG4gICAgICAgICAgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcImRlc2NyaXB0aXZlXCIsIFwieWVzL25vXCIsIFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIiwgXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsIFwiaW1hZ2VcIiwgXCJ2aWRlb1wiLCdtdWx0aXBsZUltYWdlJywnZGF0ZScsJ2xpbmVhcnNjYWxlJywndGltZSddKSksXHJcbiAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICdydW5BSURlc2NyaXB0aW9uJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcclxuICAgICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAnZGVzY3JpcHRpdmV0eXBlJzp0aGlzLmZiLmNvbnRyb2woJ3RleHQnKSxcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5DaGVja2xpc3RGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcbiBcclxuICBhY2NvcmRpYW4oaW5kZXg6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuc2hvdyA9PSBpbmRleCkge1xyXG4gICAgICB0aGlzLnNob3cgPSAtMTtcclxuICAgICAgdGhpcy5zZWN0aW9uSW5kZXggPSAtMTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvdyA9IGluZGV4O1xyXG4gICAgICB0aGlzLnNlY3Rpb25JbmRleCA9IGluZGV4O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZGVsZXRlU2VjdGlvbihzZWN0aW9uSW5kZXg6IGFueSkge1xyXG4gICAgbGV0IHNlY3Rpb24gPSAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICBsZXQgc2VjdGlvbkxlbmd0aDphbnkgPSBcIiBcIiArIChzZWN0aW9uLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5sZW5ndGg7XHJcbiAgICBsZXQgc2VjdGlvbk5hbWU6c3RyaW5nID0gc2VjdGlvbi5nZXQoJ25hbWUnKT8udmFsdWU7XHJcbiAgICBzZWN0aW9uTmFtZSA9IHNlY3Rpb25OYW1lLmxlbmd0aCA+IDIwID8gKHNlY3Rpb25OYW1lLnNsaWNlKDAsIDIwKSArIFwiLi4uXCIpIDogc2VjdGlvbk5hbWU7XHJcbiAgICBsZXQgcXVlc3Rpb25fdGV4dCA9ICcnXHJcbiAgICBpZiAoc2VjdGlvbkxlbmd0aCA9PSAxKVxyXG4gICAgICBxdWVzdGlvbl90ZXh0ID0gJ1F1ZXN0aW9uJ1xyXG4gICAgZWxzZVxyXG4gICAgIHF1ZXN0aW9uX3RleHQgPSAnUXVlc3Rpb25zJ1xyXG4gICAgY29uc3QgcG9wdXBjb250ZW50ID0ge1xyXG4gICAgICBkaXNwbGF5cHJvcDogZmFsc2UsXHJcbiAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0ZFRTRFMlwiLz48cGF0aCBkPVwiTTI4IDI0VjI4TTI4IDMySDI4LjAxTTM4IDI4QzM4IDMzLjUyMjggMzMuNTIyOCAzOCAyOCAzOEMyMi40NzcyIDM4IDE4IDMzLjUyMjggMTggMjhDMTggMjIuNDc3MiAyMi40NzcyIDE4IDI4IDE4QzMzLjUyMjggMTggMzggMjIuNDc3MiAzOCAyOFpcIiBzdHJva2U9XCIjRDkyRDIwXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNGRUYzRjJcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgIHRpdGxlOiBgRGVsZXRlICcke3NlY3Rpb25OYW1lfSBTZWN0aW9uJz9gLFxyXG4gICAgICBjb250ZW50OiBgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZScgPGI+JyR7c2VjdGlvbk5hbWV9JzwvYj4/IHdpdGggPGI+JHtzZWN0aW9uTGVuZ3RofSAke3F1ZXN0aW9uX3RleHR9PC9iPiBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLmAsXHJcbiAgICAgIGJ1dHRvbnR5cGU6ICdkZWxldGUnXHJcbiAgICB9XHJcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFRyYXhwb3B1cENvbXBvbmVudCx7Y2VudGVyZWQ6IHRydWUsIHNpemU6ICdtZCd9KTtcclxuICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0gcG9wdXBjb250ZW50XHJcbiAgICBkaWFsb2dSZWYucmVzdWx0LnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICBpZiAocmVzID09ICdkZWxldGUnKSB7XHJcbiAgICAgICAgKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5yZW1vdmVBdChzZWN0aW9uSW5kZXgpXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VkZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgQWRkTW9yZUFucyhzZWN0aW9uaW5kZXg6IGFueSwgcXVlc3Rpb25JbmRleDogYW55LHR5cGU6c3RyaW5nKSB7XHJcbiAgICBsZXQgYW5zb3B0aW9uID1cclxuICAgICAgKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KVxyXG4gICAgICAgIC5hdChzZWN0aW9uaW5kZXgpIGFzIEZvcm1Hcm91cClcclxuICAgICAgICAuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgICAgLmF0KHF1ZXN0aW9uSW5kZXgpXHJcbiAgICAgICAgLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICBsZXQgYW5zb3B0aW9uTGVuZ3RoID0gYW5zb3B0aW9uLmxlbmd0aDtcclxuICAgIGlmIChhbnNvcHRpb25MZW5ndGggPD0gMjkpIHtcclxuICAgICAgYW5zb3B0aW9uLnB1c2goXHJcbiAgICAgICAgdGhpcy5mYi5ncm91cCh7XHJcbiAgICAgICAgICAnYW5zd2VyJzogdGhpcy5mYi5jb250cm9sKGBgLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCxub1doaXRlc3BhY2VWYWxpZGF0b3IoKV0pLFxyXG4gICAgICAgICAgJ2Fuc3dlcm9wdGlvbk51bWJlcic6IHRoaXMuZmIuY29udHJvbChhbnNvcHRpb25MZW5ndGggKyAxKSxcclxuICAgICAgICAgICdzb3BGbGFnJzogdGhpcy5mYi5jb250cm9sKGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAgICAgJ3ZhbGlkYXRpb24nOiB0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXHJcbiAgICAgICAgICAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woJ0NhcHR1cmUgSW1hZ2UnLCB0aGlzLmFsbG93ZWRWYWx1ZXNWYWxpZGF0b3IoW1wiQ2FwdHVyZSBJbWFnZVwiLCBcIkRlc2NyaXB0aXZlIEFuc3dlclwiLFwiQ2FwdHVyZSBWaWRlb1wiXSkpLFxyXG4gICAgICAgICAgJ3JlZmVyZW5jZUltYWdlJzogdGhpcy5mYi5jb250cm9sKCcnKSxcclxuICAgICAgICAgICdhbGxvd1VwbG9hZGZyb21HYWxsZXJ5JzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgIC4uLih0eXBlID09ICdtdWx0aXBsZWNob2ljZXNpbmdsZScgPyB7XCJsaW5rZWRRdWVzdGlvblwiOnRoaXMuZmIuY29udHJvbCgwLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLCdzaG93TGlua2VkJzp0aGlzLmZiLmNvbnRyb2woZmFsc2UsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSl9IDoge30pLFxyXG4gICAgICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGZhbHNlKSxcclxuICAgICAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbCgnJyksXHJcbiAgICAgICAgICAuLi4odHlwZSA9PSAnbXVsdGlwbGVJbWFnZScgPyB7J2Rlc2NyaXB0aXZldHlwZSc6dGhpcy5mYi5jb250cm9sKCd0ZXh0Jyl9Ont9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWxldGVBbnN3ZXIoc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgYWRkbW9yZXFuSW5kZXg6IG51bWJlcixhbnNJbmRleDpudW1iZXIgPSAtMSkge1xyXG4gICAgaWYoYW5zSW5kZXggIT0gLTEpIHtcclxuICAgICAgdGhpcy5nZXRGb3JtQXJyYXlRdWVzdGlvbnNBbnN3ZXIoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAnYW5zd2VycycsYW5zSW5kZXgpLnJlbW92ZUF0KGFkZG1vcmVxbkluZGV4KTsgICAgXHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5nZXRGb3JtQXJyYXlRdWVzdGlvbnNBbnN3ZXIoc2VjdGlvbkluZGV4LCBxdWVzdGlvbkluZGV4LCAnYW5zd2VycycsYW5zSW5kZXgpLnJlbW92ZUF0KGFkZG1vcmVxbkluZGV4KTsgICAgXHJcbiAgICB9XHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgY2xvbmVRdWVzdGlvbihzZWN0aW9uaW5kZXg6IGFueSwgcXVlc3Rpb25pbmRleDogYW55KSB7XHJcbiAgICBsZXQgY2xvbmVRdWVzdGlvbiA9ICgodGhpcy5nZXRTZWN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbmluZGV4LCAncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxdWVzdGlvbmluZGV4KSBhcyBGb3JtR3JvdXApLnZhbHVlO1xyXG4gICAgbGV0IHF1ZXN0aW9uTGVuZ3RoID0gICh0aGlzLmdldFNlY3Rpb25Gb3JtQ29udHJvbChzZWN0aW9uaW5kZXgsICdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLnZhbHVlO1xyXG4gICAgbGV0IHF1ZXN0aW9uOiBhbnk7XHJcbiAgICBsZXQgYW5zd2VyOiBhbnk7XHJcbiAgICBpZiAoY2xvbmVRdWVzdGlvbi5hbnN3ZXJzKSB7XHJcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNsb25lUXVlc3Rpb24uYW5zd2VycykgJiYgY2xvbmVRdWVzdGlvbi5hbnN3ZXJzLmxlbmd0aCkge1xyXG4gICAgICAgIGFuc3dlciA9IFtdO1xyXG4gICAgICAgIGNsb25lUXVlc3Rpb24uYW5zd2Vycy5mb3JFYWNoKChrOiBhbnkpID0+IHtcclxuICAgICAgICAgIGFuc3dlci5wdXNoKFxyXG4gICAgICAgICAgICB0aGlzLmZiLmdyb3VwKHtcclxuICAgICAgICAgICAgICAuLi4oIVsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSAmJiBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlICE9ICd2aWRlbycgPyB7ICdhbnN3ZXInOiB0aGlzLmZiLmNvbnRyb2woaz8uYW5zd2VyLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgJiYgY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSAhPSAndmlkZW8nID8geyAnYW5zd2Vyb3B0aW9uTnVtYmVyJzogdGhpcy5mYi5jb250cm9sKGs/LmFuc3dlcm9wdGlvbk51bWJlciArIDEpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgJiYgY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSAhPSAndmlkZW8nID8geyAnc29wRmxhZyc6IHRoaXMuZmIuY29udHJvbChrPy5zb3BGbGFnID8gaz8uc29wRmxhZyA6IGZhbHNlLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgJiYgY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSAhPSAndmlkZW8nID8geyAndmFsaWRhdGlvbic6IHRoaXMuZmIuY29udHJvbChrPy52YWxpZGF0aW9uLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2ltYWdlJywgJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgJiYgY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSAhPSAndmlkZW8nID8geyAndmFsaWRhdGlvblR5cGUnOiB0aGlzLmZiLmNvbnRyb2woaz8udmFsaWRhdGlvblR5cGUsIHRoaXMuYWxsb3dlZFZhbHVlc1ZhbGlkYXRvcihbXCJDYXB0dXJlIEltYWdlXCIsIFwiRGVzY3JpcHRpdmUgQW5zd2VyXCIsIFwiQ2FwdHVyZSBWaWRlb1wiXSkpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdyZWZlcmVuY2VJbWFnZSc6IHRoaXMuZmIuY29udHJvbChrPy5yZWZlcmVuY2VJbWFnZSkgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkpID8geyAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChrPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID09IHRydWUgPyB0cnVlIDogZmFsc2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKCFbJ2Rlc2NyaXB0aXZlJywnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnLCdkYXRlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdydW5BSSc6IHRoaXMuZmIuY29udHJvbChrPy5ydW5BSSA/IGs/LnJ1bkFJIDogZmFsc2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgLi4uKFsnbXVsdGlwbGVjaG9pY2VzaW5nbGUnLCd5ZXMvbm8nXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ3Nob3dMaW5rZWQnOiBmYWxzZSB9IDoge30pLFxyXG4gICAgICAgICAgICAgIC4uLihbJ211bHRpcGxlY2hvaWNlc2luZ2xlJywneWVzL25vJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdsaW5rZWRRdWVzdGlvbic6IDAgfSA6IHt9KSxcclxuICAgICAgICAgICAgICAuLi4oWydtdWx0aXBsZWNob2ljZXNpbmdsZScsJ3llcy9ubyddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAnbGlua2VkUXVlc3Rpb24nOiAwIH0gOiB7fSksXHJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpdmV0eXBlOnRoaXMuZmIuY29udHJvbChrPy5kZXNjcmlwdGl2ZXR5cGUpXHJcblxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZih0eXBlb2YgY2xvbmVRdWVzdGlvbi5hbnN3ZXJzID09PSAnb2JqZWN0JyAmJiBjbG9uZVF1ZXN0aW9uLmFuc3dlcnMgIT09IG51bGwpIHtcclxuICAgICAgICBhbnN3ZXIgPSB0aGlzLmZiLmdyb3VwKHsgICAgICAgICAgXHJcbiAgICAgICAgICAuLi4oWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAncmVmZXJlbmNlSW1hZ2UnOiB0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8uYW5zd2Vycz8ucmVmZXJlbmNlSW1hZ2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAuLi4oKFsnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSB8fCBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlID09ICd2aWRlbycpID8geyAnYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJzPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID09IHRydWUgPyB0cnVlIDogZmFsc2UpIH0gOiB7fSksXHJcbiAgICAgICAgICAuLi4oWydpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyAncnVuQUknOiB0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8uYW5zd2Vycz8ucnVuQUkgPyBjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJzPy5ydW5BSSA6IGZhbHNlKSB9IDoge30pLFxyXG4gICAgICAgICAgLi4uKFsnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKGNsb25lUXVlc3Rpb24/LmFuc3dlclR5cGUpID8geyBkZXNjcmlwdGl2ZXR5cGU6dGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZSkgfSA6IHt9KSxcclxuICAgICAgICAgIC4uLihbJ2xpbmVhcnNjYWxlJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkgPyB7ICdyYW5nZVN0YXJ0Jzp0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8uYW5zd2Vycy5yYW5nZVN0YXJ0KSwncmFuZ2VFbmQnOnRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJzLnJhbmdlRW5kKSB9IDoge30pLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBxdWVzdGlvbiA9IHRoaXMuZmIuZ3JvdXAoe1xyXG4gICAgICBcInFub1wiOiB0aGlzLmZiLmNvbnRyb2wocXVlc3Rpb25MZW5ndGgubGVuZ3RoICsgMSksXHJcbiAgICAgICdxbmFtZSc6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5xbmFtZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsbm9XaGl0ZXNwYWNlVmFsaWRhdG9yKCldKSxcclxuICAgICAgJ2Fuc3dlclR5cGUnOiB0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSwgdGhpcy5hbGxvd2VkVmFsdWVzVmFsaWRhdG9yKFtcImRlc2NyaXB0aXZlXCIsIFwieWVzL25vXCIsIFwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIiwgXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCIsXCJkZXNjcmlwdGl2ZUltYWdlXCIsIFwiaW1hZ2VcIiwgXCJ2aWRlb1wiLCdtdWx0aXBsZUltYWdlJywnZGF0ZScsJ2xpbmVhcnNjYWxlJywndGltZSddKSksXHJcbiAgICAgIC4uLighWydkZXNjcmlwdGl2ZScsJ2RhdGUnXS5pbmNsdWRlcyhjbG9uZVF1ZXN0aW9uPy5hbnN3ZXJUeXBlKSA/IHsgJ2Fuc3dlcnMnOiAoWydpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCAndmlkZW8nLCdtdWx0aXBsZUltYWdlJywnbGluZWFyc2NhbGUnLCd0aW1lJ10uaW5jbHVkZXMoY2xvbmVRdWVzdGlvbj8uYW5zd2VyVHlwZSkpID8gYW5zd2VyIDogdGhpcy5mYi5hcnJheShhbnN3ZXIsW3VuaXF1ZVN0cmluZ1ZhbGlkYXRvcigpXSkgfSA6IHt9KSxcclxuICAgICAgJ3J1bkFJJzogdGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LnJ1bkFJLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG4gICAgICAncnVuQUlEZXNjcmlwdGlvbic6IHRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5ydW5BSURlc2NyaXB0aW9uKSxcclxuICAgICAgJ2FsbG93VXBsb2FkZnJvbUdhbGxlcnknOiB0aGlzLmZiLmNvbnRyb2woY2xvbmVRdWVzdGlvbj8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSksXHJcbiAgICAgICdsaW5rVHlwZSc6IHRoaXMuZmIuY29udHJvbChmYWxzZSksXHJcbiAgICAgICdkZXNjcmlwdGl2ZXR5cGUnOnRoaXMuZmIuY29udHJvbChjbG9uZVF1ZXN0aW9uPy5kZXNjcmlwdGl2ZXR5cGUpLFxyXG4gICAgICAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZSc6dGhpcy5mYi5jb250cm9sKGNsb25lUXVlc3Rpb24/LnF1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UpXHJcblxyXG4gICAgfSk7XHJcbiAgICAvLyB0aGlzLnVwZGF0ZUNsb25lZGxpbmtlZFF1ZXN0aW9uTm8oc2VjdGlvbmluZGV4LCBjbG9uZVF1ZXN0aW9uPy5xbm8pO1xyXG4gICAgKHRoaXMuZ2V0U2VjdGlvbkZvcm1Db250cm9sKHNlY3Rpb25pbmRleCwgJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuaW5zZXJ0KGNsb25lUXVlc3Rpb24/LnFubyxxdWVzdGlvbik7XHJcbiAgICB0aGlzLkNoZWNrbGlzdEZvcm0udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy51cGRhdGVRdWVzdGlvblFub3Moc2VjdGlvbmluZGV4KTtcclxuICAgIHRoaXMuc3dhbFRvYXN0KGBRdWVzdGlvbiAke2Nsb25lUXVlc3Rpb24/LnFub30gaGFzIGJlZW4gZHVwbGljYXRlZCFgKTtcclxuICAgIHRoaXMuY2hhbmdlZGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlQ2xvbmVkbGlua2VkUXVlc3Rpb25ObyhzZWNJZHg6bnVtYmVyLHFpZHg6bnVtYmVyKSB7XHJcbiAgICBsZXQgcXVlc3Rpb25zID0gKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVzdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGFuc3dlcnMgPSAocXVlc3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cCk/LmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheTtcclxuICAgICAgaWYoYW5zd2Vycykge1xyXG4gICAgICAgIGZvcihsZXQgaj0wO2o8YW5zd2Vycy5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICBsZXQgbGlua2VkID0gKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdzaG93TGlua2VkJyk/LnZhbHVlO1xyXG4gICAgICAgICAgaWYobGlua2VkKSB7XHJcbiAgICAgICAgICAgIGxldCBxdWVzdGlvbk5vID0gKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgICAgICAgICAgaWYocXVlc3Rpb25ObyA+IHFpZHgpIHtcclxuICAgICAgICAgICAgICAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApPy5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKHF1ZXN0aW9uTm8gKyAxKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2F2ZUNoZWNrbGlzdFF1ZXN0aW9ucyh0eXBlOiBzdHJpbmcpIHtcclxuICAgICAgbGV0IGNoZWNrbGlzdCA9IHRoaXMuQ2hlY2tsaXN0Rm9ybS52YWx1ZTtcclxuICAgICAgaWYoIXRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ2NoZWNrbGlzdE5hbWUnKT8udmFsaWQpIHtcclxuICAgICAgICBsZXQgZXJyOiBzdHJpbmcgPSAnUGxlYXNlIGVudGVyIGNoZWNrbGlzdCBuYW1lISc7XHJcbiAgICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSAgICAgIFxyXG4gICAgICBcclxuICAgICAgaWYgKCF0aGlzLkNoZWNrbGlzdEZvcm0udmFsaWQpIHtcclxuICAgICAgICB0aGlzLm1hcmtGb3JtQ29udHJvbHNBc1RvdWNoZWQodGhpcy5DaGVja2xpc3RGb3JtLDApO1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsVG9FcnJvcnModGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgc2VjdGlvbnMgPSBjaGVja2xpc3Quc2VjdGlvbnM7XHJcbiAgICAgIGlmKHR5cGUgPT0gJ3NhdmVBc0RyYWZ0Jykge1xyXG4gICAgICAgIGNoZWNrbGlzdC5zdWJtaXRUeXBlID0gJ3NhdmUnO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNoZWNrbGlzdC5zdWJtaXRUeXBlID0gJ2NvbmZpZ3VyZSc7XHJcbiAgICAgIH1cclxuICAgICAgaWYoIXNlY3Rpb25zLmxlbmd0aCkge1xyXG4gICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICdQbGVhc2UgYWRkIGF0bGVhc3Qgb25lIHNlY3Rpb24hJztcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZih0eXBlID09ICdjb25maWd1cmUnICYmICFzZWN0aW9uc1tpXS5xdWVzdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICBsZXQgZXJyOiBzdHJpbmcgPSAnUGxlYXNlIGFkZCBhdGxlYXN0IG9uZSBxdWVzdGlvbiBpbiBzZWN0aW9uISc7XHJcbiAgICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBmaW5kRXhpc3RzID0gc2VjdGlvbnMuZmlsdGVyKChlbGU6YW55LGluZGV4OmFueSkgPT4ge1xyXG4gICAgICAgICAgaWYoaW5kZXggIT0gaSAmJiBzZWN0aW9uc1tpXS5uYW1lLnRyaW0oKSA9PSBlbGUubmFtZS50cmltKCkpXHJcbiAgICAgICAgICAgIHJldHVybiBlbGU7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZihmaW5kRXhpc3RzLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5zd2FsVG9hc3QoYCR7c2VjdGlvbnNbaV0ubmFtZX0gc2VjdGlvbiBuYW1lIGlzIER1cGxpY2F0ZWRgICwnZXJyb3InKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzZWN0aW9uc1tpXS5xdWVzdGlvbnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGxldCBhbnNUeXBlID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGU7XHJcbiAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0ucW5hbWUgPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0ucW5hbWUudHJpbSgpLnJlcGxhY2VBbGwoL1xcbi9nLCAnJylcclxuICAgICAgICAgIGxldCBmaW5kRXhpc3RzID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zLmZpbHRlcigoZWxlOmFueSxpbmRleDphbnkpID0+IHtcclxuICAgICAgICAgICAgaWYoaW5kZXggIT0gaiAmJiBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0ucW5hbWUudHJpbSgpID09IGVsZS5xbmFtZS50cmltKCkpXHJcbiAgICAgICAgICAgICAgcmV0dXJuIGVsZTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICBpZihmaW5kRXhpc3RzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnN3YWxUb2FzdChgJHtzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0ucW5hbWV9IHF1ZXN0aW9uIG5hbWUgaXMgRHVwbGljYXRlZGAgLCdlcnJvcicpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZihhbnNUeXBlID09ICdsaW5lYXJzY2FsZScpIHtcclxuICAgICAgICAgICAgaWYoc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMucmFuZ2VTdGFydCA+IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzLnJhbmdlRW5kKXtcclxuICAgICAgICAgICAgICBsZXQgZXJyOiBzdHJpbmcgPSAnUmFuZ2Ugc3RhcnQgaXMgZ3JlYXRlciB0aGFuIHJhbmdlIEVuZC4nO1xyXG4gICAgICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmKGFuc1R5cGUgIT0gJ2Rlc2NyaXB0aXZlJykge1xyXG4gICAgICAgICAgICBkZWxldGUgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmRlc2NyaXB0aXZldHlwZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChbXCJtdWx0aXBsZWNob2ljZW11bHRpcGxlXCJdLmluY2x1ZGVzKGFuc1R5cGUpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnc2hvd0xpbmtlZCddID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddLnRyaW0oKTtcclxuICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnbGlua2VkUXVlc3Rpb24nXSA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChbXCJtdWx0aXBsZWNob2ljZXNpbmdsZVwiLFwieWVzL25vXCJdLmluY2x1ZGVzKGFuc1R5cGUpKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10gPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnYW5zd2VyJ10udHJpbSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodHlwZW9mIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzID09PSAnb2JqZWN0JyAmJlxyXG4gICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2VycyAhPT0gbnVsbCAmJlxyXG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2VycykgfHwgWydkZXNjcmlwdGl2ZScsJ2RhdGUnXS5pbmNsdWRlcyhhbnNUeXBlKSkge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHtcclxuICAgICAgICAgICAgICBcImFuc3dlclwiOiAnJyxcclxuICAgICAgICAgICAgICBcImFuc3dlcm9wdGlvbk51bWJlclwiOiAxLFxyXG4gICAgICAgICAgICAgIFwic29wRmxhZ1wiOiBmYWxzZSxcclxuICAgICAgICAgICAgICBcInZhbGlkYXRpb25cIjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9uVHlwZVwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwidmFsaWRhdGlvbkFuc3dlclwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwicmVmZXJlbmNlSW1hZ2VcIjogc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LnJlZmVyZW5jZUltYWdlID8gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LnJlZmVyZW5jZUltYWdlIDogXCJcIixcclxuICAgICAgICAgICAgICBcInNob3dMaW5rZWRcIjpmYWxzZSxcclxuICAgICAgICAgICAgICBcImxpbmtlZFF1ZXN0aW9uXCI6MCxcclxuICAgICAgICAgICAgICAuLi4oYW5zVHlwZSA9PSAnbXVsdGlwbGVJbWFnZScgPyB7J2Rlc2NyaXB0aXZldHlwZSc6c2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZX06e30pLFxyXG4gICAgICAgICAgICAgIC4uLihhbnNUeXBlID09ICdsaW5lYXJzY2FsZScgPyB7J3JhbmdlU3RhcnQnOnNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yYW5nZVN0YXJ0fTp7fSksXHJcbiAgICAgICAgICAgICAgLi4uKGFuc1R5cGUgPT0gJ2xpbmVhcnNjYWxlJyA/IHsncmFuZ2VFbmQnOnNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yYW5nZUVuZH06e30pXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5ID0gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPyBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA6IGZhbHNlO1xyXG4gICAgICAgICAgICBpZihhbnNUeXBlID09ICdtdWx0aXBsZUltYWdlJykge1xyXG4gICAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5kZXNjcmlwdGl2ZXR5cGUgPSBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uZGVzY3JpcHRpdmV0eXBlID8gc2VjdGlvbnNbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmRlc2NyaXB0aXZldHlwZSA6ICd0ZXh0JztcclxuICAgICAgICAgICAgICBzZWN0aW9uc1tpXS5xdWVzdGlvbnNbal0ucXVlc3Rpb25SZWZlcmVuY2VJbWFnZSA9IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA/IHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yZWZlcmVuY2VJbWFnZSA6ICcnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNlY3Rpb25zW2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzID0gW2l0ZW1dO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjaGVja2xpc3Quc2VjdGlvbnMgPSBzZWN0aW9ucztcclxuICAgICAgY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUgPSBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZS50cmltKCkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZS50cmltKCkuc2xpY2UoMSk7XHJcbiAgICAgIGNoZWNrbGlzdC5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICAgIGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lID0gY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUudHJpbSgpO1xyXG4gICAgICBjaGVja2xpc3QuY2hlY2tsaXN0RGVzY3JpcHRpb24gPSBjaGVja2xpc3Q/LmNoZWNrbGlzdERlc2NyaXB0aW9uID8gY2hlY2tsaXN0Py5jaGVja2xpc3REZXNjcmlwdGlvbj8udHJpbSgpIDogJyc7XHJcbiAgICAgIHRoaXMuc29wU2VydmljZS5jcmVhdGVjaGVja2xpc3QoY2hlY2tsaXN0KS5waXBlKHRha2VVbnRpbCh0aGlzLmRldGFjaCkpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZihyZXMpIHtcclxuICAgICAgICAgIGlmIChyZXM/LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIGlmKHR5cGU9PSdjb25maWd1cmUnKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL21hbmFnZS90cmF4L2NvbmZpZ3VyZT9jaGVja0xpc3RJZD0ke3Jlcy5kYXRhLmNoZWNrbGlzdElkfWApOyAgICAgXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL21hbmFnZS90cmF4L2NoZWNrbGlzdCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnN3YWxUb2FzdCgnVW5hYmxlIHRvIGNyZWF0ZSBjaGVja2xpc3QhJywnZXJyb3InKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zd2FsVG9hc3QoJ1VuYWJsZSB0byBjcmVhdGUgY2hlY2tsaXN0IScsJ2Vycm9yJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGVyciA9IGVycm9yPy5lcnJvcj8uZXJyb3I/Lm1lc3NhZ2UgfHwgJ1VuYWJsZSB0byBjcmVhdGUgY2hlY2tsaXN0IVNlcnZlciBFcnJvciEnO1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgfVxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgc2F2ZUFzRHJhZnRQb3AodHlwZTogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMucG9wdXBDb3VudCA9IHRoaXMucG9wdXBDb3VudCArIDE7XHJcbiAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oVHJheHBvcHVwQ29tcG9uZW50LHtjZW50ZXJlZDogdHJ1ZSwgc2l6ZTogJ21kJ30pO1xyXG4gICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHtcclxuICAgICAgICBpbWFnZXNyYzogIGA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjU2XCIgaGVpZ2h0PVwiNTZcIiB2aWV3Qm94PVwiMCAwIDU2IDU2XCIgZmlsbD1cIm5vbmVcIj48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIGZpbGw9XCIjRkVGMEM3XCIvPjxwYXRoIGQ9XCJNMjcuOTk5OCAyNC4wMDEyVjI4LjAwMTJNMjcuOTk5OCAzMi4wMDEySDI4LjAwOThNMjYuMjg5OCAxOC44NjEyTDE3LjgxOTggMzMuMDAxMkMxNy42NDUxIDMzLjMwMzYgMTcuNTUyNyAzMy42NDY1IDE3LjU1MTggMzMuOTk1N0MxNy41NTA4IDM0LjM0NDkgMTcuNjQxMyAzNC42ODgzIDE3LjgxNDIgMzQuOTkxN0MxNy45ODcxIDM1LjI5NTEgMTguMjM2NSAzNS41NDc5IDE4LjUzNzUgMzUuNzI1QzE4LjgzODUgMzUuOTAyMSAxOS4xODA2IDM1Ljk5NzMgMTkuNTI5OCAzNi4wMDEySDM2LjQ2OThDMzYuODE5IDM1Ljk5NzMgMzcuMTYxMSAzNS45MDIxIDM3LjQ2MjEgMzUuNzI1QzM3Ljc2MzEgMzUuNTQ3OSAzOC4wMTI0IDM1LjI5NTEgMzguMTg1NCAzNC45OTE3QzM4LjM1ODMgMzQuNjg4MyAzOC40NDg4IDM0LjM0NDkgMzguNDQ3OCAzMy45OTU3QzM4LjQ0NjggMzMuNjQ2NSAzOC4zNTQ0IDMzLjMwMzYgMzguMTc5OCAzMy4wMDEyTDI5LjcwOTggMTguODYxMkMyOS41MzE1IDE4LjU2NzMgMjkuMjgwNSAxOC4zMjQzIDI4Ljk4MSAxOC4xNTU3QzI4LjY4MTQgMTcuOTg3IDI4LjM0MzUgMTcuODk4NCAyNy45OTk4IDE3Ljg5ODRDMjcuNjU2IDE3Ljg5ODQgMjcuMzE4MSAxNy45ODcgMjcuMDE4NiAxOC4xNTU3QzI2LjcxOTEgMTguMzI0MyAyNi40NjggMTguNTY3MyAyNi4yODk4IDE4Ljg2MTJaXCIgc3Ryb2tlPVwiI0RDNjgwM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBzdHJva2U9XCIjRkZGQUVCXCIgc3Ryb2tlLXdpZHRoPVwiOFwiLz48L3N2Zz5gLFxyXG4gICAgICAgIHRpdGxlOmBVbnNhdmVkIGNoYW5nZXNgLFxyXG4gICAgICAgIGNvbnRlbnQ6YERvIHlvdSB3YW50IHRvIHNhdmUgYXMgZHJhZnQ/YCxcclxuICAgICAgICBidXR0b250eXBlOidkcmFmdCdcclxuICAgICAgfVxyXG4gICAgICBkaWFsb2dSZWYucmVzdWx0LnRoZW4oKHJlcyk9PntcclxuICAgICAgICBpZighcmVzKSB7XHJcbiAgICAgICAgICB0aGlzLnBvcHVwQ291bnQgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihyZXMpIHtcclxuICAgICAgICAgIGlmKHR5cGUgPT0gJ2NyZWF0ZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zYXZlQ2hlY2tsaXN0UXVlc3Rpb25zKCdzYXZlQXNEcmFmdCcpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDaGVja2xpc3RRdWVzdGlvbnMoJ3NhdmVBc0RyYWZ0Jyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoZWNrbGlzdFF1ZXN0aW9ucyh0eXBlOiBzdHJpbmcpIHtcclxuICAgIGxldCBzZWN0aW9uc2FycmF5OiBhbnkgPSBbXTtcclxuICAgIGxldCBjaGVja2xpc3Q6IGFueTtcclxuICAgIFxyXG4gICAgaWYoIXRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ2NoZWNrbGlzdE5hbWUnKT8udmFsaWQpIHtcclxuICAgICAgbGV0IGVycjogc3RyaW5nID0gJ1BsZWFzZSBlbnRlciBjaGVja2xpc3QgbmFtZSEnO1xyXG4gICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gICAgICBcclxuICAgIFxyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5DaGVja2xpc3RGb3JtKTtcclxuICAgIC8vIHJldHVybjtcclxuICAgIGNoZWNrbGlzdCA9IHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgaWYgKCF0aGlzLkNoZWNrbGlzdEZvcm0udmFsaWQpIHtcclxuICAgICAgdGhpcy5tYXJrRm9ybUNvbnRyb2xzQXNUb3VjaGVkKHRoaXMuQ2hlY2tsaXN0Rm9ybSwwKTtcclxuICAgICAgdGhpcy5zY3JvbGxUb0Vycm9ycyh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHNlY3Rpb25zYXJyYXkgPSBjaGVja2xpc3Quc2VjdGlvbnM7XHJcbiAgICBpZighdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy52YWxpZCkge1xyXG4gICAgICBsZXQgZXJyOiBzdHJpbmcgPSAnUGxlYXNlIGVudGVyIGNoZWNrbGlzdCBuYW1lISc7XHJcbiAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYodHlwZSA9PSAnc2F2ZUFzRHJhZnQnKSB7XHJcbiAgICAgIGNoZWNrbGlzdC5zdWJtaXRUeXBlID0gJ3NhdmUnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY2hlY2tsaXN0LnN1Ym1pdFR5cGUgPSAnY29uZmlndXJlJztcclxuICAgIH1cclxuICAgIGlmKCFzZWN0aW9uc2FycmF5Lmxlbmd0aCkge1xyXG4gICAgICBsZXQgZXJyOiBzdHJpbmcgPSAnUGxlYXNlIGFkZCBhdGxlYXN0IG9uZSBzZWN0aW9uISc7XHJcbiAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZWN0aW9uc2FycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBzZWN0aW9uTmFtZSA9IHNlY3Rpb25zYXJyYXlbaV0ubmFtZTtcclxuICAgICAgbGV0IGZpbmRFeGlzdHMgPSBzZWN0aW9uc2FycmF5LmZpbHRlcigoZWxlOmFueSxpbmRleDphbnkpID0+IHtcclxuICAgICAgICAgIGlmKGluZGV4ICE9IGkgJiYgc2VjdGlvbk5hbWUudHJpbSgpID09IGVsZS5uYW1lLnRyaW0oKSlcclxuICAgICAgICAgICAgcmV0dXJuIGVsZTtcclxuICAgICAgfSlcclxuICAgICAgaWYoZmluZEV4aXN0cy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChgJHtzZWN0aW9uTmFtZX0gc2VjdGlvbiBuYW1lIGlzIER1cGxpY2F0ZWRgICwnZXJyb3InKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYodHlwZSA9PSAnY29uZmlndXJlJyAmJiAhc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgbGV0IGVycjogc3RyaW5nID0gJ1BsZWFzZSBhZGQgYXRsZWFzdCBvbmUgcXVlc3Rpb24gaW4gc2VjdGlvbiEnO1xyXG4gICAgICAgIHRoaXMuc3dhbFRvYXN0KGVyciwnZXJyb3InKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9ucy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLnFuYW1lID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0ucW5hbWUudHJpbSgpLnJlcGxhY2VBbGwoL1xcbi9nLCAnJylcclxuICAgICAgICBsZXQgZmluZEV4aXN0cyA9IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zLmZpbHRlcigoZWxlOmFueSxpbmRleDphbnkpID0+IHtcclxuICAgICAgICAgIGlmKGluZGV4ICE9IGogJiYgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0ucW5hbWUudHJpbSgpID09IGVsZS5xbmFtZS50cmltKCkpXHJcbiAgICAgICAgICAgIHJldHVybiBlbGU7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZihmaW5kRXhpc3RzLmxlbmd0aCkge1xyXG4gICAgICAgICAgdGhpcy5zd2FsVG9hc3QoYCR7c2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0ucW5hbWV9IHF1ZXN0aW9uIG5hbWUgaXMgRHVwbGljYXRlZGAgLCdlcnJvcicpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlID09ICdsaW5lYXJzY2FsZScpIHtcclxuICAgICAgICAgIGlmKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMucmFuZ2VTdGFydCA+IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMucmFuZ2VFbmQpe1xyXG4gICAgICAgICAgICBsZXQgZXJyOiBzdHJpbmcgPSAnUmFuZ2Ugc3RhcnQgaXMgZ3JlYXRlciB0aGFuIHJhbmdlIEVuZC4nO1xyXG4gICAgICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZSAhPSAnZGVzY3JpcHRpdmUnKSB7XHJcbiAgICAgICAgICBkZWxldGUgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uZGVzY3JpcHRpdmV0eXBlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoW1wibXVsdGlwbGVjaG9pY2VtdWx0aXBsZVwiXS5pbmNsdWRlcyhzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlKSkge1xyXG4gICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzLmxlbmd0aDsgaysrKSB7XHJcbiAgICAgICAgICAgIC8vIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlcklucHV0U3R5bGUnXSA9IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGU7XHJcbiAgICAgICAgICAgIC8vIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ3JlZmVyZW5jZUltYWdlJ10gPSBcIlwiO1xyXG4gICAgICAgICAgICAvLyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbGxvd1VwbG9hZGZyb21HYWxsZXJ5J10gPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsndmFsaWRhdGlvbkFuc3dlciddID0gXCJcIjsgICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsncnVuQUknXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbnN3ZXInXSA9IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddLnRyaW0oKTtcclxuICAgICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vyc1trXVsnc2hvd0xpbmtlZCddID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2xpbmtlZFF1ZXN0aW9uJ10gPSAwO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoW1wibXVsdGlwbGVjaG9pY2VzaW5nbGVcIixcInllcy9ub1wiXS5pbmNsdWRlcyhzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlKSkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgICAgICBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzW2tdWydhbnN3ZXInXSA9IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnNba11bJ2Fuc3dlciddLnRyaW0oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2Ygc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VycyA9PT0gJ29iamVjdCcgJiZcclxuICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMgIT09IG51bGwgJiZcclxuICAgICAgICAgICFBcnJheS5pc0FycmF5KHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMpIHx8IFsnZGVzY3JpcHRpdmUnLCdkYXRlJ10uaW5jbHVkZXMoc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZSkpIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB7XHJcbiAgICAgICAgICAgICAgXCJhbnN3ZXJcIjogJycsXHJcbiAgICAgICAgICAgICAgXCJhbnN3ZXJvcHRpb25OdW1iZXJcIjogMSxcclxuICAgICAgICAgICAgICBcInNvcEZsYWdcIjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgXCJ2YWxpZGF0aW9uXCI6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIFwidmFsaWRhdGlvbkFuc3dlclwiOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwidmFsaWRhdGlvblR5cGVcIjogXCJcIixcclxuICAgICAgICAgICAgICBcInJlZmVyZW5jZUltYWdlXCI6IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LnJlZmVyZW5jZUltYWdlID8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8ucmVmZXJlbmNlSW1hZ2UgOiBcIlwiLFxyXG4gICAgICAgICAgICAgIFwic2hvd0xpbmtlZFwiOmZhbHNlLFxyXG4gICAgICAgICAgICAgIFwibGlua2VkUXVlc3Rpb25cIjowLFxyXG4gICAgICAgICAgICAgIC4uLihzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJUeXBlID09ICdtdWx0aXBsZUltYWdlJyA/IHsnZGVzY3JpcHRpdmV0eXBlJzpzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5kZXNjcmlwdGl2ZXR5cGV9Ont9KSxcclxuICAgICAgICAgICAgICAuLi4oc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2VyVHlwZSA9PSAnbGluZWFyc2NhbGUnID8geydyYW5nZVN0YXJ0JzpzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5yYW5nZVN0YXJ0fTp7fSksXHJcbiAgICAgICAgICAgICAgLi4uKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUgPT0gJ2xpbmVhcnNjYWxlJyA/IHsncmFuZ2VFbmQnOnNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LnJhbmdlRW5kfTp7fSlcclxuICAgICAgICAgICAgICAvLyBcImFsbG93VXBsb2FkZnJvbUdhbGxlcnlcIjogc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA/IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgOiBmYWxzZSxcclxuICAgICAgICAgICAgICAvLyBcImFuc3dlcklucHV0U3R5bGVcIjogc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uYW5zd2VySW5wdXRTdHlsZSA/IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFuc3dlcklucHV0U3R5bGUgOiBcIlwiLFxyXG4gICAgICAgICAgICAgIC8vIFwicnVuQUlcIjogc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycy5ydW5BSSA/IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMucnVuQUkgOiBmYWxzZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYWxsb3dVcGxvYWRmcm9tR2FsbGVyeSA9IHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnM/LmFsbG93VXBsb2FkZnJvbUdhbGxlcnkgPyBzZWN0aW9uc2FycmF5W2ldLnF1ZXN0aW9uc1tqXS5hbnN3ZXJzPy5hbGxvd1VwbG9hZGZyb21HYWxsZXJ5IDogZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlclR5cGUgPT0gJ211bHRpcGxlSW1hZ2UnKSB7XHJcbiAgICAgICAgICAgICAgc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uZGVzY3JpcHRpdmV0eXBlID0gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uZGVzY3JpcHRpdmV0eXBlID8gc2VjdGlvbnNhcnJheVtpXS5xdWVzdGlvbnNbal0uYW5zd2Vycz8uZGVzY3JpcHRpdmV0eXBlIDogJ3RleHQnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHNlY3Rpb25zYXJyYXlbaV0ucXVlc3Rpb25zW2pdLmFuc3dlcnMgPSBbaXRlbV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjaGVja2xpc3Quc2VjdGlvbnMgPSBzZWN0aW9uc2FycmF5O1xyXG4gICAgY2hlY2tsaXN0LmNoZWNrbGlzdE5hbWUgPSBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZS50cmltKCkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZS50cmltKCkuc2xpY2UoMSk7XHJcbiAgICBjaGVja2xpc3QuY2hlY2tsaXN0TmFtZSA9IGNoZWNrbGlzdC5jaGVja2xpc3ROYW1lLnRyaW0oKTtcclxuICAgIGNoZWNrbGlzdC5jaGVja2xpc3REZXNjcmlwdGlvbiA9IGNoZWNrbGlzdD8uY2hlY2tsaXN0RGVzY3JpcHRpb24gPyBjaGVja2xpc3Q/LmNoZWNrbGlzdERlc2NyaXB0aW9uPy50cmltKCkgOiAnJztcclxuICAgIGNoZWNrbGlzdC5jbGllbnRJZCA9IHRoaXMuY2xpZW50SWQ7XHJcbiAgICB0aGlzLnNvcFNlcnZpY2UuZ2V0dXBkYXRlY2hlY2tsaXN0KHRoaXMuZWRpdHZhbHVlLCBjaGVja2xpc3QpLnBpcGUodGFrZVVudGlsKHRoaXMuZGV0YWNoKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZihyZXMpIHtcclxuICAgICAgICBpZiAocmVzPy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgaWYodHlwZT09J2NvbmZpZ3VyZScpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChgL21hbmFnZS90cmF4L2NvbmZpZ3VyZT9jaGVja0xpc3RJZD0ke3Jlcy5kYXRhLmNoZWNrbGlzdElkfSZzaG93RWRpdD10cnVlYCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvbWFuYWdlL3RyYXgvY2hlY2tsaXN0Jyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KCdVbmFibGUgdG8gdXBkYXRlIGNoZWNrbGlzdCEnLCdlcnJvcicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdCgnVW5hYmxlIHRvIHVwZGF0ZSBjaGVja2xpc3QhJywnZXJyb3InKTtcclxuICAgICAgfVxyXG4gICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgIGxldCBlcnIgPSBlcnJvcj8uZXJyb3I/LmVycm9yPy5tZXNzYWdlIHx8ICdVbmFibGUgdG8gY3JlYXRlIGNoZWNrbGlzdCFTZXJ2ZXIgRXJyb3IhJztcclxuICAgICAgdGhpcy5zd2FsVG9hc3QoZXJyLCdlcnJvcicpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBtYXJrRm9ybUNvbnRyb2xzQXNUb3VjaGVkKGNvbnRyb2w6IEZvcm1Hcm91cCB8IEZvcm1BcnJheSxzZWN0aW9uSW5kZXg/OiBudW1iZXIpIHtcclxuICAgIGNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xyXG5cclxuICAgIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XHJcbiAgICAgIGZvciAoY29uc3QgY29udHJvbE5hbWUgaW4gY29udHJvbC5jb250cm9scykge1xyXG4gICAgICAgIHRoaXMubWFya0Zvcm1Db250cm9sc0FzVG91Y2hlZChjb250cm9sLmdldChjb250cm9sTmFtZSkgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XHJcbiAgICAgIGNvbnRyb2wuY29udHJvbHMuZm9yRWFjaChmb3JtQ29udHJvbCA9PiB7XHJcbiAgICAgICAgdGhpcy5tYXJrRm9ybUNvbnRyb2xzQXNUb3VjaGVkKGZvcm1Db250cm9sIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2Nyb2xsVG9FcnJvcnMoc2VjdGlvbnM6IEZvcm1BcnJheSkge1xyXG4gICAgZm9yKGxldCBpPTA7aTxzZWN0aW9ucy5sZW5ndGg7aSsrKSB7XHJcbiAgICAgIGxldCBzZWN0aW9uID0gc2VjdGlvbnMuYXQoaSkgYXMgRm9ybUdyb3VwO1xyXG4gICAgICBpZiAoc2VjdGlvbi5pbnZhbGlkKSB7XHJcbiAgICAgICAgbGV0IHF1ZXN0aW9ucyA9IHNlY3Rpb24uZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXk7XHJcbiAgICAgICAgZm9yKGxldCBqPTA7ajxxdWVzdGlvbnMubGVuZ3RoO2orKykge1xyXG4gICAgICAgICAgbGV0IHF1ZXN0aW9uID0gcXVlc3Rpb25zLmF0KGopIGFzIEZvcm1Hcm91cDtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKHF1ZXN0aW9uLCdxdWVzdGlvbicpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHF1ZXN0aW9uLmludmFsaWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNob3cgPSBpO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9RdWVzdGlvbihpLCBqKTtcclxuICAgICAgICAgICAgICB0aGlzLnN3YWxUb2FzdCgnUGxlYXNlIGZpbGwgb3V0IGFsbCB0aGUgZmllbGRzIScsJ2Vycm9yJyk7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3dhbFRvYXN0KGVycjogc3RyaW5nLHR5cGU/OnN0cmluZyxpY29uPzogc3RyaW5nKSB7XHJcbiAgICBpZih0eXBlID09ICdlcnJvcicpIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRFcnJvclRvYXN0KGVycik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy50b2FzdC5nZXRTdWNjZXNzVG9hc3QoZXJyKTtcclxuICAgIH1cclxuICAgIC8vIFN3YWwuZmlyZSh7XHJcbiAgICAvLyAgIHRvYXN0OiB0cnVlLFxyXG4gICAgLy8gICAuLi4oIGljb24gPyB7IGljb25IdG1sOiBpY29uIH0gOiB7fSksXHJcbiAgICAvLyAgIC8vIHRpdGxlVGV4dDogYENoZWNrbGlzdCBGb3JtIEVycm9yYCxcclxuICAgIC8vICAgaHRtbDogYDxkaXYgY2xhc3M9XCJyb3cgXCI+XHJcbiAgICAvLyAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtMlwiPlxyXG4gICAgLy8gICA8ZGl2IGNsYXNzPVwidG9hc3R0aXRpbGVcIj4ke2Vycn08L2Rpdj5cclxuICAgIC8vICAgPC9kaXY+XHJcbiAgICAgXHJcbiAgICAvLyAgIDwvZGl2PmAsXHJcbiAgICAvLyAgIHBvc2l0aW9uOiAnYm90dG9tJyxcclxuICAgIC8vICAgc2hvd0NvbmZpcm1CdXR0b246IGZhbHNlLFxyXG4gICAgLy8gICBzaG93Q2xvc2VCdXR0b246IHRydWUsXHJcbiAgICAvLyAgIHRpbWVyOiA2MDAwLFxyXG4gICAgLy8gICB0aW1lclByb2dyZXNzQmFyOiB0cnVlLFxyXG4gICAgLy8gICBkaWRPcGVuOiAodG9hc3QpID0+IHtcclxuICAgIC8vICAgICB0b2FzdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWVudGVyJywgU3dhbC5zdG9wVGltZXIpXHJcbiAgICAvLyAgICAgdG9hc3QuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIFN3YWwucmVzdW1lVGltZXIpXHJcbiAgICAvLyAgICAgJChcIiNrdF9jcmVhdGVfYWNjb3VudF9mb3JtX2FjY291bnRfdHlwZV9wZXJzb25hbFwiKT8udmFsKCcnKTtcclxuICAgIC8vICAgICB0aGlzLmNoYW5nZWRldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG5cclxuICBSdW5BSShzSWR4Om51bWJlcixxSWR4OiBudW1iZXIsYW5zSWR4Om51bWJlcj0tMSkge1xyXG4gICAgbGV0IGRpYWxvZ1JlZjogYW55O1xyXG4gICAgbGV0IHF1ZXN0aW9uOiBhbnkgPSB0aGlzLmdldFF1ZXN0aW9uRm9ybUNvbnRyb2woc0lkeCxxSWR4LCdxbmFtZScpPy52YWx1ZTtcclxuICAgIGlmKHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNJZHgscUlkeCwncnVuQUknLGFuc0lkeCk/LnZhbHVlID09IGZhbHNlKSB7XHJcbiAgICAgIGlmKCFxdWVzdGlvbiB8fCAhdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy52YWx1ZSkge1xyXG4gICAgICAgIGxldCBlcnI6IHN0cmluZyA9ICFxdWVzdGlvbiA/ICdQbGVhc2UgZW50ZXIgcXVlc3Rpb24gdG8gY29udGludWUhJyA6ICdQbGVhc2UgZW50ZXIgQ2hlY2tsaXN0IE5hbWUgdG8gY29udGludWUhJztcclxuICAgICAgICB0aGlzLnN3YWxUb2FzdChlcnIsJ2Vycm9yJyk7ICAgICAgICBcclxuICAgICAgICB0aGlzLnJ1bkFJT2ZmKHNJZHgsIHFJZHgsZmFsc2UsYW5zSWR4KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQse2NlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnfSk7XHJcbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmRhdGEgPSB7XHJcbiAgICAgICAgICBpbWFnZXNyYzogYDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiNTZcIiBoZWlnaHQ9XCI1NlwiIHZpZXdCb3g9XCIwIDAgNTYgNTZcIiBmaWxsPVwibm9uZVwiPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgZmlsbD1cIiNEMUZBREZcIi8+PHBhdGggZD1cIk0yMy4zNTY0IDE5LjM1MjVDMjQuMTc0OCAxOC43MzI3IDI1LjE3MzggMTguMzk4NSAyNi4yMDA0IDE4LjQwMDlDMjYuNTU0OSAxOC4zOTMgMjYuOTA1NyAxOC40NzQ2IDI3LjIyMDQgMTguNjM4MkMyNy41MzUgMTguODAxOCAyNy44MDMzIDE5LjA0MjEgMjguMDAwNCAxOS4zMzY5QzI4LjE5NzUgMTkuMDQyMSAyOC40NjU4IDE4LjgwMTggMjguNzgwNCAxOC42MzgyQzI5LjA5NSAxOC40NzQ2IDI5LjQ0NTkgMTguMzkzIDI5LjgwMDQgMTguNDAwOUMzMC44MjcgMTguMzk4NSAzMS44MjYgMTguNzMyNyAzMi42NDQ0IDE5LjM1MjVDMzMuMjc0NCAxOS44NDIxIDMzLjc2MDQgMjAuNTIwMSAzMy45MzIgMjEuMzM5N0MzNC4zMjU2IDIxLjM2OTcgMzQuNjg1NiAyMS41MzI5IDM0Ljk4OCAyMS43Nzg5QzM1LjQ0NjQgMjIuMTUwOSAzNS43OCAyMi43MDg5IDM1Ljk5IDIzLjI5OTNDMzYuMzE4OCAyNC4yMTczIDM2LjQwNzYgMjUuMzg3MyAzNi4wNjY4IDI2LjM4MzNDMzYuMTUzMiAyNi40MjQxIDM2LjIzODQgMjYuNDcyMSAzNi4zMjEyIDI2LjUyNzNDMzYuNjUxMiAyNi43NDY5IDM2LjkwMiAyNy4wNjEzIDM3LjA4NjggMjcuNDMyMUMzNy40NTA0IDI4LjE1ODEgMzcuNjAwNCAyOS4xNzA5IDM3LjYwMDQgMzAuNDAwOUMzNy42MDA0IDMxLjc3MDEgMzcuMDc4NCAzMi42ODkzIDM2LjQxNiAzMy4yNTY5QzM2LjA0OTcgMzMuNTcxIDM1LjYxNzQgMzMuNzk4NiAzNS4xNTEyIDMzLjkyMjlDMzUuMDMxMiAzNC41OTI1IDM0LjY5NTIgMzUuMzY3NyAzNC4xNjg0IDM2LjAyNTNDMzMuNDg0NCAzNi44ODMzIDMyLjQyMzYgMzcuNjAwOSAzMS4wMDA0IDM3LjYwMDlDMjkuODcyNCAzNy42MDA5IDI4Ljk3NDggMzYuOTc2OSAyOC4zOTE2IDM2LjM2NDlDMjguMjUyMiAzNi4yMTg4IDI4LjEyMTUgMzYuMDY0NSAyOC4wMDA0IDM1LjkwMjlDMjcuODc5MyAzNi4wNjQ1IDI3Ljc0ODYgMzYuMjE4OCAyNy42MDkyIDM2LjM2NDlDMjcuMDI2IDM2Ljk3NjkgMjYuMTI5NiAzNy42MDA5IDI1LjAwMDQgMzcuNjAwOUMyMy41NzcyIDM3LjYwMDkgMjIuNTE3NiAzNi44ODMzIDIxLjgzMjQgMzYuMDI1M0MyMS4zNDAxIDM1LjQxNCAyMS4wMDI5IDM0LjY5MjcgMjAuODQ5NiAzMy45MjI5QzIwLjM4MzQgMzMuNzk4NiAxOS45NTExIDMzLjU3MSAxOS41ODQ4IDMzLjI1NjlDMTguOTIyNCAzMi42ODkzIDE4LjQwMDQgMzEuNzY4OSAxOC40MDA0IDMwLjQwMDlDMTguNDAwNCAyOS4xNzA5IDE4LjU1MTYgMjguMTU2OSAxOC45MTQgMjcuNDMyMUMxOS4wODU3IDI3LjA2ODUgMTkuMzQ5NyAyNi43NTYxIDE5LjY3OTYgMjYuNTI2MUMxOS43NjA2IDI2LjQ3MjUgMTkuODQ1NyAyNi40MjUxIDE5LjkzNCAyNi4zODQ1QzE5LjU5MzIgMjUuMzg2MSAxOS42ODIgMjQuMjE3MyAyMC4wMTA4IDIzLjI5OTNDMjAuMjIwOCAyMi43MDg5IDIwLjU1NDQgMjIuMTUwOSAyMS4wMTI4IDIxLjc3ODlDMjEuMzE1MiAyMS41MzI5IDIxLjY3NTIgMjEuMzcwOSAyMi4wNjg4IDIxLjMzOTdDMjIuMjQxNiAyMC41MjAxIDIyLjcyNjQgMTkuODQyMSAyMy4zNTY0IDE5LjM1MjVaTTI3LjQwMDQgMjEuNDAwOVYyMS4zODg5TDI3LjM5OCAyMS4zMjg5QzI3LjM4MDMgMjEuMDE2MSAyNy4zMTgxIDIwLjcwNzQgMjcuMjEzMiAyMC40MTIxQzI3LjEzODUgMjAuMTg5MiAyNy4wMTEzIDE5Ljk4NzYgMjYuODQyNCAxOS44MjQxQzI2LjY2NTEgMTkuNjY5OCAyNi40MzUyIDE5LjU4OTggMjYuMjAwNCAxOS42MDA5QzI1LjQ0MDcgMTkuNTk4MyAyNC43MDA5IDE5Ljg0MzUgMjQuMDkzMiAyMC4yOTkzQzIzLjUzNjQgMjAuNzMyNSAyMy4yMDA0IDIxLjMxOTMgMjMuMjAwNCAyMi4wMDA5QzIzLjIwMDMgMjIuMDk1OSAyMy4xNzc3IDIyLjE4OTYgMjMuMTM0MyAyMi4yNzQxQzIzLjA5MSAyMi4zNTg3IDIzLjAyODIgMjIuNDMxOCAyMi45NTExIDIyLjQ4NzNDMjIuODc0IDIyLjU0MjggMjIuNzg0OCAyMi41NzkzIDIyLjY5MDkgMjIuNTkzNkMyMi41OTY5IDIyLjYwNzkgMjIuNTAwOSAyMi41OTk3IDIyLjQxMDggMjIuNTY5N0MyMi4xODUyIDIyLjQ5NTMgMjEuOTgzNiAyMi41MzczIDIxLjc2ODggMjIuNzEwMUMyMS41MzM2IDIyLjkwMjEgMjEuMzA0NCAyMy4yNDI5IDIxLjE0IDIzLjcwMjVDMjAuODA1MiAyNC42NDA5IDIwLjg0IDI1Ljc3NzMgMjEuMjk5NiAyNi40Njg1QzIxLjM2NTIgMjYuNTY3IDIxLjQwMDMgMjYuNjgyNiAyMS40MDA0IDI2LjgwMDlIMjIuMzAwNEMyMy4wMTY1IDI2LjgwMDkgMjMuNzAzMiAyNy4wODU0IDI0LjIwOTYgMjcuNTkxN0MyNC43MTU5IDI4LjA5ODEgMjUuMDAwNCAyOC43ODQ4IDI1LjAwMDQgMjkuNTAwOVYyOS45MDI5QzI1LjQwMDcgMzAuMDQ0NSAyNS43MzgxIDMwLjMyMyAyNS45NTMgMzAuNjg5MkMyNi4xNjc4IDMxLjA1NTUgMjYuMjQ2MyAzMS40ODU5IDI2LjE3NDUgMzEuOTA0NEMyNi4xMDI3IDMyLjMyMjkgMjUuODg1MiAzMi43MDI1IDI1LjU2MDYgMzIuOTc2MkMyNS4yMzU5IDMzLjI0OTkgMjQuODI1IDMzLjQgMjQuNDAwNCAzMy40QzIzLjk3NTggMzMuNCAyMy41NjQ4IDMzLjI0OTkgMjMuMjQwMiAzMi45NzYyQzIyLjkxNTYgMzIuNzAyNSAyMi42OTgxIDMyLjMyMjkgMjIuNjI2MyAzMS45MDQ0QzIyLjU1NDUgMzEuNDg1OSAyMi42MzMgMzEuMDU1NSAyMi44NDc4IDMwLjY4OTJDMjMuMDYyNyAzMC4zMjMgMjMuNDAwMSAzMC4wNDQ1IDIzLjgwMDQgMjkuOTAyOVYyOS41MDA5QzIzLjgwMDQgMjguNjcyOSAyMy4xMjg0IDI4LjAwMDkgMjIuMzAwNCAyOC4wMDA5SDIwLjIwMDRDMjAuMTI4NyAyOC4wMDA4IDIwLjA1NzUgMjcuOTg3OCAxOS45OTA0IDI3Ljk2MjVMMTkuOTg2OCAyNy45Njk3QzE5Ljc0OTIgMjguNDQzNyAxOS42MDA0IDI5LjIzMDkgMTkuNjAwNCAzMC40MDA5QzE5LjYwMDQgMzEuNDMxNyAxOS45Nzg0IDMyLjAxMjUgMjAuMzY2IDMyLjM0NDlDMjAuNzgyNCAzMi43MDI1IDIxLjI0NDQgMzIuODAwOSAyMS40MDA0IDMyLjgwMDlDMjEuNTU5NSAzMi44MDA5IDIxLjcxMjEgMzIuODY0MSAyMS44MjQ3IDMyLjk3NjdDMjEuOTM3MiAzMy4wODkyIDIyLjAwMDQgMzMuMjQxOCAyMi4wMDA0IDMzLjQwMDlDMjIuMDAwNCAzMy44NDI1IDIyLjI0MDQgMzQuNjE0MSAyMi43Njg0IDM1LjI3NjVDMjMuMjgzMiAzNS45MTg1IDI0LjAyMzYgMzYuNDAwOSAyNS4wMDA0IDM2LjQwMDlDMjUuNjcyNCAzNi40MDA5IDI2LjI3NDggMzYuMDI1MyAyNi43NDA0IDM1LjUzNjlDMjYuOTY5NiAzNS4yOTY5IDI3LjE0ODQgMzUuMDQ4NSAyNy4yNjQ4IDM0Ljg0NDVDMjcuMzE3OCAzNC43NTQxIDI3LjM2MzEgMzQuNjU5MyAyNy40MDA0IDM0LjU2MTNWMjUuMDAwOUgyNi4wOTg0QzI1Ljk1NjkgMjUuNDAxMiAyNS42NzgzIDI1LjczODcgMjUuMzEyMSAyNS45NTM1QzI0Ljk0NTkgMjYuMTY4MyAyNC41MTU0IDI2LjI0NjggMjQuMDk3IDI2LjE3NUMyMy42Nzg1IDI2LjEwMzIgMjMuMjk4OCAyNS44ODU4IDIzLjAyNTEgMjUuNTYxMUMyMi43NTE0IDI1LjIzNjUgMjIuNjAxMyAyNC44MjU1IDIyLjYwMTMgMjQuNDAwOUMyMi42MDEzIDIzLjk3NjMgMjIuNzUxNCAyMy41NjU0IDIzLjAyNTEgMjMuMjQwN0MyMy4yOTg4IDIyLjkxNjEgMjMuNjc4NSAyMi42OTg2IDI0LjA5NyAyMi42MjY4QzI0LjUxNTQgMjIuNTU1IDI0Ljk0NTkgMjIuNjMzNSAyNS4zMTIxIDIyLjg0ODNDMjUuNjc4MyAyMy4wNjMyIDI1Ljk1NjkgMjMuNDAwNiAyNi4wOTg0IDIzLjgwMDlIMjcuNDAwNFYyMS40MDA5Wk0yOC42MDA0IDMzLjM5OTdWMzQuNTYwMUMyOC42Mzc3IDM0LjY1ODEgMjguNjgzIDM0Ljc1MjggMjguNzM2IDM0Ljg0MzNDMjguODUzNiAzNS4wNDczIDI5LjAzMTIgMzUuMjk1NyAyOS4yNTkyIDM1LjUzNTdDMjkuNzI2IDM2LjAyNDEgMzAuMzI5NiAzNi4zOTk3IDMxLjAwMDQgMzYuMzk5N0MzMS45NzcyIDM2LjM5OTcgMzIuNzE3NiAzNS45MTczIDMzLjIzMjQgMzUuMjc1M0MzMy43NjA0IDM0LjYxMjkgMzQuMDAwNCAzMy44NDEzIDM0LjAwMDQgMzMuMzk5N0MzNC4wMDA0IDMzLjI0MDYgMzQuMDYzNiAzMy4wODggMzQuMTc2MSAzMi45NzU1QzM0LjI4ODYgMzIuODYyOSAzNC40NDEzIDMyLjc5OTcgMzQuNjAwNCAzMi43OTk3QzM0Ljc1NjQgMzIuNzk5NyAzNS4yMTg0IDMyLjcwMTMgMzUuNjM0OCAzMi4zNDM3QzM2LjAyMjQgMzIuMDExMyAzNi40MDA0IDMxLjQzMDUgMzYuNDAwNCAzMC4zOTk3QzM2LjQwMDQgMjkuMjI5NyAzNi4yNTA0IDI4LjQ0MzcgMzYuMDE0IDI3Ljk2ODVDMzUuOTM0OSAyNy43OTE2IDM1LjgxMDggMjcuNjM4NSAzNS42NTQgMjcuNTI0NUMzNS41MTg5IDI3LjQzODEgMzUuMzYwNiAyNy4zOTUgMzUuMjAwNCAyNy40MDA5QzM1LjA5MTkgMjcuNDAwOSAzNC45ODU0IDI3LjM3MTQgMzQuODkyMyAyNy4zMTU2QzM0Ljc5OTIgMjcuMjU5OCAzNC43MjMgMjcuMTc5OCAzNC42NzE3IDI3LjA4NDFDMzQuNjIwNSAyNi45ODg0IDM0LjU5NjIgMjYuODgwNyAzNC42MDE0IDI2Ljc3MjNDMzQuNjA2NiAyNi42NjM4IDM0LjY0MTEgMjYuNTU4OSAzNC43MDEyIDI2LjQ2ODVDMzUuMTYyIDI1Ljc3NzMgMzUuMTk1NiAyNC42NDA5IDM0Ljg2MDggMjMuNzAyNUMzNC42OTY0IDIzLjI0MjkgMzQuNDY3MiAyMi45MDA5IDM0LjIzMiAyMi43MTAxQzM0LjAxNzIgMjIuNTM3MyAzMy44MTU2IDIyLjQ5NDEgMzMuNTkgMjIuNTY5N0MzMy40OTk4IDIyLjU5OTcgMzMuNDAzOCAyMi42MDc5IDMzLjMwOTkgMjIuNTkzNkMzMy4yMTYgMjIuNTc5MyAzMy4xMjY4IDIyLjU0MjggMzMuMDQ5NyAyMi40ODczQzMyLjk3MjYgMjIuNDMxOCAzMi45MDk4IDIyLjM1ODcgMzIuODY2NCAyMi4yNzQxQzMyLjgyMzEgMjIuMTg5NiAzMi44MDA1IDIyLjA5NTkgMzIuODAwNCAyMi4wMDA5QzMyLjgwMDQgMjEuMzE5MyAzMi40NjQ0IDIwLjczMjUgMzEuOTA2NCAyMC4yOTkzQzMxLjI5OSAxOS44NDM4IDMwLjU1OTYgMTkuNTk4NiAyOS44MDA0IDE5LjYwMDlDMjkuNTY1NiAxOS41ODk4IDI5LjMzNTYgMTkuNjY5OCAyOS4xNTg0IDE5LjgyNDFDMjguOTg4OSAxOS45ODc0IDI4Ljg2MTMgMjAuMTg5MSAyOC43ODY0IDIwLjQxMjFDMjguNjcyMSAyMC43MjU2IDI4LjYwOTMgMjEuMDU1NCAyOC42MDA0IDIxLjM4ODlWMzIuMjAwOUgyOS41MDA0QzMwLjMyODQgMzIuMjAwOSAzMS4wMDA0IDMxLjUyODkgMzEuMDAwNCAzMC43MDA5VjI4LjQ5ODlDMzAuNjAwMSAyOC4zNTc0IDMwLjI2MjcgMjguMDc4OSAzMC4wNDc4IDI3LjcxMjZDMjkuODMzIDI3LjM0NjQgMjkuNzU0NSAyNi45MTYgMjkuODI2MyAyNi40OTc1QzI5Ljg5ODEgMjYuMDc5IDMwLjExNTYgMjUuNjk5MyAzMC40NDAyIDI1LjQyNTdDMzAuNzY0OCAyNS4xNTIgMzEuMTc1OCAyNS4wMDE5IDMxLjYwMDQgMjUuMDAxOUMzMi4wMjUgMjUuMDAxOSAzMi40MzU5IDI1LjE1MiAzMi43NjA2IDI1LjQyNTdDMzMuMDg1MiAyNS42OTkzIDMzLjMwMjcgMjYuMDc5IDMzLjM3NDUgMjYuNDk3NUMzMy40NDYzIDI2LjkxNiAzMy4zNjc4IDI3LjM0NjQgMzMuMTUzIDI3LjcxMjZDMzIuOTM4MSAyOC4wNzg5IDMyLjYwMDcgMjguMzU3NCAzMi4yMDA0IDI4LjQ5ODlWMzAuNzAwOUMzMi4yMDA0IDMxLjQxNyAzMS45MTU5IDMyLjEwMzggMzEuNDA5NiAzMi42MTAxQzMwLjkwMzIgMzMuMTE2NSAzMC4yMTY1IDMzLjQwMDkgMjkuNTAwNCAzMy40MDA5SDI4LjYwMDRWMzMuMzk5N1pNMjMuODAwNCAyNC40MDA5QzIzLjgwMDQgMjQuNTYwMSAyMy44NjM2IDI0LjcxMjcgMjMuOTc2MSAyNC44MjUyQzI0LjA4ODYgMjQuOTM3NyAyNC4yNDEzIDI1LjAwMDkgMjQuNDAwNCAyNS4wMDA5QzI0LjU1OTUgMjUuMDAwOSAyNC43MTIxIDI0LjkzNzcgMjQuODI0NyAyNC44MjUyQzI0LjkzNzIgMjQuNzEyNyAyNS4wMDA0IDI0LjU2MDEgMjUuMDAwNCAyNC40MDA5QzI1LjAwMDQgMjQuMjQxOCAyNC45MzcyIDI0LjA4OTIgMjQuODI0NyAyMy45NzY3QzI0LjcxMjEgMjMuODY0MSAyNC41NTk1IDIzLjgwMDkgMjQuNDAwNCAyMy44MDA5QzI0LjI0MTMgMjMuODAwOSAyNC4wODg2IDIzLjg2NDEgMjMuOTc2MSAyMy45NzY3QzIzLjg2MzYgMjQuMDg5MiAyMy44MDA0IDI0LjI0MTggMjMuODAwNCAyNC40MDA5Wk0zMS42MDA0IDI3LjQwMDlDMzEuNzU5NSAyNy40MDA5IDMxLjkxMjEgMjcuMzM3NyAzMi4wMjQ3IDI3LjIyNTJDMzIuMTM3MiAyNy4xMTI3IDMyLjIwMDQgMjYuOTYwMSAzMi4yMDA0IDI2LjgwMDlDMzIuMjAwNCAyNi42NDE4IDMyLjEzNzIgMjYuNDg5MiAzMi4wMjQ3IDI2LjM3NjdDMzEuOTEyMSAyNi4yNjQxIDMxLjc1OTUgMjYuMjAwOSAzMS42MDA0IDI2LjIwMDlDMzEuNDQxMyAyNi4yMDA5IDMxLjI4ODYgMjYuMjY0MSAzMS4xNzYxIDI2LjM3NjdDMzEuMDYzNiAyNi40ODkyIDMxLjAwMDQgMjYuNjQxOCAzMS4wMDA0IDI2LjgwMDlDMzEuMDAwNCAyNi45NjAxIDMxLjA2MzYgMjcuMTEyNyAzMS4xNzYxIDI3LjIyNTJDMzEuMjg4NiAyNy4zMzc3IDMxLjQ0MTMgMjcuNDAwOSAzMS42MDA0IDI3LjQwMDlaTTI0LjQwMDQgMzEuMDAwOUMyNC4yNDEzIDMxLjAwMDkgMjQuMDg4NiAzMS4wNjQxIDIzLjk3NjEgMzEuMTc2N0MyMy44NjM2IDMxLjI4OTIgMjMuODAwNCAzMS40NDE4IDIzLjgwMDQgMzEuNjAwOUMyMy44MDA0IDMxLjc2MDEgMjMuODYzNiAzMS45MTI3IDIzLjk3NjEgMzIuMDI1MkMyNC4wODg2IDMyLjEzNzcgMjQuMjQxMyAzMi4yMDA5IDI0LjQwMDQgMzIuMjAwOUMyNC41NTk1IDMyLjIwMDkgMjQuNzEyMSAzMi4xMzc3IDI0LjgyNDcgMzIuMDI1MkMyNC45MzcyIDMxLjkxMjcgMjUuMDAwNCAzMS43NjAxIDI1LjAwMDQgMzEuNjAwOUMyNS4wMDA0IDMxLjQ0MTggMjQuOTM3MiAzMS4yODkyIDI0LjgyNDcgMzEuMTc2N0MyNC43MTIxIDMxLjA2NDEgMjQuNTU5NSAzMS4wMDA5IDI0LjQwMDQgMzEuMDAwOVpcIiBmaWxsPVwiIzAzOTg1NVwiLz48cmVjdCB4PVwiNFwiIHk9XCI0XCIgd2lkdGg9XCI0OFwiIGhlaWdodD1cIjQ4XCIgcng9XCIyNFwiIHN0cm9rZT1cIiNFQ0ZERjNcIiBzdHJva2Utd2lkdGg9XCI4XCIvPjwvc3ZnPmAsXHJcbiAgICAgICAgICB0aXRsZTogYFJ1biBBSSBvbiBpbWFnZSB1cGxvYWRlZGAsXHJcbiAgICAgICAgICBjb250ZW50OiBgVXNlIHRoZSBwb3dlciBvZiBBSSB0byBjb21wYXJlIGFuZCBkZXRlY3QgYW5vbWFsaWVzIGJldHdlZW4gdXBsb2FkZWQgYW5kIHJlZmVyZW5jZSBpbWFnZS5gLFxyXG4gICAgICAgICAgaW5wdXRsYWJlbDE6ICdRdWVzdGlvbicsXHJcbiAgICAgICAgICBpbnB1dHR5cGUxOiAndGV4dCcsXHJcbiAgICAgICAgICBpbnB1dDE6ICd0cnVlJyxcclxuICAgICAgICAgIGlucHV0bGFiZWwyOiAnU3BlY2lmeSB5b3VyIHJlcXVlc3QnLFxyXG4gICAgICAgICAgaW5wdXR0eXBlMjogJ3RleHQnLFxyXG4gICAgICAgICAgcmVzVHlwZTogJ2N1c3RvbScsXHJcbiAgICAgICAgICBpbnB1dDI6ICd0cnVlJyxcclxuICAgICAgICAgIHBsYWNlaG9sZGVyMTogcXVlc3Rpb24sXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjI6ICdQbGVhc2UgY29tcGFyZSB0aGUgdXBsb2FkZWQgaW1hZ2VzIGEuLicsXHJcbiAgICAgICAgICBidXR0b250eXBlOiAnUmVxdWVzdCdcclxuICAgICAgICB9XHJcbiAgICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcyAmJiByZXMuc3RhdHVzID09ICdjb25maXJtJykge1xyXG4gICAgICAgICAgICBsZXQgcmVxOiBhbnkgPSB7XHJcbiAgICAgICAgICAgICAgY2hlY2tsaXN0TmFtZTogdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnY2hlY2tsaXN0TmFtZScpPy52YWx1ZSxcclxuICAgICAgICAgICAgICBxdWVzdGlvbk5hbWU6IHF1ZXN0aW9uLFxyXG4gICAgICAgICAgICAgIHJ1bkFJRGVzY3JpcHRpb246IHJlcy5kYXRhLnJlcXVlc3RUZXh0LFxyXG4gICAgICAgICAgICAgIGFuc3dlclR5cGU6IFwiaW1hZ2VcIixcclxuICAgICAgICAgICAgICByZWZlcmVuY2VJbWFnZTogdGhpcy5nZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc0lkeCwgcUlkeCwgJ3JlZmVyZW5jZUltYWdlJyxhbnNJZHgpPy52YWx1ZSB8fCAnJyxcclxuICAgICAgICAgICAgICBjbGllbnRJZDp0aGlzLmNsaWVudElkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5zb3BTZXJ2aWNlLnJ1bkFJSW5zZXJ0KHJlcSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXRhY2gpKS5zdWJzY3JpYmUoKGFwaXJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKGFwaXJlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFwaXJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUknLGFuc0lkeCk/LnBhdGNoVmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUknLGFuc0lkeCk/LnBhdGNoVmFsdWUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUlEZXNjcmlwdGlvbicsYW5zSWR4KT8ucGF0Y2hWYWx1ZShyZXMuZGF0YS5yZXF1ZXN0VGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3dhbFRvYXN0KFxyXG4gICAgICAgICAgICAgICAgICAgIGA8c3BhbiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDM2cHg7XCI+JHthcGlyZXMuZGF0YS5tZXNzYWdlfTwvc3Bhbj5gLFxyXG4gICAgICAgICAgICAgICAgICAgIGA8aW1nIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9JY29ucy9zb3AtcnVuYWktdG9zdGljb24uc3ZnXCIgLz5gXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgIC8vIDxhIFxyXG4gICAgICAgICAgICAgICAgICAvLyAgICAgICBocmVmPVwiL3N1cHBvcnQvdmlldy10aWNrZXRzXCIgXHJcbiAgICAgICAgICAgICAgICAgIC8vICAgICAgIHRhcmdldD1cIl9ibGFua1wiIFxyXG4gICAgICAgICAgICAgICAgICAvLyAgICAgICBzdHlsZT1cImNvbG9yOiB2YXIoLS1wcmltYXJ5LTcwMCwgIzAwOUJGMyk7Zm9udC1mYW1pbHk6IFJvYm90bztmb250LXNpemU6IDE1cHg7Zm9udC13ZWlnaHQ6IDcwMDt0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtjdXJzb3I6IHBvaW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgVmlldyBUaWNrZXRcclxuICAgICAgICAgICAgICAgICAgLy8gICA8L2E+XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnJ1bkFJT2ZmKHNJZHgsIHFJZHgsdHJ1ZSxhbnNJZHgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJ1bkFJT2ZmKHNJZHgsIHFJZHgsdHJ1ZSxhbnNJZHgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ydW5BSU9mZihzSWR4LCBxSWR4LHRydWUsYW5zSWR4KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnJ1bkFJT2ZmKHNJZHgsIHFJZHgsZmFsc2UsYW5zSWR4KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihUcmF4cG9wdXBDb21wb25lbnQse2NlbnRlcmVkOiB0cnVlLCBzaXplOiAnbWQnfSk7XHJcbiAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5kYXRhID0ge1xyXG4gICAgICAgIGltYWdlc3JjOiBgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI1NlwiIGhlaWdodD1cIjU2XCIgdmlld0JveD1cIjAgMCA1NiA1NlwiIGZpbGw9XCJub25lXCI+PHJlY3QgeD1cIjRcIiB5PVwiNFwiIHdpZHRoPVwiNDhcIiBoZWlnaHQ9XCI0OFwiIHJ4PVwiMjRcIiBmaWxsPVwiI0QxRkFERlwiLz48cGF0aCBkPVwiTTIzLjM1NjQgMTkuMzUyNUMyNC4xNzQ4IDE4LjczMjcgMjUuMTczOCAxOC4zOTg1IDI2LjIwMDQgMTguNDAwOUMyNi41NTQ5IDE4LjM5MyAyNi45MDU3IDE4LjQ3NDYgMjcuMjIwNCAxOC42MzgyQzI3LjUzNSAxOC44MDE4IDI3LjgwMzMgMTkuMDQyMSAyOC4wMDA0IDE5LjMzNjlDMjguMTk3NSAxOS4wNDIxIDI4LjQ2NTggMTguODAxOCAyOC43ODA0IDE4LjYzODJDMjkuMDk1IDE4LjQ3NDYgMjkuNDQ1OSAxOC4zOTMgMjkuODAwNCAxOC40MDA5QzMwLjgyNyAxOC4zOTg1IDMxLjgyNiAxOC43MzI3IDMyLjY0NDQgMTkuMzUyNUMzMy4yNzQ0IDE5Ljg0MjEgMzMuNzYwNCAyMC41MjAxIDMzLjkzMiAyMS4zMzk3QzM0LjMyNTYgMjEuMzY5NyAzNC42ODU2IDIxLjUzMjkgMzQuOTg4IDIxLjc3ODlDMzUuNDQ2NCAyMi4xNTA5IDM1Ljc4IDIyLjcwODkgMzUuOTkgMjMuMjk5M0MzNi4zMTg4IDI0LjIxNzMgMzYuNDA3NiAyNS4zODczIDM2LjA2NjggMjYuMzgzM0MzNi4xNTMyIDI2LjQyNDEgMzYuMjM4NCAyNi40NzIxIDM2LjMyMTIgMjYuNTI3M0MzNi42NTEyIDI2Ljc0NjkgMzYuOTAyIDI3LjA2MTMgMzcuMDg2OCAyNy40MzIxQzM3LjQ1MDQgMjguMTU4MSAzNy42MDA0IDI5LjE3MDkgMzcuNjAwNCAzMC40MDA5QzM3LjYwMDQgMzEuNzcwMSAzNy4wNzg0IDMyLjY4OTMgMzYuNDE2IDMzLjI1NjlDMzYuMDQ5NyAzMy41NzEgMzUuNjE3NCAzMy43OTg2IDM1LjE1MTIgMzMuOTIyOUMzNS4wMzEyIDM0LjU5MjUgMzQuNjk1MiAzNS4zNjc3IDM0LjE2ODQgMzYuMDI1M0MzMy40ODQ0IDM2Ljg4MzMgMzIuNDIzNiAzNy42MDA5IDMxLjAwMDQgMzcuNjAwOUMyOS44NzI0IDM3LjYwMDkgMjguOTc0OCAzNi45NzY5IDI4LjM5MTYgMzYuMzY0OUMyOC4yNTIyIDM2LjIxODggMjguMTIxNSAzNi4wNjQ1IDI4LjAwMDQgMzUuOTAyOUMyNy44NzkzIDM2LjA2NDUgMjcuNzQ4NiAzNi4yMTg4IDI3LjYwOTIgMzYuMzY0OUMyNy4wMjYgMzYuOTc2OSAyNi4xMjk2IDM3LjYwMDkgMjUuMDAwNCAzNy42MDA5QzIzLjU3NzIgMzcuNjAwOSAyMi41MTc2IDM2Ljg4MzMgMjEuODMyNCAzNi4wMjUzQzIxLjM0MDEgMzUuNDE0IDIxLjAwMjkgMzQuNjkyNyAyMC44NDk2IDMzLjkyMjlDMjAuMzgzNCAzMy43OTg2IDE5Ljk1MTEgMzMuNTcxIDE5LjU4NDggMzMuMjU2OUMxOC45MjI0IDMyLjY4OTMgMTguNDAwNCAzMS43Njg5IDE4LjQwMDQgMzAuNDAwOUMxOC40MDA0IDI5LjE3MDkgMTguNTUxNiAyOC4xNTY5IDE4LjkxNCAyNy40MzIxQzE5LjA4NTcgMjcuMDY4NSAxOS4zNDk3IDI2Ljc1NjEgMTkuNjc5NiAyNi41MjYxQzE5Ljc2MDYgMjYuNDcyNSAxOS44NDU3IDI2LjQyNTEgMTkuOTM0IDI2LjM4NDVDMTkuNTkzMiAyNS4zODYxIDE5LjY4MiAyNC4yMTczIDIwLjAxMDggMjMuMjk5M0MyMC4yMjA4IDIyLjcwODkgMjAuNTU0NCAyMi4xNTA5IDIxLjAxMjggMjEuNzc4OUMyMS4zMTUyIDIxLjUzMjkgMjEuNjc1MiAyMS4zNzA5IDIyLjA2ODggMjEuMzM5N0MyMi4yNDE2IDIwLjUyMDEgMjIuNzI2NCAxOS44NDIxIDIzLjM1NjQgMTkuMzUyNVpNMjcuNDAwNCAyMS40MDA5VjIxLjM4ODlMMjcuMzk4IDIxLjMyODlDMjcuMzgwMyAyMS4wMTYxIDI3LjMxODEgMjAuNzA3NCAyNy4yMTMyIDIwLjQxMjFDMjcuMTM4NSAyMC4xODkyIDI3LjAxMTMgMTkuOTg3NiAyNi44NDI0IDE5LjgyNDFDMjYuNjY1MSAxOS42Njk4IDI2LjQzNTIgMTkuNTg5OCAyNi4yMDA0IDE5LjYwMDlDMjUuNDQwNyAxOS41OTgzIDI0LjcwMDkgMTkuODQzNSAyNC4wOTMyIDIwLjI5OTNDMjMuNTM2NCAyMC43MzI1IDIzLjIwMDQgMjEuMzE5MyAyMy4yMDA0IDIyLjAwMDlDMjMuMjAwMyAyMi4wOTU5IDIzLjE3NzcgMjIuMTg5NiAyMy4xMzQzIDIyLjI3NDFDMjMuMDkxIDIyLjM1ODcgMjMuMDI4MiAyMi40MzE4IDIyLjk1MTEgMjIuNDg3M0MyMi44NzQgMjIuNTQyOCAyMi43ODQ4IDIyLjU3OTMgMjIuNjkwOSAyMi41OTM2QzIyLjU5NjkgMjIuNjA3OSAyMi41MDA5IDIyLjU5OTcgMjIuNDEwOCAyMi41Njk3QzIyLjE4NTIgMjIuNDk1MyAyMS45ODM2IDIyLjUzNzMgMjEuNzY4OCAyMi43MTAxQzIxLjUzMzYgMjIuOTAyMSAyMS4zMDQ0IDIzLjI0MjkgMjEuMTQgMjMuNzAyNUMyMC44MDUyIDI0LjY0MDkgMjAuODQgMjUuNzc3MyAyMS4yOTk2IDI2LjQ2ODVDMjEuMzY1MiAyNi41NjcgMjEuNDAwMyAyNi42ODI2IDIxLjQwMDQgMjYuODAwOUgyMi4zMDA0QzIzLjAxNjUgMjYuODAwOSAyMy43MDMyIDI3LjA4NTQgMjQuMjA5NiAyNy41OTE3QzI0LjcxNTkgMjguMDk4MSAyNS4wMDA0IDI4Ljc4NDggMjUuMDAwNCAyOS41MDA5VjI5LjkwMjlDMjUuNDAwNyAzMC4wNDQ1IDI1LjczODEgMzAuMzIzIDI1Ljk1MyAzMC42ODkyQzI2LjE2NzggMzEuMDU1NSAyNi4yNDYzIDMxLjQ4NTkgMjYuMTc0NSAzMS45MDQ0QzI2LjEwMjcgMzIuMzIyOSAyNS44ODUyIDMyLjcwMjUgMjUuNTYwNiAzMi45NzYyQzI1LjIzNTkgMzMuMjQ5OSAyNC44MjUgMzMuNCAyNC40MDA0IDMzLjRDMjMuOTc1OCAzMy40IDIzLjU2NDggMzMuMjQ5OSAyMy4yNDAyIDMyLjk3NjJDMjIuOTE1NiAzMi43MDI1IDIyLjY5ODEgMzIuMzIyOSAyMi42MjYzIDMxLjkwNDRDMjIuNTU0NSAzMS40ODU5IDIyLjYzMyAzMS4wNTU1IDIyLjg0NzggMzAuNjg5MkMyMy4wNjI3IDMwLjMyMyAyMy40MDAxIDMwLjA0NDUgMjMuODAwNCAyOS45MDI5VjI5LjUwMDlDMjMuODAwNCAyOC42NzI5IDIzLjEyODQgMjguMDAwOSAyMi4zMDA0IDI4LjAwMDlIMjAuMjAwNEMyMC4xMjg3IDI4LjAwMDggMjAuMDU3NSAyNy45ODc4IDE5Ljk5MDQgMjcuOTYyNUwxOS45ODY4IDI3Ljk2OTdDMTkuNzQ5MiAyOC40NDM3IDE5LjYwMDQgMjkuMjMwOSAxOS42MDA0IDMwLjQwMDlDMTkuNjAwNCAzMS40MzE3IDE5Ljk3ODQgMzIuMDEyNSAyMC4zNjYgMzIuMzQ0OUMyMC43ODI0IDMyLjcwMjUgMjEuMjQ0NCAzMi44MDA5IDIxLjQwMDQgMzIuODAwOUMyMS41NTk1IDMyLjgwMDkgMjEuNzEyMSAzMi44NjQxIDIxLjgyNDcgMzIuOTc2N0MyMS45MzcyIDMzLjA4OTIgMjIuMDAwNCAzMy4yNDE4IDIyLjAwMDQgMzMuNDAwOUMyMi4wMDA0IDMzLjg0MjUgMjIuMjQwNCAzNC42MTQxIDIyLjc2ODQgMzUuMjc2NUMyMy4yODMyIDM1LjkxODUgMjQuMDIzNiAzNi40MDA5IDI1LjAwMDQgMzYuNDAwOUMyNS42NzI0IDM2LjQwMDkgMjYuMjc0OCAzNi4wMjUzIDI2Ljc0MDQgMzUuNTM2OUMyNi45Njk2IDM1LjI5NjkgMjcuMTQ4NCAzNS4wNDg1IDI3LjI2NDggMzQuODQ0NUMyNy4zMTc4IDM0Ljc1NDEgMjcuMzYzMSAzNC42NTkzIDI3LjQwMDQgMzQuNTYxM1YyNS4wMDA5SDI2LjA5ODRDMjUuOTU2OSAyNS40MDEyIDI1LjY3ODMgMjUuNzM4NyAyNS4zMTIxIDI1Ljk1MzVDMjQuOTQ1OSAyNi4xNjgzIDI0LjUxNTQgMjYuMjQ2OCAyNC4wOTcgMjYuMTc1QzIzLjY3ODUgMjYuMTAzMiAyMy4yOTg4IDI1Ljg4NTggMjMuMDI1MSAyNS41NjExQzIyLjc1MTQgMjUuMjM2NSAyMi42MDEzIDI0LjgyNTUgMjIuNjAxMyAyNC40MDA5QzIyLjYwMTMgMjMuOTc2MyAyMi43NTE0IDIzLjU2NTQgMjMuMDI1MSAyMy4yNDA3QzIzLjI5ODggMjIuOTE2MSAyMy42Nzg1IDIyLjY5ODYgMjQuMDk3IDIyLjYyNjhDMjQuNTE1NCAyMi41NTUgMjQuOTQ1OSAyMi42MzM1IDI1LjMxMjEgMjIuODQ4M0MyNS42NzgzIDIzLjA2MzIgMjUuOTU2OSAyMy40MDA2IDI2LjA5ODQgMjMuODAwOUgyNy40MDA0VjIxLjQwMDlaTTI4LjYwMDQgMzMuMzk5N1YzNC41NjAxQzI4LjYzNzcgMzQuNjU4MSAyOC42ODMgMzQuNzUyOCAyOC43MzYgMzQuODQzM0MyOC44NTM2IDM1LjA0NzMgMjkuMDMxMiAzNS4yOTU3IDI5LjI1OTIgMzUuNTM1N0MyOS43MjYgMzYuMDI0MSAzMC4zMjk2IDM2LjM5OTcgMzEuMDAwNCAzNi4zOTk3QzMxLjk3NzIgMzYuMzk5NyAzMi43MTc2IDM1LjkxNzMgMzMuMjMyNCAzNS4yNzUzQzMzLjc2MDQgMzQuNjEyOSAzNC4wMDA0IDMzLjg0MTMgMzQuMDAwNCAzMy4zOTk3QzM0LjAwMDQgMzMuMjQwNiAzNC4wNjM2IDMzLjA4OCAzNC4xNzYxIDMyLjk3NTVDMzQuMjg4NiAzMi44NjI5IDM0LjQ0MTMgMzIuNzk5NyAzNC42MDA0IDMyLjc5OTdDMzQuNzU2NCAzMi43OTk3IDM1LjIxODQgMzIuNzAxMyAzNS42MzQ4IDMyLjM0MzdDMzYuMDIyNCAzMi4wMTEzIDM2LjQwMDQgMzEuNDMwNSAzNi40MDA0IDMwLjM5OTdDMzYuNDAwNCAyOS4yMjk3IDM2LjI1MDQgMjguNDQzNyAzNi4wMTQgMjcuOTY4NUMzNS45MzQ5IDI3Ljc5MTYgMzUuODEwOCAyNy42Mzg1IDM1LjY1NCAyNy41MjQ1QzM1LjUxODkgMjcuNDM4MSAzNS4zNjA2IDI3LjM5NSAzNS4yMDA0IDI3LjQwMDlDMzUuMDkxOSAyNy40MDA5IDM0Ljk4NTQgMjcuMzcxNCAzNC44OTIzIDI3LjMxNTZDMzQuNzk5MiAyNy4yNTk4IDM0LjcyMyAyNy4xNzk4IDM0LjY3MTcgMjcuMDg0MUMzNC42MjA1IDI2Ljk4ODQgMzQuNTk2MiAyNi44ODA3IDM0LjYwMTQgMjYuNzcyM0MzNC42MDY2IDI2LjY2MzggMzQuNjQxMSAyNi41NTg5IDM0LjcwMTIgMjYuNDY4NUMzNS4xNjIgMjUuNzc3MyAzNS4xOTU2IDI0LjY0MDkgMzQuODYwOCAyMy43MDI1QzM0LjY5NjQgMjMuMjQyOSAzNC40NjcyIDIyLjkwMDkgMzQuMjMyIDIyLjcxMDFDMzQuMDE3MiAyMi41MzczIDMzLjgxNTYgMjIuNDk0MSAzMy41OSAyMi41Njk3QzMzLjQ5OTggMjIuNTk5NyAzMy40MDM4IDIyLjYwNzkgMzMuMzA5OSAyMi41OTM2QzMzLjIxNiAyMi41NzkzIDMzLjEyNjggMjIuNTQyOCAzMy4wNDk3IDIyLjQ4NzNDMzIuOTcyNiAyMi40MzE4IDMyLjkwOTggMjIuMzU4NyAzMi44NjY0IDIyLjI3NDFDMzIuODIzMSAyMi4xODk2IDMyLjgwMDUgMjIuMDk1OSAzMi44MDA0IDIyLjAwMDlDMzIuODAwNCAyMS4zMTkzIDMyLjQ2NDQgMjAuNzMyNSAzMS45MDY0IDIwLjI5OTNDMzEuMjk5IDE5Ljg0MzggMzAuNTU5NiAxOS41OTg2IDI5LjgwMDQgMTkuNjAwOUMyOS41NjU2IDE5LjU4OTggMjkuMzM1NiAxOS42Njk4IDI5LjE1ODQgMTkuODI0MUMyOC45ODg5IDE5Ljk4NzQgMjguODYxMyAyMC4xODkxIDI4Ljc4NjQgMjAuNDEyMUMyOC42NzIxIDIwLjcyNTYgMjguNjA5MyAyMS4wNTU0IDI4LjYwMDQgMjEuMzg4OVYzMi4yMDA5SDI5LjUwMDRDMzAuMzI4NCAzMi4yMDA5IDMxLjAwMDQgMzEuNTI4OSAzMS4wMDA0IDMwLjcwMDlWMjguNDk4OUMzMC42MDAxIDI4LjM1NzQgMzAuMjYyNyAyOC4wNzg5IDMwLjA0NzggMjcuNzEyNkMyOS44MzMgMjcuMzQ2NCAyOS43NTQ1IDI2LjkxNiAyOS44MjYzIDI2LjQ5NzVDMjkuODk4MSAyNi4wNzkgMzAuMTE1NiAyNS42OTkzIDMwLjQ0MDIgMjUuNDI1N0MzMC43NjQ4IDI1LjE1MiAzMS4xNzU4IDI1LjAwMTkgMzEuNjAwNCAyNS4wMDE5QzMyLjAyNSAyNS4wMDE5IDMyLjQzNTkgMjUuMTUyIDMyLjc2MDYgMjUuNDI1N0MzMy4wODUyIDI1LjY5OTMgMzMuMzAyNyAyNi4wNzkgMzMuMzc0NSAyNi40OTc1QzMzLjQ0NjMgMjYuOTE2IDMzLjM2NzggMjcuMzQ2NCAzMy4xNTMgMjcuNzEyNkMzMi45MzgxIDI4LjA3ODkgMzIuNjAwNyAyOC4zNTc0IDMyLjIwMDQgMjguNDk4OVYzMC43MDA5QzMyLjIwMDQgMzEuNDE3IDMxLjkxNTkgMzIuMTAzOCAzMS40MDk2IDMyLjYxMDFDMzAuOTAzMiAzMy4xMTY1IDMwLjIxNjUgMzMuNDAwOSAyOS41MDA0IDMzLjQwMDlIMjguNjAwNFYzMy4zOTk3Wk0yMy44MDA0IDI0LjQwMDlDMjMuODAwNCAyNC41NjAxIDIzLjg2MzYgMjQuNzEyNyAyMy45NzYxIDI0LjgyNTJDMjQuMDg4NiAyNC45Mzc3IDI0LjI0MTMgMjUuMDAwOSAyNC40MDA0IDI1LjAwMDlDMjQuNTU5NSAyNS4wMDA5IDI0LjcxMjEgMjQuOTM3NyAyNC44MjQ3IDI0LjgyNTJDMjQuOTM3MiAyNC43MTI3IDI1LjAwMDQgMjQuNTYwMSAyNS4wMDA0IDI0LjQwMDlDMjUuMDAwNCAyNC4yNDE4IDI0LjkzNzIgMjQuMDg5MiAyNC44MjQ3IDIzLjk3NjdDMjQuNzEyMSAyMy44NjQxIDI0LjU1OTUgMjMuODAwOSAyNC40MDA0IDIzLjgwMDlDMjQuMjQxMyAyMy44MDA5IDI0LjA4ODYgMjMuODY0MSAyMy45NzYxIDIzLjk3NjdDMjMuODYzNiAyNC4wODkyIDIzLjgwMDQgMjQuMjQxOCAyMy44MDA0IDI0LjQwMDlaTTMxLjYwMDQgMjcuNDAwOUMzMS43NTk1IDI3LjQwMDkgMzEuOTEyMSAyNy4zMzc3IDMyLjAyNDcgMjcuMjI1MkMzMi4xMzcyIDI3LjExMjcgMzIuMjAwNCAyNi45NjAxIDMyLjIwMDQgMjYuODAwOUMzMi4yMDA0IDI2LjY0MTggMzIuMTM3MiAyNi40ODkyIDMyLjAyNDcgMjYuMzc2N0MzMS45MTIxIDI2LjI2NDEgMzEuNzU5NSAyNi4yMDA5IDMxLjYwMDQgMjYuMjAwOUMzMS40NDEzIDI2LjIwMDkgMzEuMjg4NiAyNi4yNjQxIDMxLjE3NjEgMjYuMzc2N0MzMS4wNjM2IDI2LjQ4OTIgMzEuMDAwNCAyNi42NDE4IDMxLjAwMDQgMjYuODAwOUMzMS4wMDA0IDI2Ljk2MDEgMzEuMDYzNiAyNy4xMTI3IDMxLjE3NjEgMjcuMjI1MkMzMS4yODg2IDI3LjMzNzcgMzEuNDQxMyAyNy40MDA5IDMxLjYwMDQgMjcuNDAwOVpNMjQuNDAwNCAzMS4wMDA5QzI0LjI0MTMgMzEuMDAwOSAyNC4wODg2IDMxLjA2NDEgMjMuOTc2MSAzMS4xNzY3QzIzLjg2MzYgMzEuMjg5MiAyMy44MDA0IDMxLjQ0MTggMjMuODAwNCAzMS42MDA5QzIzLjgwMDQgMzEuNzYwMSAyMy44NjM2IDMxLjkxMjcgMjMuOTc2MSAzMi4wMjUyQzI0LjA4ODYgMzIuMTM3NyAyNC4yNDEzIDMyLjIwMDkgMjQuNDAwNCAzMi4yMDA5QzI0LjU1OTUgMzIuMjAwOSAyNC43MTIxIDMyLjEzNzcgMjQuODI0NyAzMi4wMjUyQzI0LjkzNzIgMzEuOTEyNyAyNS4wMDA0IDMxLjc2MDEgMjUuMDAwNCAzMS42MDA5QzI1LjAwMDQgMzEuNDQxOCAyNC45MzcyIDMxLjI4OTIgMjQuODI0NyAzMS4xNzY3QzI0LjcxMjEgMzEuMDY0MSAyNC41NTk1IDMxLjAwMDkgMjQuNDAwNCAzMS4wMDA5WlwiIGZpbGw9XCIjMDM5ODU1XCIvPjxyZWN0IHg9XCI0XCIgeT1cIjRcIiB3aWR0aD1cIjQ4XCIgaGVpZ2h0PVwiNDhcIiByeD1cIjI0XCIgc3Ryb2tlPVwiI0VDRkRGM1wiIHN0cm9rZS13aWR0aD1cIjhcIi8+PC9zdmc+YCxcclxuICAgICAgICB0aXRsZTogYERvbid0IHJ1biBBSSBvbiBpbWFnZSB1cGxvYWRlZGAsXHJcbiAgICAgICAgY29udGVudDogYERvIHlvdSB3aXNoIHRvIG5vdCBydW4gQUkgaW4gdGhlIGltYWdlP2AsXHJcbiAgICAgICAgYnV0dG9udHlwZTogJ2NvbmZpcm0nXHJcbiAgICAgIH1cclxuICAgICAgZGlhbG9nUmVmLnJlc3VsdC50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgIHRoaXMucnVuQUlPZmYoc0lkeCxxSWR4LGZhbHNlLGFuc0lkeCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKHNJZHgsIHFJZHgsICdydW5BSScpPy5wYXRjaFZhbHVlKHRydWUpO1xyXG4gICAgICAgICAgdGhpcy5nZXRRdWVzdGlvbkZvcm1Db250cm9sKHNJZHgsIHFJZHgsICdydW5BSScpPy5wYXRjaFZhbHVlKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBydW5BSU9mZihzSWR4OiBudW1iZXIsIHFJZHg6IG51bWJlciwgc2hvd0Vycm9yPzogYm9vbGVhbixhbnNJZHg6bnVtYmVyPS0xKSB7XHJcbiAgICBjb25zdCBhbnN3ZXJGb3JtR3JvdXAgPSB0aGlzLmdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUknLGFuc0lkeCk7XHJcbiAgICBpZiAoYW5zd2VyRm9ybUdyb3VwKSB7XHJcbiAgICAgIGFuc3dlckZvcm1Hcm91cC5wYXRjaFZhbHVlKGZhbHNlKTtcclxuICAgIH1cclxuICBcclxuICAgIGNvbnN0IHF1ZXN0aW9uQ29udHJvbCA9IHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUknLGFuc0lkeCk7XHJcbiAgICBpZiAocXVlc3Rpb25Db250cm9sKSB7XHJcbiAgICAgIHF1ZXN0aW9uQ29udHJvbC5wYXRjaFZhbHVlKGZhbHNlKTtcclxuICAgIH1cclxuICBcclxuICAgIC8vIGNvbnNvbGUubG9nKHF1ZXN0aW9uQ29udHJvbCk7XHJcbiAgICBcclxuICAgIGNvbnN0IGRlc2NyaXB0aW9uQ29udHJvbCA9IHRoaXMuZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChzSWR4LCBxSWR4LCAncnVuQUlEZXNjcmlwdGlvbicsYW5zSWR4KTtcclxuICAgIGlmIChkZXNjcmlwdGlvbkNvbnRyb2wpIHtcclxuICAgICAgZGVzY3JpcHRpb25Db250cm9sLnBhdGNoVmFsdWUoJycpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgaWYgKHNob3dFcnJvcikge1xyXG4gICAgICB0aGlzLnN3YWxUb2FzdCgnVW5hYmxlIHRvIHByb2Nlc3MgcnVuQUkgcmVxdWVzdCEgVHJ5IGFnYWluIGFmdGVyIHNvbWUgdGltZSEnLCdlcnJvcicpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuXHJcbiAgZ2V0U2VjdGlvbkZvcm1BcnJheSgpIHtcclxuICAgIHJldHVybiAodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybUNvbnRyb2woZm9ybUNvbnRyb2w6IHN0cmluZykge1xyXG4gICAgcmV0dXJuICh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KGZvcm1Db250cm9sKSBhcyBGb3JtQ29udHJvbCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWN0aW9uRm9ybUNvbnRyb2woc2VjdGlvbkluZGV4OiBudW1iZXIsIGZvcm1Db250cm9sTmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpXHJcbiAgICAgICAgLmF0KHNlY3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKVxyXG4gICAgICAuZ2V0KGZvcm1Db250cm9sTmFtZSk7XHJcbiAgfVxyXG5cclxuICBnZXRRdWVzdGlvbkZvcm1Db250cm9sKHNlY3Rpb25JbmRleDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsIGZvcm1Db250cm9sTmFtZTogc3RyaW5nLGFuc0lkeDpudW1iZXIgPSAtMSkge1xyXG4gICAgY29uc3Qgc2VjdGlvbnMgPSB0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSB8IG51bGw7XHJcbiAgICBpZiAoIXNlY3Rpb25zKSByZXR1cm4gbnVsbDtcclxuICBcclxuICAgIGNvbnN0IHNlY3Rpb24gPSBzZWN0aW9ucy5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCB8IG51bGw7XHJcbiAgICBpZiAoIXNlY3Rpb24pIHJldHVybiBudWxsO1xyXG4gIFxyXG4gICAgY29uc3QgcXVlc3Rpb25zID0gc2VjdGlvbi5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSB8IG51bGw7XHJcbiAgICBpZiAoIXF1ZXN0aW9ucykgcmV0dXJuIG51bGw7XHJcbiAgXHJcbiAgICBsZXQgcXVlc3Rpb24gPSBxdWVzdGlvbnMuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgIGlmICghcXVlc3Rpb24pIHJldHVybiBudWxsO1xyXG5cclxuICAgIGlmKGFuc0lkeCAhPSAtMSkge1xyXG4gICAgICBsZXQgYW5zd2VyTGlzdCA9IHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSB8IG51bGw7XHJcbiAgICAgIGlmKCFhbnN3ZXJMaXN0KSByZXR1cm4gbnVsbDtcclxuICAgICAgcXVlc3Rpb24gPSBhbnN3ZXJMaXN0LmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgICAgaWYoIXF1ZXN0aW9uKSByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICBcclxuICAgIGNvbnN0IGNvbnRyb2wgPSBxdWVzdGlvbi5nZXQoZm9ybUNvbnRyb2xOYW1lKSBhcyBGb3JtQ29udHJvbCB8IG51bGw7XHJcbiAgICByZXR1cm4gY29udHJvbDtcclxuICB9XHJcbiAgXHJcblxyXG4gIGdldEZvcm1BcnJheVF1ZXN0aW9ucyhzZWN0aW9uSW5kZXg6IG51bWJlcikge1xyXG4gICAgcmV0dXJuICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gIH1cclxuXHJcbiAgLy8gaW5kaXZpZHVhbCBxdWVzdGlvblxyXG4gIGdldFF1ZXN0aW9uc0Zvcm1Hcm91cChzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtQXJyYXlRdWVzdGlvbnNBbnN3ZXIoc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgZm9ybUFycmF5TmFtZTogc3RyaW5nLGFuc0luZGV4Om51bWJlciA9IC0xLGxpbmtxdWVzdGlvbkluZGV4Om51bWJlciA9IC0xKSB7XHJcbiAgICBsZXQgc2VjdGlvbiA9ICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpPy5hdChzZWN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICBsZXQgcXVlc3Rpb25zID0gKChzZWN0aW9uLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KT8uYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICAgIGlmKGFuc0luZGV4ID09IC0xKSB7XHJcbiAgICAgIHJldHVybiAocXVlc3Rpb25zLmdldChmb3JtQXJyYXlOYW1lKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBhbnN3ZXJzID0gKChxdWVzdGlvbnMuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KT8uYXQoYW5zSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICAgIGxldCBsaW5rZWRJbmRleCA9ICgoYW5zd2Vycy5nZXQoJ2xpbmtRdWVzdGlvbkFuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGxpbmtxdWVzdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgICByZXR1cm4gKGxpbmtlZEluZGV4LmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEZvcm1BcnJheUxpbmtlZFF1ZXN0aW9ucyhzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLGFuc3dlckluZGV4Om51bWJlcikge1xyXG4gICAgbGV0IHNlY3Rpb24gPSAoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KT8uYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXApO1xyXG4gICAgbGV0IHF1ZXN0aW9ucyA9ICgoc2VjdGlvbi5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSk/LmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCk7XHJcbiAgICBsZXQgYW5zd2VyID0gKHF1ZXN0aW9ucy5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpPy5hdChhbnN3ZXJJbmRleCkgYXMgRm9ybUdyb3VwO1xyXG4gICAgcmV0dXJuIChhbnN3ZXIuZ2V0KCdsaW5rUXVlc3Rpb25BbnN3ZXJzJykgYXMgRm9ybUFycmF5KVxyXG4gIH1cclxuXHJcbiAgZ2V0UXVlc3Rpb25zRm9ybUFycmF5VmFsdWVzKHNlY3Rpb25JbmRleDogbnVtYmVyKTogYW55W10ge1xyXG4gICAgcmV0dXJuICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmdldFJhd1ZhbHVlKCkgfHwgW107XHJcbiAgfVxyXG5cclxuICBnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woc2VjdGlvbkluZGV4OiBudW1iZXIsIHF1ZXN0aW9uSW5kZXg6IG51bWJlciwgZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsYW5zSWR4Om51bWJlcj0gLTEpIHtcclxuICAgIGNvbnN0IHNlY3Rpb25zID0gdGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkgfCBudWxsO1xyXG4gICAgaWYgKCFzZWN0aW9ucykgcmV0dXJuIG51bGw7XHJcbiAgXHJcbiAgICBjb25zdCBzZWN0aW9uID0gc2VjdGlvbnMuYXQoc2VjdGlvbkluZGV4KSBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gICAgaWYgKCFzZWN0aW9uKSByZXR1cm4gbnVsbDtcclxuICBcclxuICAgIGNvbnN0IHF1ZXN0aW9ucyA9IHNlY3Rpb24uZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkgfCBudWxsO1xyXG4gICAgaWYgKCFxdWVzdGlvbnMpIHJldHVybiBudWxsO1xyXG4gIFxyXG4gICAgY29uc3QgcXVlc3Rpb24gPSBxdWVzdGlvbnMuYXQocXVlc3Rpb25JbmRleCkgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgIGlmICghcXVlc3Rpb24pIHJldHVybiBudWxsO1xyXG5cclxuICAgIGlmKGZvcm1Db250cm9sTmFtZSA9PSAncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpIHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHF1ZXN0aW9uLmdldChmb3JtQ29udHJvbE5hbWUpIGFzIEZvcm1Db250cm9sIHwgbnVsbDtcclxuICAgICAgcmV0dXJuIGNvbnRyb2w7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGFuc3dlcnMgPSBxdWVzdGlvbi5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtR3JvdXAgfCBudWxsO1xyXG4gICAgICBpZiAoIWFuc3dlcnMpIHJldHVybiBudWxsO1xyXG4gIFxyXG4gICAgICBpZihhbnNJZHggIT0gLTEpIHtcclxuICBcclxuICAgICAgICBsZXQgYW5zd2VyTGlzdCA9IHF1ZXN0aW9uLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSB8IG51bGw7XHJcbiAgICAgICAgaWYoIWFuc3dlckxpc3QpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGFuc3dlcnMgPSBhbnN3ZXJMaXN0LmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwIHwgbnVsbDtcclxuICAgICAgICBpZiAoIWFuc3dlcnMpIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBjb250cm9sID0gYW5zd2Vycy5nZXQoZm9ybUNvbnRyb2xOYW1lKSBhcyBGb3JtQ29udHJvbCB8IG51bGw7XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gY29udHJvbDtcclxuICAgIH1cclxuICBcclxuICB9XHJcblxyXG4gIHJlbW92ZWROZXN0ZWRRdWVzdGlvbihzZWN0aW9uaW5kZXg6IG51bWJlcixxbm86YW55KSB7XHJcbiAgICBsZXQgcXVlc3Rpb25zID0gKHRoaXMuZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmF0KHNlY3Rpb25pbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBxdWVzdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGFuc3dlcnMgPSAocXVlc3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cCk/LmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheTtcclxuICAgICAgaWYoYW5zd2Vycykge1xyXG4gICAgICAgIGZvcihsZXQgaj0wO2o8YW5zd2Vycy5sZW5ndGg7aisrKSB7XHJcbiAgICAgICAgICBsZXQgbGlua2VkID0gKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdzaG93TGlua2VkJyk/LnZhbHVlO1xyXG4gICAgICAgICAgaWYobGlua2VkKSB7XHJcbiAgICAgICAgICAgIGxldCBxdWVzdGlvbk5vID0gKGFuc3dlcnMuYXQoaikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgICAgICAgICAgaWYocXVlc3Rpb25ObyA9PSBxbm8pIHtcclxuICAgICAgICAgICAgICAoYW5zd2Vycy5hdChqKSBhcyBGb3JtR3JvdXApPy5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnNldFZhbHVlKDApO1xyXG4gICAgICAgICAgICAgIChhbnN3ZXJzLmF0KGopIGFzIEZvcm1Hcm91cCk/LmdldCgnc2hvd0xpbmtlZCcpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVF1ZXN0aW9uUW5vcyhzZWN0aW9uaW5kZXg6IG51bWJlcikge1xyXG4gICAgbGV0IHF1ZXN0aW9ucyA9ICh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWN0aW9uaW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAgIGxldCB1cGRhdGVkTGlzdDphbnkgPSBbXTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlc3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBxbm8gPSAocXVlc3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cCk/LmdldCgncW5vJyk/LnZhbHVlO1xyXG4gICAgICBpZighdGhpcy5kZWxldGVkTGlzdC5pbmNsdWRlcyhxbm8pKSB7XHJcbiAgICAgICAgbGV0IHF1ZXN0aW9uQXJyYXkgPSBxdWVzdGlvbnM/LnZhbHVlO1xyXG4gICAgICAgIGZvcihsZXQgcW4gPSAwOyBxbiA8IHF1ZXN0aW9uQXJyYXkubGVuZ3RoIDtxbisrKSB7XHJcbiAgICAgICAgICBpZighdXBkYXRlZExpc3QuaW5jbHVkZXMocW4pKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gcXVlc3Rpb25BcnJheVtxbl07XHJcbiAgICAgICAgICAgIGlmICghWydkZXNjcmlwdGl2ZScsICdpbWFnZScsICdkZXNjcmlwdGl2ZUltYWdlJywgJ211bHRpcGxlSW1hZ2UnLCAndmlkZW8nLCdsaW5lYXJzY2FsZScsJ3RpbWUnLCdkYXRlJ10uaW5jbHVkZXMoaXRlbS5hbnN3ZXJUeXBlKSkge1xyXG4gICAgICAgICAgICAgIGZvcihsZXQgYW5zID0gMDsgYW5zIDwgaXRlbS5hbnN3ZXJzLmxlbmd0aCA7IGFucysrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5hbnN3ZXJzW2Fuc10ubGlua2VkUXVlc3Rpb24gPT0gcW5vKSB7XHJcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRMaXN0LnB1c2gocW4pO1xyXG4gICAgICAgICAgICAgICAgICAoKChxdWVzdGlvbnMuYXQocW4pIGFzIEZvcm1Hcm91cCk/LmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8uc2V0VmFsdWUoaSsxKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgKHF1ZXN0aW9ucy5hdChpKSBhcyBGb3JtR3JvdXApPy5nZXQoJ3FubycpPy5zZXRWYWx1ZShpKzEpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5DaGVja2xpc3RGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gIC8vIHVwZGF0ZVF1ZXN0aW9uUW5vcyhzZWN0aW9uaW5kZXg6IG51bWJlcikge1xyXG4gIC8vICAgbGV0IHF1ZXN0aW9ucyA9ICh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWN0aW9uaW5kZXgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KTtcclxuICAvLyAgIGxldCBxdWVzdGlvbkFycmF5ID0gcXVlc3Rpb25zPy52YWx1ZTtcclxuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgcXVlc3Rpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgLy8gICAgIGxldCBxbm8gPSAocXVlc3Rpb25zLmF0KGkpIGFzIEZvcm1Hcm91cCk/LmdldCgncW5vJyk/LnZhbHVlO1xyXG4gIC8vICAgICBpZighdGhpcy5kZWxldGVkTGlzdC5pbmNsdWRlcyhxbm8pKSB7XHJcbiAgLy8gICAgICAgZm9yKGxldCBxbiA9IDA7IHFuIDwgcXVlc3Rpb25BcnJheS5sZW5ndGggO3FuKyspIHtcclxuICAvLyAgICAgICAgIGxldCBpdGVtID0gcXVlc3Rpb25BcnJheVtxbl07XHJcbiAgLy8gICAgICAgICBpZiAoIVsnZGVzY3JpcHRpdmUnLCAnaW1hZ2UnLCAnZGVzY3JpcHRpdmVJbWFnZScsICdtdWx0aXBsZUltYWdlJywgJ3ZpZGVvJywnbGluZWFyc2NhbGUnLCd0aW1lJywnZGF0ZSddLmluY2x1ZGVzKGl0ZW0uYW5zd2VyVHlwZSkpIHtcclxuICAvLyAgICAgICAgICAgbGV0IGZpbmRJbmRleCA9IGl0ZW0uYW5zd2Vycy5tYXAoKGl0ZW06YW55LCBpbmRleDphbnkpID0+IChpdGVtLmxpbmtlZFF1ZXN0aW9uID09IHFubyA/IGluZGV4IDogLTEpKS5maWx0ZXIoKGluZGV4OmFueSkgPT4gaW5kZXggIT09IC0xKTtcclxuICAvLyAgICAgICAgICAgaWYoZmluZEluZGV4Lmxlbmd0aCkge1xyXG4gIC8vICAgICAgICAgICAgIGZpbmRJbmRleC5mb3JFYWNoKChpZHg6bnVtYmVyKSA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBpdGVtLmFuc3dlcnNbaWR4XS5jaGVja2VkID0gdHJ1ZTtcclxuICAvLyAgICAgICAgICAgICAgICgoKHF1ZXN0aW9ucy5hdChxbikgYXMgRm9ybUdyb3VwKT8uZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChpZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZShpKzEpO1xyXG4gIC8vICAgICAgICAgICAgIH0pXHJcbiAgLy8gICAgICAgICAgIH1cclxuICAvLyAgICAgICAgICAgLy8gbGV0IGZpbmRBbnNJZHggPSBpdGVtLmFuc3dlcnMuZmluZEluZGV4KChlbGU6YW55KSA9PiBlbGUubGlua2VkUXVlc3Rpb24gPT0gcW5vICYmICFpdGVtLmNoZWNrZWQpO1xyXG4gIC8vICAgICAgICAgICAvLyBpZihmaW5kQW5zSWR4ICE9IC0xKSB7XHJcbiAgLy8gICAgICAgICAgIC8vIH1cclxuICAvLyAgICAgICAgIH1cclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgKHF1ZXN0aW9ucy5hdChpKSBhcyBGb3JtR3JvdXApPy5nZXQoJ3FubycpPy5zZXRWYWx1ZShpKzEpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgdGhpcy5DaGVja2xpc3RGb3JtLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAvLyB9XHJcblxyXG4gIGdldFF1ZXN0aW9uc0Fuc3dlckZvcm1Hcm91cChzZWN0aW9uSW5kZXg6IG51bWJlciwgcXVlc3Rpb25JbmRleDogbnVtYmVyLGFuc0luZGV4Om51bWJlcikge1xyXG4gICAgcmV0dXJuICgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY3Rpb25JbmRleCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHF1ZXN0aW9uSW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJbmRleCkgYXMgRm9ybUdyb3VwKTtcclxuICB9XHJcblxyXG4gIHNldEFjdGl2ZVF1ZXN0aW9uKHNlY0lkeDogbnVtYmVyLCBxdWVzdGlvbkluZGV4OiBudW1iZXIsIGFjdGl2ZXN0YXR1czogbnVtYmVyLGFuc3dlckluZGV4Om51bWJlciA9IC0xKSB7XHJcbiAgICBpZihhY3RpdmVzdGF0dXMgPT0gMSkge1xyXG4gICAgICBpZihhbnN3ZXJJbmRleCAhPSAtMSkge1xyXG4gICAgICAgIHRoaXMuZ2V0UXVlc3Rpb25zQW5zd2VyRm9ybUdyb3VwKHNlY0lkeCxxdWVzdGlvbkluZGV4LGFuc3dlckluZGV4KS5hZGRDb250cm9sKCdhY3RpdmUnLHRoaXMuZmIuY29udHJvbCh0cnVlKSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5nZXRRdWVzdGlvbnNGb3JtR3JvdXAoc2VjSWR4LHF1ZXN0aW9uSW5kZXgpLmFkZENvbnRyb2woJ2FjdGl2ZScsdGhpcy5mYi5jb250cm9sKHRydWUpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKGFuc3dlckluZGV4ICE9IC0xKSB7XHJcbiAgICAgICAgdGhpcy5nZXRRdWVzdGlvbnNBbnN3ZXJGb3JtR3JvdXAoc2VjSWR4LHF1ZXN0aW9uSW5kZXgsYW5zd2VySW5kZXgpLnJlbW92ZUNvbnRyb2woJ2FjdGl2ZScpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZ2V0UXVlc3Rpb25zRm9ybUdyb3VwKHNlY0lkeCxxdWVzdGlvbkluZGV4KS5yZW1vdmVDb250cm9sKCdhY3RpdmUnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFsbG93QWRkQW5zd2VyKGFuc3dlcnM6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gYW5zd2Vycy5sZW5ndGggPCAzMDtcclxuICB9XHJcblxyXG4gIGdldFF1ZXN0aW9uTGlzdChzZWNJZHg6bnVtYmVyLHFudElkeDpudW1iZXIsYW5zSWR4Om51bWJlcikge1xyXG4gICAgLy8gZm9yKGxldCBhbnN3ZXIgb2YgcXVlc3Rpb24/LmFuc3dlcnMpIHtcclxuICAgIC8vICAgICAgICAgaWYoKGFuc3dlci5saW5rZWRRdWVzdGlvbiAmJiBhbnN3ZXIubGlua2VkUXVlc3Rpb24gPT0gYCR7cXVlc3Rpb24ucW5vfWAgJiYgcXVlc3Rpb24ucW5vID09IChxbnRJZHgrMSkpIHx8ICghYW5zd2VyLmxpbmtlZFF1ZXN0aW9uLmxlbmd0aCAmJiBxdWVzdGlvbi5xbm8gIT0gKHFudElkeCsxKSkpIHtcclxuICAgIC8vICAgICAgICAgICAgIHF1ZXN0aW9uTGlzdC5wdXNoKHF1ZXN0aW9uLnFubylcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgfVxyXG4gICAgbGV0IHF1ZXN0aW9uRGV0YWlscyA9ICgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmdldFJhd1ZhbHVlKCkgfHwgW107XHJcbiAgICBcclxuICAgIGxldCBxdWVzdGlvbkxpc3Q6YW55ID0gW107XHJcbiAgICBsZXQgbGlua2VkUXVlc3Rpb25zOmFueSA9IFtdO1xyXG4gICAgaWYocXVlc3Rpb25EZXRhaWxzLmxlbmd0aCkge1xyXG4gICAgICBmb3IobGV0IHF1ZXN0aW9uIG9mIHF1ZXN0aW9uRGV0YWlscykge1xyXG4gICAgICAgIGlmKHF1ZXN0aW9uLmFuc3dlcnMpIHtcclxuICAgICAgICAgIGlmKFsndmlkZW8nLCdpbWFnZScsJ2Rlc2NyaXB0aXZlSW1hZ2UnLCdtdWx0aXBsZUltYWdlJywnbGluZWFyc2NhbGUnLCd0aW1lJywnZGF0ZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmFuc3dlclR5cGUpKSB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9uLmFuc3dlcnMgPSBbcXVlc3Rpb24uYW5zd2Vyc107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAgZm9yKGxldCBbaW5kZXgsYW5zd2VyXSBvZiBxdWVzdGlvbi5hbnN3ZXJzLmVudHJpZXMoKSkge1xyXG4gICAgICAgICAgICBpZihhbnN3ZXI/LmxpbmtlZFF1ZXN0aW9uKSB7XHJcbiAgICAgICAgICAgICAgbGlua2VkUXVlc3Rpb25zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgcW5vOnF1ZXN0aW9uLnFubyxcclxuICAgICAgICAgICAgICAgIGFuc0lkeDppbmRleCxcclxuICAgICAgICAgICAgICAgIGxpbmtlZFF1ZXN0aW9uOnBhcnNlSW50KGFuc3dlci5saW5rZWRRdWVzdGlvbilcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIHF1ZXN0aW9uRGV0YWlscyA9IHF1ZXN0aW9uRGV0YWlscy5maWx0ZXIoKGl0ZW06YW55KSA9PiBpdGVtLnFubyAhPSAocW50SWR4KzEpKTtcclxuICAgICAgZm9yKGxldCBxdWVzdGlvbiBvZiBxdWVzdGlvbkRldGFpbHMpIHtcclxuICAgICAgICBpZihxdWVzdGlvbj8uYW5zd2Vycykge1xyXG4gICAgICAgICAgbGV0IGZpbmRFeGlzdHMgPSBsaW5rZWRRdWVzdGlvbnMuZmluZCgoaXRlbTphbnkpID0+ICBpdGVtLnFubyA9PSBxdWVzdGlvbi5xbm8gJiYgaXRlbS5hbnNJZHggPT0gYW5zSWR4ICYmIGl0ZW0ucW5vID09IChxbnRJZHgrMSkpO1xyXG4gICAgICAgICAgbGV0IGNoZWNrTGlua2VkID0gbGlua2VkUXVlc3Rpb25zLmZpbmQoKGl0ZW06YW55KSA9PiBpdGVtLmxpbmtlZFF1ZXN0aW9uID09IHF1ZXN0aW9uLnFubyk7XHJcbiAgICAgICAgICAgIGlmKCFjaGVja0xpbmtlZCAmJiAhZmluZEV4aXN0cyAmJiBxdWVzdGlvbi5xbm8gIT0gKHFudElkeCsxKSAmJiAhcXVlc3Rpb25MaXN0LmluY2x1ZGVzKHF1ZXN0aW9uLnFubykpIHtcclxuICAgICAgICAgICAgICBxdWVzdGlvbkxpc3QucHVzaChxdWVzdGlvbi5xbm8pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGZpbmRFeGlzdHMgJiYgIXF1ZXN0aW9uTGlzdC5pbmNsdWRlcyhmaW5kRXhpc3RzLmxpbmtlZFF1ZXN0aW9uKSApIHtcclxuICAgICAgICAgICAgICBxdWVzdGlvbkxpc3QucHVzaChmaW5kRXhpc3RzLmxpbmtlZFF1ZXN0aW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGxldCBmaW5kRXhpc3RzID0gbGlua2VkUXVlc3Rpb25zLmZpbmQoKGl0ZW06YW55KSA9PiAgaXRlbS5saW5rZWRRdWVzdGlvbiA9PSBxdWVzdGlvbi5xbm8pO1xyXG4gICAgICAgICAgaWYoIWZpbmRFeGlzdHMgJiYgcXVlc3Rpb24ucW5vICE9IChxbnRJZHgrMSkgJiYgIXF1ZXN0aW9uTGlzdC5pbmNsdWRlcyhxdWVzdGlvbi5xbm8pKSB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9uTGlzdC5wdXNoKHF1ZXN0aW9uLnFubyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICByZXR1cm4gcXVlc3Rpb25MaXN0O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBkYXRlTGlua2VkKHNlY0lkeDpudW1iZXIscW5JZHg6bnVtYmVyLGFuc0lkeDpudW1iZXIpIHtcclxuICAgIGxldCBsaW5rVmFsdWUgPSAoKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3Nob3dMaW5rZWQnKT8udmFsdWU7XHJcbiAgICBpZihsaW5rVmFsdWUpIHtcclxuICAgICAgbGV0IGxpbmtlZFF1ZXN0aW9uID0gKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy52YWx1ZTtcclxuICAgICAgaWYobGlua2VkUXVlc3Rpb24pIHtcclxuICAgICAgICAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQobGlua2VkUXVlc3Rpb24gLSAxKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua1R5cGUnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICAgICgoKCgoKHRoaXMuQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChzZWNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8uc2V0VmFsdWUoMCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYoIWxpbmtWYWx1ZSkge1xyXG4gICAgICAoKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KSBhcyBGb3JtR3JvdXApLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxbklkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ2Fuc3dlcnMnKSBhcyBGb3JtQXJyYXkpLmF0KGFuc0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3ZhbGlkYXRpb24nKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICB0aGlzLmNsZWFyUmVmZXJlbmNlSW1hZ2Uoc2VjSWR4LHFuSWR4LGFuc0lkeCk7XHJcbiAgICB9XHJcblxyXG4gICAgKCgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkgYXMgRm9ybUdyb3VwKS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdzaG93TGlua2VkJyk/LnNldFZhbHVlKCFsaW5rVmFsdWUpXHJcbiAgfVxyXG5cclxuICB1cGRhdGVRdWVzdGlvblR5cGUoc2VjSWR4Om51bWJlcixxbklkeDpudW1iZXIsYW5zSWR4Om51bWJlcixldmVudDphbnkpIHtcclxuICAgIGxldCBsaW5rZWRRdWVzdGlvbiA9ICgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8udmFsdWU7XHJcbiAgICBpZihsaW5rZWRRdWVzdGlvbikge1xyXG4gICAgICAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQobGlua2VkUXVlc3Rpb24gLSAxKSBhcyBGb3JtR3JvdXApLmdldCgnbGlua1R5cGUnKT8uc2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgaWYoZXZlbnQudGFyZ2V0LnZhbHVlKSB7XHJcbiAgICAgIGxldCBpbmRleCA9IHBhcnNlSW50KGV2ZW50LnRhcmdldC52YWx1ZSkgLSAxO1xyXG4gICAgICAoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoaW5kZXgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rVHlwZScpPy5zZXRWYWx1ZSh0cnVlKTtcclxuICAgICAgKCgoKCh0aGlzLkNoZWNrbGlzdEZvcm0uZ2V0KCdzZWN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQoc2VjSWR4KS5nZXQoJ3F1ZXN0aW9ucycpIGFzIEZvcm1BcnJheSkuYXQocW5JZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdhbnN3ZXJzJykgYXMgRm9ybUFycmF5KS5hdChhbnNJZHgpIGFzIEZvcm1Hcm91cCkuZ2V0KCdsaW5rZWRRdWVzdGlvbicpPy5zZXRWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnbGlua2VkUXVlc3Rpb24nKT8uc2V0VmFsdWUoMCk7XHJcbiAgICAgICgoKCgodGhpcy5DaGVja2xpc3RGb3JtLmdldCgnc2VjdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHNlY0lkeCkuZ2V0KCdxdWVzdGlvbnMnKSBhcyBGb3JtQXJyYXkpLmF0KHFuSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnYW5zd2VycycpIGFzIEZvcm1BcnJheSkuYXQoYW5zSWR4KSBhcyBGb3JtR3JvdXApLmdldCgnc2hvd0xpbmtlZCcpPy5zZXRWYWx1ZShmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZWxlY3RPcHRpb24ocW5vOmFueSxhbnNMaW5rZWQ6YW55KSB7XHJcbiAgICByZXR1cm4gcW5vID09IGFuc0xpbmtlZCA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFF1ZXN0aW9uTmFtZShzZWNJZHg6bnVtYmVyLHFJZHg6bnVtYmVyKSB7XHJcbiAgICByZXR1cm4gKCh0aGlzLmdldFNlY3Rpb25Gb3JtQXJyYXkoKS5hdChzZWNJZHgpLmdldCgncXVlc3Rpb25zJykgYXMgRm9ybUFycmF5KS5hdChxSWR4LTEpIGFzIEZvcm1Hcm91cCkuZ2V0KCdxbmFtZScpPy52YWx1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhcmRcIiAqbmdJZj1cImNoZWNrbGlzdExvYWRpbmdcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cIiFjaGVja2xpc3RMb2FkaW5nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJDaGVja2xpc3RGb3JtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBib3JkZXItMCBwdC0zIHBiLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMyBtYi0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHJvdXRlckxpbms9XCIvbWFuYWdlL3RyYXgvY2hlY2tsaXN0XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lIG1lLTUgcHMtMiBweC0zXCI+PHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNS44MzMyIDEwLjAwMDNINC4xNjY1TTQuMTY2NSAxMC4wMDAzTDkuOTk5ODQgMTUuODMzN000LjE2NjUgMTAuMDAwM0w5Ljk5OTg0IDQuMTY2OTlcIiBzdHJva2U9XCIjMzQ0MDU0XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbHVtbiB3LTgwMHB4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVkaXRhYmxlY29udGVudCBtYi00IHctMTAwXCI+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJjaGVja2xpc3QgcGxhaW4taW5wdXRcIiAjY2hlY2tsaXN0TmFtZSBwbGFjZWhvbGRlcj1cIkVudGVyIENoZWNrbGlzdCBOYW1lXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2hlY2tsaXN0TmFtZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlZGl0YWJsZWNvbnRlbnQgdy0xMDBcIj48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImNoZWNrbGlzdERlc2NyaXB0aW9uIHBsYWluLWlucHV0XCIgI2NoZWNrbGlzdERlc2NyaXB0aW9uIHBsYWNlaG9sZGVyPVwiRW50ZXIgQ2hlY2tsaXN0IERlc2NyaXB0aW9uXCIgZm9ybUNvbnRyb2xOYW1lPVwiY2hlY2tsaXN0RGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG15LTYganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgcG9zaXRpb24tcmVsYXRpdmUgbXktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd3ZhbHVlID09PSAnYWRkJ1wiIChjbGljayk9XCJzYXZlQ2hlY2tsaXN0UXVlc3Rpb25zKCdjb25maWd1cmUnKVwiPjxzcGFuIGNsYXNzPVwibXMtMlwiPkNvbmZpZ3VyZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd3ZhbHVlID09PSAnYWRkJ1wiIChjbGljayk9XCJzYXZlQXNEcmFmdFBvcCgnY3JlYXRlJylcIj48c3BhbiBjbGFzcz1cIm1zLTJcIj5TYXZlIGFzIERyYWZ0PC9zcGFuPiA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTIgYnRuLW91dGxpbmUgYnRuLW91dGxpbmUtZGVmYXVsdCByb3VuZGVkLTMgdGV4dC1ub3dyYXAgYm9yZGVyLXZhbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd3ZhbHVlID09PSAnZWRpdCdcIiAoY2xpY2spPVwidXBkYXRlQ2hlY2tsaXN0UXVlc3Rpb25zKCdjb25maWd1cmUnKVwiPjxzcGFuIGNsYXNzPVwibXMtMlwiPkNvbmZpZ3VyZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBteC0yIGJ0bi1vdXRsaW5lIGJ0bi1vdXRsaW5lLWRlZmF1bHQgcm91bmRlZC0zIHRleHQtbm93cmFwIGJvcmRlci12YWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3d2YWx1ZSA9PT0gJ2VkaXQnXCIgKGNsaWNrKT1cInNhdmVBc0RyYWZ0UG9wKCd1cGRhdGUnKVwiPjxzcGFuIGNsYXNzPVwibXMtMlwiPlNhdmUgYXMgRHJhZnQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBtdC0yXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cF09XCJDaGVja2xpc3RGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1sZWZ0IGNhcmQgcHgtNyBweS03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTE4cHggZnctNjAwIHRleHQtbGVmdCBtYi0zIGNvbmNpc2UtY2hlY2tsaXN0bmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2dldEZvcm1Db250cm9sKCdjaGVja2xpc3ROYW1lJykudmFsdWUgPyBnZXRGb3JtQ29udHJvbCgnY2hlY2tsaXN0TmFtZScpLnZhbHVlIDogJ0NoZWNrbGlzdE5hbWUnfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdC1wYW5lbC1jb250YWluZXJcIiBmb3JtQXJyYXlOYW1lPVwic2VjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBnZXRTZWN0aW9uRm9ybUFycmF5KCkuY29udHJvbHM7bGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHNlY3Rpb24gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0xOHB4IGZ3LWJvbGQgZWRpdGFibGVjb250ZW50LWxlZnRcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2VjdGlvbkZvcm1Db250cm9sKGksJ25hbWUnKT8udmFsdWUgPT09ICcnID8gXCJTZWN0aW9uIFwiIDogJyd9fXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWN0aW9uRm9ybUNvbnRyb2woaSwnbmFtZScpPy52YWx1ZSA/IGdldFNlY3Rpb25Gb3JtQ29udHJvbChpLCduYW1lJyk/LnZhbHVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldFNlY3Rpb25Gb3JtQ29udHJvbChpLCdzZWN0aW9uTnVtYmVyJyk/LnZhbHVlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwibXgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJkZWxldGVTZWN0aW9uKGkpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMzVcIiB2aWV3Qm94PVwiMCAwIDE4IDE4XCIgbWF0VG9vbHRpcD1cIkRlbGV0ZSBzZWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCIgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRlc3RcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuMjUgNC41SDMuNzVNMy43NSA0LjVIMTUuNzVNMy43NSA0LjVWMTVDMy43NSAxNS4zOTc4IDMuOTA4MDQgMTUuNzc5NCA0LjE4OTM0IDE2LjA2MDdDNC40NzA2NCAxNi4zNDIgNC44NTIxOCAxNi41IDUuMjUgMTYuNUgxMi43NUMxMy4xNDc4IDE2LjUgMTMuNTI5NCAxNi4zNDIgMTMuODEwNyAxNi4wNjA3QzE0LjA5MiAxNS43Nzk0IDE0LjI1IDE1LjM5NzggMTQuMjUgMTVWNC41SDMuNzVaTTYgNC41VjNDNiAyLjYwMjE4IDYuMTU4MDQgMi4yMjA2NCA2LjQzOTM0IDEuOTM5MzRDNi43MjA2NCAxLjY1ODA0IDcuMTAyMTggMS41IDcuNSAxLjVIMTAuNUMxMC44OTc4IDEuNSAxMS4yNzk0IDEuNjU4MDQgMTEuNTYwNyAxLjkzOTM0QzExLjg0MiAyLjIyMDY0IDEyIDIuNjAyMTggMTIgM1Y0LjVNNy41IDguMjVWMTIuNzVNMTAuNSA4LjI1VjEyLjc1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwiYWNjb3JkaWFuKGkpXCIgW25nQ2xhc3NdPVwieydyb3RhdGUnIDogc2hvdyAhPT0gaX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMzVcIiBoZWlnaHQ9XCIzNVwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSA3LjVMMTAgMTIuNUwxNSA3LjVcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3c9PT1pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcmFnRHJvcChpLCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJnZXRGb3JtQXJyYXlRdWVzdGlvbnMoaSkuY29udHJvbHNcIiBjbGFzcz1cInF1ZXN0aW9uLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUFycmF5TmFtZT1cInF1ZXN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHF1ZXN0aW9uIG9mIGdldEZvcm1BcnJheVF1ZXN0aW9ucyhpKS5jb250cm9scztsZXQgaj1pbmRleDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm15LTIgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJxdWVzdGlvbi5nZXQoJ2FjdGl2ZScpPy52YWx1ZSA9PT0gdHJ1ZSA/ICdhY3RpdmUtcXVlc3Rpb24nIDogJ3EtYnRuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNka0RyYWcgKG1vdXNlZW50ZXIpPVwic2V0QWN0aXZlUXVlc3Rpb24oaSxqLDEpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNjcm9sbFRvUXVlc3Rpb24oaSxqKTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJzZXRBY3RpdmVRdWVzdGlvbihpLGosLTEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwialwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbmNpc2UtcXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2dldFF1ZXN0aW9uRm9ybUNvbnRyb2woaSxqLCdxbmFtZScpPy52YWx1ZSA/ICcnIDogXCJRdWVzdGlvblwifX17eyBnZXRRdWVzdGlvbkZvcm1Db250cm9sKGksaiwncW5hbWUnKT8udmFsdWUgP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFF1ZXN0aW9uRm9ybUNvbnRyb2woaSxqLCdxbmFtZScpPy52YWx1ZSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UXVlc3Rpb25Gb3JtQ29udHJvbChpLGosJ3FubycpPy52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05IG10LTJcIj5cclxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJDaGVja2xpc3RGb3JtXCIgI2Zvcm1SZWY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBweC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWNhcmQgcHktNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm10LTJcIiBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIGNoZWNrbGlzdCBuYW1lIGhlcmVcIiBmb3JtQ29udHJvbE5hbWU9XCJjaGVja2xpc3ROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwibXQtNFwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgY2hlY2tsaXN0IGRlc2NyaXB0aW9uIGhlcmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY2hlY2tsaXN0RGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwic2VjdGlvbnNcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uQXJlYSBtdC01XCIgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgZ2V0U2VjdGlvbkZvcm1BcnJheSgpLmNvbnRyb2xzO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy0xOHB4IGZ3LWJvbGQgZWRpdGFibGVjb250ZW50XCI+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJwbGFpbi1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NlY3Rpb25OYW1lIChjaGFuZ2UpPVwidXBkYXRlSW5wdXRWYWx1ZShpLHNlY3Rpb25OYW1lLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJtbC01XCIgKGNsaWNrKT1cImRlbGV0ZVNlY3Rpb24oaSlcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIG1hdFRvb2x0aXA9XCJEZWxldGUgc2VjdGlvblwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi4yNSA0LjVIMy43NU0zLjc1IDQuNUgxNS43NU0zLjc1IDQuNVYxNUMzLjc1IDE1LjM5NzggMy45MDgwNCAxNS43Nzk0IDQuMTg5MzQgMTYuMDYwN0M0LjQ3MDY0IDE2LjM0MiA0Ljg1MjE4IDE2LjUgNS4yNSAxNi41SDEyLjc1QzEzLjE0NzggMTYuNSAxMy41Mjk0IDE2LjM0MiAxMy44MTA3IDE2LjA2MDdDMTQuMDkyIDE1Ljc3OTQgMTQuMjUgMTUuMzk3OCAxNC4yNSAxNVY0LjVIMy43NVpNNiA0LjVWM0M2IDIuNjAyMTggNi4xNTgwNCAyLjIyMDY0IDYuNDM5MzQgMS45MzkzNEM2LjcyMDY0IDEuNjU4MDQgNy4xMDIxOCAxLjUgNy41IDEuNUgxMC41QzEwLjg5NzggMS41IDExLjI3OTQgMS42NTgwNCAxMS41NjA3IDEuOTM5MzRDMTEuODQyIDIuMjIwNjQgMTIgMi42MDIxOCAxMiAzVjQuNU03LjUgOC4yNVYxMi43NU0xMC41IDguMjVWMTIuNzVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjRcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCJhY2NvcmRpYW4oaSlcIiBbbmdDbGFzc109XCJ7J3JvdGF0ZScgOiBzaG93ICE9PSBpfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDcuNUwxMCAxMi41TDE1IDcuNVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25zQXJlYVwiICpuZ0lmPVwic2hvdyA9PT0gaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJxdWVzdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJRdWVzdGlvbi1zZWMgbXQtMTBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBxdWVzdGlvbiBvZiBnZXRGb3JtQXJyYXlRdWVzdGlvbnMoaSkuY29udHJvbHM7bGV0IGogPSBpbmRleDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtb3VzZWVudGVyKT1cInNldEFjdGl2ZVF1ZXN0aW9uKGksaiwxKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1vdXNlbGVhdmUpPVwic2V0QWN0aXZlUXVlc3Rpb24oaSxqLC0xKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW2Zvcm1Hcm91cE5hbWVdPVwialwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTE4cHggcHgtMyBlZGl0YWJsZWNvbnRlbnQgcXVlc3Rpb250aXRsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImN1cnNvcjogZGVmYXVsdDtcIj4gUXVlc3Rpb24ge3tqKzF9fTwvc3Bhbj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWNhcmQgcGItNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZFwiIHJvd3M9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIGNsYXNzPVwibXQtMFwiIFtpZF09XCIncS0nICsgaSArICctJyArIGpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcXVlc3Rpb24gaGVyZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicW5hbWVcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdxbmFtZScpPy5pbnZhbGlkICYmIHF1ZXN0aW9uLmdldCgncW5hbWUnKT8udG91Y2hlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPVwiY29sb3I6IHJlZDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInF1ZXN0aW9uLmdldCgncW5hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj4qXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uIGlzIHJlcXVpcmVkLjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIVsnZGVzY3JpcHRpdmVJbWFnZScsJ2ltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdxdWVzdGlvblJlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZl9pbWdfY29udCBtYi00IG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTAwJVwiIGhlaWdodD1cIjMwMHB4XCIgY2xhc3M9XCJhdXRvLWFkanVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIlRhbmdvIEV5ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZl9kZWxfaWNvblwiIChjbGljayk9XCJjbGVhclJlZmVyZW5jZUltYWdlKGksaik7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjUgNS4wMDEzSDQuMTY2NjdNNC4xNjY2NyA1LjAwMTNIMTcuNU00LjE2NjY3IDUuMDAxM1YxNi42NjhDNC4xNjY2NyAxNy4xMSA0LjM0MjI2IDE3LjUzMzkgNC42NTQ4MiAxNy44NDY1QzQuOTY3MzggMTguMTU5IDUuMzkxMzEgMTguMzM0NiA1LjgzMzMzIDE4LjMzNDZIMTQuMTY2N0MxNC42MDg3IDE4LjMzNDYgMTUuMDMyNiAxOC4xNTkgMTUuMzQ1MiAxNy44NDY1QzE1LjY1NzcgMTcuNTMzOSAxNS44MzMzIDE3LjExIDE1LjgzMzMgMTYuNjY4VjUuMDAxM0g0LjE2NjY3Wk02LjY2NjY3IDUuMDAxM1YzLjMzNDY0QzYuNjY2NjcgMi44OTI2MSA2Ljg0MjI2IDIuNDY4NjggNy4xNTQ4MiAyLjE1NjEyQzcuNDY3MzggMS44NDM1NiA3Ljg5MTMxIDEuNjY3OTcgOC4zMzMzMyAxLjY2Nzk3SDExLjY2NjdDMTIuMTA4NyAxLjY2Nzk3IDEyLjUzMjYgMS44NDM1NiAxMi44NDUyIDIuMTU2MTJDMTMuMTU3NyAyLjQ2ODY4IDEzLjMzMzMgMi44OTI2MSAxMy4zMzMzIDMuMzM0NjRWNS4wMDEzTTguMzMzMzMgOS4xNjc5N1YxNC4xNjhNMTEuNjY2NyA5LjE2Nzk3VjE0LjE2OFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0I0MjMxOFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgYnRuIGJ0bi1saWdodC1wcmltYXJ5IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZC1ub25lXCIgW2lkXT1cIidmaWxldXBsb2FkXycraStqXCIgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImFuc3dlckZpbGVcIiBhY2NlcHQ9XCJpbWFnZS9wbmcsIGltYWdlL2pwZWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsb2FkSW1hZ2VGcm9tRGV2aWNlKGkscmVmSW1nUUlkeCwkZXZlbnQsLTEsJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInZmlsZXVwbG9hZF8nK2kralwiIChjbGljayk9XCJyZWZJbWdRSWR4PWo7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cIm14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjFcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF80MDgyXzMxMjIpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE5LjY2NjcgMy4zMzUyN1Y4LjMzNTI3TTE5LjY2NjcgOC4zMzUyN0gxNC42NjY3TTE5LjY2NjcgOC4zMzUyN0wxNS44IDQuNzAxOTNDMTQuOTA0NCAzLjgwNTg2IDEzLjc5NjQgMy4xNTEyNyAxMi41NzkzIDIuNzk5MjVDMTEuMzYyMyAyLjQ0NzIyIDEwLjA3NTkgMi40MDkyMyA4Ljg0MDI1IDIuNjg4ODJDNy42MDQ1NiAyLjk2ODQxIDYuNDU5ODQgMy41NTY0NiA1LjUxMjkgNC4zOTgxMkM0LjU2NTk1IDUuMjM5NzcgMy44NDc2NSA2LjMwNzU5IDMuNDI1MDEgNy41MDE5M00xLjMzMzM0IDE2LjY2ODZWMTEuNjY4Nk0xLjMzMzM0IDExLjY2ODZINi4zMzMzNE0xLjMzMzM0IDExLjY2ODZMNS4yMDAwMSAxNS4zMDE5QzYuMDk1NjMgMTYuMTk4IDcuMjAzNjUgMTYuODUyNiA4LjQyMDY4IDE3LjIwNDZDOS42Mzc3MSAxNy41NTY3IDEwLjkyNDEgMTcuNTk0NiAxMi4xNTk4IDE3LjMxNTFDMTMuMzk1NSAxNy4wMzU1IDE0LjU0MDIgMTYuNDQ3NCAxNS40ODcxIDE1LjYwNThDMTYuNDM0MSAxNC43NjQxIDE3LjE1MjQgMTMuNjk2MyAxNy41NzUgMTIuNTAxOVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzQwODJfMzEyMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09XCJ0cmFuc2xhdGUoMC41KVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+UmV1cGxvYWQgSW1hZ2U8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncXVlc3Rpb25SZWZlcmVuY2VJbWFnZScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgYnRuIGFkZC1yZWYtYnRuIGJ0bi1saWdodC1wcmltYXJ5IG15LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZC1ub25lXCIgW2lkXT1cIidmaWxldXBsb2FkXycraStqXCIgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cImZpbGVcIiBhY2NlcHQ9XCJpbWFnZS9wbmcsIGltYWdlL2pwZWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsb2FkSW1hZ2VGcm9tRGV2aWNlKGkscmVmSW1nUUlkeCwkZXZlbnQsLTEsJ3F1ZXN0aW9uUmVmZXJlbmNlSW1hZ2UnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJwb2ludGVyXCIgW2Zvcl09XCInZmlsZXVwbG9hZF8nK2kralwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVmSW1nUUlkeD1qO1wiPiA8c3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMCA0LjE2Nzk3VjE1LjgzNDZNNC4xNjY2OSAxMC4wMDEzSDE1LjgzMzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5BZGQgUmVmZXJlbmNlIEltYWdlIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtY2FyZCBwYi01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwibXQtNVwiIG5hbWU9XCJzZWxlY3RvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiYW5zd2VyVHlwZVNlbGVjdGlvbihpLGosJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYW5zd2VyVHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cImRlc2NyaXB0aXZlXCIgdmFsdWU9XCJkZXNjcmlwdGl2ZVwiPkRlc2NyaXB0aXZlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cInllcy9ub1wiIHZhbHVlPVwieWVzL25vXCI+QS9CIFF1ZXN0aW9uPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwibXVsdGlwbGVjaG9pY2VzaW5nbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIm11bHRpcGxlY2hvaWNlc2luZ2xlXCI+TXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uIC1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlIEFuc3dlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cIm11bHRpcGxlY2hvaWNlbXVsdGlwbGVcIj5NdWx0aXBsZSBDaG9pY2UgUXVlc3Rpb24gLVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSBBbnN3ZXI8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJkZXNjcmlwdGl2ZUltYWdlXCIgdmFsdWU9XCJkZXNjcmlwdGl2ZUltYWdlXCI+Q2FwdHVyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbWFnZSB3aXRoIERlc2NyaXB0aW9uPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwiaW1hZ2VcIiB2YWx1ZT1cImltYWdlXCI+Q2FwdHVyZSBJbWFnZSBhcyBhbnN3ZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9XCJ2aWRlb1wiIHZhbHVlPVwidmlkZW9cIj5DYXB0dXJlIHZpZGVvIGFzIGFuc3dlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gbmFtZT1cIm11bHRpcGxlSW1hZ2VcIiB2YWx1ZT1cIm11bHRpcGxlSW1hZ2VcIj5DYXB0dXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE11bHRpcGxlIEltYWdlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwiZGF0ZVwiIHZhbHVlPVwiZGF0ZVwiPkRhdGUgLSBERC9NTS9ZWVlZPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwibGluZWFyc2NhbGVcIiB2YWx1ZT1cImxpbmVhcnNjYWxlXCI+TGluZWFyIFNjYWxlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPVwidGltZVwiIHZhbHVlPVwidGltZVwiPlRpbWU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgbXgtNCBkLWZsZXggbXQtM1wiICpuZ0lmPVwiWydkZXNjcmlwdGl2ZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGl2ZXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiB2YWx1ZT1cInRleHRcIiBbbmFtZV09XCInZGVzY3JpcHRpdmV0eXBlJ1wiIFtpZF09XCInaW5saW5lUmFkaW8wJysgaSArIGpcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvMCcrIGkgKyBqXCI+VGV4dDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1zLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgdmFsdWU9XCJudW1iZXJcIiBbbmFtZV09XCInZGVzY3JpcHRpdmV0eXBlJ1wiIFtpZF09XCInaW5saW5lUmFkaW8xJysgaSArIGpcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiICBbZm9yXT1cIidpbmxpbmVSYWRpbzEnK2kgKyBqXCI+TnVtYmVyPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgPT09ICd5ZXMvbm8nIHx8IHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlY2hvaWNlc2luZ2xlJyB8fCBxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgPT09ICdtdWx0aXBsZWNob2ljZW11bHRpcGxlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLTE4cHggZnctYm9sZGVyXCIgc3R5bGU9XCJjdXJzb3I6IGRlZmF1bHQ7XCI+QW5zd2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uczwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtQXJyYXlOYW1lPVwiYW5zd2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFuc3dlciBvZiBnZXRGb3JtQXJyYXlRdWVzdGlvbnNBbnN3ZXIoaSxqLCdhbnN3ZXJzJyk/LmNvbnRyb2xzO2xldCBrID0gaW5kZXg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBbZm9ybUdyb3VwTmFtZV09XCJrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFuc3dlci5nZXQoJ2lzZGVsZXRlZCcpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNiBBbnN3ZXIxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2xpc3QtY2FyZCBwYi0wIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwibXQtMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBhbnN3ZXIgaGVyZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYW5zd2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAneWVzL25vJyB8fCBxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgPT09ICdtdWx0aXBsZWNob2ljZXNpbmdsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2bDJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImltZ0FkZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlTGlua2VkKGksaixrKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk05Ljk5OTk5IDQuMTY2MDJWMTUuODMyN000LjE2NjY2IDkuOTk5MzVIMTUuODMzM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMzQ0MDU0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFuc3dlci5nZXQoJ2Fuc3dlcicpPy5pbnZhbGlkICYmIGFuc3dlci5nZXQoJ2Fuc3dlcicpPy50b3VjaGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJjb2xvcjogcmVkO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyLmdldCgnYW5zd2VyJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQW5zd2VyIGlzIHJlcXVpcmVkLjwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgc3R5bGU9XCJjb2xvcjogcmVkO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbnN3ZXIuZ2V0KCdzaG93U09QRmxhZ0Vycm9yJyk/LnZhbHVlID09PSB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlcnkgYW5zd2VyIGNhbuKAmXQgYmUgYSBmbGFnLjwvcD5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtQ29udHJvbE5hbWU9XCJzb3BGbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwicmFpc2VmbGFnKGksaixrLHRydWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlJhaXNlIGEgZmxhZyBpZiB0aGlzIGFuc3dlciBpcyBzZWxlY3RlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFuc3dlci5nZXQoJ3NvcEZsYWcnKT8udmFsdWUgPT09IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJraXdpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMi42NjY2OSAxMC4wMDA3QzIuNjY2NjkgMTAuMDAwNyAzLjMzMzM1IDkuMzMzOTggNS4zMzMzNSA5LjMzMzk4QzcuMzMzMzUgOS4zMzM5OCA4LjY2NjY5IDEwLjY2NzMgMTAuNjY2NyAxMC42NjczQzEyLjY2NjcgMTAuNjY3MyAxMy4zMzM0IDEwLjAwMDcgMTMuMzMzNCAxMC4wMDA3VjIuMDAwNjVDMTMuMzMzNCAyLjAwMDY1IDEyLjY2NjcgMi42NjczMiAxMC42NjY3IDIuNjY3MzJDOC42NjY2OSAyLjY2NzMyIDcuMzMzMzUgMS4zMzM5OCA1LjMzMzM1IDEuMzMzOThDMy4zMzMzNSAxLjMzMzk4IDIuNjY2NjkgMi4wMDA2NSAyLjY2NjY5IDIuMDAwNjVWMTAuMDAwN1pNMi42NjY2OSAxMC4wMDA3VjE0LjY2NzNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0QwRDVERFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAoY2xpY2spPVwicmFpc2VmbGFnKGksaixrLGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJSYWlzZSBhIGZsYWcgaWYgdGhpcyBhbnN3ZXIgaXMgc2VsZWN0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbnN3ZXIuZ2V0KCdzb3BGbGFnJyk/LnZhbHVlID09PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhY3RpdmUtZmxhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNjY2NjkgMTAuMDAwN0MyLjY2NjY5IDEwLjAwMDcgMy4zMzMzNSA5LjMzMzk4IDUuMzMzMzUgOS4zMzM5OEM3LjMzMzM1IDkuMzMzOTggOC42NjY2OSAxMC42NjczIDEwLjY2NjcgMTAuNjY3M0MxMi42NjY3IDEwLjY2NzMgMTMuMzMzNCAxMC4wMDA3IDEzLjMzMzQgMTAuMDAwN1YyLjAwMDY1QzEzLjMzMzQgMi4wMDA2NSAxMi42NjY3IDIuNjY3MzIgMTAuNjY2NyAyLjY2NzMyQzguNjY2NjkgMi42NjczMiA3LjMzMzM1IDEuMzMzOTggNS4zMzMzNSAxLjMzMzk4QzMuMzMzMzUgMS4zMzM5OCAyLjY2NjY5IDIuMDAwNjUgMi42NjY2OSAyLjAwMDY1VjEwLjAwMDdaTTIuNjY2NjkgMTAuMDAwN1YxNC42NjczXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNEMEQ1RERcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFhbnN3ZXIuZ2V0KCdzaG93TGlua2VkJyk/LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYW5zd2VydmFsaWRhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cIm10LTdcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7Y3Vyc29yOiBwb2ludGVyO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiZ2V0dmFsaWRhdGlvbihpLGosaywkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmFsaWRhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGFja2JveCBwdC00IG10LTIgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY3Vyc29yOiBkZWZhdWx0O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+VmFsaWRhdGUgcmVzcG9uc2U8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm1iLTBcIj5UcmlnZ2VyIGFuIGFjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGVhY2ggcmVzcG9uc2UgdG8gdmFsaWRhdGUgaXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlICE9PSAneWVzL25vJyAmJiBnZXRGb3JtQXJyYXlRdWVzdGlvbnNBbnN3ZXIoaSxqLCdhbnN3ZXJzJykudmFsdWUubGVuZ3RoID4gMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUFuc3dlcihpLGosaylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSBhbnN3ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwQ2xhc3M9XCJjdXN0b20tdGVzdFwiIHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDVMNSAxNU01IDVMMTUgMTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICpuZ0lmPVwibW9yZXFuLnZhbGlkYXRpb25cIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYW5zd2VyLmdldCgndmFsaWRhdGlvbicpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMyBwdC03IGZzLTQgZnctNDAwIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSByZXNwb25zZSBpcyB0aGlzLCB0aGVuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJtdC01IG14LTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbGlkYXRpb25UeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZVZhbGlkYXRpb25UeXBlKCRldmVudCxpLGosaylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uPkRlc2NyaXB0aXZlIEFuc3dlcjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+Q2FwdHVyZSBJbWFnZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24+Q2FwdHVyZSBWaWRlbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgbXgtNCBkLWZsZXggcHQtOFwiICpuZ0lmPVwiYW5zd2VyLmdldCgndmFsaWRhdGlvblR5cGUnKT8udmFsdWUgPT09ICdEZXNjcmlwdGl2ZSBBbnN3ZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGl2ZXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBbaWRdPVwiJ2lubGluZVJhZGlvMicgKyBpICsgaiArIGtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInRleHRcIiBbbmFtZV09XCInZGVzY3JpcHRpdmV0eXBlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRzY3JpcHRpdmVUeXBlXCIgW2Zvcl09XCInaW5saW5lUmFkaW8yJyArIGkgKyBqICsga1wiPlRleHQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBtcy01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIFtpZF09XCInaW5saW5lUmFkaW8zJysgaSArIGogKyBrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJudW1iZXJcIiBbbmFtZV09XCInZGVzY3JpcHRpdmV0eXBlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRzY3JpcHRpdmVUeXBlXCIgW2Zvcl09XCInaW5saW5lUmFkaW8zJyArIGkgKyBqICsga1wiPk51bWJlcjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYW5zd2VyLmdldCgnc2hvd0xpbmtlZCcpPy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTMgcHQtNyBmcy00IGZ3LTQwMCBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rZWQgUXVlc3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBbaWRdPVwiaSsnLScra1wiIFtuYW1lXT1cImkrJy0nK2tcIiBjbGFzcz1cIm10LTVcIiAoY2hhbmdlKT1cInVwZGF0ZVF1ZXN0aW9uVHlwZShpLGosaywkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBRdWVzdGlvbjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBnZXRRdWVzdGlvbkxpc3QoaSxqLGspXCIgW3ZhbHVlXT1cIm9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJzZWxlY3RPcHRpb24ob3B0aW9uLGFuc3dlci5nZXQoJ2xpbmtlZFF1ZXN0aW9uJyk/LnZhbHVlKVwiPlF1ZXN0aW9uIHt7b3B0aW9ufX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJhbnN3ZXIuZ2V0KCd2YWxpZGF0aW9uJyk/LnZhbHVlICYmIGFuc3dlci5nZXQoJ3ZhbGlkYXRpb25UeXBlJyk/LnZhbHVlID09PSAnQ2FwdHVyZSBJbWFnZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyxrKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZWZfaW1nX2NvbnQgbWItNCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnLGspPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCIgaGVpZ2h0PVwiMzAwcHhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXV0by1hZGp1c3RcIiBhbHQ9XCJUYW5nbyBFeWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZl9kZWxfaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyUmVmZXJlbmNlSW1hZ2UoaSxqLGspO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjUgNS4wMDEzSDQuMTY2NjdNNC4xNjY2NyA1LjAwMTNIMTcuNU00LjE2NjY3IDUuMDAxM1YxNi42NjhDNC4xNjY2NyAxNy4xMSA0LjM0MjI2IDE3LjUzMzkgNC42NTQ4MiAxNy44NDY1QzQuOTY3MzggMTguMTU5IDUuMzkxMzEgMTguMzM0NiA1LjgzMzMzIDE4LjMzNDZIMTQuMTY2N0MxNC42MDg3IDE4LjMzNDYgMTUuMDMyNiAxOC4xNTkgMTUuMzQ1MiAxNy44NDY1QzE1LjY1NzcgMTcuNTMzOSAxNS44MzMzIDE3LjExIDE1LjgzMzMgMTYuNjY4VjUuMDAxM0g0LjE2NjY3Wk02LjY2NjY3IDUuMDAxM1YzLjMzNDY0QzYuNjY2NjcgMi44OTI2MSA2Ljg0MjI2IDIuNDY4NjggNy4xNTQ4MiAyLjE1NjEyQzcuNDY3MzggMS44NDM1NiA3Ljg5MTMxIDEuNjY3OTcgOC4zMzMzMyAxLjY2Nzk3SDExLjY2NjdDMTIuMTA4NyAxLjY2Nzk3IDEyLjUzMjYgMS44NDM1NiAxMi44NDUyIDIuMTU2MTJDMTMuMTU3NyAyLjQ2ODY4IDEzLjMzMzMgMi44OTI2MSAxMy4zMzMzIDMuMzM0NjRWNS4wMDEzTTguMzMzMzMgOS4xNjc5N1YxNC4xNjhNMTEuNjY2NyA5LjE2Nzk3VjE0LjE2OFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjQjQyMzE4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyxrKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgYnRuIGJ0bi1saWdodC1wcmltYXJ5IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkLW5vbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2ZpbGV1cGxvYWRfJytpK2ora1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCIgbmFtZT1cImFuc3dlckZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHQ9XCJpbWFnZS9wbmcsIGltYWdlL2pwZWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImxvYWRJbWFnZUZyb21EZXZpY2UoaSxyZWZJbWdRSWR4LCRldmVudCxrKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidmaWxldXBsb2FkXycraStqK2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVmSW1nUUlkeD1qO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteC0yXCIgd2lkdGg9XCIyMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjEgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF80MDgyXzMxMjIpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOS42NjY3IDMuMzM1MjdWOC4zMzUyN00xOS42NjY3IDguMzM1MjdIMTQuNjY2N00xOS42NjY3IDguMzM1MjdMMTUuOCA0LjcwMTkzQzE0LjkwNDQgMy44MDU4NiAxMy43OTY0IDMuMTUxMjcgMTIuNTc5MyAyLjc5OTI1QzExLjM2MjMgMi40NDcyMiAxMC4wNzU5IDIuNDA5MjMgOC44NDAyNSAyLjY4ODgyQzcuNjA0NTYgMi45Njg0MSA2LjQ1OTg0IDMuNTU2NDYgNS41MTI5IDQuMzk4MTJDNC41NjU5NSA1LjIzOTc3IDMuODQ3NjUgNi4zMDc1OSAzLjQyNTAxIDcuNTAxOTNNMS4zMzMzNCAxNi42Njg2VjExLjY2ODZNMS4zMzMzNCAxMS42Njg2SDYuMzMzMzRNMS4zMzMzNCAxMS42Njg2TDUuMjAwMDEgMTUuMzAxOUM2LjA5NTYzIDE2LjE5OCA3LjIwMzY1IDE2Ljg1MjYgOC40MjA2OCAxNy4yMDQ2QzkuNjM3NzEgMTcuNTU2NyAxMC45MjQxIDE3LjU5NDYgMTIuMTU5OCAxNy4zMTUxQzEzLjM5NTUgMTcuMDM1NSAxNC41NDAyIDE2LjQ0NzQgMTUuNDg3MSAxNS42MDU4QzE2LjQzNDEgMTQuNzY0MSAxNy4xNTI0IDEzLjY5NjMgMTcuNTc1IDEyLjUwMTlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbGlwMF80MDgyXzMxMjJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwid2hpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2RlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlJldXBsb2FkIEltYWdlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScsayk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNvbC1sZy0zIGJ0biBhZGQtcmVmLWJ0biBidG4tbGlnaHQtcHJpbWFyeSBteS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZC1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidmaWxldXBsb2FkXycraStqK2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiIG5hbWU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsb2FkSW1hZ2VGcm9tRGV2aWNlKGkscmVmSW1nUUlkeCwkZXZlbnQsaylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCInZmlsZXVwbG9hZF8nK2kraitrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZkltZ1FJZHg9ajtcIj4gPHN2Z1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTAgNC4xNjc5N1YxNS44MzQ2TTQuMTY2NjkgMTAuMDAxM0gxNS44MzM0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPkFkZCBSZWZlcmVuY2UgSW1hZ2UgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTQgZm9ybS1jaGVjayBmb3JtLXN3aXRjaCBteC0yIGJ0bi1zZWMgbXQtNiB0ZXh0LWxlZnQgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBteC0wIHBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwidG9jXCIgdmFsdWU9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdEZWZhdWx0Q29udHJvbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbGxvd1VwbG9hZGZyb21HYWxsZXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZmxleFN3aXRjaENoZWNrRGVmYXVsdFwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3cgdXBsb2FkIGZyb20gZ2FsbGVyeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VycycpPy5oYXNFcnJvcignZHVwbGljYXRlU3RyaW5nJylcIiBjbGFzcz1cInRleHQtZGFuZ2VyIG10LTJcIj4qIFNhbWUgYW5zd2VyIGNhbm5vdCBiZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXRlZDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgY2xhc3M9XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgPT09ICdtdWx0aXBsZWNob2ljZW11bHRpcGxlJyB8fCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVjaG9pY2VzaW5nbGUnKSAmJiAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93QWRkQW5zd2VyKHF1ZXN0aW9uLmdldCgnYW5zd2VycycpPy52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiQWRkTW9yZUFucyhpLGoscXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBjb2wtbGctMTIgYnRuLWxpZ2h0LXByaW1hcnkgbXktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkIE1vcmUgQW5zd2VyPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEltYWdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlsnaW1hZ2UnLCdkZXNjcmlwdGl2ZUltYWdlJywnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgZm9ybUdyb3VwTmFtZT1cImFuc3dlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInJlZl9pbWdfY29udCBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRBbnN3ZXJGb3JtR3JvdXBfRm9ybUNvbnRyb2woaSxqLCdyZWZlcmVuY2VJbWFnZScpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIzMDBweFwiIGNsYXNzPVwiYXV0by1hZGp1c3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiVGFuZ28gRXllXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlZl9kZWxfaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ2ltYWdlJyAmJiBxdWVzdGlvbi5nZXQoJ3J1bkFJRGVmYXVsdCcpPy52YWx1ZSkgPyAnJzogY2xlYXJSZWZlcmVuY2VJbWFnZShpLGopO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBbc3R5bGVdPVwiKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ2ltYWdlJyAmJiBxdWVzdGlvbi5nZXQoJ3J1bkFJRGVmYXVsdCcpPy52YWx1ZSkgPyAnY3Vyc29yOmRlZmF1bHQnOicnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjUgNS4wMDEzSDQuMTY2NjdNNC4xNjY2NyA1LjAwMTNIMTcuNU00LjE2NjY3IDUuMDAxM1YxNi42NjhDNC4xNjY2NyAxNy4xMSA0LjM0MjI2IDE3LjUzMzkgNC42NTQ4MiAxNy44NDY1QzQuOTY3MzggMTguMTU5IDUuMzkxMzEgMTguMzM0NiA1LjgzMzMzIDE4LjMzNDZIMTQuMTY2N0MxNC42MDg3IDE4LjMzNDYgMTUuMDMyNiAxOC4xNTkgMTUuMzQ1MiAxNy44NDY1QzE1LjY1NzcgMTcuNTMzOSAxNS44MzMzIDE3LjExIDE1LjgzMzMgMTYuNjY4VjUuMDAxM0g0LjE2NjY3Wk02LjY2NjY3IDUuMDAxM1YzLjMzNDY0QzYuNjY2NjcgMi44OTI2MSA2Ljg0MjI2IDIuNDY4NjggNy4xNTQ4MiAyLjE1NjEyQzcuNDY3MzggMS44NDM1NiA3Ljg5MTMxIDEuNjY3OTcgOC4zMzMzMyAxLjY2Nzk3SDExLjY2NjdDMTIuMTA4NyAxLjY2Nzk3IDEyLjUzMjYgMS44NDM1NiAxMi44NDUyIDIuMTU2MTJDMTMuMTU3NyAyLjQ2ODY4IDEzLjMzMzMgMi44OTI2MSAxMy4zMzMzIDMuMzM0NjRWNS4wMDEzTTguMzMzMzMgOS4xNjc5N1YxNC4xNjhNMTEuNjY2NyA5LjE2Nzk3VjE0LjE2OFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNCNDIzMThcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1iLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLTMgYnRuIGJ0bi1saWdodC1wcmltYXJ5IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImQtbm9uZVwiIGlkPVwiZmlsZXVwbG9hZFwiIHR5cGU9XCJmaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZmlsZVwiIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJsb2FkSW1hZ2VGcm9tRGV2aWNlKGkscmVmSW1nUUlkeCwkZXZlbnQpXCIgKm5nSWY9XCIocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlICE9PSAnaW1hZ2UnIHx8IChxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgPT09ICdpbWFnZScgJiYgIXF1ZXN0aW9uLmdldCgncnVuQUlEZWZhdWx0Jyk/LnZhbHVlKSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJmaWxldXBsb2FkXCIgKGNsaWNrKT1cInJlZkltZ1FJZHg9ajtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBjbGFzcz1cIm14LTJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjIxXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIxIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF80MDgyXzMxMjIpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTkuNjY2NyAzLjMzNTI3VjguMzM1MjdNMTkuNjY2NyA4LjMzNTI3SDE0LjY2NjdNMTkuNjY2NyA4LjMzNTI3TDE1LjggNC43MDE5M0MxNC45MDQ0IDMuODA1ODYgMTMuNzk2NCAzLjE1MTI3IDEyLjU3OTMgMi43OTkyNUMxMS4zNjIzIDIuNDQ3MjIgMTAuMDc1OSAyLjQwOTIzIDguODQwMjUgMi42ODg4MkM3LjYwNDU2IDIuOTY4NDEgNi40NTk4NCAzLjU1NjQ2IDUuNTEyOSA0LjM5ODEyQzQuNTY1OTUgNS4yMzk3NyAzLjg0NzY1IDYuMzA3NTkgMy40MjUwMSA3LjUwMTkzTTEuMzMzMzQgMTYuNjY4NlYxMS42Njg2TTEuMzMzMzQgMTEuNjY4Nkg2LjMzMzM0TTEuMzMzMzQgMTEuNjY4Nkw1LjIwMDAxIDE1LjMwMTlDNi4wOTU2MyAxNi4xOTggNy4yMDM2NSAxNi44NTI2IDguNDIwNjggMTcuMjA0NkM5LjYzNzcxIDE3LjU1NjcgMTAuOTI0MSAxNy41OTQ2IDEyLjE1OTggMTcuMzE1MUMxMy4zOTU1IDE3LjAzNTUgMTQuNTQwMiAxNi40NDc0IDE1LjQ4NzEgMTUuNjA1OEMxNi40MzQxIDE0Ljc2NDEgMTcuMTUyNCAxMy42OTYzIDE3LjU3NSAxMi41MDE5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfNDA4Ml8zMTIyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIndoaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPVwidHJhbnNsYXRlKDAuNSlcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlJldXBsb2FkIEltYWdlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctMyBidG4gYWRkLXJlZi1idG4gYnRuLWxpZ2h0LXByaW1hcnkgbXktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZC1ub25lXCIgaWQ9XCJmaWxldXBsb2FkXCIgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJmaWxlXCIgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImxvYWRJbWFnZUZyb21EZXZpY2UoaSxyZWZJbWdRSWR4LCRldmVudClcIiAqbmdJZj1cIihxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgIT09ICdpbWFnZScgfHwgKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ2ltYWdlJyAmJiAhcXVlc3Rpb24uZ2V0KCdydW5BSURlZmF1bHQnKT8udmFsdWUpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicG9pbnRlclwiIGZvcj1cImZpbGV1cGxvYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZWZJbWdRSWR4PWo7XCI+IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMCA0LjE2Nzk3VjE1LjgzNDZNNC4xNjY2OSAxMC4wMDEzSDE1LjgzMzRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+QWRkIFJlZmVyZW5jZSBJbWFnZSA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb2wtbGctNCBmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIG14LTIgYnRuLXNlYyBtdC02IHRleHQtbGVmdCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXgtMCBwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiBuYW1lPVwidG9jXCIgdmFsdWU9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWxsb3dVcGxvYWRmcm9tR2FsbGVyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBwb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmbGV4U3dpdGNoQ2hlY2tEZWZhdWx0XCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93IHVwbG9hZCBmcm9tIGdhbGxlcnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIihbJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpICYmIGdldEFuc3dlckZvcm1Hcm91cF9Gb3JtQ29udHJvbChpLGosJ3JlZmVyZW5jZUltYWdlJyk/LnZhbHVlID09PSAnJykgPyAnY29sLWxnLTQgbXQtNicgOiBbJ2ltYWdlJ10uaW5jbHVkZXMocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlKSA/ICdjb2wtbGctMicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwiKFsnbXVsdGlwbGVJbWFnZSddLmluY2x1ZGVzKHF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSkgJiYgZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnKT8udmFsdWUgPT09ICcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGl2ZXR5cGVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXJcIiB0eXBlPVwicmFkaW9cIiBbaWRdPVwiJ2lubGluZVJhZGlvNCcgKyBpICsgalwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInRleHRcIiBbbmFtZV09XCInZGVzY3JpcHRpdmV0eXBlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvNCcgKyBpICsgalwiPlRleHQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIG1zLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIFtpZF09XCInaW5saW5lUmFkaW81JyArIGkgKyBqXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwibnVtYmVyXCIgW25hbWVdPVwiJ2Rlc2NyaXB0aXZldHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgZHNjcmlwdGl2ZVR5cGVcIiBbZm9yXT1cIidpbmxpbmVSYWRpbzUnICsgaSArIGpcIj5OdW1iZXI8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZ2V0QW5zd2VyRm9ybUdyb3VwX0Zvcm1Db250cm9sKGksaiwncmVmZXJlbmNlSW1hZ2UnKT8udmFsdWUgJiYgWydpbWFnZScsJ211bHRpcGxlSW1hZ2UnXS5pbmNsdWRlcyhxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlSW1hZ2UnID8gJ2NvbC1sZy01IGQtZmxleCBtdC02JyA6ICdjb2wtbGctMyBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiAqbmdJZj1cInF1ZXN0aW9uLmdldCgnYW5zd2VyVHlwZScpPy52YWx1ZSA9PT0gJ211bHRpcGxlSW1hZ2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aXZldHlwZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlclwiIHR5cGU9XCJyYWRpb1wiIFtpZF09XCInaW5saW5lUmFkaW82JyArIGkgKyBqXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwidGV4dFwiIFtuYW1lXT1cIidkZXNjcmlwdGl2ZXR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRzY3JpcHRpdmVUeXBlXCIgW2Zvcl09XCInaW5saW5lUmFkaW82JyArIGkgKyBqXCI+VGV4dDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgbXMtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpdmV0eXBlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IGN1cnNvci1wb2ludGVyXCIgdHlwZT1cInJhZGlvXCIgW2lkXT1cIidpbmxpbmVSYWRpbzYnICsgaSArIGpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJudW1iZXJcIiBbbmFtZV09XCInZGVzY3JpcHRpdmV0eXBlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkc2NyaXB0aXZlVHlwZVwiIFtmb3JdPVwiJ2lubGluZVJhZGlvNicgKyBpICsgalwiPk51bWJlcjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImZzMTYtNjAwIHB4LTEyXCI+IFJ1biBBSSDinKg8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2ggYWxpZ24taXRlbXMtY2VudGVyIGJ0bi1zZWMgbWwtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlJ1bkFJKGksailcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IHBvaW50ZXJcIiB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJydW5BSVwiIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yPVwiZmxleFN3aXRjaENoZWNrRGVmYXVsdFwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgW25nQ2xhc3NdPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbXVsdGlwbGVJbWFnZScgPyAnbXQtMScgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE2XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRW5hYmxlIEFJIHdoZXJlIHlvdSB3YW50IHRhbmdvIHRvIGlkZW50aWZ5LCB0cmFjayBhbmQgYWxlcnQgaW5zdGFuY2VzLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8yMzAxXzEwMDAzOClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNy45OTk2NyAxMC42NjU0VjcuOTk4N003Ljk5OTY3IDUuMzMyMDNIOC4wMDYzNE0xNC42NjYzIDcuOTk4N0MxNC42NjYzIDExLjY4MDYgMTEuNjgxNiAxNC42NjU0IDcuOTk5NjcgMTQuNjY1NEM0LjMxNzc4IDE0LjY2NTQgMS4zMzMwMSAxMS42ODA2IDEuMzMzMDEgNy45OTg3QzEuMzMzMDEgNC4zMTY4IDQuMzE3NzggMS4zMzIwMyA3Ljk5OTY3IDEuMzMyMDNDMTEuNjgxNiAxLjMzMjAzIDE0LjY2NjMgNC4zMTY4IDE0LjY2NjMgNy45OTg3WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjOThBMkIzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbGlwUGF0aCBpZD1cImNsaXAwXzIzMDFfMTAwMDM4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFZpZGVvIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAndmlkZW8nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJhbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIiBjb2wtbGctNCBmb3JtLWNoZWNrIGZvcm0tc3dpdGNoIHRleHQtbGVmdCBhbGlnbi1pdGVtcy1jZW50ZXIgYnRuLXNlYyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbXgtMCBwb2ludGVyXCIgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ0b2NcIiB2YWx1ZT1cIjFcIiBuZ0RlZmF1bHRDb250cm9sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhbGxvd1VwbG9hZGZyb21HYWxsZXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgcG9pbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3I9XCJmbGV4U3dpdGNoQ2hlY2tEZWZhdWx0XCI+QWxsb3cgdXBsb2FkIGZyb20gZ2FsbGVyeTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAndGltZSdcIiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBmb3JtR3JvdXBOYW1lPVwiYW5zd2Vyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgY29sLWxnLTQgYnRuLXNlYyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWQgZmxhdHBpY2tyLWlucHV0IHctMjAwcHhcIiB0eXBlPVwidGltZVwiIG5hbWU9XCJ0aW1lXCIgbmdEZWZhdWx0Q29udHJvbCBmb3JtQ29udHJvbE5hbWU9XCJhbnN3ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnbGluZWFyc2NhbGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1Hcm91cE5hbWU9XCJhbnN3ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXNlYyBtdC0yIG1lLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc29saWQgZmxhdHBpY2tyLWlucHV0IHctMTAwcHhcIiB0eXBlPVwibnVtYmVyXCIgbmFtZT1cInN0YXJ0XCIgbmdEZWZhdWx0Q29udHJvbCBmb3JtQ29udHJvbE5hbWU9XCJyYW5nZVN0YXJ0XCI+ICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tc2VjIG10LTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTZweFwiPnRvPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBidG4tc2VjIG10LTIgbXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zb2xpZCBmbGF0cGlja3ItaW5wdXQgdy0xMDBweFwiIHR5cGU9XCJudW1iZXJcIiBuYW1lPVwic3RhcnRcIiBuZ0RlZmF1bHRDb250cm9sIGZvcm1Db250cm9sTmFtZT1cInJhbmdlRW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCIocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnaW1hZ2UnICYmIHF1ZXN0aW9uLmdldCgncnVuQUlEZWZhdWx0Jyk/LnZhbHVlKSA/ICcnIDogY2xvbmVRdWVzdGlvbihpLGopXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJEdXBsaWNhdGVcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBDbGFzcz1cImN1c3RvbS10ZXN0XCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCIgW3N0eWxlXT1cIihxdWVzdGlvbi5nZXQoJ2Fuc3dlclR5cGUnKT8udmFsdWUgPT09ICdpbWFnZScgJiYgcXVlc3Rpb24uZ2V0KCdydW5BSURlZmF1bHQnKT8udmFsdWUpID8gJ2N1cnNvcjpkZWZhdWx0JzonJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZyBjbGlwLXBhdGg9XCJ1cmwoI2NsaXAwXzMzODVfMTA1NzgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNC4xNjY2MyAxMi40OTkzSDMuMzMzMjlDMi44OTEyNyAxMi40OTkzIDIuNDY3MzQgMTIuMzIzOCAyLjE1NDc4IDEyLjAxMTJDMS44NDIyMiAxMS42OTg2IDEuNjY2NjMgMTEuMjc0NyAxLjY2NjYzIDEwLjgzMjdWMy4zMzI2OEMxLjY2NjYzIDIuODkwNjUgMS44NDIyMiAyLjQ2NjczIDIuMTU0NzggMi4xNTQxN0MyLjQ2NzM0IDEuODQxNjEgMi44OTEyNyAxLjY2NjAyIDMuMzMzMjkgMS42NjYwMkgxMC44MzMzQzExLjI3NTMgMS42NjYwMiAxMS42OTkyIDEuODQxNjEgMTIuMDExOCAyLjE1NDE3QzEyLjMyNDQgMi40NjY3MyAxMi41IDIuODkwNjUgMTIuNSAzLjMzMjY4VjQuMTY2MDJNOS4xNjY2MyA3LjQ5OTM1SDE2LjY2NjZDMTcuNTg3MSA3LjQ5OTM1IDE4LjMzMzMgOC4yNDU1NCAxOC4zMzMzIDkuMTY2MDJWMTYuNjY2QzE4LjMzMzMgMTcuNTg2NSAxNy41ODcxIDE4LjMzMjcgMTYuNjY2NiAxOC4zMzI3SDkuMTY2NjNDOC4yNDYxNSAxOC4zMzI3IDcuNDk5OTYgMTcuNTg2NSA3LjQ5OTk2IDE2LjY2NlY5LjE2NjAyQzcuNDk5OTYgOC4yNDU1NCA4LjI0NjE1IDcuNDk5MzUgOS4xNjY2MyA3LjQ5OTM1WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRlZnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xpcFBhdGggaWQ9XCJjbGlwMF8zMzg1XzEwNTc4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIndoaXRlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGVmcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIChjbGljayk9XCIocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnaW1hZ2UnICYmIHF1ZXN0aW9uLmdldCgncnVuQUlEZWZhdWx0Jyk/LnZhbHVlKSA/ICcnIDogZGVsZXRlUXVlc3Rpb24oaSxqKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDI0cHggIWltcG9ydGFudDtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSBxdWVzdGlvblwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFib3ZlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcENsYXNzPVwiY3VzdG9tLXRlc3RcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIiBbbmdTdHlsZV09XCIocXVlc3Rpb24uZ2V0KCdhbnN3ZXJUeXBlJyk/LnZhbHVlID09PSAnaW1hZ2UnICYmIHF1ZXN0aW9uLmdldCgncnVuQUlEZWZhdWx0Jyk/LnZhbHVlKSA/IHtjdXJzb3I6J2RlZmF1bHQnfTp7fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjUgNC45OTkzNUg0LjE2NjY3TTQuMTY2NjcgNC45OTkzNUgxNy41TTQuMTY2NjcgNC45OTkzNVYxNi42NjZDNC4xNjY2NyAxNy4xMDggNC4zNDIyNiAxNy41MzIgNC42NTQ4MiAxNy44NDQ1QzQuOTY3MzggMTguMTU3MSA1LjM5MTMxIDE4LjMzMjcgNS44MzMzMyAxOC4zMzI3SDE0LjE2NjdDMTQuNjA4NyAxOC4zMzI3IDE1LjAzMjYgMTguMTU3MSAxNS4zNDUyIDE3Ljg0NDVDMTUuNjU3NyAxNy41MzIgMTUuODMzMyAxNy4xMDggMTUuODMzMyAxNi42NjZWNC45OTkzNUg0LjE2NjY3Wk02LjY2NjY3IDQuOTk5MzVWMy4zMzI2OEM2LjY2NjY3IDIuODkwNjUgNi44NDIyNiAyLjQ2NjczIDcuMTU0ODIgMi4xNTQxN0M3LjQ2NzM4IDEuODQxNjEgNy44OTEzMSAxLjY2NjAyIDguMzMzMzMgMS42NjYwMkgxMS42NjY3QzEyLjEwODcgMS42NjYwMiAxMi41MzI2IDEuODQxNjEgMTIuODQ1MiAyLjE1NDE3QzEzLjE1NzcgMi40NjY3MyAxMy4zMzMzIDIuODkwNjUgMTMuMzMzMyAzLjMzMjY4VjQuOTk5MzVNOC4zMzMzMyA5LjE2NjAyVjE0LjE2Nk0xMS42NjY3IDkuMTY2MDJWMTQuMTY2XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBteC0wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTYgcHgtMFwiICpuZ0lmPVwiQ2hlY2tsaXN0Rm9ybS5nZXQoJ3NlY3Rpb25zJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tsaXN0LWNhcmQgcHktNyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJhZGROZXdRdWVzdGlvbihzZWN0aW9uSW5kZXgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cImlzRGlzYWJsZWQgPyAnZGlzYWJsZWQnIDogbnVsbFwiIGNsYXNzPVwibXQtMiBidG4tc2VjIHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05Ljk5OTk5IDQuMTY2MDJWMTUuODMyN000LjE2NjY2IDkuOTk5MzVIMTUuODMzM1wiIHN0cm9rZT1cIiMzNDQwNTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPiBBZGQgTmV3IFF1ZXN0aW9uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNiBwbC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrbGlzdC1jYXJkIHB5LTcgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwiYWRkTmV3U2VjdGlvbigpXCIgY2xhc3M9XCJtdC0yIHB4LTAgYnRuLXNlYyBwb2ludGVyXCI+IDxzdmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkuOTk5OTkgNC4xNjYwMlYxNS44MzI3TTQuMTY2NjYgOS45OTkzNUgxNS44MzMzXCIgc3Ryb2tlPVwiIzM0NDA1NFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+IEFkZCBOZXcgU2VjdGlvbjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
|