el-text-editor 0.0.59 → 0.0.60
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.
@@ -1343,7 +1343,7 @@ export class ElTextEditorComponent {
|
|
1343
1343
|
const rows = text.split('\n').filter(row => row.trim() !== '');
|
1344
1344
|
const tableRows = rows.map(row => {
|
1345
1345
|
const cells = row.split('\t').map(cell => `<td class="px-1 py-1" >${cell}</td>`).join('');
|
1346
|
-
return `<tr class="table-border-top" style="border-top: ${this.themeModeTableBorderTop()}">${cells}</tr>`;
|
1346
|
+
return `<tr class="table-border-top" style="border-top: ${this.themeModeTableBorderTop()}; width: 100% !important">${cells}</tr>`;
|
1347
1347
|
}).join('');
|
1348
1348
|
return `<table>${tableRows}</table>`;
|
1349
1349
|
}
|
@@ -1523,4 +1523,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
|
|
1523
1523
|
type: ViewChild,
|
1524
1524
|
args: ['fullscreen']
|
1525
1525
|
}] } });
|
1526
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWwtdGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZWwtdGV4dC1lZGl0b3Ivc3JjL2xpYi9lbC10ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9lbC10ZXh0LWVkaXRvci9zcmMvbGliL2VsLXRleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBQ3RLLE9BQU8sRUFBcUMsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU10Rix5R0FBeUc7QUFDekcsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFhakQsTUFBTSxPQUFPLHFCQUFxQjtJQWlGaEMsWUFDVSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsUUFBbUIsRUFDbkIsU0FBdUI7UUFIdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQW5GeEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQVN4QixnQkFBVyxHQUFnQyxPQUFPLENBQUM7UUFDbEQscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM5Qyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9DLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNyQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzVDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWxDLFVBQUssR0FBVyxFQUFFLENBQUM7UUFTNUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRWhCLFVBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQzFFLGNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELGlCQUFZLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ25CLGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUM5Qyx5QkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDNUIsaUJBQVksR0FBZ0MsSUFBSSxDQUFDO1FBRWpELGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLG1CQUFjLEdBQVksS0FBSyxDQUFDO1FBQ2hDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQywwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFDdkMsc0JBQWlCLEdBQVksS0FBSyxDQUFDO1FBQ25DLHdCQUFtQixHQUFZLEtBQUssQ0FBQztRQUVyQyx3QkFBbUIsR0FBVyxRQUFRLENBQUE7UUFFdEMsa0JBQWEsR0FBNEIsSUFBSSxDQUFDO1FBQzlDLGlCQUFZLEdBQVcsRUFBRSxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLHNCQUFpQixHQUFHLENBQUMsQ0FBQztRQUN0QixzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFDdEIsMEJBQXFCLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLDJCQUFzQixHQUFHLENBQUMsQ0FBQztRQUMzQix5QkFBb0IsR0FBaUUsSUFBSSxDQUFDO1FBRTFGLGNBQVMsR0FBYSxFQUFFLENBQUM7UUFDekIsY0FBUyxHQUFhLEVBQUUsQ0FBQztRQUN6QixZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFHbEIsYUFBUSxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUN6QixjQUFTLEdBQVEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzFCLFVBQUssR0FBUSxNQUFNLENBQUM7UUFHcEIsc0JBQWlCLEdBQWtCLElBQUksQ0FBQztRQUV4QyxnQkFBVyxHQUFtRCxJQUFJLENBQUM7UUFFbkUsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFOUIsYUFBUSxHQUFVLEVBQUUsQ0FBQztRQXVHckIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQVloQix1QkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtnQkFDL0IsaUNBQWlDO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQy9CO1FBQ0gsQ0FBQyxDQUFDO1FBbTlCRixxQ0FBcUM7UUFDckMsMkRBQTJEO1FBQzNELHdCQUF3QjtRQUN4Qiw0QkFBNEI7UUFDNUIsTUFBTTtRQUNOLElBQUk7UUFFSiw2QkFBNkI7UUFDN0Isc0RBQXNEO1FBQ3RELGtCQUFrQjtRQUNsQixzQkFBc0I7UUFDdEIsd0NBQXdDO1FBQ3hDLHNDQUFzQztRQUN0Qyx1REFBdUQ7UUFDdkQsTUFBTTtRQUNOLElBQUk7UUFFSixtQ0FBbUM7UUFDbkMsc0RBQXNEO1FBQ3RELGtCQUFrQjtRQUNsQixzQkFBc0I7UUFDdEIsd0NBQXdDO1FBQ3hDLG9DQUFvQztRQUNwQyx5REFBeUQ7UUFDekQsTUFBTTtRQUNOLElBQUk7UUFFSSxtQkFBYyxHQUFpQixJQUFJLENBQUM7UUEvbEMxQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7SUFHckIsQ0FBQztJQUVELFNBQVM7UUFDUCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQy9ELElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRTtZQUNyQixPQUFPLDhCQUE4QixDQUFBO1NBQ3RDO2FBQU07WUFDTCxPQUFPLDhCQUE4QixDQUFBO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQy9ELElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRTtZQUNyQixPQUFPLGlCQUFpQixDQUFBO1NBQ3pCO2FBQU07WUFDTCxPQUFPLGlCQUFpQixDQUFBO1NBQ3pCO0lBQ0gsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQy9ELElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRTtZQUNyQixPQUFPLDhCQUE4QixDQUFBO1NBQ3RDO2FBQU07WUFDTCxPQUFPLDhCQUE4QixDQUFBO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQy9ELElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRTtZQUNyQixPQUFPLG9CQUFvQixDQUFBO1NBQzVCO2FBQU07WUFDTCxPQUFPLG9CQUFvQixDQUFBO1NBQzVCO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQy9ELElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRTtZQUNyQixPQUFPLDJCQUEyQixDQUFBO1NBQ25DO2FBQU07WUFDTCxPQUFPLDJCQUEyQixDQUFBO1NBQ25DO0lBQ0gsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtTQUVyQztRQUVELElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZCLGNBQWMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQTtTQUNsRDtRQUVELElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtTQUNwQjtJQUNILENBQUM7SUFDRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUMvQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1lBQ2hELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDbEMsK0NBQStDO1FBQy9DLDZDQUE2QztRQUM3QywwQkFBMEI7UUFDMUIsa0VBQWtFO1FBQ2xFLG9CQUFvQjtRQUNwQix1REFBdUQ7UUFDdkQsUUFBUTtRQUNSLHNEQUFzRDtRQUN0RCxNQUFNO1FBQ04sS0FBSztJQUNQLENBQUM7SUFFQSxXQUFXO1FBQ1YsNkRBQTZEO1FBQzdELFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBSUMsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDdEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUE7U0FDdkI7SUFDSCxDQUFDO0lBVUgsMkJBQTJCO0lBQzNCLGtDQUFrQztJQUNsQyw4QkFBOEI7SUFDOUIseUJBQXlCO0lBQ3pCLHNCQUFzQjtJQUN0Qiw0REFBNEQ7SUFDNUQsYUFBYTtJQUNiLDZCQUE2QjtJQUM3QixNQUFNO0lBRU4sSUFBSTtJQUVKLFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUN4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRUgsd0NBQXdDO0lBQ3hDLHNEQUFzRDtJQUN0RCxrQkFBa0I7SUFDbEIsb0RBQW9EO0lBQ3BELG9EQUFvRDtJQUNwRCx3Q0FBd0M7SUFDeEMsMkRBQTJEO0lBQzNELHNEQUFzRDtJQUV0RCw0REFBNEQ7SUFDNUQseUVBQXlFO0lBQ3pFLHVEQUF1RDtJQUN2RCxxREFBcUQ7SUFDckQsbURBQW1EO0lBQ25ELHNEQUFzRDtJQUN0RCx3RkFBd0Y7SUFDeEYsdURBQXVEO0lBQ3ZELFlBQVk7SUFDWixnRkFBZ0Y7SUFDaEYsZ0NBQWdDO0lBQ2hDLHFDQUFxQztJQUNyQyxZQUFZO0lBRVosMkRBQTJEO0lBQzNELDBDQUEwQztJQUMxQywyQ0FBMkM7SUFFM0MsNkRBQTZEO0lBQzdELDhDQUE4QztJQUM5QyxvQ0FBb0M7SUFDcEMscUNBQXFDO0lBQ3JDLDREQUE0RDtJQUM1RCx3Q0FBd0M7SUFDeEMsaURBQWlEO0lBQ2pELGtEQUFrRDtJQUNsRCw0Q0FBNEM7SUFDNUMsMENBQTBDO0lBQzFDLDJDQUEyQztJQUUzQyxvREFBb0Q7SUFDcEQsaUNBQWlDO0lBQ2pDLDhCQUE4QjtJQUM5QixjQUFjO0lBRWQseUNBQXlDO0lBQ3pDLGlCQUFpQjtJQUNqQixxQ0FBcUM7SUFDckMseUNBQXlDO0lBQ3pDLFVBQVU7SUFDVixVQUFVO0lBQ1YsTUFBTTtJQUNKLElBQUk7SUFDSixZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQy9CLENBQUM7SUFDRCxnQkFBZ0I7SUFDaEIscURBQXFEO0lBQ3JELDBCQUEwQjtJQUMxQiwrQ0FBK0M7SUFDL0MscUNBQXFDO0lBQ3JDLE1BQU07SUFDTixJQUFJO0lBRUosU0FBUztRQUNQLElBQUksWUFBWSxHQUFhLEVBQUUsQ0FBQztRQUNoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDOUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUdLLHdCQUF3QjtRQUM5QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLDZCQUE2QjtRQUM3RCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5QyxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUU7WUFDeEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1osTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN6QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztvQkFDM0MsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTt3QkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUEwQixDQUFDO3dCQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO3dCQUMzQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQzt3QkFDakQsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLGlCQUFpQixFQUFFOzRCQUMzRCxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQzs0QkFDMUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQzs0QkFDeEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDOzRCQUN0QyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUM7NEJBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDOzRCQUMzRSxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzt5QkFDM0M7d0JBRUQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO3dCQUNyRSxJQUFJLGNBQWMsRUFBRTs0QkFDbEIsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO3lCQUN6Qjt3QkFFRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dCQUNoRCxNQUFNLENBQUMsV0FBVyxHQUFJLFlBQVksQ0FBQzt3QkFDbkMsTUFBTSxDQUFDLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQzt3QkFDbEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO3dCQUNuQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7d0JBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzt3QkFDMUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsdUJBQXVCLENBQUM7d0JBQ2pELE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQzt3QkFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO3dCQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQzt3QkFDdkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO3dCQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7d0JBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQzt3QkFFakMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFOzRCQUNyQyxDQUFDLENBQUMsZUFBZSxFQUFFLENBQUM7NEJBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQzt3QkFDbkIsQ0FBQyxDQUFDLENBQUM7d0JBRUgsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFFL0I7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7d0JBQzFCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7d0JBQzlCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO3dCQUNoRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7cUJBQzVDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDQTtJQUNILENBQUM7SUFFQyx1Q0FBdUM7SUFDdkMsb0RBQW9EO0lBQ3BELGdCQUFnQjtJQUNoQixrREFBa0Q7SUFDbEQsa0RBQWtEO0lBQ2xELHNDQUFzQztJQUN0Qyx5REFBeUQ7SUFDekQsb0RBQW9EO0lBRXBELCtDQUErQztJQUMvQywyREFBMkQ7SUFDM0Qsa0RBQWtEO0lBQ2xELGtEQUFrRDtJQUNsRCx3Q0FBd0M7SUFDeEMsbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixVQUFVO0lBRVYsNkNBQTZDO0lBQzdDLCtCQUErQjtJQUMvQixVQUFVO0lBQ1YsZUFBZTtJQUNmLG1DQUFtQztJQUNuQyx1Q0FBdUM7SUFDdkMsUUFBUTtJQUNSLFFBQVE7SUFDUixJQUFJO0lBQ0osSUFBSTtJQUVJLDBCQUEwQjtRQUNsQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUN6QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztnQkFDM0MsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtvQkFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUEwQixDQUFDO29CQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO29CQUMzQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQ2xELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUN0QyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFOzRCQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDOzRCQUMzQixNQUFNO3lCQUNQO3FCQUNGO2lCQUNGO3FCQUFNO29CQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2lCQUMzQjtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO29CQUN0RCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFxQixDQUFDO29CQUNqRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDdEUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQ3JDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRTs0QkFDdkIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs0QkFDM0IsTUFBTTt5QkFDUDtxQkFDRjtpQkFDRjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztpQkFDM0I7Z0JBRUQsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLEtBQUssRUFBRTtvQkFDbkYsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDL0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7d0JBQzFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRTs0QkFDNUIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs0QkFDM0IsTUFBTTt5QkFDUDtxQkFDRjtpQkFDRjtZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDRCxDQUFDO0lBRUgsZUFBZSxDQUFDLE1BQWMsRUFBRSxLQUFhO1FBQzNDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFakQsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7WUFDZCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFHO2dCQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzNDO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLG9DQUFvQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQzthQUNqRjtTQUNGO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBSVMsVUFBVTtRQUNoQiwwQ0FBMEM7UUFDMUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVqRCxJQUFJLE1BQU0sRUFBRTtZQUNWLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUNuQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxFQUFPO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFPO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxVQUFtQjtRQUNuQyx5Q0FBeUM7SUFDM0MsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFVO1FBQ3RCLElBQUksS0FBSyxFQUFFO1lBQ1QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFBO1lBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksT0FBTyxFQUFFO2dCQUNqQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7Z0JBQzdCLG1CQUFtQjtnQkFDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2FBQzNCO2lCQUFNO2dCQUNMLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQztnQkFDNUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2FBQzNCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7SUFDdkIsQ0FBQztJQUVELHlCQUF5QjtJQUN6QixnQkFBZ0I7SUFDaEIsc0RBQXNEO0lBQ3RELHFCQUFxQjtJQUNyQix1QkFBdUI7SUFDdkIsaUNBQWlDO0lBQ2pDLHFHQUFxRztJQUNyRyw0REFBNEQ7SUFDNUQsaURBQWlEO0lBQ2pELHdCQUF3QjtJQUN4QiwyQkFBMkI7SUFDM0Isa0RBQWtEO0lBQ2xELFlBQVk7SUFDWixZQUFZO0lBQ1osUUFBUTtJQUNSLGFBQWE7SUFDYixpQ0FBaUM7SUFDakMsTUFBTTtJQUNOLElBQUk7SUFFTiwyQkFBMkI7SUFDM0IsZ0JBQWdCO0lBQ2hCLHNEQUFzRDtJQUN0RCxvQkFBb0I7SUFDcEIsd0RBQXdEO0lBRXhELHFDQUFxQztJQUVyQywrREFBK0Q7SUFDL0QsNENBQTRDO0lBRTVDLGlFQUFpRTtJQUNqRSxxQ0FBcUM7SUFFckMsK0NBQStDO0lBQy9DLGlEQUFpRDtJQUNqRCxzREFBc0Q7SUFDdEQsZ0RBQWdEO0lBQ2hELFlBQVk7SUFDWixZQUFZO0lBQ1osUUFBUTtJQUNSLGFBQWE7SUFDYixpQ0FBaUM7SUFDakMsTUFBTTtJQUNOLElBQUk7SUFFSiwyQ0FBMkM7SUFDM0Msb0RBQW9EO0lBQ3BELGtCQUFrQjtJQUNsQiwrQ0FBK0M7SUFDL0MsbUdBQW1HO0lBQ25HLDBEQUEwRDtJQUMxRCxNQUFNO0lBQ04sSUFBSTtJQUVKLHVEQUF1RDtJQUN2RCxrREFBa0Q7SUFDbEQsK0NBQStDO0lBQy9DLDRDQUE0QztJQUM1QyxRQUFRO0lBRVIsdUZBQXVGO0lBQ3ZGLElBQUk7SUFFSixtRUFBbUU7SUFDM0Qsa0JBQWtCLENBQUMsTUFBbUI7UUFDNUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hDLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUN2QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBR3RDLGdHQUFnRztZQUNoRywwREFBMEQ7WUFDMUQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUM7U0FDdEU7SUFDRCxDQUFDO0lBRUQsbURBQW1EO0lBQzdDLGFBQWEsQ0FBQyxPQUFlO1FBQ25DLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV4QyxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRTtZQUN6Qyx5Q0FBeUM7WUFDekMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUV0QyxzRUFBc0U7WUFDdEUsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbkQsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QyxPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQztZQUU1QixnRUFBZ0U7WUFDaEUsT0FBTyxPQUFPLENBQUMsVUFBVSxFQUFFO2dCQUN6QixRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUMxQztZQUVELDRDQUE0QztZQUM1QyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyw0Q0FBNEM7WUFDcEUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUzQiw0Q0FBNEM7WUFDNUMsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUVyQyxJQUFJLFNBQVMsRUFBRTtnQkFDYixLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUMvQixLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM3QixTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7Z0JBQzVCLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDM0I7WUFDRCxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9DLElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7YUFDNUI7WUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUE7WUFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQzVDO2FBQU07WUFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBR0QsbURBQW1EO0lBQ25ELGtEQUFrRDtJQUNsRCwrQ0FBK0M7SUFDL0MsNENBQTRDO0lBRTVDLDhCQUE4QjtJQUM5QiwwQ0FBMEM7SUFDMUMsc0RBQXNEO0lBQ3RELHNDQUFzQztJQUN0QyxvQ0FBb0M7SUFFcEMsUUFBUTtJQUNSLE1BQU07SUFLSixTQUFTLENBQUMsSUFBUztRQUNuQixJQUFJLElBQUksRUFBRTtZQUNSLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0MsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsK0NBQStDO2dCQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBRTVCLHNEQUFzRDtnQkFDdEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUVuQyx3REFBd0Q7Z0JBQ3hELElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzVCLHVDQUF1QztnQkFDdkMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUU7b0JBQ3BDLElBQUksTUFBTSxFQUFFLEVBQUcsNEJBQTRCO3dCQUN6QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7cUJBQ2pDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBR08sZ0JBQWdCLENBQUMsSUFBWTtRQUNuQyxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLElBQUksTUFBTSxFQUFFO1lBQ1Ysd0NBQXdDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzVGLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUEwQixDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQW1CO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUMsR0FBRyxFQUFFO1lBQ3pDLGtEQUFrRDtZQUNsRCwrQkFBK0I7WUFDL0Isd0NBQXdDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBRUgsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFtQjtRQUN4QyxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXJDLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNwQixLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHNCQUFzQjtZQUM3QyxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUM7WUFDN0IsU0FBUyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsZ0JBQWdCO0lBQ2hCLHNEQUFzRDtJQUN0RCxvQkFBb0I7SUFDcEIsd0JBQXdCO0lBQ3hCLGlDQUFpQztJQUVqQyxpREFBaUQ7SUFDakQscUdBQXFHO0lBQ3JHLDREQUE0RDtJQUU1RCxxREFBcUQ7SUFDckQsOENBQThDO0lBQzlDLGlEQUFpRDtJQUVqRCxnQ0FBZ0M7SUFDaEMsOERBQThEO0lBQzlELDRDQUE0QztJQUM1Qyx3REFBd0Q7SUFDeEQsd0NBQXdDO0lBQ3hDLHNDQUFzQztJQUN0QyxVQUFVO0lBRVYsaURBQWlEO0lBQ2pELHdCQUF3QjtJQUN4QixrREFBa0Q7SUFFbEQsOEVBQThFO0lBQzlFLGtEQUFrRDtJQUNsRCxxREFBcUQ7SUFFckQsb0NBQW9DO0lBQ3BDLGdEQUFnRDtJQUNoRCw0REFBNEQ7SUFDNUQsNENBQTRDO0lBQzVDLDBDQUEwQztJQUMxQyxjQUFjO0lBQ2QsWUFBWTtJQUNaLFlBQVk7SUFDWixRQUFRO0lBQ1IsYUFBYTtJQUNiLGlDQUFpQztJQUNqQyxNQUFNO0lBQ04sSUFBSTtJQUVGLE1BQU0sQ0FBQyxPQUFlLEVBQUUsS0FBVztRQUNqQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxPQUFPLEtBQUssV0FBVyxFQUFFO2dCQUMzQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7Z0JBQ2pELFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzthQUM5QztpQkFBTSxJQUFJLE9BQU8sS0FBSyxhQUFhLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztnQkFDckQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUFBLENBQUM7YUFDakQ7aUJBQU07Z0JBQ0wsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxLQUFLLEVBQUU7b0JBQ1QsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7b0JBQ3BELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ3hEO2FBQ0Y7U0FDRjtRQUNBLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0QseURBQXlEO1NBQzFEO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVk7UUFDNUIsUUFBUSxJQUFJLEVBQUU7WUFDWixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxXQUFXLENBQUM7Z0JBQ25CLE1BQU07WUFDUixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxXQUFXLENBQUM7Z0JBQ25CLE1BQU07WUFDUixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxXQUFXLENBQUM7Z0JBQ25CLE1BQU07WUFDUixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxXQUFXLENBQUM7Z0JBQ25CLE1BQU07WUFDUixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxXQUFXLENBQUM7Z0JBQ25CLE1BQU07WUFDUixLQUFLLElBQUk7Z0JBQ1AsT0FBTyxXQUFXLENBQUM7Z0JBQ25CLE1BQU07WUFDUixLQUFLLEdBQUc7Z0JBQ04sT0FBTyxRQUFRLENBQUM7Z0JBQ2hCLE1BQU07WUFDUjtnQkFDRSxPQUFPLFFBQVEsQ0FBQztnQkFDaEIsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLElBQUksR0FBRzs7Ozs7Ozs7Ozs7Ozs7S0FjWixDQUFDO1FBQ0YsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCwrQkFBK0I7SUFDL0Isa0RBQWtEO0lBQ2xELG9EQUFvRDtJQUNwRCxrQkFBa0I7SUFDbEIsOERBQThEO0lBQzlELHNEQUFzRDtJQUN0RCwyQ0FBMkM7SUFDM0MsbURBQW1EO0lBQ25ELHlFQUF5RTtJQUN6RSxVQUFVO0lBQ1YsUUFBUTtJQUNSLE1BQU07SUFDTixJQUFJO0lBQ0osY0FBYyxDQUFDLEtBQVU7UUFDdkIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTNDLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ25ELEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELElBQUksR0FBRyxFQUFFO1lBQ1AsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQXFCLENBQUM7WUFDM0UsSUFBSSxVQUFVLEVBQUU7Z0JBQ2QsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ3BCO1NBQ0Y7SUFDSCxDQUFDO0lBRUEsaUJBQWlCLENBQUMsS0FBVTtRQUM3QixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksRUFBRTtZQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUN6QixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN4QixHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO2dCQUMxQixHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtvQkFDaEIseURBQXlEO29CQUN6RCxNQUFNLE9BQU8sR0FBRyxhQUFhLEdBQUcsQ0FBQyxHQUFHLFlBQVksR0FBRyxLQUFLLENBQUM7b0JBQ3pELG1DQUFtQztvQkFDbkMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUNyRCxDQUFDLENBQUM7WUFDSixDQUFDLENBQUM7WUFDRixNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUdDLGVBQWU7SUFDZixxREFBcUQ7SUFDckQseUNBQXlDO0lBQ3pDLHFGQUFxRjtJQUVyRixpRUFBaUU7SUFDakUsb0RBQW9EO0lBQ3BELHdCQUF3QjtJQUN4Qix1Q0FBdUM7SUFDdkMsOElBQThJO0lBQzlJLFFBQVE7SUFDUix3QkFBd0I7SUFDeEIsTUFBTTtJQUNOLGlDQUFpQztJQUNqQywyREFBMkQ7SUFDM0Qsd0RBQXdEO0lBQ3hELGtCQUFrQjtJQUNsQixzQkFBc0I7SUFDdEIsd0RBQXdEO0lBQ3hELE1BQU07SUFDTiw0QkFBNEI7SUFDNUIsZ0NBQWdDO0lBQ2hDLElBQUk7SUFFSixRQUFRO1FBQ1IsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsd0JBQXdCO1FBQ2hELE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtRQUNwQyxNQUFNLFlBQVksR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsd0NBQXdDO1FBRWhGLElBQUksS0FBSyxHQUFHLDhCQUE4QixVQUFVLE9BQU8sQ0FBQztRQUM1RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsaUJBQWlCO1lBQzdDLEtBQUssSUFBSSw2QkFBNkIsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxDQUFDLCtCQUErQjtZQUNsSCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM3QixLQUFLLElBQUksNEZBQTRGLFlBQVksa0JBQWtCLENBQUM7YUFDckk7WUFDRCxLQUFLLElBQUksT0FBTyxDQUFDO1NBQ2xCO1FBQ0QsS0FBSyxJQUFJLGVBQWUsQ0FBQztRQUV6QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2pELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2YsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ2xEO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUtDLG1CQUFtQixDQUFDLEtBQWtCO1FBQ3BDLElBQUksTUFBTSxHQUFHLEtBQUssRUFBRSxNQUFxQixDQUFDO1FBQzFDLElBQUksTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsRUFBRTtZQUNsRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFxQixDQUFDO1NBQ2xFO2FBQU07WUFDTCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztTQUMzQjtRQUVELDJCQUEyQjtJQUM3QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2Qsa0RBQWtEO1FBQ2xELGdCQUFnQjtRQUNoQix3RkFBd0Y7UUFDeEYscUNBQXFDO1FBQ3JDLHFJQUFxSTtRQUNySSxhQUFhO1FBQ2IsOERBQThEO1FBQzlELHlCQUF5QjtRQUN6Qix5Q0FBeUM7UUFDekMsUUFBUTtRQUNSLE1BQU07UUFDTixJQUFJO0lBQ04sQ0FBQztJQUVELE9BQU87UUFDTCxrREFBa0Q7UUFDbEQsNkNBQTZDO1FBQzdDLDJCQUEyQjtRQUMzQix1Q0FBdUM7UUFDdkMsSUFBSTtJQUNOLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsMkJBQTJCO0lBQzNCLElBQUk7SUFFSixNQUFNO1FBQ0osSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsZ0RBQWdEO0lBQ2hELDBFQUEwRTtJQUMxRSxzQ0FBc0M7SUFDdEMsbUNBQW1DO0lBQ25DLCtDQUErQztJQUMvQyxRQUFRO0lBQ1IsTUFBTTtJQUNOLElBQUk7SUFFSixNQUFNO1FBQ04sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDekMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUMsQ0FBQywrQkFBK0I7WUFDakcsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2hFLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO2FBQzNCO1NBQ0Y7SUFDSCxDQUFDO0lBR0MsZ0JBQWdCO0lBQ2hCLDhCQUE4QjtJQUM5Qix3Q0FBd0M7SUFDeEMsTUFBTTtJQUNOLElBQUk7SUFFTixrQkFBa0I7SUFDbEIsOEJBQThCO0lBQzlCLDBEQUEwRDtJQUMxRCxpQ0FBaUM7SUFDakMsK0NBQStDO0lBQy9DLHlCQUF5QjtJQUN6Qix3RUFBd0U7SUFDeEUscUJBQXFCO0lBQ3JCLHFDQUFxQztJQUNyQyxZQUFZO0lBQ1osVUFBVTtJQUNWLFFBQVE7SUFDUiw4Q0FBOEM7SUFDOUMsTUFBTTtJQUNOLElBQUk7SUFFRixTQUFTO1FBQ1QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLElBQUksU0FBUyxFQUFFO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVO2dCQUFFLE9BQU87WUFFbEMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzFDLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXRELElBQUksR0FBRyxFQUFFO2dCQUNQLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLElBQUksS0FBSyxFQUFFO29CQUNULEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUMvQjthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBR0MsZ0JBQWdCO0lBQ2hCLDhCQUE4QjtJQUM5QixpRUFBaUU7SUFDakUsOERBQThEO0lBQzlELG1DQUFtQztJQUNuQywrQ0FBK0M7SUFDL0MsUUFBUTtJQUNSLE1BQU07SUFDTixJQUFJO0lBRU4sa0JBQWtCO0lBQ2xCLDhCQUE4QjtJQUM5QiwyRkFBMkY7SUFDM0YseURBQXlEO0lBQ3pELGlEQUFpRDtJQUVqRCxpRUFBaUU7SUFDakUsOERBQThEO0lBQzlELG1DQUFtQztJQUNuQywrQ0FBK0M7SUFDL0MsK0NBQStDO0lBQy9DLDRDQUE0QztJQUM1Qyw0Q0FBNEM7SUFDNUMsMENBQTBDO0lBQzFDLFFBQVE7SUFFUix5Q0FBeUM7SUFDekMsaUVBQWlFO0lBQ2pFLDRFQUE0RTtJQUM1RSxnRkFBZ0Y7SUFDaEYsVUFBVTtJQUNWLFFBQVE7SUFDUixNQUFNO0lBQ0osSUFBSTtJQUVKLFNBQVM7UUFDVCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7WUFDcEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7WUFDbEQsTUFBTSxRQUFRLEdBQUcsVUFBVSxHQUFHLFdBQVcsQ0FBQztZQUUxQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN2RCxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDckQsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQztnQkFDbkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLEdBQUcsUUFBUSxJQUFJLENBQUM7YUFDdkM7WUFFRCxzQ0FBc0M7WUFDdEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQzthQUN6RjtTQUNGO0lBQ0QsQ0FBQztJQU1ELFlBQVk7UUFDWixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFO2dCQUN2QixJQUFJLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksU0FBUyxFQUFFO29CQUNiLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQXlCLENBQUM7b0JBQzFGLElBQUksSUFBSSxFQUFFO3dCQUNSLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7d0JBQy9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7NEJBQ3ZELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQzt5QkFDbEQ7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVDLGdDQUFnQztRQUM5QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQy9ELElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRTtZQUNyQixPQUFPLDhCQUE4QixDQUFBO1NBQ3RDO2FBQU07WUFDTCxPQUFPLDhCQUE4QixDQUFBO1NBQ3RDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFDekIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDNUQ7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3ZELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNoRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7aUJBQzdFO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUN2RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtvQkFDaEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO2lCQUM5RTthQUNGO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLE9BQW9CO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEMsSUFBSSxHQUFHLEVBQUU7WUFDVCxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDcEMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixHQUFHLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQjtJQUNILENBQUM7SUErQkgsZUFBZSxDQUFDLE9BQWU7UUFDN0IsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQXFCLENBQUM7UUFDMUUsSUFBSSxZQUFZLEVBQUU7WUFDaEIsNkJBQTZCO1lBQzdCLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QyxJQUFJLFNBQVMsSUFBSSxTQUFTLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRTtnQkFDekMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBRS9CLDhCQUE4QjtZQUM5QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM1QixTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFFeEMsK0JBQStCO2dCQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUNsQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUVwQyxpREFBaUQ7Z0JBQ2pELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFdkIsNEJBQTRCO2dCQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQzthQUM1QjtTQUNGO0lBQ0gsQ0FBQztJQUVDLGtCQUFrQixDQUFDLEtBQVU7UUFDN0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBRTdCLDhCQUE4QjtZQUM5QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2IsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUM1QixTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFFeEMsMENBQTBDO2dCQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUNsQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUVwQyxpREFBaUQ7Z0JBQ2pELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFFdkIsNEJBQTRCO2dCQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQzthQUM1QjtTQUNGO0lBQ0QsQ0FBQztJQUVELDZCQUE2QjtJQUM3QixtQ0FBbUM7SUFDbkMsSUFBSTtJQUVHLFFBQVEsQ0FBQyxLQUFVLEVBQUUsT0FBWTtRQUN0QyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFBO1FBQzlCLFFBQVEsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRCw2REFBNkQ7SUFDL0QsQ0FBQztJQUdELFNBQVM7UUFDUCxJQUFJLElBQUksQ0FBQTtRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2hELFFBQVEsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDNUIsS0FBSyxpQkFBaUI7Z0JBQ3BCLElBQUksR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNwRyxNQUFNLGNBQWMsR0FBVyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDM0UsY0FBYyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxjQUFjLENBQUMsQ0FBQztnQkFDNUQsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFDeEUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDLENBQUM7Z0JBQ3RELHlCQUF5QjtnQkFDekIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFBO2dCQUNyQixNQUFNO1lBQ1IsS0FBSyxpQkFBaUI7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUE7Z0JBQ3JCLElBQUksR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDNUwsd0JBQXdCO2dCQUN4QixNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDcEUsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFbEQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxlQUFlLENBQUMsQ0FBQztnQkFDOUQsY0FBYyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsZUFBZSxDQUFDLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNSO2dCQUNFLElBQUksQ0FBQTtnQkFDSixrREFBa0Q7Z0JBQ2xELG1EQUFtRDtnQkFDbkQsK0NBQStDO2dCQUMvQywyQ0FBMkM7Z0JBQzNDLE1BQU07U0FDVDtRQUNELCtDQUErQztRQUMvQyxvRkFBb0Y7UUFDcEYsbUNBQW1DO1FBQ25DLG1GQUFtRjtRQUNuRiwwREFBMEQ7UUFDMUQsS0FBSztJQUVQLENBQUM7SUFFRCxVQUFVLENBQUUsSUFBUztRQUNuQixpQkFBaUI7UUFDakIsZ0JBQWdCO1FBQ2hCLGlFQUFpRTtRQUNqRSxxR0FBcUc7UUFDckcsTUFBTTtRQUNOLGdEQUFnRDtRQUNoRCw4Q0FBOEM7UUFDOUMsaUVBQWlFO1FBQ2pFLG9CQUFvQjtRQUNwQiwyREFBMkQ7UUFDM0QseURBQXlEO1FBQ3pELFFBQVE7UUFDUixNQUFNO0lBQ1IsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFjLEVBQUUsS0FBYTtRQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNqRSxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbEQsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUN4Qyw2REFBNkQ7Z0JBRTdELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2FBRXRDO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssb0JBQW9CLE9BQU8sQ0FBQyxNQUFNLGNBQWMsQ0FBQyxDQUFDO2FBQ3ZGO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztTQUMxRDtJQUNELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFTO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFDLElBQUksRUFBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQy9GLENBQUM7SUFFRCwyQ0FBMkM7SUFDM0MseUNBQXlDO0lBQ3pDLCtDQUErQztJQUMvQyxtREFBbUQ7SUFDbkQsK0NBQStDO0lBQy9DLGdDQUFnQztJQUNoQyxzREFBc0Q7SUFDdEQsK0RBQStEO0lBQy9ELGlGQUFpRjtJQUNqRixtQ0FBbUM7SUFDbkMsaUJBQWlCO0lBQ2pCLG9DQUFvQztJQUNwQyxVQUFVO0lBQ1YsUUFBUTtJQUNSLE1BQU07SUFDTixJQUFJO0lBRUwsWUFBWSxDQUFDLEtBQWtCO1FBQzlCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUU7WUFDakMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hDLElBQUksU0FBUyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtvQkFDcEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQzNDLE1BQU0sT0FBTyxHQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDO29CQUNwRCxNQUFNLE9BQU8sR0FBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQztvQkFDckQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUM7b0JBQzFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztvQkFDaEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7aUJBQ3pCO3FCQUFNO29CQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2lCQUMxQjthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2FBQzFCO1NBQ0Y7SUFDSCxDQUFDO0lBR0QsbUNBQW1DO0lBQ25DLDhCQUE4QjtJQUM5QixpREFBaUQ7SUFDakQsMkJBQTJCO0lBQzNCLGdFQUFnRTtJQUNoRSw0Q0FBNEM7SUFDNUMsNERBQTREO0lBQzVELHdDQUF3QztJQUN4QyxpQkFBaUI7SUFDakIsOENBQThDO0lBQzlDLFVBQVU7SUFDVixRQUFRO0lBQ1IsTUFBTTtJQUVKLG1DQUFtQztJQUNuQyw0QkFBNEI7SUFDNUIsK0NBQStDO0lBQy9DLHlCQUF5QjtJQUN6QiwyQkFBMkI7SUFDM0IseUNBQXlDO0lBQ3pDLCtDQUErQztJQUMvQyxrREFBa0Q7SUFDbEQsNkNBQTZDO0lBQzdDLHNCQUFzQjtJQUN0Qiw2Q0FBNkM7SUFDN0MsMENBQTBDO0lBQzFDLDZHQUE2RztJQUM3RywrQ0FBK0M7SUFDL0MsZUFBZTtJQUNmLHdDQUF3QztJQUN4QyxtREFBbUQ7SUFDbkQsWUFBWTtJQUNaLFVBQVU7SUFDVixRQUFRO0lBRVIsbUNBQW1DO0lBQ25DLDhEQUE4RDtJQUM5RCwwQ0FBMEM7SUFDMUMsMERBQTBEO0lBQzFELHNDQUFzQztJQUN0QyxlQUFlO0lBQ2YsNENBQTRDO0lBQzVDLFFBQVE7SUFDUixNQUFNO0lBQ04sSUFBSTtJQUVKLE9BQU8sQ0FBQyxLQUFxQjtRQUMzQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUMxQyxJQUFJLGFBQWEsRUFBRTtZQUNqQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ25ELE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXBDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7b0JBQ2xDLHFCQUFxQjtvQkFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUM5QixJQUFJLElBQUksRUFBRTt3QkFDUixNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNoQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUU7NEJBQ3pCLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLGtEQUFrRCxDQUFDOzRCQUMvRixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7d0JBQ2xDLENBQUMsQ0FBQzt3QkFDRixNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUMzQixPQUFPO3FCQUNSO2lCQUNGO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7b0JBQ3BDLG9CQUFvQjtvQkFDcEIsdURBQXVEO29CQUN2RCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO3dCQUN4RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO3dCQUN6RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7cUJBQzlCO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7cUJBQzVEO29CQUNELG9DQUFvQztvQkFDcEMsT0FBTztpQkFDUjtxQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxFQUFFO29CQUNyQywwQkFBMEI7b0JBQzFCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUU7d0JBQ3pELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7d0JBQzFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDOUI7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztxQkFDN0Q7b0JBQ0QseURBQXlEO29CQUN6RCxxQ0FBcUM7b0JBQ3JDLE9BQU87aUJBQ1I7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxtREFBbUQsQ0FBQztZQUNuRSxJQUFJLENBQUMsUUFBUSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELHVCQUF1QixDQUFDLElBQVk7UUFDbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUN0RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyw4QkFBOEI7SUFDckUsQ0FBQztJQUtELFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVk7UUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMvQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLDBCQUEwQixJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxRixPQUFPLG1EQUFtRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxLQUFLLE9BQU8sQ0FBQztRQUM1RyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDWixPQUFPLFVBQVUsU0FBUyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVk7UUFDNUIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFJLEtBQUssRUFBRTtZQUNULEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQy9DLElBQUksSUFBSSxDQUFDO1lBQ1QsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEI7WUFDRCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDL0QsSUFBSSxPQUFPLElBQUksTUFBTSxFQUFFO1lBQ3JCLE9BQU8sK0JBQStCLENBQUE7U0FDdkM7YUFBTTtZQUNMLE9BQU8sOEJBQThCLENBQUE7U0FDdEM7SUFDSCxDQUFDO0lBR00sY0FBYztRQUNuQixJQUFJLElBQUksR0FBUSxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO1lBQzFCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1NBQzFCO2FBQU0sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDcEMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7U0FDN0I7YUFBTSxJQUFJLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtZQUN2QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztTQUNoQzthQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRztZQUNYLFlBQVksRUFBRSxNQUFNO1lBQ3BCLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUE7SUFDSCxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLFFBQVEsQ0FBQyxjQUFjLEVBQUU7WUFDM0IsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUc7Z0JBQ1gsWUFBWSxFQUFFLE9BQU87Z0JBQ3JCLFlBQVksRUFBRSxPQUFPO2FBQ3RCLENBQUE7U0FDRjtJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM3QixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRWxELElBQUksTUFBTSxFQUFFO1lBQ1YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUN4RDtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVqRCxJQUFJLE1BQU0sRUFBRTtZQUNWLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDdkMsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO2FBQ3JCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQzthQUNyQjtZQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFDRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsRUFBRTtZQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWpELElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUN6RDtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUM3QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWpELElBQUksTUFBTSxFQUFFO2dCQUNWLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxXQUFZLENBQUM7YUFDdEM7U0FDRjtJQUNILENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFZO1FBQ2hDLDBEQUEwRDtRQUMxRCxNQUFNLFNBQVMsR0FBRyx3QkFBd0IsQ0FBQztRQUUzQywrQ0FBK0M7UUFDL0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ3pDLHNEQUFzRDtZQUN0RCxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVsQyxnRUFBZ0U7WUFDaEUsT0FBTyxPQUFPLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO2dCQUN6QyxJQUFJLEVBQUUsU0FBUztnQkFDZixLQUFLLEVBQUUsTUFBTTtnQkFDYixHQUFHLEVBQUUsU0FBUzthQUNmLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7a0hBMW5EWSxxQkFBcUI7c0dBQXJCLHFCQUFxQiwrakJBTm5CLENBQUM7WUFDWixPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDcEQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLG9QQ25CSiwwdGxDQXNlTTsyRkRqZE8scUJBQXFCO2tCQVZqQyxTQUFTOytCQUNFLGFBQWEsYUFHVixDQUFDOzRCQUNaLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDOzRCQUNwRCxLQUFLLEVBQUUsSUFBSTt5QkFDWixDQUFDOzZLQUlPLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBRUUsS0FBSztzQkFBYixLQUFLO2dCQUdtQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBQ0UsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbi8vIGltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5neEZ1bGxzY3JlZW5EaXJlY3RpdmUgfSBmcm9tICdAdWx0aW1hdGUvbmd4LWZ1bGxzY3JlZW4nO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4Jztcbi8vIGltcG9ydCB7IEltYWdlRWRpdG9yTW9kYWxDb21wb25lbnQgfSBmcm9tICcuLi9tb2RhbHMvaW1hZ2UtZWRpdG9yLW1vZGFsL2ltYWdlLWVkaXRvci1tb2RhbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgY29tcHJlc3MsIGRlY29tcHJlc3MgfSBmcm9tICdsei1zdHJpbmcnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RleHQtZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsLXRleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZWwtdGV4dC1lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWxUZXh0RWRpdG9yQ29tcG9uZW50KSxcbiAgICBtdWx0aTogdHJ1ZVxuICB9XVxufSlcbmV4cG9ydCBjbGFzcyBFbFRleHRFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBlZGl0b3JUZXh0OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZWRpdG9yRnJvbTogYW55O1xuICBASW5wdXQoKSBlZGl0b3JBY3Rpb246IGFueTtcbiAgQElucHV0KCkgVXNlclJvbGU6IGFueTtcbiAgQElucHV0KCkgc3R5bGU6IGFueTtcbiAgQElucHV0KCkgZGlzYWJsZVRvb2xiYXI6IGFueTtcbiAgQElucHV0KCkgcGxhY2VIb2xkZXI6IGFueTtcbiAgQElucHV0KCkgcmVwb3J0SWQ6IGFueTtcbiAgQElucHV0KCkgYmFja2dyb3VuZEltYWdlOiBhbnk7XG4gIEBJbnB1dCgpIHRvb2xiYXJNb2RlOiAnZml4ZWQnIHwgJ2J1YmJsZScgfCAnbm9uZScgPSAnZml4ZWQnO1xuICBAT3V0cHV0KCkgZWRpdG9yVGV4dENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgZWRpdG9yQWN0aW9uUmVzcG9uc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGVkaXRvclRleHRDbGVhciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaW1hZ2VFZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBpbWFnZUVkaXQyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBwbGFjZUhvbGRlclJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgaXNPcGVuID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIFxuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgXG4gIEBWaWV3Q2hpbGQoJ3RleHRFZGl0b3InKSBUZXh0RWRpdG9yITogIEVsZW1lbnRSZWY8RWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2Z1bGxzY3JlZW4nKSBmdWxsc2NyZWVuITogTmd4RnVsbHNjcmVlbkRpcmVjdGl2ZVxuICAgIFxuICBzYW5pdGl6ZWRDb250ZW50ITogU2FmZUh0bWw7XG5cblxuICBzaG93VG9vbGJhciA9IGZhbHNlO1xuICB0b29sYmFyVG9wID0gMDtcbiAgdG9vbGJhckxlZnQgPSAwO1xuXG4gIGZvbnRzID0gWydBcmlhbCcsICdDb3VyaWVyIE5ldycsICdHZW9yZ2lhJywgJ1RpbWVzIE5ldyBSb21hbicsICdWZXJkYW5hJ107XG4gIGZvbnRTaXplcyA9IFsxMCwgMTIsIDE0LCAxNiwgMTgsIDIwLCAyNCwgMjgsIDMyLCAzNl07XG4gIHNlbGVjdGVkRm9udCA9ICdBcmlhbCc7XG4gIHNlbGVjdGVkRm9udFNpemUgPSAxNDtcbiAgaXNUYWJsZVNlbGVjdGVkID0gZmFsc2U7XG4gIHRhYmxlQWRkZWQgPSBmYWxzZTtcbiAgc2VsZWN0ZWRUYWJsZTogSFRNTFRhYmxlRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBpc1BsYWNlaG9sZGVyVmlzaWJsZSA9IHRydWU7XG4gIHNlbGVjdGVkQ2VsbDogSFRNTFRhYmxlQ2VsbEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgXG4gIGlzQm9sZEFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc0l0YWxpY0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1VuZGVybGluZUFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1N0cmlrZXRocm91Z2hBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTdWJzY3JpcHRBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNTdXBlcnNjcmlwdEFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHNlbGVjdGVkRm9ybWF0QmxvY2s6IHN0cmluZyA9ICdub3JtYWwnXG5cbiAgc2VsZWN0ZWRJbWFnZTogSFRNTEltYWdlRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBpbWFnZUVkaXRVcmw6IHN0cmluZyA9ICcnO1xuICBpbWFnZVBvc2l0aW9uWCA9IDA7XG4gIGltYWdlUG9zaXRpb25ZID0gMDtcbiAgaW1hZ2VSZXNpemVTdGFydFggPSAwO1xuICBpbWFnZVJlc2l6ZVN0YXJ0WSA9IDA7XG4gIGltYWdlUmVzaXplU3RhcnRXaWR0aCA9IDA7XG4gIGltYWdlUmVzaXplU3RhcnRIZWlnaHQgPSAwO1xuICBpbWFnZVJlc2l6ZURpcmVjdGlvbjogJ3RvcExlZnQnIHwgJ3RvcFJpZ2h0JyB8ICdib3R0b21MZWZ0JyB8ICdib3R0b21SaWdodCcgfCBudWxsID0gbnVsbDtcblxuICB1bmRvU3RhY2s6IHN0cmluZ1tdID0gW107XG4gIHJlZG9TdGFjazogc3RyaW5nW10gPSBbXTtcbiAgaGlzdG9yeTogc3RyaW5nW10gPSBbXTtcbiAgaGlzdG9yeUluZGV4ID0gLTE7XG4gIC8vIGVkaXRvclRleHQxID0gYGA7XG4gIHNlbGVjdGVkVGV4dENvbG9yOiBhbnk7XG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcbiAgY29sb3I6IGFueSA9ICcjZGRkJztcbiAgY29sb3JGb3JtQ29udHJvbCE6IEZvcm1Db250cm9sO1xuICBiYWNrZ3JvdW5kQ29sb3I6IGFueTtcbiAgc2VsZWN0ZWRJdGVtSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHBhcnNlZFRhYmxlOiB7IGhlYWRlcnM6IHN0cmluZ1tdLCByb3dzOiBzdHJpbmdbXVtdIH0gfCBudWxsID0gbnVsbDtcblxuICBpc0Z1bGxTY3JlZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgY3VycmVudENhcmV0UG9zaXRpb246IGFueTtcbiAgdXNlclJvbGU6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgKSB7XG4gICAgdGhpcy5nZXRVc2VyUm9sZXMoKVxuXG4gICAgXG4gIH1cblxuICB0aGVtZU1vZGUoKSB7XG4gICAgY29uc3QgY2xyTW9kZSA9IGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCdkYXRhLWxheW91dC1jb2xvcicpXG4gICAgaWYgKGNsck1vZGUgPT0gJ2RhcmsnKSB7XG4gICAgICByZXR1cm4gJzJweCBzb2xpZCAjNDAzRjRBICFpbXBvcnRhbnQnXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnMnB4IHNvbGlkICNEMEQwRDAgIWltcG9ydGFudCdcbiAgICB9XG4gIH1cblxuICB0aGVtZU1vZGVDbHIoKSB7XG4gICAgY29uc3QgY2xyTW9kZSA9IGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCdkYXRhLWxheW91dC1jb2xvcicpXG4gICAgaWYgKGNsck1vZGUgPT0gJ2RhcmsnKSB7XG4gICAgICByZXR1cm4gJyNmZmYgIWltcG9ydGFudCdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcjMDAwICFpbXBvcnRhbnQnXG4gICAgfVxuICB9XG5cbiAgdGhlbWVNb2RlQ2xyVmVydGljYWxMaW5lKCkge1xuICAgIGNvbnN0IGNsck1vZGUgPSBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgnZGF0YS1sYXlvdXQtY29sb3InKVxuICAgIGlmIChjbHJNb2RlID09ICdkYXJrJykge1xuICAgICAgcmV0dXJuICcycHggc29saWQgI0ZGRkZGRiAhaW1wb3J0YW50J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJzJweCBzb2xpZCAjRDBEMEQwICFpbXBvcnRhbnQnXG4gICAgfVxuICB9XG5cbiAgdGhlbWVNb2RlQmdDbHIoKSB7XG4gICAgY29uc3QgY2xyTW9kZSA9IGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCdkYXRhLWxheW91dC1jb2xvcicpXG4gICAgaWYgKGNsck1vZGUgPT0gJ2RhcmsnKSB7XG4gICAgICByZXR1cm4gJyMyODI4MjggIWltcG9ydGFudCdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcjRjNGM0YzICFpbXBvcnRhbnQnXG4gICAgfVxuICB9XG5cbiAgdGhlbWVNb2RlQm9yZGVyVG9wKCkge1xuICAgIGNvbnN0IGNsck1vZGUgPSBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgnZGF0YS1sYXlvdXQtY29sb3InKVxuICAgIGlmIChjbHJNb2RlID09ICdkYXJrJykge1xuICAgICAgcmV0dXJuICcycHggc29saWQgIzAwMCAhaW1wb3J0YW50J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJzJweCBzb2xpZCAjZmZmICFpbXBvcnRhbnQnXG4gICAgfVxuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncGxhY2VIb2xkZXInXSkge1xuICAgICAgdGhpcy5pbnNlcnRBdENhcmV0KHRoaXMucGxhY2VIb2xkZXIpXG5cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlc1sncmVwb3J0SWQnXSkge1xuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgncmVwb3J0SWQnLCB0aGlzLnJlcG9ydElkKVxuICAgIH0gXG5cbiAgICBpZiAoY2hhbmdlc1snVXNlclJvbGUnXSkgeyBcbiAgICAgIHRoaXMuZ2V0VXNlclJvbGVzKClcbiAgICB9XG4gIH1cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuaW5pdEVkaXRvcigpO1xuICAgIHRoaXMuY2hlY2tQbGFjZWhvbGRlcigpO1xuICAgIHRoaXMuc2V0dXBIaXN0b3J5KCk7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIHRoaXMub25GdWxsc2NyZWVuQ2hhbmdlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdF9GdW5jKHRoaXMuZWRpdG9yVGV4dClcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3Rpb25jaGFuZ2UnLCAoKSA9PiB7XG4gICAgICB0aGlzLmNoZWNrQWN0aXZlU3RhdGVzKCk7XG4gICAgICB0aGlzLmNoZWNrRm9ybWF0QmxvY2soKTtcbiAgICB9KTtcbiAgICB0aGlzLmFkZENsaWNrTGlzdGVuZXJUb0ltYWdlcygpO1xuICAgIHRoaXMuYWRkQ2xpY2tMaXN0ZW5lclRvRWxlbWVudHMoKTtcbiAgICAvLyB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgIC8vICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocGFyYW1zWydkYXRhJ10pO1xuICAgIC8vICAgaWYgKGRhdGEuZWRpdGVkSU1HKSB7XG4gICAgLy8gICAgIGNvbnN0IGltZ1VybCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2VkaXRJbWFnZUZyb21UZW1wJyk7XG4gICAgLy8gICAgIGlmIChpbWdVcmwpIHtcbiAgICAvLyAgICAgICB0aGlzLnJlcGxhY2VJbWFnZVNyYyhpbWdVcmwsIGRhdGEuaW5kZXguaW5kZXgpXG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnZWRpdEltYWdlRnJvbVRlbXAnKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9KVxuICB9XG5cbiAgIG5nT25EZXN0cm95KCkge1xuICAgIC8vIENsZWFudXAgdGhlIGV2ZW50IGxpc3RlbmVyIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBkZXN0cm95ZWRcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmdWxsc2NyZWVuY2hhbmdlJywgdGhpcy5vbkZ1bGxzY3JlZW5DaGFuZ2UpO1xuICB9XG5cbiAgSXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICB0b2dnbGVGdWxsc2NyZWVuMSgpIHtcbiAgICAgIHRoaXMuSXNPcGVuID0gIXRoaXMuSXNPcGVuO1xuICAgICAgdGhpcy5pc09wZW4uZW1pdCh0aGlzLklzT3BlbilcbiAgICAgIGlmICh0aGlzLklzT3BlbikgeyBcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuLmVudGVyKHRoaXMuVGV4dEVkaXRvci5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZnVsbHNjcmVlbi5leGl0KClcbiAgICAgIH1cbiAgICB9XG4gIFxuICBwcml2YXRlIG9uRnVsbHNjcmVlbkNoYW5nZSA9ICgpID0+IHtcbiAgICBpZiAoIWRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50KSB7XG4gICAgICAvLyBXaGVuIGZ1bGxzY3JlZW4gbW9kZSBpcyBleGl0ZWRcbiAgICAgIHRoaXMuSXNPcGVuID0gZmFsc2U7XG4gICAgICB0aGlzLmlzT3Blbi5lbWl0KHRoaXMuSXNPcGVuKTtcbiAgICB9XG4gIH07XG4gIFxuICAvLyBlbnRlckZ1bGxzY3JlZW5WaWRlbygpIHtcbiAgLy8gICBjb25zb2xlLmxvZygnZXZlbnQ6JywgZXZlbnQpO1xuICAvLyAgIGNvbnN0IGZ1bGxzY3JlZW4gPSBldmVudDtcbiAgLy8gICB0aGlzLmlzT3BlbiA9IGV2ZW50O1xuICAvLyAgIGlmIChmdWxsc2NyZWVuKSB7XG4gIC8vICAgICB0aGlzLmZ1bGxzY3JlZW4uZW50ZXIodGhpcy5UZXh0RWRpdG9yLm5hdGl2ZUVsZW1lbnQpO1xuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICB0aGlzLmZ1bGxzY3JlZW4uZXhpdCgpXG4gIC8vICAgfVxuICAgIFxuICAvLyB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZWRpdG9yVGV4dCA9IHZhbHVlO1xuICAgICAgdGhpcy5pbml0RWRpdG9yKCk7XG4gICAgICB0aGlzLmluaXRfRnVuYyh0aGlzLmVkaXRvclRleHQpO1xuICAgIH1cbiAgfVxuICBcbi8vICBwcml2YXRlIGFkZENsaWNrTGlzdGVuZXJUb0ltYWdlcygpIHtcbi8vICAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuLy8gICBpZiAoZWRpdG9yKSB7XG4vLyAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4vLyAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4vLyAgICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdJTUcnKSB7XG4vLyAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IHRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xuLy8gICAgICAgICB0aGlzLmltYWdlRWRpdFVybCA9IHRoaXMuc2VsZWN0ZWRJbWFnZS5zcmM7XG5cbi8vICAgICAgICAgbGV0IGNvbnRhaW5lciA9IHRoaXMuc2VsZWN0ZWRJbWFnZS5wYXJlbnRFbGVtZW50O1xuLy8gICAgICAgICBpZiAoIWNvbnRhaW5lciB8fCBjb250YWluZXIuY2xhc3NOYW1lICE9PSAnaW1hZ2UtY29udGFpbmVyJykge1xuLy8gICAgICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuLy8gICAgICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAnaW1hZ2UtY29udGFpbmVyJztcbi8vICAgICAgICAgICBjb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuLy8gICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4vLyAgICAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLnBhcmVudE5vZGU/Lmluc2VydEJlZm9yZShjb250YWluZXIsIHRoaXMuc2VsZWN0ZWRJbWFnZSk7XG4vLyAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0ZWRJbWFnZSk7XG4vLyAgICAgICAgIH1cbi8vICAgICAgICAgY29uc3QgZXhpc3RpbmdCdXR0b24gPSBjb250YWluZXIucXVlcnlTZWxlY3RvcignLmltYWdlLWVkaXQtYnV0dG9uJyk7XG4vLyAgICAgICAgIGlmIChleGlzdGluZ0J1dHRvbikge1xuLy8gICAgICAgICAgIGV4aXN0aW5nQnV0dG9uLnJlbW92ZSgpO1xuLy8gICAgICAgICB9XG5cbi8vICAgICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4vLyAgICAgICAgIC8vIGJ1dHRvbi50ZXh0Q29udGVudCA9ICdFZGl0Jztcbi8vICAgICAgICAgYnV0dG9uLmlubmVyVGV4dCA9ICdFZGl0IEltYWdlJztcblxuLy8gICAgICAgICBidXR0b24uY2xhc3NOYW1lID0gJ2ltYWdlLWVkaXQtYnV0dG9uIGJ0biBidG4tc20nO1xuLy8gICAgICAgICBidXR0b24uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuLy8gICAgICAgICBidXR0b24uc3R5bGUudG9wID0gJzUwJSc7XG4vLyAgICAgICAgIGJ1dHRvbi5zdHlsZS5sZWZ0ID0gJzUwJSc7XG4vLyAgICAgICAgIGJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlKC01MCUsIC01MCUpJztcbi8vICAgICAgICAgYnV0dG9uLnN0eWxlLnpJbmRleCA9ICcxMDAwJztcbi8vICAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZmZmJztcbi8vICAgICAgICAgYnV0dG9uLnN0eWxlLmJvcmRlciA9ICcycHggc29saWQgI2ZmZic7XG4vLyAgICAgICAgIC8vIGJ1dHRvbi5zdHlsZS5wYWRkaW5nID0gJzEwcHgnO1xuLy8gICAgICAgICBidXR0b24uc3R5bGUuY29sb3IgPSAnIzMxM2E0Nic7XG4vLyAgICAgICAgIGJ1dHRvbi5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcic7XG5cbi8vICAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbi8vICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuLy8gICAgICAgICAgIHRoaXMuZWRpdEltYWdlKCk7XG4vLyAgICAgICAgIH0pO1xuXG4vLyAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChidXR0b24pO1xuLy8gICAgICAgfSBlbHNlIHtcbi8vICAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gbnVsbDtcbi8vICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA9IG51bGw7XG4vLyAgICAgICB9XG4vLyAgICAgfSk7XG4vLyAgIH1cbiAgLy8gfVxuICBnZXRVc2VyUm9sZXMoKSB7XG4gICAgdGhpcy51c2VyUm9sZSA9IHRoaXMuVXNlclJvbGVcbiAgfVxuICAvLyByb2xlQ2hlY2soKSB7XG4gIC8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnVzZXJSb2xlLmxlbmd0aDsgKytpKSB7XG4gIC8vICAgICBjb25zdCByb2xlTmFtZSA9IFtdXG4gIC8vICAgICAgIHJvbGVOYW1lLnB1c2godGhpcy51c2VyUm9sZVtpXT8ubmFtZSk7XG4gIC8vICAgICByZXR1cm4gdGhpcy51c2VyUm9sZVtpXT8ubmFtZTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICByb2xlQ2hlY2soKSB7XG4gICAgbGV0IHVzZXJSb2xlTmFtZTogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB0aGlzLnVzZXJSb2xlLmxlbmd0aDsgKytpKSB7XG4gICAgICB1c2VyUm9sZU5hbWUucHVzaCh0aGlzLnVzZXJSb2xlW2ldPy5uYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIHVzZXJSb2xlTmFtZTtcbiAgfVxuXG5cbnByaXZhdGUgYWRkQ2xpY2tMaXN0ZW5lclRvSW1hZ2VzKCkge1xuICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIGNvbnN0IHJvbGVzID0gdGhpcy5yb2xlQ2hlY2soKTsgLy8gR2V0IHVzZXIgcm9sZXMgZHluYW1pY2FsbHlcbiAgY29uc3QgaXNBZG1pbiA9IHJvbGVzLmluY2x1ZGVzKCdBZG1pbicpO1xuICBjb25zdCBpc0NyZWF0b3IgPSByb2xlcy5pbmNsdWRlcygnQ3JlYXRvcicpO1xuICBjb25zdCBpc0FwcHJvdmVyID0gcm9sZXMuaW5jbHVkZXMoJ0FwcHJvdmVyJyk7XG4gIFxuICBpZiAoaXNDcmVhdG9yIHx8IGlzQWRtaW4pIHtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdJTUcnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IHRhcmdldCBhcyBIVE1MSW1hZ2VFbGVtZW50O1xuICAgICAgICB0aGlzLmltYWdlRWRpdFVybCA9IHRoaXMuc2VsZWN0ZWRJbWFnZS5zcmM7XG4gICAgICAgIGxldCBjb250YWluZXIgPSB0aGlzLnNlbGVjdGVkSW1hZ2UucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKCFjb250YWluZXIgfHwgY29udGFpbmVyLmNsYXNzTmFtZSAhPT0gJ2ltYWdlLWNvbnRhaW5lcicpIHtcbiAgICAgICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICBjb250YWluZXIuY2xhc3NOYW1lID0gJ2ltYWdlLWNvbnRhaW5lcic7XG4gICAgICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgICAgICBjb250YWluZXIuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snOyAgXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLnBhcmVudE5vZGU/Lmluc2VydEJlZm9yZShjb250YWluZXIsIHRoaXMuc2VsZWN0ZWRJbWFnZSk7XG4gICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuc2VsZWN0ZWRJbWFnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBleGlzdGluZ0J1dHRvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuaW1hZ2UtZWRpdC1idXR0b24nKTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQnV0dG9uKSB7XG4gICAgICAgICAgZXhpc3RpbmdCdXR0b24ucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcbiAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ICA9ICdFZGl0IEltYWdlJztcbiAgICAgICAgYnV0dG9uLmNsYXNzTmFtZSA9ICdpbWFnZS1lZGl0LWJ1dHRvbiBidG4gYnRuLXNtJztcbiAgICAgICAgYnV0dG9uLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgICAgYnV0dG9uLnN0eWxlLnRvcCA9ICc1MCUnO1xuICAgICAgICBidXR0b24uc3R5bGUubGVmdCA9ICc1MCUnO1xuICAgICAgICBidXR0b24uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgtNTAlLCAtNTAlKSc7XG4gICAgICAgIGJ1dHRvbi5zdHlsZS56SW5kZXggPSAnMTAwMCc7XG4gICAgICAgIGJ1dHRvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2ZmZic7IFxuICAgICAgICBidXR0b24uc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCAjZmZmJzsgXG4gICAgICAgIGJ1dHRvbi5zdHlsZS5jb2xvciA9ICcjMzEzYTQ2JztcbiAgICAgICAgYnV0dG9uLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcbiAgICAgICAgYnV0dG9uLnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSc7XG5cbiAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRoaXMuZWRpdEltYWdlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChidXR0b24pO1xuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gbnVsbDtcbiAgICAgICAgY29uc3QgYnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbWFnZS1lZGl0LWJ1dHRvbicpO1xuICAgICAgICBidXR0b25zLmZvckVhY2goYnV0dG9uID0+IGJ1dHRvbi5yZW1vdmUoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgfVxufVxuXG4gIC8vIHByaXZhdGUgYWRkQ2xpY2tMaXN0ZW5lclRvSW1hZ2VzKCkge1xuICAvLyBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIC8vIGlmIChlZGl0b3IpIHtcbiAgLy8gICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgLy8gICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgLy8gICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHtcbiAgLy8gICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gdGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gIC8vICAgICAgIHRoaXMuaW1hZ2VFZGl0VXJsID0gdGhpcy5zZWxlY3RlZEltYWdlLnNyYztcblxuICAvLyAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBpbWFnZVxuICAvLyAgICAgICBjb25zdCBpbWFnZXMgPSBlZGl0b3IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpO1xuICAvLyAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlcy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgICAgIGlmIChpbWFnZXNbaV0gPT09IHRoaXMuc2VsZWN0ZWRJbWFnZSkge1xuICAvLyAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA9IGk7XG4gIC8vICAgICAgICAgICBicmVhaztcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH1cblxuICAvLyAgICAgICBpZiAodGhpcy50b29sYmFyTW9kZSA9PT0gJ2J1YmJsZScpIHtcbiAgLy8gICAgICAgICB0aGlzLm9uVGV4dFNlbGVjdCgpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBudWxsO1xuICAvLyAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gbnVsbDtcbiAgLy8gICAgIH1cbiAgLy8gICB9KTtcbiAgLy8gfVxuICAvLyB9XG4gIFxuICBwcml2YXRlIGFkZENsaWNrTGlzdGVuZXJUb0VsZW1lbnRzKCkge1xuICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIGlmIChlZGl0b3IpIHtcbiAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gdGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaW1hZ2VFZGl0VXJsID0gdGhpcy5zZWxlY3RlZEltYWdlLnNyYztcbiAgICAgICAgY29uc3QgaW1hZ2VzID0gZWRpdG9yLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbWFnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBpZiAoaW1hZ2VzW2ldID09PSB0aGlzLnNlbGVjdGVkSW1hZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBudWxsO1xuICAgICAgfVxuICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnVEQnIHx8IHRhcmdldC50YWdOYW1lID09PSAnVEgnKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZSA9IHRhcmdldC5jbG9zZXN0KCd0YWJsZScpIGFzIEhUTUxUYWJsZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNlbGxzID0gdGhpcy5zZWxlY3RlZFRhYmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhcmdldC50YWdOYW1lKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjZWxscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChjZWxsc1tpXSA9PT0gdGFyZ2V0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnUCcgfHwgdGFyZ2V0LnRhZ05hbWUgPT09ICdTUEFOJyB8fCB0YXJnZXQudGFnTmFtZSA9PT0gJ0RJVicpIHtcbiAgICAgICAgY29uc3QgcGFyYWdyYXBocyA9IGVkaXRvci5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YXJnZXQudGFnTmFtZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYWdyYXBocy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChwYXJhZ3JhcGhzW2ldID09PSB0YXJnZXQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgfVxuXG5yZXBsYWNlSW1hZ2VTcmMobmV3U3JjOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICBcbiAgaWYgKGVkaXRvcikge1xuICAgIGVkaXRvci5mb2N1cygpXG4gICAgY29uc3QgaW1hZ2VzID0gZWRpdG9yLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdJTUcnKTtcbiAgICBpZiAoaW5kZXggPj0gMCApIHtcbiAgICAgIGltYWdlc1tpbmRleF0uc2V0QXR0cmlidXRlKCdzcmMnLCBuZXdTcmMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLndhcm4oYEluZGV4ICR7aW5kZXh9IGlzIG91dCBvZiBib3VuZHMuIFRvdGFsIGltYWdlczogJHtpbWFnZXMubGVuZ3RofWApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKCdFZGl0b3IgZWxlbWVudCBub3QgZm91bmQnKTtcbiAgfVxufVxuXG5cblxuICBwcml2YXRlIGluaXRFZGl0b3IoKSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBlZGl0b3IgY29udGVudCBhbmQgbGlzdGVuZXJzXG4gICAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuXG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgZWRpdG9yLmlubmVySFRNTCA9IHRoaXMuZWRpdG9yVGV4dDtcbiAgICAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcbiAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKGVkaXRvci5pbm5lckhUTUwpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2hlY2tQbGFjZWhvbGRlcigpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgLy8gSGFuZGxlIHRoZSBkaXNhYmxlZCBzdGF0ZSBpZiBuZWNlc3NhcnlcbiAgfVxuXG4gIG9uTW9kZWxDaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgY29uc3QgVkFMVUUgPSB2YWx1ZVxuICAgICAgdGhpcy5lZGl0b3JUZXh0ID0gVkFMVUU7XG4gICAgICB0aGlzLm9uQ2hhbmdlKFZBTFVFKTtcbiAgICAgIHRoaXMuZWRpdG9yVGV4dENoYW5nZS5lbWl0KFZBTFVFKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhcHBseUltYWdlU3R5bGVzKGNvbnRlbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZGl2LmlubmVySFRNTCA9IGNvbnRlbnQ7XG4gICAgY29uc3QgaW1hZ2VzID0gZGl2LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZycpO1xuICAgIGltYWdlcy5mb3JFYWNoKGltZyA9PiB7XG4gICAgICBpZiAoaW1nLnN0eWxlLm1heFdpZHRoID49ICc3MDBweCcpIHtcbiAgICAgICAgaW1nLnN0eWxlLm1heFdpZHRoID0gJzcwMHB4JztcbiAgICAgICAgLy8gaW1nLndpZHRoID0gMzAwO1xuICAgICAgICBpbWcuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW1nLnN0eWxlLm1heFdpZHRoID0gJzEwMCUnO1xuICAgICAgICBpbWcuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkaXYuaW5uZXJIVE1MO1xuICB9XG5cbiAgLy8gaW5pdF9GdW5jKGh0bWw6IGFueSkge1xuICAvLyAgIGlmIChodG1sKSB7XG4gIC8vICAgICBsZXQgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICAvLyAgICAgaWYgKGVkaXRvcikgeyBcbiAgLy8gICAgICAgZWRpdG9yLmZvY3VzKClcbiAgLy8gICAgICAgZWRpdG9yLmlubmVySFRNTCA9IGh0bWw7XG4gIC8vICAgICAgIHRoaXMuc2FuaXRpemVkQ29udGVudCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRoaXMuYXBwbHlJbWFnZVN0eWxlcyhodG1sKSk7XG4gIC8vICAgICAgIGVkaXRvci5pbm5lckhUTUwgPSB0aGlzLnNhbml0aXplZENvbnRlbnQgYXMgc3RyaW5nO1xuICAvLyAgICAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoKSA9PiB7XG4gIC8vICAgICAgICAgaWYgKGVkaXRvcikge1xuICAvLyAgICAgICAgICAgZWRpdG9yLmZvY3VzKClcbiAgLy8gICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShlZGl0b3IuaW5uZXJIVE1MKTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH0pO1xuICAvLyAgICAgfVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBudWxsO1xuICAvLyAgIH1cbiAgLy8gfVxuICBcbi8vICAgaW5pdF9GdW5jKGh0bWw6IGFueSkge1xuLy8gICBpZiAoaHRtbCkge1xuLy8gICAgIGxldCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4vLyAgICAgaWYgKGVkaXRvcikge1xuLy8gICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZWRpdG9yIHdpdGggc2FuaXRpemVkIGNvbnRlbnRcbiAgICAgIFxuLy8gICAgICAgdGhpcy5zZXRFZGl0b3JDb250ZW50KGh0bWwpO1xuXG4vLyAgICAgICAvLyBTZXQgdXAgYSBNdXRhdGlvbk9ic2VydmVyIHRvIGhhbmRsZSBjb250ZW50IGNoYW5nZXNcbi8vICAgICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKGVkaXRvcik7XG5cbi8vICAgICAgIC8vIE1vdmUgdGhlIGNhcmV0IHRvIHRoZSBlbmQgYWZ0ZXIgaW5pdGlhbCBjb250ZW50IHNldHVwXG4vLyAgICAgICB0aGlzLm1vdmVDYXJldFRvRW5kKGVkaXRvcik7XG5cbi8vICAgICAgIC8vIFRyYWNrIGNhcmV0IHBvc2l0aW9uIG9uIG1vdXNlIGNsaWNrXG4vLyAgICAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4vLyAgICAgICAgIGlmIChlZGl0b3IpIHsgIC8vIEVuc3VyZSBlZGl0b3IgaXMgbm90IG51bGxcbi8vICAgICAgICAgICAvLyB0aGlzLnRyYWNrQ2FyZXRQb3NpdGlvbihlZGl0b3IpO1xuLy8gICAgICAgICB9XG4vLyAgICAgICB9KTtcbi8vICAgICB9XG4vLyAgIH0gZWxzZSB7XG4vLyAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gbnVsbDtcbi8vICAgfVxuLy8gfVxuXG4vLyBwcml2YXRlIHNldEVkaXRvckNvbnRlbnQoaHRtbDogc3RyaW5nKSB7XG4vLyAgIGxldCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4vLyAgIGlmIChlZGl0b3IpIHtcbi8vICAgICAvLyBTYW5pdGl6ZSBhbmQgYXBwbHkgc3R5bGVzIHRvIHRoZSBIVE1MXG4vLyAgICAgdGhpcy5zYW5pdGl6ZWRDb250ZW50ID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy5hcHBseUltYWdlU3R5bGVzKGh0bWwpKTtcbi8vICAgICBlZGl0b3IuaW5uZXJIVE1MID0gdGhpcy5zYW5pdGl6ZWRDb250ZW50IGFzIHN0cmluZztcbi8vICAgfVxuLy8gfVxuXG4vLyBwcml2YXRlIHNldHVwTXV0YXRpb25PYnNlcnZlcihlZGl0b3I6IEhUTUxFbGVtZW50KSB7XG4vLyAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuLy8gICAgIC8vIFVwZGF0ZSBtb2RlbCB3aXRoIHRoZSBjdXJyZW50IGNvbnRlbnRcbi8vICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoZWRpdG9yLmlubmVySFRNTCk7XG4vLyAgIH0pO1xuXG4vLyAgIG9ic2VydmVyLm9ic2VydmUoZWRpdG9yLCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTtcbi8vIH1cblxuLy8gVGhpcyBmdW5jdGlvbiB0cmFja3MgdGhlIGNhcmV0IHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBtb3VzZSBjbGlja1xucHJpdmF0ZSB0cmFja0NhcmV0UG9zaXRpb24oZWRpdG9yOiBIVE1MRWxlbWVudCkge1xuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcbiAgICBjb25zdCBzdGFydE5vZGUgPSByYW5nZS5zdGFydENvbnRhaW5lcjtcbiAgICBjb25zdCBzdGFydE9mZnNldCA9IHJhbmdlLnN0YXJ0T2Zmc2V0O1xuXG5cbiAgICAvLyBZb3UgY2FuIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIGluc2VydCBjb250ZW50IG9yIHBlcmZvcm0gYWN0aW9ucyBiYXNlZCBvbiB0aGUgY2FyZXQgcG9zaXRpb25cbiAgICAvLyBFeGFtcGxlOiBTYXZlIHRoZSBjdXJyZW50IGNhcmV0IHBvc2l0aW9uIGZvciBmdXR1cmUgdXNlXG4gICAgdGhpcy5jdXJyZW50Q2FyZXRQb3NpdGlvbiA9IHsgbm9kZTogc3RhcnROb2RlLCBvZmZzZXQ6IHN0YXJ0T2Zmc2V0IH07XG4gIH1cbiAgfVxuICBcbiAgLy8gTWV0aG9kIHRvIGdldCBjYXJldCBwb3NpdGlvbiBhbmQgaW5zZXJ0IG5ldyBkYXRhXG5wcml2YXRlIGluc2VydEF0Q2FyZXQobmV3RGF0YTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgXG4gIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IHJhbmdlIChjYXJldCBwb3NpdGlvbilcbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuXG4gICAgLy8gQ3JlYXRlIGEgZG9jdW1lbnQgZnJhZ21lbnQgdG8gaW5zZXJ0IChhbGxvd3MgaGFuZGxpbmcgSFRNTCBzdHJpbmdzKVxuICAgIGNvbnN0IGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgIGNvbnN0IHRlbXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB0ZW1wRGl2LmlubmVySFRNTCA9IG5ld0RhdGE7XG5cbiAgICAvLyBBcHBlbmQgdGhlIG5ldyBkYXRhIHRvIHRoZSBmcmFnbWVudCAoc3VwcG9ydHMgSFRNTCBpbnNlcnRpb24pXG4gICAgd2hpbGUgKHRlbXBEaXYuZmlyc3RDaGlsZCkge1xuICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQodGVtcERpdi5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICAvLyBJbnNlcnQgdGhlIGZyYWdtZW50IGF0IHRoZSBjYXJldCBwb3NpdGlvblxuICAgIHJhbmdlLmRlbGV0ZUNvbnRlbnRzKCk7IC8vIFJlbW92ZSBhbnkgc2VsZWN0ZWQgY29udGVudCBpZiBhcHBsaWNhYmxlXG4gICAgcmFuZ2UuaW5zZXJ0Tm9kZShmcmFnbWVudCk7XG5cbiAgICAvLyBNb3ZlIHRoZSBjYXJldCBhZnRlciB0aGUgaW5zZXJ0ZWQgY29udGVudFxuICAgIGNvbnN0IGxhc3RDaGlsZCA9IGZyYWdtZW50Lmxhc3RDaGlsZDtcblxuICAgIGlmIChsYXN0Q2hpbGQpIHtcbiAgICAgIHJhbmdlLnNldFN0YXJ0QWZ0ZXIobGFzdENoaWxkKTtcbiAgICAgIHJhbmdlLnNldEVuZEFmdGVyKGxhc3RDaGlsZCk7XG4gICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICAgIH1cbiAgICBsZXQgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIHRoaXMubW92ZUNhcmV0VG9FbmQoZWRpdG9yKVxuICAgIH1cbiAgICBcbiAgICB0aGlzLnBsYWNlSG9sZGVyUmVtb3ZlLmVtaXQoKVxuICAgIGNvbnNvbGUubG9nKCdOZXcgZGF0YSBpbnNlcnRlZCBhdCBjYXJldC4nKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZygnTm8gY2FyZXQgcG9zaXRpb24gZm91bmQuJyk7XG4gIH1cbn1cblxuXG4vLyAgIC8vIE1vdmUgY2FyZXQgdG8gdGhlIGVuZCBvZiB0aGUgZWRpdG9yIGNvbnRlbnRcbi8vICAgcHJpdmF0ZSBtb3ZlQ2FyZXRUb0VuZChlZGl0b3I6IEhUTUxFbGVtZW50KSB7XG4vLyAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuLy8gICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICBcbi8vICAgICBpZiAoZWRpdG9yLmxhc3RDaGlsZCkge1xuLy8gICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXRvcik7XG4vLyAgICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7IC8vIENvbGxhcHNlIHRvIHRoZSBlbmRcbi8vICAgICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4vLyAgICAgICBzZWxlY3Rpb24/LmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgIFxuLy8gICAgIH1cbi8vICAgfVxuICBcbiAgXG5cblxuICBpbml0X0Z1bmMoaHRtbDogYW55KSB7XG4gIGlmIChodG1sKSB7XG4gICAgbGV0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICAvLyBJbml0aWFsaXplIHRoZSBlZGl0b3Igd2l0aCBzYW5pdGl6ZWQgY29udGVudFxuICAgICAgdGhpcy5zZXRFZGl0b3JDb250ZW50KGh0bWwpO1xuXG4gICAgICAvLyBTZXQgdXAgYSBNdXRhdGlvbk9ic2VydmVyIHRvIGhhbmRsZSBjb250ZW50IGNoYW5nZXNcbiAgICAgIHRoaXMuc2V0dXBNdXRhdGlvbk9ic2VydmVyKGVkaXRvcik7XG4gICAgICBcbiAgICAgIC8vIE1vdmUgdGhlIGNhcmV0IHRvIHRoZSBlbmQgYWZ0ZXIgaW5pdGlhbCBjb250ZW50IHNldHVwXG4gICAgICB0aGlzLm1vdmVDYXJldFRvRW5kKGVkaXRvcik7XG4gICAgICAvLyAgVHJhY2sgY2FyZXQgcG9zaXRpb24gb24gbW91c2UgY2xpY2tcbiAgICAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgaWYgKGVkaXRvcikgeyAgLy8gRW5zdXJlIGVkaXRvciBpcyBub3QgbnVsbFxuICAgICAgICAgIHRoaXMudHJhY2tDYXJldFBvc2l0aW9uKGVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBudWxsO1xuICB9XG59XG5cblxucHJpdmF0ZSBzZXRFZGl0b3JDb250ZW50KGh0bWw6IHN0cmluZykge1xuICBsZXQgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICBpZiAoZWRpdG9yKSB7XG4gICAgLy8gU2FuaXRpemUgYW5kIGFwcGx5IHN0eWxlcyB0byB0aGUgSFRNTFxuICAgIHRoaXMuc2FuaXRpemVkQ29udGVudCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRoaXMuYXBwbHlJbWFnZVN0eWxlcyhodG1sKSk7XG4gICAgZWRpdG9yLmlubmVySFRNTCA9IHRoaXMuc2FuaXRpemVkQ29udGVudCBhcyBzdHJpbmc7XG4gIH1cbn1cblxucHJpdmF0ZSBzZXR1cE11dGF0aW9uT2JzZXJ2ZXIoZWRpdG9yOiBIVE1MRWxlbWVudCkge1xuICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAvLyBNb3ZlIHRoZSBjYXJldCB0byB0aGUgZW5kIGFmdGVyIGNvbnRlbnQgY2hhbmdlc1xuICAgIC8vIHRoaXMubW92ZUNhcmV0VG9FbmQoZWRpdG9yKTtcbiAgICAvLyBVcGRhdGUgbW9kZWwgd2l0aCB0aGUgY3VycmVudCBjb250ZW50XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKGVkaXRvci5pbm5lckhUTUwpO1xuICB9KTtcblxuICBvYnNlcnZlci5vYnNlcnZlKGVkaXRvciwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUsIGNoYXJhY3RlckRhdGE6IHRydWUgfSk7XG59XG5cbnByaXZhdGUgbW92ZUNhcmV0VG9FbmQoZWRpdG9yOiBIVE1MRWxlbWVudCkge1xuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgXG4gIGlmIChlZGl0b3IubGFzdENoaWxkKSB7XG4gICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXRvcik7XG4gICAgcmFuZ2UuY29sbGFwc2UoZmFsc2UpOyAvLyBDb2xsYXBzZSB0byB0aGUgZW5kXG4gICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICBzZWxlY3Rpb24/LmFkZFJhbmdlKHJhbmdlKTtcbiAgfVxufVxuXG4vLyAgIGluaXRfRnVuYyhodG1sOiBhbnkpIHtcbi8vICAgaWYgKGh0bWwpIHtcbi8vICAgICBsZXQgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuLy8gICAgIGlmIChlZGl0b3IpIHtcbi8vICAgICAgIGVkaXRvci5mb2N1cygpO1xuLy8gICAgICAgZWRpdG9yLmlubmVySFRNTCA9IGh0bWw7XG5cbi8vICAgICAgIC8vIFNhbml0aXplIHRoZSBjb250ZW50IGFuZCBhcHBseSBzdHlsZXNcbi8vICAgICAgIHRoaXMuc2FuaXRpemVkQ29udGVudCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRoaXMuYXBwbHlJbWFnZVN0eWxlcyhodG1sKSk7XG4vLyAgICAgICBlZGl0b3IuaW5uZXJIVE1MID0gdGhpcy5zYW5pdGl6ZWRDb250ZW50IGFzIHN0cmluZztcblxuLy8gICAgICAgLy8gUGxhY2UgdGhlIGNhcmV0IGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnRcbi8vICAgICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbi8vICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgIFxuLy8gICAgICAgaWYgKGVkaXRvci5sYXN0Q2hpbGQpIHtcbi8vICAgICAgICAgLy8gU2V0IHRoZSByYW5nZSBhdCB0aGUgZW5kIG9mIHRoZSBlZGl0b3IncyBjb250ZW50XG4vLyAgICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlZGl0b3IpO1xuLy8gICAgICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7IC8vIGNvbGxhcHNlIHRvIHRoZSBlbmRcbi8vICAgICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcbi8vICAgICAgICAgc2VsZWN0aW9uPy5hZGRSYW5nZShyYW5nZSk7XG4vLyAgICAgICB9XG5cbi8vICAgICAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcbi8vICAgICAgICAgaWYgKGVkaXRvcikge1xuLy8gICAgICAgICAgIHRoaXMub25Nb2RlbENoYW5nZShlZGl0b3IuaW5uZXJIVE1MKTtcblxuLy8gICAgICAgICAgIC8vIEVuc3VyZSB0aGUgY2FyZXQgcmVtYWlucyBhdCB0aGUgZW5kIGFmdGVyIG5ldyBjb250ZW50IGlzIGFkZGVkXG4vLyAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuLy8gICAgICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICBcbi8vICAgICAgICAgICBpZiAoZWRpdG9yLmxhc3RDaGlsZCkge1xuLy8gICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXRvcik7XG4vLyAgICAgICAgICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7IC8vIGNvbGxhcHNlIHRvIHRoZSBlbmRcbi8vICAgICAgICAgICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4vLyAgICAgICAgICAgICBzZWxlY3Rpb24/LmFkZFJhbmdlKHJhbmdlKTtcbi8vICAgICAgICAgICB9XG4vLyAgICAgICAgIH1cbi8vICAgICAgIH0pO1xuLy8gICAgIH1cbi8vICAgfSBlbHNlIHtcbi8vICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBudWxsO1xuLy8gICB9XG4vLyB9XG5cbiAgZm9ybWF0KGNvbW1hbmQ6IHN0cmluZywgdmFsdWU/OiBhbnkpIHtcbiAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgZWRpdG9yLmZvY3VzKCk7XG4gICAgICBpZiAoY29tbWFuZCA9PT0gJ3N1YnNjcmlwdCcpIHtcbiAgICAgICAgdGhpcy5pc1N1YnNjcmlwdEFjdGl2ZSA9ICF0aGlzLmlzU3Vic2NyaXB0QWN0aXZlO1xuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnc3Vic2NyaXB0JywgZmFsc2UsICcnKTtcbiAgICAgIH0gZWxzZSBpZiAoY29tbWFuZCA9PT0gJ3N1cGVyc2NyaXB0Jykge1xuICAgICAgICB0aGlzLmlzU3VwZXJzY3JpcHRBY3RpdmUgPSAhdGhpcy5pc1N1cGVyc2NyaXB0QWN0aXZlO1xuICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnc3VwZXJzY3JpcHQnLCBmYWxzZSwgJycpOztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKGNvbW1hbmQsIGZhbHNlLCB2YWx1ZSA/PyAnJyk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIGNvbnN0IHRhZyA9IHZhbHVlLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWzw+XS9nLCAnJylcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRm9ybWF0QmxvY2sgPSB0aGlzLmZvcm1hdEJsb2NrRGVjb2RlKHRhZyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgIHRoaXMuY2hlY2tBY3RpdmVTdGF0ZXMoKTtcbiAgICAgdGhpcy5jaGVja0Zvcm1hdEJsb2NrKCk7XG4gIH1cblxuICBjaGVja0FjdGl2ZVN0YXRlcygpIHtcbiAgICB0aGlzLmlzQm9sZEFjdGl2ZSA9IGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN0YXRlKCdib2xkJyk7XG4gICAgdGhpcy5pc0l0YWxpY0FjdGl2ZSA9IGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN0YXRlKCdpdGFsaWMnKTtcbiAgICB0aGlzLmlzVW5kZXJsaW5lQWN0aXZlID0gZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoJ3VuZGVybGluZScpO1xuICAgIHRoaXMuaXNTdHJpa2V0aHJvdWdoQWN0aXZlID0gZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoJ3N0cmlrZXRocm91Z2gnKTtcbiAgICB0aGlzLmlzU3Vic2NyaXB0QWN0aXZlID0gZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoJ3N1YnNjcmlwdCcpO1xuICAgIHRoaXMuaXNTdXBlcnNjcmlwdEFjdGl2ZSA9IGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN0YXRlKCdzdXBlcnNjcmlwdCcpO1xuICB9XG5cbiAgY2hlY2tGb3JtYXRCbG9jaygpIHtcbiAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgY29uc3QgZm9ybWF0QmxvY2sgPSBkb2N1bWVudC5xdWVyeUNvbW1hbmRWYWx1ZSgnZm9ybWF0QmxvY2snKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtYXRCbG9jayA9IHRoaXMuZm9ybWF0QmxvY2tEZWNvZGUoZm9ybWF0QmxvY2spO1xuICAgICAgLy8gWW91IGNhbiBmdXJ0aGVyIGhhbmRsZSB0aGUgZm9ybWF0QmxvY2sgdmFsdWUgYXMgbmVlZGVkXG4gICAgfVxuICB9XG5cbiAgZm9ybWF0QmxvY2tEZWNvZGUoZGF0YTogc3RyaW5nKTogYW55IHtcbiAgICBzd2l0Y2ggKGRhdGEpIHtcbiAgICAgIGNhc2UgJ2gxJzpcbiAgICAgICAgcmV0dXJuICdoZWFkaW5nIDEnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2gyJzpcbiAgICAgICAgcmV0dXJuICdoZWFkaW5nIDInO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2gzJzpcbiAgICAgICAgcmV0dXJuICdoZWFkaW5nIDMnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2g0JzpcbiAgICAgICAgcmV0dXJuICdoZWFkaW5nIDQnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2g1JzpcbiAgICAgICAgcmV0dXJuICdoZWFkaW5nIDUnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2g2JzpcbiAgICAgICAgcmV0dXJuICdoZWFkaW5nIDYnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3AnOlxuICAgICAgICByZXR1cm4gJ25vcm1hbCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdub3JtYWwnO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBjaGFuZ2VGb250KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNlbGVjdGVkRm9udCA9IGV2ZW50O1xuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb250TmFtZScsIGZhbHNlLCB0aGlzLnNlbGVjdGVkRm9udCk7XG4gIH1cblxuICBpbnNlcnRDb2RlQmxvY2soKSB7XG4gICAgY29uc3QgY29kZSA9IGBcbiAgICAgIDxwcmUgc3R5bGU9XCJmb250LXNpemU6IDEycHg7XG4gICAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbiAgICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7XG4gICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggMTBweDtcIj5cbiAgICAgICAgPGNvZGUgc3R5bGU9XCJkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xuICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1wiIGNsYXNzPVwibGFuZ3VhZ2UtaHRtbFwiPkluc2VydCBjb2RlIGhlcmUuLi48L2NvZGU+XG4gICAgICA8L3ByZT5cbiAgICBgO1xuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFsc2UsIGNvZGUpO1xuICB9XG5cbiAgLy8gY2hhbmdlRm9udFNpemUoZXZlbnQ6IGFueSkge1xuICAvLyAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb250U2l6ZScsIGZhbHNlLCAnNycpO1xuICAvLyAgIGxldCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIC8vICAgaWYgKGVkaXRvcikge1xuICAvLyAgICAgbGV0IGZvbnRFbGVtZW50cyA9IGVkaXRvci5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9udCcpO1xuICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb250RWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgICAgaWYgKGZvbnRFbGVtZW50c1tpXS5zaXplID09IFwiN1wiKSB7XG4gIC8vICAgICAgICAgZm9udEVsZW1lbnRzW2ldLnJlbW92ZUF0dHJpYnV0ZShcInNpemVcIik7XG4gIC8vICAgICAgICAgZm9udEVsZW1lbnRzW2ldLnN0eWxlLmZvbnRTaXplID0gdGhpcy5zZWxlY3RlZEZvbnRTaXplICsgJ3B4JztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gfVxuICBjaGFuZ2VGb250U2l6ZShldmVudDogYW55KSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRUZXh0ID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIFxuICAgIGlmIChzZWxlY3RlZFRleHQgJiYgc2VsZWN0ZWRUZXh0LnJhbmdlQ291bnQgPiAwKSB7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0ZWRUZXh0LmdldFJhbmdlQXQoMCk7XG4gICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgIHNwYW4uc3R5bGUuZm9udFNpemUgPSB0aGlzLnNlbGVjdGVkRm9udFNpemUgKyAncHgnO1xuICAgICAgICByYW5nZS5zdXJyb3VuZENvbnRlbnRzKHNwYW4pO1xuICAgIH1cbiAgfVxuXG4gIGFkZExpbmsoKSB7XG4gICAgbGV0IHVybCA9IHByb21wdChcIkVudGVyIHRoZSBsaW5rIGhlcmU6IFwiLCBcImh0dHA6Ly9cIik7XG4gICAgaWYgKHVybCkge1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjcmVhdGVMaW5rXCIsIGZhbHNlLCB1cmwpO1xuICAgIH1cbiAgfVxuXG4gIGluc2VydHNJbWFnZSgpIHtcbiAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgZWRpdG9yLmZvY3VzKCk7XG4gICAgICBsZXQgaW1hZ2VJbnB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZUlucHV0JykgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgIGlmIChpbWFnZUlucHV0KSB7XG4gICAgICAgIGltYWdlSW5wdXQuY2xpY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAgaGFuZGxlSW1hZ2VVcGxvYWQoZXZlbnQ6IGFueSkge1xuICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICBpZiAoZmlsZSkge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGltZyA9IG5ldyBJbWFnZSgpO1xuICAgICAgaW1nLnNyYyA9IGUudGFyZ2V0LnJlc3VsdDtcbiAgICAgIGltZy5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIC8vIENyZWF0ZSB0aGUgSFRNTCBzdHJpbmcgd2l0aCB0aGUgZXhhY3Qgd2lkdGggYW5kIGhlaWdodFxuICAgICAgICBjb25zdCBpbWdIVE1MID0gYDxpbWcgc3JjPVwiJHtpbWcuc3JjfVwiIHdpZHRoPVwiJHs3OTR9XCIgPmA7XG4gICAgICAgIC8vIEluc2VydCB0aGUgaW1hZ2UgaW50byB0aGUgZWRpdG9yXG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFsc2UsIGltZ0hUTUwpO1xuICAgICAgfTtcbiAgICB9O1xuICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICB9XG59XG5cblxuICAvLyBhZGRUYWJsZSgpIHtcbiAgLy8gICBjb25zdCB0YWJsZVdpZHRoID0gODI1OyAvLyBUYWJsZSB3aWR0aCBpbiBwaXhlbHNcbiAgLy8gICBjb25zdCBjb2xzID0gMzsgLy8gTnVtYmVyIG9mIGNvbHVtbnNcbiAgLy8gICBjb25zdCBjZWxsTWluV2lkdGggPSB0YWJsZVdpZHRoIC8gY29sczsgLy8gQ2FsY3VsYXRlIG1pbmltdW0gd2lkdGggZm9yIGVhY2ggY2VsbFxuXG4gIC8vICAgbGV0IHRhYmxlID0gYDxiciAvPjx0YWJsZSBzdHlsZT1cIndpZHRoOiAke3RhYmxlV2lkdGh9cHg7XCI+YDtcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykgeyAvLyBOdW1iZXIgb2Ygcm93c1xuICAvLyAgICAgdGFibGUgKz0gJzx0ciA+JztcbiAgLy8gICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sczsgaisrKSB7XG4gIC8vICAgICAgIHRhYmxlICs9IGA8dGQgc3R5bGU9XCIgd29yZC13cmFwOiBicmVhay13b3JkOyB3b3JkLWJyZWFrOiBicmVhay1hbGw7IHdoaXRlLXNwYWNlOiBub3JtYWw7IG1pbi13aWR0aDogJHtjZWxsTWluV2lkdGh9cHg7XCI+Jm5ic3A7PC90ZD5gO1xuICAvLyAgICAgfVxuICAvLyAgICAgdGFibGUgKz0gJzwvdHI+JztcbiAgLy8gICB9XG4gIC8vICAgICB0YWJsZSArPSAnPC90YWJsZT48YnIvID4nO1xuICAvLyAgICAgLy8gZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBmYWxzZSwgdGFibGUpO1xuICAvLyAgICAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICAvLyAgIGlmIChlZGl0b3IpIHtcbiAgLy8gICAgIGVkaXRvci5mb2N1cygpO1xuICAvLyAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBmYWxzZSwgdGFibGUpO1xuICAvLyAgIH1cbiAgLy8gICB0aGlzLnRhYmxlQWRkZWQgPSB0cnVlO1xuICAvLyAgIHRoaXMuY2hlY2tUYWJsZVNlbGVjdGlvbigpO1xuICAvLyB9XG5cbiAgYWRkVGFibGUoKSB7XG4gIGNvbnN0IHRhYmxlV2lkdGggPSA4MjU7IC8vIFRhYmxlIHdpZHRoIGluIHBpeGVsc1xuICBjb25zdCBjb2xzID0gMzsgLy8gTnVtYmVyIG9mIGNvbHVtbnNcbiAgY29uc3QgY2VsbE1pbldpZHRoID0gdGFibGVXaWR0aCAvIGNvbHM7IC8vIENhbGN1bGF0ZSBtaW5pbXVtIHdpZHRoIGZvciBlYWNoIGNlbGxcblxuICBsZXQgdGFibGUgPSBgPGJyIC8+PHRhYmxlIHN0eWxlPVwid2lkdGg6ICR7dGFibGVXaWR0aH1weDtcIj5gO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykgeyAvLyBOdW1iZXIgb2Ygcm93c1xuICAgIHRhYmxlICs9IGA8dHIgc3R5bGU9XCJib3JkZXItYm90dG9tOiAke3RoaXMudGhlbWVNb2RlQ2xyVmVydGljYWxMaW5lRm9yVGFibGUoKX1cIj5gOyAvLyBBZGQgYm9yZGVyLWJvdHRvbSB0byB0aGUgcm93XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgICAgIHRhYmxlICs9IGA8dGQgc3R5bGU9XCJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgbWluLXdpZHRoOiAke2NlbGxNaW5XaWR0aH1weDtcIj4mbmJzcDs8L3RkPmA7XG4gICAgfVxuICAgIHRhYmxlICs9ICc8L3RyPic7XG4gIH1cbiAgdGFibGUgKz0gJzwvdGFibGU+PGJyLz4nO1xuXG4gIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgaWYgKGVkaXRvcikge1xuICAgIGVkaXRvci5mb2N1cygpO1xuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgZmFsc2UsIHRhYmxlKTtcbiAgfVxuXG4gIHRoaXMudGFibGVBZGRlZCA9IHRydWU7XG4gIHRoaXMuY2hlY2tUYWJsZVNlbGVjdGlvbigpO1xufVxuXG5cblxuXG4gIGNoZWNrVGFibGVTZWxlY3Rpb24oZXZlbnQ/OiBNb3VzZUV2ZW50KSB7XG4gICAgbGV0IHRhcmdldCA9IGV2ZW50Py50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgaWYgKHRhcmdldCAmJiAodGFyZ2V0LnRhZ05hbWUgPT09ICdURCcgfHwgdGFyZ2V0LnRhZ05hbWUgPT09ICdUSCcpKSB7XG4gICAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGUgPSB0YXJnZXQuY2xvc2VzdCgndGFibGUnKSBhcyBIVE1MVGFibGVFbGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzVGFibGVTZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlID0gbnVsbDtcbiAgICB9XG4gICAgXG4gICAgLy8gdGhpcy5jaGVja1BsYWNlaG9sZGVyKCk7XG4gIH1cblxuICBjaGVja1BsYWNlaG9sZGVyKCkge1xuICAgIC8vIGxldCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gICAgLy8gaWYgKGVkaXRvcikge1xuICAgIC8vICAgdGhpcy5pc1BsYWNlaG9sZGVyVmlzaWJsZSA9IGVkaXRvci5pbm5lckhUTUwgPT09ICcnIHx8IGVkaXRvci5pbm5lckhUTUwgPT09ICc8YnI+JztcbiAgICAvLyAgIGlmICh0aGlzLmlzUGxhY2Vob2xkZXJWaXNpYmxlKSB7XG4gICAgLy8gICAgIC8vIGVkaXRvci5pbm5lckhUTUwgPSAnPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlclwiIHN0eWxlPVwiYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGNvbG9yOiAjMDAwMDAwXCI+SW5zZXJ0IHRleHQgaGVyZSAuLi48L3NwYW4+JztcbiAgICAvLyAgIH0gZWxzZSB7XG4gICAgLy8gICAgIGxldCBwbGFjZWhvbGRlciA9IGVkaXRvci5xdWVyeVNlbGVjdG9yKCcucGxhY2Vob2xkZXInKTtcbiAgICAvLyAgICAgaWYgKHBsYWNlaG9sZGVyKSB7XG4gICAgLy8gICAgICAgZWRpdG9yLnJlbW92ZUNoaWxkKHBsYWNlaG9sZGVyKTtcbiAgICAvLyAgICAgfVxuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgfVxuXG4gIG9uRm9jdXMoKSB7XG4gICAgLy8gbGV0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgICAvLyBpZiAoZWRpdG9yICYmIHRoaXMuaXNQbGFjZWhvbGRlclZpc2libGUpIHtcbiAgICAvLyAgIGVkaXRvci5pbm5lckhUTUwgPSAnJztcbiAgICAvLyAgIHRoaXMuaXNQbGFjZWhvbGRlclZpc2libGUgPSBmYWxzZTtcbiAgICAvLyB9XG4gIH1cblxuICAvLyBjb2xvckNoYW5nZShuZXdDb2xvcjogc3RyaW5nKSB7XG4gIC8vICAgdGhpcy5jb2xvciA9IG5ld0NvbG9yO1xuICAvLyB9XG5cbiAgb25CbHVyKCkge1xuICAgIHRoaXMuY2hlY2tQbGFjZWhvbGRlcigpO1xuICB9XG5cbiAgLy8gYWRkUm93KCkge1xuICAvLyAgIGlmICh0aGlzLnNlbGVjdGVkVGFibGUpIHtcbiAgLy8gICAgIGxldCByb3cgPSB0aGlzLnNlbGVjdGVkVGFibGUuaW5zZXJ0Um93KCk7XG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzWzBdLmNlbGxzLmxlbmd0aDsgaSsrKSB7XG4gIC8vICAgICAgIGxldCBjZWxsID0gcm93Lmluc2VydENlbGwoaSk7XG4gIC8vICAgICAgIGNlbGwuaW5uZXJIVE1MID0gJyZuYnNwOyc7XG4gIC8vICAgICAgIGNlbGwuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCBibGFjayc7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgYWRkUm93KCkge1xuICBpZiAodGhpcy5zZWxlY3RlZFRhYmxlKSB7XG4gICAgbGV0IHJvdyA9IHRoaXMuc2VsZWN0ZWRUYWJsZS5pbnNlcnRSb3coKTtcbiAgICByb3cuc3R5bGUuYm9yZGVyQm90dG9tID0gdGhpcy50aGVtZU1vZGVDbHJWZXJ0aWNhbExpbmVGb3JUYWJsZSgpOyAvLyBBZGQgYm90dG9tIGJvcmRlciB0byB0aGUgcm93XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkVGFibGUucm93c1swXS5jZWxscy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNlbGwgPSByb3cuaW5zZXJ0Q2VsbChpKTtcbiAgICAgIGNlbGwuaW5uZXJIVE1MID0gJyZuYnNwOyc7XG4gICAgfVxuICB9XG59XG5cblxuICAvLyBkZWxldGVSb3coKSB7XG4gIC8vICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJsZSkge1xuICAvLyAgICAgdGhpcy5zZWxlY3RlZFRhYmxlLmRlbGV0ZVJvdygtMSk7XG4gIC8vICAgfVxuICAvLyB9XG5cbi8vICAgZGVsZXRlUm93KCkge1xuLy8gICBpZiAodGhpcy5zZWxlY3RlZFRhYmxlKSB7XG4vLyAgICAgbGV0IHJvd0luZGV4ID0gdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3MubGVuZ3RoIC0gMTsgXG4vLyAgICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbi8vICAgICAgIGxldCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4vLyAgICAgICBpZiAoc2VsZWN0aW9uKSB7XG4vLyAgICAgICAgIGxldCByb3cgPSBzZWxlY3Rpb24uYW5jaG9yTm9kZT8ucGFyZW50RWxlbWVudD8uY2xvc2VzdCgndHInKTtcbi8vICAgICAgICAgaWYgKHJvdykge1xuLy8gICAgICAgICAgIHJvd0luZGV4ID0gcm93LnJvd0luZGV4O1xuLy8gICAgICAgICB9XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICAgIHRoaXMuc2VsZWN0ZWRUYWJsZS5kZWxldGVSb3cocm93SW5kZXgpO1xuLy8gICB9XG4vLyB9XG5cbiAgZGVsZXRlUm93KCkge1xuICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKHNlbGVjdGlvbikge1xuICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQpIHJldHVybjtcblxuICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG4gICAgY29uc3Qgc2VsZWN0ZWROb2RlID0gcmFuZ2Uuc3RhcnRDb250YWluZXI7XG4gICAgY29uc3Qgcm93ID0gc2VsZWN0ZWROb2RlLnBhcmVudEVsZW1lbnQ/LmNsb3Nlc3QoJ3RyJyk7XG5cbiAgICBpZiAocm93KSB7XG4gICAgICBjb25zdCB0YWJsZSA9IHJvdy5jbG9zZXN0KCd0YWJsZScpO1xuICAgICAgaWYgKHRhYmxlKSB7XG4gICAgICAgIHRhYmxlLmRlbGV0ZVJvdyhyb3cucm93SW5kZXgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbiAgLy8gYWRkQ29sdW1uKCkge1xuICAvLyAgIGlmICh0aGlzLnNlbGVjdGVkVGFibGUpIHtcbiAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgICAgbGV0IGNlbGwgPSB0aGlzLnNlbGVjdGVkVGFibGUucm93c1tpXS5pbnNlcnRDZWxsKC0xKTtcbiAgLy8gICAgICAgY2VsbC5pbm5lckhUTUwgPSAnJm5ic3A7JztcbiAgLy8gICAgICAgY2VsbC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkIGJsYWNrJztcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vIH1cblxuLy8gICBhZGRDb2x1bW4oKSB7XG4vLyAgIGlmICh0aGlzLnNlbGVjdGVkVGFibGUpIHtcbi8vICAgICBjb25zdCBjb2x1bW5Db3VudCA9IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzWzBdLmNlbGxzLmxlbmd0aCArIDE7IC8vIE5ldyBjb2x1bW4gY291bnRcbi8vICAgICBjb25zdCB0YWJsZVdpZHRoID0gdGhpcy5zZWxlY3RlZFRhYmxlLm9mZnNldFdpZHRoO1xuLy8gICAgIGNvbnN0IG1pbldpZHRoID0gdGFibGVXaWR0aCAvIGNvbHVtbkNvdW50O1xuXG4vLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkVGFibGUucm93cy5sZW5ndGg7IGkrKykge1xuLy8gICAgICAgbGV0IGNlbGwgPSB0aGlzLnNlbGVjdGVkVGFibGUucm93c1tpXS5pbnNlcnRDZWxsKC0xKTtcbi8vICAgICAgIGNlbGwuaW5uZXJIVE1MID0gJyZuYnNwOyc7XG4vLyAgICAgICBjZWxsLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgYmxhY2snO1xuLy8gICAgICAgY2VsbC5zdHlsZS5taW5XaWR0aCA9IGAke21pbldpZHRofXB4YDtcbi8vICAgICAgIGNlbGwuc3R5bGUud29yZFdyYXAgPSAnYnJlYWstd29yZCc7XG4vLyAgICAgICBjZWxsLnN0eWxlLndvcmRCcmVhayA9ICdicmVhay1hbGwnO1xuLy8gICAgICAgY2VsbC5zdHlsZS53aGl0ZVNwYWNlID0gJ25vcm1hbCc7XG4vLyAgICAgfVxuXG4vLyAgICAgLy8gVXBkYXRlIGV4aXN0aW5nIGNlbGxzJyBtaW5XaWR0aFxuLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHtcbi8vICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3NbaV0uY2VsbHMubGVuZ3RoOyBqKyspIHtcbi8vICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3NbaV0uY2VsbHNbal0uc3R5bGUubWluV2lkdGggPSBgJHttaW5XaWR0aH1weGA7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICB9XG4gIC8vIH1cbiAgXG4gIGFkZENvbHVtbigpIHtcbiAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJsZSkge1xuICAgIGNvbnN0IGNvbHVtbkNvdW50ID0gdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3NbMF0uY2VsbHMubGVuZ3RoICsgMTsgLy8gTmV3IGNvbHVtbiBjb3VudFxuICAgIGNvbnN0IHRhYmxlV2lkdGggPSB0aGlzLnNlbGVjdGVkVGFibGUub2Zmc2V0V2lkdGg7XG4gICAgY29uc3QgbWluV2lkdGggPSB0YWJsZVdpZHRoIC8gY29sdW1uQ291bnQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY2VsbCA9IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzW2ldLmluc2VydENlbGwoLTEpO1xuICAgICAgY2VsbC5pbm5lckhUTUwgPSAnJm5ic3A7JztcbiAgICAgIGNlbGwuc3R5bGUud29yZFdyYXAgPSAnYnJlYWstd29yZCc7XG4gICAgICBjZWxsLnN0eWxlLndvcmRCcmVhayA9ICdicmVhay1hbGwnO1xuICAgICAgY2VsbC5zdHlsZS53aGl0ZVNwYWNlID0gJ25vcm1hbCc7XG4gICAgICBjZWxsLnN0eWxlLm1pbldpZHRoID0gYCR7bWluV2lkdGh9cHhgO1xuICAgIH1cblxuICAgIC8vIFVwZGF0ZSBleGlzdGluZyByb3dzJyBib3R0b20gYm9yZGVyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkVGFibGUucm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3NbaV0uc3R5bGUuYm9yZGVyQm90dG9tID0gdGhpcy50aGVtZU1vZGVDbHJWZXJ0aWNhbExpbmVGb3JUYWJsZSgpO1xuICAgIH1cbiAgfVxuICB9XG4gIFxuXG5cblxuXG4gIGRlbGV0ZUNvbHVtbigpIHtcbiAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJsZSkge1xuICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgICBsZXQgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICBsZXQgY2VsbCA9IHNlbGVjdGlvbi5hbmNob3JOb2RlPy5wYXJlbnRFbGVtZW50Py5jbG9zZXN0KCd0ZCwgdGgnKSBhcyBIVE1MVGFibGVDZWxsRWxlbWVudDtcbiAgICAgICAgaWYgKGNlbGwpIHtcbiAgICAgICAgICBsZXQgY2VsbEluZGV4ID0gY2VsbC5jZWxsSW5kZXg7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkVGFibGUucm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3NbaV0uZGVsZXRlQ2VsbChjZWxsSW5kZXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4gIHRoZW1lTW9kZUNsclZlcnRpY2FsTGluZUZvclRhYmxlKCkge1xuICAgIGNvbnN0IGNsck1vZGUgPSBkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgnZGF0YS1sYXlvdXQtY29sb3InKVxuICAgIGlmIChjbHJNb2RlID09ICdkYXJrJykge1xuICAgICAgcmV0dXJuICcycHggc29saWQgIzQxNDE0MSAhaW1wb3J0YW50J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJzJweCBzb2xpZCAjNUY1RjVGICFpbXBvcnRhbnQnXG4gICAgfVxuICB9XG5cbiAgYWRqdXN0VGFibGVXaWR0aChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJsZSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlLnN0eWxlLndpZHRoID0gZXZlbnQudGFyZ2V0LnZhbHVlICsgJ3B4JztcbiAgICB9XG4gIH1cblxuICBhZGp1c3RDZWxsV2lkdGgoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVGFibGUpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnNlbGVjdGVkVGFibGUucm93c1tpXS5jZWxscy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzW2ldLmNlbGxzW2pdLnN0eWxlLndpZHRoID0gZXZlbnQudGFyZ2V0LnZhbHVlICsgJ3B4JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkanVzdENlbGxIZWlnaHQoZXZlbnQ6IGFueSkge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkVGFibGUpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnNlbGVjdGVkVGFibGUucm93c1tpXS5jZWxscy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzW2ldLmNlbGxzW2pdLnN0eWxlLmhlaWdodCA9IGV2ZW50LnRhcmdldC52YWx1ZSArICdweCc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENhcmV0VG9FbmQoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgaWYgKHNlbCkge1xuICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpO1xuICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTtcbiAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgc2VsLmFkZFJhbmdlKHJhbmdlKTtcbiAgICB9XG4gIH1cblxuICAvLyBvcGVuQ29sb3JQaWNrZXIoaW5wdXRJZDogc3RyaW5nKSB7XG4gIC8vICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCk7XG4gIC8vICAgaWYgKGlucHV0RWxlbWVudCkge1xuICAvLyAgICAgaW5wdXRFbGVtZW50LmNsaWNrKCk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLy8gc2V0VGV4dENvbG9yKGV2ZW50OiBhbnkpIHtcbiAgLy8gICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIC8vICAgaWYgKGVkaXRvcikge1xuICAvLyAgICAgZWRpdG9yLmZvY3VzKCk7XG4gIC8vICAgICBjb25zdCBjb2xvciA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgLy8gICAgIHRoaXMuc2VsZWN0ZWRUZXh0Q29sb3IgPSBjb2xvcjtcbiAgLy8gICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb3JlQ29sb3InLCBmYWxzZSwgY29sb3IpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8vIHNldEJhY2tncm91bmRDb2xvcihldmVudDogYW55KSB7XG4gIC8vICAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICAvLyAgIGlmIChlZGl0b3IpIHtcbiAgLy8gICAgIGVkaXRvci5mb2N1cygpO1xuICAvLyAgICAgY29uc3QgY29sb3IgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIC8vICAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGNvbG9yO1xuICAvLyAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2hpbGl0ZUNvbG9yJywgZmFsc2UsIGNvbG9yKTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICBwcml2YXRlIHNhdmVkU2VsZWN0aW9uOiBSYW5nZSB8IG51bGwgPSBudWxsO1xuXG5vcGVuQ29sb3JQaWNrZXIoaW5wdXRJZDogc3RyaW5nKSB7XG4gIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gIGlmIChpbnB1dEVsZW1lbnQpIHtcbiAgICAvLyBTYXZlIHRoZSBjdXJyZW50IHNlbGVjdGlvblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xuICAgICAgdGhpcy5zYXZlZFNlbGVjdGlvbiA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuICAgIH1cbiAgICBpbnB1dEVsZW1lbnQuY2xpY2soKTtcbiAgfVxufVxuXG5zZXRUZXh0Q29sb3IoZXZlbnQ6IGFueSkge1xuICBpZiAodGhpcy5zYXZlZFNlbGVjdGlvbikge1xuICAgIGNvbnN0IGNvbG9yID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIHRoaXMuc2VsZWN0ZWRUZXh0Q29sb3IgPSBjb2xvcjtcblxuICAgIC8vIFJlc3RvcmUgdGhlIHNhdmVkIHNlbGVjdGlvblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UodGhpcy5zYXZlZFNlbGVjdGlvbik7XG5cbiAgICAgIC8vIEFwcGx5IHRoZSBjb2xvciB1c2luZyBhIHNwYW5cbiAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5zYXZlZFNlbGVjdGlvbjtcbiAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICBzcGFuLnN0eWxlLmNvbG9yID0gY29sb3I7XG4gICAgICBzcGFuLnRleHRDb250ZW50ID0gcmFuZ2UudG9TdHJpbmcoKTtcblxuICAgICAgLy8gUmVwbGFjZSB0aGUgc2VsZWN0ZWQgdGV4dCB3aXRoIHRoZSBzdHlsZWQgc3BhblxuICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgICAgIHJhbmdlLmluc2VydE5vZGUoc3Bhbik7XG5cbiAgICAgIC8vIENsZWFyIHRoZSBzYXZlZCBzZWxlY3Rpb25cbiAgICAgIHRoaXMuc2F2ZWRTZWxlY3Rpb24gPSBudWxsO1xuICAgIH1cbiAgfVxufVxuXG4gIHNldEJhY2tncm91bmRDb2xvcihldmVudDogYW55KSB7XG4gIGlmICh0aGlzLnNhdmVkU2VsZWN0aW9uKSB7XG4gICAgY29uc3QgY29sb3IgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjtcblxuICAgIC8vIFJlc3RvcmUgdGhlIHNhdmVkIHNlbGVjdGlvblxuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UodGhpcy5zYXZlZFNlbGVjdGlvbik7XG5cbiAgICAgIC8vIEFwcGx5IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHVzaW5nIGEgc3BhblxuICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnNhdmVkU2VsZWN0aW9uO1xuICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHNwYW4uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gY29sb3I7XG4gICAgICBzcGFuLnRleHRDb250ZW50ID0gcmFuZ2UudG9TdHJpbmcoKTtcblxuICAgICAgLy8gUmVwbGFjZSB0aGUgc2VsZWN0ZWQgdGV4dCB3aXRoIHRoZSBzdHlsZWQgc3BhblxuICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgICAgIHJhbmdlLmluc2VydE5vZGUoc3Bhbik7XG5cbiAgICAgIC8vIENsZWFyIHRoZSBzYXZlZCBzZWxlY3Rpb25cbiAgICAgIHRoaXMuc2F2ZWRTZWxlY3Rpb24gPSBudWxsO1xuICAgIH1cbiAgfVxuICB9XG4gIFxuICAvLyBjb2xvckNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAvLyAgIHRoaXMuY29sb3IgPSBldmVudC5jb2xvci5oZXg7IFxuICAvLyB9XG5cbiAgcHVibGljIGxvZ0V2ZW50KGV2ZW50OiBhbnksIHRyaWdnZXI6IGFueSkge1xuICAgIGNvbnN0IGNvbG9yID0gZXZlbnQ7XG4gICAgdGhpcy5zZXRUZXh0Q29sb3IoY29sb3IpXG4gICAgdGhpcy5zZWxlY3RlZFRleHRDb2xvciA9IGV2ZW50XG4gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2ZvcmVDb2xvcicsIGZhbHNlLCBldmVudCk7XG4gICAgLy8gdGhpcy5sb2dzLnVuc2hpZnQoW3RoaXMubG9ncy5sZW5ndGggKyAxLCB0cmlnZ2VyLCBldmVudF0pO1xuICB9XG4gIFxuXG4gIGVkaXRJbWFnZSgpIHtcbiAgICBsZXQgZGF0YSBcbiAgICBjb25zb2xlLmxvZygndGhpcy5lZGl0b3JGcm9tID0nLHRoaXMuZWRpdG9yRnJvbSlcbiAgICBzd2l0Y2ggKHRoaXMuZWRpdG9yRnJvbS5uYW1lKSB7XG4gICAgICBjYXNlICdzZWN0aW9uLWNvbnRlbnQnOlxuICAgICAgICBkYXRhID0geyBlZGl0SU1HOiB0cnVlLCBmcm9tOiAnaHRtbEVkaXRvcicsIGluZGV4OiB0aGlzLnNlbGVjdGVkSXRlbUluZGV4LCBpZDogdGhpcy5lZGl0b3JGcm9tLmlkIH07XG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhOiBzdHJpbmcgPSBjb21wcmVzcyhKU09OLnN0cmluZ2lmeSh0aGlzLmltYWdlRWRpdFVybCkpO1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdlZGl0SW1hZ2VGcm9tVGVtcCcsIGNvbXByZXNzZWREYXRhKTtcbiAgICAgICAgY29uc3QgY29tcHJlc3NlZERhdGEyID0gY29tcHJlc3MoSlNPTi5zdHJpbmdpZnkodGhpcy5zYW5pdGl6ZWRDb250ZW50KSk7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3RleHRFZGl0b3InLCBjb21wcmVzc2VkRGF0YTIpO1xuICAgICAgICAvLyBhbGVydCgnZ28gdG8gZWRpdG9yIScpXG4gICAgICAgIHRoaXMubmF2aWdhdGVUb0lNR0VkaXRvcihkYXRhKTtcbiAgICAgICAgdGhpcy5pbWFnZUVkaXQuZW1pdCgpXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY3JlYXRlLWRvY3VtZW50JzpcbiAgICAgICAgdGhpcy5pbWFnZUVkaXQuZW1pdCgpXG4gICAgICAgIGRhdGEgPSB7IGVkaXRJTUc6IHRydWUsIGZyb206ICdjcmVhdGVEb2N1bWVudCcsIGluZGV4OiB0aGlzLnNlbGVjdGVkSXRlbUluZGV4LCBpZDogdGhpcy5lZGl0b3JGcm9tLmlkLCBzZWN0aW9uOiB0aGlzLmVkaXRvckZyb20uc2VjdGlvbiwgcmVwb3J0U2VjdGlvbklkOiB0aGlzLmVkaXRvckZyb20ucmVwb3J0U2VjdGlvbklkIH07XG4gICAgICAgIC8vIHRoaXMub3BlbkRpYWxvZyhkYXRhKVxuICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YTMgPSBjb21wcmVzcyhKU09OLnN0cmluZ2lmeSh0aGlzLmltYWdlRWRpdFVybCkpO1xuICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YTQgPSBjb21wcmVzcyh0aGlzLmVkaXRvclRleHQpO1xuXG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2VkaXRJbWFnZUZyb21UZW1wMicsIGNvbXByZXNzZWREYXRhMyk7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3RleHRFZGl0b3IyJywgY29tcHJlc3NlZERhdGE0KTtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvSU1HRWRpdG9yKGRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG51bGxcbiAgICAgICAgLy8gc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnZWRpdEltYWdlRnJvbVRlbXAnKTtcbiAgICAgICAgLy8gc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnZWRpdEltYWdlRnJvbVRlbXAyJyk7XG4gICAgICAgIC8vIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3RlbXBsYXRlRWRpdG9yJyk7XG4gICAgICAgIC8vIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3RleHRFZGl0b3InKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC8vIGlmICh0aGlzLmVkaXRvckZyb20gPT09ICdzZWN0aW9uLWNvbnRlbnQnKSB7XG4gICAgLy8gICBjb25zdCBkYXRhID0ge2VkaXRJTUc6IHRydWUsIGZyb206ICdodG1sRWRpdG9yJywgaW5kZXg6IHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXh9XG4gICAgLy8gICB0aGlzLm5hdmlnYXRlVG9JTUdFZGl0b3IoZGF0YSlcbiAgICAvLyAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2VkaXRJbWFnZUZyb21UZW1wJywgSlNPTi5zdHJpbmdpZnkodGhpcy5pbWFnZUVkaXRVcmwpKVxuICAgIC8vICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgndGV4dEVkaXRvcicsIHRoaXMuZWRpdG9yVGV4dClcbiAgICAvLyB9IFxuICAgIFxuICB9XG5cbiAgb3BlbkRpYWxvZyggaXRlbTogYW55KTogdm9pZCB7XG4gICAgLy8gbGV0IGRhdGE6IGFueTtcbiAgICAvLyAgIGRhdGEgPSBpdGVtXG4gICAgLy8gY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihJbWFnZUVkaXRvck1vZGFsQ29tcG9uZW50LHtcbiAgICAvLyAgIG1pbldpZHRoOiAnMTAwJScsIG1pbkhlaWdodDogJzEwMHZoJywgcGFuZWxDbGFzczogJ3RoZW1lLTJCMjkzNicgLGRpc2FibGVDbG9zZTogdHJ1ZSwgZGF0YTogZGF0YVxuICAgIC8vIH0pO1xuICAgIC8vIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgIC8vICAgY29uc29sZS5sb2coJ3Jlc3VsdCA9PT0+IGltZyA9ICcsIHJlc3VsdClcbiAgICAvLyAgIGNvbnN0IGltZ1VybCA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2VkaXRJbWFnZUZyb21UZW1wMicpO1xuICAgIC8vICAgICBpZiAoaW1nVXJsKSB7XG4gICAgLy8gICAgICAgdGhpcy5yZXBsYWNlSW1hZ2VTcmMoaW1nVXJsLCAgcmVzdWx0LmluZGV4LmluZGV4KTtcbiAgICAvLyAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdlZGl0SW1hZ2VGcm9tVGVtcDInKTtcbiAgICAvLyAgICAgfVxuICAgIC8vIH0pO1xuICB9XG5cbiAgcmVwbGFjZUltYWdlU1JDKG5ld1NyYzogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcodGhpcy5lZGl0b3JUZXh0LCAndGV4dC9odG1sJyk7XG4gICAgY29uc3QgaW1nVGFncyA9IGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJyk7XG5cbiAgaWYgKGltZ1RhZ3MgJiYgaW1nVGFncy5sZW5ndGggPiAwKSB7XG4gICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCBpbWdUYWdzLmxlbmd0aCkge1xuICAgICAgLy8gVXBkYXRlIHRoZSBzcmMgYXR0cmlidXRlIG9mIHRoZSBpbWcgYXQgdGhlIHNwZWNpZmllZCBpbmRleFxuICAgICAgXG4gICAgICBpbWdUYWdzW2luZGV4XS5zZXRBdHRyaWJ1dGUoJ3NyYycsIG5ld1NyYyk7XG4gICAgICB0aGlzLmVkaXRvclRleHQgPSBkb2MuYm9keS5pbm5lckhUTUw7XG4gICAgXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEludmFsaWQgaW5kZXggJHtpbmRleH0uIFRoZXJlIGFyZSBvbmx5ICR7aW1nVGFncy5sZW5ndGh9IDxpbWc+IHRhZ3MuYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoJ05vIDxpbWc+IHRhZ3MgZm91bmQgaW4gdGhlIGVkaXRvciB0ZXh0LicpO1xuICB9XG4gIH1cblxuICBuYXZpZ2F0ZVRvSU1HRWRpdG9yKGRhdGE6IGFueSkge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2FkbWluL2ltYWdlLWVkaXRvciddLCB7IHF1ZXJ5UGFyYW1zOiB7ZGF0YSA6IEpTT04uc3RyaW5naWZ5KGRhdGEpfSB9KVxuICB9XG5cbiAgLy8gIG9uVGV4dFNlbGVjdChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAvLyAgIGlmICh0aGlzLnRvb2xiYXJNb2RlID09PSAnYnViYmxlJykge1xuICAvLyAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAvLyAgICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcbiAgLy8gICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcbiAgLy8gICAgICAgaWYgKCFyYW5nZS5jb2xsYXBzZWQpIHtcbiAgLy8gICAgICAgICBjb25zdCByZWN0ID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIC8vICAgICAgICAgdGhpcy50b29sYmFyVG9wID0gcmVjdC5ib3R0b20gKyB3aW5kb3cuc2Nyb2xsWSArIDEwO1xuICAvLyAgICAgICAgIHRoaXMudG9vbGJhckxlZnQgPSByZWN0LmxlZnQgKyB3aW5kb3cuc2Nyb2xsWCArIChyZWN0LndpZHRoIC8gMikgLSA1MDtcbiAgLy8gICAgICAgICB0aGlzLnNob3dUb29sYmFyID0gdHJ1ZTtcbiAgLy8gICAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgICB0aGlzLnNob3dUb29sYmFyID0gZmFsc2U7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vIH1cblxuIG9uVGV4dFNlbGVjdChldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgaWYgKHRoaXMudG9vbGJhck1vZGUgPT09ICdidWJibGUnKSB7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XG4gICAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuICAgICAgaWYgKCFyYW5nZS5jb2xsYXBzZWQpIHtcbiAgICAgICAgY29uc3QgcmVjdCA9IHJhbmdlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBzY3JvbGxZID0gIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7XG4gICAgICAgIGNvbnN0IHNjcm9sbFggPSAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIHRoaXMudG9vbGJhclRvcCA9IHJlY3QudG9wICsgc2Nyb2xsWSAtIDc1O1xuICAgICAgICB0aGlzLnRvb2xiYXJMZWZ0ID0gcmVjdC5sZWZ0ICsgc2Nyb2xsWCArIChyZWN0LndpZHRoIC8gMikgLSAzMjU7XG4gICAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zaG93VG9vbGJhciA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dUb29sYmFyID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG5cblxuLy8gb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbi8vICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuLy8gICAgIGNvbnN0IGNsaXBib2FyZERhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhO1xuLy8gICAgIGlmIChjbGlwYm9hcmREYXRhKSB7XG4vLyAgICAgICBjb25zdCBwYXN0ZWRUZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG4vLyAgICAgICBpZiAodGhpcy5pc1RhYmxlRGF0YShwYXN0ZWRUZXh0KSkge1xuLy8gICAgICAgICBjb25zdCBodG1sID0gdGhpcy5jb252ZXJ0VGV4dFRvVGFibGUocGFzdGVkVGV4dCk7XG4vLyAgICAgICAgIHRoaXMuaW5zZXJ0SHRtbEF0Q2FyZXQoaHRtbCk7XG4vLyAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICB0aGlzLmluc2VydEh0bWxBdENhcmV0KHBhc3RlZFRleHQpO1xuLy8gICAgICAgfVxuLy8gICAgIH1cbi8vICAgfVxuXG4gIC8vIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSB7XG4gIC8vICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgLy8gICBjb25zdCBjbGlwYm9hcmREYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YTtcbiAgLy8gICBpZiAoY2xpcGJvYXJkRGF0YSkge1xuICAvLyAgICAgLy8gSGFuZGxlIGltYWdlIGRhdGFcbiAgLy8gICAgIGNvbnN0IGl0ZW1zID0gY2xpcGJvYXJkRGF0YS5pdGVtcztcbiAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgICAgaWYgKGl0ZW1zW2ldLnR5cGUuc3RhcnRzV2l0aCgnaW1hZ2UvJykpIHtcbiAgLy8gICAgICAgICBjb25zdCBmaWxlID0gaXRlbXNbaV0uZ2V0QXNGaWxlKCk7XG4gIC8vICAgICAgICAgaWYgKGZpbGUpIHtcbiAgLy8gICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gIC8vICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAvLyAgICAgICAgICAgICBjb25zdCBpbWdIdG1sID0gYDxpbWcgc3JjPVwiJHtlLnRhcmdldC5yZXN1bHR9XCIgYWx0PVwiUGFzdGVkIEltYWdlXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDEwMCU7XCIvPmA7XG4gIC8vICAgICAgICAgICAgIHRoaXMuaW5zZXJ0SHRtbEF0Q2FyZXQoaW1nSHRtbCk7XG4gIC8vICAgICAgICAgICB9O1xuICAvLyAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gIC8vICAgICAgICAgICByZXR1cm47IC8vIEV4aXQgaWYgYW4gaW1hZ2UgaXMgaGFuZGxlZFxuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfVxuICAvLyAgICAgfVxuXG4gIC8vICAgICAvLyBIYW5kbGUgdGV4dCBvciB0YWJsZSBkYXRhXG4gIC8vICAgICBjb25zdCBwYXN0ZWRUZXh0ID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJyk7XG4gIC8vICAgICBpZiAodGhpcy5pc1RhYmxlRGF0YShwYXN0ZWRUZXh0KSkge1xuICAvLyAgICAgICBjb25zdCBodG1sID0gdGhpcy5jb252ZXJ0VGV4dFRvVGFibGUocGFzdGVkVGV4dCk7XG4gIC8vICAgICAgIHRoaXMuaW5zZXJ0SHRtbEF0Q2FyZXQoaHRtbCk7XG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICB0aGlzLmluc2VydEh0bWxBdENhcmV0KHBhc3RlZFRleHQpO1xuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gfVxuXG4gIG9uUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBjb25zdCBjbGlwYm9hcmREYXRhID0gZXZlbnQuY2xpcGJvYXJkRGF0YTtcbiAgICBpZiAoY2xpcGJvYXJkRGF0YSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjbGlwYm9hcmREYXRhLml0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBjbGlwYm9hcmREYXRhLml0ZW1zW2ldO1xuXG4gICAgICAgIGlmIChpdGVtLnR5cGUuc3RhcnRzV2l0aChcImltYWdlL1wiKSkge1xuICAgICAgICAgIC8vIEhhbmRsZSBpbWFnZSBwYXN0ZVxuICAgICAgICAgIGNvbnN0IGZpbGUgPSBpdGVtLmdldEFzRmlsZSgpO1xuICAgICAgICAgIGlmIChmaWxlKSB7XG4gICAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaW1nSHRtbCA9IGA8aW1nIHNyYz1cIiR7ZS50YXJnZXQucmVzdWx0fVwiIGFsdD1cIlBhc3RlZCBJbWFnZVwiIHN0eWxlPVwibWF4LXdpZHRoOiAxMDAlO1wiIC8+YDtcbiAgICAgICAgICAgICAgdGhpcy5pbnNlcnRIdG1sQXRDYXJldChpbWdIdG1sKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSBcInRleHQvaHRtbFwiKSB7XG4gICAgICAgICAgLy8gSGFuZGxlIEhUTUwgcGFzdGVcbiAgICAgICAgICAvLyBjb25zdCBodG1sRGF0YSA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YShcInRleHQvaHRtbFwiKTtcbiAgICAgICAgICBpZiAodGhpcy5pc1RhYmxlRGF0YShjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvaHRtbCcpKSkge1xuICAgICAgICAgICAgY29uc3QgaHRtbCA9IHRoaXMuY29udmVydFRleHRUb1RhYmxlKGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9odG1sJykpO1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRIdG1sQXRDYXJldChodG1sKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRIdG1sQXRDYXJldChjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvaHRtbCcpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gdGhpcy5pbnNlcnRIdG1sQXRDYXJldChodG1sRGF0YSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gXCJ0ZXh0L3BsYWluXCIpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgcGxhaW4gdGV4dCBwYXN0ZVxuICAgICAgICAgIGlmICh0aGlzLmlzVGFibGVEYXRhKGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpKSkge1xuICAgICAgICAgICAgY29uc3QgaHRtbCA9IHRoaXMuY29udmVydFRleHRUb1RhYmxlKGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpKTtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0SHRtbEF0Q2FyZXQoaHRtbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0SHRtbEF0Q2FyZXQoY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBjb25zdCBwbGFpblRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoXCJ0ZXh0L3BsYWluXCIpO1xuICAgICAgICAgIC8vIHRoaXMuaW5zZXJ0SHRtbEF0Q2FyZXQocGxhaW5UZXh0KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpc0V4Y2VsRGF0YShodG1sOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaHRtbC5pbmNsdWRlcygneG1sbnM6bz1cInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZVwiJykgfHwgXG4gICAgICAgICAgaHRtbC5pbmNsdWRlcygneG1sbnM6eD1cInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOmV4Y2VsXCInKTtcbiAgfVxuXG4gIGNvbnZlcnRFeGNlbEh0bWxUb1RhYmxlKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xuICAgIGNvbnN0IGRvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoaHRtbCwgJ3RleHQvaHRtbCcpO1xuICAgIGNvbnN0IHRhYmxlID0gZG9jLnF1ZXJ5U2VsZWN0b3IoJ3RhYmxlJyk7XG4gICAgcmV0dXJuIHRhYmxlID8gdGFibGUub3V0ZXJIVE1MIDogJyc7IC8vIEV4dHJhY3Qgb25seSB0aGUgdGFibGUgcGFydFxuICB9XG5cblxuXG5cbiAgaXNUYWJsZURhdGEodGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgcm93cyA9IHRleHQuc3BsaXQoJ1xcbicpO1xuICAgIHJldHVybiByb3dzLmxlbmd0aCA+IDEgJiYgcm93c1swXS5zcGxpdCgnXFx0JykubGVuZ3RoID4gMTtcbiAgfVxuXG4gIGNvbnZlcnRUZXh0VG9UYWJsZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJvd3MgPSB0ZXh0LnNwbGl0KCdcXG4nKS5maWx0ZXIocm93ID0+IHJvdy50cmltKCkgIT09ICcnKTtcbiAgICBjb25zdCB0YWJsZVJvd3MgPSByb3dzLm1hcChyb3cgPT4ge1xuICAgICAgY29uc3QgY2VsbHMgPSByb3cuc3BsaXQoJ1xcdCcpLm1hcChjZWxsID0+IGA8dGQgY2xhc3M9XCJweC0xIHB5LTFcIiA+JHtjZWxsfTwvdGQ+YCkuam9pbignJyk7XG4gICAgICByZXR1cm4gYDx0ciBjbGFzcz1cInRhYmxlLWJvcmRlci10b3BcIiBzdHlsZT1cImJvcmRlci10b3A6ICR7dGhpcy50aGVtZU1vZGVUYWJsZUJvcmRlclRvcCgpfVwiPiR7Y2VsbHN9PC90cj5gO1xuICAgIH0pLmpvaW4oJycpO1xuICAgIHJldHVybiBgPHRhYmxlPiR7dGFibGVSb3dzfTwvdGFibGU+YDtcbiAgfVxuXG4gIGluc2VydEh0bWxBdENhcmV0KGh0bWw6IHN0cmluZykge1xuICAgIGNvbnN0IHJhbmdlID0gd2luZG93LmdldFNlbGVjdGlvbigpPy5nZXRSYW5nZUF0KDApO1xuICAgIGlmIChyYW5nZSkge1xuICAgICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTtcbiAgICAgIGNvbnN0IHRlbXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHRlbXBEaXYuaW5uZXJIVE1MID0gaHRtbDtcbiAgICAgIGNvbnN0IGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgICBsZXQgbm9kZTtcbiAgICAgIHdoaWxlICgobm9kZSA9IHRlbXBEaXYuZmlyc3RDaGlsZCkpIHtcbiAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIH1cbiAgICAgIHJhbmdlLmluc2VydE5vZGUoZnJhZyk7XG4gICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgdGhlbWVNb2RlVGFibGVCb3JkZXJUb3AoKSB7XG4gICAgY29uc3QgY2xyTW9kZSA9IGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCdkYXRhLWxheW91dC1jb2xvcicpXG4gICAgaWYgKGNsck1vZGUgPT0gJ2RhcmsnKSB7XG4gICAgICByZXR1cm4gJzFweCBzb2xpZCAjRDBEMEQwOyAhaW1wb3J0YW50J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJzFweCBzb2xpZCAjNDE0MTQxICFpbXBvcnRhbnQnXG4gICAgfVxuICB9XG5cbiBcbiAgcHVibGljIG9wZW5GdWxsc2NyZWVuKCkge1xuICAgIHZhciBlbGVtOiBhbnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRleHRFZGl0b3JcIik7XG4gICAgdGhpcy5pc0Z1bGxTY3JlZW4gPSB0cnVlO1xuICAgIGlmIChlbGVtLnJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICBlbGVtLnJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgfSBlbHNlIGlmIChlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKSB7XG4gICAgICBlbGVtLm1velJlcXVlc3RGdWxsU2NyZWVuKCk7XG4gICAgfSBlbHNlIGlmIChlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICBlbGVtLndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgfSBlbHNlIGlmIChlbGVtLm1zUmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgIGVsZW0ubXNSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgIH1cbiAgICB0aGlzLnN0eWxlID0ge1xuICAgICAgJ21pbi1oZWlnaHQnOiAnOTB2aCcsXG4gICAgICAnbWF4LWhlaWdodCc6ICc5MHZoJyxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2xvc2VGdWxsc2NyZWVuKCkge1xuICAgIGlmIChkb2N1bWVudC5leGl0RnVsbHNjcmVlbikge1xuICAgICAgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTtcbiAgICAgIHRoaXMuaXNGdWxsU2NyZWVuID0gZmFsc2U7XG4gICAgICB0aGlzLnN0eWxlID0ge1xuICAgICAgICAnbWluLWhlaWdodCc6ICc0MDBweCcsXG4gICAgICAgICdtYXgtaGVpZ2h0JzogJzQwMHB4JyxcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgXG4gIGNsZWFyVGV4dEVkaXRvcigpIHtcbiAgICB0aGlzLmVkaXRvclRleHRDbGVhci5lbWl0KClcbiAgfVxuXG4gIHNldHVwSGlzdG9yeSgpIHtcbiAgICB0aGlzLnNhdmVTdGF0ZSgpO1xuICAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIFxuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHRoaXMub25JbnB1dCgpKTtcbiAgICB9XG4gIH1cblxuICBvbklucHV0KCkge1xuICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gIH1cblxuICBzYXZlU3RhdGUoKSB7XG4gICAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICBcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICBjb25zdCBlZGl0b3JDb250ZW50ID0gZWRpdG9yLmlubmVySFRNTDtcbiAgICAgIGlmICh0aGlzLmhpc3RvcnlJbmRleCA9PT0gdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5LnB1c2goZWRpdG9yQ29udGVudCk7XG4gICAgICAgIHRoaXMucmVkb1N0YWNrID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhpc3RvcnkgPSB0aGlzLmhpc3Rvcnkuc2xpY2UoMCwgdGhpcy5oaXN0b3J5SW5kZXggKyAxKTtcbiAgICAgICAgdGhpcy5oaXN0b3J5LnB1c2goZWRpdG9yQ29udGVudCk7XG4gICAgICAgIHRoaXMucmVkb1N0YWNrID0gW107XG4gICAgICB9XG4gICAgICB0aGlzLmhpc3RvcnlJbmRleCsrO1xuICAgIH1cbiAgfVxuICB1bmRvKCkge1xuICAgIGlmICh0aGlzLmhpc3RvcnlJbmRleCA+IDApIHtcbiAgICAgIHRoaXMucmVkb1N0YWNrLnB1c2godGhpcy5oaXN0b3J5W3RoaXMuaGlzdG9yeUluZGV4XSk7XG4gICAgICB0aGlzLmhpc3RvcnlJbmRleC0tO1xuICAgICAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICBcbiAgICAgIGlmIChlZGl0b3IpIHtcbiAgICAgICAgdGhpcy5zYW5pdGl6ZWRDb250ZW50ID0gdGhpcy5oaXN0b3J5W3RoaXMuaGlzdG9yeUluZGV4XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZWRvKCkge1xuICAgIGlmICh0aGlzLnJlZG9TdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCByZWRvQ29udGVudCA9IHRoaXMucmVkb1N0YWNrLnBvcCgpO1xuICAgICAgdGhpcy5oaXN0b3J5LnB1c2gocmVkb0NvbnRlbnQhKTtcbiAgICAgIHRoaXMuaGlzdG9yeUluZGV4Kys7XG4gICAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIFxuICAgICAgaWYgKGVkaXRvcikge1xuICAgICAgICB0aGlzLnNhbml0aXplZENvbnRlbnQgPSByZWRvQ29udGVudCE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0VGV4dFdpdGhEYXRlcyh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAvLyBSZWd1bGFyIGV4cHJlc3Npb24gdG8gZGV0ZWN0IFlZWVktTU0tREQgZm9ybWF0dGVkIGRhdGVzXG4gIGNvbnN0IGRhdGVSZWdleCA9IC9cXGJcXGR7NH0tXFxkezJ9LVxcZHsyfVxcYi9nO1xuXG4gIC8vIFJlcGxhY2UgZm91bmQgZGF0ZXMgd2l0aCBhIGZvcm1hdHRlZCB2ZXJzaW9uXG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoZGF0ZVJlZ2V4LCAoZGF0ZVN0cikgPT4ge1xuICAgIC8vIENvbnZlcnQgdGhlIGRldGVjdGVkIGRhdGUgc3RyaW5nIGludG8gYSBEYXRlIG9iamVjdFxuICAgIGNvbnN0IGRhdGVPYmogPSBuZXcgRGF0ZShkYXRlU3RyKTtcbiAgICBcbiAgICAvLyBGb3JtYXQgdGhlIGRhdGUgdG8gJ01vbnRoIERheSwgWWVhcicgKGUuZy4sIE9jdG9iZXIgMTAsIDIwMjQpXG4gICAgcmV0dXJuIGRhdGVPYmoudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycsIHtcbiAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICBkYXk6ICdudW1lcmljJyxcbiAgICB9KTtcbiAgfSk7XG59XG5cbn0iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyIGVscy10ZXh0LWVkaXRvciBweC0wXCIgaWQ9XCJ0ZXh0RWRpdG9yXCIgI2Z1bGxzY3JlZW49XCJuZ3hGdWxsc2NyZWVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICN0ZXh0RWRpdG9yXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmd4RnVsbHNjcmVlbj5cclxuICAgIDxkaXYgKm5nSWY9XCJ0b29sYmFyTW9kZSA9PT0gJ2ZpeGVkJ1wiIGNsYXNzPVwiYnRuLXRvb2xiYXIgZWxzLWJ0bi10b29sYmFyIHAtMiBweS0yIG1iLTBcIiByb2xlPVwidG9vbGJhclwiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRoZW1lTW9kZUJnQ2xyKClcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICdwb2ludGVyLWV2ZW50cyc6IGRpc2FibGVUb29sYmFyID8gJ25vbmUnIDogJ2F1dG8nLFxyXG4gICAgJ2JvcmRlci10b3AtbGVmdC1yYWRpdXMnOiBJc09wZW4gPyAnMCcgOiAnMjBweCcsXHJcbiAgICAnYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMnOiBJc09wZW4gPyAnMCcgOiAnMjBweCdcclxufVwiXHJcbmFyaWEtbGFiZWw9XCJUb29sYmFyIHdpdGggYnV0dG9uIGdyb3Vwc1wiXHJcbnN0eWxlPVwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMjBweCAhaW1wb3J0YW50OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMjBweCAhaW1wb3J0YW50O1wiXHJcbj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJIZWFkZXIgT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwiZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLWZvcm0tc2VsZWN0IGJvcmRlciBlbHMtdG9vbGJhci1kcm9wZG93bi1idXR0b24gZHJvcGRvd24tdG9nZ2xlIHRleHQtc3RhcnRcIiBbc3R5bGUuYm9yZGVyLXJhZGl1c109XCInNXB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXJEcm9wZG93blwiIFtzdHlsZS5ib3JkZXJdPVwidGhlbWVNb2RlKClcIiBbc3R5bGUuY29sb3JdPVwidGhlbWVNb2RlQ2xyKClcIiBuZ2JEcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NlbGVjdGVkRm9ybWF0QmxvY2sgfCB0aXRsZWNhc2V9fTwvc3Bhbj4gPGkgY2xhc3M9XCJtZGkgbWRpLWNoZXZyb24tZG93biBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImhlYWRlckRyb3Bkb3duXCIgY2xhc3M9XCJlbHMtdGV4dC1mb3JtYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGhlbWVNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwYi0wXCIgdHlwZT1cImJ1dHRvblwiIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxoMT4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDE+SGVhZGluZyAxPC9oMT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwYi0wXCIgdHlwZT1cImJ1dHRvblwiIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxoMj4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDI+SGVhZGluZyAyPC9oMj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwYi0wXCIgdHlwZT1cImJ1dHRvblwiIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxoMz4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDM+SGVhZGluZyAzPC9oMz5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwYi0wXCIgdHlwZT1cImJ1dHRvblwiIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxoND4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQ+SGVhZGluZyA0PC9oND5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwYi0wXCIgdHlwZT1cImJ1dHRvblwiIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxoNT4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDU+SGVhZGluZyA1PC9oNT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwYi0wXCIgdHlwZT1cImJ1dHRvblwiIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxoNj4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aDY+SGVhZGluZyA2PC9oNj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwYi0wXCIgdHlwZT1cImJ1dHRvblwiIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxwPicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPk5vcm1hbDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiRm9udCBPcHRpb25zXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPHNlbGVjdCBjbGFzcz1cImVscy1mb3JtLXNlbGVjdCBcIiBzdHlsZT1cIiBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7IGNvbG9yOiAjZmZmO2JvcmRlcjogMnB4IHNvbGlkICM3RDZENkQgIWltcG9ydGFudDtcIiBcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGb250XCIgKGNoYW5nZSk9XCJjaGFuZ2VGb250KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gY2xhc3M9XCJlbHMtZm9ybS1vcHRpb25cIiAqbmdGb3I9XCJsZXQgZm9udCBvZiBmb250c1wiIFt2YWx1ZV09XCJmb250XCI+e3sgZm9udCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY2xhc3M9XCJkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtZm9ybS1zZWxlY3QgYm9yZGVyIGVscy10b29sYmFyLWRyb3Bkb3duLWJ1dHRvbiBkcm9wZG93bi10b2dnbGUgdGV4dC1zdGFydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoZWFkZXJEcm9wZG93blwiIHN0eWxlPVwid2lkdGg6IDEwMHB4XCIgW3N0eWxlLmJvcmRlcl09XCJ0aGVtZU1vZGUoKVwiIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJ3aWR0aDogODVweDsgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50O1wiIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPnt7c2VsZWN0ZWRGb250IHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVjYXNlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWNoZXZyb24tZG93biBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImhlYWRlckRyb3Bkb3duXCIgY2xhc3M9XCJlbHMtdGV4dC1mb3JtYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5ib3JkZXJdPVwidGhlbWVNb2RlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbSBwYi0wXCIgdHlwZT1cImJ1dHRvblwiICpuZ0Zvcj1cImxldCBmb250IG9mIGZvbnRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nZUZvbnQoZm9udClcIiBbc3R5bGUuY29sb3JdPVwidGhlbWVNb2RlQ2xyKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZm9udCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHktMFwiICBzdHlsZT1cImhlaWdodDogZml0LWNvbnRlbnQ7XCIgW3N0eWxlLmNvbG9yXT1cInRoZW1lTW9kZUNscigpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtZS0yIG1yLTIgXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRleHQgRm9ybWF0dGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwiaXNCb2xkQWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdib2xkJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWJvbGRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImlzSXRhbGljQWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdpdGFsaWMnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtaXRhbGljXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1VuZGVybGluZUFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgndW5kZXJsaW5lJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LXVuZGVybGluZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwiaXNTdHJpa2V0aHJvdWdoQWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdzdHJpa2V0aHJvdWdoJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LXN0cmlrZXRocm91Z2gtdmFyaWFudFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUZXh0IENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIGlkPVwidGV4dENvbG9yUGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwJTsgbGVmdDogMDsgei1pbmRleDogMTAwOyBvcGFjaXR5OiAwO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VGV4dENvbG9yKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcigndGV4dENvbG9yUGlja2VyJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1jb2xvci10ZXh0IGljb24td2l0aC11bmRlcmxpbmVcIiBbc3R5bGUuY29sb3JdPVwic2VsZWN0ZWRUZXh0Q29sb3JcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiQmFja2dyb3VuZCBDb2xvclwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBbc3R5bGUuY29sb3JdPVwiYmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcignYmdDb2xvclBpY2tlcicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1hbHBoYS1hLWJveFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgaWQ9XCJiZ0NvbG9yUGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwJTsgbGVmdDogMDsgei1pbmRleDogMTAwOyBvcGFjaXR5OiAwO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0QmFja2dyb3VuZENvbG9yKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZlcnRpY2FsLWxpbmUgbXMtMiBib3JkZXJcIiBbc3R5bGUuYm9yZGVyLWxlZnRdPVwidGhlbWVNb2RlQ2xyVmVydGljYWxMaW5lKClcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRleHQgRm9ybWF0dGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ2luc2VydE9yZGVyZWRMaXN0JylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWxpc3QtbnVtYmVyZWRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdpbnNlcnRVbm9yZGVyZWRMaXN0JylcIj48aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWxpc3QtYnVsbGV0ZWRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwicWwtYWxpZ25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uICBhcnJvdy1ub25lIHRleHQtc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkcm9wZG93bkJhc2ljMVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWFsaWduLWxlZnQgXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duQmFzaWMxXCIgc3R5bGU9XCJ3aWR0aDogM3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uIHRleHQtZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdqdXN0aWZ5TGVmdCcpXCI+PGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1hbGlnbi1sZWZ0XCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uIHRleHQtZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdqdXN0aWZ5Q2VudGVyJylcIj48aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWFsaWduLWNlbnRlclwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvbiB0ZXh0LWRhcmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnanVzdGlmeVJpZ2h0JylcIj48aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWFsaWduLXJpZ2h0XCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uIHRleHQtZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdqdXN0aWZ5RnVsbCcpXCI+PGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1hbGlnbi1qdXN0aWZ5XCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtbGluZSBtcy0yIGJvcmRlclwiIFtzdHlsZS5ib3JkZXItbGVmdF09XCJ0aGVtZU1vZGVDbHJWZXJ0aWNhbExpbmUoKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBGb3JtYXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1N1YnNjcmlwdEFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnc3Vic2NyaXB0JylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LXN1YnNjcmlwdFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwiaXNTdXBlcnNjcmlwdEFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnc3VwZXJzY3JpcHQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtc3VwZXJzY3JpcHRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRleHQgRm9ybWF0dGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJhZGRMaW5rKClcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktbGluay12YXJpYW50XCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJpbnNlcnRzSW1hZ2UoKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1pbWFnZVwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGlkPVwiaW1hZ2VJbnB1dFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAoY2hhbmdlKT1cImhhbmRsZUltYWdlVXBsb2FkKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRhYmxlIE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiYWRkVGFibGUoKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS10YWJsZVwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpc1RhYmxlU2VsZWN0ZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZFJvdygpXCI+PGkgY2xhc3M9XCJtZGkgbWRpLXRhYmxlLXJvdy1wbHVzLWFmdGVyXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzVGFibGVTZWxlY3RlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlUm93KClcIj48aSBjbGFzcz1cIm1kaSBtZGktdGFibGUtcm93LXJlbW92ZVwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpc1RhYmxlU2VsZWN0ZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZENvbHVtbigpXCI+PGkgY2xhc3M9XCJtZGkgbWRpLXRhYmxlLWNvbHVtbi1wbHVzLWFmdGVyXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzVGFibGVTZWxlY3RlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQ29sdW1uKClcIj48aSBjbGFzcz1cIm1kaSBtZGktdGFibGUtY29sdW1uLXJlbW92ZVwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBGb3JtYXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cInVuZG8oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS11bmRvXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cInJlZG8oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1yZWRvXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRhYmxlIE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cInNlbGVjdGVkSW1hZ2VcIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uLTJcIiAoY2xpY2spPVwiZWRpdEltYWdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7XCI+RWRpdCBJbWFnZTwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJjbGVhclRleHRFZGl0b3IoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCIgd2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWNsb3NlLWNpcmNsZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRhYmxlIE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJ0b2dnbGVGdWxsc2NyZWVuMSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIklzT3BlbjsgZWxzZSBmdWxsc2NyZWVuSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZnVsbHNjcmVlbi1leGl0XCI+PC9pPiA8IS0tIENvbGxhcHNlIEljb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNmdWxsc2NyZWVuSWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZ1bGxzY3JlZW5cIj48L2k+IDwhLS0gRXhwYW5kIEljb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cInRvb2xiYXJNb2RlID09PSAnYnViYmxlJ1wiIGNsYXNzPVwiYnViYmxlLXRvb2xiYXIgYm9yZGVyIHAtMlwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwieyd0b3AucHgnOiB0b29sYmFyVG9wLCAnbGVmdC5weCc6IHRvb2xiYXJMZWZ0LCAnZGlzcGxheSc6IHNob3dUb29sYmFyID8gJ2Jsb2NrJyA6ICdub25lJ31cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiRm9udCBPcHRpb25zXCI+XHJcbiAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJlbHMtZm9ybS1zZWxlY3RcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRm9udFwiIChjaGFuZ2UpPVwiY2hhbmdlRm9udCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBmb250IG9mIGZvbnRzXCIgW3ZhbHVlXT1cImZvbnRcIj57eyBmb250IH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRleHQgRm9ybWF0dGluZ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc0JvbGRBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnYm9sZCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWJvbGRcIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc0l0YWxpY0FjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdpdGFsaWMnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1pdGFsaWNcIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1VuZGVybGluZUFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCd1bmRlcmxpbmUnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC11bmRlcmxpbmVcIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1N0cmlrZXRocm91Z2hBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnc3RyaWtldGhyb3VnaCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LXN0cmlrZXRocm91Z2gtdmFyaWFudFwiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUZXh0IEZvcm1hdHRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdibG9ja3F1b3RlJylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LXF1b3RlLWNsb3NlXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJpbnNlcnRDb2RlQmxvY2soKVwiPjxpIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktY29kZS10YWdzXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBGb3JtYXR0aW5nXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdpbnNlcnRPcmRlcmVkTGlzdCcpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWxpc3QtbnVtYmVyZWRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdpbnNlcnRVbm9yZGVyZWRMaXN0JylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtbGlzdC1idWxsZXRlZFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJDb2xvciBGb3JtYXR0aW5nXCI+IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRleHQgQ29sb3JcIj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cInFsLWFsaWduXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSBhcnJvdy1ub25lIHRleHQtc2Vjb25kYXJ5XCIgaWQ9XCJkcm9wZG93bkJhc2ljMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWNvbG9yLWZpbGxcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25CYXNpYzFcIiBzdHlsZT1cIndpZHRoOiAzMDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvbG9yLXNrZXRjaCBjb2xvcj1cIiNmZmZcIiAob25DaGFuZ2VDb21wbGV0ZSk9XCJzZXRUZXh0Q29sb3IoJGV2ZW50KVwiPjwvY29sb3Itc2tldGNoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b24gY3VzdG9tLWNvbG9yLXRyaWdnZXJcIiBuZ3gtY29sb3JzLXRyaWdnZXIgWyhuZ01vZGVsKV09XCJjb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibG9nRXZlbnQoJGV2ZW50LCAnbmdNb2RlbENoYW5nZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImxvZ0V2ZW50KCRldmVudCwgJ2NoYW5nZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwibG9nRXZlbnQoJGV2ZW50LCAnaW5wdXQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtY29sb3ItdGV4dCBpY29uLXdpdGgtdW5kZXJsaW5lXCIgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIntjb2xvcjogY29sb3J9XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZ3gtY29sb3JzIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiA+PC9uZ3gtY29sb3JzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIGlkPVwidGV4dENvbG9yUGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDAlOyBsZWZ0OiAwOyB6LWluZGV4OiAxMDA7IG9wYWNpdHk6IDA7XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldFRleHRDb2xvcigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKCd0ZXh0Q29sb3JQaWNrZXInKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtY29sb3ItdGV4dCBpY29uLXdpdGgtdW5kZXJsaW5lXCIgW3N0eWxlLmNvbG9yXT1cInNlbGVjdGVkVGV4dENvbG9yXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIkJhY2tncm91bmQgQ29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBpZD1cImJnQ29sb3JQaWNrZXJcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCIgKGNoYW5nZSk9XCJzZXRCYWNrZ3JvdW5kQ29sb3IoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcignYmdDb2xvclBpY2tlcicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWFscGhhLWEtYm94XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJCYWNrZ3JvdW5kIENvbG9yXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW3N0eWxlLmNvbG9yXT1cImJhY2tncm91bmRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Db2xvclBpY2tlcignYmdDb2xvclBpY2tlcicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWFscGhhLWEtYm94XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCBzdHlsZT1cIndpZHRoOiAwcHggIWltcG9ydGFudDtcIiBpZD1cImJnQ29sb3JQaWNrZXJcIiBbY3BQcmVzZXRDb2xvcnNdPVwiWycjZmZmJywgJyMwMDAnLCAnIzI4ODllOScsICcjZTkyMGU5JywgJyNmZmY1MDAnLCAncmdiKDIzNiw2NCw2NCknXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhjb2xvclBpY2tlcildPVwiY29sb3JcIiAoY2hhbmdlKT1cInNldEJhY2tncm91bmRDb2xvcigkZXZlbnQpXCIgLz4gLS0+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgaWQ9XCJiZ0NvbG9yUGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDAlOyBsZWZ0OiAwOyB6LWluZGV4OiAxMDA7IG9wYWNpdHk6IDA7XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNldEJhY2tncm91bmRDb2xvcigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiSGVhZGVyIE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvbiBkcm9wZG93bi10b2dnbGVcIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJoZWFkZXJEcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWhlYWRlci0xXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImhlYWRlckRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxoMT4nKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWhlYWRlci0xXCI+PC9pPiBIZWFkaW5nIDE8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGgyPicpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtaGVhZGVyLTJcIj48L2k+IEhlYWRpbmcgMjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8aDM+JylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1oZWFkZXItM1wiPjwvaT4gSGVhZGluZyAzPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxoND4nKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWhlYWRlci00XCI+PC9pPiBIZWFkaW5nIDQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGg1PicpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtaGVhZGVyLTVcIj48L2k+IEhlYWRpbmcgNTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8aDY+JylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1oZWFkZXItNlwiPjwvaT4gSGVhZGluZyA2PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIkhlYWRlciBPcHRpb25zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY2xhc3M9XCJkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItZHJvcGRvd24tYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZVwiIGlkPVwiaGVhZGVyRHJvcGRvd25cIlxyXG4gICAgICAgICAgICAgICAgICAgIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwid2lkdGg6IDg1cHg7XCI+e3tzZWxlY3RlZEZvcm1hdEJsb2NrIHwgdGl0bGVjYXNlfX08L3NwYW4+IDxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1jaGV2cm9uLWRvd24gdGV4dC1kYXJrXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJoZWFkZXJEcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGgxPicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5IZWFkaW5nIDE8L2gxPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGgyPicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5IZWFkaW5nIDI8L2gyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGgzPicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5IZWFkaW5nIDM8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGg0PicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND5IZWFkaW5nIDQ8L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGg1PicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5IZWFkaW5nIDU8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGg2PicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNj5IZWFkaW5nIDY8L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPHA+JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+Tm9ybWFsPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRleHQgRm9ybWF0dGluZ1wiPlxyXG4gICAgICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdzdXBlcnNjcmlwdCcpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1zdXBlcnNjcmlwdFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdzdWJzY3JpcHQnKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtc3Vic2NyaXB0XCI+PC9pPjwvYnV0dG9uPiAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwiaXNTdWJzY3JpcHRBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnc3Vic2NyaXB0JylcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtc3Vic2NyaXB0XCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwiaXNTdXBlcnNjcmlwdEFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdzdXBlcnNjcmlwdCcpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LXN1cGVyc2NyaXB0XCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUZXh0IEZvcm1hdHRpbmdcIj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cInFsLWFsaWduXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uIGFycm93LW5vbmUgdGV4dC1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiZHJvcGRvd25CYXNpYzFcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIiBuZ2JEcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWFsaWduLWxlZnQgXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bkJhc2ljMVwiIHN0eWxlPVwid2lkdGg6IDNweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnanVzdGlmeUxlZnQnKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWFsaWduLWxlZnRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ2p1c3RpZnlDZW50ZXInKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWFsaWduLWNlbnRlclwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnanVzdGlmeVJpZ2h0JylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1hbGlnbi1yaWdodFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnanVzdGlmeUZ1bGwnKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWFsaWduLWp1c3RpZnlcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRleHQgRm9ybWF0dGluZ1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgncmVtb3ZlRm9ybWF0JylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtY2xlYXJcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBGb3JtYXR0aW5nXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiYWRkTGluaygpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktbGluay12YXJpYW50XCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImluc2VydHNJbWFnZSgpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktaW1hZ2VcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGlkPVwiaW1hZ2VJbnB1dFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAoY2hhbmdlKT1cImhhbmRsZUltYWdlVXBsb2FkKCRldmVudClcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUYWJsZSBPcHRpb25zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiYWRkVGFibGUoKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLXRhYmxlXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiYWRkUm93KClcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS10YWJsZS1yb3ctcGx1cy1hZnRlclwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzVGFibGVTZWxlY3RlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSb3coKVwiPjxpIGNsYXNzPVwibWRpIG1kaS10YWJsZS1yb3ctcmVtb3ZlXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZENvbHVtbigpXCI+PGkgY2xhc3M9XCJtZGkgbWRpLXRhYmxlLWNvbHVtbi1wbHVzLWFmdGVyXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUNvbHVtbigpXCI+PGkgY2xhc3M9XCJtZGkgbWRpLXRhYmxlLWNvbHVtbi1yZW1vdmVcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGFibGUgT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2VsZWN0ZWRJbWFnZVwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b24tMlwiIChjbGljayk9XCJlZGl0SW1hZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtcIj5FZGl0IEltYWdlPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvbiBjdXN0b20tY29sb3ItdHJpZ2dlclwiPlxyXG4gICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtY29sb3ItdGV4dCBpY29uLXdpdGgtdW5kZXJsaW5lXCIgW3N0eWxlLmNvbG9yXT1cImNvbG9yXCI+PC9pPlxyXG4gICAgICAgIDxuZ3gtY29sb3JzIFsobmdNb2RlbCldPVwiY29sb3JcIiAoY2hhbmdlKT1cImNvbG9yQ2hhbmdlZCgkZXZlbnQpXCI+PC9uZ3gtY29sb3JzPlxyXG4gICAgPC9kaXY+IC0tPlxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwXCIgbmdiRHJvcGRvd24gYXJpYS1sYWJlbD1cIlRhYmxlIE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIG5nYkRyb3Bkb3duVG9nZ2xlICAoY2xpY2spPVwiYWRkVGFibGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10YWJsZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51ICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkIHx8IHRhYmxlQWRkZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJhZGRSb3coKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktdGFibGUtcm93LXBsdXMtYWZ0ZXJcIj48L2k+IEFkZCBSb3dcclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIChjbGljayk9XCJkZWxldGVSb3coKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktdGFibGUtcm93LXJlbW92ZVwiPjwvaT4gRGVsZXRlIFJvd1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cImFkZENvbHVtbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10YWJsZS1jb2x1bW4tcGx1cy1hZnRlclwiPjwvaT4gQWRkIENvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cImRlbGV0ZUNvbHVtbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10YWJsZS1jb2x1bW4tcmVtb3ZlXCI+PC9pPiBEZWxldGUgQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwidGFibGVXaWR0aFwiPlRhYmxlIFdpZHRoPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBpZD1cInRhYmxlV2lkdGhcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwiYWRqdXN0VGFibGVXaWR0aCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiV2lkdGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24taXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY2VsbFdpZHRoXCI+Q2VsbCBXaWR0aDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgaWQ9XCJjZWxsV2lkdGhcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwiYWRqdXN0Q2VsbFdpZHRoKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjZWxsSGVpZ2h0XCI+Q2VsbCBIZWlnaHQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGlkPVwiY2VsbEhlaWdodFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9XCJhZGp1c3RDZWxsSGVpZ2h0KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJIZWlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0gPGRpdiBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCIgaWQ9XCJlZGl0b3JcIiBjbGFzcz1cInAtMyBjdXN0b20tc2Nyb2xsYmFyIG5vbi1mb2N1c1wiICNlZGl0b3JcclxuICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDIwcHggIWltcG9ydGFudDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDIwcHggIWltcG9ydGFudDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMjBweCAhaW1wb3J0YW50O1wiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRoZW1lTW9kZUJnQ2xyKClcIiBbc3R5bGUuYm9yZGVyLXRvcF09XCJ0aGVtZU1vZGVCb3JkZXJUb3AoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwieydmb250LWZhbWlseSc6IHNlbGVjdGVkRm9udCwgJ2ZvbnQtc2l6ZSc6IHNlbGVjdGVkRm9udFNpemUgKyAncHgnfVwiIFtzdHlsZV09XCJzdHlsZVwiXHJcbiAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwiSXNPcGVuID8gJzg1dmggIWltcG9ydGFudCcgOiAgJzQwNXB4ICFpbXBvcnRhbnQnXCJcclxuICAgICAgICAoaW5wdXQpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCIgcGxhY2Vob2xkZXI9XCJJbnNlcnQgdGV4dCBoZXJlIC4uLlwiIHJlYWRvbmx5IChtb3VzZXVwKT1cIm9uVGV4dFNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICBbaW5uZXJIVE1MXT1cInNhbml0aXplZENvbnRlbnRcIiAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAoY2xpY2spPVwiY2hlY2tUYWJsZVNlbGVjdGlvbigkZXZlbnQpXCI+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICA8IS0tIDxkaXYgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiIGlkPVwiZWRpdG9yXCIgY2xhc3M9XCJwLTMgY3VzdG9tLXNjcm9sbGJhciBub24tZm9jdXMgb3ZlcmZsb3ctYXV0b1wiICNlZGl0b3JcclxuICAgICAgICAgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcclxuICAgICAgICAgICAgICAgXCIgW3N0eWxlLmJhY2tncm91bmRdPVwidGhlbWVNb2RlQmdDbHIoKVwiXHJcbiAgICAgICAgW3N0eWxlLmJvcmRlci10b3BdPVwidGhlbWVNb2RlQm9yZGVyVG9wKClcIlxyXG4gICAgICAgIFxyXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnZm9udC1mYW1pbHknOiBzZWxlY3RlZEZvbnQsICdmb250LXNpemUnOiBzZWxlY3RlZEZvbnRTaXplICsgJ3B4JyxcclxuICAgICAgICAgICAnYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyc6IGlzT3BlbiA/ICcwJyA6JzIwcHgnLFxyXG4gICAgICAgICAgICdib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyc6IGlzT3BlbiA/ICcwJyA6JzIwcHgnXHJcbiAgICAgICAgfVwiXHJcbiAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwiSXNPcGVuID8gJzkzdmgnIDogJzQwNXB4J1wiIChpbnB1dCk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIiBwbGFjZWhvbGRlcj1cIkluc2VydCB0ZXh0IGhlcmUgLi4uXCJcclxuICAgICAgICByZWFkb25seSAobW91c2V1cCk9XCJvblRleHRTZWxlY3QoJGV2ZW50KVwiIFtpbm5lckhUTUxdPVwic2FuaXRpemVkQ29udGVudFwiIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIlxyXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIChjbGljayk9XCJjaGVja1RhYmxlU2VsZWN0aW9uKCRldmVudClcIj5cclxuICAgIDwvZGl2PiAtLT5cclxuICAgIDxkaXYgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiIGlkPVwiZWRpdG9yXCIgY2xhc3M9XCJwLTMgY3VzdG9tLXNjcm9sbGJhciBub24tZm9jdXMgb3ZlcmZsb3ctYXV0b1wiICNlZGl0b3JcclxuICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OyBvdmVyZmxvdzogYXV0bztcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJ0aGVtZU1vZGVCZ0NscigpXCJcclxuICAgICAgICBbc3R5bGUuY29sb3JdPVwidGhlbWVNb2RlQ2xyKClcIlxyXG4gICAgICAgIFtzdHlsZS5ib3JkZXItdG9wXT1cInRoZW1lTW9kZUJvcmRlclRvcCgpXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgJ2ZvbnQtZmFtaWx5Jzogc2VsZWN0ZWRGb250LCBcclxuICAgICAgICAgICAgICAgICdmb250LXNpemUnOiBzZWxlY3RlZEZvbnRTaXplICsgJ3B4JyxcclxuICAgICAgICAgICAgICAgICdib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzJzogSXNPcGVuID8gJzAnIDonMjBweCcsXHJcbiAgICAgICAgICAgICAgICAnYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXMnOiBJc09wZW4gPyAnMCcgOicyMHB4JyxcclxuICAgICAgICAgICAgICAgICdtaW4taGVpZ2h0JzogSXNPcGVuID8gJzkzdmgnIDogJzQwNXB4JyxcclxuICAgICAgICAgICAgICAgICdtYXgtaGVpZ2h0JzogSXNPcGVuID8gJzkzdmgnIDogJzQwNXB4J1xyXG4gICAgICAgICAgICB9XCIgcGxhY2Vob2xkZXI9XCJJbnNlcnQgdGV4dCBoZXJlIC4uLlwiIHJlYWRvbmx5IChtb3VzZXVwKT1cIm9uVGV4dFNlbGVjdCgkZXZlbnQpXCJcclxuICAgICAgICAoaW5wdXQpPVwib25Nb2RlbENoYW5nZSgkZXZlbnQpXCIgW2lubmVySFRNTF09XCJzYW5pdGl6ZWRDb250ZW50XCIgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiIChmb2N1cyk9XCJvbkZvY3VzKClcIlxyXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCIgKGNsaWNrKT1cImNoZWNrVGFibGVTZWxlY3Rpb24oJGV2ZW50KVwiPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHRhYmxlICpuZ0lmPVwicGFyc2VkVGFibGVcIj5cclxuICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgaGVhZGVyIG9mIHBhcnNlZFRhYmxlLmhlYWRlcnNcIj57eyBoZWFkZXIgfX08L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBwYXJzZWRUYWJsZS5yb3dzXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNlbGwgb2Ygcm93XCI+e3sgY2VsbCB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90Ym9keT5cclxuICAgIDwvdGFibGU+XHJcblxyXG48L2Rpdj4iXX0=
|
1526
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWwtdGV4dC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZWwtdGV4dC1lZGl0b3Ivc3JjL2xpYi9lbC10ZXh0LWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9lbC10ZXh0LWVkaXRvci9zcmMvbGliL2VsLXRleHQtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQW1ELE1BQU0sZUFBZSxDQUFDO0FBQ3RLLE9BQU8sRUFBcUMsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU10Rix5R0FBeUc7QUFDekcsT0FBTyxFQUFFLFFBQVEsRUFBYyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFhakQsTUFBTSxPQUFPLHFCQUFxQjtJQWlGaEMsWUFDVSxNQUFjLEVBQ2QsS0FBcUIsRUFDckIsUUFBbUIsRUFDbkIsU0FBdUI7UUFIdkIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsY0FBUyxHQUFULFNBQVMsQ0FBYztRQW5GeEIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQVN4QixnQkFBVyxHQUFnQyxPQUFPLENBQUM7UUFDbEQscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUM5Qyx5QkFBb0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9DLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUMxQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNwQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNyQyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFB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R0FBckIscUJBQXFCLCtqQkFObkIsQ0FBQztZQUNaLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztZQUNwRCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsb1BDbkJKLDB0bENBc2VNOzJGRGpkTyxxQkFBcUI7a0JBVmpDLFNBQVM7K0JBQ0UsYUFBYSxhQUdWLENBQUM7NEJBQ1osT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUM7NktBSU8sVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFFRSxLQUFLO3NCQUFiLEtBQUs7Z0JBR21CLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFDRSxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIElucHV0LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuLy8gaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IFJvdXRlciwgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmd4RnVsbHNjcmVlbkRpcmVjdGl2ZSB9IGZyb20gJ0B1bHRpbWF0ZS9uZ3gtZnVsbHNjcmVlbic7XG5pbXBvcnQgKiBhcyBYTFNYIGZyb20gJ3hsc3gnO1xuLy8gaW1wb3J0IHsgSW1hZ2VFZGl0b3JNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL21vZGFscy9pbWFnZS1lZGl0b3ItbW9kYWwvaW1hZ2UtZWRpdG9yLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBjb21wcmVzcywgZGVjb21wcmVzcyB9IGZyb20gJ2x6LXN0cmluZyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV4dC1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZWwtdGV4dC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbC10ZXh0LWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxuICAgIHByb3ZpZGVyczogW3tcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBFbFRleHRFZGl0b3JDb21wb25lbnQpLFxuICAgIG11bHRpOiB0cnVlXG4gIH1dXG59KVxuZXhwb3J0IGNsYXNzIEVsVGV4dEVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuXG4gIEBJbnB1dCgpIGVkaXRvclRleHQ6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBlZGl0b3JGcm9tOiBhbnk7XG4gIEBJbnB1dCgpIGVkaXRvckFjdGlvbjogYW55O1xuICBASW5wdXQoKSBVc2VyUm9sZTogYW55O1xuICBASW5wdXQoKSBzdHlsZTogYW55O1xuICBASW5wdXQoKSBkaXNhYmxlVG9vbGJhcjogYW55O1xuICBASW5wdXQoKSBwbGFjZUhvbGRlcjogYW55O1xuICBASW5wdXQoKSByZXBvcnRJZDogYW55O1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kSW1hZ2U6IGFueTtcbiAgQElucHV0KCkgdG9vbGJhck1vZGU6ICdmaXhlZCcgfCAnYnViYmxlJyB8ICdub25lJyA9ICdmaXhlZCc7XG4gIEBPdXRwdXQoKSBlZGl0b3JUZXh0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBlZGl0b3JBY3Rpb25SZXNwb25zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZWRpdG9yVGV4dENsZWFyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBpbWFnZUVkaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGltYWdlRWRpdDIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHBsYWNlSG9sZGVyUmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBpc09wZW4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgXG4gIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmcgPSAnJztcblxuICBcbiAgQFZpZXdDaGlsZCgndGV4dEVkaXRvcicpIFRleHRFZGl0b3IhOiAgRWxlbWVudFJlZjxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnZnVsbHNjcmVlbicpIGZ1bGxzY3JlZW4hOiBOZ3hGdWxsc2NyZWVuRGlyZWN0aXZlXG4gICAgXG4gIHNhbml0aXplZENvbnRlbnQhOiBTYWZlSHRtbDtcblxuXG4gIHNob3dUb29sYmFyID0gZmFsc2U7XG4gIHRvb2xiYXJUb3AgPSAwO1xuICB0b29sYmFyTGVmdCA9IDA7XG5cbiAgZm9udHMgPSBbJ0FyaWFsJywgJ0NvdXJpZXIgTmV3JywgJ0dlb3JnaWEnLCAnVGltZXMgTmV3IFJvbWFuJywgJ1ZlcmRhbmEnXTtcbiAgZm9udFNpemVzID0gWzEwLCAxMiwgMTQsIDE2LCAxOCwgMjAsIDI0LCAyOCwgMzIsIDM2XTtcbiAgc2VsZWN0ZWRGb250ID0gJ0FyaWFsJztcbiAgc2VsZWN0ZWRGb250U2l6ZSA9IDE0O1xuICBpc1RhYmxlU2VsZWN0ZWQgPSBmYWxzZTtcbiAgdGFibGVBZGRlZCA9IGZhbHNlO1xuICBzZWxlY3RlZFRhYmxlOiBIVE1MVGFibGVFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIGlzUGxhY2Vob2xkZXJWaXNpYmxlID0gdHJ1ZTtcbiAgc2VsZWN0ZWRDZWxsOiBIVE1MVGFibGVDZWxsRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBcbiAgaXNCb2xkQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzSXRhbGljQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzVW5kZXJsaW5lQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gIGlzU3RyaWtldGhyb3VnaEFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1N1YnNjcmlwdEFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1N1cGVyc2NyaXB0QWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc2VsZWN0ZWRGb3JtYXRCbG9jazogc3RyaW5nID0gJ25vcm1hbCdcblxuICBzZWxlY3RlZEltYWdlOiBIVE1MSW1hZ2VFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIGltYWdlRWRpdFVybDogc3RyaW5nID0gJyc7XG4gIGltYWdlUG9zaXRpb25YID0gMDtcbiAgaW1hZ2VQb3NpdGlvblkgPSAwO1xuICBpbWFnZVJlc2l6ZVN0YXJ0WCA9IDA7XG4gIGltYWdlUmVzaXplU3RhcnRZID0gMDtcbiAgaW1hZ2VSZXNpemVTdGFydFdpZHRoID0gMDtcbiAgaW1hZ2VSZXNpemVTdGFydEhlaWdodCA9IDA7XG4gIGltYWdlUmVzaXplRGlyZWN0aW9uOiAndG9wTGVmdCcgfCAndG9wUmlnaHQnIHwgJ2JvdHRvbUxlZnQnIHwgJ2JvdHRvbVJpZ2h0JyB8IG51bGwgPSBudWxsO1xuXG4gIHVuZG9TdGFjazogc3RyaW5nW10gPSBbXTtcbiAgcmVkb1N0YWNrOiBzdHJpbmdbXSA9IFtdO1xuICBoaXN0b3J5OiBzdHJpbmdbXSA9IFtdO1xuICBoaXN0b3J5SW5kZXggPSAtMTtcbiAgLy8gZWRpdG9yVGV4dDEgPSBgYDtcbiAgc2VsZWN0ZWRUZXh0Q29sb3I6IGFueTtcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuICBjb2xvcjogYW55ID0gJyNkZGQnO1xuICBjb2xvckZvcm1Db250cm9sITogRm9ybUNvbnRyb2w7XG4gIGJhY2tncm91bmRDb2xvcjogYW55O1xuICBzZWxlY3RlZEl0ZW1JbmRleDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcGFyc2VkVGFibGU6IHsgaGVhZGVyczogc3RyaW5nW10sIHJvd3M6IHN0cmluZ1tdW10gfSB8IG51bGwgPSBudWxsO1xuXG4gIGlzRnVsbFNjcmVlbjogYm9vbGVhbiA9IGZhbHNlO1xuICBjdXJyZW50Q2FyZXRQb3NpdGlvbjogYW55O1xuICB1c2VyUm9sZTogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICApIHtcbiAgICB0aGlzLmdldFVzZXJSb2xlcygpXG5cbiAgICBcbiAgfVxuXG4gIHRoZW1lTW9kZSgpIHtcbiAgICBjb25zdCBjbHJNb2RlID0gZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGF5b3V0LWNvbG9yJylcbiAgICBpZiAoY2xyTW9kZSA9PSAnZGFyaycpIHtcbiAgICAgIHJldHVybiAnMnB4IHNvbGlkICM0MDNGNEEgIWltcG9ydGFudCdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcycHggc29saWQgI0QwRDBEMCAhaW1wb3J0YW50J1xuICAgIH1cbiAgfVxuXG4gIHRoZW1lTW9kZUNscigpIHtcbiAgICBjb25zdCBjbHJNb2RlID0gZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGF5b3V0LWNvbG9yJylcbiAgICBpZiAoY2xyTW9kZSA9PSAnZGFyaycpIHtcbiAgICAgIHJldHVybiAnI2ZmZiAhaW1wb3J0YW50J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyMwMDAgIWltcG9ydGFudCdcbiAgICB9XG4gIH1cblxuICB0aGVtZU1vZGVDbHJWZXJ0aWNhbExpbmUoKSB7XG4gICAgY29uc3QgY2xyTW9kZSA9IGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCdkYXRhLWxheW91dC1jb2xvcicpXG4gICAgaWYgKGNsck1vZGUgPT0gJ2RhcmsnKSB7XG4gICAgICByZXR1cm4gJzJweCBzb2xpZCAjRkZGRkZGICFpbXBvcnRhbnQnXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnMnB4IHNvbGlkICNEMEQwRDAgIWltcG9ydGFudCdcbiAgICB9XG4gIH1cblxuICB0aGVtZU1vZGVCZ0NscigpIHtcbiAgICBjb25zdCBjbHJNb2RlID0gZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGF5b3V0LWNvbG9yJylcbiAgICBpZiAoY2xyTW9kZSA9PSAnZGFyaycpIHtcbiAgICAgIHJldHVybiAnIzI4MjgyOCAhaW1wb3J0YW50J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyNGM0YzRjMgIWltcG9ydGFudCdcbiAgICB9XG4gIH1cblxuICB0aGVtZU1vZGVCb3JkZXJUb3AoKSB7XG4gICAgY29uc3QgY2xyTW9kZSA9IGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCdkYXRhLWxheW91dC1jb2xvcicpXG4gICAgaWYgKGNsck1vZGUgPT0gJ2RhcmsnKSB7XG4gICAgICByZXR1cm4gJzJweCBzb2xpZCAjMDAwICFpbXBvcnRhbnQnXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnMnB4IHNvbGlkICNmZmYgIWltcG9ydGFudCdcbiAgICB9XG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwbGFjZUhvbGRlciddKSB7XG4gICAgICB0aGlzLmluc2VydEF0Q2FyZXQodGhpcy5wbGFjZUhvbGRlcilcblxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydyZXBvcnRJZCddKSB7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdyZXBvcnRJZCcsIHRoaXMucmVwb3J0SWQpXG4gICAgfSBcblxuICAgIGlmIChjaGFuZ2VzWydVc2VyUm9sZSddKSB7IFxuICAgICAgdGhpcy5nZXRVc2VyUm9sZXMoKVxuICAgIH1cbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5pbml0RWRpdG9yKCk7XG4gICAgdGhpcy5jaGVja1BsYWNlaG9sZGVyKCk7XG4gICAgdGhpcy5zZXR1cEhpc3RvcnkoKTtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmdWxsc2NyZWVuY2hhbmdlJywgdGhpcy5vbkZ1bGxzY3JlZW5DaGFuZ2UpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0X0Z1bmModGhpcy5lZGl0b3JUZXh0KVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3NlbGVjdGlvbmNoYW5nZScsICgpID0+IHtcbiAgICAgIHRoaXMuY2hlY2tBY3RpdmVTdGF0ZXMoKTtcbiAgICAgIHRoaXMuY2hlY2tGb3JtYXRCbG9jaygpO1xuICAgIH0pO1xuICAgIHRoaXMuYWRkQ2xpY2tMaXN0ZW5lclRvSW1hZ2VzKCk7XG4gICAgdGhpcy5hZGRDbGlja0xpc3RlbmVyVG9FbGVtZW50cygpO1xuICAgIC8vIHRoaXMucm91dGUucXVlcnlQYXJhbXMuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgLy8gICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShwYXJhbXNbJ2RhdGEnXSk7XG4gICAgLy8gICBpZiAoZGF0YS5lZGl0ZWRJTUcpIHtcbiAgICAvLyAgICAgY29uc3QgaW1nVXJsID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZWRpdEltYWdlRnJvbVRlbXAnKTtcbiAgICAvLyAgICAgaWYgKGltZ1VybCkge1xuICAgIC8vICAgICAgIHRoaXMucmVwbGFjZUltYWdlU3JjKGltZ1VybCwgZGF0YS5pbmRleC5pbmRleClcbiAgICAvLyAgICAgfVxuICAgIC8vICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdlZGl0SW1hZ2VGcm9tVGVtcCcpO1xuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gIH1cblxuICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gQ2xlYW51cCB0aGUgZXZlbnQgbGlzdGVuZXIgd2hlbiB0aGUgY29tcG9uZW50IGlzIGRlc3Ryb3llZFxuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Z1bGxzY3JlZW5jaGFuZ2UnLCB0aGlzLm9uRnVsbHNjcmVlbkNoYW5nZSk7XG4gIH1cblxuICBJc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHRvZ2dsZUZ1bGxzY3JlZW4xKCkge1xuICAgICAgdGhpcy5Jc09wZW4gPSAhdGhpcy5Jc09wZW47XG4gICAgICB0aGlzLmlzT3Blbi5lbWl0KHRoaXMuSXNPcGVuKVxuICAgICAgaWYgKHRoaXMuSXNPcGVuKSB7IFxuICAgICAgICB0aGlzLmZ1bGxzY3JlZW4uZW50ZXIodGhpcy5UZXh0RWRpdG9yLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mdWxsc2NyZWVuLmV4aXQoKVxuICAgICAgfVxuICAgIH1cbiAgXG4gIHByaXZhdGUgb25GdWxsc2NyZWVuQ2hhbmdlID0gKCkgPT4ge1xuICAgIGlmICghZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQpIHtcbiAgICAgIC8vIFdoZW4gZnVsbHNjcmVlbiBtb2RlIGlzIGV4aXRlZFxuICAgICAgdGhpcy5Jc09wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNPcGVuLmVtaXQodGhpcy5Jc09wZW4pO1xuICAgIH1cbiAgfTtcbiAgXG4gIC8vIGVudGVyRnVsbHNjcmVlblZpZGVvKCkge1xuICAvLyAgIGNvbnNvbGUubG9nKCdldmVudDonLCBldmVudCk7XG4gIC8vICAgY29uc3QgZnVsbHNjcmVlbiA9IGV2ZW50O1xuICAvLyAgIHRoaXMuaXNPcGVuID0gZXZlbnQ7XG4gIC8vICAgaWYgKGZ1bGxzY3JlZW4pIHtcbiAgLy8gICAgIHRoaXMuZnVsbHNjcmVlbi5lbnRlcih0aGlzLlRleHRFZGl0b3IubmF0aXZlRWxlbWVudCk7XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRoaXMuZnVsbHNjcmVlbi5leGl0KClcbiAgLy8gICB9XG4gICAgXG4gIC8vIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5lZGl0b3JUZXh0ID0gdmFsdWU7XG4gICAgICB0aGlzLmluaXRFZGl0b3IoKTtcbiAgICAgIHRoaXMuaW5pdF9GdW5jKHRoaXMuZWRpdG9yVGV4dCk7XG4gICAgfVxuICB9XG4gIFxuLy8gIHByaXZhdGUgYWRkQ2xpY2tMaXN0ZW5lclRvSW1hZ2VzKCkge1xuLy8gICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4vLyAgIGlmIChlZGl0b3IpIHtcbi8vICAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbi8vICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbi8vICAgICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHtcbi8vICAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gdGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4vLyAgICAgICAgIHRoaXMuaW1hZ2VFZGl0VXJsID0gdGhpcy5zZWxlY3RlZEltYWdlLnNyYztcblxuLy8gICAgICAgICBsZXQgY29udGFpbmVyID0gdGhpcy5zZWxlY3RlZEltYWdlLnBhcmVudEVsZW1lbnQ7XG4vLyAgICAgICAgIGlmICghY29udGFpbmVyIHx8IGNvbnRhaW5lci5jbGFzc05hbWUgIT09ICdpbWFnZS1jb250YWluZXInKSB7XG4vLyAgICAgICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4vLyAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdpbWFnZS1jb250YWluZXInO1xuLy8gICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5wb3NpdGlvbiA9ICdyZWxhdGl2ZSc7XG4vLyAgICAgICAgICAgY29udGFpbmVyLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbi8vICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKGNvbnRhaW5lciwgdGhpcy5zZWxlY3RlZEltYWdlKTtcbi8vICAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5zZWxlY3RlZEltYWdlKTtcbi8vICAgICAgICAgfVxuLy8gICAgICAgICBjb25zdCBleGlzdGluZ0J1dHRvbiA9IGNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcuaW1hZ2UtZWRpdC1idXR0b24nKTtcbi8vICAgICAgICAgaWYgKGV4aXN0aW5nQnV0dG9uKSB7XG4vLyAgICAgICAgICAgZXhpc3RpbmdCdXR0b24ucmVtb3ZlKCk7XG4vLyAgICAgICAgIH1cblxuLy8gICAgICAgICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcbi8vICAgICAgICAgLy8gYnV0dG9uLnRleHRDb250ZW50ID0gJ0VkaXQnO1xuLy8gICAgICAgICBidXR0b24uaW5uZXJUZXh0ID0gJ0VkaXQgSW1hZ2UnO1xuXG4vLyAgICAgICAgIGJ1dHRvbi5jbGFzc05hbWUgPSAnaW1hZ2UtZWRpdC1idXR0b24gYnRuIGJ0bi1zbSc7XG4vLyAgICAgICAgIGJ1dHRvbi5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4vLyAgICAgICAgIGJ1dHRvbi5zdHlsZS50b3AgPSAnNTAlJztcbi8vICAgICAgICAgYnV0dG9uLnN0eWxlLmxlZnQgPSAnNTAlJztcbi8vICAgICAgICAgYnV0dG9uLnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoLTUwJSwgLTUwJSknO1xuLy8gICAgICAgICBidXR0b24uc3R5bGUuekluZGV4ID0gJzEwMDAnO1xuLy8gICAgICAgICBidXR0b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyNmZmYnO1xuLy8gICAgICAgICBidXR0b24uc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCAjZmZmJztcbi8vICAgICAgICAgLy8gYnV0dG9uLnN0eWxlLnBhZGRpbmcgPSAnMTBweCc7XG4vLyAgICAgICAgIGJ1dHRvbi5zdHlsZS5jb2xvciA9ICcjMzEzYTQ2Jztcbi8vICAgICAgICAgYnV0dG9uLnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcblxuLy8gICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuLy8gICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4vLyAgICAgICAgICAgdGhpcy5lZGl0SW1hZ2UoKTtcbi8vICAgICAgICAgfSk7XG5cbi8vICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJ1dHRvbik7XG4vLyAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBudWxsO1xuLy8gICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gbnVsbDtcbi8vICAgICAgIH1cbi8vICAgICB9KTtcbi8vICAgfVxuICAvLyB9XG4gIGdldFVzZXJSb2xlcygpIHtcbiAgICB0aGlzLnVzZXJSb2xlID0gdGhpcy5Vc2VyUm9sZVxuICB9XG4gIC8vIHJvbGVDaGVjaygpIHtcbiAgLy8gICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudXNlclJvbGUubGVuZ3RoOyArK2kpIHtcbiAgLy8gICAgIGNvbnN0IHJvbGVOYW1lID0gW11cbiAgLy8gICAgICAgcm9sZU5hbWUucHVzaCh0aGlzLnVzZXJSb2xlW2ldPy5uYW1lKTtcbiAgLy8gICAgIHJldHVybiB0aGlzLnVzZXJSb2xlW2ldPy5uYW1lO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIHJvbGVDaGVjaygpIHtcbiAgICBsZXQgdXNlclJvbGVOYW1lOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHRoaXMudXNlclJvbGUubGVuZ3RoOyArK2kpIHtcbiAgICAgIHVzZXJSb2xlTmFtZS5wdXNoKHRoaXMudXNlclJvbGVbaV0/Lm5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gdXNlclJvbGVOYW1lO1xuICB9XG5cblxucHJpdmF0ZSBhZGRDbGlja0xpc3RlbmVyVG9JbWFnZXMoKSB7XG4gIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgY29uc3Qgcm9sZXMgPSB0aGlzLnJvbGVDaGVjaygpOyAvLyBHZXQgdXNlciByb2xlcyBkeW5hbWljYWxseVxuICBjb25zdCBpc0FkbWluID0gcm9sZXMuaW5jbHVkZXMoJ0FkbWluJyk7XG4gIGNvbnN0IGlzQ3JlYXRvciA9IHJvbGVzLmluY2x1ZGVzKCdDcmVhdG9yJyk7XG4gIGNvbnN0IGlzQXBwcm92ZXIgPSByb2xlcy5pbmNsdWRlcygnQXBwcm92ZXInKTtcbiAgXG4gIGlmIChpc0NyZWF0b3IgfHwgaXNBZG1pbikge1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICh0YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gdGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaW1hZ2VFZGl0VXJsID0gdGhpcy5zZWxlY3RlZEltYWdlLnNyYztcbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IHRoaXMuc2VsZWN0ZWRJbWFnZS5wYXJlbnRFbGVtZW50O1xuICAgICAgICBpZiAoIWNvbnRhaW5lciB8fCBjb250YWluZXIuY2xhc3NOYW1lICE9PSAnaW1hZ2UtY29udGFpbmVyJykge1xuICAgICAgICAgIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAnaW1hZ2UtY29udGFpbmVyJztcbiAgICAgICAgICBjb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgICAgIGNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7ICBcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKGNvbnRhaW5lciwgdGhpcy5zZWxlY3RlZEltYWdlKTtcbiAgICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5zZWxlY3RlZEltYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQnV0dG9uID0gY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5pbWFnZS1lZGl0LWJ1dHRvbicpO1xuICAgICAgICBpZiAoZXhpc3RpbmdCdXR0b24pIHtcbiAgICAgICAgICBleGlzdGluZ0J1dHRvbi5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgICAgICBidXR0b24udGV4dENvbnRlbnQgID0gJ0VkaXQgSW1hZ2UnO1xuICAgICAgICBidXR0b24uY2xhc3NOYW1lID0gJ2ltYWdlLWVkaXQtYnV0dG9uIGJ0biBidG4tc20nO1xuICAgICAgICBidXR0b24uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICBidXR0b24uc3R5bGUudG9wID0gJzUwJSc7XG4gICAgICAgIGJ1dHRvbi5zdHlsZS5sZWZ0ID0gJzUwJSc7XG4gICAgICAgIGJ1dHRvbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlKC01MCUsIC01MCUpJztcbiAgICAgICAgYnV0dG9uLnN0eWxlLnpJbmRleCA9ICcxMDAwJztcbiAgICAgICAgYnV0dG9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZmZmJzsgXG4gICAgICAgIGJ1dHRvbi5zdHlsZS5ib3JkZXIgPSAnMnB4IHNvbGlkICNmZmYnOyBcbiAgICAgICAgYnV0dG9uLnN0eWxlLmNvbG9yID0gJyMzMTNhNDYnO1xuICAgICAgICBidXR0b24uc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgICAgICBidXR0b24uc3R5bGUudXNlclNlbGVjdCA9ICdub25lJztcblxuICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgdGhpcy5lZGl0SW1hZ2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJ1dHRvbik7XG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPSBudWxsO1xuICAgICAgICBjb25zdCBidXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmltYWdlLWVkaXQtYnV0dG9uJyk7XG4gICAgICAgIGJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4gYnV0dG9uLnJlbW92ZSgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICB9XG59XG5cbiAgLy8gcHJpdmF0ZSBhZGRDbGlja0xpc3RlbmVyVG9JbWFnZXMoKSB7XG4gIC8vIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgLy8gaWYgKGVkaXRvcikge1xuICAvLyAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuICAvLyAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAvLyAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU1HJykge1xuICAvLyAgICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSB0YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgLy8gICAgICAgdGhpcy5pbWFnZUVkaXRVcmwgPSB0aGlzLnNlbGVjdGVkSW1hZ2Uuc3JjO1xuXG4gIC8vICAgICAgIC8vIEdldCB0aGUgaW5kZXggb2YgdGhlIHNlbGVjdGVkIGltYWdlXG4gIC8vICAgICAgIGNvbnN0IGltYWdlcyA9IGVkaXRvci5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1nJyk7XG4gIC8vICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW1hZ2VzLmxlbmd0aDsgaSsrKSB7XG4gIC8vICAgICAgICAgaWYgKGltYWdlc1tpXSA9PT0gdGhpcy5zZWxlY3RlZEltYWdlKSB7XG4gIC8vICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUluZGV4ID0gaTtcbiAgLy8gICAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmICh0aGlzLnRvb2xiYXJNb2RlID09PSAnYnViYmxlJykge1xuICAvLyAgICAgICAgIHRoaXMub25UZXh0U2VsZWN0KCk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IG51bGw7XG4gIC8vICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPSBudWxsO1xuICAvLyAgICAgfVxuICAvLyAgIH0pO1xuICAvLyB9XG4gIC8vIH1cbiAgXG4gIHByaXZhdGUgYWRkQ2xpY2tMaXN0ZW5lclRvRWxlbWVudHMoKSB7XG4gIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgaWYgKGVkaXRvcikge1xuICAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgaWYgKHRhcmdldC50YWdOYW1lID09PSAnSU1HJykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSB0YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgdGhpcy5pbWFnZUVkaXRVcmwgPSB0aGlzLnNlbGVjdGVkSW1hZ2Uuc3JjO1xuICAgICAgICBjb25zdCBpbWFnZXMgPSBlZGl0b3IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ltZycpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGltYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmIChpbWFnZXNbaV0gPT09IHRoaXMuc2VsZWN0ZWRJbWFnZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IG51bGw7XG4gICAgICB9XG4gICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdURCcgfHwgdGFyZ2V0LnRhZ05hbWUgPT09ICdUSCcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlID0gdGFyZ2V0LmNsb3Nlc3QoJ3RhYmxlJykgYXMgSFRNTFRhYmxlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY2VsbHMgPSB0aGlzLnNlbGVjdGVkVGFibGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodGFyZ2V0LnRhZ05hbWUpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNlbGxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGNlbGxzW2ldID09PSB0YXJnZXQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXggPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGUgPSBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFyZ2V0LnRhZ05hbWUgPT09ICdQJyB8fCB0YXJnZXQudGFnTmFtZSA9PT0gJ1NQQU4nIHx8IHRhcmdldC50YWdOYW1lID09PSAnRElWJykge1xuICAgICAgICBjb25zdCBwYXJhZ3JhcGhzID0gZWRpdG9yLmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhcmdldC50YWdOYW1lKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhZ3JhcGhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKHBhcmFncmFwaHNbaV0gPT09IHRhcmdldCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1JbmRleCA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICB9XG5cbnJlcGxhY2VJbWFnZVNyYyhuZXdTcmM6IHN0cmluZywgaW5kZXg6IG51bWJlcikge1xuICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIFxuICBpZiAoZWRpdG9yKSB7XG4gICAgZWRpdG9yLmZvY3VzKClcbiAgICBjb25zdCBpbWFnZXMgPSBlZGl0b3IuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ0lNRycpO1xuICAgIGlmIChpbmRleCA+PSAwICkge1xuICAgICAgaW1hZ2VzW2luZGV4XS5zZXRBdHRyaWJ1dGUoJ3NyYycsIG5ld1NyYyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUud2FybihgSW5kZXggJHtpbmRleH0gaXMgb3V0IG9mIGJvdW5kcy4gVG90YWwgaW1hZ2VzOiAke2ltYWdlcy5sZW5ndGh9YCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0VkaXRvciBlbGVtZW50IG5vdCBmb3VuZCcpO1xuICB9XG59XG5cblxuXG4gIHByaXZhdGUgaW5pdEVkaXRvcigpIHtcbiAgICAvLyBJbml0aWFsaXplIGVkaXRvciBjb250ZW50IGFuZCBsaXN0ZW5lcnNcbiAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG5cbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICBlZGl0b3IuaW5uZXJIVE1MID0gdGhpcy5lZGl0b3JUZXh0O1xuICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xuICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoZWRpdG9yLmlubmVySFRNTCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jaGVja1BsYWNlaG9sZGVyKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAvLyBIYW5kbGUgdGhlIGRpc2FibGVkIHN0YXRlIGlmIG5lY2Vzc2FyeVxuICB9XG5cbiAgb25Nb2RlbENoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBjb25zdCBWQUxVRSA9IHZhbHVlXG4gICAgICB0aGlzLmVkaXRvclRleHQgPSBWQUxVRTtcbiAgICAgIHRoaXMub25DaGFuZ2UoVkFMVUUpO1xuICAgICAgdGhpcy5lZGl0b3JUZXh0Q2hhbmdlLmVtaXQoVkFMVUUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5SW1hZ2VTdHlsZXMoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBkaXYuaW5uZXJIVE1MID0gY29udGVudDtcbiAgICBjb25zdCBpbWFnZXMgPSBkaXYucXVlcnlTZWxlY3RvckFsbCgnaW1nJyk7XG4gICAgaW1hZ2VzLmZvckVhY2goaW1nID0+IHtcbiAgICAgIGlmIChpbWcuc3R5bGUubWF4V2lkdGggPj0gJzcwMHB4Jykge1xuICAgICAgICBpbWcuc3R5bGUubWF4V2lkdGggPSAnNzAwcHgnO1xuICAgICAgICAvLyBpbWcud2lkdGggPSAzMDA7XG4gICAgICAgIGltZy5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbWcuc3R5bGUubWF4V2lkdGggPSAnMTAwJSc7XG4gICAgICAgIGltZy5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRpdi5pbm5lckhUTUw7XG4gIH1cblxuICAvLyBpbml0X0Z1bmMoaHRtbDogYW55KSB7XG4gIC8vICAgaWYgKGh0bWwpIHtcbiAgLy8gICAgIGxldCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIC8vICAgICBpZiAoZWRpdG9yKSB7IFxuICAvLyAgICAgICBlZGl0b3IuZm9jdXMoKVxuICAvLyAgICAgICBlZGl0b3IuaW5uZXJIVE1MID0gaHRtbDtcbiAgLy8gICAgICAgdGhpcy5zYW5pdGl6ZWRDb250ZW50ID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy5hcHBseUltYWdlU3R5bGVzKGh0bWwpKTtcbiAgLy8gICAgICAgZWRpdG9yLmlubmVySFRNTCA9IHRoaXMuc2FuaXRpemVkQ29udGVudCBhcyBzdHJpbmc7XG4gIC8vICAgICAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsICgpID0+IHtcbiAgLy8gICAgICAgICBpZiAoZWRpdG9yKSB7XG4gIC8vICAgICAgICAgICBlZGl0b3IuZm9jdXMoKVxuICAvLyAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKGVkaXRvci5pbm5lckhUTUwpO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfSk7XG4gIC8vICAgICB9XG4gIC8vICAgfSBlbHNlIHtcbiAgLy8gICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IG51bGw7XG4gIC8vICAgfVxuICAvLyB9XG4gIFxuLy8gICBpbml0X0Z1bmMoaHRtbDogYW55KSB7XG4vLyAgIGlmIChodG1sKSB7XG4vLyAgICAgbGV0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbi8vICAgICBpZiAoZWRpdG9yKSB7XG4vLyAgICAgICAvLyBJbml0aWFsaXplIHRoZSBlZGl0b3Igd2l0aCBzYW5pdGl6ZWQgY29udGVudFxuICAgICAgXG4vLyAgICAgICB0aGlzLnNldEVkaXRvckNvbnRlbnQoaHRtbCk7XG5cbi8vICAgICAgIC8vIFNldCB1cCBhIE11dGF0aW9uT2JzZXJ2ZXIgdG8gaGFuZGxlIGNvbnRlbnQgY2hhbmdlc1xuLy8gICAgICAgdGhpcy5zZXR1cE11dGF0aW9uT2JzZXJ2ZXIoZWRpdG9yKTtcblxuLy8gICAgICAgLy8gTW92ZSB0aGUgY2FyZXQgdG8gdGhlIGVuZCBhZnRlciBpbml0aWFsIGNvbnRlbnQgc2V0dXBcbi8vICAgICAgIHRoaXMubW92ZUNhcmV0VG9FbmQoZWRpdG9yKTtcblxuLy8gICAgICAgLy8gVHJhY2sgY2FyZXQgcG9zaXRpb24gb24gbW91c2UgY2xpY2tcbi8vICAgICAgIGVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbi8vICAgICAgICAgaWYgKGVkaXRvcikgeyAgLy8gRW5zdXJlIGVkaXRvciBpcyBub3QgbnVsbFxuLy8gICAgICAgICAgIC8vIHRoaXMudHJhY2tDYXJldFBvc2l0aW9uKGVkaXRvcik7XG4vLyAgICAgICAgIH1cbi8vICAgICAgIH0pO1xuLy8gICAgIH1cbi8vICAgfSBlbHNlIHtcbi8vICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBudWxsO1xuLy8gICB9XG4vLyB9XG5cbi8vIHByaXZhdGUgc2V0RWRpdG9yQ29udGVudChodG1sOiBzdHJpbmcpIHtcbi8vICAgbGV0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbi8vICAgaWYgKGVkaXRvcikge1xuLy8gICAgIC8vIFNhbml0aXplIGFuZCBhcHBseSBzdHlsZXMgdG8gdGhlIEhUTUxcbi8vICAgICB0aGlzLnNhbml0aXplZENvbnRlbnQgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh0aGlzLmFwcGx5SW1hZ2VTdHlsZXMoaHRtbCkpO1xuLy8gICAgIGVkaXRvci5pbm5lckhUTUwgPSB0aGlzLnNhbml0aXplZENvbnRlbnQgYXMgc3RyaW5nO1xuLy8gICB9XG4vLyB9XG5cbi8vIHByaXZhdGUgc2V0dXBNdXRhdGlvbk9ic2VydmVyKGVkaXRvcjogSFRNTEVsZW1lbnQpIHtcbi8vICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4vLyAgICAgLy8gVXBkYXRlIG1vZGVsIHdpdGggdGhlIGN1cnJlbnQgY29udGVudFxuLy8gICAgIHRoaXMub25Nb2RlbENoYW5nZShlZGl0b3IuaW5uZXJIVE1MKTtcbi8vICAgfSk7XG5cbi8vICAgb2JzZXJ2ZXIub2JzZXJ2ZShlZGl0b3IsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlIH0pO1xuLy8gfVxuXG4vLyBUaGlzIGZ1bmN0aW9uIHRyYWNrcyB0aGUgY2FyZXQgcG9zaXRpb24gYmFzZWQgb24gdGhlIG1vdXNlIGNsaWNrXG5wcml2YXRlIHRyYWNrQ2FyZXRQb3NpdGlvbihlZGl0b3I6IEhUTUxFbGVtZW50KSB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcbiAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuICAgIGNvbnN0IHN0YXJ0Tm9kZSA9IHJhbmdlLnN0YXJ0Q29udGFpbmVyO1xuICAgIGNvbnN0IHN0YXJ0T2Zmc2V0ID0gcmFuZ2Uuc3RhcnRPZmZzZXQ7XG5cblxuICAgIC8vIFlvdSBjYW4gdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gaW5zZXJ0IGNvbnRlbnQgb3IgcGVyZm9ybSBhY3Rpb25zIGJhc2VkIG9uIHRoZSBjYXJldCBwb3NpdGlvblxuICAgIC8vIEV4YW1wbGU6IFNhdmUgdGhlIGN1cnJlbnQgY2FyZXQgcG9zaXRpb24gZm9yIGZ1dHVyZSB1c2VcbiAgICB0aGlzLmN1cnJlbnRDYXJldFBvc2l0aW9uID0geyBub2RlOiBzdGFydE5vZGUsIG9mZnNldDogc3RhcnRPZmZzZXQgfTtcbiAgfVxuICB9XG4gIFxuICAvLyBNZXRob2QgdG8gZ2V0IGNhcmV0IHBvc2l0aW9uIGFuZCBpbnNlcnQgbmV3IGRhdGFcbnByaXZhdGUgaW5zZXJ0QXRDYXJldChuZXdEYXRhOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICBcbiAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgcmFuZ2UgKGNhcmV0IHBvc2l0aW9uKVxuICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG5cbiAgICAvLyBDcmVhdGUgYSBkb2N1bWVudCBmcmFnbWVudCB0byBpbnNlcnQgKGFsbG93cyBoYW5kbGluZyBIVE1MIHN0cmluZ3MpXG4gICAgY29uc3QgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG4gICAgY29uc3QgdGVtcERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHRlbXBEaXYuaW5uZXJIVE1MID0gbmV3RGF0YTtcblxuICAgIC8vIEFwcGVuZCB0aGUgbmV3IGRhdGEgdG8gdGhlIGZyYWdtZW50IChzdXBwb3J0cyBIVE1MIGluc2VydGlvbilcbiAgICB3aGlsZSAodGVtcERpdi5maXJzdENoaWxkKSB7XG4gICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZCh0ZW1wRGl2LmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIC8vIEluc2VydCB0aGUgZnJhZ21lbnQgYXQgdGhlIGNhcmV0IHBvc2l0aW9uXG4gICAgcmFuZ2UuZGVsZXRlQ29udGVudHMoKTsgLy8gUmVtb3ZlIGFueSBzZWxlY3RlZCBjb250ZW50IGlmIGFwcGxpY2FibGVcbiAgICByYW5nZS5pbnNlcnROb2RlKGZyYWdtZW50KTtcblxuICAgIC8vIE1vdmUgdGhlIGNhcmV0IGFmdGVyIHRoZSBpbnNlcnRlZCBjb250ZW50XG4gICAgY29uc3QgbGFzdENoaWxkID0gZnJhZ21lbnQubGFzdENoaWxkO1xuXG4gICAgaWYgKGxhc3RDaGlsZCkge1xuICAgICAgcmFuZ2Uuc2V0U3RhcnRBZnRlcihsYXN0Q2hpbGQpO1xuICAgICAgcmFuZ2Uuc2V0RW5kQWZ0ZXIobGFzdENoaWxkKTtcbiAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG4gICAgfVxuICAgIGxldCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgdGhpcy5tb3ZlQ2FyZXRUb0VuZChlZGl0b3IpXG4gICAgfVxuICAgIFxuICAgIHRoaXMucGxhY2VIb2xkZXJSZW1vdmUuZW1pdCgpXG4gICAgY29uc29sZS5sb2coJ05ldyBkYXRhIGluc2VydGVkIGF0IGNhcmV0LicpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKCdObyBjYXJldCBwb3NpdGlvbiBmb3VuZC4nKTtcbiAgfVxufVxuXG5cbi8vICAgLy8gTW92ZSBjYXJldCB0byB0aGUgZW5kIG9mIHRoZSBlZGl0b3IgY29udGVudFxuLy8gICBwcml2YXRlIG1vdmVDYXJldFRvRW5kKGVkaXRvcjogSFRNTEVsZW1lbnQpIHtcbi8vICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4vLyAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIFxuLy8gICAgIGlmIChlZGl0b3IubGFzdENoaWxkKSB7XG4vLyAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdG9yKTtcbi8vICAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsgLy8gQ29sbGFwc2UgdG8gdGhlIGVuZFxuLy8gICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcbi8vICAgICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UocmFuZ2UpO1xuICAgICAgXG4vLyAgICAgfVxuLy8gICB9XG4gIFxuICBcblxuXG4gIGluaXRfRnVuYyhodG1sOiBhbnkpIHtcbiAgaWYgKGh0bWwpIHtcbiAgICBsZXQgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIC8vIEluaXRpYWxpemUgdGhlIGVkaXRvciB3aXRoIHNhbml0aXplZCBjb250ZW50XG4gICAgICB0aGlzLnNldEVkaXRvckNvbnRlbnQoaHRtbCk7XG5cbiAgICAgIC8vIFNldCB1cCBhIE11dGF0aW9uT2JzZXJ2ZXIgdG8gaGFuZGxlIGNvbnRlbnQgY2hhbmdlc1xuICAgICAgdGhpcy5zZXR1cE11dGF0aW9uT2JzZXJ2ZXIoZWRpdG9yKTtcbiAgICAgIFxuICAgICAgLy8gTW92ZSB0aGUgY2FyZXQgdG8gdGhlIGVuZCBhZnRlciBpbml0aWFsIGNvbnRlbnQgc2V0dXBcbiAgICAgIHRoaXMubW92ZUNhcmV0VG9FbmQoZWRpdG9yKTtcbiAgICAgIC8vICBUcmFjayBjYXJldCBwb3NpdGlvbiBvbiBtb3VzZSBjbGlja1xuICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICBpZiAoZWRpdG9yKSB7ICAvLyBFbnN1cmUgZWRpdG9yIGlzIG5vdCBudWxsXG4gICAgICAgICAgdGhpcy50cmFja0NhcmV0UG9zaXRpb24oZWRpdG9yKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IG51bGw7XG4gIH1cbn1cblxuXG5wcml2YXRlIHNldEVkaXRvckNvbnRlbnQoaHRtbDogc3RyaW5nKSB7XG4gIGxldCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIGlmIChlZGl0b3IpIHtcbiAgICAvLyBTYW5pdGl6ZSBhbmQgYXBwbHkgc3R5bGVzIHRvIHRoZSBIVE1MXG4gICAgdGhpcy5zYW5pdGl6ZWRDb250ZW50ID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy5hcHBseUltYWdlU3R5bGVzKGh0bWwpKTtcbiAgICBlZGl0b3IuaW5uZXJIVE1MID0gdGhpcy5zYW5pdGl6ZWRDb250ZW50IGFzIHN0cmluZztcbiAgfVxufVxuXG5wcml2YXRlIHNldHVwTXV0YXRpb25PYnNlcnZlcihlZGl0b3I6IEhUTUxFbGVtZW50KSB7XG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xuICAgIC8vIE1vdmUgdGhlIGNhcmV0IHRvIHRoZSBlbmQgYWZ0ZXIgY29udGVudCBjaGFuZ2VzXG4gICAgLy8gdGhpcy5tb3ZlQ2FyZXRUb0VuZChlZGl0b3IpO1xuICAgIC8vIFVwZGF0ZSBtb2RlbCB3aXRoIHRoZSBjdXJyZW50IGNvbnRlbnRcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UoZWRpdG9yLmlubmVySFRNTCk7XG4gIH0pO1xuXG4gIG9ic2VydmVyLm9ic2VydmUoZWRpdG9yLCB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTtcbn1cblxucHJpdmF0ZSBtb3ZlQ2FyZXRUb0VuZChlZGl0b3I6IEhUTUxFbGVtZW50KSB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICBcbiAgaWYgKGVkaXRvci5sYXN0Q2hpbGQpIHtcbiAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdG9yKTtcbiAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7IC8vIENvbGxhcHNlIHRvIHRoZSBlbmRcbiAgICBzZWxlY3Rpb24/LnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG59XG5cbi8vICAgaW5pdF9GdW5jKGh0bWw6IGFueSkge1xuLy8gICBpZiAoaHRtbCkge1xuLy8gICAgIGxldCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4vLyAgICAgaWYgKGVkaXRvcikge1xuLy8gICAgICAgZWRpdG9yLmZvY3VzKCk7XG4vLyAgICAgICBlZGl0b3IuaW5uZXJIVE1MID0gaHRtbDtcblxuLy8gICAgICAgLy8gU2FuaXRpemUgdGhlIGNvbnRlbnQgYW5kIGFwcGx5IHN0eWxlc1xuLy8gICAgICAgdGhpcy5zYW5pdGl6ZWRDb250ZW50ID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodGhpcy5hcHBseUltYWdlU3R5bGVzKGh0bWwpKTtcbi8vICAgICAgIGVkaXRvci5pbm5lckhUTUwgPSB0aGlzLnNhbml0aXplZENvbnRlbnQgYXMgc3RyaW5nO1xuXG4vLyAgICAgICAvLyBQbGFjZSB0aGUgY2FyZXQgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudFxuLy8gICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuLy8gICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgXG4vLyAgICAgICBpZiAoZWRpdG9yLmxhc3RDaGlsZCkge1xuLy8gICAgICAgICAvLyBTZXQgdGhlIHJhbmdlIGF0IHRoZSBlbmQgb2YgdGhlIGVkaXRvcidzIGNvbnRlbnRcbi8vICAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXRvcik7XG4vLyAgICAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsgLy8gY29sbGFwc2UgdG8gdGhlIGVuZFxuLy8gICAgICAgICBzZWxlY3Rpb24/LnJlbW92ZUFsbFJhbmdlcygpO1xuLy8gICAgICAgICBzZWxlY3Rpb24/LmFkZFJhbmdlKHJhbmdlKTtcbi8vICAgICAgIH1cblxuLy8gICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4ge1xuLy8gICAgICAgICBpZiAoZWRpdG9yKSB7XG4vLyAgICAgICAgICAgdGhpcy5vbk1vZGVsQ2hhbmdlKGVkaXRvci5pbm5lckhUTUwpO1xuXG4vLyAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBjYXJldCByZW1haW5zIGF0IHRoZSBlbmQgYWZ0ZXIgbmV3IGNvbnRlbnQgaXMgYWRkZWRcbi8vICAgICAgICAgICBjb25zdCByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4vLyAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgIFxuLy8gICAgICAgICAgIGlmIChlZGl0b3IubGFzdENoaWxkKSB7XG4vLyAgICAgICAgICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdG9yKTtcbi8vICAgICAgICAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTsgLy8gY29sbGFwc2UgdG8gdGhlIGVuZFxuLy8gICAgICAgICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcbi8vICAgICAgICAgICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UocmFuZ2UpO1xuLy8gICAgICAgICAgIH1cbi8vICAgICAgICAgfVxuLy8gICAgICAgfSk7XG4vLyAgICAgfVxuLy8gICB9IGVsc2Uge1xuLy8gICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IG51bGw7XG4vLyAgIH1cbi8vIH1cblxuICBmb3JtYXQoY29tbWFuZDogc3RyaW5nLCB2YWx1ZT86IGFueSkge1xuICAgIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICBlZGl0b3IuZm9jdXMoKTtcbiAgICAgIGlmIChjb21tYW5kID09PSAnc3Vic2NyaXB0Jykge1xuICAgICAgICB0aGlzLmlzU3Vic2NyaXB0QWN0aXZlID0gIXRoaXMuaXNTdWJzY3JpcHRBY3RpdmU7XG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdzdWJzY3JpcHQnLCBmYWxzZSwgJycpO1xuICAgICAgfSBlbHNlIGlmIChjb21tYW5kID09PSAnc3VwZXJzY3JpcHQnKSB7XG4gICAgICAgIHRoaXMuaXNTdXBlcnNjcmlwdEFjdGl2ZSA9ICF0aGlzLmlzU3VwZXJzY3JpcHRBY3RpdmU7XG4gICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdzdXBlcnNjcmlwdCcsIGZhbHNlLCAnJyk7O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoY29tbWFuZCwgZmFsc2UsIHZhbHVlID8/ICcnKTtcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgY29uc3QgdGFnID0gdmFsdWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bPD5dL2csICcnKVxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGb3JtYXRCbG9jayA9IHRoaXMuZm9ybWF0QmxvY2tEZWNvZGUodGFnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAgdGhpcy5jaGVja0FjdGl2ZVN0YXRlcygpO1xuICAgICB0aGlzLmNoZWNrRm9ybWF0QmxvY2soKTtcbiAgfVxuXG4gIGNoZWNrQWN0aXZlU3RhdGVzKCkge1xuICAgIHRoaXMuaXNCb2xkQWN0aXZlID0gZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoJ2JvbGQnKTtcbiAgICB0aGlzLmlzSXRhbGljQWN0aXZlID0gZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoJ2l0YWxpYycpO1xuICAgIHRoaXMuaXNVbmRlcmxpbmVBY3RpdmUgPSBkb2N1bWVudC5xdWVyeUNvbW1hbmRTdGF0ZSgndW5kZXJsaW5lJyk7XG4gICAgdGhpcy5pc1N0cmlrZXRocm91Z2hBY3RpdmUgPSBkb2N1bWVudC5xdWVyeUNvbW1hbmRTdGF0ZSgnc3RyaWtldGhyb3VnaCcpO1xuICAgIHRoaXMuaXNTdWJzY3JpcHRBY3RpdmUgPSBkb2N1bWVudC5xdWVyeUNvbW1hbmRTdGF0ZSgnc3Vic2NyaXB0Jyk7XG4gICAgdGhpcy5pc1N1cGVyc2NyaXB0QWN0aXZlID0gZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoJ3N1cGVyc2NyaXB0Jyk7XG4gIH1cblxuICBjaGVja0Zvcm1hdEJsb2NrKCkge1xuICAgIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICBjb25zdCBmb3JtYXRCbG9jayA9IGRvY3VtZW50LnF1ZXJ5Q29tbWFuZFZhbHVlKCdmb3JtYXRCbG9jaycpO1xuICAgICAgdGhpcy5zZWxlY3RlZEZvcm1hdEJsb2NrID0gdGhpcy5mb3JtYXRCbG9ja0RlY29kZShmb3JtYXRCbG9jayk7XG4gICAgICAvLyBZb3UgY2FuIGZ1cnRoZXIgaGFuZGxlIHRoZSBmb3JtYXRCbG9jayB2YWx1ZSBhcyBuZWVkZWRcbiAgICB9XG4gIH1cblxuICBmb3JtYXRCbG9ja0RlY29kZShkYXRhOiBzdHJpbmcpOiBhbnkge1xuICAgIHN3aXRjaCAoZGF0YSkge1xuICAgICAgY2FzZSAnaDEnOlxuICAgICAgICByZXR1cm4gJ2hlYWRpbmcgMSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaDInOlxuICAgICAgICByZXR1cm4gJ2hlYWRpbmcgMic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaDMnOlxuICAgICAgICByZXR1cm4gJ2hlYWRpbmcgMyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaDQnOlxuICAgICAgICByZXR1cm4gJ2hlYWRpbmcgNCc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaDUnOlxuICAgICAgICByZXR1cm4gJ2hlYWRpbmcgNSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaDYnOlxuICAgICAgICByZXR1cm4gJ2hlYWRpbmcgNic7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncCc6XG4gICAgICAgIHJldHVybiAnbm9ybWFsJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ25vcm1hbCc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZUZvbnQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VsZWN0ZWRGb250ID0gZXZlbnQ7XG4gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2ZvbnROYW1lJywgZmFsc2UsIHRoaXMuc2VsZWN0ZWRGb250KTtcbiAgfVxuXG4gIGluc2VydENvZGVCbG9jaygpIHtcbiAgICBjb25zdCBjb2RlID0gYFxuICAgICAgPHByZSBzdHlsZT1cImZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDtcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxMHB4O1wiPlxuICAgICAgICA8Y29kZSBzdHlsZT1cImRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICAgZm9udC1mYW1pbHk6IE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XG4gICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XCIgY2xhc3M9XCJsYW5ndWFnZS1odG1sXCI+SW5zZXJ0IGNvZGUgaGVyZS4uLjwvY29kZT5cbiAgICAgIDwvcHJlPlxuICAgIGA7XG4gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBmYWxzZSwgY29kZSk7XG4gIH1cblxuICAvLyBjaGFuZ2VGb250U2l6ZShldmVudDogYW55KSB7XG4gIC8vICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2ZvbnRTaXplJywgZmFsc2UsICc3Jyk7XG4gIC8vICAgbGV0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgLy8gICBpZiAoZWRpdG9yKSB7XG4gIC8vICAgICBsZXQgZm9udEVsZW1lbnRzID0gZWRpdG9yLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb250Jyk7XG4gIC8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvbnRFbGVtZW50cy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgICBpZiAoZm9udEVsZW1lbnRzW2ldLnNpemUgPT0gXCI3XCIpIHtcbiAgLy8gICAgICAgICBmb250RWxlbWVudHNbaV0ucmVtb3ZlQXR0cmlidXRlKFwic2l6ZVwiKTtcbiAgLy8gICAgICAgICBmb250RWxlbWVudHNbaV0uc3R5bGUuZm9udFNpemUgPSB0aGlzLnNlbGVjdGVkRm9udFNpemUgKyAncHgnO1xuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyB9XG4gIGNoYW5nZUZvbnRTaXplKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBzZWxlY3RlZFRleHQgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgXG4gICAgaWYgKHNlbGVjdGVkVGV4dCAmJiBzZWxlY3RlZFRleHQucmFuZ2VDb3VudCA+IDApIHtcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBzZWxlY3RlZFRleHQuZ2V0UmFuZ2VBdCgwKTtcbiAgICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgc3Bhbi5zdHlsZS5mb250U2l6ZSA9IHRoaXMuc2VsZWN0ZWRGb250U2l6ZSArICdweCc7XG4gICAgICAgIHJhbmdlLnN1cnJvdW5kQ29udGVudHMoc3Bhbik7XG4gICAgfVxuICB9XG5cbiAgYWRkTGluaygpIHtcbiAgICBsZXQgdXJsID0gcHJvbXB0KFwiRW50ZXIgdGhlIGxpbmsgaGVyZTogXCIsIFwiaHR0cDovL1wiKTtcbiAgICBpZiAodXJsKSB7XG4gICAgICBkb2N1bWVudC5leGVjQ29tbWFuZChcImNyZWF0ZUxpbmtcIiwgZmFsc2UsIHVybCk7XG4gICAgfVxuICB9XG5cbiAgaW5zZXJ0c0ltYWdlKCkge1xuICAgIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgICBpZiAoZWRpdG9yKSB7XG4gICAgICBlZGl0b3IuZm9jdXMoKTtcbiAgICAgIGxldCBpbWFnZUlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlSW5wdXQnKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgaWYgKGltYWdlSW5wdXQpIHtcbiAgICAgICAgaW1hZ2VJbnB1dC5jbGljaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICBoYW5kbGVJbWFnZVVwbG9hZChldmVudDogYW55KSB7XG4gIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XG4gIGlmIChmaWxlKSB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XG4gICAgICBpbWcuc3JjID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgaW1nLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSBIVE1MIHN0cmluZyB3aXRoIHRoZSBleGFjdCB3aWR0aCBhbmQgaGVpZ2h0XG4gICAgICAgIGNvbnN0IGltZ0hUTUwgPSBgPGltZyBzcmM9XCIke2ltZy5zcmN9XCIgd2lkdGg9XCIkezc5NH1cIiA+YDtcbiAgICAgICAgLy8gSW5zZXJ0IHRoZSBpbWFnZSBpbnRvIHRoZSBlZGl0b3JcbiAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBmYWxzZSwgaW1nSFRNTCk7XG4gICAgICB9O1xuICAgIH07XG4gICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gIH1cbn1cblxuXG4gIC8vIGFkZFRhYmxlKCkge1xuICAvLyAgIGNvbnN0IHRhYmxlV2lkdGggPSA4MjU7IC8vIFRhYmxlIHdpZHRoIGluIHBpeGVsc1xuICAvLyAgIGNvbnN0IGNvbHMgPSAzOyAvLyBOdW1iZXIgb2YgY29sdW1uc1xuICAvLyAgIGNvbnN0IGNlbGxNaW5XaWR0aCA9IHRhYmxlV2lkdGggLyBjb2xzOyAvLyBDYWxjdWxhdGUgbWluaW11bSB3aWR0aCBmb3IgZWFjaCBjZWxsXG5cbiAgLy8gICBsZXQgdGFibGUgPSBgPGJyIC8+PHRhYmxlIHN0eWxlPVwid2lkdGg6ICR7dGFibGVXaWR0aH1weDtcIj5gO1xuICAvLyAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7IC8vIE51bWJlciBvZiByb3dzXG4gIC8vICAgICB0YWJsZSArPSAnPHRyID4nO1xuICAvLyAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgLy8gICAgICAgdGFibGUgKz0gYDx0ZCBzdHlsZT1cIiB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdvcmQtYnJlYWs6IGJyZWFrLWFsbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgbWluLXdpZHRoOiAke2NlbGxNaW5XaWR0aH1weDtcIj4mbmJzcDs8L3RkPmA7XG4gIC8vICAgICB9XG4gIC8vICAgICB0YWJsZSArPSAnPC90cj4nO1xuICAvLyAgIH1cbiAgLy8gICAgIHRhYmxlICs9ICc8L3RhYmxlPjxici8gPic7XG4gIC8vICAgICAvLyBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCB0YWJsZSk7XG4gIC8vICAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIC8vICAgaWYgKGVkaXRvcikge1xuICAvLyAgICAgZWRpdG9yLmZvY3VzKCk7XG4gIC8vICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIGZhbHNlLCB0YWJsZSk7XG4gIC8vICAgfVxuICAvLyAgIHRoaXMudGFibGVBZGRlZCA9IHRydWU7XG4gIC8vICAgdGhpcy5jaGVja1RhYmxlU2VsZWN0aW9uKCk7XG4gIC8vIH1cblxuICBhZGRUYWJsZSgpIHtcbiAgY29uc3QgdGFibGVXaWR0aCA9IDgyNTsgLy8gVGFibGUgd2lkdGggaW4gcGl4ZWxzXG4gIGNvbnN0IGNvbHMgPSAzOyAvLyBOdW1iZXIgb2YgY29sdW1uc1xuICBjb25zdCBjZWxsTWluV2lkdGggPSB0YWJsZVdpZHRoIC8gY29sczsgLy8gQ2FsY3VsYXRlIG1pbmltdW0gd2lkdGggZm9yIGVhY2ggY2VsbFxuXG4gIGxldCB0YWJsZSA9IGA8YnIgLz48dGFibGUgc3R5bGU9XCJ3aWR0aDogJHt0YWJsZVdpZHRofXB4O1wiPmA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7IC8vIE51bWJlciBvZiByb3dzXG4gICAgdGFibGUgKz0gYDx0ciBzdHlsZT1cImJvcmRlci1ib3R0b206ICR7dGhpcy50aGVtZU1vZGVDbHJWZXJ0aWNhbExpbmVGb3JUYWJsZSgpfVwiPmA7IC8vIEFkZCBib3JkZXItYm90dG9tIHRvIHRoZSByb3dcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHM7IGorKykge1xuICAgICAgdGFibGUgKz0gYDx0ZCBzdHlsZT1cIndvcmQtd3JhcDogYnJlYWstd29yZDsgd29yZC1icmVhazogYnJlYWstYWxsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBtaW4td2lkdGg6ICR7Y2VsbE1pbldpZHRofXB4O1wiPiZuYnNwOzwvdGQ+YDtcbiAgICB9XG4gICAgdGFibGUgKz0gJzwvdHI+JztcbiAgfVxuICB0YWJsZSArPSAnPC90YWJsZT48YnIvPic7XG5cbiAgY29uc3QgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICBpZiAoZWRpdG9yKSB7XG4gICAgZWRpdG9yLmZvY3VzKCk7XG4gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydEhUTUwnLCBmYWxzZSwgdGFibGUpO1xuICB9XG5cbiAgdGhpcy50YWJsZUFkZGVkID0gdHJ1ZTtcbiAgdGhpcy5jaGVja1RhYmxlU2VsZWN0aW9uKCk7XG59XG5cblxuXG5cbiAgY2hlY2tUYWJsZVNlbGVjdGlvbihldmVudD86IE1vdXNlRXZlbnQpIHtcbiAgICBsZXQgdGFyZ2V0ID0gZXZlbnQ/LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAodGFyZ2V0ICYmICh0YXJnZXQudGFnTmFtZSA9PT0gJ1REJyB8fCB0YXJnZXQudGFnTmFtZSA9PT0gJ1RIJykpIHtcbiAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRUYWJsZSA9IHRhcmdldC5jbG9zZXN0KCd0YWJsZScpIGFzIEhUTUxUYWJsZUVsZW1lbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNUYWJsZVNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGUgPSBudWxsO1xuICAgIH1cbiAgICBcbiAgICAvLyB0aGlzLmNoZWNrUGxhY2Vob2xkZXIoKTtcbiAgfVxuXG4gIGNoZWNrUGxhY2Vob2xkZXIoKSB7XG4gICAgLy8gbGV0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgICAvLyBpZiAoZWRpdG9yKSB7XG4gICAgLy8gICB0aGlzLmlzUGxhY2Vob2xkZXJWaXNpYmxlID0gZWRpdG9yLmlubmVySFRNTCA9PT0gJycgfHwgZWRpdG9yLmlubmVySFRNTCA9PT0gJzxicj4nO1xuICAgIC8vICAgaWYgKHRoaXMuaXNQbGFjZWhvbGRlclZpc2libGUpIHtcbiAgICAvLyAgICAgLy8gZWRpdG9yLmlubmVySFRNTCA9ICc8c3BhbiBjbGFzcz1cInBsYWNlaG9sZGVyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgY29sb3I6ICMwMDAwMDBcIj5JbnNlcnQgdGV4dCBoZXJlIC4uLjwvc3Bhbj4nO1xuICAgIC8vICAgfSBlbHNlIHtcbiAgICAvLyAgICAgbGV0IHBsYWNlaG9sZGVyID0gZWRpdG9yLnF1ZXJ5U2VsZWN0b3IoJy5wbGFjZWhvbGRlcicpO1xuICAgIC8vICAgICBpZiAocGxhY2Vob2xkZXIpIHtcbiAgICAvLyAgICAgICBlZGl0b3IucmVtb3ZlQ2hpbGQocGxhY2Vob2xkZXIpO1xuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gfVxuICB9XG5cbiAgb25Gb2N1cygpIHtcbiAgICAvLyBsZXQgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpO1xuICAgIC8vIGlmIChlZGl0b3IgJiYgdGhpcy5pc1BsYWNlaG9sZGVyVmlzaWJsZSkge1xuICAgIC8vICAgZWRpdG9yLmlubmVySFRNTCA9ICcnO1xuICAgIC8vICAgdGhpcy5pc1BsYWNlaG9sZGVyVmlzaWJsZSA9IGZhbHNlO1xuICAgIC8vIH1cbiAgfVxuXG4gIC8vIGNvbG9yQ2hhbmdlKG5ld0NvbG9yOiBzdHJpbmcpIHtcbiAgLy8gICB0aGlzLmNvbG9yID0gbmV3Q29sb3I7XG4gIC8vIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5jaGVja1BsYWNlaG9sZGVyKCk7XG4gIH1cblxuICAvLyBhZGRSb3coKSB7XG4gIC8vICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJsZSkge1xuICAvLyAgICAgbGV0IHJvdyA9IHRoaXMuc2VsZWN0ZWRUYWJsZS5pbnNlcnRSb3coKTtcbiAgLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3NbMF0uY2VsbHMubGVuZ3RoOyBpKyspIHtcbiAgLy8gICAgICAgbGV0IGNlbGwgPSByb3cuaW5zZXJ0Q2VsbChpKTtcbiAgLy8gICAgICAgY2VsbC5pbm5lckhUTUwgPSAnJm5ic3A7JztcbiAgLy8gICAgICAgY2VsbC5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkIGJsYWNrJztcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vIH1cblxuICBhZGRSb3coKSB7XG4gIGlmICh0aGlzLnNlbGVjdGVkVGFibGUpIHtcbiAgICBsZXQgcm93ID0gdGhpcy5zZWxlY3RlZFRhYmxlLmluc2VydFJvdygpO1xuICAgIHJvdy5zdHlsZS5ib3JkZXJCb3R0b20gPSB0aGlzLnRoZW1lTW9kZUNsclZlcnRpY2FsTGluZUZvclRhYmxlKCk7IC8vIEFkZCBib3R0b20gYm9yZGVyIHRvIHRoZSByb3dcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzWzBdLmNlbGxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY2VsbCA9IHJvdy5pbnNlcnRDZWxsKGkpO1xuICAgICAgY2VsbC5pbm5lckhUTUwgPSAnJm5ic3A7JztcbiAgICB9XG4gIH1cbn1cblxuXG4gIC8vIGRlbGV0ZVJvdygpIHtcbiAgLy8gICBpZiAodGhpcy5zZWxlY3RlZFRhYmxlKSB7XG4gIC8vICAgICB0aGlzLnNlbGVjdGVkVGFibGUuZGVsZXRlUm93KC0xKTtcbiAgLy8gICB9XG4gIC8vIH1cblxuLy8gICBkZWxldGVSb3coKSB7XG4vLyAgIGlmICh0aGlzLnNlbGVjdGVkVGFibGUpIHtcbi8vICAgICBsZXQgcm93SW5kZXggPSB0aGlzLnNlbGVjdGVkVGFibGUucm93cy5sZW5ndGggLSAxOyBcbi8vICAgICBpZiAod2luZG93LmdldFNlbGVjdGlvbikge1xuLy8gICAgICAgbGV0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbi8vICAgICAgIGlmIChzZWxlY3Rpb24pIHtcbi8vICAgICAgICAgbGV0IHJvdyA9IHNlbGVjdGlvbi5hbmNob3JOb2RlPy5wYXJlbnRFbGVtZW50Py5jbG9zZXN0KCd0cicpO1xuLy8gICAgICAgICBpZiAocm93KSB7XG4vLyAgICAgICAgICAgcm93SW5kZXggPSByb3cucm93SW5kZXg7XG4vLyAgICAgICAgIH1cbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgICAgdGhpcy5zZWxlY3RlZFRhYmxlLmRlbGV0ZVJvdyhyb3dJbmRleCk7XG4vLyAgIH1cbi8vIH1cblxuICBkZWxldGVSb3coKSB7XG4gIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgaWYgKCFzZWxlY3Rpb24ucmFuZ2VDb3VudCkgcmV0dXJuO1xuXG4gICAgY29uc3QgcmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcbiAgICBjb25zdCBzZWxlY3RlZE5vZGUgPSByYW5nZS5zdGFydENvbnRhaW5lcjtcbiAgICBjb25zdCByb3cgPSBzZWxlY3RlZE5vZGUucGFyZW50RWxlbWVudD8uY2xvc2VzdCgndHInKTtcblxuICAgIGlmIChyb3cpIHtcbiAgICAgIGNvbnN0IHRhYmxlID0gcm93LmNsb3Nlc3QoJ3RhYmxlJyk7XG4gICAgICBpZiAodGFibGUpIHtcbiAgICAgICAgdGFibGUuZGVsZXRlUm93KHJvdy5yb3dJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblxuICAvLyBhZGRDb2x1bW4oKSB7XG4gIC8vICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJsZSkge1xuICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkVGFibGUucm93cy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgICBsZXQgY2VsbCA9IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzW2ldLmluc2VydENlbGwoLTEpO1xuICAvLyAgICAgICBjZWxsLmlubmVySFRNTCA9ICcmbmJzcDsnO1xuICAvLyAgICAgICBjZWxsLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgYmxhY2snO1xuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gfVxuXG4vLyAgIGFkZENvbHVtbigpIHtcbi8vICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJsZSkge1xuLy8gICAgIGNvbnN0IGNvbHVtbkNvdW50ID0gdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3NbMF0uY2VsbHMubGVuZ3RoICsgMTsgLy8gTmV3IGNvbHVtbiBjb3VudFxuLy8gICAgIGNvbnN0IHRhYmxlV2lkdGggPSB0aGlzLnNlbGVjdGVkVGFibGUub2Zmc2V0V2lkdGg7XG4vLyAgICAgY29uc3QgbWluV2lkdGggPSB0YWJsZVdpZHRoIC8gY29sdW1uQ291bnQ7XG5cbi8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzLmxlbmd0aDsgaSsrKSB7XG4vLyAgICAgICBsZXQgY2VsbCA9IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzW2ldLmluc2VydENlbGwoLTEpO1xuLy8gICAgICAgY2VsbC5pbm5lckhUTUwgPSAnJm5ic3A7Jztcbi8vICAgICAgIGNlbGwuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCBibGFjayc7XG4vLyAgICAgICBjZWxsLnN0eWxlLm1pbldpZHRoID0gYCR7bWluV2lkdGh9cHhgO1xuLy8gICAgICAgY2VsbC5zdHlsZS53b3JkV3JhcCA9ICdicmVhay13b3JkJztcbi8vICAgICAgIGNlbGwuc3R5bGUud29yZEJyZWFrID0gJ2JyZWFrLWFsbCc7XG4vLyAgICAgICBjZWxsLnN0eWxlLndoaXRlU3BhY2UgPSAnbm9ybWFsJztcbi8vICAgICB9XG5cbi8vICAgICAvLyBVcGRhdGUgZXhpc3RpbmcgY2VsbHMnIG1pbldpZHRoXG4vLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkVGFibGUucm93cy5sZW5ndGg7IGkrKykge1xuLy8gICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnNlbGVjdGVkVGFibGUucm93c1tpXS5jZWxscy5sZW5ndGg7IGorKykge1xuLy8gICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGUucm93c1tpXS5jZWxsc1tqXS5zdHlsZS5taW5XaWR0aCA9IGAke21pbldpZHRofXB4YDtcbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgIH1cbiAgLy8gfVxuICBcbiAgYWRkQ29sdW1uKCkge1xuICBpZiAodGhpcy5zZWxlY3RlZFRhYmxlKSB7XG4gICAgY29uc3QgY29sdW1uQ291bnQgPSB0aGlzLnNlbGVjdGVkVGFibGUucm93c1swXS5jZWxscy5sZW5ndGggKyAxOyAvLyBOZXcgY29sdW1uIGNvdW50XG4gICAgY29uc3QgdGFibGVXaWR0aCA9IHRoaXMuc2VsZWN0ZWRUYWJsZS5vZmZzZXRXaWR0aDtcbiAgICBjb25zdCBtaW5XaWR0aCA9IHRhYmxlV2lkdGggLyBjb2x1bW5Db3VudDtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCBjZWxsID0gdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3NbaV0uaW5zZXJ0Q2VsbCgtMSk7XG4gICAgICBjZWxsLmlubmVySFRNTCA9ICcmbmJzcDsnO1xuICAgICAgY2VsbC5zdHlsZS53b3JkV3JhcCA9ICdicmVhay13b3JkJztcbiAgICAgIGNlbGwuc3R5bGUud29yZEJyZWFrID0gJ2JyZWFrLWFsbCc7XG4gICAgICBjZWxsLnN0eWxlLndoaXRlU3BhY2UgPSAnbm9ybWFsJztcbiAgICAgIGNlbGwuc3R5bGUubWluV2lkdGggPSBgJHttaW5XaWR0aH1weGA7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIGV4aXN0aW5nIHJvd3MnIGJvdHRvbSBib3JkZXJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGUucm93c1tpXS5zdHlsZS5ib3JkZXJCb3R0b20gPSB0aGlzLnRoZW1lTW9kZUNsclZlcnRpY2FsTGluZUZvclRhYmxlKCk7XG4gICAgfVxuICB9XG4gIH1cbiAgXG5cblxuXG5cbiAgZGVsZXRlQ29sdW1uKCkge1xuICBpZiAodGhpcy5zZWxlY3RlZFRhYmxlKSB7XG4gICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcbiAgICAgIGxldCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgIGxldCBjZWxsID0gc2VsZWN0aW9uLmFuY2hvck5vZGU/LnBhcmVudEVsZW1lbnQ/LmNsb3Nlc3QoJ3RkLCB0aCcpIGFzIEhUTUxUYWJsZUNlbGxFbGVtZW50O1xuICAgICAgICBpZiAoY2VsbCkge1xuICAgICAgICAgIGxldCBjZWxsSW5kZXggPSBjZWxsLmNlbGxJbmRleDtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVGFibGUucm93c1tpXS5kZWxldGVDZWxsKGNlbGxJbmRleCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiAgdGhlbWVNb2RlQ2xyVmVydGljYWxMaW5lRm9yVGFibGUoKSB7XG4gICAgY29uc3QgY2xyTW9kZSA9IGRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCdkYXRhLWxheW91dC1jb2xvcicpXG4gICAgaWYgKGNsck1vZGUgPT0gJ2RhcmsnKSB7XG4gICAgICByZXR1cm4gJzJweCBzb2xpZCAjNDE0MTQxICFpbXBvcnRhbnQnXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnMnB4IHNvbGlkICM1RjVGNUYgIWltcG9ydGFudCdcbiAgICB9XG4gIH1cblxuICBhZGp1c3RUYWJsZVdpZHRoKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZFRhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVGFibGUuc3R5bGUud2lkdGggPSBldmVudC50YXJnZXQudmFsdWUgKyAncHgnO1xuICAgIH1cbiAgfVxuXG4gIGFkanVzdENlbGxXaWR0aChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJsZSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkVGFibGUucm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzW2ldLmNlbGxzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3NbaV0uY2VsbHNbal0uc3R5bGUud2lkdGggPSBldmVudC50YXJnZXQudmFsdWUgKyAncHgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRqdXN0Q2VsbEhlaWdodChldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRUYWJsZSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNlbGVjdGVkVGFibGUucm93cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuc2VsZWN0ZWRUYWJsZS5yb3dzW2ldLmNlbGxzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZFRhYmxlLnJvd3NbaV0uY2VsbHNbal0uc3R5bGUuaGVpZ2h0ID0gZXZlbnQudGFyZ2V0LnZhbHVlICsgJ3B4JztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2FyZXRUb0VuZChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICBpZiAoc2VsKSB7XG4gICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCk7XG4gICAgcmFuZ2UuY29sbGFwc2UoZmFsc2UpO1xuICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vIG9wZW5Db2xvclBpY2tlcihpbnB1dElkOiBzdHJpbmcpIHtcbiAgLy8gICBjb25zdCBpbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbnB1dElkKTtcbiAgLy8gICBpZiAoaW5wdXRFbGVtZW50KSB7XG4gIC8vICAgICBpbnB1dEVsZW1lbnQuY2xpY2soKTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvLyBzZXRUZXh0Q29sb3IoZXZlbnQ6IGFueSkge1xuICAvLyAgIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgLy8gICBpZiAoZWRpdG9yKSB7XG4gIC8vICAgICBlZGl0b3IuZm9jdXMoKTtcbiAgLy8gICAgIGNvbnN0IGNvbG9yID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAvLyAgICAgdGhpcy5zZWxlY3RlZFRleHRDb2xvciA9IGNvbG9yO1xuICAvLyAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2ZvcmVDb2xvcicsIGZhbHNlLCBjb2xvcik7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgLy8gc2V0QmFja2dyb3VuZENvbG9yKGV2ZW50OiBhbnkpIHtcbiAgLy8gICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIC8vICAgaWYgKGVkaXRvcikge1xuICAvLyAgICAgZWRpdG9yLmZvY3VzKCk7XG4gIC8vICAgICBjb25zdCBjb2xvciA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgLy8gICAgIHRoaXMuYmFja2dyb3VuZENvbG9yID0gY29sb3I7XG4gIC8vICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnaGlsaXRlQ29sb3InLCBmYWxzZSwgY29sb3IpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIHByaXZhdGUgc2F2ZWRTZWxlY3Rpb246IFJhbmdlIHwgbnVsbCA9IG51bGw7XG5cbm9wZW5Db2xvclBpY2tlcihpbnB1dElkOiBzdHJpbmcpIHtcbiAgY29uc3QgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaW5wdXRJZCkgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgaWYgKGlucHV0RWxlbWVudCkge1xuICAgIC8vIFNhdmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGlmIChzZWxlY3Rpb24gJiYgc2VsZWN0aW9uLnJhbmdlQ291bnQgPiAwKSB7XG4gICAgICB0aGlzLnNhdmVkU2VsZWN0aW9uID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG4gICAgfVxuICAgIGlucHV0RWxlbWVudC5jbGljaygpO1xuICB9XG59XG5cbnNldFRleHRDb2xvcihldmVudDogYW55KSB7XG4gIGlmICh0aGlzLnNhdmVkU2VsZWN0aW9uKSB7XG4gICAgY29uc3QgY29sb3IgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5zZWxlY3RlZFRleHRDb2xvciA9IGNvbG9yO1xuXG4gICAgLy8gUmVzdG9yZSB0aGUgc2F2ZWQgc2VsZWN0aW9uXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZSh0aGlzLnNhdmVkU2VsZWN0aW9uKTtcblxuICAgICAgLy8gQXBwbHkgdGhlIGNvbG9yIHVzaW5nIGEgc3BhblxuICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnNhdmVkU2VsZWN0aW9uO1xuICAgICAgY29uc3Qgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIHNwYW4uc3R5bGUuY29sb3IgPSBjb2xvcjtcbiAgICAgIHNwYW4udGV4dENvbnRlbnQgPSByYW5nZS50b1N0cmluZygpO1xuXG4gICAgICAvLyBSZXBsYWNlIHRoZSBzZWxlY3RlZCB0ZXh0IHdpdGggdGhlIHN0eWxlZCBzcGFuXG4gICAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShzcGFuKTtcblxuICAgICAgLy8gQ2xlYXIgdGhlIHNhdmVkIHNlbGVjdGlvblxuICAgICAgdGhpcy5zYXZlZFNlbGVjdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG59XG5cbiAgc2V0QmFja2dyb3VuZENvbG9yKGV2ZW50OiBhbnkpIHtcbiAgaWYgKHRoaXMuc2F2ZWRTZWxlY3Rpb24pIHtcbiAgICBjb25zdCBjb2xvciA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICB0aGlzLmJhY2tncm91bmRDb2xvciA9IGNvbG9yO1xuXG4gICAgLy8gUmVzdG9yZSB0aGUgc2F2ZWQgc2VsZWN0aW9uXG4gICAgY29uc3Qgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgIGlmIChzZWxlY3Rpb24pIHtcbiAgICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZSh0aGlzLnNhdmVkU2VsZWN0aW9uKTtcblxuICAgICAgLy8gQXBwbHkgdGhlIGJhY2tncm91bmQgY29sb3IgdXNpbmcgYSBzcGFuXG4gICAgICBjb25zdCByYW5nZSA9IHRoaXMuc2F2ZWRTZWxlY3Rpb247XG4gICAgICBjb25zdCBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgc3Bhbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjtcbiAgICAgIHNwYW4udGV4dENvbnRlbnQgPSByYW5nZS50b1N0cmluZygpO1xuXG4gICAgICAvLyBSZXBsYWNlIHRoZSBzZWxlY3RlZCB0ZXh0IHdpdGggdGhlIHN0eWxlZCBzcGFuXG4gICAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShzcGFuKTtcblxuICAgICAgLy8gQ2xlYXIgdGhlIHNhdmVkIHNlbGVjdGlvblxuICAgICAgdGhpcy5zYXZlZFNlbGVjdGlvbiA9IG51bGw7XG4gICAgfVxuICB9XG4gIH1cbiAgXG4gIC8vIGNvbG9yQ2hhbmdlZChldmVudDogYW55KSB7XG4gIC8vICAgdGhpcy5jb2xvciA9IGV2ZW50LmNvbG9yLmhleDsgXG4gIC8vIH1cblxuICBwdWJsaWMgbG9nRXZlbnQoZXZlbnQ6IGFueSwgdHJpZ2dlcjogYW55KSB7XG4gICAgY29uc3QgY29sb3IgPSBldmVudDtcbiAgICB0aGlzLnNldFRleHRDb2xvcihjb2xvcilcbiAgICB0aGlzLnNlbGVjdGVkVGV4dENvbG9yID0gZXZlbnRcbiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnZm9yZUNvbG9yJywgZmFsc2UsIGV2ZW50KTtcbiAgICAvLyB0aGlzLmxvZ3MudW5zaGlmdChbdGhpcy5sb2dzLmxlbmd0aCArIDEsIHRyaWdnZXIsIGV2ZW50XSk7XG4gIH1cbiAgXG5cbiAgZWRpdEltYWdlKCkge1xuICAgIGxldCBkYXRhIFxuICAgIGNvbnNvbGUubG9nKCd0aGlzLmVkaXRvckZyb20gPScsdGhpcy5lZGl0b3JGcm9tKVxuICAgIHN3aXRjaCAodGhpcy5lZGl0b3JGcm9tLm5hbWUpIHtcbiAgICAgIGNhc2UgJ3NlY3Rpb24tY29udGVudCc6XG4gICAgICAgIGRhdGEgPSB7IGVkaXRJTUc6IHRydWUsIGZyb206ICdodG1sRWRpdG9yJywgaW5kZXg6IHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXgsIGlkOiB0aGlzLmVkaXRvckZyb20uaWQgfTtcbiAgICAgICAgY29uc3QgY29tcHJlc3NlZERhdGE6IHN0cmluZyA9IGNvbXByZXNzKEpTT04uc3RyaW5naWZ5KHRoaXMuaW1hZ2VFZGl0VXJsKSk7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2VkaXRJbWFnZUZyb21UZW1wJywgY29tcHJlc3NlZERhdGEpO1xuICAgICAgICBjb25zdCBjb21wcmVzc2VkRGF0YTIgPSBjb21wcmVzcyhKU09OLnN0cmluZ2lmeSh0aGlzLnNhbml0aXplZENvbnRlbnQpKTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgndGV4dEVkaXRvcicsIGNvbXByZXNzZWREYXRhMik7XG4gICAgICAgIC8vIGFsZXJ0KCdnbyB0byBlZGl0b3IhJylcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvSU1HRWRpdG9yKGRhdGEpO1xuICAgICAgICB0aGlzLmltYWdlRWRpdC5lbWl0KClcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjcmVhdGUtZG9jdW1lbnQnOlxuICAgICAgICB0aGlzLmltYWdlRWRpdC5lbWl0KClcbiAgICAgICAgZGF0YSA9IHsgZWRpdElNRzogdHJ1ZSwgZnJvbTogJ2NyZWF0ZURvY3VtZW50JywgaW5kZXg6IHRoaXMuc2VsZWN0ZWRJdGVtSW5kZXgsIGlkOiB0aGlzLmVkaXRvckZyb20uaWQsIHNlY3Rpb246IHRoaXMuZWRpdG9yRnJvbS5zZWN0aW9uLCByZXBvcnRTZWN0aW9uSWQ6IHRoaXMuZWRpdG9yRnJvbS5yZXBvcnRTZWN0aW9uSWQgfTtcbiAgICAgICAgLy8gdGhpcy5vcGVuRGlhbG9nKGRhdGEpXG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhMyA9IGNvbXByZXNzKEpTT04uc3RyaW5naWZ5KHRoaXMuaW1hZ2VFZGl0VXJsKSk7XG4gICAgICAgIGNvbnN0IGNvbXByZXNzZWREYXRhNCA9IGNvbXByZXNzKHRoaXMuZWRpdG9yVGV4dCk7XG5cbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZWRpdEltYWdlRnJvbVRlbXAyJywgY29tcHJlc3NlZERhdGEzKTtcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgndGV4dEVkaXRvcjInLCBjb21wcmVzc2VkRGF0YTQpO1xuICAgICAgICB0aGlzLm5hdmlnYXRlVG9JTUdFZGl0b3IoZGF0YSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbnVsbFxuICAgICAgICAvLyBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdlZGl0SW1hZ2VGcm9tVGVtcCcpO1xuICAgICAgICAvLyBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdlZGl0SW1hZ2VGcm9tVGVtcDInKTtcbiAgICAgICAgLy8gc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgndGVtcGxhdGVFZGl0b3InKTtcbiAgICAgICAgLy8gc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgndGV4dEVkaXRvcicpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgLy8gaWYgKHRoaXMuZWRpdG9yRnJvbSA9PT0gJ3NlY3Rpb24tY29udGVudCcpIHtcbiAgICAvLyAgIGNvbnN0IGRhdGEgPSB7ZWRpdElNRzogdHJ1ZSwgZnJvbTogJ2h0bWxFZGl0b3InLCBpbmRleDogdGhpcy5zZWxlY3RlZEl0ZW1JbmRleH1cbiAgICAvLyAgIHRoaXMubmF2aWdhdGVUb0lNR0VkaXRvcihkYXRhKVxuICAgIC8vICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnZWRpdEltYWdlRnJvbVRlbXAnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmltYWdlRWRpdFVybCkpXG4gICAgLy8gICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd0ZXh0RWRpdG9yJywgdGhpcy5lZGl0b3JUZXh0KVxuICAgIC8vIH0gXG4gICAgXG4gIH1cblxuICBvcGVuRGlhbG9nKCBpdGVtOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBsZXQgZGF0YTogYW55O1xuICAgIC8vICAgZGF0YSA9IGl0ZW1cbiAgICAvLyBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEltYWdlRWRpdG9yTW9kYWxDb21wb25lbnQse1xuICAgIC8vICAgbWluV2lkdGg6ICcxMDAlJywgbWluSGVpZ2h0OiAnMTAwdmgnLCBwYW5lbENsYXNzOiAndGhlbWUtMkIyOTM2JyAsZGlzYWJsZUNsb3NlOiB0cnVlLCBkYXRhOiBkYXRhXG4gICAgLy8gfSk7XG4gICAgLy8gZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgLy8gICBjb25zb2xlLmxvZygncmVzdWx0ID09PT4gaW1nID0gJywgcmVzdWx0KVxuICAgIC8vICAgY29uc3QgaW1nVXJsID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnZWRpdEltYWdlRnJvbVRlbXAyJyk7XG4gICAgLy8gICAgIGlmIChpbWdVcmwpIHtcbiAgICAvLyAgICAgICB0aGlzLnJlcGxhY2VJbWFnZVNyYyhpbWdVcmwsICByZXN1bHQuaW5kZXguaW5kZXgpO1xuICAgIC8vICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ2VkaXRJbWFnZUZyb21UZW1wMicpO1xuICAgIC8vICAgICB9XG4gICAgLy8gfSk7XG4gIH1cblxuICByZXBsYWNlSW1hZ2VTUkMobmV3U3JjOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyh0aGlzLmVkaXRvclRleHQsICd0ZXh0L2h0bWwnKTtcbiAgICBjb25zdCBpbWdUYWdzID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbWcnKTtcblxuICBpZiAoaW1nVGFncyAmJiBpbWdUYWdzLmxlbmd0aCA+IDApIHtcbiAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGltZ1RhZ3MubGVuZ3RoKSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIHNyYyBhdHRyaWJ1dGUgb2YgdGhlIGltZyBhdCB0aGUgc3BlY2lmaWVkIGluZGV4XG4gICAgICBcbiAgICAgIGltZ1RhZ3NbaW5kZXhdLnNldEF0dHJpYnV0ZSgnc3JjJywgbmV3U3JjKTtcbiAgICAgIHRoaXMuZWRpdG9yVGV4dCA9IGRvYy5ib2R5LmlubmVySFRNTDtcbiAgICBcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihgSW52YWxpZCBpbmRleCAke2luZGV4fS4gVGhlcmUgYXJlIG9ubHkgJHtpbWdUYWdzLmxlbmd0aH0gPGltZz4gdGFncy5gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcignTm8gPGltZz4gdGFncyBmb3VuZCBpbiB0aGUgZWRpdG9yIHRleHQuJyk7XG4gIH1cbiAgfVxuXG4gIG5hdmlnYXRlVG9JTUdFZGl0b3IoZGF0YTogYW55KSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvYWRtaW4vaW1hZ2UtZWRpdG9yJ10sIHsgcXVlcnlQYXJhbXM6IHtkYXRhIDogSlNPTi5zdHJpbmdpZnkoZGF0YSl9IH0pXG4gIH1cblxuICAvLyAgb25UZXh0U2VsZWN0KGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gIC8vICAgaWYgKHRoaXMudG9vbGJhck1vZGUgPT09ICdidWJibGUnKSB7XG4gIC8vICAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIC8vICAgICBpZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5yYW5nZUNvdW50ID4gMCkge1xuICAvLyAgICAgICBjb25zdCByYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xuICAvLyAgICAgICBpZiAoIXJhbmdlLmNvbGxhcHNlZCkge1xuICAvLyAgICAgICAgIGNvbnN0IHJlY3QgPSByYW5nZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgLy8gICAgICAgICB0aGlzLnRvb2xiYXJUb3AgPSByZWN0LmJvdHRvbSArIHdpbmRvdy5zY3JvbGxZICsgMTA7XG4gIC8vICAgICAgICAgdGhpcy50b29sYmFyTGVmdCA9IHJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYICsgKHJlY3Qud2lkdGggLyAyKSAtIDUwO1xuICAvLyAgICAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSB0cnVlO1xuICAvLyAgICAgICB9IGVsc2Uge1xuICAvLyAgICAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSBmYWxzZTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gfVxuXG4gb25UZXh0U2VsZWN0KGV2ZW50PzogTW91c2VFdmVudCk6IHZvaWQge1xuICBpZiAodGhpcy50b29sYmFyTW9kZSA9PT0gJ2J1YmJsZScpIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24ucmFuZ2VDb3VudCA+IDApIHtcbiAgICAgIGNvbnN0IHJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG4gICAgICBpZiAoIXJhbmdlLmNvbGxhcHNlZCkge1xuICAgICAgICBjb25zdCByZWN0ID0gcmFuZ2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbFkgPSAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgICAgY29uc3Qgc2Nyb2xsWCA9ICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDtcbiAgICAgICAgdGhpcy50b29sYmFyVG9wID0gcmVjdC50b3AgKyBzY3JvbGxZIC0gNzU7XG4gICAgICAgIHRoaXMudG9vbGJhckxlZnQgPSByZWN0LmxlZnQgKyBzY3JvbGxYICsgKHJlY3Qud2lkdGggLyAyKSAtIDMyNTtcbiAgICAgICAgdGhpcy5zaG93VG9vbGJhciA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNob3dUb29sYmFyID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd1Rvb2xiYXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cbn1cblxuXG4vLyBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkge1xuLy8gICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4vLyAgICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGE7XG4vLyAgICAgaWYgKGNsaXBib2FyZERhdGEpIHtcbi8vICAgICAgIGNvbnN0IHBhc3RlZFRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbi8vICAgICAgIGlmICh0aGlzLmlzVGFibGVEYXRhKHBhc3RlZFRleHQpKSB7XG4vLyAgICAgICAgIGNvbnN0IGh0bWwgPSB0aGlzLmNvbnZlcnRUZXh0VG9UYWJsZShwYXN0ZWRUZXh0KTtcbi8vICAgICAgICAgdGhpcy5pbnNlcnRIdG1sQXRDYXJldChodG1sKTtcbi8vICAgICAgIH0gZWxzZSB7XG4vLyAgICAgICAgIHRoaXMuaW5zZXJ0SHRtbEF0Q2FyZXQocGFzdGVkVGV4dCk7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICB9XG5cbiAgLy8gb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgLy8gICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAvLyAgIGNvbnN0IGNsaXBib2FyZERhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhO1xuICAvLyAgIGlmIChjbGlwYm9hcmREYXRhKSB7XG4gIC8vICAgICAvLyBIYW5kbGUgaW1hZ2UgZGF0YVxuICAvLyAgICAgY29uc3QgaXRlbXMgPSBjbGlwYm9hcmREYXRhLml0ZW1zO1xuICAvLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuICAvLyAgICAgICBpZiAoaXRlbXNbaV0udHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xuICAvLyAgICAgICAgIGNvbnN0IGZpbGUgPSBpdGVtc1tpXS5nZXRBc0ZpbGUoKTtcbiAgLy8gICAgICAgICBpZiAoZmlsZSkge1xuICAvLyAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgLy8gICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogYW55KSA9PiB7XG4gIC8vICAgICAgICAgICAgIGNvbnN0IGltZ0h0bWwgPSBgPGltZyBzcmM9XCIke2UudGFyZ2V0LnJlc3VsdH1cIiBhbHQ9XCJQYXN0ZWQgSW1hZ2VcIiBzdHlsZT1cIm1heC13aWR0aDogMTAwJTtcIi8+YDtcbiAgLy8gICAgICAgICAgICAgdGhpcy5pbnNlcnRIdG1sQXRDYXJldChpbWdIdG1sKTtcbiAgLy8gICAgICAgICAgIH07XG4gIC8vICAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgLy8gICAgICAgICAgIHJldHVybjsgLy8gRXhpdCBpZiBhbiBpbWFnZSBpcyBoYW5kbGVkXG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG5cbiAgLy8gICAgIC8vIEhhbmRsZSB0ZXh0IG9yIHRhYmxlIGRhdGFcbiAgLy8gICAgIGNvbnN0IHBhc3RlZFRleHQgPSBjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKTtcbiAgLy8gICAgIGlmICh0aGlzLmlzVGFibGVEYXRhKHBhc3RlZFRleHQpKSB7XG4gIC8vICAgICAgIGNvbnN0IGh0bWwgPSB0aGlzLmNvbnZlcnRUZXh0VG9UYWJsZShwYXN0ZWRUZXh0KTtcbiAgLy8gICAgICAgdGhpcy5pbnNlcnRIdG1sQXRDYXJldChodG1sKTtcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIHRoaXMuaW5zZXJ0SHRtbEF0Q2FyZXQocGFzdGVkVGV4dCk7XG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGNsaXBib2FyZERhdGEgPSBldmVudC5jbGlwYm9hcmREYXRhO1xuICAgIGlmIChjbGlwYm9hcmREYXRhKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNsaXBib2FyZERhdGEuaXRlbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGNsaXBib2FyZERhdGEuaXRlbXNbaV07XG5cbiAgICAgICAgaWYgKGl0ZW0udHlwZS5zdGFydHNXaXRoKFwiaW1hZ2UvXCIpKSB7XG4gICAgICAgICAgLy8gSGFuZGxlIGltYWdlIHBhc3RlXG4gICAgICAgICAgY29uc3QgZmlsZSA9IGl0ZW0uZ2V0QXNGaWxlKCk7XG4gICAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpbWdIdG1sID0gYDxpbWcgc3JjPVwiJHtlLnRhcmdldC5yZXN1bHR9XCIgYWx0PVwiUGFzdGVkIEltYWdlXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDEwMCU7XCIgLz5gO1xuICAgICAgICAgICAgICB0aGlzLmluc2VydEh0bWxBdENhcmV0KGltZ0h0bWwpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09IFwidGV4dC9odG1sXCIpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgSFRNTCBwYXN0ZVxuICAgICAgICAgIC8vIGNvbnN0IGh0bWxEYXRhID0gY2xpcGJvYXJkRGF0YS5nZXREYXRhKFwidGV4dC9odG1sXCIpO1xuICAgICAgICAgIGlmICh0aGlzLmlzVGFibGVEYXRhKGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9odG1sJykpKSB7XG4gICAgICAgICAgICBjb25zdCBodG1sID0gdGhpcy5jb252ZXJ0VGV4dFRvVGFibGUoY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L2h0bWwnKSk7XG4gICAgICAgICAgICB0aGlzLmluc2VydEh0bWxBdENhcmV0KGh0bWwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEh0bWxBdENhcmV0KGNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9odG1sJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB0aGlzLmluc2VydEh0bWxBdENhcmV0KGh0bWxEYXRhKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSBcInRleHQvcGxhaW5cIikge1xuICAgICAgICAgIC8vIEhhbmRsZSBwbGFpbiB0ZXh0IHBhc3RlXG4gICAgICAgICAgaWYgKHRoaXMuaXNUYWJsZURhdGEoY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJykpKSB7XG4gICAgICAgICAgICBjb25zdCBodG1sID0gdGhpcy5jb252ZXJ0VGV4dFRvVGFibGUoY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0L3BsYWluJykpO1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRIdG1sQXRDYXJldChodG1sKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRIdG1sQXRDYXJldChjbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGNvbnN0IHBsYWluVGV4dCA9IGNsaXBib2FyZERhdGEuZ2V0RGF0YShcInRleHQvcGxhaW5cIik7XG4gICAgICAgICAgLy8gdGhpcy5pbnNlcnRIdG1sQXRDYXJldChwbGFpblRleHQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlzRXhjZWxEYXRhKGh0bWw6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBodG1sLmluY2x1ZGVzKCd4bWxuczpvPVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlXCInKSB8fCBcbiAgICAgICAgICBodG1sLmluY2x1ZGVzKCd4bWxuczp4PVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6ZXhjZWxcIicpO1xuICB9XG5cbiAgY29udmVydEV4Y2VsSHRtbFRvVGFibGUoaHRtbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG4gICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyhodG1sLCAndGV4dC9odG1sJyk7XG4gICAgY29uc3QgdGFibGUgPSBkb2MucXVlcnlTZWxlY3RvcigndGFibGUnKTtcbiAgICByZXR1cm4gdGFibGUgPyB0YWJsZS5vdXRlckhUTUwgOiAnJzsgLy8gRXh0cmFjdCBvbmx5IHRoZSB0YWJsZSBwYXJ0XG4gIH1cblxuXG5cblxuICBpc1RhYmxlRGF0YSh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCByb3dzID0gdGV4dC5zcGxpdCgnXFxuJyk7XG4gICAgcmV0dXJuIHJvd3MubGVuZ3RoID4gMSAmJiByb3dzWzBdLnNwbGl0KCdcXHQnKS5sZW5ndGggPiAxO1xuICB9XG5cbiAgY29udmVydFRleHRUb1RhYmxlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm93cyA9IHRleHQuc3BsaXQoJ1xcbicpLmZpbHRlcihyb3cgPT4gcm93LnRyaW0oKSAhPT0gJycpO1xuICAgIGNvbnN0IHRhYmxlUm93cyA9IHJvd3MubWFwKHJvdyA9PiB7XG4gICAgICBjb25zdCBjZWxscyA9IHJvdy5zcGxpdCgnXFx0JykubWFwKGNlbGwgPT4gYDx0ZCBjbGFzcz1cInB4LTEgcHktMVwiID4ke2NlbGx9PC90ZD5gKS5qb2luKCcnKTtcbiAgICAgIHJldHVybiBgPHRyIGNsYXNzPVwidGFibGUtYm9yZGVyLXRvcFwiIHN0eWxlPVwiYm9yZGVyLXRvcDogJHt0aGlzLnRoZW1lTW9kZVRhYmxlQm9yZGVyVG9wKCl9OyB3aWR0aDogMTAwJSAhaW1wb3J0YW50XCI+JHtjZWxsc308L3RyPmA7XG4gICAgfSkuam9pbignJyk7XG4gICAgcmV0dXJuIGA8dGFibGU+JHt0YWJsZVJvd3N9PC90YWJsZT5gO1xuICB9XG5cbiAgaW5zZXJ0SHRtbEF0Q2FyZXQoaHRtbDogc3RyaW5nKSB7XG4gICAgY29uc3QgcmFuZ2UgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk/LmdldFJhbmdlQXQoMCk7XG4gICAgaWYgKHJhbmdlKSB7XG4gICAgICByYW5nZS5kZWxldGVDb250ZW50cygpO1xuICAgICAgY29uc3QgdGVtcERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGVtcERpdi5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgY29uc3QgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgIGxldCBub2RlO1xuICAgICAgd2hpbGUgKChub2RlID0gdGVtcERpdi5maXJzdENoaWxkKSkge1xuICAgICAgICBmcmFnLmFwcGVuZENoaWxkKG5vZGUpO1xuICAgICAgfVxuICAgICAgcmFuZ2UuaW5zZXJ0Tm9kZShmcmFnKTtcbiAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICB0aGVtZU1vZGVUYWJsZUJvcmRlclRvcCgpIHtcbiAgICBjb25zdCBjbHJNb2RlID0gZG9jdW1lbnQuYm9keS5nZXRBdHRyaWJ1dGUoJ2RhdGEtbGF5b3V0LWNvbG9yJylcbiAgICBpZiAoY2xyTW9kZSA9PSAnZGFyaycpIHtcbiAgICAgIHJldHVybiAnMXB4IHNvbGlkICNEMEQwRDA7ICFpbXBvcnRhbnQnXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnMXB4IHNvbGlkICM0MTQxNDEgIWltcG9ydGFudCdcbiAgICB9XG4gIH1cblxuIFxuICBwdWJsaWMgb3BlbkZ1bGxzY3JlZW4oKSB7XG4gICAgdmFyIGVsZW06IGFueSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGV4dEVkaXRvclwiKTtcbiAgICB0aGlzLmlzRnVsbFNjcmVlbiA9IHRydWU7XG4gICAgaWYgKGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgIGVsZW0ucmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICB9IGVsc2UgaWYgKGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4pIHtcbiAgICAgIGVsZW0ubW96UmVxdWVzdEZ1bGxTY3JlZW4oKTtcbiAgICB9IGVsc2UgaWYgKGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4pIHtcbiAgICAgIGVsZW0ud2Via2l0UmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICB9IGVsc2UgaWYgKGVsZW0ubXNSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgZWxlbS5tc1JlcXVlc3RGdWxsc2NyZWVuKCk7XG4gICAgfVxuICAgIHRoaXMuc3R5bGUgPSB7XG4gICAgICAnbWluLWhlaWdodCc6ICc5MHZoJyxcbiAgICAgICdtYXgtaGVpZ2h0JzogJzkwdmgnLFxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbG9zZUZ1bGxzY3JlZW4oKSB7XG4gICAgaWYgKGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKSB7XG4gICAgICBkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpO1xuICAgICAgdGhpcy5pc0Z1bGxTY3JlZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMuc3R5bGUgPSB7XG4gICAgICAgICdtaW4taGVpZ2h0JzogJzQwMHB4JyxcbiAgICAgICAgJ21heC1oZWlnaHQnOiAnNDAwcHgnLFxuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgY2xlYXJUZXh0RWRpdG9yKCkge1xuICAgIHRoaXMuZWRpdG9yVGV4dENsZWFyLmVtaXQoKVxuICB9XG5cbiAgc2V0dXBIaXN0b3J5KCkge1xuICAgIHRoaXMuc2F2ZVN0YXRlKCk7XG4gICAgIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgXG4gICAgaWYgKGVkaXRvcikge1xuICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKCkgPT4gdGhpcy5vbklucHV0KCkpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXQoKSB7XG4gICAgdGhpcy5zYXZlU3RhdGUoKTtcbiAgfVxuXG4gIHNhdmVTdGF0ZSgpIHtcbiAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIFxuICAgIGlmIChlZGl0b3IpIHtcbiAgICAgIGNvbnN0IGVkaXRvckNvbnRlbnQgPSBlZGl0b3IuaW5uZXJIVE1MO1xuICAgICAgaWYgKHRoaXMuaGlzdG9yeUluZGV4ID09PSB0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLmhpc3RvcnkucHVzaChlZGl0b3JDb250ZW50KTtcbiAgICAgICAgdGhpcy5yZWRvU3RhY2sgPSBbXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlzdG9yeSA9IHRoaXMuaGlzdG9yeS5zbGljZSgwLCB0aGlzLmhpc3RvcnlJbmRleCArIDEpO1xuICAgICAgICB0aGlzLmhpc3RvcnkucHVzaChlZGl0b3JDb250ZW50KTtcbiAgICAgICAgdGhpcy5yZWRvU3RhY2sgPSBbXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGlzdG9yeUluZGV4Kys7XG4gICAgfVxuICB9XG4gIHVuZG8oKSB7XG4gICAgaWYgKHRoaXMuaGlzdG9yeUluZGV4ID4gMCkge1xuICAgICAgdGhpcy5yZWRvU3RhY2sucHVzaCh0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5SW5kZXhdKTtcbiAgICAgIHRoaXMuaGlzdG9yeUluZGV4LS07XG4gICAgICBjb25zdCBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7XG4gIFxuICAgICAgaWYgKGVkaXRvcikge1xuICAgICAgICB0aGlzLnNhbml0aXplZENvbnRlbnQgPSB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5SW5kZXhdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlZG8oKSB7XG4gICAgaWYgKHRoaXMucmVkb1N0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHJlZG9Db250ZW50ID0gdGhpcy5yZWRvU3RhY2sucG9wKCk7XG4gICAgICB0aGlzLmhpc3RvcnkucHVzaChyZWRvQ29udGVudCEpO1xuICAgICAgdGhpcy5oaXN0b3J5SW5kZXgrKztcbiAgICAgIGNvbnN0IGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlZGl0b3InKTtcbiAgXG4gICAgICBpZiAoZWRpdG9yKSB7XG4gICAgICAgIHRoaXMuc2FuaXRpemVkQ29udGVudCA9IHJlZG9Db250ZW50ITtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3JtYXRUZXh0V2l0aERhdGVzKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBkZXRlY3QgWVlZWS1NTS1ERCBmb3JtYXR0ZWQgZGF0ZXNcbiAgY29uc3QgZGF0ZVJlZ2V4ID0gL1xcYlxcZHs0fS1cXGR7Mn0tXFxkezJ9XFxiL2c7XG5cbiAgLy8gUmVwbGFjZSBmb3VuZCBkYXRlcyB3aXRoIGEgZm9ybWF0dGVkIHZlcnNpb25cbiAgcmV0dXJuIHRleHQucmVwbGFjZShkYXRlUmVnZXgsIChkYXRlU3RyKSA9PiB7XG4gICAgLy8gQ29udmVydCB0aGUgZGV0ZWN0ZWQgZGF0ZSBzdHJpbmcgaW50byBhIERhdGUgb2JqZWN0XG4gICAgY29uc3QgZGF0ZU9iaiA9IG5ldyBEYXRlKGRhdGVTdHIpO1xuICAgIFxuICAgIC8vIEZvcm1hdCB0aGUgZGF0ZSB0byAnTW9udGggRGF5LCBZZWFyJyAoZS5nLiwgT2N0b2JlciAxMCwgMjAyNClcbiAgICByZXR1cm4gZGF0ZU9iai50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLVVTJywge1xuICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgbW9udGg6ICdsb25nJyxcbiAgICAgIGRheTogJ251bWVyaWMnLFxuICAgIH0pO1xuICB9KTtcbn1cblxufSIsIjxkaXYgY2xhc3M9XCJjb250YWluZXIgZWxzLXRleHQtZWRpdG9yIHB4LTBcIiBpZD1cInRleHRFZGl0b3JcIiAjZnVsbHNjcmVlbj1cIm5neEZ1bGxzY3JlZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3RleHRFZGl0b3JcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ3hGdWxsc2NyZWVuPlxyXG4gICAgPGRpdiAqbmdJZj1cInRvb2xiYXJNb2RlID09PSAnZml4ZWQnXCIgY2xhc3M9XCJidG4tdG9vbGJhciBlbHMtYnRuLXRvb2xiYXIgcC0yIHB5LTIgbWItMFwiIHJvbGU9XCJ0b29sYmFyXCIgW3N0eWxlLmJhY2tncm91bmRdPVwidGhlbWVNb2RlQmdDbHIoKVwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgJ3BvaW50ZXItZXZlbnRzJzogZGlzYWJsZVRvb2xiYXIgPyAnbm9uZScgOiAnYXV0bycsXHJcbiAgICAnYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyc6IElzT3BlbiA/ICcwJyA6ICcyMHB4JyxcclxuICAgICdib3JkZXItdG9wLXJpZ2h0LXJhZGl1cyc6IElzT3BlbiA/ICcwJyA6ICcyMHB4J1xyXG59XCJcclxuYXJpYS1sYWJlbD1cIlRvb2xiYXIgd2l0aCBidXR0b24gZ3JvdXBzXCJcclxuc3R5bGU9XCJib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7XCJcclxuPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIkhlYWRlciBPcHRpb25zXCI+XHJcbiAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY2xhc3M9XCJkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtZm9ybS1zZWxlY3QgYm9yZGVyIGVscy10b29sYmFyLWRyb3Bkb3duLWJ1dHRvbiBkcm9wZG93bi10b2dnbGUgdGV4dC1zdGFydFwiIFtzdHlsZS5ib3JkZXItcmFkaXVzXT1cIic1cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cImhlYWRlckRyb3Bkb3duXCIgW3N0eWxlLmJvcmRlcl09XCJ0aGVtZU1vZGUoKVwiIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7c2VsZWN0ZWRGb3JtYXRCbG9jayB8IHRpdGxlY2FzZX19PC9zcGFuPiA8aSBjbGFzcz1cIm1kaSBtZGktY2hldnJvbi1kb3duIFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiaGVhZGVyRHJvcGRvd25cIiBjbGFzcz1cImVscy10ZXh0LWZvcm1hdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0aGVtZU1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgW3N0eWxlLmNvbG9yXT1cInRoZW1lTW9kZUNscigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGgxPicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMT5IZWFkaW5nIDE8L2gxPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgW3N0eWxlLmNvbG9yXT1cInRoZW1lTW9kZUNscigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGgyPicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5IZWFkaW5nIDI8L2gyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgW3N0eWxlLmNvbG9yXT1cInRoZW1lTW9kZUNscigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGgzPicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5IZWFkaW5nIDM8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgW3N0eWxlLmNvbG9yXT1cInRoZW1lTW9kZUNscigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGg0PicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoND5IZWFkaW5nIDQ8L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgW3N0eWxlLmNvbG9yXT1cInRoZW1lTW9kZUNscigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGg1PicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNT5IZWFkaW5nIDU8L2g1PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgW3N0eWxlLmNvbG9yXT1cInRoZW1lTW9kZUNscigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGg2PicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNj5IZWFkaW5nIDY8L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgW3N0eWxlLmNvbG9yXT1cInRoZW1lTW9kZUNscigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPHA+JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+Tm9ybWFsPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJGb250IE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgPCEtLSA8c2VsZWN0IGNsYXNzPVwiZWxzLWZvcm0tc2VsZWN0IFwiIHN0eWxlPVwiIGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDsgY29sb3I6ICNmZmY7Ym9yZGVyOiAycHggc29saWQgIzdENkQ2RCAhaW1wb3J0YW50O1wiIFxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEZvbnRcIiAoY2hhbmdlKT1cImNoYW5nZUZvbnQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPG9wdGlvbiBjbGFzcz1cImVscy1mb3JtLW9wdGlvblwiICpuZ0Zvcj1cImxldCBmb250IG9mIGZvbnRzXCIgW3ZhbHVlXT1cImZvbnRcIj57eyBmb250IH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy1mb3JtLXNlbGVjdCBib3JkZXIgZWxzLXRvb2xiYXItZHJvcGRvd24tYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZSB0ZXh0LXN0YXJ0XCJcclxuICAgICAgICAgICAgICAgICAgICBpZD1cImhlYWRlckRyb3Bkb3duXCIgc3R5bGU9XCJ3aWR0aDogMTAwcHhcIiBbc3R5bGUuYm9yZGVyXT1cInRoZW1lTW9kZSgpXCIgW3N0eWxlLmNvbG9yXT1cInRoZW1lTW9kZUNscigpXCJcclxuICAgICAgICAgICAgICAgICAgICBuZ2JEcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cIndpZHRoOiA4NXB4OyBmb250LXdlaWdodDogNzAwICFpbXBvcnRhbnQ7XCIgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+e3tzZWxlY3RlZEZvbnQgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZWNhc2V9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktY2hldnJvbi1kb3duIFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiaGVhZGVyRHJvcGRvd25cIiBjbGFzcz1cImVscy10ZXh0LWZvcm1hdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlcl09XCJ0aGVtZU1vZGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtIHBiLTBcIiB0eXBlPVwiYnV0dG9uXCIgKm5nRm9yPVwibGV0IGZvbnQgb2YgZm9udHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdlRm9udChmb250KVwiIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmb250IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJweS0wXCIgIHN0eWxlPVwiaGVpZ2h0OiBmaXQtY29udGVudDtcIiBbc3R5bGUuY29sb3JdPVwidGhlbWVNb2RlQ2xyKClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1lLTIgbXItMiBcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBGb3JtYXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc0JvbGRBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2JvbGQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtYm9sZFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIFtjbGFzcy5hY3RpdmVdPVwiaXNJdGFsaWNBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2l0YWxpYycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1pdGFsaWNcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImlzVW5kZXJsaW5lQWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCd1bmRlcmxpbmUnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtdW5kZXJsaW5lXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1N0cmlrZXRocm91Z2hBY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ3N0cmlrZXRocm91Z2gnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtc3RyaWtldGhyb3VnaC12YXJpYW50XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRleHQgQ29sb3JcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgaWQ9XCJ0ZXh0Q29sb3JQaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDAlOyBsZWZ0OiAwOyB6LWluZGV4OiAxMDA7IG9wYWNpdHk6IDA7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRUZXh0Q29sb3IoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKCd0ZXh0Q29sb3JQaWNrZXInKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWNvbG9yLXRleHQgaWNvbi13aXRoLXVuZGVybGluZVwiIFtzdHlsZS5jb2xvcl09XCJzZWxlY3RlZFRleHRDb2xvclwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJCYWNrZ3JvdW5kIENvbG9yXCIgc3R5bGU9XCJwb3NpdGlvbjogcmVsYXRpdmU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIFtzdHlsZS5jb2xvcl09XCJiYWNrZ3JvdW5kQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKCdiZ0NvbG9yUGlja2VyJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWFscGhhLWEtYm94XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBpZD1cImJnQ29sb3JQaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDAlOyBsZWZ0OiAwOyB6LWluZGV4OiAxMDA7IG9wYWNpdHk6IDA7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRCYWNrZ3JvdW5kQ29sb3IoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmVydGljYWwtbGluZSBtcy0yIGJvcmRlclwiIFtzdHlsZS5ib3JkZXItbGVmdF09XCJ0aGVtZU1vZGVDbHJWZXJ0aWNhbExpbmUoKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBGb3JtYXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnaW5zZXJ0T3JkZXJlZExpc3QnKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtbGlzdC1udW1iZXJlZFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2luc2VydFVub3JkZXJlZExpc3QnKVwiPjxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtbGlzdC1idWxsZXRlZFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd24gY2xhc3M9XCJxbC1hbGlnblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b24gIGFycm93LW5vbmUgdGV4dC1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRyb3Bkb3duQmFzaWMxXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgbmdiRHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtYWxpZ24tbGVmdCBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgYXJpYS1sYWJlbGxlZGJ5PVwiZHJvcGRvd25CYXNpYzFcIiBzdHlsZT1cIndpZHRoOiAzcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b24gdGV4dC1kYXJrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2p1c3RpZnlMZWZ0JylcIj48aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWFsaWduLWxlZnRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b24gdGV4dC1kYXJrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2p1c3RpZnlDZW50ZXInKVwiPjxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtYWxpZ24tY2VudGVyXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uIHRleHQtZGFya1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdqdXN0aWZ5UmlnaHQnKVwiPjxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtYWxpZ24tcmlnaHRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b24gdGV4dC1kYXJrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2p1c3RpZnlGdWxsJylcIj48aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWFsaWduLWp1c3RpZnlcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2ZXJ0aWNhbC1saW5lIG1zLTIgYm9yZGVyXCIgW3N0eWxlLmJvcmRlci1sZWZ0XT1cInRoZW1lTW9kZUNsclZlcnRpY2FsTGluZSgpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUZXh0IEZvcm1hdHRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImlzU3Vic2NyaXB0QWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdzdWJzY3JpcHQnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtc3Vic2NyaXB0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1N1cGVyc2NyaXB0QWN0aXZlXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdzdXBlcnNjcmlwdCcpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1zdXBlcnNjcmlwdFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBGb3JtYXR0aW5nXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImFkZExpbmsoKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1saW5rLXZhcmlhbnRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImluc2VydHNJbWFnZSgpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWltYWdlXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgaWQ9XCJpbWFnZUlucHV0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIChjaGFuZ2UpPVwiaGFuZGxlSW1hZ2VVcGxvYWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGFibGUgT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJhZGRUYWJsZSgpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLXRhYmxlXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzVGFibGVTZWxlY3RlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkUm93KClcIj48aSBjbGFzcz1cIm1kaSBtZGktdGFibGUtcm93LXBsdXMtYWZ0ZXJcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSb3coKVwiPjxpIGNsYXNzPVwibWRpIG1kaS10YWJsZS1yb3ctcmVtb3ZlXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzVGFibGVTZWxlY3RlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQ29sdW1uKClcIj48aSBjbGFzcz1cIm1kaSBtZGktdGFibGUtY29sdW1uLXBsdXMtYWZ0ZXJcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVDb2x1bW4oKVwiPjxpIGNsYXNzPVwibWRpIG1kaS10YWJsZS1jb2x1bW4tcmVtb3ZlXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUZXh0IEZvcm1hdHRpbmdcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwidW5kbygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXVuZG9cIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwicmVkbygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXJlZG9cIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGFibGUgT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwic2VsZWN0ZWRJbWFnZVwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b24tMlwiIChjbGljayk9XCJlZGl0SW1hZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTtcIj5FZGl0IEltYWdlPC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImNsZWFyVGV4dEVkaXRvcigpXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIiB3aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktY2xvc2UtY2lyY2xlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGFibGUgT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZUZ1bGxzY3JlZW4xKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiSXNPcGVuOyBlbHNlIGZ1bGxzY3JlZW5JY29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mdWxsc2NyZWVuLWV4aXRcIj48L2k+IDwhLS0gQ29sbGFwc2UgSWNvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2Z1bGxzY3JlZW5JY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZnVsbHNjcmVlblwiPjwvaT4gPCEtLSBFeHBhbmQgSWNvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwidG9vbGJhck1vZGUgPT09ICdidWJibGUnXCIgY2xhc3M9XCJidWJibGUtdG9vbGJhciBib3JkZXIgcC0yXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7J3RvcC5weCc6IHRvb2xiYXJUb3AsICdsZWZ0LnB4JzogdG9vbGJhckxlZnQsICdkaXNwbGF5Jzogc2hvd1Rvb2xiYXIgPyAnYmxvY2snIDogJ25vbmUnfVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cFwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJGb250IE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImVscy1mb3JtLXNlbGVjdFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGb250XCIgKGNoYW5nZSk9XCJjaGFuZ2VGb250KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGZvbnQgb2YgZm9udHNcIiBbdmFsdWVdPVwiZm9udFwiPnt7IGZvbnQgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBGb3JtYXR0aW5nXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImlzQm9sZEFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdib2xkJylcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtYm9sZFwiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImlzSXRhbGljQWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ2l0YWxpYycpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWl0YWxpY1wiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImlzVW5kZXJsaW5lQWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ3VuZGVybGluZScpXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LXVuZGVybGluZVwiPjwvaT5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBbY2xhc3MuYWN0aXZlXT1cImlzU3RyaWtldGhyb3VnaEFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdzdHJpa2V0aHJvdWdoJylcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtc3RyaWtldGhyb3VnaC12YXJpYW50XCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRleHQgRm9ybWF0dGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ2Jsb2NrcXVvdGUnKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtcXVvdGUtY2xvc2VcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImluc2VydENvZGVCbG9jaygpXCI+PGkgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1jb2RlLXRhZ3NcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUZXh0IEZvcm1hdHRpbmdcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ2luc2VydE9yZGVyZWRMaXN0JylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtbGlzdC1udW1iZXJlZFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ2luc2VydFVub3JkZXJlZExpc3QnKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1saXN0LWJ1bGxldGVkXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIkNvbG9yIEZvcm1hdHRpbmdcIj4gLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwicWwtYWxpZ25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGFycm93LW5vbmUgdGV4dC1zZWNvbmRhcnlcIiBpZD1cImRyb3Bkb3duQmFzaWMxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD1cImZhbHNlXCIgbmdiRHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtY29sb3ItZmlsbFwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bkJhc2ljMVwiIHN0eWxlPVwid2lkdGg6IDMwMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29sb3Itc2tldGNoIGNvbG9yPVwiI2ZmZlwiIChvbkNoYW5nZUNvbXBsZXRlKT1cInNldFRleHRDb2xvcigkZXZlbnQpXCI+PC9jb2xvci1za2V0Y2g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvbiBjdXN0b20tY29sb3ItdHJpZ2dlclwiIG5neC1jb2xvcnMtdHJpZ2dlciBbKG5nTW9kZWwpXT1cImNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJsb2dFdmVudCgkZXZlbnQsICduZ01vZGVsQ2hhbmdlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwibG9nRXZlbnQoJGV2ZW50LCAnY2hhbmdlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJsb2dFdmVudCgkZXZlbnQsICdpbnB1dCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1jb2xvci10ZXh0IGljb24td2l0aC11bmRlcmxpbmVcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwie2NvbG9yOiBjb2xvcn1cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5neC1jb2xvcnMgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiID48L25neC1jb2xvcnM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNvbG9yXCIgaWQ9XCJ0ZXh0Q29sb3JQaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMCU7IGxlZnQ6IDA7IHotaW5kZXg6IDEwMDsgb3BhY2l0eTogMDtcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0VGV4dENvbG9yKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQ29sb3JQaWNrZXIoJ3RleHRDb2xvclBpY2tlcicpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1jb2xvci10ZXh0IGljb24td2l0aC11bmRlcmxpbmVcIiBbc3R5bGUuY29sb3JdPVwic2VsZWN0ZWRUZXh0Q29sb3JcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXBcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiQmFja2dyb3VuZCBDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjb2xvclwiIGlkPVwiYmdDb2xvclBpY2tlclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIiAoY2hhbmdlKT1cInNldEJhY2tncm91bmRDb2xvcigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKCdiZ0NvbG9yUGlja2VyJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktYWxwaGEtYS1ib3hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIkJhY2tncm91bmQgQ29sb3JcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiBbc3R5bGUuY29sb3JdPVwiYmFja2dyb3VuZENvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkNvbG9yUGlja2VyKCdiZ0NvbG9yUGlja2VyJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktYWxwaGEtYS1ib3hcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IHN0eWxlPVwid2lkdGg6IDBweCAhaW1wb3J0YW50O1wiIGlkPVwiYmdDb2xvclBpY2tlclwiIFtjcFByZXNldENvbG9yc109XCJbJyNmZmYnLCAnIzAwMCcsICcjMjg4OWU5JywgJyNlOTIwZTknLCAnI2ZmZjUwMCcsICdyZ2IoMjM2LDY0LDY0KSddXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKGNvbG9yUGlja2VyKV09XCJjb2xvclwiIChjaGFuZ2UpPVwic2V0QmFja2dyb3VuZENvbG9yKCRldmVudClcIiAvPiAtLT5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY29sb3JcIiBpZD1cImJnQ29sb3JQaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMCU7IGxlZnQ6IDA7IHotaW5kZXg6IDEwMDsgb3BhY2l0eTogMDtcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0QmFja2dyb3VuZENvbG9yKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJIZWFkZXIgT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZVwiIHR5cGU9XCJidXR0b25cIiBpZD1cImhlYWRlckRyb3Bkb3duXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtaGVhZGVyLTFcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiaGVhZGVyRHJvcGRvd25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGgxPicpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtaGVhZGVyLTFcIj48L2k+IEhlYWRpbmcgMTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8aDI+JylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1oZWFkZXItMlwiPjwvaT4gSGVhZGluZyAyPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxoMz4nKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWhlYWRlci0zXCI+PC9pPiBIZWFkaW5nIDM8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnZm9ybWF0QmxvY2snLCAnPGg0PicpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtaGVhZGVyLTRcIj48L2k+IEhlYWRpbmcgNDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8aDU+JylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1oZWFkZXItNVwiPjwvaT4gSGVhZGluZyA1PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ2Zvcm1hdEJsb2NrJywgJzxoNj4nKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWhlYWRlci02XCI+PC9pPiBIZWFkaW5nIDY8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiSGVhZGVyIE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cImRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1kcm9wZG93bi1idXR0b24gZHJvcGRvd24tdG9nZ2xlXCIgaWQ9XCJoZWFkZXJEcm9wZG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgbmdiRHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJ3aWR0aDogODVweDtcIj57e3NlbGVjdGVkRm9ybWF0QmxvY2sgfCB0aXRsZWNhc2V9fTwvc3Bhbj4gPGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWNoZXZyb24tZG93biB0ZXh0LWRhcmtcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImhlYWRlckRyb3Bkb3duXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcGItMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8aDE+JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgxPkhlYWRpbmcgMTwvaDE+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcGItMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8aDI+JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgyPkhlYWRpbmcgMjwvaDI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcGItMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8aDM+JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzPkhlYWRpbmcgMzwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcGItMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8aDQ+JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0PkhlYWRpbmcgNDwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcGItMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8aDU+JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg1PkhlYWRpbmcgNTwvaDU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcGItMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8aDY+JylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGg2PkhlYWRpbmcgNjwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gcGItMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdmb3JtYXRCbG9jaycsICc8cD4nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cD5Ob3JtYWw8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBGb3JtYXR0aW5nXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ3N1cGVyc2NyaXB0JylcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LXN1cGVyc2NyaXB0XCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJmb3JtYXQoJ3N1YnNjcmlwdCcpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1zdWJzY3JpcHRcIj48L2k+PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1N1YnNjcmlwdEFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZm9ybWF0KCdzdWJzY3JpcHQnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1zdWJzY3JpcHRcIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgW2NsYXNzLmFjdGl2ZV09XCJpc1N1cGVyc2NyaXB0QWN0aXZlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJmb3JtYXQoJ3N1cGVyc2NyaXB0JylcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtc3VwZXJzY3JpcHRcIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRleHQgRm9ybWF0dGluZ1wiPlxyXG4gICAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwicWwtYWxpZ25cIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b24gYXJyb3ctbm9uZSB0ZXh0LXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJkcm9wZG93bkJhc2ljMVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiIG5nYkRyb3Bkb3duVG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtYWxpZ24tbGVmdCBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duQmFzaWMxXCIgc3R5bGU9XCJ3aWR0aDogM3B4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdqdXN0aWZ5TGVmdCcpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtYWxpZ24tbGVmdFwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgKGNsaWNrKT1cImZvcm1hdCgnanVzdGlmeUNlbnRlcicpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtYWxpZ24tY2VudGVyXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdqdXN0aWZ5UmlnaHQnKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktZm9ybWF0LWFsaWduLXJpZ2h0XCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdqdXN0aWZ5RnVsbCcpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1mb3JtYXQtYWxpZ24tanVzdGlmeVwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBlbHMtYnV0dG9uLWdyb3VwIG1yLTJcIiByb2xlPVwiZ3JvdXBcIiBhcmlhLWxhYmVsPVwiVGV4dCBGb3JtYXR0aW5nXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiZm9ybWF0KCdyZW1vdmVGb3JtYXQnKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1jbGVhclwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUZXh0IEZvcm1hdHRpbmdcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJhZGRMaW5rKClcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1saW5rLXZhcmlhbnRcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIiAoY2xpY2spPVwiaW5zZXJ0c0ltYWdlKClcIj48aVxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1pbWFnZVwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgaWQ9XCJpbWFnZUlucHV0XCIgc3R5bGU9XCJkaXNwbGF5OiBub25lO1wiIChjaGFuZ2UpPVwiaGFuZGxlSW1hZ2VVcGxvYWQoJGV2ZW50KVwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZWxzLWJ1dHRvbi1ncm91cCBtci0yXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRhYmxlIE9wdGlvbnNcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJhZGRUYWJsZSgpXCI+PGlcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1kaSBtZGktdGFibGVcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpc1RhYmxlU2VsZWN0ZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiIChjbGljayk9XCJhZGRSb3coKVwiPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLXRhYmxlLXJvdy1wbHVzLWFmdGVyXCI+PC9pPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiaXNUYWJsZVNlbGVjdGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBlbHMtdG9vbGJhci1idXR0b25cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJvdygpXCI+PGkgY2xhc3M9XCJtZGkgbWRpLXRhYmxlLXJvdy1yZW1vdmVcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpc1RhYmxlU2VsZWN0ZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWRkQ29sdW1uKClcIj48aSBjbGFzcz1cIm1kaSBtZGktdGFibGUtY29sdW1uLXBsdXMtYWZ0ZXJcIj48L2k+PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJpc1RhYmxlU2VsZWN0ZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQ29sdW1uKClcIj48aSBjbGFzcz1cIm1kaSBtZGktdGFibGUtY29sdW1uLXJlbW92ZVwiPjwvaT48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXAgbXItMlwiIHJvbGU9XCJncm91cFwiIGFyaWEtbGFiZWw9XCJUYWJsZSBPcHRpb25zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZEltYWdlXCIgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGVscy10b29sYmFyLWJ1dHRvbi0yXCIgKGNsaWNrKT1cImVkaXRJbWFnZSgpXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwicG9zaXRpb246IGFic29sdXRlO1wiPkVkaXQgSW1hZ2U8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uIGN1c3RvbS1jb2xvci10cmlnZ2VyXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZvcm1hdC1jb2xvci10ZXh0IGljb24td2l0aC11bmRlcmxpbmVcIiBbc3R5bGUuY29sb3JdPVwiY29sb3JcIj48L2k+XHJcbiAgICAgICAgPG5neC1jb2xvcnMgWyhuZ01vZGVsKV09XCJjb2xvclwiIChjaGFuZ2UpPVwiY29sb3JDaGFuZ2VkKCRldmVudClcIj48L25neC1jb2xvcnM+XHJcbiAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIGVscy1idXR0b24tZ3JvdXBcIiBuZ2JEcm9wZG93biBhcmlhLWxhYmVsPVwiVGFibGUgT3B0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4td2hpdGUgZWxzLXRvb2xiYXItYnV0dG9uXCIgbmdiRHJvcGRvd25Ub2dnbGUgIChjbGljayk9XCJhZGRUYWJsZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRhYmxlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPGRpdiBuZ2JEcm9wZG93bk1lbnUgKm5nSWY9XCJpc1RhYmxlU2VsZWN0ZWQgfHwgdGFibGVBZGRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cImFkZFJvdygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10YWJsZS1yb3ctcGx1cy1hZnRlclwiPjwvaT4gQWRkIFJvd1xyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKGNsaWNrKT1cImRlbGV0ZVJvdygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS10YWJsZS1yb3ctcmVtb3ZlXCI+PC9pPiBEZWxldGUgUm93XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwiYWRkQ29sdW1uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRhYmxlLWNvbHVtbi1wbHVzLWFmdGVyXCI+PC9pPiBBZGQgQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAoY2xpY2spPVwiZGVsZXRlQ29sdW1uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLXRhYmxlLWNvbHVtbi1yZW1vdmVcIj48L2k+IERlbGV0ZSBDb2x1bW5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJ0YWJsZVdpZHRoXCI+VGFibGUgV2lkdGg8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGlkPVwidGFibGVXaWR0aFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9XCJhZGp1c3RUYWJsZVdpZHRoKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJXaWR0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjZWxsV2lkdGhcIj5DZWxsIFdpZHRoPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBpZD1cImNlbGxXaWR0aFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgKGNoYW5nZSk9XCJhZGp1c3RDZWxsV2lkdGgoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldpZHRoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNlbGxIZWlnaHRcIj5DZWxsIEhlaWdodDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgaWQ9XCJjZWxsSGVpZ2h0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAoY2hhbmdlKT1cImFkanVzdENlbGxIZWlnaHQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkhlaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSA8ZGl2IGNvbnRlbnRlZGl0YWJsZT1cInRydWVcIiBpZD1cImVkaXRvclwiIGNsYXNzPVwicC0zIGN1c3RvbS1zY3JvbGxiYXIgbm9uLWZvY3VzXCIgI2VkaXRvclxyXG4gICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMjBweCAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMjBweCAhaW1wb3J0YW50OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7XCIgW3N0eWxlLmJhY2tncm91bmRdPVwidGhlbWVNb2RlQmdDbHIoKVwiIFtzdHlsZS5ib3JkZXItdG9wXT1cInRoZW1lTW9kZUJvcmRlclRvcCgpXCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7J2ZvbnQtZmFtaWx5Jzogc2VsZWN0ZWRGb250LCAnZm9udC1zaXplJzogc2VsZWN0ZWRGb250U2l6ZSArICdweCd9XCIgW3N0eWxlXT1cInN0eWxlXCJcclxuICAgICAgICBbc3R5bGUubWluLWhlaWdodF09XCJJc09wZW4gPyAnODV2aCAhaW1wb3J0YW50JyA6ICAnNDA1cHggIWltcG9ydGFudCdcIlxyXG4gICAgICAgIChpbnB1dCk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIiBwbGFjZWhvbGRlcj1cIkluc2VydCB0ZXh0IGhlcmUgLi4uXCIgcmVhZG9ubHkgKG1vdXNldXApPVwib25UZXh0U2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgIFtpbm5lckhUTUxdPVwic2FuaXRpemVkQ29udGVudFwiIChwYXN0ZSk9XCJvblBhc3RlKCRldmVudClcIiAoZm9jdXMpPVwib25Gb2N1cygpXCIgKGJsdXIpPVwib25CbHVyKClcIlxyXG4gICAgICAgIChjbGljayk9XCJjaGVja1RhYmxlU2VsZWN0aW9uKCRldmVudClcIj5cclxuICAgIDwvZGl2PiAtLT5cclxuICAgIDwhLS0gPGRpdiBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCIgaWQ9XCJlZGl0b3JcIiBjbGFzcz1cInAtMyBjdXN0b20tc2Nyb2xsYmFyIG5vbi1mb2N1cyBvdmVyZmxvdy1hdXRvXCIgI2VkaXRvclxyXG4gICAgICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xyXG4gICAgICAgICAgICAgICBcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJ0aGVtZU1vZGVCZ0NscigpXCJcclxuICAgICAgICBbc3R5bGUuYm9yZGVyLXRvcF09XCJ0aGVtZU1vZGVCb3JkZXJUb3AoKVwiXHJcbiAgICAgICAgXHJcbiAgICAgICAgW25nU3R5bGVdPVwieydmb250LWZhbWlseSc6IHNlbGVjdGVkRm9udCwgJ2ZvbnQtc2l6ZSc6IHNlbGVjdGVkRm9udFNpemUgKyAncHgnLFxyXG4gICAgICAgICAgICdib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzJzogaXNPcGVuID8gJzAnIDonMjBweCcsXHJcbiAgICAgICAgICAgJ2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzJzogaXNPcGVuID8gJzAnIDonMjBweCdcclxuICAgICAgICB9XCJcclxuICAgICAgICBbc3R5bGUubWluLWhlaWdodF09XCJJc09wZW4gPyAnOTN2aCcgOiAnNDA1cHgnXCIgKGlucHV0KT1cIm9uTW9kZWxDaGFuZ2UoJGV2ZW50KVwiIHBsYWNlaG9sZGVyPVwiSW5zZXJ0IHRleHQgaGVyZSAuLi5cIlxyXG4gICAgICAgIHJlYWRvbmx5IChtb3VzZXVwKT1cIm9uVGV4dFNlbGVjdCgkZXZlbnQpXCIgW2lubmVySFRNTF09XCJzYW5pdGl6ZWRDb250ZW50XCIgKHBhc3RlKT1cIm9uUGFzdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiIChibHVyKT1cIm9uQmx1cigpXCIgKGNsaWNrKT1cImNoZWNrVGFibGVTZWxlY3Rpb24oJGV2ZW50KVwiPlxyXG4gICAgPC9kaXY+IC0tPlxyXG4gICAgPGRpdiBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCIgaWQ9XCJlZGl0b3JcIiBjbGFzcz1cInAtMyBjdXN0b20tc2Nyb2xsYmFyIG5vbi1mb2N1cyBvdmVyZmxvdy1hdXRvXCIgI2VkaXRvclxyXG4gICAgICAgIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7IG92ZXJmbG93OiBhdXRvO1wiIFtzdHlsZS5iYWNrZ3JvdW5kXT1cInRoZW1lTW9kZUJnQ2xyKClcIlxyXG4gICAgICAgIFtzdHlsZS5jb2xvcl09XCJ0aGVtZU1vZGVDbHIoKVwiXHJcbiAgICAgICAgW3N0eWxlLmJvcmRlci10b3BdPVwidGhlbWVNb2RlQm9yZGVyVG9wKClcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAnZm9udC1mYW1pbHknOiBzZWxlY3RlZEZvbnQsIFxyXG4gICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZSc6IHNlbGVjdGVkRm9udFNpemUgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgJ2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXMnOiBJc09wZW4gPyAnMCcgOicyMHB4JyxcclxuICAgICAgICAgICAgICAgICdib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cyc6IElzT3BlbiA/ICcwJyA6JzIwcHgnLFxyXG4gICAgICAgICAgICAgICAgJ21pbi1oZWlnaHQnOiBJc09wZW4gPyAnOTN2aCcgOiAnNDA1cHgnLFxyXG4gICAgICAgICAgICAgICAgJ21heC1oZWlnaHQnOiBJc09wZW4gPyAnOTN2aCcgOiAnNDA1cHgnXHJcbiAgICAgICAgICAgIH1cIiBwbGFjZWhvbGRlcj1cIkluc2VydCB0ZXh0IGhlcmUgLi4uXCIgcmVhZG9ubHkgKG1vdXNldXApPVwib25UZXh0U2VsZWN0KCRldmVudClcIlxyXG4gICAgICAgIChpbnB1dCk9XCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIiBbaW5uZXJIVE1MXT1cInNhbml0aXplZENvbnRlbnRcIiAocGFzdGUpPVwib25QYXN0ZSgkZXZlbnQpXCIgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIiAoY2xpY2spPVwiY2hlY2tUYWJsZVNlbGVjdGlvbigkZXZlbnQpXCI+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8dGFibGUgKm5nSWY9XCJwYXJzZWRUYWJsZVwiPlxyXG4gICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBoZWFkZXIgb2YgcGFyc2VkVGFibGUuaGVhZGVyc1wiPnt7IGhlYWRlciB9fTwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIHBhcnNlZFRhYmxlLnJvd3NcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgY2VsbCBvZiByb3dcIj57eyBjZWxsIH19PC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgPC90YWJsZT5cclxuXHJcbjwvZGl2PiJdfQ==
|