@unifylib/ui-lib 1.1.61 → 1.1.63
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/advanced-filter/filter-builder/filter-builder.component.mjs +23 -6
- package/esm2022/lib/components/base-form-canvas/base-form-canvas.component.mjs +9 -2
- package/esm2022/lib/components/base-table/base-table.component.mjs +3 -3
- package/fesm2022/iq-ui-lib.mjs +34 -10
- package/fesm2022/iq-ui-lib.mjs.map +1 -1
- package/fesm2022/unifylib-ui-lib.mjs +32 -8
- package/fesm2022/unifylib-ui-lib.mjs.map +1 -1
- package/lib/components/advanced-filter/filter-builder/filter-builder.component.d.ts +2 -0
- package/lib/components/base-form-canvas/base-form-canvas.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -426,7 +426,10 @@ export class BaseFormCanvasComponent {
|
|
|
426
426
|
const selected = Array.isArray(raw) ? raw : [];
|
|
427
427
|
const section = this.pageInfo?.labelsSection || '';
|
|
428
428
|
if (selected.length === 0) {
|
|
429
|
-
return '';
|
|
429
|
+
return this.translateService.instant('FILTER-BUILDER.selectStatus');
|
|
430
|
+
}
|
|
431
|
+
if (this.areAllMultiStateOptionsSelected(field, selected)) {
|
|
432
|
+
return this.translateService.instant('FILTER-BUILDER.allStatuses');
|
|
430
433
|
}
|
|
431
434
|
if (selected.length <= 2) {
|
|
432
435
|
return selected
|
|
@@ -435,6 +438,10 @@ export class BaseFormCanvasComponent {
|
|
|
435
438
|
}
|
|
436
439
|
return this.translateService.instant('FILTER-BUILDER.multiStatusSummary', { count: selected.length });
|
|
437
440
|
}
|
|
441
|
+
areAllMultiStateOptionsSelected(field, selected) {
|
|
442
|
+
const options = field.listOptions || [];
|
|
443
|
+
return options.length > 0 && options.every((code) => selected.includes(code));
|
|
444
|
+
}
|
|
438
445
|
statusOptionLabelKey(field, code) {
|
|
439
446
|
const section = this.pageInfo?.labelsSection;
|
|
440
447
|
return section ? `${section}.${code}` : code;
|
|
@@ -729,4 +736,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
729
736
|
type: ViewChild,
|
|
730
737
|
args: ['EquationValueInput']
|
|
731
738
|
}] } });
|
|
732
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlCLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEVBQ0wsT0FBTyxFQUNQLFdBQVcsRUFDWCxZQUFZLEVBRVosY0FBYyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQzVDLFVBQVUsRUFDWCxNQUFNLHlCQUF5QixDQUFDO0FBSWpDLE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHOUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osUUFBUSxFQUNSLFlBQVksRUFDWixPQUFPLEVBQ1AsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQ3RCLFFBQVEsRUFDUixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFDLFFBQVEsRUFBRSxrQkFBa0Is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RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFD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TixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sTUFBTTtzQkFETCxLQUFLO2dCQUlOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFHTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBSU4sb0JBQW9CO3NCQURuQixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFNTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBSU4sZ0JBQWdCO3NCQURmLEtBQUs7Z0JBSU4sSUFBSTtzQkFESCxLQUFLO2dCQUtJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUlQLFdBQVc7c0JBRFYsTUFBTTtnQkFJUCxjQUFjO3NCQURiLE1BQU07Z0JBbUJFLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFhMkIsV0FBVztzQkFBM0MsU0FBUzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIGNvbXB1dGVkLFxyXG4gIG1vZGVsLFxyXG4gIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7XHJcbiAgTWF0Q2hpcCxcclxuICBNYXRDaGlwR3JpZCxcclxuICBNYXRDaGlwSW5wdXQsXHJcbiAgTWF0Q2hpcElucHV0RXZlbnQsXHJcbiAgTWF0Q2hpcExpc3Rib3gsIE1hdENoaXBPcHRpb24sIE1hdENoaXBSZW1vdmUsXHJcbiAgTWF0Q2hpcFJvd1xyXG59IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9jaGlwc1wiO1xyXG5pbXBvcnQge0ZpZWxkSW5mb30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvZmllbGQtaW5mb1wiO1xyXG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7QmFja2VuZFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9iYWNrZW5kLXNlcnZpY2VcIjtcclxuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XHJcbmltcG9ydCB7UGFnZUluZm99IGZyb20gXCIuLi8uLi9iYXNlLW1vZGVsL3BhZ2UtaW5mb1wiO1xyXG5pbXBvcnQge0NPTU1BLCBFTlRFUiwgU0VNSUNPTE9OfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2tleWNvZGVzXCI7XHJcbmltcG9ydCB7TG9va3VwSXRlbX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvbG9va3VwSXRlbVwiO1xyXG5pbXBvcnQge0ZpZWxkTWVzc2FnZX0gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvYXBpLXJlc3BvbnNlXCI7XHJcbmltcG9ydCB7XHJcbiAgQXN5bmNQaXBlLFxyXG4gIEN1cnJlbmN5UGlwZSxcclxuICBEYXRlUGlwZSxcclxuICBLZXlWYWx1ZVBpcGUsXHJcbiAgTmdGb3JPZixcclxuICBOZ0lmLCBOZ0NsYXNzLCBOZ1N0eWxlLFxyXG4gIE5nU3dpdGNoLFxyXG4gIE5nU3dpdGNoQ2FzZSxcclxuICBOZ1RlbXBsYXRlT3V0bGV0XHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQge01hdEVycm9yLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdExhYmVsfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xyXG5pbXBvcnQge01hdElucHV0TW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcclxuaW1wb3J0IHtNYXREYXRlcGlja2VyLCBNYXREYXRlcGlja2VySW5wdXQsIE1hdERhdGVwaWNrZXJUb2dnbGUsIE1hdERhdGVSYW5nZUlucHV0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlclwiO1xyXG5pbXBvcnQge01hdEljb259IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7TWF0SWNvbkJ1dHRvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQge0Nka1RleHRhcmVhQXV0b3NpemV9IGZyb20gXCJAYW5ndWxhci9jZGsvdGV4dC1maWVsZFwiO1xyXG5pbXBvcnQge01hdFJhZGlvQnV0dG9uLCBNYXRSYWRpb0dyb3VwfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW9cIjtcclxuaW1wb3J0IHtNYXRDaGVja2JveH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94XCI7XHJcbmltcG9ydCB7TWF0U2xpZGVUb2dnbGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGVcIjtcclxuaW1wb3J0IHtNYXRPcHRpb24sIE1hdFNlbGVjdH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NlbGVjdFwiO1xyXG5pbXBvcnQge01hdE1lbnUsIE1hdE1lbnVUcmlnZ2VyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xyXG5pbXBvcnQge01hdERpdmlkZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyXCI7XHJcbmltcG9ydCB7Tmd4SnNvblZpZXdlck1vZHVsZX0gZnJvbSBcIm5neC1qc29uLXZpZXdlclwiO1xyXG5pbXBvcnQge05neE1hdEludGxUZWxJbnB1dENvbXBvbmVudH0gZnJvbSBcIm5neC1tYXQtaW50bC10ZWwtaW5wdXRcIjtcclxuaW1wb3J0IHtNdWx0aUF1dG9Db21wbGV0ZUNvbXBvbmVudH0gZnJvbSBcIi4uL211bHRpLWF1dG8tY29tcGxldGUvbXVsdGktYXV0by1jb21wbGV0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtBdXRvQ29tcGxldGVDb21wb25lbnR9IGZyb20gXCIuLi9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7QXR0YWNobWVudFVwbG9hZGVyQ29tcG9uZW50fSBmcm9tIFwiLi4vc2hhcmVkL2F0dGFjaG1lbnQtdXBsb2FkZXIvYXR0YWNobWVudC11cGxvYWRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtNYXRBdXRvY29tcGxldGUsIE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcclxuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIG1hcH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtMaXZlQW5ub3VuY2VyfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2ExMXlcIjtcclxuaW1wb3J0IHtidWlsZEZvcm1GaWVsZHMsIGV4dHJhY3RGaWVsZE5hbWV9IGZyb20gXCIuLi8uLi91dGlscy9iYXNlLXV0aWxzXCI7XHJcbmltcG9ydCBtb21lbnQsIHtNb21lbnR9IGZyb20gXCJtb21lbnQvbW9tZW50XCI7XHJcbmltcG9ydCB7TWF0Q2VsbCwgTWF0Q2VsbERlZiwgTWF0SGVhZGVyQ2VsbCwgTWF0SGVhZGVyQ2VsbERlZn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3RhYmxlXCI7XHJcbmltcG9ydCB7RGF0ZUFkYXB0ZXIsIE1BVF9EQVRFX0ZPUk1BVFMsIE1BVF9EQVRFX0xPQ0FMRX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NvcmVcIjtcclxuaW1wb3J0IHtNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyXCI7XHJcbmltcG9ydCB7RGVjaW1hbE9ubHlEaXJlY3RpdmV9IGZyb20gXCIuL051bWJlcnNPbmx5RGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7TWF4RGlnaXRzRGlyZWN0aXZlfSBmcm9tIFwiLi9NYXhEaWdpdHNEaXJlY3RpdmVcIjtcclxuZXhwb3J0IGNvbnN0IEREX01NX1lZWVlfRm9ybWF0ID0ge1xyXG4gIHBhcnNlOiB7IGRhdGVJbnB1dDogJ0REL01NL1lZWVknIH0sXHJcbiAgZGlzcGxheToge1xyXG4gICAgZGF0ZUlucHV0OiAnREQvTU0vWVlZWScsXHJcbiAgICBtb250aFllYXJMYWJlbDogJ01NTSBZWVlZJyxcclxuICAgIGRhdGVBMTF5TGFiZWw6ICdERC9NTS9ZWVlZJyxcclxuICAgIG1vbnRoWWVhckExMXlMYWJlbDogJ01NTU0gWVlZWScsXHJcbiAgfSxcclxufTtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtYmFzZS1mb3JtLWNhbnZhcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTmdTd2l0Y2gsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE5nRm9yT2YsXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgS2V5VmFsdWVQaXBlLFxyXG4gICAgTmdJZixcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRMYWJlbCxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0RGF0ZXBpY2tlcklucHV0LFxyXG4gICAgTWF0RGF0ZXBpY2tlcixcclxuICAgIE1hdERhdGVwaWNrZXJUb2dnbGUsXHJcbiAgICBNYXRFcnJvcixcclxuICAgIE5nU3dpdGNoQ2FzZSxcclxuICAgIE1hdEljb24sXHJcbiAgICBNYXRJY29uQnV0dG9uLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlLFxyXG4gICAgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcixcclxuICAgIE1hdENoaXAsXHJcbiAgICBDZGtUZXh0YXJlYUF1dG9zaXplLFxyXG4gICAgTWF0UmFkaW9Hcm91cCxcclxuICAgIE1hdENoZWNrYm94LFxyXG4gICAgTWF0UmFkaW9CdXR0b24sXHJcbiAgICBNYXRTbGlkZVRvZ2dsZSxcclxuICAgIE1hdFNlbGVjdCxcclxuICAgIE1hdE9wdGlvbixcclxuICAgIE1hdE1lbnUsXHJcbiAgICBNYXRNZW51VHJpZ2dlcixcclxuICAgIE1hdERpdmlkZXIsXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIE5neEpzb25WaWV3ZXJNb2R1bGUsXHJcbiAgICBDdXJyZW5jeVBpcGUsXHJcbiAgICBOZ3hNYXRJbnRsVGVsSW5wdXRDb21wb25lbnQsXHJcbiAgICBNYXRDaGlwR3JpZCxcclxuICAgIE1hdENoaXBJbnB1dCxcclxuICAgIE1hdENoaXBSb3csXHJcbiAgICBNYXRDaGlwTGlzdGJveCxcclxuICAgIE1hdENoaXBPcHRpb24sXHJcbiAgICBNdWx0aUF1dG9Db21wbGV0ZUNvbXBvbmVudCxcclxuICAgIEF1dG9Db21wbGV0ZUNvbXBvbmVudCxcclxuICAgIE1hdERhdGVSYW5nZUlucHV0LFxyXG4gICAgQXN5bmNQaXBlLFxyXG4gICAgTWF0Q2hpcFJlbW92ZSxcclxuICAgIE1hdENlbGwsXHJcbiAgICBNYXRDZWxsRGVmLFxyXG4gICAgTWF0SGVhZGVyQ2VsbCxcclxuICAgIE1hdEhlYWRlckNlbGxEZWYsXHJcbiAgICBOZ1N0eWxlLFxyXG4gICAgQXR0YWNobWVudFVwbG9hZGVyQ29tcG9uZW50LFxyXG4gICAgRGVjaW1hbE9ubHlEaXJlY3RpdmUsXHJcbiAgICBNYXhEaWdpdHNEaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9iYXNlLWZvcm0tY2FudmFzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQuY3NzJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogRGF0ZUFkYXB0ZXIsXHJcbiAgICAgIHVzZUNsYXNzOiBNb21lbnREYXRlQWRhcHRlcixcclxuICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU11cclxuICAgIH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0ZPUk1BVFMsIHVzZVZhbHVlOiBERF9NTV9ZWVlZX0Zvcm1hdCB9LFxyXG4gICAgeyBwcm92aWRlOiBNQVRfREFURV9MT0NBTEUsIHVzZVZhbHVlOiAnZW4tR0InIH1cclxuICBdXHJcblxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFzZUZvcm1DYW52YXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBwdWJsaWMgaGlkZTogYm9vbGVhbiA9IHRydWU7XHJcbiAgZGF0ZVZpZXdNb2RlOiAnbW9udGgnIHwgJ3llYXInIHwgJ211bHRpLXllYXInID0gJ21vbnRoJztcclxuICBASW5wdXQoKVxyXG4gIHBhZ2VJbmZvITogUGFnZUluZm87XHJcblxyXG5cclxuICBASW5wdXQoKVxyXG4gIGN1cnJlbmN5OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpLy8gQHRzLWlnbm9yZVxyXG4gIGZpZWxkczogRmllbGRJbmZvW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXHJcbiAgZXJyb3JzOiBGaWVsZE1lc3NhZ2VbXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHdvcmtmbG93RWRpdGFibGVGaWVsZHM6IHN0cmluZ1tdPVtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgaXNXb3JrZmxvd0VkaXRhYmxlTWFuYWdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHN1cHBvcnRpbmdBdHRyaWJ1dGVzOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZWRpdGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gV2hlbiB0cnVlLCBlbWl0IGZvcm1VcGRhdGVkIG9uIGV2ZXJ5IHZhbHVlIGNoYW5nZS4gRGVmYXVsdCBpcyBmYWxzZSB0byBhdm9pZFxyXG4gIC8vIG5vaXN5IGVtaXNzaW9ucyBmb3IgYWxsIGNvbnN1bWVycy4gSXRlbS1saW5lLWVkaXRvciB3aWxsIGVuYWJsZSB0aGlzIGV4cGxpY2l0bHkuXHJcbiAgQElucHV0KClcclxuICBlbWl0T25WYWx1ZUNoYW5nZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBmaWx0ZXJSZXNldE5vbmNlID0gMDtcclxuXHJcbiAgQElucHV0KClcclxuICBpdGVtOiBhbnkgPSB7fTtcclxuXHJcbiAgX2RlZmF1bHRzOiBhbnkgPSB7fTtcclxuXHJcbiAgQE91dHB1dCgpIGF0dGFjaG1lbnRFbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KCkgYWN0aW9uRW1pdHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGZvcm1VcGRhdGVkOiBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUdyb3VwPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBoeXBlclRleHRFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHJcbiAgZm9ybVBhcmFtITogRm9ybUdyb3VwO1xyXG4gIHNjcmVlbkZpZWxkcyA9IG5ldyBNYXA8bnVtYmVyLCBGaWVsZEluZm9bXT4oKTtcclxuICByZW1vdmFibGUgPSB0cnVlO1xyXG4gIHNlbGVjdGFibGUgPSB0cnVlO1xyXG4gIGFkZE9uQmx1ciA9IHRydWU7XHJcblxyXG4gIHJlYWRvbmx5IHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BLCBTRU1JQ09MT05dO1xyXG5cclxuICByZWFkb25seSBtaW5EYXRlID0gbW9tZW50KFsxODAwLCAwLCAxXSk7XHJcblxyXG4gIHB1YmxpYyBpc1BlbmRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgaXNOZXc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpdGVtSWQ6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuXHJcbiAgZXF1YXRpb25PcGVyYXRvcnMgOiBzdHJpbmdbXSA9IFsnKycsJy0nLCcoJyBdO1xyXG4gIEBJbnB1dCgpIGVxdWF0aW9uU3VnZ2VzdGVkRmllbGRzOiB7IG5hbWU6IHN0cmluZywgaWQ6IHN0cmluZyB9W10gPSBbXTtcclxuICBhbGxFcXVhdGlvbkZpZWxkczogQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPjtcclxuICByZWFkb25seSBlcXVhdGlvblZhbHVlcyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xyXG4gIGN1cnJlbnRFcXVhdGlvblZhbHVlID0gbW9kZWw8c3RyaW5nPignJyk7XHJcblxyXG4gIHJlYWRvbmx5IGVxdWF0aW9uRmlsdGVyZWRGaWVsZHMgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBjb25zdCBjdXJyZW50RXF1YXRpb25WYWx1ZSA9IHRoaXMuY3VycmVudEVxdWF0aW9uVmFsdWUoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgcmV0dXJuIHRoaXMuYWxsRXF1YXRpb25GaWVsZHMucGlwZShcclxuICAgICAgICBtYXAoZmllbGRzID0+XHJcbiAgICAgICAgICAgIGN1cnJlbnRFcXVhdGlvblZhbHVlID8gZmllbGRzPy5maWx0ZXIoZmllbGQgPT4gZmllbGQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjdXJyZW50RXF1YXRpb25WYWx1ZSkpIDogZmllbGRzPy5zbGljZSgpXHJcbiAgICAgICAgKVxyXG4gICAgKTtcclxuICB9KTtcclxuICBAVmlld0NoaWxkKCdFcXVhdGlvblZhbHVlSW5wdXQnKSBmaWVsZHNJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcclxuXHJcbiAgc2V0IGRlZmF1bHRzKHZhbHVlOiBhbnkgfCB1bmRlZmluZWQpIHtcclxuICAgIC8vIHRoaXMuYmFja2VuZFNlcnZpY2UuX2RlZmF1bHRzID0gdmFsdWU7XHJcbiAgICB0aGlzLl9kZWZhdWx0cyA9IHZhbHVlO1xyXG4gICAgdGhpcy5idWlsZEZvcm0oKTtcclxuICAgIC8vIHRoaXMubXlDYWxsYmFjayA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRlZmF1bHRzKCk6IGFueSB8IHVuZGVmaW5lZCB7XHJcbiAgICAvLyB0aGlzLm15Q2FsbGJhY2s7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdHM7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5iYWNrZW5kU2VydmljZS5fZGVmYXVsdHM7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcclxuICAgICAgICAgICAgICBwcm90ZWN0ZWQgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBiYWNrZW5kU2VydmljZTogQmFja2VuZFNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBhbm5vdW5jZXI6IExpdmVBbm5vdW5jZXIpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5pdGVtICYmIHRoaXMuaXRlbS5maWVsZFZhbHVlKXtcclxuICAgICAgdGhpcy5lcXVhdGlvblZhbHVlcy51cGRhdGUodmFsdWUgPT4gdGhpcy5pdGVtLmZpZWxkVmFsdWUpXHJcbiAgICB9XHJcbiAgICB0aGlzLmRlZmF1bHRzID0gdGhpcy5pdGVtO1xyXG4gICAgdGhpcy5leHRyYWN0TGFibGVzKCk7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy5pc1BlbmRpbmcgPSBkYXRhWydtb2RlJ10gPT09ICdwZW5kaW5nJztcclxuICAgICAgdGhpcy5pc05ldyA9IGRhdGFbJ21vZGUnXSA9PT0gJ25ldyc7XHJcbiAgICB9KTtcclxuICAgIC8vIHRoaXMuYXV0aFNlcnZpY2Uuc3VtbWFyeVBhbmVsU3RhdGUkLm5leHQoQ29uc3RhbnRzLlNVTU1BUllfUEFORUxfQ0xPU0VEKTtcclxuICAgIC8vIHRoaXMuZGVmYXVsdHMgPSB7fTtcclxuICAgIC8vIHRoaXMuaW52b2ljZVFJbml0KCk7XHJcbiAgICB0aGlzLmFsbEVxdWF0aW9uRmllbGRzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xyXG5cclxuICAgIHRoaXMudXBkYXRlRXF1YXRpb25PcHRpb25zKCk7XHJcbiAgfVxyXG5cclxuICBmb3JtYXRUaW1lVG9EYXRlKHY6IGFueSl7XHJcbiAgICBjb25zdCBmcm9tVGltZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodikge1xyXG4gICAgICBsZXQgc3BsaXQgPSB2LnNwbGl0KFwiOlwiKTtcclxuICAgICAgZnJvbVRpbWUuc2V0SG91cnMoc3BsaXRbMF0sIHNwbGl0WzFdKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgRGF0ZShmcm9tVGltZS5nZXRUaW1lKCkpO1xyXG4gIH1cclxuXHJcbiAgcGF0Y2hMb29rdXBWYWx1ZSgkZXZlbnQ6IExvb2t1cEl0ZW0sIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoJGV2ZW50Py5pZCAhPT0gLTEgJiYgdGhpcy5kZWZhdWx0cykge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHRoaXMuZGVmYXVsdHNbZmllbGROYW1lXSA9IHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZE5hbWUpLnZhbHVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXRCYW5rTmFtZShmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgLy9UT0RPIEJhdG9vbCBkbyB3ZSBuZWVkIHRoaXMgaGVyZSA/XHJcbiAgICBpZiAodGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkTmFtZSkudmFsdWU/Lmxlbmd0aCA+IDEwICYmICFpc05hTih0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGROYW1lKS52YWx1ZSkgKSB7XHJcbiAgICAgIHJldHVybiAnIC8gJyArIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdCQU5LLicgKyB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGROYW1lKS52YWx1ZT8uc3Vic3RyKDQsIDQpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHBhdGNoTXVsdGlTZWxlY3RWYWx1ZSgkZXZlbnQ6IExvb2t1cEl0ZW1bXSwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICgkZXZlbnQ/Lmxlbmd0aCA+PSAwICYmIHRoaXMuZGVmYXVsdHMpIHtcclxuICAgICAgdGhpcy5kZWZhdWx0c1tmaWVsZE5hbWVdID0gdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkTmFtZSkudmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGl0ZW0sIGVycm9ycywgZmllbGRzLCBmaWx0ZXJSZXNldE5vbmNlIH0gPSBjaGFuZ2VzO1xyXG5cclxuICAgIGVycm9ycz8uY3VycmVudFZhbHVlPy5mb3JFYWNoKChtc2c6IEZpZWxkTWVzc2FnZSkgPT4ge1xyXG4gICAgICB0aGlzLmZvcm1QYXJhbS5nZXQobXNnLmZpZWxkTmFtZSk/LnNldEVycm9ycyh7c2VydmVyRXJyb3I6IG1zZy5tZXNzYWdlfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoaXRlbT8uY3VycmVudFZhbHVlICYmICFpdGVtLmlzRmlyc3RDaGFuZ2UoKSl7XHJcbiAgICAgIHRoaXMuZGVmYXVsdHMgPSBpdGVtLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZmllbGRzPy5jdXJyZW50VmFsdWUgJiYgIWZpZWxkcy5pc0ZpcnN0Q2hhbmdlKCkpe1xyXG4gICAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgZmlsdGVyUmVzZXROb25jZSAmJlxyXG4gICAgICAhZmlsdGVyUmVzZXROb25jZS5pc0ZpcnN0Q2hhbmdlKCkgJiZcclxuICAgICAgZmlsdGVyUmVzZXROb25jZS5jdXJyZW50VmFsdWUgIT09IGZpbHRlclJlc2V0Tm9uY2UucHJldmlvdXNWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucmVzZXRGaWx0ZXJGb3JtVmFsdWVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93RmllbGQoaXRlbTogYW55LCBmaWVsZDogYW55KSB7XHJcbiAgICByZXR1cm4gKGl0ZW0uaWQgfHwgKCFpdGVtLmlkICYmICFmaWVsZC51cGRhdGVPbmx5KSkgJiYgZmllbGQudmlzaWJsZVxyXG4gIH1cclxuXHJcbiAgd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkOiB7IHByb3BlcnR5OiBzdHJpbmc7IH0pIHtcclxuICAgIGNvbnN0IHggPSB0aGlzLmlzV29ya2Zsb3dFZGl0YWJsZU1hbmFnZWQgPyB0aGlzLndvcmtmbG93RWRpdGFibGVGaWVsZHM/LmZpbmRJbmRleChkID0+IGQgPT09IGZpZWxkLnByb3BlcnR5KSA+IC0xIDogdHJ1ZTtcclxuICAgIHJldHVybiB4O1xyXG4gIH1cclxuXHJcbiAgc2hvd011bHRpU2VsZWN0VmFsdWVzQXNSZWFkb25seShmaWVsZDogRmllbGRJbmZvKSB7XHJcbiAgICBjb25zdCB2aWV3UHJvcCA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXREZWZhdWx0TGFuZygpID09PSAnZW4nID8gJ2VuZ2xpc2hOYW1lJyA6ICdhcmFiaWNOYW1lJztcclxuICAgIHJldHVybiB0aGlzLmV4dHJhY3RGaWVsZE5hbWUodGhpcy5kZWZhdWx0cyxmaWVsZC5wcm9wZXJ0eSk/Lm1hcCgoYTogeyBbeDogc3RyaW5nXTogYW55OyB9KSA9PiBhW3ZpZXdQcm9wXSk7XHJcbiAgfVxyXG5cclxuICBzcGxpdFJlYWRvbmx5KHZhbHVlczogYW55KSB7XHJcbiAgICByZXR1cm4gIXZhbHVlcyB8fCB2YWx1ZXMgPT09ICcnID8gW106IHZhbHVlcy5zcGxpdCgnOycpO1xyXG4gIH1cclxuXHJcblxyXG4gIHJlZmVyZW5jZUF0dHJpYnV0ZVRydWUoZmllbGROYW1lOiBzdHJpbmcsIGF0dHJpYnV0ZTogYW55KSB7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5yZWZlcmVuY2VBdHRyaWJ1dGVUcnVlKGZpZWxkTmFtZSwgdGhpcy5wYWdlSW5mby5wcm9jZXNzSWQsIGF0dHJpYnV0ZSk7XHJcbiAgfVxyXG5cclxuICB0cmFuc2xhdGVMYWJsZShpdGVtRWxlbWVudDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoaXRlbUVsZW1lbnQpXHJcbiAgfVxyXG5cclxuICBidWlsZEZvcm0oKSB7XHJcbiAgICBpZiAoIXRoaXMuZmllbGRzIHx8IHRoaXMuZmllbGRzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5kZWZhdWx0cykgcmV0dXJuO1xyXG5cclxuICAgIGlmICghdGhpcy5mb3JtUGFyYW0pIHtcclxuICAgICAgdGhpcy5mb3JtUGFyYW0gPSB0aGlzLmZiLmdyb3VwKGJ1aWxkRm9ybUZpZWxkcyh0aGlzLmZpZWxkcywgdGhpcy5kZWZhdWx0cykpO1xyXG4gICAgICAvLyBFbWl0IGluaXRpYWwgZm9ybSByZWZlcmVuY2VcclxuICAgICAgdGhpcy5mb3JtVXBkYXRlZC5uZXh0KHRoaXMuZm9ybVBhcmFtKTtcclxuICAgICAgLy8gRW1pdCBvbiBldmVyeSB2YWx1ZSBjaGFuZ2Ugc28gcGFyZW50IGNvbXBvbmVudHMgY2FuIHJlYWN0IGxpdmVcclxuICAgICAgaWYgKHRoaXMuZW1pdE9uVmFsdWVDaGFuZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFyYW0udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1VcGRhdGVkLmVtaXQodGhpcy5mb3JtUGFyYW0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwYXRjaFZhbHVlczogYW55ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgIGlmIChmaWVsZC5yZWFkb25seSkge1xyXG4gICAgICAgIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGZpZWxkLnR5cGUgIT09ICdzcGFjZXInKSB7XHJcbiAgICAgICAgbGV0IHYgPSBleHRyYWN0RmllbGROYW1lKHRoaXMuZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KTtcclxuICAgICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ211bHRpLXN0YXRlLWNoZWNrYm94JyAmJiAodiA9PT0gdW5kZWZpbmVkIHx8IHYgPT09IG51bGwpKSB7XHJcbiAgICAgICAgICB2ID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhdGNoVmFsdWVzW2ZpZWxkLnByb3BlcnR5XSA9IHY7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1QYXJhbS5wYXRjaFZhbHVlKHBhdGNoVmFsdWVzLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0RmlsdGVyRm9ybVZhbHVlcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5mb3JtUGFyYW0gfHwgIXRoaXMuZmllbGRzPy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZW1wdHk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XHJcbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIHRoaXMuZmllbGRzKSB7XHJcbiAgICAgIGlmIChmaWVsZC50eXBlICE9PSAnc3BhY2VyJykge1xyXG4gICAgICAgIGVtcHR5W2ZpZWxkLnByb3BlcnR5XSA9IGZpZWxkLnR5cGUgPT09ICdtdWx0aS1zdGF0ZS1jaGVja2JveCcgPyBbXSA6IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuZm9ybVBhcmFtLnBhdGNoVmFsdWUoZW1wdHksIHsgZW1pdEV2ZW50OiB0cnVlIH0pO1xyXG4gIH1cclxuXHJcbiAgbGFiZWxLZXkoY29sdW1uOiBhbnkpIHtcclxuICAgIGNvbnN0IGNvbmZpZ3VyZWRLZXkgPSBjb2x1bW4ubGFiZWwgPyBjb2x1bW4ubGFiZWwgOiBjb2x1bW4ucHJvcGVydHlcclxuICAgIHJldHVybiBjb25maWd1cmVkS2V5LnN0YXJ0c1dpdGgodGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uKSA/IGAke2NvbmZpZ3VyZWRLZXl9YCA6IGAke3RoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XHJcbiAgfVxyXG5cclxuICBsYWJlbEtleVBsYWNlSG9sZGVyKGNvbHVtbjogYW55KSB7XHJcbiAgICBjb25zdCBjb25maWd1cmVkS2V5ID0gY29sdW1uLnBsYWNlaG9sZGVyID8gY29sdW1uLnBsYWNlaG9sZGVyIDogY29sdW1uLnByb3BlcnR5XHJcbiAgICByZXR1cm4gY29uZmlndXJlZEtleS5zdGFydHNXaXRoKHRoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbikgPyBgJHtjb25maWd1cmVkS2V5fWAgOiBgJHt0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb259LiR7Y29uZmlndXJlZEtleX1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0RXJyb3JzKHByb3A6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtUGFyYW0/LmdldChbcHJvcF0pO1xyXG4gICAgaWYgKCFjb250cm9sIHx8IGNvbnRyb2wuZGlzYWJsZWQpIHJldHVybiAnJztcclxuXHJcbiAgICBpZiAoY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgIGNvbnN0IGVyciA9IGNvbnRyb2wuZXJyb3JzO1xyXG4gICAgICBpZiAoZXJyWydtYXREYXRlcGlja2VyTWluJ10pIHtcclxuICAgICAgICByZXR1cm4gJ21hdERhdGVwaWNrZXJNaW4nO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlcnJbJ21hdERhdGVwaWNrZXJNYXgnXSkge1xyXG4gICAgICAgIHJldHVybiAnbWF0RGF0ZXBpY2tlck1heCc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBmaWVsZCA9IHRoaXMuZmllbGRzLmZpbmQoZiA9PiBmLnByb3BlcnR5ID09PSBwcm9wKTtcclxuXHJcbiAgICBpZiAoIWZpZWxkPy52YWxpZGF0aW9uTWVzc2FnZXMpIHtcclxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC5zdGF0dXMgIT09ICdWQUxJRCcgJiYgdGhpcy5nZXRGaXJzdEVycm9yS2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rmlyc3RFcnJvcktleShwcm9wKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbnRyb2wuaW52YWxpZCkge1xyXG4gICAgICBjb25zdCBlcnJvcnMgPSBjb250cm9sLmVycm9ycyB8fCB7fTtcclxuICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uICsgXCIuXCI7XHJcblxyXG4gICAgICBpZiAoZXJyb3JzWydyZXF1aXJlZCddKSByZXR1cm4gcHJlZml4ICsgJ1JFUVVJUkVEJztcclxuICAgICAgaWYgKGVycm9yc1snbWluJ10pIHJldHVybiBwcmVmaXggKyAoZmllbGQudmFsaWRhdGlvbk1lc3NhZ2VzPy5taW4gfHwgJ05VTUJFUl9NSU4nKTtcclxuICAgICAgaWYgKGVycm9yc1snbWF4J10pIHJldHVybiBwcmVmaXggKyAoZmllbGQudmFsaWRhdGlvbk1lc3NhZ2VzPy5tYXggfHwgJ05VTUJFUl9NQVgnKTtcclxuICAgICAgaWYgKGVycm9yc1snbWF4bGVuZ3RoJ10pIHJldHVybiBwcmVmaXggKyAoZmllbGQudmFsaWRhdGlvbk1lc3NhZ2VzPy5tYXhsZW5ndGggfHwgJ01BWF9MRU5HVEgnKTtcclxuICAgICAgaWYgKGVycm9yc1snZGVjaW1hbE1pbiddKSByZXR1cm4gcHJlZml4ICsgKGZpZWxkLnZhbGlkYXRpb25NZXNzYWdlcz8uZGVjaW1hbE1pbiB8fCAnREVDSU1BTF9NSU4nKTtcclxuICAgICAgaWYgKGVycm9yc1snZGVjaW1hbE1heCddKSByZXR1cm4gcHJlZml4ICsgKGZpZWxkLnZhbGlkYXRpb25NZXNzYWdlcz8uZGVjaW1hbE1heCB8fCAnREVDSU1BTF9NQVgnKTtcclxuICAgICAgaWYgKGVycm9yc1sncGF0dGVybiddKSByZXR1cm4gcHJlZml4ICsgKGZpZWxkLnZhbGlkYXRpb25NZXNzYWdlcz8ucGF0dGVybiB8fCAnSU5WQUxJRF9GT1JNQVQnKTtcclxuICAgICAgaWYgKGVycm9yc1snaW52YWxpZE1hdGhFeHByZXNzaW9uJ10pIHJldHVybiBwcmVmaXggKyAnSU5WQUxJRF9NQVRIJztcclxuICAgICAgaWYgKGVycm9yc1snZGF0ZVJhbmdlSW52YWxpZCddKSByZXR1cm4gcHJlZml4ICsgJ2RhdGVSYW5nZUludmFsaWQnO1xyXG4gICAgICBpZiAoZXJyb3JzWydzZXJ2ZXJFcnJvciddKSByZXR1cm4gcHJlZml4ICsgZXJyb3JzWydzZXJ2ZXJFcnJvciddO1xyXG5cclxuICAgICAgcmV0dXJuIHByZWZpeCArICdJTlZBTElEX1ZBTFVFJztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0Rmlyc3RFcnJvcktleShwcm9wOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5mb3JtUGFyYW0/LmdldChbcHJvcF0pPy5lcnJvcnM7XHJcblxyXG4gICAgaWYgKCFlcnJvcnMgfHwgT2JqZWN0LmtleXMoZXJyb3JzKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIGVycm9ycz8uWydzZXJ2ZXJFcnJvciddIHx8ICdJTlZBTElEX0ZPUk1BVCc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGVycm9ycylbMF07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0Q291bnRyeUNvZGVMaXN0KCkge1xyXG4gICAgcmV0dXJuIFsnYWYnLCAnYXgnLCAnYWwnLCAnZHonLCAnYXMnLCAnYWQnLCAnYW8nLCAnYWknLCAnYXEnLCAnYWcnLCAnYXInLCAnYW0nLCAnYXcnLCAnYXUnLCAnYXQnLCAnYXonLFxyXG4gICAgICAnYnMnLCAnYmgnLCAnYmQnLCAnYmInLCAnYnknLCAnYmUnLCAnYnonLCAnYmonLCAnYm0nLCAnYnQnLCAnYm8nLCAnYmEnLCAnYncnLCAnYnYnLCAnYnInLCAnaW8nLCAnYm4nLFxyXG4gICAgICAnYmcnLCAnYmYnLCAnYmknLCAna2gnLCAnY20nLCAnY2EnLCAnY3YnLCAna3knLCAnY2YnLCAndGQnLCAnY2wnLCAnY24nLCAnY3gnLCAnY2MnLCAnY28nLCAna20nLCAnY2cnLFxyXG4gICAgICAnY2QnLCAnY2snLCAnY3InLCAnY2knLCAnaHInLCAnY3UnLCAnY3knLCAnY3onLCAnZGsnLCAnZGonLCAnZG0nLCAnZG8nLCAnZWMnLCAnZWcnLCAnc3YnLCAnZ3EnLCAnZXInLFxyXG4gICAgICAnZWUnLCAnZXQnLCAnZmsnLCAnZm8nLCAnZmonLCAnZmknLCAnZnInLCAnZ2YnLCAncGYnLCAndGYnLCAnZ2EnLCAnZ20nLCAnZ2UnLCAnZGUnLCAnZ2gnLCAnZ2knLCAnZ3InLFxyXG4gICAgICAnZ2wnLCAnZ2QnLCAnZ3AnLCAnZ3UnLCAnZ3QnLCAnZ2cnLCAnZ24nLCAnZ3cnLCAnZ3knLCAnaHQnLCAnaG0nLCAndmEnLCAnaG4nLCAnaGsnLCAnaHUnLCAnaXMnLCAnaW4nLFxyXG4gICAgICAnaWQnLCAnaXInLCAnaXEnLCAnaWUnLCAnaW0nLCAnaXQnLCAnam0nLCAnanAnLCAnamUnLCAnam8nLCAna3onLCAna2UnLCAna2knLCAna3InLCAna3cnLCAna2cnLCAnbGEnLFxyXG4gICAgICAnbHYnLCAnbGInLCAnbHMnLCAnbHInLCAnbHknLCAnbGknLCAnbHQnLCAnbHUnLCAnbW8nLCAnbWsnLCAnbWcnLCAnbXcnLCAnbXknLCAnbXYnLCAnbWwnLCAnbXQnLCAnbWgnLFxyXG4gICAgICAnbXEnLCAnbXInLCAnbXUnLCAneXQnLCAnbXgnLCAnZm0nLCAnbWQnLCAnbWMnLCAnbW4nLCAnbWUnLCAnbXMnLCAnbWEnLCAnbXonLCAnbW0nLCAnbmEnLCAnbnInLCAnbnAnLFxyXG4gICAgICAnbmwnLCAnYW4nLCAnbmMnLCAnbnonLCAnbmknLCAnbmUnLCAnbmcnLCAnbnUnLCAnbmYnLCAnbXAnLCAnbm8nLCAnb20nLCAncGsnLCAncHcnLCAncHMnLCAncGEnLCAncGcnLFxyXG4gICAgICAncHknLCAncGUnLCAncGgnLCAncG4nLCAncGwnLCAncHQnLCAncHInLCAncWEnLCAncmUnLCAncm8nLCAncnUnLCAncncnLCAnYmwnLCAnc2gnLCAna24nLCAnbGMnLCAnbWYnLFxyXG4gICAgICAncG0nLCAndmMnLCAnd3MnLCAnc20nLCAnc3QnLCAnc2EnLCAnc24nLCAncnMnLCAnc2MnLCAnc2wnLCAnc2cnLCAnc2snLCAnc2knLCAnc2InLCAnc28nLCAnemEnLCAnZ3MnLFxyXG4gICAgICAnZXMnLCAnbGsnLCAnc2QnLCAnc3InLCAnc2onLCAnc3onLCAnc2UnLCAnY2gnLCAnc3knLCAndHcnLCAndGonLCAndHonLCAndGgnLCAndGwnLCAndGcnLCAndGsnLCAndG8nLFxyXG4gICAgICAndHQnLCAndG4nLCAndHInLCAndG0nLCAndGMnLCAndHYnLCAndWcnLCAndWEnLCAnYWUnLCAnZ2InLCAndXMnLCAndW0nLCAndXknLCAndXonLCAndnUnLCAndmUnLCAndm4nLFxyXG4gICAgICAndmcnLCAndmknLCAnd2YnLCAnZWgnLCAneWUnLCAnem0nLCAnencnXTtcclxuICB9XHJcblxyXG5cclxuICBmcmllbmRseU5hbWUoZnVsbFBhdGg6IHN0cmluZyAsIHN1YlBhdGg6IHN0cmluZyAsIGl0ZW06IHN0cmluZyl7XHJcbiAgICByZXR1cm4gIGZ1bGxQYXRoLnN1YnN0cmluZygwLCBmdWxsUGF0aC5pbmRleE9mKHN1YlBhdGgpKSArIGl0ZW0gO1xyXG4gIH1cclxuXHJcbiAgc2hvd1ZhbHVlKGRlZmF1bHRzLCBmaWVsZCl7XHJcbiAgICByZXR1cm4gIHRoaXMuZnJpZW5kbHlOYW1lKGZpZWxkLmxhYmVsICwgZmllbGQucHJvcGVydHkgLCBkZWZhdWx0c1tmaWVsZC5wcm9wZXJ0eV0pO1xyXG4gIH1cclxuXHJcbiAgc2hvd0Vycm9yKHByb3A6IHN0cmluZykge1xyXG4gICAgY29uc3QgQ09OVFJPTCA9IHRoaXMuZm9ybVBhcmFtPy5nZXQoW3Byb3BdKTtcclxuICAgIHJldHVybiAoQ09OVFJPTD8udmFsdWUgfHwgQ09OVFJPTD8udmFsdWUgPT09IDApICYmIENPTlRST0w/LnN0YXR1cyA9PT0gJ0lOVkFMSUQnO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJGaWVsZFZhbHVlKHByb3A6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtUGFyYW0/LmdldChbcHJvcF0pPy5zZXRWYWx1ZSgnJyk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVmYXVsdHMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0TGFibGVzKCkge1xyXG4gICAgdGhpcy5maWVsZHMuZm9yRWFjaChmID0+IHtcclxuICAgICAgaWYgKGYudmlzaWJsZSkge1xyXG4gICAgICAgIGYubGFiZWwgPSB0aGlzLmxhYmVsS2V5KGYpO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuc2NyZWVuRmllbGRzLmhhcyhmLnJvdykpIHtcclxuICAgICAgICAgIHRoaXMuc2NyZWVuRmllbGRzLnNldChmLnJvdywgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNjcmVlbkZpZWxkcy5nZXQoZi5yb3cpIS5wdXNoKGYpO1xyXG5cclxuICAgICAgICBpZiAoZi5jYXNjYWRlZEJ5KSB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1QYXJhbT8uZ2V0KFtmLmNhc2NhZGVkQnldKT8udmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVBhcmFtPy5nZXQoW2YucHJvcGVydHldKT8ucGF0Y2hWYWx1ZShudWxsKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuc2NyZWVuRmllbGRzLnNpemU7IGkrKykge1xyXG4gICAgICB0aGlzLmNhbGNGbGV4U2l6ZShpKTtcclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuc2NyZWVuRmllbGRzKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWxjRmxleFNpemUoaTogbnVtYmVyKXtcclxuICAgIC8vIFByZXNlcnZlIGV4cGxpY2l0IGZpZWxkU2l6ZSB2YWx1ZXMgb25seS4gRm9yIGZpZWxkcyB3aXRob3V0IGZpZWxkU2l6ZSwgYWxsb3dcclxuICAgIC8vIHRoZSBsYXlvdXQgdG8gYXV0by1zaXplIHZpYSBmbGV4IChoYW5kbGVkIGluIHRoZSB0ZW1wbGF0ZS9DU1MpLlxyXG4gICAgLy8gSW50ZW50aW9uYWxseSBkbyBub3RoaW5nIGhlcmUgc28gdGhhdCB1bnNwZWNpZmllZCBmaWVsZHMgcmVtYWluIGZsZXhpYmxlLlxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVuY3lQYXR0ZXJuKGZpZWxkOiBGaWVsZEluZm8pIHtcclxuICAgIC8vIGNvbnN0IGRlY2ltYWxQbGFjZXMgID0gdGhpcy5hdXRoU2VydmljZT8ubXlDdXJyZW5jaWVzPy5maW5kKGMgPT4gYy5rZXkgPT09IHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5jdXJyZW5jeSk/LnZhbHVlKT8uY3VycmVuY3lOdW1PZkRlY2ltYWxQYXR0ZXJuIHx8IDM7XHJcbiAgICBjb25zdCBkZWNpbWFsUGxhY2VzICA9IDM7XHJcbiAgICByZXR1cm4gJ15cXFxcZCooPzpbLixdXFxcXGR7MSwnICsgZGVjaW1hbFBsYWNlcyArICd9KT8kJztcclxuICB9XHJcblxyXG4gIHNwbGl0dGVkQ2hpcHMoZm9ybTogRm9ybUdyb3VwLCBmaWVsZE5hbWU6IHN0cmluZyk6c3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIGZvcm0uZ2V0KGZpZWxkTmFtZSkudmFsdWUgPT09ICcnID8gW106IGZvcm0uZ2V0KGZpZWxkTmFtZSkudmFsdWUudHJpbSgpLnNwbGl0KCc7Jyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZml4QXJhYmljTnVtYmVycyhzdHI6IGFueSkge1xyXG4gICAgLy8gaWYodHlwZW9mIHN0ciA9PT0gJ3N0cmluZycpIHtcclxuICAgIC8vICAgICBzdHIgPSBzdHIucmVwbGFjZSgvKFvZoNmh2aLZo9mk2aXZptmn2ajZqV0pfChb27Dbsduy27PbtNu127bbt9u427ldKS9nLCAobSwgJDEsICQyKSA9PiBtLmNoYXJDb2RlQXQoMCkgLSAoJDEgPyAxNjMyIDogMTc3NikpO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gY29uc29sZS5sb2coc3RyKTtcclxuICB9XHJcblxyXG4gIGxpc3RTaG93VmFsdWUoZGVmYXVsdHM6IGFueSwgZmllbGQ6IEZpZWxkSW5mbykge1xyXG4gICAgcmV0dXJuIGRlZmF1bHRzW2ZpZWxkLnByb3BlcnR5XSA/IHRoaXMuc2hvd1ZhbHVlKGRlZmF1bHRzLCBmaWVsZCkgOiAnJztcclxuICB9XHJcblxyXG4gIHJlbW92ZUNoaXBzSXRlbShmb3JtOiBGb3JtR3JvdXAsIGZpZWxkTmFtZTogc3RyaW5nLCBpZHg6IG51bWJlcikge1xyXG4gICAgY29uc3QgZW1haWxzID0gdGhpcy5zcGxpdHRlZENoaXBzKGZvcm0sIGZpZWxkTmFtZSk7XHJcbiAgICBpZiAoZW1haWxzLmxlbmd0aCA+PSAxKXtcclxuICAgICAgZW1haWxzLnNwbGljZShpZHgsMSk7XHJcbiAgICB9XHJcbiAgICBsZXQgY2xlYW5lZEVtYWlscyA9IGVtYWlscy5qb2luKFwiO1wiKTtcclxuICAgIGZvcm0uZ2V0KGZpZWxkTmFtZSkuc2V0VmFsdWUoY2xlYW5lZEVtYWlscyk7XHJcbiAgfVxyXG5cclxuICBleHRyYWN0RmllbGROYW1lKGVsZW1lbnQ6IGFueSwgcHJvcGVydHk6IHN0cmluZykge1xyXG4gICAgaWYgKHByb3BlcnR5Py5pbmNsdWRlcygnLicpKSB7XHJcbiAgICAgIHJldHVybiBwcm9wZXJ0eS5zcGxpdCgnLicpLnJlZHVjZSgoYWNjLCBwYXJ0KSA9PiBhY2MgJiYgYWNjW3BhcnRdLCBlbGVtZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBlbGVtZW50W3Byb3BlcnR5XTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzUmVhZG9ubHlUZXh0VmFsdWVFbXB0eShkZWZhdWx0czogYW55LCBmaWVsZDogRmllbGRJbmZvKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpO1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gdmFsdWUudHJpbSgpID09PSAnJztcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGdldFJlYWRvbmx5RGF0ZUZvcm1hdChmaWVsZDogRmllbGRJbmZvKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBmaWVsZC5yZWFkb25seURhdGVEaXNwbGF5ID09PSAnZGF0ZXRpbWUnID8gJ2RkL01NL3l5eXkgSEg6bW0nIDogJ2RkL01NL3l5eXknO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlTXVsdGlTdGF0ZUZpbHRlcihwcm9wZXJ0eTogc3RyaW5nLCBjb2RlOiBzdHJpbmcsIGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmZvcm1QYXJhbS5nZXQocHJvcGVydHkpO1xyXG4gICAgaWYgKCFjdHJsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHJhdyA9IGN0cmwudmFsdWU7XHJcbiAgICBjb25zdCBjdXI6IHN0cmluZ1tdID0gQXJyYXkuaXNBcnJheShyYXcpID8gWy4uLnJhd10gOiBbXTtcclxuICAgIGlmIChjaGVja2VkKSB7XHJcbiAgICAgIGlmICghY3VyLmluY2x1ZGVzKGNvZGUpKSB7XHJcbiAgICAgICAgY3VyLnB1c2goY29kZSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlkeCA9IGN1ci5pbmRleE9mKGNvZGUpO1xyXG4gICAgICBpZiAoaWR4ID49IDApIHtcclxuICAgICAgICBjdXIuc3BsaWNlKGlkeCwgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGN0cmwuc2V0VmFsdWUoY3VyKTtcclxuICB9XHJcblxyXG4gIGlzTXVsdGlTdGF0ZVNlbGVjdGVkKHByb3BlcnR5OiBzdHJpbmcsIGNvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgcmF3ID0gdGhpcy5mb3JtUGFyYW0uZ2V0KHByb3BlcnR5KT8udmFsdWU7XHJcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShyYXcpICYmIHJhdy5pbmNsdWRlcyhjb2RlKTtcclxuICB9XHJcblxyXG4gIC8qKiBUcmlnZ2VyIGxhYmVsOiBlbXB0eSA9PiBjYWxsZXIgc2hvd3MgcGxhY2Vob2xkZXI7IGVsc2Ugc2hvcnQgc3VtbWFyeS4gKi9cclxuICBnZXRNdWx0aVN0YXRlRmlsdGVyVHJpZ2dlckxhYmVsKGZpZWxkOiBGaWVsZEluZm8pOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmF3ID0gdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8udmFsdWU7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdyA6IFtdO1xyXG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMucGFnZUluZm8/LmxhYmVsc1NlY3Rpb24gfHwgJyc7XHJcbiAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPD0gMikge1xyXG4gICAgICByZXR1cm4gc2VsZWN0ZWRcclxuICAgICAgICAubWFwKGMgPT4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoc2VjdGlvbiA/IGAke3NlY3Rpb259LiR7Y31gIDogYykpXHJcbiAgICAgICAgLmpvaW4oJywgJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0ZJTFRFUi1CVUlMREVSLm11bHRpU3RhdHVzU3VtbWFyeScsIHsgY291bnQ6IHNlbGVjdGVkLmxlbmd0aCB9KTtcclxuICB9XHJcblxyXG4gIHN0YXR1c09wdGlvbkxhYmVsS2V5KGZpZWxkOiBGaWVsZEluZm8sIGNvZGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5wYWdlSW5mbz8ubGFiZWxzU2VjdGlvbjtcclxuICAgIHJldHVybiBzZWN0aW9uID8gYCR7c2VjdGlvbn0uJHtjb2RlfWAgOiBjb2RlO1xyXG4gIH1cclxuXHJcbiAgZ2V0TXVsdGlTdGF0ZVJlYWRvbmx5U3VtbWFyeShmaWVsZDogRmllbGRJbmZvLCBkZWZhdWx0czogYW55KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHJhdyA9IHRoaXMuZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWQgPSBBcnJheS5pc0FycmF5KHJhdykgPyByYXcgOiBbXTtcclxuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLnBhZ2VJbmZvPy5sYWJlbHNTZWN0aW9uIHx8ICcnO1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkXHJcbiAgICAgIC5tYXAoYyA9PiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChzZWN0aW9uID8gYCR7c2VjdGlvbn0uJHtjfWAgOiBjKSlcclxuICAgICAgLmpvaW4oJywgJyk7XHJcbiAgfVxyXG5cclxuICBnZXRNdWx0aVZhbHVlKGZpZWxkOiBGaWVsZEluZm8pIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpPy52YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVFbWFpbChlbWFpbCkge1xyXG4gICAgdmFyIHJlID0gL14oKFtePD4oKVxcW1xcXVxcXFwuLDs6XFxzQFwiXSsoXFwuW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLztcclxuICAgIHJldHVybiByZS50ZXN0KFN0cmluZyhlbWFpbCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgfVxyXG5cclxuICBhZGRFbWFpbFRvQ2hpcHMoZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50LCBmb3JtOiBGb3JtR3JvdXAsIGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcblxyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC5pbnB1dDtcclxuICAgIGNvbnN0IHZhbHVlID0gZXZlbnQudmFsdWU7XHJcbiAgICBjb25zdCBpdGVtcyA9IHZhbHVlLnNwbGl0KCc7Jyk7XHJcbiAgICAvLyB2YWx1ZS5zcGxpdCgnICcpO1xyXG4gICAgaXRlbXMuZm9yRWFjaChpdG0gPT4ge1xyXG4gICAgICBpZiAodGhpcy52YWxpZGF0ZUVtYWlsKChpdG0gfHwgJycpLnRyaW0oKSkpIHtcclxuICAgICAgICBjb25zdCB4ID0gdGhpcy5zcGxpdHRlZENoaXBzKGZvcm0sIGZpZWxkTmFtZSk7XHJcbiAgICAgICAgeC5wdXNoKGl0bSk7XHJcbiAgICAgICAgZm9ybS5nZXQoZmllbGROYW1lKS5wYXRjaFZhbHVlKHguam9pbignOycpKTtcclxuICAgICAgICBpZiAoaW5wdXQpIHtcclxuICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBleHRyYWN0SnNvbkZpZWxkTmFtZShkZWZhdWx0czogYW55LCBwcm9wZXJ0eTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCB4PSB0aGlzLmV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIHByb3BlcnR5KTtcclxuICAgIGlmICh4Py5sZW5ndGggPiAwKVxyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh4KTtcclxuICAgIGVsc2UgcmV0dXJuICd7fSc7XHJcbiAgfVxyXG5cclxuICBnZXRPcHRpb25WYWx1ZShpdGVtOiBhbnkpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnID9cclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0RGVmYXVsdExhbmcoKSA9PT0gJ2VuJyA/IGl0ZW0uZW5nbGlzaE5hbWUgOiBpdGVtLmFyYWJpY05hbWVcclxuICAgICAgICA6IGl0ZW07XHJcbiAgICByZXR1cm4gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRIeXBlclRleHRFdmVudCgpIHtcclxuICAgIHRoaXMuaHlwZXJUZXh0RXZlbnQuZW1pdCh0cnVlKTtcclxuICB9XHJcblxyXG4gIGFkZChldmVudDogTWF0Q2hpcElucHV0RXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnZhbHVlIHx8ICcnKS50cmltKCk7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgaWYgKHRoaXMuZXF1YXRpb25PcGVyYXRvcnMuaW5jbHVkZXModmFsdWUpIHx8ICF0aGlzLmVxdWF0aW9uVmFsdWVzKCkuaW5jbHVkZXModmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy5lcXVhdGlvblZhbHVlcy51cGRhdGUoZXF1YXRpb25WYWx1ZXMgPT4gWy4uLmVxdWF0aW9uVmFsdWVzLCB2YWx1ZV0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZHNJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLmN1cnJlbnRFcXVhdGlvblZhbHVlLnNldCgnJyk7XHJcbiAgICB0aGlzLnVwZGF0ZUVxdWF0aW9uT3B0aW9ucygpO1xyXG5cclxuICB9XHJcblxyXG4gIHJlbW92ZShpdGVtOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZXF1YXRpb25WYWx1ZXMudXBkYXRlKGVxdWF0aW9uVmFsdWVzID0+IHtcclxuICAgICAgaWYgKGluZGV4IDwgMCkge1xyXG4gICAgICAgIHJldHVybiBlcXVhdGlvblZhbHVlcztcclxuICAgICAgfVxyXG5cclxuICAgICAgZXF1YXRpb25WYWx1ZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgdGhpcy5hbm5vdW5jZXIuYW5ub3VuY2UoYFJlbW92ZWQgJHtpdGVtfWApO1xyXG4gICAgICByZXR1cm4gWy4uLmVxdWF0aW9uVmFsdWVzXTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy51cGRhdGVFcXVhdGlvbk9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdGVkKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZHtcclxuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSBldmVudC5vcHRpb24udmlld1ZhbHVlLnRyaW0oKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuZXF1YXRpb25PcGVyYXRvcnMuaW5jbHVkZXMoc2VsZWN0ZWRWYWx1ZSkgJiYgIXRoaXMuZXF1YXRpb25WYWx1ZXMoKS5pbmNsdWRlcyhzZWxlY3RlZFZhbHVlKSkge1xyXG4gICAgICB0aGlzLmVxdWF0aW9uVmFsdWVzLnVwZGF0ZShlcXVhdGlvblZhbHVlcyA9PiBbLi4uZXF1YXRpb25WYWx1ZXMsIHNlbGVjdGVkVmFsdWVdKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5lcXVhdGlvbk9wZXJhdG9ycy5pbmNsdWRlcyhzZWxlY3RlZFZhbHVlKSkge1xyXG4gICAgICB0aGlzLmVxdWF0aW9uVmFsdWVzLnVwZGF0ZShlcXVhdGlvblZhbHVlcyA9PiBbLi4uZXF1YXRpb25WYWx1ZXMsIHNlbGVjdGVkVmFsdWVdKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmN1cnJlbnRFcXVhdGlvblZhbHVlLnNldCgnJyk7XHJcbiAgICBldmVudC5vcHRpb24uZGVzZWxlY3QoKTtcclxuICAgIHRoaXMuZmllbGRzSW5wdXQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gICAgdGhpcy51cGRhdGVFcXVhdGlvbk9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUVxdWF0aW9uT3B0aW9ucygpe1xyXG4gICAgdGhpcy5yZWZsZWN0RXF1YXRpb25WYWx1ZU9uRm9ybSgpO1xyXG5cclxuICAgIGxldCB1cGRhdGVkRmllbGRzOiBzdHJpbmdbXTtcclxuICAgIGlmICh0aGlzLmVxdWF0aW9uVmFsdWVzKCkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHVwZGF0ZWRGaWVsZHMgPSB0aGlzLmdldE5hbWVzRnJvbVN1Z2dlc3RlZEVxdWF0aW9uRmllbGRzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgbGFzdEVsZW1lbnQgPSB0aGlzLmVxdWF0aW9uVmFsdWVzKClbdGhpcy5lcXVhdGlvblZhbHVlcygpLmxlbmd0aCAtIDFdO1xyXG4gICAgICBpZiAodGhpcy5lcXVhdGlvbk9wZXJhdG9ycy5pbmNsdWRlcyhsYXN0RWxlbWVudCkpIHtcclxuICAgICAgICB1cGRhdGVkRmllbGRzID0gdGhpcy5nZXROYW1lc0Zyb21TdWdnZXN0ZWRFcXVhdGlvbkZpZWxkcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVwZGF0ZWRGaWVsZHMgPSB0aGlzLmVxdWF0aW9uT3BlcmF0b3JzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyBjb25zb2xlLmxvZygnKioqKionLCB1cGRhdGVkRmllbGRzKTtcclxuICAgIHRoaXMuYWxsRXF1YXRpb25GaWVsZHMubmV4dCh1cGRhdGVkRmllbGRzKTtcclxuICB9XHJcblxyXG4gIGdldE5hbWVzRnJvbVN1Z2dlc3RlZEVxdWF0aW9uRmllbGRzKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLmVxdWF0aW9uU3VnZ2VzdGVkRmllbGRzPy5tYXAoZmllbGQgPT4gZmllbGQubmFtZSk7XHJcbiAgfVxyXG5cclxuICByZWZsZWN0RXF1YXRpb25WYWx1ZU9uRm9ybSgpIHtcclxuICAgIGlmICh0aGlzLmZvcm1QYXJhbSAmJiB0aGlzLmZvcm1QYXJhbS5nZXQoJ2ZpZWxkVmFsdWUnKSkge1xyXG4gICAgICB0aGlzLmZvcm1QYXJhbS5nZXQoJ2ZpZWxkVmFsdWUnKS5zZXRWYWx1ZSh0aGlzLmVxdWF0aW9uVmFsdWVzKCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gY29uc29sZS5sb2coJ0Zvcm0gb3IgZmllbGRWYWx1ZSBpcyBub3QgYXZhaWxhYmxlLicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2hlY2tFcXVhdGlvbihmaWVsZDogRmllbGRJbmZvLCAkZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnJGV2ZW50JywgJGV2ZW50KTtcclxuICAgIC8vIHRyeSB7XHJcbiAgICAvLyAgIGV2YWx1YXRlKGVxdWF0aW9uLnJlcGxhY2UoL1thLXpBLVowLTldKy9nLCAnMScpKTsgLy8gUmVwbGFjZSB2YXJpYWJsZXMgd2l0aCBkdW1teSB2YWx1ZXNcclxuICAgIC8vICAgdGhpcy5mb3JtR3JvdXBzW2luZGV4XS5nZXQoJ3h5eicpLnNldEVycm9ycyhudWxsKTtcclxuICAgIC8vICAgY29uc29sZS5sb2coJ3ZhbGlkICcsIGVxdWF0aW9uKVxyXG4gICAgLy8gfSBjYXRjaCAoZSkge1xyXG4gICAgLy8gICB0aGlzLmZvcm1Hcm91cHNbaW5kZXhdLmdldCgneHl6Jykuc2V0RXJyb3JzKHtzZXJ2ZXJFcnJvcjogJ2luY29tcGxldGUgJ30pO1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygnYmFkICcsIGVxdWF0aW9uKVxyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcbiAgZ2V0VmlldyhmaWVsZCk6ICdtb250aCcgfCAneWVhcicgfCAnbXVsdGkteWVhcicge1xyXG4gICAgcmV0dXJuIGZpZWxkLnBhdHRlcm4gfHwgJ21vbnRoJztcclxuICB9XHJcblxyXG4gIHNldE1vbnRoQW5kWWVhcihub3JtYWxpemVkTW9udGhBbmRZZWFyOiBNb21lbnQsIHBpY2tlcjogTWF0RGF0ZXBpY2tlcjxNb21lbnQ+LCBmaWVsZCkge1xyXG4gICAgY29uc29sZS5sb2coJ2ZpZWxkLnBhdHRlcm4nLCBmaWVsZC5wYXR0ZXJuKVxyXG4gICAgaWYgKGZpZWxkLnBhdHRlcm4gPT09ICdtdWx0aS15ZWFyJykge1xyXG4gICAgICBjb25zb2xlLmxvZygnaGknKVxyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IEZvcm1Db250cm9sKG1vbWVudCgpKTtcclxuICAgICAgY29uc3QgY3RybFZhbHVlID0gZGF0ZS52YWx1ZTtcclxuICAgICAgY3RybFZhbHVlLnllYXIobm9ybWFsaXplZE1vbnRoQW5kWWVhci55ZWFyKCkpO1xyXG4gICAgICBjdHJsVmFsdWUubW9udGgoMSk7XHJcbiAgICAgIGN0cmxWYWx1ZS5kYXlPZlllYXIoMSk7XHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSkuc2V0VmFsdWUoY3RybFZhbHVlKVxyXG4gICAgICBwaWNrZXIuY2xvc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEFjY2VwdGVkRmlsZVR5cGVzKGZpZWxkOiBGaWVsZEluZm8pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFmaWVsZC5zdXBwb3J0ZWRUeXBlcykge1xyXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG4gICAgLy8gQ29udmVydCBcIi5qcGcsLnBuZywucGRmXCIgZm9ybWF0IHRvIFwiaW1hZ2UvanBlZyxpbWFnZS9wbmcsYXBwbGljYXRpb24vcGRmXCIgb3Iga2VlcCBhcyBpc1xyXG4gICAgLy8gRm9yIHNpbXBsaWNpdHksIHdlJ2xsIHBhc3MgdGhlIHN1cHBvcnRlZFR5cGVzIGFzLWlzIGFuZCBsZXQgdGhlIGJyb3dzZXIgaGFuZGxlIGl0XHJcbiAgICAvLyBUaGUgYnJvd3NlciBhY2NlcHRzIGJvdGggZm9ybWF0c1xyXG4gICAgcmV0dXJuIGZpZWxkLnN1cHBvcnRlZFR5cGVzO1xyXG4gIH1cclxuXHJcbiAgb25BdHRhY2htZW50RmlsZVNlbGVjdGVkKGZpbGU6IEZpbGUgfCBudWxsLCBmaWVsZDogRmllbGRJbmZvKTogdm9pZCB7XHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICAvLyBWYWxpZGF0ZSBmaWxlIHR5cGUgaWYgc3VwcG9ydGVkVHlwZXMgaXMgc3BlY2lmaWVkXHJcbiAgICAgIGlmIChmaWVsZC5zdXBwb3J0ZWRUeXBlcykge1xyXG4gICAgICAgIGNvbnN0IGFsbG93ZWRUeXBlcyA9IGZpZWxkLnN1cHBvcnRlZFR5cGVzLnNwbGl0KCcsJykubWFwKHQgPT4gdC50cmltKCkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9ICcuJyArIGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGlmICghYWxsb3dlZFR5cGVzLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pKSB7XHJcbiAgICAgICAgICAvLyBGaWxlIHR5cGUgbm90IHN1cHBvcnRlZCAtIGNvdWxkIHNob3cgZXJyb3IgbWVzc2FnZVxyXG4gICAgICAgICAgY29uc29sZS53YXJuKGBGaWxlIHR5cGUgJHtmaWxlRXh0ZW5zaW9ufSBpcyBub3Qgc3VwcG9ydGVkLiBBbGxvd2VkIHR5cGVzOiAke2ZpZWxkLnN1cHBvcnRlZFR5cGVzfWApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gVXBkYXRlIGZvcm0gY29udHJvbCBpZiBpdCBleGlzdHNcclxuICAgICAgaWYgKHRoaXMuZm9ybVBhcmFtICYmIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSkpIHtcclxuICAgICAgICB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZShmaWxlKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRW1pdCBhdHRhY2htZW50IGV2ZW50XHJcbiAgICAgIHRoaXMuYXR0YWNobWVudEVtaXR0ZXIuZW1pdCh7XHJcbiAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgICBmaWVsZDogZmllbGQsXHJcbiAgICAgICAgYXR0YWNobWVudFR5cGU6IGZpZWxkLmF0dGFjaG1lbnRUeXBlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gQ2xlYXIgdGhlIGZvcm0gY29udHJvbCBpZiBmaWxlIGlzIHJlbW92ZWRcclxuICAgICAgaWYgKHRoaXMuZm9ybVBhcmFtICYmIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSkpIHtcclxuICAgICAgICB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpPy5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibWFpbi1mb3JtLWNhbnZhc1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJmb3JtLXdyYXBwZXJcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZWZhdWx0c1wiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZWRpdGFibGU7IGVsc2UgcmVhZG9ubHlWaWV3XCIgY2xhc3M9XCJmb3JtLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtXCIgY2xhc3M9XCJmb3JtLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2Ygc2NyZWVuRmllbGRzIHwga2V5dmFsdWVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHJvdy52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1jb2x1bW5cIiBbc3R5bGUuZmxleF09XCJmaWVsZC5maWVsZFNpemUgPyAoJzAgMCAnICsgZmllbGQuZmllbGRTaXplICsgJyUnKSA6ICcxIDEgMCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpZWxkLnR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRhdGVDaGFuZ2UpPVwiZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSkuc2V0VmFsdWUoJGV2ZW50LnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7ZmllbGQucHJvcGVydHl9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidlcnJvci0nICsgZmllbGQucHJvcGVydHlcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJwaWNrZXJcIj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNwaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0YXJ0Vmlld109XCJnZXRWaWV3KGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ZWFyU2VsZWN0ZWQpPVwic2V0TW9udGhBbmRZZWFyKCRldmVudCwgcGlja2VyLCBmaWVsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbENsYXNzPVwiZXhhbXBsZS1tb250aC1waWNrZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1kYXRlcGlja2VyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwaG9uZS1udW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIGNsYXNzPVwiY3VzdG9tLW5neC1tYXQtaW50bC10ZWwtaW5wdXRcIiAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaG9uZS1pbnB1dC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmd4LW1hdC1pbnRsLXRlbC1pbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dFBsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZlcnJlZENvdW50cmllc109XCJbJ3FhJ11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlUGxhY2Vob2xkZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGVTZWFyY2hdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvbmx5Q291bnRyaWVzXT1cImdldENvdW50cnlDb2RlTGlzdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidlcnJvci0nICsgZmllbGQucHJvcGVydHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmd4LW1hdC1pbnRsLXRlbC1pbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpYmFuLXRleHQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRleHRSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncGFzc3dvcmQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cImhpZGUgJiYgIWZpZWxkLmRpc2FibGVkID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBtYXRTdWZmaXgtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImhpZGUgPSAhaGlkZVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaGlkZSA/ICd2aXNpYmlsaXR5X29mZicgOiAndmlzaWJpbGl0eScgfX0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1pY29uPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJmaWVsZC5zaG93U2VhcmNoSWNvblwiIG1hdFByZWZpeD5zZWFyY2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImFwcC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXVwKT1cImZpeEFyYWJpY051bWJlcnMoJGV2ZW50LnRhcmdldClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLnNob3dTZWFyY2hJY29uICYmICFmaWVsZC5yZWFkb25seSAmJiAoZm9ybVBhcmFtPy5nZXQoW2ZpZWxkLnByb3BlcnR5XSk/LnZhbHVlID8/ICcnKSAhPT0gJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLWljb24tc3VmZml4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjbGVhci1pY29uLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbGVhckZpZWxkVmFsdWUoZmllbGQucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aS1zdGF0ZS1jaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJcIiBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJfX3RyaWdnZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdE1lbnVUcmlnZ2VyRm9yXT1cInN0YXR1c011bHRpTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXVsdGktc3RhdGUtZmlsdGVyX190cmlnZ2VyLXRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRNdWx0aVN0YXRlRmlsdGVyVHJpZ2dlckxhYmVsKGZpZWxkKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXVsdGktc3RhdGUtZmlsdGVyX19jaGV2cm9uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+a2V5Ym9hcmRfYXJyb3dfZG93bjwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1tZW51ICNzdGF0dXNNdWx0aU1lbnU9XCJtYXRNZW51XCIgY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJfX21lbnUtcGFuZWxcIiBbaGFzQmFja2Ryb3BdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlcl9fbWVudS1pbm5lclwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2RlIG9mIGZpZWxkLmxpc3RPcHRpb25zIHx8IFtdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlcl9fcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc011bHRpU3RhdGVTZWxlY3RlZChmaWVsZC5wcm9wZXJ0eSwgY29kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJ0b2dnbGVNdWx0aVN0YXRlRmlsdGVyKGZpZWxkLnByb3BlcnR5LCBjb2RlLCAkZXZlbnQuY2hlY2tlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJfX3BpbGwgc3RhdGVUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHN0YXR1c09wdGlvbkxhYmVsS2V5KGZpZWxkLCBjb2RlKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGlwLWxpc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGlwLWdyaWQgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1yb3dcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtYWlsIG9mIHNwbGl0dGVkQ2hpcHMoZm9ybVBhcmFtLCBmaWVsZC5wcm9wZXJ0eSk7IGxldCBpZHggPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cInJlbW92YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVtb3ZlZCk9XCJyZW1vdmVDaGlwc0l0ZW0oZm9ybVBhcmFtLCBmaWVsZC5wcm9wZXJ0eSwgaWR4KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbWFpbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdENoaXBSZW1vdmUgKm5nSWY9XCJyZW1vdmFibGVcIj5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXAtcm93PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIiBbbWF0Q2hpcElucHV0Rm9yXT1cIm51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dEFkZE9uQmx1cl09XCJhZGRPbkJsdXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkRW1haWxUb0NoaXBzKCRldmVudCwgZm9ybVBhcmFtLCBmaWVsZC5wcm9wZXJ0eSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIiAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Ftb3VudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiYW1vdW50UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImFwcC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZXF1ZW5jZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlZmVyZW5jZUF0dHJpYnV0ZVRydWUoZmllbGQucHJvcGVydHksICdhdXRvR2VuZXJhdGVkJyk7IGVsc2Ugbm9TZXF1ZW5jZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWRcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9TZXF1ZW5jZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWRcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dGFyZWEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRleHRhcmVhUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2RrRm9jdXNJbml0aWFsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrVGV4dGFyZWFBdXRvc2l6ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RrQXV0b3NpemVNaW5Sb3dzPVwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidlcnJvci0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibnVtYmVyUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImFwcC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heERpZ2l0c109XCJmaWVsZC5tYXhMZW5ndGhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidlcnJvci0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVhZG9ubHkgPyBmYWxzZSA6IGZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhdHRlcm5dPVwiZmllbGQucGF0dGVyblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYmlnZGVjaW1hbCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibnVtYmVyUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0bW9kZT1cIm51bWVyaWNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyc09ubHkgIFttYXhEZWNpbWFsc109XCJmaWVsZC5tYXhEZWNpbWFsc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4RGlnaXRzXT1cImZpZWxkLm1heExlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJmaWVsZC5wYXR0ZXJuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVhZG9ubHkgPyBmYWxzZSA6IGZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGltZVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFwcC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGltZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hlY2tib3hSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDE0cHg7IHBhZGRpbmctdG9wOiAxNHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndG9nZ2xlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b2dnbGVSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29sb3ItcGlja2VyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0QWxpZ249XCJjZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4XCI+e3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWpzLWNvbG9ycGlja2VyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImNvbG9ycGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYWRpby1idXR0b24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInJhZGlvQnV0dG9uUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXJhZGlvLWdyb3VwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tmaWVsZC5wcm9wZXJ0eX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFwcC1yYWRpb1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCI+e3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJhZGlvLWdyb3VwLWN1c3RvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpZWxkLmxpc3RPcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsaXN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCIgc3R5bGU9XCJ3aWR0aDogMTAwJVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7e2ZpZWxkLnByb3BlcnR5fX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVhZG9ubHkgPyBmYWxzZSA6IGZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cImZpZWxkLmRlZmF1bHRMaXN0T3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQudHJhbnNsYXRlOyBlbHNlIGxvb2t1cF9ub190cmFuc2xhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGZpZWxkLmxpc3RPcHRpb25zOyBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZyaWVuZGx5TmFtZShmaWVsZC5sYWJlbCwgZmllbGQucHJvcGVydHksIGl0ZW0pIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNsb29rdXBfbm9fdHJhbnNsYXRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQubGlzdE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0T3B0aW9uVmFsdWUoaXRlbSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhdHRhY2htZW50J1wiIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1hdHRhY2htZW50LXVwbG9hZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjY2VwdGVkVHlwZXNdPVwiZ2V0QWNjZXB0ZWRGaWxlVHlwZXMoZmllbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZVNlbGVjdGVkKT1cIm9uQXR0YWNobWVudEZpbGVTZWxlY3RlZCgkZXZlbnQsIGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJtYXJnaW4tdG9wOiA1cHhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtYXR0YWNobWVudC11cGxvYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBjbGFzcz1cImlxLWVycm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsb29rdXAnXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibG9va3VwUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWF1dG8tY29tcGxldGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtUGFyYW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1cHBvcnRpbmdBdHRyaWJ1dGVzXT1cInN1cHBvcnRpbmdBdHRyaWJ1dGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRWYWx1ZSk9XCJwYXRjaExvb2t1cFZhbHVlKCRldmVudCwgZmllbGQucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1hdXRvLWNvbXBsZXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIiBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXJyZW5jeVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBVbmNvbW1lbnQgYW5kIHVzZSB0aGUgY3VycmVuY3kgY29udHJvbCB3aGVuIHJlYWR5IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxhcHAtY3VycmVuY3lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1dPVwiZm9ybVBhcmFtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJ0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpPy52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFZhbHVlKT1cInBhdGNoQ3VycmVuY3lWYWx1ZSgkZXZlbnQsIGZpZWxkLnByb3BlcnR5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jdXJyZW5jeT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc2VsZWN0J1wiIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm11bHRpU2VsZWN0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLW11bHRpLWF1dG8tY29tcGxldGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtUGFyYW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRWYWx1ZV09XCJnZXRNdWx0aVZhbHVlKGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVmFsdWUpPVwicGF0Y2hNdWx0aVNlbGVjdFZhbHVlKCRldmVudCwgZmllbGQucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1tdWx0aS1hdXRvLWNvbXBsZXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncmljaC10ZXh0J1wiIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFVuY29tbWVudCBhbmQgdXNlIHRoZSByaWNoIHRleHQgZWRpdG9yIHdoZW4gcmVhZHkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxja2VkaXRvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VkaXRvcl09XCJFZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ja2VkaXRvcj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2RpdmlkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2h5cGVyLXRleHQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImdldEh5cGVyVGV4dEV2ZW50KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImh5cGVyLWxpbmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VjdGlvbi10aXRsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJocmRpdmlkZXItbWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2VxdWF0aW9uLWJ1aWxkZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRleHRSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCIgZGlyPVwibHRyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2VxdWF0aW9uLWJ1aWxkZXInXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXRlUmVhZG9ubHlcIi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IHdpZHRoOiAzNTAlXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fTwvbWF0LWxhYmVsPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDQwMCVcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtZ3JpZCAjY2hpcEdyaWQ+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXF1YXRpb25WYWx1ZSBvZiBlcXVhdGlvblZhbHVlcygpOyBsZXQgaSA9IGluZGV4XCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtcm93IChyZW1vdmVkKT1cInJlbW92ZShlcXVhdGlvblZhbHVlLCBpKVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlcXVhdGlvblZhbHVlIH19LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRDaGlwUmVtb3ZlLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncmVtb3ZlICcgKyBlcXVhdGlvblZhbHVlXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1yb3c+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXAtZ3JpZD4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjdXJyZW50RXF1YXRpb25WYWx1ZVwiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwR3JpZFwiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRDaGlwSW5wdXRUb2tlbkVuZCk9XCJhZGQoJGV2ZW50KVwiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIkFkZCBlcXVhdGlvbiB2YWx1ZVwiIC8+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCIgKG9wdGlvblNlbGVjdGVkKT1cInNlbGVjdGVkKCRldmVudClcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWx0ZXJlZEZpZWxkIG9mIChlcXVhdGlvbkZpbHRlcmVkRmllbGRzKCkgfCBhc3luYylcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJmaWx0ZXJlZEZpZWxkXCI+e3sgZmlsdGVyZWRGaWVsZCB9fTwvbWF0LW9wdGlvbj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiaXEtZXJyb3JcIiAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuPG5nLXRlbXBsYXRlICNkYXRlUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB8IGRhdGU6IGdldFJlYWRvbmx5RGF0ZUZvcm1hdChmaWVsZCkgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RpbWVSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZm9ybWF0VGltZVRvRGF0ZShkZWZhdWx0c1tmaWVsZC5wcm9wZXJ0eV0pIHwgZGF0ZTogJ3Nob3J0VGltZScgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Bob25lTnVtYmVyUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGV4dFJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCIgKm5nSWY9XCIhZmllbGQuYWR2YW5jZWRGaWx0ZXJcIj48L2xhYmVsPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmVhZG9ubHlUZXh0VmFsdWVFbXB0eShkZWZhdWx0cywgZmllbGQpICYmIGZpZWxkLmVtcHR5UmVhZG9ubHlQbGFjZWhvbGRlcktleTsgZWxzZSB0ZXh0UmVhZG9ubHlIYXNWYWx1ZVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlIHJlYWRvbmx5LXZhbHVlLS1lbXB0eVwiPnt7IGZpZWxkLmVtcHR5UmVhZG9ubHlQbGFjZWhvbGRlcktleSB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0UmVhZG9ubHlIYXNWYWx1ZT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RleHRhcmVhUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQudGV4dEZvcm1hdCA9PT0gJ2pzb24nOyBlbHNlIG5vcm1hbFRleHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgICAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlIGpzb24tdmlld2VyXCI+XHJcbiAgICAgICAgPG5neC1qc29uLXZpZXdlciBbanNvbl09XCJleHRyYWN0SnNvbkZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpXCIgW2V4cGFuZGVkXT1cInRydWVcIj48L25neC1qc29uLXZpZXdlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuICA8bmctdGVtcGxhdGUgI25vcm1hbFRleHQ+XHJcbiAgICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNudW1iZXJSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpIH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjdXJyZW5jeVJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3JhZGlvQnV0dG9uUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IHRyYW5zbGF0ZUxhYmxlKGRlZmF1bHRzW2ZpZWxkLnByb3BlcnR5XSkgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3JpY2hUZXh0UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiIFtpbm5lckh0bWxdPVwiZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpXCI+PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNjaGVja2JveFJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj5cclxuICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiICpuZ0lmPVwiZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpOyBlbHNlIHNob3dOb1wiPmRvbmU8L21hdC1pY29uPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3Nob3dObz5cclxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0b2dnbGVSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+XHJcbiAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIiAqbmdJZj1cImV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KTsgZWxzZSBzaG93Tm9cIj5kb25lPC9tYXQtaWNvbj5cclxuICAgICAgPG5nLXRlbXBsYXRlICNzaG93Tm8+XHJcbiAgICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbGlzdFJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIiAqbmdJZj1cImZpZWxkLnRyYW5zbGF0ZTsgZWxzZSBub1RyYW5zbGF0ZVwiPlxyXG4gICAgICB7eyBsaXN0U2hvd1ZhbHVlKGRlZmF1bHRzLCBmaWVsZCkgfCB0cmFuc2xhdGUgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjbm9UcmFuc2xhdGU+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfX08L3NwYW4+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNzZXF1ZW5jZVJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2xvb2t1cFJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj5cclxuICAgICAge3sgZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpPy5bdHJhbnNsYXRlU2VydmljZS5nZXREZWZhdWx0TGFuZygpID09PSAnZW4nID8gJ2VuZ2xpc2hOYW1lJyA6ICdhcmFiaWNOYW1lJ10gfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYW1vdW50UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPlxyXG4gICAgICB7eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfCBjdXJyZW5jeTogY3VycmVuY3kgfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbXVsdGlTZWxlY3RSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8bWF0LWNoaXAtZ3JpZCBjbGFzcz1cInJlYWRvbmx5LXZhbHVlIGNoaXBMaXN0XCI+XHJcbiAgICAgIDxtYXQtY2hpcCAqbmdGb3I9XCJsZXQgZmlsZWRQcm9wIG9mIHNob3dNdWx0aVNlbGVjdFZhbHVlc0FzUmVhZG9ubHkoZmllbGQpXCI+XHJcbiAgICAgICAge3sgZmlsZWRQcm9wIH19XHJcbiAgICAgIDwvbWF0LWNoaXA+XHJcbiAgICA8L21hdC1jaGlwLWdyaWQ+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NoaXBMaXN0UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIVE1MXT1cImZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlXCI+PC9sYWJlbD5cclxuICAgIDxtYXQtY2hpcC1saXN0Ym94IGNsYXNzPVwicmVhZG9ubHktdmFsdWUgY2hpcExpc3RcIj5cclxuICAgICAgPG1hdC1jaGlwLW9wdGlvbiAqbmdGb3I9XCJsZXQgbG9jIG9mIHNwbGl0UmVhZG9ubHkoZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cImZhbHNlXCI+XHJcbiAgICAgICAge3sgbG9jIH19XHJcbiAgICAgIDwvbWF0LWNoaXAtb3B0aW9uPlxyXG4gICAgPC9tYXQtY2hpcC1saXN0Ym94PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlWaWV3PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3ctd3JhcHBlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbHVtbi13cmFwcGVyXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBzY3JlZW5GaWVsZHMgfCBrZXl2YWx1ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3ctY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiByb3cudmFsdWVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWNvbHVtbiByZWFkb25seS1pdGVtXCIgW3N0eWxlLmZsZXhdPVwiZmllbGQuZmllbGRTaXplID8gKCcwIDAgJyArIGZpZWxkLmZpZWxkU2l6ZSArICclJykgOiAnMSAxIDAnXCI+XHJcblxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImZpZWxkLnR5cGVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkYXRlUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aW1lUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIncGhvbmUtbnVtYmVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInBob25lTnVtYmVyUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZXh0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dGFyZWEnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dGFyZWFSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidudW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibnVtYmVyUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY3VycmVuY3knXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VycmVuY3lSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYWRpby1idXR0b24nXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicmFkaW9CdXR0b25SZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3RvZ2dsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b2dnbGVSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzdGF0dXMnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2hlY2tib3hSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsb29rdXAnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwibG9va3VwUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYW1vdW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFtb3VudFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ211bHRpLXNlbGVjdCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJtdWx0aVNlbGVjdFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NoaXAtbGlzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGlwTGlzdFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlcXVlbmNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlcXVlbmNlUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGlzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsaXN0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc3RhdGUtY2hlY2tib3gnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBbaW5uZXJIdG1sXT1cImZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlXCI+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZ2V0TXVsdGlTdGF0ZVJlYWRvbmx5U3VtbWFyeShmaWVsZCwgZGVmYXVsdHMpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpYmFuLXRleHQnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+IDogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIiBbaW5uZXJIdG1sXT1cImV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlY3Rpb24tdGl0bGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJocmRpdmlkZXItbWlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmllbGQubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuXHJcbiJdfQ==
|
|
739
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbnZvaWNlcS91aS1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS1jYW52YXMvYmFzZS1mb3JtLWNhbnZhcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxFQUVOLFNBQVMsRUFDVCxRQUFRLEVBQ1IsS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlCLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRyxPQUFPLEVBQ0wsT0FBTyxFQUNQLFdBQVcsRUFDWCxZQUFZLEVBRVosY0FBYyxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQzVDLFVBQVUsRUFDWCxNQUFNLHlCQUF5QixDQUFDO0FBSWpDLE9BQU8sRUFBQyxlQUFlLEVBQW1CLE1BQU0scUJBQXFCLENBQUM7QUFFdEUsT0FBTyxFQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFHOUQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osUUFBUSxFQUNSLFlBQVksRUFDWixPQUFPLEVBQ1AsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQ3RCLFFBQVEsRUFDUixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFDLFFBQVEsRUFBRSxrQkFBa0Is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RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDcEcsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUdELFlBQVksQ0FBQyxRQUFnQixFQUFHLE9BQWUsRUFBRyxJQUFZO1FBQzVELE9BQVEsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBRTtJQUNuRSxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLO1FBQ3ZCLE9BQVEsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBWTtRQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLEtBQUssS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLEVBQUUsTUFBTSxLQUFLLFNBQVMsQ0FBQztJQUNuRixDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFTyxhQUFhO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFFM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXRDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO29CQUNqQixJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO3dCQUMvRCxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDdEQsQ0FBQyxDQUFDLENBQUE7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELGlDQUFpQztJQUNuQyxDQUFDO0lBRU8sWUFBWSxDQUFDLENBQVM7UUFDNUIsK0VBQStFO1FBQy9FLGtFQUFrRTtRQUNsRSw0RUFBNEU7UUFDNUUsT0FBTztJQUNULENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFnQjtRQUNqQywySkFBMko7UUFDM0osTUFBTSxhQUFhLEdBQUksQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sb0JBQW9CLEdBQUcsYUFBYSxHQUFHLE1BQU0sQ0FBQztJQUN2RCxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQWUsRUFBRSxTQUFpQjtRQUM5QyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUdELGdCQUFnQixDQUFDLEdBQVE7UUFDdkIsZ0NBQWdDO1FBQ2hDLGdIQUFnSDtRQUNoSCxJQUFJO1FBQ0osb0JBQW9CO0lBQ3RCLENBQUM7SUFFRCxhQUFhLENBQUMsUUFBYSxFQUFFLEtBQWdCO1FBQzNDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN6RSxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQWUsRUFBRSxTQUFpQixFQUFFLEdBQVc7UUFDN0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbkQsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQyxDQUFDO1lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUFZLEVBQUUsUUFBZ0I7UUFDN0MsSUFBSSxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUUsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLFFBQWEsRUFBRSxLQUFnQjtRQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5RCxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzdCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFnQjtRQUNwQyxPQUFPLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7SUFDdEYsQ0FBQztJQUVELHNCQUFzQixDQUFDLFFBQWdCLEVBQUUsSUFBWSxFQUFFLE9BQWdCO1FBQ3JFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN2QixNQUFNLEdBQUcsR0FBYSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlCLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNiLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsb0JBQW9CLENBQUMsUUFBZ0IsRUFBRSxJQUFZO1FBQ2pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUNoRCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsNEVBQTRFO0lBQzVFLCtCQUErQixDQUFDLEtBQWdCO1FBQzlDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDdEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLElBQUksRUFBRSxDQUFDO1FBQ25ELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsK0JBQStCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDMUQsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLFFBQVE7aUJBQ1osR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsbUNBQW1DLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVPLCtCQUErQixDQUFDLEtBQWdCLEVBQUUsUUFBa0I7UUFDMUUsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDeEMsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQWdCLEVBQUUsSUFBWTtRQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQztRQUM3QyxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMvQyxDQUFDO0lBRUQsNEJBQTRCLENBQUMsS0FBZ0IsRUFBRSxRQUFhO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUNuRCxPQUFPLFFBQVE7YUFDWixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3hFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWdCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUNuRCxDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQUs7UUFDekIsSUFBSSxFQUFFLEdBQUcseUpBQXlKLENBQUM7UUFDbkssT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBd0IsRUFBRSxJQUFlLEVBQUUsU0FBaUI7UUFFMUUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzFCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDL0Isb0JBQW9CO1FBQ3BCLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNuQixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVELG9CQUFvQixDQUFDLFFBQWEsRUFBRSxRQUFnQjtRQUNsRCxNQUFNLENBQUMsR0FBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxFQUFFLE1BQU0sR0FBRyxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUNsQixPQUFPLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQVM7UUFDdEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGNBQWMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFDcEYsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNYLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBd0I7UUFDMUIsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3JGLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBRS9CLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2QsT0FBTyxjQUFjLENBQUM7WUFDeEIsQ0FBQztZQUVELGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMzQyxPQUFPLENBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBbUM7UUFDMUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDdEcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDbkYsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUMxQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBRWxDLElBQUksYUFBdUIsQ0FBQztRQUM1QixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsYUFBYSxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxDQUFDO1FBQzdELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pELGFBQWEsR0FBRyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQztZQUM3RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sYUFBYSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUN6QyxDQUFDO1FBQ0gsQ0FBQztRQUNELHVDQUF1QztRQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxtQ0FBbUM7UUFDakMsT0FBTyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRCwwQkFBMEI7UUFDeEIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxDQUFDO1lBQ04sdURBQXVEO1FBQ3pELENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWdCLEVBQUUsTUFBYTtRQUMzQyxpQ0FBaUM7UUFDakMsUUFBUTtRQUNSLDZGQUE2RjtRQUM3Rix1REFBdUQ7UUFDdkQsb0NBQW9DO1FBQ3BDLGdCQUFnQjtRQUNoQiwrRUFBK0U7UUFDL0Usa0NBQWtDO1FBQ2xDLElBQUk7SUFDTixDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUs7UUFDWCxPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxlQUFlLENBQUMsc0JBQThCLEVBQUUsTUFBNkIsRUFBRSxLQUFLO1FBQ2xGLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMzQyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDN0IsU0FBUyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ3RELE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixDQUFDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQWdCO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELDBGQUEwRjtRQUMxRixvRkFBb0Y7UUFDcEYsbUNBQW1DO1FBQ25DLE9BQU8sS0FBSyxDQUFDLGNBQWMsQ0FBQztJQUM5QixDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBaUIsRUFBRSxLQUFnQjtRQUMxRCxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1Qsb0RBQW9EO1lBQ3BELElBQUksS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUN6QixNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztnQkFDdEYsTUFBTSxhQUFhLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDO2dCQUN0RSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO29CQUMxQyxxREFBcUQ7b0JBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxhQUFhLHFDQUFxQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztvQkFDcEcsT0FBTztnQkFDVCxDQUFDO1lBQ0gsQ0FBQztZQUVELG1DQUFtQztZQUNuQyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUVELHdCQUF3QjtZQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDO2dCQUMxQixJQUFJLEVBQUUsSUFBSTtnQkFDVixLQUFLLEVBQUUsS0FBSztnQkFDWixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7YUFDckMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTiw0Q0FBNEM7WUFDNUMsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0FuckJVLHVCQUF1QjttR0FBdkIsdUJBQXVCLCtwRUFYdkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsV0FBVztnQkFDcEIsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO2FBQ3pEO1lBQ0QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO1lBQzFELEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO1NBQ2hELGtLQ25KSCwwOGdGQXN2Q0EsMDBJRHBxQ0ksbUJBQW1CLHErQ0FDbkIsUUFBUSw0RUFDUixXQUFXLCtCQUNYLE9BQU8sbUhBQ1AsZ0JBQWdCLCtJQUNoQixZQUFZLGlEQUNaLElBQUksNkZBQ0osT0FBTyxvRkFDUCxRQUFRLHFEQUNSLGtCQUFrQiw0ckJBQ2xCLGVBQWUsMkZBQ2YsY0FBYywwa0JBQ2Qsa0JBQWtCLG1LQUNsQixhQUFhLHdGQUNiLG1CQUFtQiw2S0FFbkIsWUFBWSxxRkFDWixPQUFPLDJJQUNQLGFBQWEsNkZBR2IsT0FBTyw4U0FFUCxhQUFhLHVNQUNiLFdBQVcsaVVBQ1gsY0FBYyxnU0FDZCxjQUFjLG1UQUNkLFNBQVMsd2VBQ1QsU0FBUyxxSkFDVCxPQUFPLDJRQUNQLGNBQWMscVNBQ2QsVUFBVSxrRkFDVixRQUFRLDRDQUNSLG1CQUFtQix3S0FDbkIsWUFBWSxpREFDWiwyQkFBMkIsd1VBQzNCLFdBQVcsNktBQ1gsWUFBWSw2UUFDWixVQUFVLDhKQUNWLGNBQWMsOE1BQ2QsYUFBYSxpTUFDYiwwQkFBMEIsb0tBQzFCLHFCQUFxQix5S0FHckIsYUFBYSw0REFNYiwyQkFBMkIsMEhBQzNCLG9CQUFvQixtRkFDcEIsa0JBQWtCOzs0RkFlVCx1QkFBdUI7a0JBeEVuQyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CO3dCQUNuQixRQUFRO3dCQUNSLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osSUFBSTt3QkFDSixPQUFPO3dCQUNQLFFBQVE7d0JBQ1Isa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsUUFBUTt3QkFDUixZQUFZO3dCQUNaLE9BQU87d0JBQ1AsYUFBYTt3QkFDYixlQUFlO3dCQUNmLHNCQUFzQjt3QkFDdEIsT0FBTzt3QkFDUCxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsV0FBVzt3QkFDWCxjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsU0FBUzt3QkFDVCxTQUFTO3dCQUNULE9BQU87d0JBQ1AsY0FBYzt3QkFDZCxVQUFVO3dCQUNWLFFBQVE7d0JBQ1IsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLDJCQUEyQjt3QkFDM0IsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQixpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixPQUFPO3dCQUNQLFVBQVU7d0JBQ1YsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLE9BQU87d0JBQ1AsMkJBQTJCO3dCQUMzQixvQkFBb0I7d0JBQ3BCLGtCQUFrQjtxQkFDbkIsYUFHVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsV0FBVzs0QkFDcEIsUUFBUSxFQUFFLGlCQUFpQjs0QkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO3lCQUN6RDt3QkFDRCxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUU7d0JBQzFELEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO3FCQUNoRDtxTUFPRCxRQUFRO3NCQURQLEtBQUs7Z0JBS04sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLE1BQU07c0JBREwsS0FBSztnQkFJTixNQUFNO3NCQURMLEtBQUs7Z0JBSU4sc0JBQXNCO3NCQURyQixLQUFLO2dCQUdOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFJTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQU1OLGtCQUFrQjtzQkFEakIsS0FBSztnQkFJTixnQkFBZ0I7c0JBRGYsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBS0ksaUJBQWlCO3NCQUExQixNQUFNO2dCQUVHLGFBQWE7c0JBQXRCLE1BQU07Z0JBSVAsV0FBVztzQkFEVixNQUFNO2dCQUlQLGNBQWM7c0JBRGIsTUFBTTtnQkFtQkUsdUJBQXVCO3NCQUEvQixLQUFLO2dCQWEyQixXQUFXO3NCQUEzQyxTQUFTO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgbW9kZWwsXHJcbiAgc2lnbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgRm9ybXNNb2R1bGUsIEZvcm1Db250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtcclxuICBNYXRDaGlwLFxyXG4gIE1hdENoaXBHcmlkLFxyXG4gIE1hdENoaXBJbnB1dCxcclxuICBNYXRDaGlwSW5wdXRFdmVudCxcclxuICBNYXRDaGlwTGlzdGJveCwgTWF0Q2hpcE9wdGlvbiwgTWF0Q2hpcFJlbW92ZSxcclxuICBNYXRDaGlwUm93XHJcbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoaXBzXCI7XHJcbmltcG9ydCB7RmllbGRJbmZvfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9maWVsZC1pbmZvXCI7XHJcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHtCYWNrZW5kU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2JhY2tlbmQtc2VydmljZVwiO1xyXG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHtQYWdlSW5mb30gZnJvbSBcIi4uLy4uL2Jhc2UtbW9kZWwvcGFnZS1pbmZvXCI7XHJcbmltcG9ydCB7Q09NTUEsIEVOVEVSLCBTRU1JQ09MT059IGZyb20gXCJAYW5ndWxhci9jZGsva2V5Y29kZXNcIjtcclxuaW1wb3J0IHtMb29rdXBJdGVtfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9sb29rdXBJdGVtXCI7XHJcbmltcG9ydCB7RmllbGRNZXNzYWdlfSBmcm9tIFwiLi4vLi4vYmFzZS1tb2RlbC9hcGktcmVzcG9uc2VcIjtcclxuaW1wb3J0IHtcclxuICBBc3luY1BpcGUsXHJcbiAgQ3VycmVuY3lQaXBlLFxyXG4gIERhdGVQaXBlLFxyXG4gIEtleVZhbHVlUGlwZSxcclxuICBOZ0Zvck9mLFxyXG4gIE5nSWYsIE5nQ2xhc3MsIE5nU3R5bGUsXHJcbiAgTmdTd2l0Y2gsXHJcbiAgTmdTd2l0Y2hDYXNlLFxyXG4gIE5nVGVtcGxhdGVPdXRsZXRcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcbmltcG9ydCB7TWF0RXJyb3IsIE1hdEZvcm1GaWVsZE1vZHVsZSwgTWF0TGFiZWx9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkXCI7XHJcbmltcG9ydCB7TWF0SW5wdXRNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pbnB1dFwiO1xyXG5pbXBvcnQge01hdERhdGVwaWNrZXIsIE1hdERhdGVwaWNrZXJJbnB1dCwgTWF0RGF0ZXBpY2tlclRvZ2dsZSwgTWF0RGF0ZVJhbmdlSW5wdXR9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyXCI7XHJcbmltcG9ydCB7TWF0SWNvbn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcclxuaW1wb3J0IHtNYXRJY29uQnV0dG9ufSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XHJcbmltcG9ydCB7Q2RrVGV4dGFyZWFBdXRvc2l6ZX0gZnJvbSBcIkBhbmd1bGFyL2Nkay90ZXh0LWZpZWxkXCI7XHJcbmltcG9ydCB7TWF0UmFkaW9CdXR0b24sIE1hdFJhZGlvR3JvdXB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9yYWRpb1wiO1xyXG5pbXBvcnQge01hdENoZWNrYm94fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3hcIjtcclxuaW1wb3J0IHtNYXRTbGlkZVRvZ2dsZX0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZVwiO1xyXG5pbXBvcnQge01hdE9wdGlvbiwgTWF0U2VsZWN0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0XCI7XHJcbmltcG9ydCB7TWF0TWVudSwgTWF0TWVudVRyaWdnZXJ9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XHJcbmltcG9ydCB7TWF0RGl2aWRlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXJcIjtcclxuaW1wb3J0IHtOZ3hKc29uVmlld2VyTW9kdWxlfSBmcm9tIFwibmd4LWpzb24tdmlld2VyXCI7XHJcbmltcG9ydCB7Tmd4TWF0SW50bFRlbElucHV0Q29tcG9uZW50fSBmcm9tIFwibmd4LW1hdC1pbnRsLXRlbC1pbnB1dFwiO1xyXG5pbXBvcnQge011bHRpQXV0b0NvbXBsZXRlQ29tcG9uZW50fSBmcm9tIFwiLi4vbXVsdGktYXV0by1jb21wbGV0ZS9tdWx0aS1hdXRvLWNvbXBsZXRlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge0F1dG9Db21wbGV0ZUNvbXBvbmVudH0gZnJvbSBcIi4uL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtBdHRhY2htZW50VXBsb2FkZXJDb21wb25lbnR9IGZyb20gXCIuLi9zaGFyZWQvYXR0YWNobWVudC11cGxvYWRlci9hdHRhY2htZW50LXVwbG9hZGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQge01hdEF1dG9jb21wbGV0ZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCwgTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcn0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZVwiO1xyXG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgbWFwfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge0xpdmVBbm5vdW5jZXJ9IGZyb20gXCJAYW5ndWxhci9jZGsvYTExeVwiO1xyXG5pbXBvcnQge2J1aWxkRm9ybUZpZWxkcywgZXh0cmFjdEZpZWxkTmFtZX0gZnJvbSBcIi4uLy4uL3V0aWxzL2Jhc2UtdXRpbHNcIjtcclxuaW1wb3J0IG1vbWVudCwge01vbWVudH0gZnJvbSBcIm1vbWVudC9tb21lbnRcIjtcclxuaW1wb3J0IHtNYXRDZWxsLCBNYXRDZWxsRGVmLCBNYXRIZWFkZXJDZWxsLCBNYXRIZWFkZXJDZWxsRGVmfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGVcIjtcclxuaW1wb3J0IHtEYXRlQWRhcHRlciwgTUFUX0RBVEVfRk9STUFUUywgTUFUX0RBVEVfTE9DQUxFfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZVwiO1xyXG5pbXBvcnQge01BVF9NT01FTlRfREFURV9BREFQVEVSX09QVElPTlMsIE1vbWVudERhdGVBZGFwdGVyfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwtbW9tZW50LWFkYXB0ZXJcIjtcclxuaW1wb3J0IHtEZWNpbWFsT25seURpcmVjdGl2ZX0gZnJvbSBcIi4vTnVtYmVyc09ubHlEaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtNYXhEaWdpdHNEaXJlY3RpdmV9IGZyb20gXCIuL01heERpZ2l0c0RpcmVjdGl2ZVwiO1xyXG5leHBvcnQgY29uc3QgRERfTU1fWVlZWV9Gb3JtYXQgPSB7XHJcbiAgcGFyc2U6IHsgZGF0ZUlucHV0OiAnREQvTU0vWVlZWScgfSxcclxuICBkaXNwbGF5OiB7XHJcbiAgICBkYXRlSW5wdXQ6ICdERC9NTS9ZWVlZJyxcclxuICAgIG1vbnRoWWVhckxhYmVsOiAnTU1NIFlZWVknLFxyXG4gICAgZGF0ZUExMXlMYWJlbDogJ0REL01NL1lZWVknLFxyXG4gICAgbW9udGhZZWFyQTExeUxhYmVsOiAnTU1NTSBZWVlZJyxcclxuICB9LFxyXG59O1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1iYXNlLWZvcm0tY2FudmFzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBOZ1N3aXRjaCxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTmdGb3JPZixcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBLZXlWYWx1ZVBpcGUsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE1hdExhYmVsLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBNYXREYXRlcGlja2VySW5wdXQsXHJcbiAgICBNYXREYXRlcGlja2VyLFxyXG4gICAgTWF0RGF0ZXBpY2tlclRvZ2dsZSxcclxuICAgIE1hdEVycm9yLFxyXG4gICAgTmdTd2l0Y2hDYXNlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIE1hdEljb25CdXR0b24sXHJcbiAgICBNYXRBdXRvY29tcGxldGUsXHJcbiAgICBNYXRBdXRvY29tcGxldGVUcmlnZ2VyLFxyXG4gICAgTWF0Q2hpcCxcclxuICAgIENka1RleHRhcmVhQXV0b3NpemUsXHJcbiAgICBNYXRSYWRpb0dyb3VwLFxyXG4gICAgTWF0Q2hlY2tib3gsXHJcbiAgICBNYXRSYWRpb0J1dHRvbixcclxuICAgIE1hdFNsaWRlVG9nZ2xlLFxyXG4gICAgTWF0U2VsZWN0LFxyXG4gICAgTWF0T3B0aW9uLFxyXG4gICAgTWF0TWVudSxcclxuICAgIE1hdE1lbnVUcmlnZ2VyLFxyXG4gICAgTWF0RGl2aWRlcixcclxuICAgIERhdGVQaXBlLFxyXG4gICAgTmd4SnNvblZpZXdlck1vZHVsZSxcclxuICAgIEN1cnJlbmN5UGlwZSxcclxuICAgIE5neE1hdEludGxUZWxJbnB1dENvbXBvbmVudCxcclxuICAgIE1hdENoaXBHcmlkLFxyXG4gICAgTWF0Q2hpcElucHV0LFxyXG4gICAgTWF0Q2hpcFJvdyxcclxuICAgIE1hdENoaXBMaXN0Ym94LFxyXG4gICAgTWF0Q2hpcE9wdGlvbixcclxuICAgIE11bHRpQXV0b0NvbXBsZXRlQ29tcG9uZW50LFxyXG4gICAgQXV0b0NvbXBsZXRlQ29tcG9uZW50LFxyXG4gICAgTWF0RGF0ZVJhbmdlSW5wdXQsXHJcbiAgICBBc3luY1BpcGUsXHJcbiAgICBNYXRDaGlwUmVtb3ZlLFxyXG4gICAgTWF0Q2VsbCxcclxuICAgIE1hdENlbGxEZWYsXHJcbiAgICBNYXRIZWFkZXJDZWxsLFxyXG4gICAgTWF0SGVhZGVyQ2VsbERlZixcclxuICAgIE5nU3R5bGUsXHJcbiAgICBBdHRhY2htZW50VXBsb2FkZXJDb21wb25lbnQsXHJcbiAgICBEZWNpbWFsT25seURpcmVjdGl2ZSxcclxuICAgIE1heERpZ2l0c0RpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Jhc2UtZm9ybS1jYW52YXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9iYXNlLWZvcm0tY2FudmFzLmNvbXBvbmVudC5jc3MnLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBEYXRlQWRhcHRlcixcclxuICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxyXG4gICAgICBkZXBzOiBbTUFUX0RBVEVfTE9DQUxFLCBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TXVxyXG4gICAgfSxcclxuICAgIHsgcHJvdmlkZTogTUFUX0RBVEVfRk9STUFUUywgdXNlVmFsdWU6IEREX01NX1lZWVlfRm9ybWF0IH0sXHJcbiAgICB7IHByb3ZpZGU6IE1BVF9EQVRFX0xPQ0FMRSwgdXNlVmFsdWU6ICdlbi1HQicgfVxyXG4gIF1cclxuXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlRm9ybUNhbnZhc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG4gIHB1YmxpYyBoaWRlOiBib29sZWFuID0gdHJ1ZTtcclxuICBkYXRlVmlld01vZGU6ICdtb250aCcgfCAneWVhcicgfCAnbXVsdGkteWVhcicgPSAnbW9udGgnO1xyXG4gIEBJbnB1dCgpXHJcbiAgcGFnZUluZm8hOiBQYWdlSW5mbztcclxuXHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgY3VycmVuY3k6IHN0cmluZztcclxuXHJcbiAgQElucHV0KCkvLyBAdHMtaWdub3JlXHJcbiAgZmllbGRzOiBGaWVsZEluZm9bXSA9IFtdO1xyXG5cclxuICBASW5wdXQoKS8vIEB0cy1pZ25vcmVcclxuICBlcnJvcnM6IEZpZWxkTWVzc2FnZVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgd29ya2Zsb3dFZGl0YWJsZUZpZWxkczogc3RyaW5nW109W107XHJcbiAgQElucHV0KClcclxuICBpc1dvcmtmbG93RWRpdGFibGVNYW5hZ2VkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc3VwcG9ydGluZ0F0dHJpYnV0ZXM6IGFueTtcclxuXHJcbiAgQElucHV0KClcclxuICBlZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBXaGVuIHRydWUsIGVtaXQgZm9ybVVwZGF0ZWQgb24gZXZlcnkgdmFsdWUgY2hhbmdlLiBEZWZhdWx0IGlzIGZhbHNlIHRvIGF2b2lkXHJcbiAgLy8gbm9pc3kgZW1pc3Npb25zIGZvciBhbGwgY29uc3VtZXJzLiBJdGVtLWxpbmUtZWRpdG9yIHdpbGwgZW5hYmxlIHRoaXMgZXhwbGljaXRseS5cclxuICBASW5wdXQoKVxyXG4gIGVtaXRPblZhbHVlQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGZpbHRlclJlc2V0Tm9uY2UgPSAwO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGl0ZW06IGFueSA9IHt9O1xyXG5cclxuICBfZGVmYXVsdHM6IGFueSA9IHt9O1xyXG5cclxuICBAT3V0cHV0KCkgYXR0YWNobWVudEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBhY3Rpb25FbWl0dGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgZm9ybVVwZGF0ZWQ6IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+ID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtR3JvdXA+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGh5cGVyVGV4dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG5cclxuICBmb3JtUGFyYW0hOiBGb3JtR3JvdXA7XHJcbiAgc2NyZWVuRmllbGRzID0gbmV3IE1hcDxudW1iZXIsIEZpZWxkSW5mb1tdPigpO1xyXG4gIHJlbW92YWJsZSA9IHRydWU7XHJcbiAgc2VsZWN0YWJsZSA9IHRydWU7XHJcbiAgYWRkT25CbHVyID0gdHJ1ZTtcclxuXHJcbiAgcmVhZG9ubHkgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUEsIFNFTUlDT0xPTl07XHJcblxyXG4gIHJlYWRvbmx5IG1pbkRhdGUgPSBtb21lbnQoWzE4MDAsIDAsIDFdKTtcclxuXHJcbiAgcHVibGljIGlzUGVuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBpc05ldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGl0ZW1JZDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG5cclxuICBlcXVhdGlvbk9wZXJhdG9ycyA6IHN0cmluZ1tdID0gWycrJywnLScsJygnIF07XHJcbiAgQElucHV0KCkgZXF1YXRpb25TdWdnZXN0ZWRGaWVsZHM6IHsgbmFtZTogc3RyaW5nLCBpZDogc3RyaW5nIH1bXSA9IFtdO1xyXG4gIGFsbEVxdWF0aW9uRmllbGRzOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nW10+O1xyXG4gIHJlYWRvbmx5IGVxdWF0aW9uVmFsdWVzID0gc2lnbmFsPHN0cmluZ1tdPihbXSk7XHJcbiAgY3VycmVudEVxdWF0aW9uVmFsdWUgPSBtb2RlbDxzdHJpbmc+KCcnKTtcclxuXHJcbiAgcmVhZG9ubHkgZXF1YXRpb25GaWx0ZXJlZEZpZWxkcyA9IGNvbXB1dGVkKCgpID0+IHtcclxuICAgIGNvbnN0IGN1cnJlbnRFcXVhdGlvblZhbHVlID0gdGhpcy5jdXJyZW50RXF1YXRpb25WYWx1ZSgpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hbGxFcXVhdGlvbkZpZWxkcy5waXBlKFxyXG4gICAgICAgIG1hcChmaWVsZHMgPT5cclxuICAgICAgICAgICAgY3VycmVudEVxdWF0aW9uVmFsdWUgPyBmaWVsZHM/LmZpbHRlcihmaWVsZCA9PiBmaWVsZC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGN1cnJlbnRFcXVhdGlvblZhbHVlKSkgOiBmaWVsZHM/LnNsaWNlKClcclxuICAgICAgICApXHJcbiAgICApO1xyXG4gIH0pO1xyXG4gIEBWaWV3Q2hpbGQoJ0VxdWF0aW9uVmFsdWVJbnB1dCcpIGZpZWxkc0lucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBzZXQgZGVmYXVsdHModmFsdWU6IGFueSB8IHVuZGVmaW5lZCkge1xyXG4gICAgLy8gdGhpcy5iYWNrZW5kU2VydmljZS5fZGVmYXVsdHMgPSB2YWx1ZTtcclxuICAgIHRoaXMuX2RlZmF1bHRzID0gdmFsdWU7XHJcbiAgICB0aGlzLmJ1aWxkRm9ybSgpO1xyXG4gICAgLy8gdGhpcy5teUNhbGxiYWNrID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZGVmYXVsdHMoKTogYW55IHwgdW5kZWZpbmVkIHtcclxuICAgIC8vIHRoaXMubXlDYWxsYmFjaztcclxuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0cztcclxuICAgIC8vIHJldHVybiB0aGlzLmJhY2tlbmRTZXJ2aWNlLl9kZWZhdWx0cztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGJhY2tlbmRTZXJ2aWNlOiBCYWNrZW5kU2VydmljZSxcclxuICAgICAgICAgICAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcclxuICAgICAgICAgICAgICBwcml2YXRlIGFubm91bmNlcjogTGl2ZUFubm91bmNlcikge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLml0ZW0gJiYgdGhpcy5pdGVtLmZpZWxkVmFsdWUpe1xyXG4gICAgICB0aGlzLmVxdWF0aW9uVmFsdWVzLnVwZGF0ZSh2YWx1ZSA9PiB0aGlzLml0ZW0uZmllbGRWYWx1ZSlcclxuICAgIH1cclxuICAgIHRoaXMuZGVmYXVsdHMgPSB0aGlzLml0ZW07XHJcbiAgICB0aGlzLmV4dHJhY3RMYWJsZXMoKTtcclxuICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEuc3Vic2NyaWJlKGRhdGEgPT4ge1xyXG4gICAgICB0aGlzLmlzUGVuZGluZyA9IGRhdGFbJ21vZGUnXSA9PT0gJ3BlbmRpbmcnO1xyXG4gICAgICB0aGlzLmlzTmV3ID0gZGF0YVsnbW9kZSddID09PSAnbmV3JztcclxuICAgIH0pO1xyXG4gICAgLy8gdGhpcy5hdXRoU2VydmljZS5zdW1tYXJ5UGFuZWxTdGF0ZSQubmV4dChDb25zdGFudHMuU1VNTUFSWV9QQU5FTF9DTE9TRUQpO1xyXG4gICAgLy8gdGhpcy5kZWZhdWx0cyA9IHt9O1xyXG4gICAgLy8gdGhpcy5pbnZvaWNlUUluaXQoKTtcclxuICAgIHRoaXMuYWxsRXF1YXRpb25GaWVsZHMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XHJcblxyXG4gICAgdGhpcy51cGRhdGVFcXVhdGlvbk9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdFRpbWVUb0RhdGUodjogYW55KXtcclxuICAgIGNvbnN0IGZyb21UaW1lOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgIGlmICh2KSB7XHJcbiAgICAgIGxldCBzcGxpdCA9IHYuc3BsaXQoXCI6XCIpO1xyXG4gICAgICBmcm9tVGltZS5zZXRIb3VycyhzcGxpdFswXSwgc3BsaXRbMV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ldyBEYXRlKGZyb21UaW1lLmdldFRpbWUoKSk7XHJcbiAgfVxyXG5cclxuICBwYXRjaExvb2t1cFZhbHVlKCRldmVudDogTG9va3VwSXRlbSwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmICgkZXZlbnQ/LmlkICE9PSAtMSAmJiB0aGlzLmRlZmF1bHRzKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5kZWZhdWx0c1tmaWVsZE5hbWVdID0gdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkTmFtZSkudmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEJhbmtOYW1lKGZpZWxkTmFtZTogc3RyaW5nKSB7XHJcbiAgICAvL1RPRE8gQmF0b29sIGRvIHdlIG5lZWQgdGhpcyBoZXJlID9cclxuICAgIGlmICh0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGROYW1lKS52YWx1ZT8ubGVuZ3RoID4gMTAgJiYgIWlzTmFOKHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZE5hbWUpLnZhbHVlKSApIHtcclxuICAgICAgcmV0dXJuICcgLyAnICsgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0JBTksuJyArIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZE5hbWUpLnZhbHVlPy5zdWJzdHIoNCwgNCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcGF0Y2hNdWx0aVNlbGVjdFZhbHVlKCRldmVudDogTG9va3VwSXRlbVtdLCBmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKCRldmVudD8ubGVuZ3RoID49IDAgJiYgdGhpcy5kZWZhdWx0cykge1xyXG4gICAgICB0aGlzLmRlZmF1bHRzW2ZpZWxkTmFtZV0gPSB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGROYW1lKS52YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgaXRlbSwgZXJyb3JzLCBmaWVsZHMsIGZpbHRlclJlc2V0Tm9uY2UgfSA9IGNoYW5nZXM7XHJcblxyXG4gICAgZXJyb3JzPy5jdXJyZW50VmFsdWU/LmZvckVhY2goKG1zZzogRmllbGRNZXNzYWdlKSA9PiB7XHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtLmdldChtc2cuZmllbGROYW1lKT8uc2V0RXJyb3JzKHtzZXJ2ZXJFcnJvcjogbXNnLm1lc3NhZ2V9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChpdGVtPy5jdXJyZW50VmFsdWUgJiYgIWl0ZW0uaXNGaXJzdENoYW5nZSgpKXtcclxuICAgICAgdGhpcy5kZWZhdWx0cyA9IGl0ZW0uY3VycmVudFZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWVsZHM/LmN1cnJlbnRWYWx1ZSAmJiAhZmllbGRzLmlzRmlyc3RDaGFuZ2UoKSl7XHJcbiAgICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICBmaWx0ZXJSZXNldE5vbmNlICYmXHJcbiAgICAgICFmaWx0ZXJSZXNldE5vbmNlLmlzRmlyc3RDaGFuZ2UoKSAmJlxyXG4gICAgICBmaWx0ZXJSZXNldE5vbmNlLmN1cnJlbnRWYWx1ZSAhPT0gZmlsdGVyUmVzZXROb25jZS5wcmV2aW91c1ZhbHVlXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5yZXNldEZpbHRlckZvcm1WYWx1ZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dGaWVsZChpdGVtOiBhbnksIGZpZWxkOiBhbnkpIHtcclxuICAgIHJldHVybiAoaXRlbS5pZCB8fCAoIWl0ZW0uaWQgJiYgIWZpZWxkLnVwZGF0ZU9ubHkpKSAmJiBmaWVsZC52aXNpYmxlXHJcbiAgfVxyXG5cclxuICB3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQ6IHsgcHJvcGVydHk6IHN0cmluZzsgfSkge1xyXG4gICAgY29uc3QgeCA9IHRoaXMuaXNXb3JrZmxvd0VkaXRhYmxlTWFuYWdlZCA/IHRoaXMud29ya2Zsb3dFZGl0YWJsZUZpZWxkcz8uZmluZEluZGV4KGQgPT4gZCA9PT0gZmllbGQucHJvcGVydHkpID4gLTEgOiB0cnVlO1xyXG4gICAgcmV0dXJuIHg7XHJcbiAgfVxyXG5cclxuICBzaG93TXVsdGlTZWxlY3RWYWx1ZXNBc1JlYWRvbmx5KGZpZWxkOiBGaWVsZEluZm8pIHtcclxuICAgIGNvbnN0IHZpZXdQcm9wID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCkgPT09ICdlbicgPyAnZW5nbGlzaE5hbWUnIDogJ2FyYWJpY05hbWUnO1xyXG4gICAgcmV0dXJuIHRoaXMuZXh0cmFjdEZpZWxkTmFtZSh0aGlzLmRlZmF1bHRzLGZpZWxkLnByb3BlcnR5KT8ubWFwKChhOiB7IFt4OiBzdHJpbmddOiBhbnk7IH0pID0+IGFbdmlld1Byb3BdKTtcclxuICB9XHJcblxyXG4gIHNwbGl0UmVhZG9ubHkodmFsdWVzOiBhbnkpIHtcclxuICAgIHJldHVybiAhdmFsdWVzIHx8IHZhbHVlcyA9PT0gJycgPyBbXTogdmFsdWVzLnNwbGl0KCc7Jyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcmVmZXJlbmNlQXR0cmlidXRlVHJ1ZShmaWVsZE5hbWU6IHN0cmluZywgYXR0cmlidXRlOiBhbnkpIHtcclxuICAgIC8vIHJldHVybiB0aGlzLmF1dGhTZXJ2aWNlLnJlZmVyZW5jZUF0dHJpYnV0ZVRydWUoZmllbGROYW1lLCB0aGlzLnBhZ2VJbmZvLnByb2Nlc3NJZCwgYXR0cmlidXRlKTtcclxuICB9XHJcblxyXG4gIHRyYW5zbGF0ZUxhYmxlKGl0ZW1FbGVtZW50OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChpdGVtRWxlbWVudClcclxuICB9XHJcblxyXG4gIGJ1aWxkRm9ybSgpIHtcclxuICAgIGlmICghdGhpcy5maWVsZHMgfHwgdGhpcy5maWVsZHMubGVuZ3RoID09PSAwIHx8ICF0aGlzLmRlZmF1bHRzKSByZXR1cm47XHJcblxyXG4gICAgaWYgKCF0aGlzLmZvcm1QYXJhbSkge1xyXG4gICAgICB0aGlzLmZvcm1QYXJhbSA9IHRoaXMuZmIuZ3JvdXAoYnVpbGRGb3JtRmllbGRzKHRoaXMuZmllbGRzLCB0aGlzLmRlZmF1bHRzKSk7XHJcbiAgICAgIC8vIEVtaXQgaW5pdGlhbCBmb3JtIHJlZmVyZW5jZVxyXG4gICAgICB0aGlzLmZvcm1VcGRhdGVkLm5leHQodGhpcy5mb3JtUGFyYW0pO1xyXG4gICAgICAvLyBFbWl0IG9uIGV2ZXJ5IHZhbHVlIGNoYW5nZSBzbyBwYXJlbnQgY29tcG9uZW50cyBjYW4gcmVhY3QgbGl2ZVxyXG4gICAgICBpZiAodGhpcy5lbWl0T25WYWx1ZUNoYW5nZXMpIHtcclxuICAgICAgICB0aGlzLmZvcm1QYXJhbS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVVwZGF0ZWQuZW1pdCh0aGlzLmZvcm1QYXJhbSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBhdGNoVmFsdWVzOiBhbnkgPSB7fTtcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLnJlYWRvbmx5KSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8uZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8uZW5hYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZmllbGQudHlwZSAhPT0gJ3NwYWNlcicpIHtcclxuICAgICAgICBsZXQgdiA9IGV4dHJhY3RGaWVsZE5hbWUodGhpcy5kZWZhdWx0cywgZmllbGQucHJvcGVydHkpO1xyXG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnbXVsdGktc3RhdGUtY2hlY2tib3gnICYmICh2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCkpIHtcclxuICAgICAgICAgIHYgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGF0Y2hWYWx1ZXNbZmllbGQucHJvcGVydHldID0gdjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybVBhcmFtLnBhdGNoVmFsdWUocGF0Y2hWYWx1ZXMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzZXRGaWx0ZXJGb3JtVmFsdWVzKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmZvcm1QYXJhbSB8fCAhdGhpcy5maWVsZHM/Lmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbXB0eTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLnR5cGUgIT09ICdzcGFjZXInKSB7XHJcbiAgICAgICAgZW1wdHlbZmllbGQucHJvcGVydHldID0gZmllbGQudHlwZSA9PT0gJ211bHRpLXN0YXRlLWNoZWNrYm94JyA/IFtdIDogbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtUGFyYW0ucGF0Y2hWYWx1ZShlbXB0eSwgeyBlbWl0RXZlbnQ6IHRydWUgfSk7XHJcbiAgfVxyXG5cclxuICBsYWJlbEtleShjb2x1bW46IGFueSkge1xyXG4gICAgY29uc3QgY29uZmlndXJlZEtleSA9IGNvbHVtbi5sYWJlbCA/IGNvbHVtbi5sYWJlbCA6IGNvbHVtbi5wcm9wZXJ0eVxyXG4gICAgcmV0dXJuIGNvbmZpZ3VyZWRLZXkuc3RhcnRzV2l0aCh0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24pID8gYCR7Y29uZmlndXJlZEtleX1gIDogYCR7dGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9ufS4ke2NvbmZpZ3VyZWRLZXl9YDtcclxuICB9XHJcblxyXG4gIGxhYmVsS2V5UGxhY2VIb2xkZXIoY29sdW1uOiBhbnkpIHtcclxuICAgIGNvbnN0IGNvbmZpZ3VyZWRLZXkgPSBjb2x1bW4ucGxhY2Vob2xkZXIgPyBjb2x1bW4ucGxhY2Vob2xkZXIgOiBjb2x1bW4ucHJvcGVydHlcclxuICAgIHJldHVybiBjb25maWd1cmVkS2V5LnN0YXJ0c1dpdGgodGhpcy5wYWdlSW5mby5sYWJlbHNTZWN0aW9uKSA/IGAke2NvbmZpZ3VyZWRLZXl9YCA6IGAke3RoaXMucGFnZUluZm8ubGFiZWxzU2VjdGlvbn0uJHtjb25maWd1cmVkS2V5fWA7XHJcbiAgfVxyXG5cclxuICBnZXRFcnJvcnMocHJvcDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm1QYXJhbT8uZ2V0KFtwcm9wXSk7XHJcbiAgICBpZiAoIWNvbnRyb2wgfHwgY29udHJvbC5kaXNhYmxlZCkgcmV0dXJuICcnO1xyXG5cclxuICAgIGlmIChjb250cm9sLmludmFsaWQgJiYgY29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgY29uc3QgZXJyID0gY29udHJvbC5lcnJvcnM7XHJcbiAgICAgIGlmIChlcnJbJ21hdERhdGVwaWNrZXJNaW4nXSkge1xyXG4gICAgICAgIHJldHVybiAnbWF0RGF0ZXBpY2tlck1pbic7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGVyclsnbWF0RGF0ZXBpY2tlck1heCddKSB7XHJcbiAgICAgICAgcmV0dXJuICdtYXREYXRlcGlja2VyTWF4JztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpZWxkID0gdGhpcy5maWVsZHMuZmluZChmID0+IGYucHJvcGVydHkgPT09IHByb3ApO1xyXG5cclxuICAgIGlmICghZmllbGQ/LnZhbGlkYXRpb25NZXNzYWdlcykge1xyXG4gICAgICBpZiAoY29udHJvbC52YWx1ZSAmJiBjb250cm9sLnN0YXR1cyAhPT0gJ1ZBTElEJyAmJiB0aGlzLmdldEZpcnN0RXJyb3JLZXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZXRGaXJzdEVycm9yS2V5KHByb3ApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29udHJvbC5pbnZhbGlkKSB7XHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IGNvbnRyb2wuZXJyb3JzIHx8IHt9O1xyXG4gICAgICBjb25zdCBwcmVmaXggPSB0aGlzLnBhZ2VJbmZvLmxhYmVsc1NlY3Rpb24gKyBcIi5cIjtcclxuXHJcbiAgICAgIGlmIChlcnJvcnNbJ3JlcXVpcmVkJ10pIHJldHVybiBwcmVmaXggKyAnUkVRVUlSRUQnO1xyXG4gICAgICBpZiAoZXJyb3JzWydtaW4nXSkgcmV0dXJuIHByZWZpeCArIChmaWVsZC52YWxpZGF0aW9uTWVzc2FnZXM/Lm1pbiB8fCAnTlVNQkVSX01JTicpO1xyXG4gICAgICBpZiAoZXJyb3JzWydtYXgnXSkgcmV0dXJuIHByZWZpeCArIChmaWVsZC52YWxpZGF0aW9uTWVzc2FnZXM/Lm1heCB8fCAnTlVNQkVSX01BWCcpO1xyXG4gICAgICBpZiAoZXJyb3JzWydtYXhsZW5ndGgnXSkgcmV0dXJuIHByZWZpeCArIChmaWVsZC52YWxpZGF0aW9uTWVzc2FnZXM/Lm1heGxlbmd0aCB8fCAnTUFYX0xFTkdUSCcpO1xyXG4gICAgICBpZiAoZXJyb3JzWydkZWNpbWFsTWluJ10pIHJldHVybiBwcmVmaXggKyAoZmllbGQudmFsaWRhdGlvbk1lc3NhZ2VzPy5kZWNpbWFsTWluIHx8ICdERUNJTUFMX01JTicpO1xyXG4gICAgICBpZiAoZXJyb3JzWydkZWNpbWFsTWF4J10pIHJldHVybiBwcmVmaXggKyAoZmllbGQudmFsaWRhdGlvbk1lc3NhZ2VzPy5kZWNpbWFsTWF4IHx8ICdERUNJTUFMX01BWCcpO1xyXG4gICAgICBpZiAoZXJyb3JzWydwYXR0ZXJuJ10pIHJldHVybiBwcmVmaXggKyAoZmllbGQudmFsaWRhdGlvbk1lc3NhZ2VzPy5wYXR0ZXJuIHx8ICdJTlZBTElEX0ZPUk1BVCcpO1xyXG4gICAgICBpZiAoZXJyb3JzWydpbnZhbGlkTWF0aEV4cHJlc3Npb24nXSkgcmV0dXJuIHByZWZpeCArICdJTlZBTElEX01BVEgnO1xyXG4gICAgICBpZiAoZXJyb3JzWydkYXRlUmFuZ2VJbnZhbGlkJ10pIHJldHVybiBwcmVmaXggKyAnZGF0ZVJhbmdlSW52YWxpZCc7XHJcbiAgICAgIGlmIChlcnJvcnNbJ3NlcnZlckVycm9yJ10pIHJldHVybiBwcmVmaXggKyBlcnJvcnNbJ3NlcnZlckVycm9yJ107XHJcblxyXG4gICAgICByZXR1cm4gcHJlZml4ICsgJ0lOVkFMSURfVkFMVUUnO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAnJztcclxuICB9XHJcblxyXG5cclxuICBnZXRGaXJzdEVycm9yS2V5KHByb3A6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmZvcm1QYXJhbT8uZ2V0KFtwcm9wXSk/LmVycm9ycztcclxuXHJcbiAgICBpZiAoIWVycm9ycyB8fCBPYmplY3Qua2V5cyhlcnJvcnMpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gZXJyb3JzPy5bJ3NlcnZlckVycm9yJ10gfHwgJ0lOVkFMSURfRk9STUFUJztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoZXJyb3JzKVswXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDb3VudHJ5Q29kZUxpc3QoKSB7XHJcbiAgICByZXR1cm4gWydhZicsICdheCcsICdhbCcsICdkeicsICdhcycsICdhZCcsICdhbycsICdhaScsICdhcScsICdhZycsICdhcicsICdhbScsICdhdycsICdhdScsICdhdCcsICdheicsXHJcbiAgICAgICdicycsICdiaCcsICdiZCcsICdiYicsICdieScsICdiZScsICdieicsICdiaicsICdibScsICdidCcsICdibycsICdiYScsICdidycsICdidicsICdicicsICdpbycsICdibicsXHJcbiAgICAgICdiZycsICdiZicsICdiaScsICdraCcsICdjbScsICdjYScsICdjdicsICdreScsICdjZicsICd0ZCcsICdjbCcsICdjbicsICdjeCcsICdjYycsICdjbycsICdrbScsICdjZycsXHJcbiAgICAgICdjZCcsICdjaycsICdjcicsICdjaScsICdocicsICdjdScsICdjeScsICdjeicsICdkaycsICdkaicsICdkbScsICdkbycsICdlYycsICdlZycsICdzdicsICdncScsICdlcicsXHJcbiAgICAgICdlZScsICdldCcsICdmaycsICdmbycsICdmaicsICdmaScsICdmcicsICdnZicsICdwZicsICd0ZicsICdnYScsICdnbScsICdnZScsICdkZScsICdnaCcsICdnaScsICdncicsXHJcbiAgICAgICdnbCcsICdnZCcsICdncCcsICdndScsICdndCcsICdnZycsICdnbicsICdndycsICdneScsICdodCcsICdobScsICd2YScsICdobicsICdoaycsICdodScsICdpcycsICdpbicsXHJcbiAgICAgICdpZCcsICdpcicsICdpcScsICdpZScsICdpbScsICdpdCcsICdqbScsICdqcCcsICdqZScsICdqbycsICdreicsICdrZScsICdraScsICdrcicsICdrdycsICdrZycsICdsYScsXHJcbiAgICAgICdsdicsICdsYicsICdscycsICdscicsICdseScsICdsaScsICdsdCcsICdsdScsICdtbycsICdtaycsICdtZycsICdtdycsICdteScsICdtdicsICdtbCcsICdtdCcsICdtaCcsXHJcbiAgICAgICdtcScsICdtcicsICdtdScsICd5dCcsICdteCcsICdmbScsICdtZCcsICdtYycsICdtbicsICdtZScsICdtcycsICdtYScsICdteicsICdtbScsICduYScsICducicsICducCcsXHJcbiAgICAgICdubCcsICdhbicsICduYycsICdueicsICduaScsICduZScsICduZycsICdudScsICduZicsICdtcCcsICdubycsICdvbScsICdwaycsICdwdycsICdwcycsICdwYScsICdwZycsXHJcbiAgICAgICdweScsICdwZScsICdwaCcsICdwbicsICdwbCcsICdwdCcsICdwcicsICdxYScsICdyZScsICdybycsICdydScsICdydycsICdibCcsICdzaCcsICdrbicsICdsYycsICdtZicsXHJcbiAgICAgICdwbScsICd2YycsICd3cycsICdzbScsICdzdCcsICdzYScsICdzbicsICdycycsICdzYycsICdzbCcsICdzZycsICdzaycsICdzaScsICdzYicsICdzbycsICd6YScsICdncycsXHJcbiAgICAgICdlcycsICdsaycsICdzZCcsICdzcicsICdzaicsICdzeicsICdzZScsICdjaCcsICdzeScsICd0dycsICd0aicsICd0eicsICd0aCcsICd0bCcsICd0ZycsICd0aycsICd0bycsXHJcbiAgICAgICd0dCcsICd0bicsICd0cicsICd0bScsICd0YycsICd0dicsICd1ZycsICd1YScsICdhZScsICdnYicsICd1cycsICd1bScsICd1eScsICd1eicsICd2dScsICd2ZScsICd2bicsXHJcbiAgICAgICd2ZycsICd2aScsICd3ZicsICdlaCcsICd5ZScsICd6bScsICd6dyddO1xyXG4gIH1cclxuXHJcblxyXG4gIGZyaWVuZGx5TmFtZShmdWxsUGF0aDogc3RyaW5nICwgc3ViUGF0aDogc3RyaW5nICwgaXRlbTogc3RyaW5nKXtcclxuICAgIHJldHVybiAgZnVsbFBhdGguc3Vic3RyaW5nKDAsIGZ1bGxQYXRoLmluZGV4T2Yoc3ViUGF0aCkpICsgaXRlbSA7XHJcbiAgfVxyXG5cclxuICBzaG93VmFsdWUoZGVmYXVsdHMsIGZpZWxkKXtcclxuICAgIHJldHVybiAgdGhpcy5mcmllbmRseU5hbWUoZmllbGQubGFiZWwgLCBmaWVsZC5wcm9wZXJ0eSAsIGRlZmF1bHRzW2ZpZWxkLnByb3BlcnR5XSk7XHJcbiAgfVxyXG5cclxuICBzaG93RXJyb3IocHJvcDogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBDT05UUk9MID0gdGhpcy5mb3JtUGFyYW0/LmdldChbcHJvcF0pO1xyXG4gICAgcmV0dXJuIChDT05UUk9MPy52YWx1ZSB8fCBDT05UUk9MPy52YWx1ZSA9PT0gMCkgJiYgQ09OVFJPTD8uc3RhdHVzID09PSAnSU5WQUxJRCc7XHJcbiAgfVxyXG5cclxuICBjbGVhckZpZWxkVmFsdWUocHJvcDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1QYXJhbT8uZ2V0KFtwcm9wXSk/LnNldFZhbHVlKCcnKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZWZhdWx0cyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RMYWJsZXMoKSB7XHJcbiAgICB0aGlzLmZpZWxkcy5mb3JFYWNoKGYgPT4ge1xyXG4gICAgICBpZiAoZi52aXNpYmxlKSB7XHJcbiAgICAgICAgZi5sYWJlbCA9IHRoaXMubGFiZWxLZXkoZik7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zY3JlZW5GaWVsZHMuaGFzKGYucm93KSkge1xyXG4gICAgICAgICAgdGhpcy5zY3JlZW5GaWVsZHMuc2V0KGYucm93LCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2NyZWVuRmllbGRzLmdldChmLnJvdykhLnB1c2goZik7XHJcblxyXG4gICAgICAgIGlmIChmLmNhc2NhZGVkQnkpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybVBhcmFtPy5nZXQoW2YuY2FzY2FkZWRCeV0pPy52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtUGFyYW0/LmdldChbZi5wcm9wZXJ0eV0pPy5wYXRjaFZhbHVlKG51bGwpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5zY3JlZW5GaWVsZHMuc2l6ZTsgaSsrKSB7XHJcbiAgICAgIHRoaXMuY2FsY0ZsZXhTaXplKGkpO1xyXG4gICAgfVxyXG4gICAgLy8gY29uc29sZS5sb2codGhpcy5zY3JlZW5GaWVsZHMpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGNGbGV4U2l6ZShpOiBudW1iZXIpe1xyXG4gICAgLy8gUHJlc2VydmUgZXhwbGljaXQgZmllbGRTaXplIHZhbHVlcyBvbmx5LiBGb3IgZmllbGRzIHdpdGhvdXQgZmllbGRTaXplLCBhbGxvd1xyXG4gICAgLy8gdGhlIGxheW91dCB0byBhdXRvLXNpemUgdmlhIGZsZXggKGhhbmRsZWQgaW4gdGhlIHRlbXBsYXRlL0NTUykuXHJcbiAgICAvLyBJbnRlbnRpb25hbGx5IGRvIG5vdGhpbmcgaGVyZSBzbyB0aGF0IHVuc3BlY2lmaWVkIGZpZWxkcyByZW1haW4gZmxleGlibGUuXHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW5jeVBhdHRlcm4oZmllbGQ6IEZpZWxkSW5mbykge1xyXG4gICAgLy8gY29uc3QgZGVjaW1hbFBsYWNlcyAgPSB0aGlzLmF1dGhTZXJ2aWNlPy5teUN1cnJlbmNpZXM/LmZpbmQoYyA9PiBjLmtleSA9PT0gdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLmN1cnJlbmN5KT8udmFsdWUpPy5jdXJyZW5jeU51bU9mRGVjaW1hbFBhdHRlcm4gfHwgMztcclxuICAgIGNvbnN0IGRlY2ltYWxQbGFjZXMgID0gMztcclxuICAgIHJldHVybiAnXlxcXFxkKig/OlsuLF1cXFxcZHsxLCcgKyBkZWNpbWFsUGxhY2VzICsgJ30pPyQnO1xyXG4gIH1cclxuXHJcbiAgc3BsaXR0ZWRDaGlwcyhmb3JtOiBGb3JtR3JvdXAsIGZpZWxkTmFtZTogc3RyaW5nKTpzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gZm9ybS5nZXQoZmllbGROYW1lKS52YWx1ZSA9PT0gJycgPyBbXTogZm9ybS5nZXQoZmllbGROYW1lKS52YWx1ZS50cmltKCkuc3BsaXQoJzsnKTtcclxuICB9XHJcblxyXG5cclxuICBmaXhBcmFiaWNOdW1iZXJzKHN0cjogYW55KSB7XHJcbiAgICAvLyBpZih0eXBlb2Ygc3RyID09PSAnc3RyaW5nJykge1xyXG4gICAgLy8gICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8oW9mg2aHZotmj2aTZpdmm2afZqNmpXSl8KFvbsNux27Lbs9u027Xbttu327jbuV0pL2csIChtLCAkMSwgJDIpID0+IG0uY2hhckNvZGVBdCgwKSAtICgkMSA/IDE2MzIgOiAxNzc2KSk7XHJcbiAgICAvLyB9XHJcbiAgICAvLyBjb25zb2xlLmxvZyhzdHIpO1xyXG4gIH1cclxuXHJcbiAgbGlzdFNob3dWYWx1ZShkZWZhdWx0czogYW55LCBmaWVsZDogRmllbGRJbmZvKSB7XHJcbiAgICByZXR1cm4gZGVmYXVsdHNbZmllbGQucHJvcGVydHldID8gdGhpcy5zaG93VmFsdWUoZGVmYXVsdHMsIGZpZWxkKSA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2hpcHNJdGVtKGZvcm06IEZvcm1Hcm91cCwgZmllbGROYW1lOiBzdHJpbmcsIGlkeDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBlbWFpbHMgPSB0aGlzLnNwbGl0dGVkQ2hpcHMoZm9ybSwgZmllbGROYW1lKTtcclxuICAgIGlmIChlbWFpbHMubGVuZ3RoID49IDEpe1xyXG4gICAgICBlbWFpbHMuc3BsaWNlKGlkeCwxKTtcclxuICAgIH1cclxuICAgIGxldCBjbGVhbmVkRW1haWxzID0gZW1haWxzLmpvaW4oXCI7XCIpO1xyXG4gICAgZm9ybS5nZXQoZmllbGROYW1lKS5zZXRWYWx1ZShjbGVhbmVkRW1haWxzKTtcclxuICB9XHJcblxyXG4gIGV4dHJhY3RGaWVsZE5hbWUoZWxlbWVudDogYW55LCBwcm9wZXJ0eTogc3RyaW5nKSB7XHJcbiAgICBpZiAocHJvcGVydHk/LmluY2x1ZGVzKCcuJykpIHtcclxuICAgICAgcmV0dXJuIHByb3BlcnR5LnNwbGl0KCcuJykucmVkdWNlKChhY2MsIHBhcnQpID0+IGFjYyAmJiBhY2NbcGFydF0sIGVsZW1lbnQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGVsZW1lbnRbcHJvcGVydHldO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNSZWFkb25seVRleHRWYWx1ZUVtcHR5KGRlZmF1bHRzOiBhbnksIGZpZWxkOiBGaWVsZEluZm8pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5leHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSk7XHJcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZS50cmltKCkgPT09ICcnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0UmVhZG9ubHlEYXRlRm9ybWF0KGZpZWxkOiBGaWVsZEluZm8pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGZpZWxkLnJlYWRvbmx5RGF0ZURpc3BsYXkgPT09ICdkYXRldGltZScgPyAnZGQvTU0veXl5eSBISDptbScgOiAnZGQvTU0veXl5eSc7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVNdWx0aVN0YXRlRmlsdGVyKHByb3BlcnR5OiBzdHJpbmcsIGNvZGU6IHN0cmluZywgY2hlY2tlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgY29uc3QgY3RybCA9IHRoaXMuZm9ybVBhcmFtLmdldChwcm9wZXJ0eSk7XHJcbiAgICBpZiAoIWN0cmwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmF3ID0gY3RybC52YWx1ZTtcclxuICAgIGNvbnN0IGN1cjogc3RyaW5nW10gPSBBcnJheS5pc0FycmF5KHJhdykgPyBbLi4ucmF3XSA6IFtdO1xyXG4gICAgaWYgKGNoZWNrZWQpIHtcclxuICAgICAgaWYgKCFjdXIuaW5jbHVkZXMoY29kZSkpIHtcclxuICAgICAgICBjdXIucHVzaChjb2RlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaWR4ID0gY3VyLmluZGV4T2YoY29kZSk7XHJcbiAgICAgIGlmIChpZHggPj0gMCkge1xyXG4gICAgICAgIGN1ci5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY3RybC5zZXRWYWx1ZShjdXIpO1xyXG4gIH1cclxuXHJcbiAgaXNNdWx0aVN0YXRlU2VsZWN0ZWQocHJvcGVydHk6IHN0cmluZywgY29kZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCByYXcgPSB0aGlzLmZvcm1QYXJhbS5nZXQocHJvcGVydHkpPy52YWx1ZTtcclxuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHJhdykgJiYgcmF3LmluY2x1ZGVzKGNvZGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFRyaWdnZXIgbGFiZWw6IGVtcHR5ID0+IGNhbGxlciBzaG93cyBwbGFjZWhvbGRlcjsgZWxzZSBzaG9ydCBzdW1tYXJ5LiAqL1xyXG4gIGdldE11bHRpU3RhdGVGaWx0ZXJUcmlnZ2VyTGFiZWwoZmllbGQ6IEZpZWxkSW5mbyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByYXcgPSB0aGlzLmZvcm1QYXJhbS5nZXQoZmllbGQucHJvcGVydHkpPy52YWx1ZTtcclxuICAgIGNvbnN0IHNlbGVjdGVkID0gQXJyYXkuaXNBcnJheShyYXcpID8gcmF3IDogW107XHJcbiAgICBjb25zdCBzZWN0aW9uID0gdGhpcy5wYWdlSW5mbz8ubGFiZWxzU2VjdGlvbiB8fCAnJztcclxuICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGSUxURVItQlVJTERFUi5zZWxlY3RTdGF0dXMnKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFyZUFsbE11bHRpU3RhdGVPcHRpb25zU2VsZWN0ZWQoZmllbGQsIHNlbGVjdGVkKSkge1xyXG4gICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0ZJTFRFUi1CVUlMREVSLmFsbFN0YXR1c2VzJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoIDw9IDIpIHtcclxuICAgICAgcmV0dXJuIHNlbGVjdGVkXHJcbiAgICAgICAgLm1hcChjID0+IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHNlY3Rpb24gPyBgJHtzZWN0aW9ufS4ke2N9YCA6IGMpKVxyXG4gICAgICAgIC5qb2luKCcsICcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdGSUxURVItQlVJTERFUi5tdWx0aVN0YXR1c1N1bW1hcnknLCB7IGNvdW50OiBzZWxlY3RlZC5sZW5ndGggfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFyZUFsbE11bHRpU3RhdGVPcHRpb25zU2VsZWN0ZWQoZmllbGQ6IEZpZWxkSW5mbywgc2VsZWN0ZWQ6IHN0cmluZ1tdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gZmllbGQubGlzdE9wdGlvbnMgfHwgW107XHJcbiAgICByZXR1cm4gb3B0aW9ucy5sZW5ndGggPiAwICYmIG9wdGlvbnMuZXZlcnkoKGNvZGU6IHN0cmluZykgPT4gc2VsZWN0ZWQuaW5jbHVkZXMoY29kZSkpO1xyXG4gIH1cclxuXHJcbiAgc3RhdHVzT3B0aW9uTGFiZWxLZXkoZmllbGQ6IEZpZWxkSW5mbywgY29kZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLnBhZ2VJbmZvPy5sYWJlbHNTZWN0aW9uO1xyXG4gICAgcmV0dXJuIHNlY3Rpb24gPyBgJHtzZWN0aW9ufS4ke2NvZGV9YCA6IGNvZGU7XHJcbiAgfVxyXG5cclxuICBnZXRNdWx0aVN0YXRlUmVhZG9ubHlTdW1tYXJ5KGZpZWxkOiBGaWVsZEluZm8sIGRlZmF1bHRzOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcmF3ID0gdGhpcy5leHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSk7XHJcbiAgICBjb25zdCBzZWxlY3RlZCA9IEFycmF5LmlzQXJyYXkocmF3KSA/IHJhdyA6IFtdO1xyXG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMucGFnZUluZm8/LmxhYmVsc1NlY3Rpb24gfHwgJyc7XHJcbiAgICByZXR1cm4gc2VsZWN0ZWRcclxuICAgICAgLm1hcChjID0+IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KHNlY3Rpb24gPyBgJHtzZWN0aW9ufS4ke2N9YCA6IGMpKVxyXG4gICAgICAuam9pbignLCAnKTtcclxuICB9XHJcblxyXG4gIGdldE11bHRpVmFsdWUoZmllbGQ6IEZpZWxkSW5mbykge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LnZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUVtYWlsKGVtYWlsKSB7XHJcbiAgICB2YXIgcmUgPSAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvO1xyXG4gICAgcmV0dXJuIHJlLnRlc3QoU3RyaW5nKGVtYWlsKS50b0xvd2VyQ2FzZSgpKTtcclxuICB9XHJcblxyXG4gIGFkZEVtYWlsVG9DaGlwcyhldmVudDogTWF0Q2hpcElucHV0RXZlbnQsIGZvcm06IEZvcm1Hcm91cCwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuXHJcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LmlucHV0O1xyXG4gICAgY29uc3QgdmFsdWUgPSBldmVudC52YWx1ZTtcclxuICAgIGNvbnN0IGl0ZW1zID0gdmFsdWUuc3BsaXQoJzsnKTtcclxuICAgIC8vIHZhbHVlLnNwbGl0KCcgJyk7XHJcbiAgICBpdGVtcy5mb3JFYWNoKGl0bSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnZhbGlkYXRlRW1haWwoKGl0bSB8fCAnJykudHJpbSgpKSkge1xyXG4gICAgICAgIGNvbnN0IHggPSB0aGlzLnNwbGl0dGVkQ2hpcHMoZm9ybSwgZmllbGROYW1lKTtcclxuICAgICAgICB4LnB1c2goaXRtKTtcclxuICAgICAgICBmb3JtLmdldChmaWVsZE5hbWUpLnBhdGNoVmFsdWUoeC5qb2luKCc7JykpO1xyXG4gICAgICAgIGlmIChpbnB1dCkge1xyXG4gICAgICAgICAgaW5wdXQudmFsdWUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGV4dHJhY3RKc29uRmllbGROYW1lKGRlZmF1bHRzOiBhbnksIHByb3BlcnR5OiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHg9IHRoaXMuZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgcHJvcGVydHkpO1xyXG4gICAgaWYgKHg/Lmxlbmd0aCA+IDApXHJcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHgpO1xyXG4gICAgZWxzZSByZXR1cm4gJ3t9JztcclxuICB9XHJcblxyXG4gIGdldE9wdGlvblZhbHVlKGl0ZW06IGFueSkge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgP1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5nZXREZWZhdWx0TGFuZygpID09PSAnZW4nID8gaXRlbS5lbmdsaXNoTmFtZSA6IGl0ZW0uYXJhYmljTmFtZVxyXG4gICAgICAgIDogaXRlbTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcblxyXG4gIGdldEh5cGVyVGV4dEV2ZW50KCkge1xyXG4gICAgdGhpcy5oeXBlclRleHRFdmVudC5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgYWRkKGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudmFsdWUgfHwgJycpLnRyaW0oKTtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICBpZiAodGhpcy5lcXVhdGlvbk9wZXJhdG9ycy5pbmNsdWRlcyh2YWx1ZSkgfHwgIXRoaXMuZXF1YXRpb25WYWx1ZXMoKS5pbmNsdWRlcyh2YWx1ZSkpIHtcclxuICAgICAgICB0aGlzLmVxdWF0aW9uVmFsdWVzLnVwZGF0ZShlcXVhdGlvblZhbHVlcyA9PiBbLi4uZXF1YXRpb25WYWx1ZXMsIHZhbHVlXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkc0lucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcclxuICAgIHRoaXMuY3VycmVudEVxdWF0aW9uVmFsdWUuc2V0KCcnKTtcclxuICAgIHRoaXMudXBkYXRlRXF1YXRpb25PcHRpb25zKCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGl0ZW06IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5lcXVhdGlvblZhbHVlcy51cGRhdGUoZXF1YXRpb25WYWx1ZXMgPT4ge1xyXG4gICAgICBpZiAoaW5kZXggPCAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGVxdWF0aW9uVmFsdWVzO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBlcXVhdGlvblZhbHVlcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICB0aGlzLmFubm91bmNlci5hbm5vdW5jZShgUmVtb3ZlZCAke2l0ZW19YCk7XHJcbiAgICAgIHJldHVybiBbLi4uZXF1YXRpb25WYWx1ZXNdO1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnVwZGF0ZUVxdWF0aW9uT3B0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWQoZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQpOiB2b2lke1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IGV2ZW50Lm9wdGlvbi52aWV3VmFsdWUudHJpbSgpO1xyXG5cclxuICAgIGlmICghdGhpcy5lcXVhdGlvbk9wZXJhdG9ycy5pbmNsdWRlcyhzZWxlY3RlZFZhbHVlKSAmJiAhdGhpcy5lcXVhdGlvblZhbHVlcygpLmluY2x1ZGVzKHNlbGVjdGVkVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuZXF1YXRpb25WYWx1ZXMudXBkYXRlKGVxdWF0aW9uVmFsdWVzID0+IFsuLi5lcXVhdGlvblZhbHVlcywgc2VsZWN0ZWRWYWx1ZV0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmVxdWF0aW9uT3BlcmF0b3JzLmluY2x1ZGVzKHNlbGVjdGVkVmFsdWUpKSB7XHJcbiAgICAgIHRoaXMuZXF1YXRpb25WYWx1ZXMudXBkYXRlKGVxdWF0aW9uVmFsdWVzID0+IFsuLi5lcXVhdGlvblZhbHVlcywgc2VsZWN0ZWRWYWx1ZV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3VycmVudEVxdWF0aW9uVmFsdWUuc2V0KCcnKTtcclxuICAgIGV2ZW50Lm9wdGlvbi5kZXNlbGVjdCgpO1xyXG4gICAgdGhpcy5maWVsZHNJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnVwZGF0ZUVxdWF0aW9uT3B0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlRXF1YXRpb25PcHRpb25zKCl7XHJcbiAgICB0aGlzLnJlZmxlY3RFcXVhdGlvblZhbHVlT25Gb3JtKCk7XHJcblxyXG4gICAgbGV0IHVwZGF0ZWRGaWVsZHM6IHN0cmluZ1tdO1xyXG4gICAgaWYgKHRoaXMuZXF1YXRpb25WYWx1ZXMoKS5sZW5ndGggPT09IDApIHtcclxuICAgICAgdXBkYXRlZEZpZWxkcyA9IHRoaXMuZ2V0TmFtZXNGcm9tU3VnZ2VzdGVkRXF1YXRpb25GaWVsZHMoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBsYXN0RWxlbWVudCA9IHRoaXMuZXF1YXRpb25WYWx1ZXMoKVt0aGlzLmVxdWF0aW9uVmFsdWVzKCkubGVuZ3RoIC0gMV07XHJcbiAgICAgIGlmICh0aGlzLmVxdWF0aW9uT3BlcmF0b3JzLmluY2x1ZGVzKGxhc3RFbGVtZW50KSkge1xyXG4gICAgICAgIHVwZGF0ZWRGaWVsZHMgPSB0aGlzLmdldE5hbWVzRnJvbVN1Z2dlc3RlZEVxdWF0aW9uRmllbGRzKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdXBkYXRlZEZpZWxkcyA9IHRoaXMuZXF1YXRpb25PcGVyYXRvcnM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIGNvbnNvbGUubG9nKCcqKioqKicsIHVwZGF0ZWRGaWVsZHMpO1xyXG4gICAgdGhpcy5hbGxFcXVhdGlvbkZpZWxkcy5uZXh0KHVwZGF0ZWRGaWVsZHMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZXNGcm9tU3VnZ2VzdGVkRXF1YXRpb25GaWVsZHMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXF1YXRpb25TdWdnZXN0ZWRGaWVsZHM/Lm1hcChmaWVsZCA9PiBmaWVsZC5uYW1lKTtcclxuICB9XHJcblxyXG4gIHJlZmxlY3RFcXVhdGlvblZhbHVlT25Gb3JtKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybVBhcmFtICYmIHRoaXMuZm9ybVBhcmFtLmdldCgnZmllbGRWYWx1ZScpKSB7XHJcbiAgICAgIHRoaXMuZm9ybVBhcmFtLmdldCgnZmllbGRWYWx1ZScpLnNldFZhbHVlKHRoaXMuZXF1YXRpb25WYWx1ZXMoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBjb25zb2xlLmxvZygnRm9ybSBvciBmaWVsZFZhbHVlIGlzIG5vdCBhdmFpbGFibGUuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjaGVja0VxdWF0aW9uKGZpZWxkOiBGaWVsZEluZm8sICRldmVudDogRXZlbnQpIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCckZXZlbnQnLCAkZXZlbnQpO1xyXG4gICAgLy8gdHJ5IHtcclxuICAgIC8vICAgZXZhbHVhdGUoZXF1YXRpb24ucmVwbGFjZSgvW2EtekEtWjAtOV0rL2csICcxJykpOyAvLyBSZXBsYWNlIHZhcmlhYmxlcyB3aXRoIGR1bW15IHZhbHVlc1xyXG4gICAgLy8gICB0aGlzLmZvcm1Hcm91cHNbaW5kZXhdLmdldCgneHl6Jykuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygndmFsaWQgJywgZXF1YXRpb24pXHJcbiAgICAvLyB9IGNhdGNoIChlKSB7XHJcbiAgICAvLyAgIHRoaXMuZm9ybUdyb3Vwc1tpbmRleF0uZ2V0KCd4eXonKS5zZXRFcnJvcnMoe3NlcnZlckVycm9yOiAnaW5jb21wbGV0ZSAnfSk7XHJcbiAgICAvLyAgIGNvbnNvbGUubG9nKCdiYWQgJywgZXF1YXRpb24pXHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBnZXRWaWV3KGZpZWxkKTogJ21vbnRoJyB8ICd5ZWFyJyB8ICdtdWx0aS15ZWFyJyB7XHJcbiAgICByZXR1cm4gZmllbGQucGF0dGVybiB8fCAnbW9udGgnO1xyXG4gIH1cclxuXHJcbiAgc2V0TW9udGhBbmRZZWFyKG5vcm1hbGl6ZWRNb250aEFuZFllYXI6IE1vbWVudCwgcGlja2VyOiBNYXREYXRlcGlja2VyPE1vbWVudD4sIGZpZWxkKSB7XHJcbiAgICBjb25zb2xlLmxvZygnZmllbGQucGF0dGVybicsIGZpZWxkLnBhdHRlcm4pXHJcbiAgICBpZiAoZmllbGQucGF0dGVybiA9PT0gJ211bHRpLXllYXInKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdoaScpXHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRm9ybUNvbnRyb2wobW9tZW50KCkpO1xyXG4gICAgICBjb25zdCBjdHJsVmFsdWUgPSBkYXRlLnZhbHVlO1xyXG4gICAgICBjdHJsVmFsdWUueWVhcihub3JtYWxpemVkTW9udGhBbmRZZWFyLnllYXIoKSk7XHJcbiAgICAgIGN0cmxWYWx1ZS5tb250aCgxKTtcclxuICAgICAgY3RybFZhbHVlLmRheU9mWWVhcigxKTtcclxuICAgICAgdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KS5zZXRWYWx1ZShjdHJsVmFsdWUpXHJcbiAgICAgIHBpY2tlci5jbG9zZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWNjZXB0ZWRGaWxlVHlwZXMoZmllbGQ6IEZpZWxkSW5mbyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIWZpZWxkLnN1cHBvcnRlZFR5cGVzKSB7XHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICAvLyBDb252ZXJ0IFwiLmpwZywucG5nLC5wZGZcIiBmb3JtYXQgdG8gXCJpbWFnZS9qcGVnLGltYWdlL3BuZyxhcHBsaWNhdGlvbi9wZGZcIiBvciBrZWVwIGFzIGlzXHJcbiAgICAvLyBGb3Igc2ltcGxpY2l0eSwgd2UnbGwgcGFzcyB0aGUgc3VwcG9ydGVkVHlwZXMgYXMtaXMgYW5kIGxldCB0aGUgYnJvd3NlciBoYW5kbGUgaXRcclxuICAgIC8vIFRoZSBicm93c2VyIGFjY2VwdHMgYm90aCBmb3JtYXRzXHJcbiAgICByZXR1cm4gZmllbGQuc3VwcG9ydGVkVHlwZXM7XHJcbiAgfVxyXG5cclxuICBvbkF0dGFjaG1lbnRGaWxlU2VsZWN0ZWQoZmlsZTogRmlsZSB8IG51bGwsIGZpZWxkOiBGaWVsZEluZm8pOiB2b2lkIHtcclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIC8vIFZhbGlkYXRlIGZpbGUgdHlwZSBpZiBzdXBwb3J0ZWRUeXBlcyBpcyBzcGVjaWZpZWRcclxuICAgICAgaWYgKGZpZWxkLnN1cHBvcnRlZFR5cGVzKSB7XHJcbiAgICAgICAgY29uc3QgYWxsb3dlZFR5cGVzID0gZmllbGQuc3VwcG9ydGVkVHlwZXMuc3BsaXQoJywnKS5tYXAodCA9PiB0LnRyaW0oKS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gJy4nICsgZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKCk/LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgaWYgKCFhbGxvd2VkVHlwZXMuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikpIHtcclxuICAgICAgICAgIC8vIEZpbGUgdHlwZSBub3Qgc3VwcG9ydGVkIC0gY291bGQgc2hvdyBlcnJvciBtZXNzYWdlXHJcbiAgICAgICAgICBjb25zb2xlLndhcm4oYEZpbGUgdHlwZSAke2ZpbGVFeHRlbnNpb259IGlzIG5vdCBzdXBwb3J0ZWQuIEFsbG93ZWQgdHlwZXM6ICR7ZmllbGQuc3VwcG9ydGVkVHlwZXN9YCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBVcGRhdGUgZm9ybSBjb250cm9sIGlmIGl0IGV4aXN0c1xyXG4gICAgICBpZiAodGhpcy5mb3JtUGFyYW0gJiYgdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KSkge1xyXG4gICAgICAgIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LnNldFZhbHVlKGZpbGUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBFbWl0IGF0dGFjaG1lbnQgZXZlbnRcclxuICAgICAgdGhpcy5hdHRhY2htZW50RW1pdHRlci5lbWl0KHtcclxuICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgIGZpZWxkOiBmaWVsZCxcclxuICAgICAgICBhdHRhY2htZW50VHlwZTogZmllbGQuYXR0YWNobWVudFR5cGVcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBDbGVhciB0aGUgZm9ybSBjb250cm9sIGlmIGZpbGUgaXMgcmVtb3ZlZFxyXG4gICAgICBpZiAodGhpcy5mb3JtUGFyYW0gJiYgdGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KSkge1xyXG4gICAgICAgIHRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtYWluLWZvcm0tY2FudmFzXCI+XHJcbiAgPGRpdiBjbGFzcz1cImZvcm0td3JhcHBlclwiPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRlZmF1bHRzXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0YWJsZTsgZWxzZSByZWFkb25seVZpZXdcIiBjbGFzcz1cImZvcm0tY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIiBjbGFzcz1cImZvcm0tY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBzY3JlZW5GaWVsZHMgfCBrZXl2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2Ygcm93LnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWNvbHVtblwiIFtzdHlsZS5mbGV4XT1cImZpZWxkLmZpZWxkU2l6ZSA/ICgnMCAwICcgKyBmaWVsZC5maWVsZFNpemUgKyAnJScpIDogJzEgMSAwJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmllbGQudHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGF0ZUNoYW5nZSk9XCJmb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KS5zZXRWYWx1ZSgkZXZlbnQudmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tmaWVsZC5wcm9wZXJ0eX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RhcnRWaWV3XT1cImdldFZpZXcoZmllbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHllYXJTZWxlY3RlZCk9XCJzZXRNb250aEFuZFllYXIoJGV2ZW50LCBwaWNrZXIsIGZpZWxkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsQ2xhc3M9XCJleGFtcGxlLW1vbnRoLXBpY2tlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWRhdGVwaWNrZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Bob25lLW51bWJlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgY2xhc3M9XCJjdXN0b20tbmd4LW1hdC1pbnRsLXRlbC1pbnB1dFwiICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBob25lLWlucHV0LXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtbWF0LWludGwtdGVsLWlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0UGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZmVycmVkQ291bnRyaWVzXT1cIlsncWEnXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGVQbGFjZWhvbGRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZVNlYXJjaF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29ubHlDb3VudHJpZXNdPVwiZ2V0Q291bnRyeUNvZGVMaXN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZ3gtbWF0LWludGwtdGVsLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2liYW4tdGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJhcHAtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwYXNzd29yZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhcHAtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiaGlkZSAmJiAhZmllbGQuZGlzYWJsZWQgPyAncGFzc3dvcmQnIDogJ3RleHQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIG1hdFN1ZmZpeC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiaGlkZSA9ICFoaWRlXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBoaWRlID8gJ3Zpc2liaWxpdHlfb2ZmJyA6ICd2aXNpYmlsaXR5JyB9fS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWljb24+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZXh0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImZpZWxkLnNob3dTZWFyY2hJY29uXCIgbWF0UHJlZml4PnNlYXJjaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwiZml4QXJhYmljTnVtYmVycygkZXZlbnQudGFyZ2V0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQuc2hvd1NlYXJjaEljb24gJiYgIWZpZWxkLnJlYWRvbmx5ICYmIChmb3JtUGFyYW0/LmdldChbZmllbGQucHJvcGVydHldKT8udmFsdWUgPz8gJycpICE9PSAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRTdWZmaXhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2xlYXItaWNvbi1zdWZmaXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNsZWFyLWljb24tYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyRmllbGRWYWx1ZShmaWVsZC5wcm9wZXJ0eSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ211bHRpLXN0YXRlLWNoZWNrYm94J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlclwiIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlcl9fdHJpZ2dlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwic3RhdHVzTXVsdGlNZW51XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaGFzcG9wdXBdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJfX3RyaWdnZXItdGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE11bHRpU3RhdGVGaWx0ZXJUcmlnZ2VyTGFiZWwoZmllbGQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJycpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtdWx0aS1zdGF0ZS1maWx0ZXJfX2NoZXZyb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5rZXlib2FyZF9hcnJvd19kb3duPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI3N0YXR1c011bHRpTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlcl9fbWVudS1wYW5lbFwiIFtoYXNCYWNrZHJvcF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGktc3RhdGUtZmlsdGVyX19tZW51LWlubmVyXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvZGUgb2YgZmllbGQubGlzdE9wdGlvbnMgfHwgW11cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXVsdGktc3RhdGUtZmlsdGVyX19yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzTXVsdGlTdGF0ZVNlbGVjdGVkKGZpZWxkLnByb3BlcnR5LCBjb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInRvZ2dsZU11bHRpU3RhdGVGaWx0ZXIoZmllbGQucHJvcGVydHksIGNvZGUsICRldmVudC5jaGVja2VkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm11bHRpLXN0YXRlLWZpbHRlcl9fcGlsbCBzdGF0ZVR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgc3RhdHVzT3B0aW9uTGFiZWxLZXkoZmllbGQsIGNvZGUpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NoaXAtbGlzdCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtZ3JpZCBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGlwLXJvd1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1haWwgb2Ygc3BsaXR0ZWRDaGlwcyhmb3JtUGFyYW0sIGZpZWxkLnByb3BlcnR5KTsgbGV0IGlkeCA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwicmVtb3ZhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmVkKT1cInJlbW92ZUNoaXBzSXRlbShmb3JtUGFyYW0sIGZpZWxkLnByb3BlcnR5LCBpZHgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtYWlsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gbWF0Q2hpcFJlbW92ZSAqbmdJZj1cInJlbW92YWJsZVwiPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1yb3c+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiIFttYXRDaGlwSW5wdXRGb3JdPVwibnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRDaGlwSW5wdXRTZXBhcmF0b3JLZXlDb2Rlc109XCJzZXBhcmF0b3JLZXlzQ29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0QWRkT25CbHVyXT1cImFkZE9uQmx1clwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRDaGlwSW5wdXRUb2tlbkVuZCk9XCJhZGRFbWFpbFRvQ2hpcHMoJGV2ZW50LCBmb3JtUGFyYW0sIGZpZWxkLnByb3BlcnR5KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInYW1vdW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJhbW91bnRSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidlcnJvci0nICsgZmllbGQucHJvcGVydHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3NlcXVlbmNlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicmVmZXJlbmNlQXR0cmlidXRlVHJ1ZShmaWVsZC5wcm9wZXJ0eSwgJ2F1dG9HZW5lcmF0ZWQnKTsgZWxzZSBub1NlcXVlbmNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJhcHAtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub1NlcXVlbmNlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJhcHAtaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidlcnJvci0nICsgZmllbGQucHJvcGVydHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dGFyZWFSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjZGtGb2N1c0luaXRpYWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtUZXh0YXJlYUF1dG9zaXplXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiJ2xhYmVsLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbnVtYmVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJudW1iZXJSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImZpZWxkLnBsYWNlaG9sZGVyID8gKGxhYmVsS2V5UGxhY2VIb2xkZXIoZmllbGQpIHwgdHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4RGlnaXRzXT1cImZpZWxkLm1heExlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiJ2Vycm9yLScgKyBmaWVsZC5wcm9wZXJ0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZWFkb25seSA/IGZhbHNlIDogZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGF0dGVybl09XCJmaWVsZC5wYXR0ZXJuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCIgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidiaWdkZWNpbWFsJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJudW1iZXJSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwtYW5kLWFzdGVyaXNrLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cImN1c3RvbS1sYWJlbFwiIGlkPVwibGFiZWwte3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWxcIiBjbGFzcz1cInJlcXVpcmVkLWFzdGVyaXNrXCI+ICogPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLnJlcXVpcmVkICYmICFmaWVsZC5oaWRlTGFiZWwgJiYgIWZpZWxkLnJlYWRvbmx5XCIgY2xhc3M9XCJvcHRpb25hbC10ZXh0XCI+IHt7ICdvcHRpb25hbCcgfCB0cmFuc2xhdGUgfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRtb2RlPVwibnVtZXJpY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXIgPyAobGFiZWxLZXlQbGFjZUhvbGRlcihmaWVsZCkgfCB0cmFuc2xhdGUpIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJzT25seSAgW21heERlY2ltYWxzXT1cImZpZWxkLm1heERlY2ltYWxzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhEaWdpdHNdPVwiZmllbGQubWF4TGVuZ3RoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXR0ZXJuXT1cImZpZWxkLnBhdHRlcm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZWFkb25seSA/IGZhbHNlIDogZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cImZpZWxkLnJlYWRvbmx5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciBpZD1cImVycm9yLXt7IGZpZWxkLnByb3BlcnR5IH19XCIgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aW1lUmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsLWFuZC1hc3Rlcmlzay1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPiAqIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFmaWVsZC5yZXF1aXJlZCAmJiAhZmllbGQuaGlkZUxhYmVsICYmICFmaWVsZC5yZWFkb25seVwiIGNsYXNzPVwib3B0aW9uYWwtdGV4dFwiPiB7eyAnb3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXBwLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0aW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cIidsYWJlbC0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidlcnJvci0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMTRweDsgcGFkZGluZy10b3A6IDE0cHg7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzaG93RXJyb3IoZmllbGQucHJvcGVydHkpXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0b2dnbGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvZ2dsZVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cIidlcnJvci0nICsgZmllbGQucHJvcGVydHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZXJyb3Ite3sgZmllbGQucHJvcGVydHkgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjb2xvci1waWNrZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRBbGlnbj1cImNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIj57eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlanMtY29sb3JwaWNrZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY29sb3JwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7IGZpZWxkLnByb3BlcnR5IH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvLWJ1dHRvbidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicmFkaW9CdXR0b25SZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcmFkaW8tZ3JvdXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7e2ZpZWxkLnByb3BlcnR5fX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXBwLXJhZGlvXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tbGFiZWxcIj57eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1pbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZ3JvdXAtY3VzdG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1yYWRpby1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmllbGQubGlzdE9wdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwib3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb24gfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEVycm9ycyhmaWVsZC5wcm9wZXJ0eSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xpc3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIiBzdHlsZT1cIndpZHRoOiAxMDAlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInt7ZmllbGQucHJvcGVydHl9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpZWxkLmxhYmVsISB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXJlcXVpcmVkXT1cImZpZWxkLnJlcXVpcmVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlXT1cImZpZWxkLm11bHRpIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZWFkb25seSA/IGZhbHNlIDogZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiZmllbGQuZGVmYXVsdExpc3RPcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC50cmFuc2xhdGU7IGVsc2UgbG9va3VwX25vX3RyYW5zbGF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmllbGQubGlzdE9wdGlvbnM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZnJpZW5kbHlOYW1lKGZpZWxkLmxhYmVsLCBmaWVsZC5wcm9wZXJ0eSwgaXRlbSkgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2xvb2t1cF9ub190cmFuc2xhdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5saXN0T3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRPcHRpb25WYWx1ZShpdGVtKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2F0dGFjaG1lbnQnXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQuaGlkZUxhYmVsXCIgY2xhc3M9XCJjdXN0b20tbGFiZWxcIiBpZD1cImxhYmVsLXt7ZmllbGQucHJvcGVydHl9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWF0dGFjaG1lbnQtdXBsb2FkZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWNjZXB0ZWRUeXBlc109XCJnZXRBY2NlcHRlZEZpbGVUeXBlcyhmaWVsZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlU2VsZWN0ZWQpPVwib25BdHRhY2htZW50RmlsZVNlbGVjdGVkKCRldmVudCwgZmllbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1hcmdpbi10b3A6IDVweFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1hdHRhY2htZW50LXVwbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yIGNsYXNzPVwiaXEtZXJyb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xvb2t1cCdcIiBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsb29rdXBSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtYXV0by1jb21wbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1QYXJhbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3VwcG9ydGluZ0F0dHJpYnV0ZXNdPVwic3VwcG9ydGluZ0F0dHJpYnV0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0VmFsdWVdPVwidGhpcy5mb3JtUGFyYW0uZ2V0KGZpZWxkLnByb3BlcnR5KT8udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZFZhbHVlKT1cInBhdGNoTG9va3VwVmFsdWUoJGV2ZW50LCBmaWVsZC5wcm9wZXJ0eSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWF1dG8tY29tcGxldGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2N1cnJlbmN5J1wiIFtmb3JtR3JvdXBdPVwiZm9ybVBhcmFtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1cnJlbmN5UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwid29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFVuY29tbWVudCBhbmQgdXNlIHRoZSBjdXJyZW5jeSBjb250cm9sIHdoZW4gcmVhZHkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGFwcC1jdXJyZW5jeVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybV09XCJmb3JtUGFyYW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cInRoaXMuZm9ybVBhcmFtLmdldChmaWVsZC5wcm9wZXJ0eSk/LnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkVmFsdWUpPVwicGF0Y2hDdXJyZW5jeVZhbHVlKCRldmVudCwgZmllbGQucHJvcGVydHkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWN1cnJlbmN5PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aS1zZWxlY3QnXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwibXVsdGlTZWxlY3RSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtbXVsdGktYXV0by1jb21wbGV0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtXT1cImZvcm1QYXJhbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdFZhbHVlXT1cImdldE11bHRpVmFsdWUoZmllbGQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWRWYWx1ZSk9XCJwYXRjaE11bHRpU2VsZWN0VmFsdWUoJGV2ZW50LCBmaWVsZC5wcm9wZXJ0eSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLW11bHRpLWF1dG8tY29tcGxldGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyaWNoLXRleHQnXCIgW2Zvcm1Hcm91cF09XCJmb3JtUGFyYW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gVW5jb21tZW50IGFuZCB1c2UgdGhlIHJpY2ggdGV4dCBlZGl0b3Igd2hlbiByZWFkeSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGNrZWRpdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWRpdG9yXT1cIkVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGQucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwie3tmaWVsZC5wcm9wZXJ0eX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NrZWRpdG9yPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGl2aWRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInaHlwZXItdGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0SHlwZXJUZXh0RXZlbnQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaHlwZXItbGlua1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWN0aW9uLXRpdGxlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93RmllbGQoZGVmYXVsdHMsIGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhyZGl2aWRlci1taWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmllbGQubGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZXF1YXRpb24tYnVpbGRlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd0ZpZWxkKGRlZmF1bHRzLCBmaWVsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGV4dFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ3b3JrZmxvd0VkaXRhYmxlRmllbGQoZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbC1hbmQtYXN0ZXJpc2stY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwiY3VzdG9tLWxhYmVsXCIgaWQ9XCJsYWJlbC17e2ZpZWxkLnByb3BlcnR5fX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBmaWVsZC5sYWJlbCEgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbFwiIGNsYXNzPVwicmVxdWlyZWQtYXN0ZXJpc2tcIj4gKiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhZmllbGQucmVxdWlyZWQgJiYgIWZpZWxkLmhpZGVMYWJlbCAmJiAhZmllbGQucmVhZG9ubHlcIiBjbGFzcz1cIm9wdGlvbmFsLXRleHRcIj4ge3sgJ29wdGlvbmFsJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJhcHAtaW5wdXRcIiBkaXI9XCJsdHJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ7eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlciA/IChsYWJlbEtleVBsYWNlSG9sZGVyKGZpZWxkKSB8IHRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCJmaWVsZC5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmaWVsZC5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwiZmllbGQucmVxdWlyZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWludmFsaWRdPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCInbGFiZWwtJyArIGZpZWxkLnByb3BlcnR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCInZXJyb3ItJyArIGZpZWxkLnByb3BlcnR5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlcnJvci17eyBmaWVsZC5wcm9wZXJ0eSB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dFcnJvcihmaWVsZC5wcm9wZXJ0eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRFcnJvcnMoZmllbGQucHJvcGVydHkpIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZXF1YXRpb24tYnVpbGRlcidcIiBbZm9ybUdyb3VwXT1cImZvcm1QYXJhbVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dGaWVsZChkZWZhdWx0cywgZmllbGQpXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhd29ya2Zsb3dFZGl0YWJsZUZpZWxkKGZpZWxkKVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRhdGVSZWFkb25seVwiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtmbG93RWRpdGFibGVGaWVsZChmaWVsZClcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgd2lkdGg6IDM1MCVcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3sgZmllbGQubGFiZWwhIHwgdHJhbnNsYXRlIH19PC9tYXQtbGFiZWw+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogNDAwJVwiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1ncmlkICNjaGlwR3JpZD4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcXVhdGlvblZhbHVlIG9mIGVxdWF0aW9uVmFsdWVzKCk7IGxldCBpID0gaW5kZXhcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1yb3cgKHJlbW92ZWQpPVwicmVtb3ZlKGVxdWF0aW9uVmFsdWUsIGkpXCI+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGVxdWF0aW9uVmFsdWUgfX0tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdENoaXBSZW1vdmUtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidyZW1vdmUgJyArIGVxdWF0aW9uVmFsdWVcIj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+Y2FuY2VsPC9tYXQtaWNvbj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLXJvdz4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1ncmlkPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRFcXVhdGlvblZhbHVlXCItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBHcmlkXCItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7IHN0YW5kYWxvbmU6IHRydWUgfVwiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdENoaXBJbnB1dFRva2VuRW5kKT1cImFkZCgkZXZlbnQpXCItLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiQWRkIGVxdWF0aW9uIHZhbHVlXCIgLz4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWQoJGV2ZW50KVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpbHRlcmVkRmllbGQgb2YgKGVxdWF0aW9uRmlsdGVyZWRGaWVsZHMoKSB8IGFzeW5jKVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cImZpbHRlcmVkRmllbGRcIj57eyBmaWx0ZXJlZEZpZWxkIH19PC9tYXQtb3B0aW9uPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJpcS1lcnJvclwiICpuZ0lmPVwic2hvd0Vycm9yKGZpZWxkLnByb3BlcnR5KVwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0RXJyb3JzKGZpZWxkLnByb3BlcnR5KSB8IHRyYW5zbGF0ZSB9fS0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPi0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbjwvZGl2PlxyXG48bmctdGVtcGxhdGUgI2RhdGVSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpIHwgZGF0ZTogZ2V0UmVhZG9ubHlEYXRlRm9ybWF0KGZpZWxkKSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGltZVJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBmb3JtYXRUaW1lVG9EYXRlKGRlZmF1bHRzW2ZpZWxkLnByb3BlcnR5XSkgfCBkYXRlOiAnc2hvcnRUaW1lJyB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcGhvbmVOdW1iZXJSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpIH19PC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICN0ZXh0UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIiAqbmdJZj1cIiFmaWVsZC5hZHZhbmNlZEZpbHRlclwiPjwvbGFiZWw+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNSZWFkb25seVRleHRWYWx1ZUVtcHR5KGRlZmF1bHRzLCBmaWVsZCkgJiYgZmllbGQuZW1wdHlSZWFkb25seVBsYWNlaG9sZGVyS2V5OyBlbHNlIHRleHRSZWFkb25seUhhc1ZhbHVlXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWUgcmVhZG9ubHktdmFsdWUtLWVtcHR5XCI+e3sgZmllbGQuZW1wdHlSZWFkb25seVBsYWNlaG9sZGVyS2V5IHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctdGVtcGxhdGUgI3RleHRSZWFkb25seUhhc1ZhbHVlPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpIH19PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjdGV4dGFyZWFSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC50ZXh0Rm9ybWF0ID09PSAnanNvbic7IGVsc2Ugbm9ybWFsVGV4dFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktdmFsdWUganNvbi12aWV3ZXJcIj5cclxuICAgICAgICA8bmd4LWpzb24tdmlld2VyIFtqc29uXT1cImV4dHJhY3RKc29uRmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSlcIiBbZXhwYW5kZWRdPVwidHJ1ZVwiPjwvbmd4LWpzb24tdmlld2VyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIDxuZy10ZW1wbGF0ZSAjbm9ybWFsVGV4dD5cclxuICAgIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI251bWJlclJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkgfX08L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2N1cnJlbmN5UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmFkaW9CdXR0b25SZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+e3sgdHJhbnNsYXRlTGFibGUoZGVmYXVsdHNbZmllbGQucHJvcGVydHldKSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmljaFRleHRSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCIgW2lubmVySHRtbF09XCJleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSlcIj48L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2NoZWNrYm94UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPlxyXG4gICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCIgKm5nSWY9XCJleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSk7IGVsc2Ugc2hvd05vXCI+ZG9uZTwvbWF0LWljb24+XHJcbiAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd05vPlxyXG4gICAgICAgIDxtYXQtaWNvbiBjb2xvcj1cIndhcm5cIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3RvZ2dsZVJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj5cclxuICAgICAgPG1hdC1pY29uIGNvbG9yPVwid2FyblwiICpuZ0lmPVwiZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpOyBlbHNlIHNob3dOb1wiPmRvbmU8L21hdC1pY29uPlxyXG4gICAgICA8bmctdGVtcGxhdGUgI3Nob3dObz5cclxuICAgICAgICA8bWF0LWljb24gY29sb3I9XCJ3YXJuXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNsaXN0UmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiICpuZ0lmPVwiZmllbGQudHJhbnNsYXRlOyBlbHNlIG5vVHJhbnNsYXRlXCI+XHJcbiAgICAgIHt7IGxpc3RTaG93VmFsdWUoZGVmYXVsdHMsIGZpZWxkKSB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gICAgPG5nLXRlbXBsYXRlICNub1RyYW5zbGF0ZT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3NlcXVlbmNlUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPnt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB9fTwvc3Bhbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbG9va3VwUmVhZG9ubHkgbGV0LWZpZWxkPVwiZmllbGRcIj5cclxuICA8ZGl2IGNsYXNzPVwicmVhZG9ubHktaXRlbVwiPlxyXG4gICAgPGxhYmVsIGNsYXNzPVwicmVhZG9ubHktbGFiZWxcIiBbaW5uZXJIdG1sXT1cIiFmaWVsZC5oaWRlTGFiZWwgPyAoZmllbGQubGFiZWwgfCB0cmFuc2xhdGUpIDogJydcIj48L2xhYmVsPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJyZWFkb25seS12YWx1ZVwiPlxyXG4gICAgICB7eyBleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSk/Llt0cmFuc2xhdGVTZXJ2aWNlLmdldERlZmF1bHRMYW5nKCkgPT09ICdlbicgPyAnZW5nbGlzaE5hbWUnIDogJ2FyYWJpY05hbWUnXSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNhbW91bnRSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvbGFiZWw+XHJcbiAgICA8c3BhbiBjbGFzcz1cInJlYWRvbmx5LXZhbHVlXCI+XHJcbiAgICAgIHt7IGV4dHJhY3RGaWVsZE5hbWUoZGVmYXVsdHMsIGZpZWxkLnByb3BlcnR5KSB8IGN1cnJlbmN5OiBjdXJyZW5jeSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNtdWx0aVNlbGVjdFJlYWRvbmx5IGxldC1maWVsZD1cImZpZWxkXCI+XHJcbiAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgIDxsYWJlbCBjbGFzcz1cInJlYWRvbmx5LWxhYmVsXCIgW2lubmVySHRtbF09XCIhZmllbGQuaGlkZUxhYmVsID8gKGZpZWxkLmxhYmVsIHwgdHJhbnNsYXRlKSA6ICcnXCI+PC9sYWJlbD5cclxuICAgIDxtYXQtY2hpcC1ncmlkIGNsYXNzPVwicmVhZG9ubHktdmFsdWUgY2hpcExpc3RcIj5cclxuICAgICAgPG1hdC1jaGlwICpuZ0Zvcj1cImxldCBmaWxlZFByb3Agb2Ygc2hvd011bHRpU2VsZWN0VmFsdWVzQXNSZWFkb25seShmaWVsZClcIj5cclxuICAgICAgICB7eyBmaWxlZFByb3AgfX1cclxuICAgICAgPC9tYXQtY2hpcD5cclxuICAgIDwvbWF0LWNoaXAtZ3JpZD5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY2hpcExpc3RSZWFkb25seSBsZXQtZmllbGQ9XCJmaWVsZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJyZWFkb25seS1pdGVtXCI+XHJcbiAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiIFtpbm5lckhUTUxdPVwiZmllbGQubGFiZWwgfCB0cmFuc2xhdGVcIj48L2xhYmVsPlxyXG4gICAgPG1hdC1jaGlwLWxpc3Rib3ggY2xhc3M9XCJyZWFkb25seS12YWx1ZSBjaGlwTGlzdFwiPlxyXG4gICAgICA8bWF0LWNoaXAtb3B0aW9uICpuZ0Zvcj1cImxldCBsb2Mgb2Ygc3BsaXRSZWFkb25seShleHRyYWN0RmllbGROYW1lKGRlZmF1bHRzLCBmaWVsZC5wcm9wZXJ0eSkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwiZmFsc2VcIj5cclxuICAgICAgICB7eyBsb2MgfX1cclxuICAgICAgPC9tYXQtY2hpcC1vcHRpb24+XHJcbiAgICA8L21hdC1jaGlwLWxpc3Rib3g+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPG5nLXRlbXBsYXRlICNyZWFkb25seVZpZXc+XHJcbiAgPGRpdiBjbGFzcz1cInJvdy13cmFwcGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uLXdyYXBwZXJcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcm93IG9mIHNjcmVlbkZpZWxkcyB8IGtleXZhbHVlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdy1jb250YWluZXJcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIHJvdy52YWx1ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtY29sdW1uIHJlYWRvbmx5LWl0ZW1cIiBbc3R5bGUuZmxleF09XCJmaWVsZC5maWVsZFNpemUgPyAoJzAgMCAnICsgZmllbGQuZmllbGRTaXplICsgJyUnKSA6ICcxIDEgMCdcIj5cclxuXHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZmllbGQudHlwZVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidkYXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRhdGVSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0aW1lJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRpbWVSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwaG9uZS1udW1iZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicGhvbmVOdW1iZXJSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRleHRSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0YXJlYSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZXh0YXJlYVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJudW1iZXJSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidjdXJyZW5jeSdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXJyZW5jeVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3JhZGlvLWJ1dHRvbidcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJyYWRpb0J1dHRvblJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoZWNrYm94UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndG9nZ2xlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvZ2dsZVJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3N0YXR1cydcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjaGVja2JveFJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQgfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xvb2t1cCdcIj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJsb29rdXBSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidhbW91bnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYW1vdW50UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbXVsdGktc2VsZWN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm11bHRpU2VsZWN0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY2hpcC1saXN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNoaXBMaXN0UmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VxdWVuY2UnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2VxdWVuY2VSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidsaXN0J1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RSZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidtdWx0aS1zdGF0ZS1jaGVja2JveCdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlYWRvbmx5LWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJyZWFkb25seS1sYWJlbFwiICpuZ0lmPVwiIWZpZWxkLmhpZGVMYWJlbFwiIFtpbm5lckh0bWxdPVwiZmllbGQubGFiZWwgfCB0cmFuc2xhdGVcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVhZG9ubHktdmFsdWVcIj57eyBnZXRNdWx0aVN0YXRlUmVhZG9ubHlTdW1tYXJ5KGZpZWxkLCBkZWZhdWx0cykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2liYW4tdGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJsYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckh0bWxdPVwiIWZpZWxkLmhpZGVMYWJlbCA/IChmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSkgOiAnJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gOiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiIFtpbm5lckh0bWxdPVwiZXh0cmFjdEZpZWxkTmFtZShkZWZhdWx0cywgZmllbGQucHJvcGVydHkpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInc2VjdGlvbi10aXRsZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhyZGl2aWRlci1taWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWVsZC5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuIl19
|