@eqproject/eqp-dynamic-module 2.10.76 → 2.10.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/esm2020/lib/components/exported/eqp-dynamic-module-configurator/eqp-dynamic-module-configurator.component.mjs +7 -9
- package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +8 -1
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +14 -9
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +13 -8
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1969,6 +1969,13 @@ export class AddFormFieldComponent {
|
|
|
1969
1969
|
const label = key.CurrentTranslate || key.PropertyName;
|
|
1970
1970
|
this.columnKeys.push({ key: key.DatabaseTableName + "_" + key.PropertyName + "__" + label.replace(" ", "_"), value: label });
|
|
1971
1971
|
});
|
|
1972
|
+
// V2: auto-seleziona la colonna suggerita dall'AI nel pannello di configurazione
|
|
1973
|
+
if (isV2 && data.DataGetterColumnForce?.key) {
|
|
1974
|
+
const match = this.columnKeys.find(k => k.key === data.DataGetterColumnForce.key);
|
|
1975
|
+
if (match) {
|
|
1976
|
+
this.field.DataGetter.DataGetterColumnForce = match.key;
|
|
1977
|
+
}
|
|
1978
|
+
}
|
|
1972
1979
|
}
|
|
1973
1980
|
}
|
|
1974
1981
|
//#endregion DB GETTER
|
|
@@ -2192,4 +2199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2192
2199
|
type: ViewChild,
|
|
2193
2200
|
args: ["dialogQE", { static: true }]
|
|
2194
2201
|
}] } });
|
|
2195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2FkZC1mb3JtLWZpZWxkL2FkZC1mb3JtLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hZGQtZm9ybS1maWVsZC9hZGQtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsa0JBQWtCLEVBSWxCLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxjQUFjLEdBSWYsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsYUFBYSxFQUNkLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUdMLHVCQUF1QixFQUN2Qix3QkFBd0IsR0FDekIsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLEVBR0wsb0JBQW9CLEdBQ3JCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUdMLGdCQUFnQixHQUNqQixNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFDTCxvQkFBb0IsR0FHckIsTUFBTSw2Q0FBNkMsQ0FBQztBQUVyRCxPQUFPLEVBQWdCLDRCQUE0QixFQUF3QixNQUFNLDJDQUEyQyxDQUFDO0FBQzdILE9BQU8sRUFBaUIsNkJBQTZCLEVBQXlCLE1BQU0sNENBQTRDLENBQUM7QUFDakksT0FBTyxFQUNMLHlCQUF5QixFQUV6QixZQUFZLEdBRWIsTUFBTSx3Q0FBd0MsQ0FBQztBQUVoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFakUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scURBQXFELENBQUM7QUFHcEcsT0FBTyxFQUFFLHVCQUF1QixFQUFpQixNQUFNLCtCQUErQixDQUFDO0FBR3ZGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQTZDLGFBQWEsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXZILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQWdELFlBQVksRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3ZILE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT2xILE1BQU0sT0FBTyxxQkFBcUI7SUFtRGhDLG9CQUFvQjtRQUNsQixNQUFNLElBQUksR0FBRyxDQUFJLEdBQVEsRUFBSyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sQ0FBQyxHQUFHLHFCQUFxQixDQUFDO1FBQ2hDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsTUFBTSxLQUFLLEdBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDcEMsTUFBTSxJQUFJLEdBQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ2hGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNsRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxPQUFPLFdBQVcsS0FBSyxLQUFLLE9BQU8sRUFBRSxDQUFDO0lBQzdFLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxrQkFBa0IsQ0FBQztZQUM5RSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxrQkFBa0IsQ0FBQztTQUN2QztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQW1JRCxJQUFJLFdBQVc7UUFDYixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDZCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsS0FBSyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBa01ELElBQUksc0JBQXNCO1FBQ3hCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUF1QixDQUFDO1FBQ3hDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUMxQyxJQUFJLElBQUksS0FBSyxvQkFBb0IsQ0FBQyxXQUFXLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztRQUNuRixJQUFJLElBQUksS0FBSyxvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQzdGLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFpQ0QsdUNBQXVDO0lBRXZDLFlBQ1UsV0FBK0IsRUFDL0IsVUFBc0IsRUFDdEIsTUFBaUIsRUFDakIsR0FBc0IsRUFDdEIsVUFBc0IsRUFDdEIsb0JBQTBDO1FBTDFDLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBeGUzQyx3QkFBbUIsR0FBeUIsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsRUFBRSxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkcsc0JBQWlCLEdBQTZCLElBQUksQ0FBQztRQUlsRCxRQUFHLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDM0QsbUJBQWMsR0FBdUQsSUFBSSxZQUFZLEVBQXdDLENBQUM7UUFDOUgsNEJBQXVCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDM0UsOEJBQXlCLEdBQWlELElBQUksWUFBWSxFQUFrQyxDQUFDO1FBRTlILDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUVoRCw0QkFBdUIsR0FBWSxLQUFLLENBQUM7UUFDekMsdUJBQWtCLEdBQVcsRUFBRSxDQUFDO1FBNERoQyxtQkFBYyxHQUFtQyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3hFLHNDQUFpQyxHQUE0QixFQUFFLENBQUM7UUFDaEUsa0NBQTZCLEdBQTRCLEVBQUUsQ0FBQztRQUc1RCw0QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztRQUNsRCw2QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztRQUNwRCwwQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztRQUM5QyxlQUFVLEdBQTBDLElBQUksS0FBSyxFQUFrQyxDQUFDO1FBd0RoRyxZQUFZO1FBRVoscUNBQXFDO1FBQ3JDLGtCQUFhLEdBQUcsYUFBYSxDQUFDO1FBQzlCLHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQzVDLHFCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3BDLHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQzVDLGlCQUFZLEdBQUcsWUFBWSxDQUFDO1FBQzVCLDhCQUF5QixHQUFHLHlCQUF5QixDQUFDO1FBQ3RELGlDQUE0QixHQUFHLDRCQUE0QixDQUFDO1FBQzVELGtDQUE2QixHQUFHLDZCQUE2QixDQUFDO1FBRXJELGdDQUEyQixHQUFHO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRyxLQUFLLEVBQUUsVUFBVSxFQUFFO1lBQ3JDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO1NBQ3BDLENBQUM7UUFDRixtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUNoQyw0QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQztRQUNsRCx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUd4QyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBQ3RDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUV2QyxZQUFZO1FBRVosMENBQTBDO1FBQzFDLDJCQUFzQixHQUF3QixJQUFJLEtBQUssRUFBZ0IsQ0FBQztRQUN4RSxzQkFBaUIsR0FBd0IsSUFBSSxLQUFLLEVBQWdCLENBQUM7UUFhbkUsYUFBYTtRQUNiLFNBQUksR0FBRyxRQUFRLENBQUE7UUFDZixhQUFRLEdBQUcsWUFBWSxDQUFBO1FBRXZCLFlBQVk7UUFDWixVQUFLLEdBQWdCLElBQUksS0FBSyxFQUFRLENBQUM7UUFJdkMsMEJBQXFCLEdBQUcseUJBQXlCLENBQUM7UUFFbEQsYUFBUSxHQUFXLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUUzQyxxQkFBZ0IsR0FBWSxLQUFLLENBQUM7UUFDbEMsMkJBQXNCLEdBQVksS0FBSyxDQUFDO1FBRXhDLDRDQUE0QztRQUM1QyxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUN4QixpQkFBWSxHQUFXLENBQUMsQ0FBQztRQUN6QixzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO1FBa0R4QywyREFBMkQ7UUFDbEQsMkJBQXNCLEdBQUc7WUFDaEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFJLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDNUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFRLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtZQUNqRCxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFO1lBQ3BELEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBUSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ3RDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBSSxLQUFLLEVBQUUsV0FBVyxFQUFFO1lBQzFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBTyxLQUFLLEVBQUUsY0FBYyxFQUFFO1NBQzlDLENBQUM7UUFFRiwwQ0FBMEM7UUFDakMseUJBQW9CLEdBQUc7WUFDOUIsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFJLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDdEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDMUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFJLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDMUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFHLEtBQUssRUFBRSxZQUFZLEVBQUU7WUFDekMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFHLEtBQUssRUFBRSxjQUFjLEVBQUU7U0FDNUMsQ0FBQztRQUVGLGdDQUEyQixHQUFrQixJQUFJLENBQUM7UUFFbEQsZ0ZBQWdGO1FBQ3ZFLDhCQUF5QixHQUFHO1lBQ25DLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBSSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQzVDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBUSxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7WUFDakQsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRTtZQUNwRCxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQVEsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUN0QyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQU8sS0FBSyxFQUFFLGNBQWMsRUFBRTtTQUM5QyxDQUFDO1FBRU8sNEJBQXVCLEdBQUc7WUFDakMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFJLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDdEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDMUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFJLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDMUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFHLEtBQUssRUFBRSxZQUFZLEVBQUU7WUFDekMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFHLEtBQUssRUFBRSxjQUFjLEVBQUU7U0FDNUMsQ0FBQztRQUVGLG1DQUE4QixHQUFrQixJQUFJLENBQUM7UUFFckQsK0RBQStEO1FBQ3RELCtCQUEwQixHQUFHO1lBQ3BDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBSSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQzVDLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBUSxLQUFLLEVBQUUsZUFBZSxFQUFFO1lBQzlDLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUU7WUFDcEQsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFRLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDdEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFJLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDMUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFPLEtBQUssRUFBRSxjQUFjLEVBQUU7U0FDOUMsQ0FBQztRQUVPLDZCQUF3QixHQUFHO1lBQ2xDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBSSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3RDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQzFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBSSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQzFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRyxLQUFLLEVBQUUsWUFBWSxFQUFFO1lBQ3pDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRyxLQUFLLEVBQUUsY0FBYyxFQUFFO1NBQzVDLENBQUM7UUFFRixvQ0FBK0IsR0FBa0IsSUFBSSxDQUFDO1FBRXRELDJGQUEyRjtRQUNsRiw4QkFBeUIsR0FBRztZQUNuQyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUksS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUM1QyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQU8sS0FBSyxFQUFFLHVDQUF1QyxFQUFFO1lBQ3RFLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUU7U0FDckQsQ0FBQztRQUVPLDRCQUF1QixHQUFHO1lBQ2pDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBSSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3RDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQzFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBSSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQzFDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRyxLQUFLLEVBQUUsY0FBYyxFQUFFO1NBQzVDLENBQUM7UUFFRixtQ0FBOEIsR0FBa0IsSUFBSSxDQUFDO1FBRXJELGlFQUFpRTtRQUN4RCxpQ0FBNEIsR0FBRztZQUN0QyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQVMsS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUNqRCxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQWEsS0FBSyxFQUFFLHNCQUFzQixFQUFFO1lBQzFELEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFHLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtZQUN0RCxFQUFFLEdBQUcsRUFBRSxpQkFBaUIsRUFBRyxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7WUFDdEQsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUksS0FBSyxFQUFFLGlCQUFpQixFQUFFO1lBQ3JELEVBQUUsR0FBRyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtZQUN2RCxFQUFFLEdBQUcsRUFBRSxlQUFlLEVBQUssS0FBSyxFQUFFLGlCQUFpQixFQUFFO1NBQ3RELENBQUM7UUFFTywrQkFBMEIsR0FBRztZQUNwQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUksS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUN0QyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUMxQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUcsS0FBSyxFQUFFLFlBQVksRUFBRTtZQUN6QyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUcsS0FBSyxFQUFFLGNBQWMsRUFBRTtTQUM1QyxDQUFDO1FBRUYsc0NBQWlDLEdBQWtCLElBQUksQ0FBQztRQUV4RCxrRkFBa0Y7UUFDekUsNEJBQXVCLEdBQUc7WUFDakMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7U0FDM0MsQ0FBQztRQUVPLDBCQUFxQixHQUFHO1lBQy9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBSSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3RDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1NBQzNDLENBQUM7UUFFRixpQ0FBNEIsR0FBa0IsSUFBSSxDQUFDO1FBRW5ELGlGQUFpRjtRQUN4RSwyQkFBc0IsR0FBRztZQUNoQyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQVcsS0FBSyxFQUFFLHFCQUFxQixFQUFFO1lBQzNELEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBUyxLQUFLLEVBQUUscUJBQXFCLEVBQUU7WUFDM0QsRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLHFCQUFxQixFQUFFO1lBQzNELEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBVyxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7WUFDeEQsRUFBRSxHQUFHLEVBQUUsaUJBQWlCLEVBQUssS0FBSyxFQUFFLG9CQUFvQixFQUFFO1lBQzFELEVBQUUsR0FBRyxFQUFFLGVBQWUsRUFBTyxLQUFLLEVBQUUsa0JBQWtCLEVBQUU7WUFDeEQsRUFBRSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFFO1lBQzdELEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBYSxLQUFLLEVBQUUsU0FBUyxFQUFFO1NBQ2hELENBQUM7UUFFTyx5QkFBb0IsR0FBRztZQUM5QixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUksS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUN0QyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUMxQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUksS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUMxQyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUcsS0FBSyxFQUFFLFlBQVksRUFBRTtZQUN6QyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUcsS0FBSyxFQUFFLGNBQWMsRUFBRTtTQUM1QyxDQUFDO1FBRUYsZ0NBQTJCLEdBQWtCLElBQUksQ0FBQztRQUVsRCx5RkFBeUY7UUFDaEYsbUNBQThCLEdBQUc7WUFDeEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFJLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFRLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDdEMsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtTQUNuRCxDQUFDO1FBRU8saUNBQTRCLEdBQUc7WUFDdEMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFNLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFJLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDNUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRTtTQUNyRCxDQUFDO1FBRUYsd0NBQW1DLEdBQWtCLElBQUksQ0FBQztRQUUxRCxrRkFBa0Y7UUFDekUsNEJBQXVCLEdBQUc7WUFDakMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFPLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDL0MsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFLLEtBQUssRUFBRSxxQkFBcUIsRUFBRTtZQUN2RCxFQUFFLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7U0FDcEQsQ0FBQztRQUVPLDBCQUFxQixHQUFHO1lBQy9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBSSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3RDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1NBQzNDLENBQUM7UUFFRixpQ0FBNEIsR0FBa0IsSUFBSSxDQUFDO1FBRW5ELDZGQUE2RjtRQUNwRix1Q0FBa0MsR0FBRztZQUM1QyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUssS0FBSyxFQUFFLGFBQWEsRUFBRTtZQUM3QyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUcsS0FBSyxFQUFFLHFCQUFxQixFQUFFO1lBQ3JELEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO1NBQ2hELENBQUM7UUFFTyxxQ0FBZ0MsR0FBRztZQUMxQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUksS0FBSyxFQUFFLFNBQVMsRUFBRTtZQUN0QyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtTQUMzQyxDQUFDO1FBRUYsNENBQXVDLEdBQWtCLElBQUksQ0FBQztRQUU5RCwwREFBMEQ7UUFFekMsMkJBQXNCLEdBQUc7WUFDeEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFRLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDaEQsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFZLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDOUMsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUcsS0FBSyxFQUFFLGdCQUFnQixFQUFFO1lBQ25ELEVBQUUsR0FBRyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtTQUN0RCxDQUFDO1FBQ2UsMkJBQXNCLEdBQUc7WUFDeEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDMUMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFNLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFJLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDdEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtTQUNqRCxDQUFDO1FBQ2UsNEJBQXVCLEdBQUc7WUFDekMsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFJLEtBQUssRUFBRSxXQUFXLEVBQUU7WUFDdEMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7U0FDckMsQ0FBQztRQVVPLDhCQUF5QixHQUFHO1lBQ25DLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBTSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3hDLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBSSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQzVDLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO1lBQzVDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBSyxLQUFLLEVBQUUsWUFBWSxFQUFFO1lBQzNDLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBSyxLQUFLLEVBQUUsY0FBYyxFQUFFO1NBQzlDLENBQUM7UUFFRixxQ0FBZ0MsR0FBa0IsSUFBSSxDQUFDO1FBRXZELG1DQUFtQztRQUVuQyw4REFBOEQ7UUFFckQsb0NBQStCLEdBQUc7WUFDekMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFTLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDakQsRUFBRSxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixFQUFFO1lBQzFELEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUU7WUFDekQsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFTLEtBQUssRUFBRSxzQkFBc0IsRUFBRTtTQUMzRCxDQUFDO1FBRU8sa0NBQTZCLEdBQUc7WUFDdkMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFNLEtBQUssRUFBRSxTQUFTLEVBQUU7WUFDeEMsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFJLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDNUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7WUFDNUMsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFLLEtBQUssRUFBRSxZQUFZLEVBQUU7WUFDM0MsRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFLLEtBQUssRUFBRSxjQUFjLEVBQUU7U0FDOUMsQ0FBQztRQUVGLHlDQUFvQyxHQUFrQixJQUFJLENBQUM7SUFXdkQsQ0FBQztJQUVMLEtBQUssQ0FBQyxRQUFRO1FBRVosSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1NBQUU7UUFDaEYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsSUFBSSxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFO1lBQ3BJLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQzVCO1FBRUQsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLHdCQUF3QixLQUFLLFdBQVcsRUFBRTtZQUN6RSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUM7U0FDdkQ7UUFFRCxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFO1lBQ2hILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckU7UUFFRCxJQUNFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxFQUN0RTtZQUNBLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztTQUNuRTtRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlO1lBQ3pDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDckQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVULENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsZ0VBQWdFO0lBQ2hFLDBHQUEwRztJQUMxRywrR0FBK0c7SUFDL0csOEdBQThHO0lBQzlHLGlEQUFpRDtJQUNqRCxtRUFBbUU7SUFDbkUsK0hBQStIO0lBQy9ILE1BQU07SUFDTixJQUFJO0lBQ0osK0JBQStCLENBQUMsYUFBNEI7UUFDMUQscUdBQXFHO1FBQ3JHLDBHQUEwRztRQUMxRyx5R0FBeUc7UUFDekcsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMzRCxJQUFJLENBQUMsNEJBQTRCO2dCQUMvQixvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FDekMsSUFBSSxDQUFDLGVBQWUsRUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQ3JCLENBQUM7U0FDTDtJQUNILENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxLQUFLO1FBQ3JCLElBQUksQ0FBQyxDQUFDO1FBQ04sQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxpREFBaUQ7UUFDcEUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1gsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7WUFDbEIsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUMzQyxLQUFLLEVBQUU7Z0JBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO2dCQUNoQjtvQkFDRSxVQUFVLENBQUMsUUFBUTtvQkFDbkIsSUFBSSxDQUFDLFlBQVk7b0JBQ2pCLFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO2lCQUNuQzthQUNGO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztnQkFDdEIsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7YUFDekM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUMvQixVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUNuQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUMvQixTQUFTLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO2dCQUNwQixDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQzthQUN6QztZQUNELFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQztZQUNoQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7WUFDZixjQUFjLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYztnQkFDcEMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO2FBQ3RCO1lBQ0QsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDdkMsVUFBVSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDbkMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDdkMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUNwRCxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUMzQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ2hELGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDNUQsYUFBYSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM1RCxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ2hELGVBQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQzNFLHdCQUF3QixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUM3Rix1QkFBdUIsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7WUFFM0Ysd0JBQXdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQztZQUNuRix3QkFBd0IsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ25GLG9CQUFvQixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDM0UsdUJBQXVCLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7WUFDOUQscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7WUFDMUQsdUJBQXVCLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUM7U0FDL0QsQ0FBQyxDQUFDO1FBRUgsYUFBYSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRW5FLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixZQUFZLEVBQ1osSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQ25FLENBQUM7U0FDSDtJQUNILENBQUM7SUFDRCxZQUFZLENBQUMsT0FBb0I7UUFDL0IsMEZBQTBGO1FBQzFGLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxTQUFTLEVBQUU7WUFDOUIsSUFDRSxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FDeEMsT0FBTyxDQUFDLEtBQUssRUFDYixPQUFPLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FDMUMsRUFDRDtnQkFDQSxPQUFPLElBQUksQ0FBQzthQUNiO2lCQUFNO2dCQUNMLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN4QztTQUNGO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUNELHlCQUF5QixDQUFDLE9BQW9CO1FBQzVDLDBGQUEwRjtRQUMxRixJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksU0FBUyxFQUFFO1lBQzlCLElBQ0Usb0JBQW9CLENBQUMscUJBQXFCLENBQ3hDLE9BQU8sQ0FBQyxLQUFLLEVBQ2IsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQzFDLEVBQ0Q7Z0JBQ0EsT0FBTyxJQUFJLENBQUM7YUFDYjtpQkFBTTtnQkFDTCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDNUM7U0FDRjthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFDRCxpQ0FBaUM7SUFDakMsaUVBQWlFO0lBQ2pFLDhDQUE4QztJQUM5Qyw2Q0FBNkM7SUFDN0MsbUNBQW1DO0lBQ25DLDJEQUEyRDtJQUMzRCx1QkFBdUI7SUFDdkIsaUZBQWlGO0lBQ2pGLG9DQUFvQztJQUNwQyxhQUFhO0lBQ2IsWUFBWTtJQUNaLFFBQVE7SUFDUixRQUFRO0lBQ1IsSUFBSTtJQUVKOzs7T0FHRztJQUNILHVCQUF1QixDQUFDLE9BQWU7UUFDckMsSUFBSSxPQUFPLElBQUksT0FBTztZQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVqSCxNQUFNLGFBQWEsR0FDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQy9DLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxhQUFhLElBQUksSUFBSSxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQzlDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxhQUFhLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUM3QyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMzQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQWEsRUFBRSxLQUFjO1FBQzFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxRQUFRLENBQUM7UUFDeEMsSUFBSSxLQUFLLEVBQUU7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7U0FBRTtRQUM1QyxVQUFVLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsMkJBQTJCO0lBQzNCOzs7Ozs7T0FNRztJQUNILGlCQUFpQixDQUFDLGVBQXdCLElBQUk7UUFDNUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUdwQyxJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztTQUNuQztRQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFLLElBQUksQ0FBQyxLQUFtQixDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7WUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1NBQzlCO1FBQ0QsSUFBSyxJQUFJLENBQUMsS0FBbUIsQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFO1lBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLHFCQUFxQixDQUFDLFFBQVEsQ0FBQztTQUMxRDtRQUNELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFFbEMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUU1Qix3QkFBd0I7WUFDeEIsS0FBSyxhQUFhLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0NBQWdDLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBRXBFLElBQUssSUFBSSxDQUFDLEtBQW1CLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtvQkFDN0MsSUFBSSxDQUFDLEtBQW1CLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBRSxJQUFJLENBQUMsS0FBbUIsQ0FBQyxRQUFRLENBQWlCLENBQUM7aUJBQ2pHO2dCQUVELElBQUssSUFBSSxDQUFDLEtBQW1CLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtvQkFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO2lCQUMvQjtnQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsVUFBVSxFQUNWLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQW1CLENBQUMsUUFBUSxDQUFDLENBQzNELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLFdBQVcsRUFDWCxJQUFJLGtCQUFrQixDQUFFLElBQUksQ0FBQyxLQUFtQixDQUFDLFNBQVMsRUFBRTtvQkFDMUQsSUFBSSxDQUFDLFlBQVk7b0JBQ2pCLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2lCQUMvQixDQUFDLENBQ0gsQ0FBQztnQkFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsV0FBVyxFQUNYLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQW1CLENBQUMsU0FBUyxFQUFFO29CQUMxRCxJQUFJLENBQUMsWUFBWTtvQkFDakIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7aUJBQy9CLENBQUMsQ0FDSCxDQUFDO2dCQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixZQUFZLEVBQ1osSUFBSSxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsS0FBbUIsQ0FBQyxVQUFVLENBQUMsQ0FDN0QsQ0FBQztnQkFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsVUFBVSxFQUNWLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQW1CLENBQUMsUUFBUSxDQUFDLENBQzNELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLGNBQWMsRUFDZCxJQUFJLGtCQUFrQixDQUFFLElBQUksQ0FBQyxLQUFtQixDQUFDLFlBQVksQ0FBQyxDQUMvRCxDQUFDO2dCQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzVCLE1BQU07WUFDUiwyQkFBMkI7WUFFM0IsZUFBZTtZQUNmLEtBQUssYUFBYSxDQUFDLFdBQVcsQ0FBQztnQkFDN0IsSUFBSyxJQUFJLENBQUMsS0FBb0IsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO29CQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7aUJBQzNCO2dCQUVELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixXQUFXLEVBQ1gsSUFBSSxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsS0FBb0IsQ0FBQyxTQUFTLENBQUMsQ0FDN0QsQ0FBQztnQkFDRixJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO2dCQUN6RCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDN0IsTUFBTTtZQUNSLGtCQUFrQjtZQUVsQixnQkFBZ0I7WUFDaEIsS0FBSyxhQUFhLENBQUMsU0FBUyxDQUFDO2dCQUMzQixJQUFLLElBQUksQ0FBQyxLQUEyQixDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7b0JBQ3hELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztpQkFDNUI7Z0JBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLFFBQVEsRUFDUixJQUFJLGtCQUFrQixDQUFFLElBQUksQ0FBQyxLQUEyQixDQUFDLFVBQVUsQ0FBQyxDQUNyRSxDQUFDO2dCQUVGLElBQUssSUFBSSxDQUFDLEtBQTJCLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtvQkFDeEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO2lCQUM1QjtnQkFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsT0FBTyxFQUNQLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQTJCLENBQUMsSUFBSSxDQUFDLENBQy9ELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7Z0JBQ3BDLE1BQU07WUFDUix5QkFBeUI7WUFFekIsdUJBQXVCO1lBQ3ZCLEtBQUssYUFBYSxDQUFDLGVBQWUsQ0FBQztnQkFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQ0FBZ0MsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFFcEUsSUFBSyxJQUFJLENBQUMsS0FBdUIsQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO29CQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7aUJBQy9CO2dCQUVELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixNQUFNLEVBQ04sSUFBSSxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsS0FBdUIsQ0FBQyxJQUFJLEVBQUU7b0JBQ3pELElBQUksQ0FBQyxZQUFZO29CQUNqQixVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztpQkFDL0IsQ0FBQyxDQUNILENBQUM7Z0JBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLFdBQVcsRUFDWCxJQUFJLGtCQUFrQixDQUFFLElBQUksQ0FBQyxLQUF1QixDQUFDLFNBQVMsRUFBRTtvQkFDOUQsSUFBSSxDQUFDLFlBQVk7b0JBQ2pCLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO2lCQUMvQixDQUFDLENBQ0gsQ0FBQztnQkFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsV0FBVyxFQUNYLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQXVCLENBQUMsU0FBUyxFQUFFO29CQUM5RCxJQUFJLENBQUMsWUFBWTtvQkFDakIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7aUJBQy9CLENBQUMsQ0FDSCxDQUFDO2dCQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixZQUFZLEVBQ1osSUFBSSxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsS0FBdUIsQ0FBQyxVQUFVLENBQUMsQ0FDakUsQ0FBQztnQkFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsVUFBVSxFQUNWLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQXVCLENBQUMsUUFBUSxDQUFDLENBQy9ELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLGNBQWMsRUFDZCxJQUFJLGtCQUFrQixDQUFFLElBQUksQ0FBQyxLQUF1QixDQUFDLFlBQVksQ0FBQyxDQUNuRSxDQUFDO2dCQUVGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUM7Z0JBQzVELE1BQU07WUFDUiwwQkFBMEI7WUFFMUIsa0JBQWtCO1lBQ2xCLEtBQUssYUFBYSxDQUFDLFFBQVE7Z0JBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsZ0NBQWdDLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBRXBFLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixZQUFZLEVBQ1osSUFBSSxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsS0FBc0IsQ0FBQyxVQUFVLENBQUMsQ0FDaEUsQ0FBQztnQkFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsaUJBQWlCLEVBQ2pCLElBQUksa0JBQWtCLENBQ25CLElBQUksQ0FBQyxLQUFzQixDQUFDLGVBQWUsRUFDNUMsVUFBVSxDQUFDLFFBQVEsQ0FDcEIsQ0FDRixDQUFDO2dCQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7Z0JBQzNELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO2dCQUMvQixNQUFNO1lBQ1IscUJBQXFCO1lBRXJCLHNCQUFzQjtZQUN0QixLQUFLLGFBQWEsQ0FBQyxjQUFjLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsZ0NBQWdDLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBRXBFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFO29CQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztpQkFDdkQ7Z0JBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLFlBQVksRUFDWixJQUFJLGtCQUFrQixDQUFFLElBQUksQ0FBQyxLQUFtQixDQUFDLFVBQVUsRUFBRTtvQkFDM0QsVUFBVSxDQUFDLFFBQVE7b0JBQ25CLElBQUksQ0FBQyxZQUFZO2lCQUNsQixDQUFDLENBQ0gsQ0FBQztnQkFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsU0FBUyxFQUNULElBQUksa0JBQWtCLENBQ25CLElBQUksQ0FBQyxLQUFtQixDQUFDLE9BQU8sRUFDakMsSUFBSSxDQUFDLFlBQVksQ0FDbEIsQ0FDRixDQUFDO2dCQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixTQUFTLEVBQ1QsSUFBSSxrQkFBa0IsQ0FDbkIsSUFBSSxDQUFDLEtBQW1CLENBQUMsT0FBTyxFQUNqQyxJQUFJLENBQUMsWUFBWSxDQUNsQixDQUNGLENBQUM7Z0JBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLFlBQVksRUFDWixJQUFJLGtCQUFrQixDQUFFLElBQUksQ0FBQyxLQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUM3RCxDQUFDO2dCQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixlQUFlLEVBQ2YsSUFBSSxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsS0FBbUIsQ0FBQyxhQUFhLENBQUMsQ0FDaEUsQ0FBQztnQkFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsbUJBQW1CLEVBQ25CLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQW1CLENBQUMsaUJBQWlCLENBQUMsQ0FDcEUsQ0FBQztnQkFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsWUFBWSxFQUNaLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQW1CLENBQUMsVUFBVSxJQUFJLEtBQUssQ0FBQyxDQUN0RSxDQUFDO2dCQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2dCQUM1QixNQUFNO1lBQ1IseUJBQXlCO1lBRXpCLHdCQUF3QjtZQUN4QixLQUFLLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyw2QkFBNkIsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFFakUsSUFBSyxJQUFJLENBQUMsS0FBc0IsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO29CQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7aUJBQzdCO2dCQUVELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixXQUFXLEVBQ1gsSUFBSSxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsS0FBc0IsQ0FBQyxTQUFTLENBQUMsQ0FDL0QsQ0FBQztnQkFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsVUFBVSxFQUNWLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQXNCLENBQUMsUUFBUSxFQUFFO29CQUM1RCxJQUFJLENBQUMsWUFBWTtvQkFDakIsVUFBVSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLGVBQWU7aUJBQ3JFLENBQUMsQ0FDSCxDQUFDO2dCQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixVQUFVLEVBQ1YsSUFBSSxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsS0FBc0IsQ0FBQyxRQUFRLEVBQUU7b0JBQzVELElBQUksQ0FBQyxZQUFZO29CQUNqQixVQUFVLENBQUMsT0FBTyxDQUFDLCtCQUErQixDQUFDLEVBQUUsZUFBZTtpQkFDckUsQ0FBQyxDQUNILENBQUM7Z0JBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLGtCQUFrQixFQUNsQixJQUFJLGtCQUFrQixDQUNuQixJQUFJLENBQUMsS0FBc0IsQ0FBQyxnQkFBZ0IsRUFDN0MsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUNuRSxDQUNGLENBQUM7Z0JBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLGtCQUFrQixFQUNsQixJQUFJLGtCQUFrQixDQUNuQixJQUFJLENBQUMsS0FBc0IsQ0FBQyxnQkFBZ0IsRUFDN0MsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FDcEQsQ0FDRixDQUFDO2dCQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixvQkFBb0IsRUFDcEIsSUFBSSxrQkFBa0IsQ0FDbkIsSUFBSSxDQUFDLEtBQXNCLENBQUMsa0JBQWtCLEVBQy9DLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FDbkUsQ0FDRixDQUFDO2dCQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixnQkFBZ0IsRUFDaEIsSUFBSSxrQkFBa0IsQ0FDbkIsSUFBSSxDQUFDLEtBQXNCLENBQUMsY0FBYyxFQUMzQyxJQUFJLENBQUMsWUFBWSxDQUNsQixDQUNGLENBQUM7Z0JBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLGFBQWEsRUFDYixJQUFJLGtCQUFrQixDQUNuQixJQUFJLENBQUMsS0FBc0IsQ0FBQyxXQUFXLEVBQ3hDLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQ0YsQ0FBQztnQkFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsVUFBVSxFQUNWLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQXNCLENBQUMsUUFBUSxDQUFDLENBQzlELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLGNBQWMsRUFDZCxJQUFJLGtCQUFrQixDQUFFLElBQUksQ0FBQyxLQUFzQixDQUFDLFlBQVksQ0FBQyxDQUNsRSxDQUFDO2dCQUNGLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsS0FBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDdEUsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztnQkFDM0QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7Z0JBQy9CLE1BQU07WUFDUiwyQkFBMkI7WUFFM0Isa0JBQWtCO1lBQ2xCLEtBQUssYUFBYSxDQUFDLFFBQVE7Z0JBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixrQkFBa0IsRUFDbEIsSUFBSSxrQkFBa0IsQ0FDbkIsSUFBSSxDQUFDLEtBQXlCLENBQUMsZ0JBQWdCLENBQ2pELENBQ0YsQ0FBQztnQkFDRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsZUFBZSxFQUNmLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQXlCLENBQUMsYUFBYSxDQUFDLENBQ3RFLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQywyQkFBMkIsQ0FBQztnQkFDOUQsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7Z0JBQ2xDLE1BQU07WUFDUixxQkFBcUI7WUFFckIsa0JBQWtCO1lBQ2xCLEtBQUssYUFBYSxDQUFDLFFBQVE7Z0JBQ3pCLElBQUksT0FBUSxJQUFJLENBQUMsS0FBb0IsQ0FBQyxhQUFhLElBQUksV0FBVyxFQUFFO29CQUNqRSxJQUFJLENBQUMsS0FBb0IsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2lCQUNqRDtnQkFFRCxJQUFJLE9BQVEsSUFBSSxDQUFDLEtBQW9CLENBQUMsYUFBYSxJQUFJLFdBQVcsRUFBRTtvQkFDakUsSUFBSSxDQUFDLEtBQW9CLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztpQkFDbEQ7Z0JBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLHVCQUF1QixFQUN2QixJQUFJLGtCQUFrQixDQUNuQixJQUFJLENBQUMsS0FBb0IsQ0FBQyxxQkFBcUIsRUFDaEQsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDNUMsQ0FDRixDQUFDO2dCQUNELElBQUksQ0FBQyxLQUFvQixDQUFDLHFCQUFxQixHQUFJLElBQUksQ0FBQyxLQUFvQixDQUFDLHFCQUFxQixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLEtBQW9CLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFFckssSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLGVBQWUsRUFDZixJQUFJLGtCQUFrQixDQUFFLElBQUksQ0FBQyxLQUFvQixDQUFDLGFBQWEsQ0FBQyxDQUNqRSxDQUFDO2dCQUVGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUM3QixNQUFNO1lBRVI7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FnQkU7WUFDRixxQkFBcUI7WUFFckIseUJBQXlCO1lBQ3pCLEtBQUssYUFBYSxDQUFDLGlCQUFpQixDQUFDO2dCQUNuQyxJQUFJLENBQUMsY0FBYyxDQUFDLGdDQUFnQyxFQUFFLFlBQVksQ0FBQyxDQUFDO2dCQUVwRSxJQUFLLElBQUksQ0FBQyxLQUF3QixDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7b0JBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztpQkFDOUI7Z0JBQ0QsSUFBSyxJQUFJLENBQUMsS0FBd0IsQ0FBQyxZQUFZLElBQUksSUFBSSxFQUFFO29CQUN2RCxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUM7aUJBQzFEO2dCQUVELElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixnQkFBZ0IsRUFDaEIsSUFBSSxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsS0FBd0IsQ0FBQyxjQUFjLENBQUMsQ0FDdEUsQ0FBQztnQkFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsa0JBQWtCLEVBQ2xCLElBQUksa0JBQWtCLENBQ25CLElBQUksQ0FBQyxLQUF3QixDQUFDLGdCQUFnQixFQUMvQyxVQUFVLENBQUMsUUFBUSxDQUNwQixDQUNGLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ2pDLE1BQU07WUFDUiw0QkFBNEI7WUFFNUIseUJBQXlCO1lBQ3pCLEtBQUssYUFBYSxDQUFDLGlCQUFpQixDQUFDO2dCQUVuQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsZ0JBQWdCLEVBQ2hCLElBQUksa0JBQWtCLENBQUUsSUFBSSxDQUFDLEtBQTRCLENBQUMsY0FBYyxDQUFDLENBQzFFLENBQUM7Z0JBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLHVCQUF1QixFQUN2QixJQUFJLGtCQUFrQixDQUNuQixJQUFJLENBQUMsS0FBNEIsQ0FBQyxxQkFBcUIsRUFDeEQsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDNUMsQ0FDRixDQUFDO2dCQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUM7Z0JBQ2pFLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2dCQUNyQyxNQUFNO1lBQ1IsNEJBQTRCO1lBRTVCLDZCQUE2QjtZQUM3QixLQUFLLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQztnQkFFeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLHVCQUF1QixFQUN2QixJQUFJLGtCQUFrQixDQUNuQixJQUFJLENBQUMsS0FBK0IsQ0FBQyxxQkFBcUIsRUFDM0QsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDNUMsQ0FDRixDQUFDO2dCQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsaUNBQWlDLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO2dCQUN4QyxNQUFNO1lBQ1Isd0NBQXdDO1lBRXhDLGdCQUFnQjtZQUNoQixLQUFLLGFBQWEsQ0FBQyxNQUFNO2dCQUV2QixJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FDNUIsa0JBQWtCLEVBQ2xCLElBQUksa0JBQWtCLENBQ25CLElBQUksQ0FBQyxLQUFxQixDQUFDLGdCQUFnQixFQUM1QyxVQUFVLENBQUMsUUFBUSxDQUNwQixDQUNGLENBQUM7Z0JBRUYsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQzVCLG1CQUFtQixFQUNuQixJQUFJLGtCQUFrQixDQUFFLElBQUksQ0FBQyxLQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQ3RFLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztnQkFDMUQsTUFBTTtZQUNSLG1CQUFtQjtTQUNwQjtRQUNELElBQ0U7WUFDRSxhQUFhLENBQUMsUUFBUTtZQUN0QixhQUFhLENBQUMsUUFBUTtZQUN0QixhQUFhLENBQUMsbUJBQW1CLENBQUM7U0FDbkMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFDaEM7WUFDQSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDeEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3ZEO1FBQ0QsSUFDRTtZQUNFLGFBQWEsQ0FBQyxRQUFRO1lBQ3RCLGFBQWEsQ0FBQyxRQUFRO1lBQ3RCLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQztZQUNsQyxhQUFhLENBQUMsY0FBYyxDQUFDO1NBQzlCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQ2hDO1lBQ0EsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDekQ7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3hEO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUMzRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN6RDthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDeEQ7SUFHSCxDQUFDO0lBQ0QsOEJBQThCO0lBRTlCLGdDQUFnQztJQUNoQyxLQUFLLENBQUMsc0JBQXNCO1FBQzFCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxJQUFJLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQzlHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN0QjtRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxJQUFJLGtCQUFrQixDQUFDLE9BQU8sRUFBRTtZQUN0RSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxtQ0FBbUM7SUFFbkM7Ozs7O09BS0c7SUFDSCxtQ0FBbUM7UUFFakM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQXVDRTtJQUVKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsK0JBQStCLENBQUMsS0FBNEI7UUFDMUQ7Ozs7Ozs7OztVQVNFO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxtQkFBbUI7UUFDakIsNEVBQTRFO1FBQzVFLElBQUkscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQ3RELGdCQUFnQixFQUNoQixLQUFLLEVBQ0wsSUFBSSxDQUNMLENBQUM7UUFDRiw2RUFBNkU7UUFDN0UsSUFBSSw4QkFBOEIsR0FBa0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZO1lBQ3pFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxJQUFJLDBCQUEwQixHQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZO1lBQ2pGLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6RSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsZ0ZBQWdGO1FBQ2hGLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsaUNBQWlDLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUNuRSxDQUFDLEtBQXFDLEVBQUUsRUFBRSxDQUN4QyxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FDbEMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNOLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxHQUFHLENBQ2xFLENBQ0osQ0FBQztRQUNGLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQy9ELENBQUMsS0FBcUMsRUFBRSxFQUFFLENBQ3hDLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUM5QixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FDbEUsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCx3QkFBd0I7UUFDdEIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCx1QkFBdUIsQ0FBQyxXQUFrQztRQUV2RCxJQUFJLENBQUMsS0FBNEIsQ0FBQyxjQUFjLEdBQUcsV0FBbUMsQ0FBQztRQUV2RixJQUFJLENBQUMsS0FBNEIsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBeUIsRUFBRSxFQUFFO1lBQ3RGLElBQUksT0FBTyxVQUFVLENBQUMsYUFBYSxJQUFJLFdBQVcsRUFBRTtnQkFFbEQsSUFBSSxRQUFRLEdBQUcsYUFBYSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLEdBQUcsVUFBVSxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUM7Z0JBQy9HLElBQUksR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBRXRCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO2dCQUNuQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ2hCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7b0JBQzNCLFVBQVUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztvQkFDcEMsVUFBVSxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO29CQUN0QyxVQUFVLENBQUMsbUJBQW1CLEdBQUcsdUJBQXVCLENBQUMsZUFBZSxDQUFDO29CQUN6RSxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTt3QkFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLENBQUM7cUJBQUU7Z0JBQ3BGLENBQUMsQ0FBQyxDQUFDO2FBRUo7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxXQUFrQztRQUV0RCxJQUFJLENBQUMsS0FBb0IsQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBa0IsQ0FBQztRQUUzRSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsSUFBSSxXQUFXLEVBQUU7WUFFcEcsSUFBSSxRQUFRLEdBQUcsYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsR0FBRyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDO1lBQzNJLElBQUksR0FBRyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFFdEIsR0FBRyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUM7WUFDbkIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO2dCQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztnQkFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEdBQUcsdUJBQXVCLENBQUMsUUFBUSxDQUFDO1lBQ2xGLENBQUMsQ0FBQyxDQUFDO1NBRUo7SUFFSCxDQUFDO0lBRUQsaUNBQWlDLENBQUMsV0FBa0M7UUFFakUsSUFBSSxDQUFDLEtBQStCLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQWtCLENBQUM7UUFFdEYsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLElBQUksV0FBVyxFQUFFO1lBRXBHLElBQUksUUFBUSxHQUFHLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQztZQUMzSSxJQUFJLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBRXRCLEdBQUcsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDO1lBQ25CLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztZQUNoQixHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO2dCQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztnQkFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLG1CQUFtQixHQUFHLHVCQUF1QixDQUFDLG9CQUFvQixDQUFDO1lBQzlGLENBQUMsQ0FBQyxDQUFDO1NBRUo7SUFFSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILHVCQUF1QixDQUFDLEtBQUssRUFBRSxZQUFvQjtRQUNqRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFO1lBQzFELFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUU7Z0JBQzVCLEtBQUssYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDMUIsS0FBSyxhQUFhLENBQUMsUUFBUTtvQkFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7d0JBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztxQkFDaEQ7b0JBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDekQsTUFBTTtnQkFDUixLQUFLLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQztvQkFDeEMsTUFBTTtnQkFDUixLQUFLLGFBQWEsQ0FBQyxRQUFRO29CQUN6QixNQUFNO2dCQUNSLEtBQUssYUFBYSxDQUFDLGlCQUFpQixDQUFDO29CQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRTt3QkFDMUQsT0FBTztxQkFDUjtvQkFDRCxJQUFJLENBQUUsSUFBSSxDQUFDLEtBQXdCLENBQUMsVUFBVSxFQUFFO3dCQUM3QyxJQUFJLENBQUMsS0FBd0IsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO3FCQUNoRDtvQkFDQSxJQUFJLENBQUMsS0FBd0IsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7d0JBQ2hFLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDO29CQUM1QixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUM7b0JBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsTUFBTTthQUNUO1lBQ0QsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILHFCQUFxQjtRQUNuQixJQUFLLElBQUksQ0FBQyxLQUF3QixDQUFDLFVBQVUsRUFBRTtZQUM3QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUUsSUFBSSxDQUFDLEtBQXdCLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3RFLE9BQU87b0JBQ0wsR0FBRyxFQUFFLENBQUM7b0JBQ04sS0FBSyxFQUFHLElBQUksQ0FBQyxLQUF3QixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7aUJBQ3BELENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxPQUFPLEVBQUUsQ0FBQztTQUNYO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILHVCQUF1QixDQUFDLEdBQVc7UUFDakMsT0FBUSxJQUFJLENBQUMsS0FBd0IsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDM0QsWUFBWSxFQUFFLElBQUk7WUFDbEIsV0FBVyxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLEtBQUs7WUFDWixJQUFJLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPO2dCQUMzQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7YUFDbEM7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCw4QkFBOEI7SUFHOUIseUJBQXlCO0lBQ3pCLGtDQUFrQztJQUNsQyxpRkFBaUY7SUFDakYsMkJBQTJCO0lBQzNCLHlCQUF5QjtJQUN6QixvQkFBb0I7SUFDcEIsY0FBYztJQUNkLHFCQUFxQjtJQUNyQixTQUFTO0lBQ1QsUUFBUTtJQUNSLHVFQUF1RTtJQUN2RSwwQkFBMEI7SUFDMUIsdUNBQXVDO0lBQ3ZDLDhEQUE4RDtJQUM5RCwrQkFBK0I7SUFDL0IsNkNBQTZDO0lBQzdDLHlDQUF5QztJQUN6Qyw4Q0FBOEM7SUFDOUMsVUFBVTtJQUNWLFFBQVE7SUFDUix5Q0FBeUM7SUFDekMsMEVBQTBFO0lBQzFFLCtCQUErQjtJQUMvQiw4Q0FBOEM7SUFDOUMseUNBQXlDO0lBQ3pDLCtDQUErQztJQUMvQyxVQUFVO0lBQ1YsUUFBUTtJQUNSLFFBQVE7SUFDUixJQUFJO0lBRUosZ0JBQWdCO0lBQ2hCLDREQUE0RDtJQUM1RCxJQUFJO0lBRUosWUFBWTtJQUNaLDZEQUE2RDtJQUM3RCxJQUFJO0lBQ0osbUJBQW1CO0lBRW5CLDZCQUE2QjtJQUM3QixtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDN0QsWUFBWSxFQUFFLElBQUk7WUFDbEIsV0FBVyxFQUFFLElBQUk7WUFDakIsS0FBSyxFQUFFLEtBQUs7WUFDWixJQUFJLEVBQUU7Z0JBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO2dCQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7YUFDbEM7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM1RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxnQ0FBZ0M7SUFFaEMsOEJBQThCO0lBQzlCLG9CQUFvQjtRQUNsQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUM5RCxZQUFZLEVBQUUsSUFBSTtZQUNsQixXQUFXLEVBQUUsSUFBSTtZQUNqQixLQUFLLEVBQUUsS0FBSztZQUNaLElBQUksRUFBRTtnQkFDSixNQUFNLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVU7Z0JBQzlCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNsQztTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMxRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELGlDQUFpQztJQUVqQyx3Q0FBd0M7SUFDeEMsOEJBQThCO1FBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQzdELFlBQVksRUFBRSxJQUFJO1lBQ2xCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLEtBQUssRUFBRSxLQUFLO1lBQ1osSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZTtnQkFDNUIsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVM7Z0JBQ3pDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNsQztTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN4RyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCwyQ0FBMkM7SUFFM0MscUJBQXFCLENBQUMsT0FBZ0I7UUFDcEMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxLQUFtQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDekMsSUFBSSxDQUFDLEtBQW1CLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUM5QyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEQ7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEQ7U0FDRjtRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsb0RBQW9EO0lBRXBELGdFQUFnRTtJQUNoRSxhQUFhLENBQUMsR0FBVztRQUN2QixPQUFRLENBQUUsSUFBSSxDQUFDLEtBQW1CLENBQUMsaUJBQWlCLENBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3RSxDQUFDO0lBRUQsdUZBQXVGO0lBQ3ZGLGFBQWEsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUN0QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBa0IsQ0FBQztRQUNuQyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFO1lBQ3pCLEVBQUUsQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7U0FDM0I7UUFDRCxzRUFBc0U7UUFDckUsRUFBRSxDQUFDLGlCQUF5QixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssSUFBSSxTQUFTLENBQUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFDOUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQWtCLENBQUM7UUFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QixFQUFFLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1NBQzNCO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNoRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNsQixHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3JFLEdBQUcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztpQkFDdEUsQ0FBQztTQUNILENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0dBQWdHO0lBQ2hHLHVCQUF1QixDQUFDLFFBQWdCO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTztRQUNwTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxRQUFRLElBQUksWUFBWSxDQUFDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLEtBQXdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JLLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDaEQsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDO1NBQzdCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsOEJBQThCO0lBRTlCLHVEQUF1RDtJQUV2RCxzR0FBc0c7SUFDdEcscUJBQXFCO1FBQ25CLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFxQixDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDNUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUM7U0FDekQ7UUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQzVDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ3pEO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUFnQjtRQUN2QyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLEtBQXNCLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBc0IsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1lBQ2pELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNwRDtZQUNELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4RDtTQUNGO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFXO1FBQzlCLE9BQVEsQ0FBRSxJQUFJLENBQUMsS0FBc0IsQ0FBQyxvQkFBb0IsQ0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ25GLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUM3QyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBcUIsQ0FBQztRQUN0QyxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFO1lBQzVCLEVBQUUsQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7U0FDOUI7UUFDQSxFQUFFLENBQUMsb0JBQTRCLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztRQUMzRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELHVCQUF1QjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxPQUFPO1FBQ2pDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFxQixDQUFDO1FBQ3RDLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUU7WUFDNUIsRUFBRSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztTQUM5QjtRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDaEQsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGlDQUFpQztJQUVqQyx3REFBd0Q7SUFFeEQseUJBQXlCLENBQUMsT0FBZ0I7UUFDeEMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNYLElBQUksQ0FBQyxLQUF1QixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDN0MsSUFBSSxDQUFDLEtBQXVCLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDcEQ7WUFDRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUNoRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDeEQ7U0FDRjtRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBVztRQUMvQixPQUFRLENBQUUsSUFBSSxDQUFDLEtBQXVCLENBQUMscUJBQXFCLENBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyRixDQUFDO0lBRUQscUJBQXFCLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDOUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQXNCLENBQUM7UUFDdkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRTtZQUM3QixFQUFFLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO1NBQy9CO1FBQ0EsRUFBRSxDQUFDLHFCQUE2QixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssSUFBSSxTQUFTLENBQUM7UUFDNUQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlO1lBQUUsT0FBTztRQUNsQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBc0IsQ0FBQztRQUN2QyxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixFQUFFO1lBQzdCLEVBQUUsQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7U0FDL0I7UUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUM7UUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO1FBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ2hELENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxrQ0FBa0M7SUFFbEMsdURBQXVEO0lBRXZELG9CQUFvQixDQUFDLEdBQVc7UUFDOUIsT0FBUSxDQUFFLElBQUksQ0FBQyxLQUFzQixDQUFDLG9CQUFvQixDQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkYsQ0FBQztJQUVELG9CQUFvQixDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQzdDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFxQixDQUFDO1FBQ3RDLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUU7WUFDNUIsRUFBRSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztTQUM5QjtRQUNBLEVBQUUsQ0FBQyxvQkFBNEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE9BQU87UUFDakMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQXFCLENBQUM7UUFDdEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRTtZQUM1QixFQUFFLENBQUMsb0JBQW9CLEdBQUcsRUFBRSxDQUFDO1NBQzlCO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNoRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1NBQ3ZCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsaUNBQWlDO0lBRWpDLDBEQUEwRDtJQUUxRCx1QkFBdUIsQ0FBQyxHQUFXO1FBQ2pDLE9BQVEsQ0FBRSxJQUFJLENBQUMsS0FBeUIsQ0FBQyx1QkFBdUIsQ0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pGLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUNoRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBd0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsRUFBRSxDQUFDLHVCQUF1QixFQUFFO1lBQy9CLEVBQUUsQ0FBQyx1QkFBdUIsR0FBRyxFQUFFLENBQUM7U0FDakM7UUFDQSxFQUFFLENBQUMsdUJBQStCLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztRQUM5RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUFFLE9BQU87UUFDcEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQXdCLENBQUM7UUFDekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRTtZQUMvQixFQUFFLENBQUMsdUJBQXVCLEdBQUcsRUFBRSxDQUFDO1NBQ2pDO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QixFQUFFLENBQUMsZ0JBQWdCLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3BHO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNoRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1NBQ3BCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsb0NBQW9DO0lBRXBDLHFEQUFxRDtJQUVyRCxrQkFBa0IsQ0FBQyxHQUFXO1FBQzVCLE9BQVEsQ0FBRSxJQUFJLENBQUMsS0FBb0IsQ0FBQyxrQkFBa0IsQ0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9FLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUMzQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBbUIsQ0FBQztRQUNwQyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFO1lBQzFCLEVBQUUsQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7U0FDNUI7UUFDQSxFQUFFLENBQUMsa0JBQTBCLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztRQUN6RCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBQy9CLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFtQixDQUFDO1FBQ3BDLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUU7WUFDMUIsRUFBRSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztTQUM1QjtRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7UUFDOUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUU7WUFDakIsRUFBRSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSw0QkFBNEIsQ0FBQztTQUN2RTtRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0UsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCwrQkFBK0I7SUFFL0IsOENBQThDO0lBRTlDLGdCQUFnQjtRQUNkLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFrQixDQUFDO1FBQ25DLElBQUksR0FBVyxDQUFDO1FBQ2hCLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRTtZQUNyQixLQUFLLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztnQkFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDO2dCQUFZLE1BQU07WUFDdEUsS0FBSyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUM7Z0JBQUcsR0FBRyxHQUFHLGtCQUFrQixDQUFDO2dCQUFDLE1BQU07WUFDdEU7Z0JBQXFDLEdBQUcsR0FBRyxZQUFZLENBQUM7Z0JBQVEsTUFBTTtTQUN2RTtRQUNELEVBQUUsQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsT0FBUSxDQUFFLElBQUksQ0FBQyxLQUFtQixDQUFDLGlCQUFpQixDQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0UsQ0FBQztJQUVELGlCQUFpQixDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQzFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFrQixDQUFDO1FBQ25DLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUU7WUFDekIsRUFBRSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztTQUMzQjtRQUNBLEVBQUUsQ0FBQyxpQkFBeUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFDOUIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQWtCLENBQUM7UUFDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRTtZQUN6QixFQUFFLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1NBQzNCO1FBQ0QsSUFBSSxFQUFFLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRTtZQUN6QixFQUFFLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQy9DO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDO1FBQ3JELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNoRCxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO1NBQ3RCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsOEJBQThCO0lBRTlCLDREQUE0RDtJQUU1RCx5QkFBeUIsQ0FBQyxHQUFXO1FBQ25DLE9BQVEsQ0FBRSxJQUFJLENBQUMsS0FBMkIsQ0FBQyx5QkFBeUIsQ0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdGLENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUNsRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBMEIsQ0FBQztRQUMzQyxJQUFJLENBQUMsRUFBRSxDQUFDLHlCQUF5QixFQUFFO1lBQ2pDLEVBQUUsQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLENBQUM7U0FDbkM7UUFDQSxFQUFFLENBQUMseUJBQWlDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztRQUNoRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtZQUFFLE9BQU87UUFDdEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQTBCLENBQUM7UUFDM0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyx5QkFBeUIsRUFBRTtZQUNqQyxFQUFFLENBQUMseUJBQXlCLEdBQUcsRUFBRSxDQUFDO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxzQ0FBc0M7SUFFdEMscURBQXFEO0lBRXJELGtCQUFrQixDQUFDLEdBQVc7UUFDNUIsT0FBUSxDQUFFLElBQUksQ0FBQyxLQUFvQixDQUFDLGtCQUFrQixDQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0UsQ0FBQztJQUVELGtCQUFrQixDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQzNDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFtQixDQUFDO1FBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUU7WUFDM0IsR0FBRyxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztTQUM3QjtRQUNBLEdBQUcsQ0FBQyxrQkFBMEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1FBQzFELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFDL0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQW1CLENBQUM7UUFDckMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRTtZQUMzQixHQUFHLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCwrQkFBK0I7SUFFL0IsZ0VBQWdFO0lBRWhFLDZCQUE2QixDQUFDLEdBQVc7UUFDdkMsT0FBUSxDQUFFLElBQUksQ0FBQyxLQUErQixDQUFDLDZCQUE2QixDQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckcsQ0FBQztJQUVELDZCQUE2QixDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ3RELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUE4QixDQUFDO1FBQ2hELElBQUksQ0FBQyxHQUFHLENBQUMsNkJBQTZCLEVBQUU7WUFDdEMsR0FBRyxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQztTQUN4QztRQUNBLEdBQUcsQ0FBQyw2QkFBcUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZ0NBQWdDO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCO1lBQUUsT0FBTztRQUMxQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBOEIsQ0FBQztRQUNoRCxJQUFJLENBQUMsR0FBRyxDQUFDLDZCQUE2QixFQUFFO1lBQ3RDLEdBQUcsQ0FBQyw2QkFBNkIsR0FBRyxFQUFFLENBQUM7U0FDeEM7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELDBDQUEwQztJQUUxQyx5REFBeUQ7SUFFekQsc0JBQXNCLENBQUMsR0FBVztRQUNoQyxPQUFRLENBQUUsSUFBSSxDQUFDLEtBQXdCLENBQUMsc0JBQXNCLENBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2RixDQUFDO0lBRUQsc0JBQXNCLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDL0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQXVCLENBQUM7UUFDeEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRTtZQUM5QixFQUFFLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDO1NBQ2hDO1FBQ0EsRUFBRSxDQUFDLHNCQUE4QixDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssSUFBSSxTQUFTLENBQUM7UUFDN0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0I7WUFBRSxPQUFPO1FBQ25DLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUF1QixDQUFDO1FBQ3hDLElBQUksQ0FBQyxFQUFFLENBQUMsc0JBQXNCLEVBQUU7WUFDOUIsRUFBRSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztTQUNoQztRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQztRQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsc0JBQXNCO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsT0FBTztRQUNuQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsbUNBQW1DO0lBRW5DLDZEQUE2RDtJQUU3RCwwQkFBMEIsQ0FBQyxHQUFXO1FBQ3BDLE9BQVEsQ0FBRSxJQUFJLENBQUMsS0FBNEIsQ0FBQywwQkFBMEIsQ0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9GLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxHQUFXLEVBQUUsS0FBYTtRQUNuRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBMkIsQ0FBQztRQUM3QyxJQUFJLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFO1lBQ25DLEdBQUcsQ0FBQywwQkFBMEIsR0FBRyxFQUFFLENBQUM7U0FDckM7UUFDQSxHQUFHLENBQUMsMEJBQWtDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQztRQUNsRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELDZCQUE2QjtRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQjtZQUFFLE9BQU87UUFDdkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQTJCLENBQUM7UUFDN0MsSUFBSSxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBRTtZQUNuQyxHQUFHLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDO1NBQ3JDO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDO1FBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCx1Q0FBdUM7SUFFdkMsZUFBZSxDQUFDLEtBQUs7UUFDbkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3RELG9CQUFvQjtTQUNyQjtJQUNILENBQUM7SUFFRCwwQkFBMEI7SUFDMUI7OztPQUdHO0lBQ0gsZ0JBQWdCO1FBRWQsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRTtZQUMvQixPQUFPLElBQUksQ0FBQztTQUNiO1FBRUQsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUM1QixLQUFLLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFFbkMsSUFDRyxJQUFJLENBQUMsS0FBd0IsQ0FBQyxPQUFPLElBQUksU0FBUztvQkFDbEQsSUFBSSxDQUFDLEtBQXdCLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFDNUM7b0JBQ0EsSUFBSSxDQUFFLElBQUksQ0FBQyxLQUF3QixDQUFDLFVBQVUsRUFBRTt3QkFDN0MsSUFBSSxDQUFDLEtBQXdCLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztxQkFDaEQ7b0JBQ0QsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7Z0JBRUQsSUFDRyxJQUFJLENBQUMsS0FBd0IsQ0FBQyxXQUFXLElBQUksU0FBUztvQkFDdEQsSUFBSSxDQUFDLEtBQXdCLENBQUMsV0FBVyxJQUFJLElBQUk7b0JBQ2pELElBQUksQ0FBQyxLQUF3QixDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUU7b0JBQ2xELE9BQU8sS0FBSyxDQUFBO2lCQUNiO2dCQUVELE9BQU8sQ0FDTCxDQUFFLElBQUksQ0FBQyxLQUF3QixDQUFDLFVBQVU7b0JBQ3pDLElBQUksQ0FBQyxLQUF3QixDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUN2RCxDQUFDO1lBRUosS0FBSyxhQUFhLENBQUMsaUJBQWlCLENBQUM7Z0JBRW5DLE9BQU8sQ0FDTCxDQUFFLElBQUksQ0FBQyxLQUE0QixDQUFDLGNBQWM7b0JBQ2pELElBQUksQ0FBQyxLQUE0QixDQUFDLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQztvQkFDN0QsSUFBSSxDQUFDLEtBQTRCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDcEQsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxXQUFXLEtBQUssV0FBVyxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQ3BLLElBQUksSUFBSSxDQUNWLENBQUM7WUFFSixLQUFLLGFBQWEsQ0FBQyxNQUFNO2dCQUN2QixPQUFPLENBQ0wsQ0FBRSxJQUFJLENBQUMsS0FBcUIsQ0FBQyxVQUFVO29CQUN0QyxJQUFJLENBQUMsS0FBcUIsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FDcEQsQ0FBQztZQUNKO2dCQUNFLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQztJQUNELDZCQUE2QjtJQUU3QixXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBRTtZQUMzQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUM5Qyw2QkFBNkIsQ0FBQyxPQUFPLENBQ25DLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMseUNBQXlDLENBQUMsRUFDeEUscUJBQXFCLENBQ3RCLENBQUM7WUFDRixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFFNUIsTUFBTSxRQUFRLEdBQThCO1lBQzFDLEtBQUssRUFBRSxRQUFRO1lBQ2YsV0FBVyxFQUFFLGFBQWE7WUFDMUIsU0FBUyxFQUFFLFlBQVk7WUFDdkIsT0FBTyxFQUFFLFNBQVM7WUFDbEIsU0FBUyxFQUFFLGFBQWE7WUFDeEIsVUFBVSxFQUFFLGlCQUFpQjtZQUM3QixRQUFRLEVBQUUsVUFBVTtZQUNwQixTQUFTLEVBQUUsbUJBQW1CO1lBQzlCLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsVUFBVSxFQUFFLGNBQWM7WUFDMUIsU0FBUyxFQUFFLGlCQUFpQjtZQUM1QixRQUFRLEVBQUUsT0FBTztZQUNqQixXQUFXLEVBQUUsbUJBQW1CO1lBQ2hDLFVBQVUsRUFBRSxtQkFBbUI7WUFDL0IsUUFBUSxFQUFFLGNBQWM7WUFDeEIsWUFBWSxFQUFFLGNBQWM7WUFDNUIsYUFBYSxFQUFFLGFBQWE7WUFDNUIsYUFBYSxFQUFFLGlCQUFpQjtZQUNoQyxnQkFBZ0IsRUFBRSxzQkFBc0I7U0FDekMsQ0FBQztRQUVGLE1BQU0sV0FBVyxHQUE4QjtZQUM3QyxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFNBQVMsRUFBRSxnQkFBZ0I7WUFDM0IsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixPQUFPLEVBQUUsK0JBQStCO1lBQ3hDLEdBQUcsRUFBRSw4QkFBOEI7WUFDbkMsR0FBRyxFQUFFLCtCQUErQjtZQUNwQyxLQUFLLEVBQUUsaUNBQWlDO1lBQ3hDLGtCQUFrQixFQUFFLHVCQUF1QjtTQUM1QyxDQUFDO1FBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM5RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNyRCxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ2hELE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxXQUFXLENBQUM7Z0JBQ25ELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDN0MsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGlCQUFpQixRQUFRLEdBQUcsQ0FBQztvQkFDbEUsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEtBQUssS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDLENBQUMsQ0FBQzthQUNKO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxrQ0FBa0M7UUFDbEMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUM1QixLQUFLLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUF1QixDQUFDO2dCQUN4QyxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNuRCxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEtBQUssRUFBRSxDQUFDO2dCQUMvRCxNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDcEQsTUFBTSxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2lCQUM5QztnQkFDRCxNQUFNO2FBQ1A7WUFDRCxLQUFLLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUEyQixDQUFDO2dCQUM3QyxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7b0JBQzFELE1BQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztpQkFDekQ7cUJBQU0sSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDaEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxFQUFFO29CQUNqRSxDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxXQUFXLElBQUksQ0FBQyxDQUFDLFdBQVcsS0FBSyxFQUFFLENBQzdFLEVBQUU7b0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxvRkFBb0YsQ0FBQyxDQUFDO2lCQUNuRztnQkFDRCxNQUFNO2FBQ1A7WUFDRCxLQUFLLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDekIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQW9CLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO2lCQUMxRDtnQkFDRCxNQUFNO2FBQ1A7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCw2QkFBNkI7SUFDN0I7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FBQyxJQUFhLEVBQUUsb0JBQTRCLENBQUM7UUFDOUQsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7WUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxFQUFFLENBQUM7U0FBRTtRQUNsRixJQUFJLElBQUksRUFBRTtZQUVSLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ25DLHdEQUF3RDtZQUN4RCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO2dCQUM1RCxJQUFJLENBQUUsSUFBSSxDQUFDLEtBQXdCLENBQUMsT0FBTyxJQUFLLElBQUksQ0FBQyxLQUF3QixDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFFLElBQUksQ0FBQyxLQUF3QixDQUFDLFdBQVcsSUFBSyxJQUFJLENBQUMsS0FBd0IsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLEVBQUU7b0JBQy9MLElBQUksQ0FBQyxLQUF3QixDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBQ2xEO2FBQ0Y7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO2dCQUM1RCxJQUFJLENBQUUsSUFBSSxDQUFDLEtBQTRCLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDakUsSUFBSSxDQUFDLEtBQTRCLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFO3dCQUN2RSxVQUFVLENBQUMsb0JBQW9CLEdBQUksSUFBSSxDQUFDLEtBQTRCLENBQUMscUJBQXFCLENBQUM7b0JBQzdGLENBQUMsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7WUFDRCxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xELElBQUksQ0FBRSxJQUFJLENBQUMsS0FBb0IsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEVBQUU7b0JBQ3JELElBQUksQ0FBQyxLQUFvQixDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsR0FBSSxJQUFJLENBQUMsS0FBb0IsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDbEg7YUFDRjtZQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksYUFBYSxDQUFDLHNCQUFzQixDQUFDLEVBQUU7Z0JBQ2pFLElBQUksQ0FBRSxJQUFJLENBQUMsS0FBK0IsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLEVBQUU7b0JBQ2hFLElBQUksQ0FBQyxLQUErQixDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsR0FBSSxJQUFJLENBQUMsS0FBK0IsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDeEk7YUFDRjtZQUNELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNwRCxJQUFJLENBQUUsSUFBSSxDQUFDLEtBQTJCLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxFQUFFO29CQUUzRCxJQUFJLENBQUMsS0FBMkIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLEVBQWdCLENBQUM7b0JBRXZFLElBQUksUUFBUSxHQUFJLElBQUksQ0FBQyxLQUEyQixDQUFDLFlBQVksQ0FBQztvQkFDOUQsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFFakMsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTt3QkFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFOzRCQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsRUFBRTtnQ0FBRSxPQUFPOzZCQUFFOzRCQUMvRCxJQUFJLEdBQUcsR0FBaUIsSUFBSSxZQUFZLEVBQUUsQ0FBQzs0QkFDM0MsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7NEJBQ2QsR0FBRyxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDOzRCQUNwQyxHQUFHLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7NEJBQzlCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQzs0QkFDaEMsZ0hBQWdIOzRCQUNoSCxHQUFHLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUM7NEJBQ2hELEdBQUcsQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsb0JBQW9CLENBQUM7NEJBRTdELElBQUksQ0FBQyxLQUEyQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7d0JBQ3ZELENBQUMsQ0FBQyxDQUFDO3FCQUNKO2lCQUlGO2FBQ0Y7WUFFRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUU1QixhQUFhLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUN6RCxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxDQUFBO1lBQzFELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBRy9CO2FBQU07WUFDTCxJQUFJLEdBQUcsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLENBQUE7WUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FFL0I7SUFDSCxDQUFDO0lBQ0QsZ0NBQWdDO0lBRWhDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsS0FBd0IsRUFBRSxRQUFvQjtRQUMvRCxhQUFhLENBQUMsUUFBUSxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELGFBQWEsQ0FBQyxRQUFRLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsYUFBYSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQztRQUNaOztnRUFFd0Q7SUFDMUQsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2RixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQywwQkFBMEIsS0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDekcsT0FBTyxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNyRCxJQUFJLE9BQU8sT0FBTyxDQUFDLGdCQUFnQixJQUFJLFNBQVMsRUFBRTtvQkFBRSxPQUFPLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztpQkFBRTtZQUMvSCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDbkcsSUFBSSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLEtBQUssU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQy9HLE9BQU8sQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDckQsSUFBSSxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsSUFBSSxTQUFTLEVBQUU7b0JBQUUsT0FBTyxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7aUJBQUU7WUFDL0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxvQ0FBb0M7SUFDcEM7OztPQUdHO0lBQ0ssMEJBQTBCO1FBQ2hDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLGVBQWUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ3pILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDbEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDO1lBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUM7WUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsUUFBUSxDQUFDO1lBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUM7WUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQztTQUMvQztJQUNILENBQUM7SUFDRCxvQ0FBb0M7SUFFcEMsZUFBZSxDQUFDLFVBQVU7UUFDeEIsSUFBSSxVQUFVLEVBQUU7WUFDZCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQ3ZDO2FBQU07WUFDTCxPQUFPLENBQUMsQ0FBQztTQUNWO0lBQ0gsQ0FBQztJQUVELDBCQUEwQjtJQUMxQixnQkFBZ0I7UUFFZCw2QkFBNkI7UUFDN0IsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDO1lBQy9CLEdBQUcsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDaEgsT0FBTyxFQUFFO2dCQUNQLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQzNHO29CQUNFLElBQUksRUFBRSxXQUFXO29CQUNqQixJQUFJLEVBQUUsY0FBYztvQkFDcEIsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7b0JBQ2pDLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7aUJBQ3hFO2dCQUNEO29CQUNFLElBQUksRUFBRSxZQUFZO29CQUNsQixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztvQkFDbEMsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDO2lCQUNyRjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQztZQUMvQixHQUFHLEVBQUUsZ0JBQWdCO1lBQ3JCLE9BQU8sRUFBRSxVQUFVO1lBQ25CLElBQUksRUFBRSxVQUFVLENBQUMsZ0JBQWdCO1lBQ2pDLGdCQUFnQixFQUFFLElBQUksQ0FBQyw4QkFBOEI7U0FDdEQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQztZQUMvQixHQUFHLEVBQUUsV0FBVztZQUNoQixPQUFPLEVBQUUsU0FBUztZQUNsQixJQUFJLEVBQUUsVUFBVSxDQUFDLGdCQUFnQjtZQUNqQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsNEJBQTRCO1NBQ3BELENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7WUFDL0IsR0FBRyxFQUFFLGFBQWE7WUFDbEIsT0FBTyxFQUFFLFNBQVM7WUFDbEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxnQkFBZ0I7WUFDakMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLDhCQUE4QjtTQUN0RCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDO1lBQy9CLEdBQUcsRUFBRSxjQUFjO1lBQ25CLE9BQU8sRUFBRSxXQUFXO1NBQ3JCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7WUFDL0IsR0FBRyxFQUFFLGVBQWU7WUFDcEIsT0FBTyxFQUFFLFNBQVM7U0FDbkIsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUNELDZCQUE2QjtJQUU3QixxQkFBcUI7SUFDYixXQUFXLENBQ2pCLE9BQXNCLEVBQ3RCLE1BQWU7UUFFZixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsTUFBTSxXQUFXLEdBQUcsYUFBYSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUUxRCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUFFO0lBQ3BGLENBQUM7SUFDRCx3QkFBd0I7SUFFeEIsaUNBQWlDO0lBQ3pCLHVCQUF1QjtRQUM3QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFO1lBQzdCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUMxQyxLQUFLLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUNELG9DQUFvQztJQUVwQyx3QkFBd0I7UUFDdEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUM7SUFDaEUsQ0FBQztJQUVELGVBQWUsQ0FBQyxFQUFpQixFQUFFLENBQVMsRUFBRSxHQUFXO1FBQ3ZELDZCQUE2QixDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUU7WUFDdkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEQsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7Z0JBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQUU7UUFFcEYsQ0FBQyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBaUI7UUFDM0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxtQkFBbUI7SUFDbkIsWUFBWTtRQUNWLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUU7WUFFcEcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQztZQUNqRixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUM7WUFFdkcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqRCxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLFVBQVUsRUFBRSxvQkFBb0I7Z0JBQ2hDLEtBQUssRUFBRSxLQUFLO2FBQ2IsQ0FBQyxDQUFDO1NBRUo7YUFBTTtZQUVMLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGdFQUFnRSxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO2lCQUM1RyxTQUFTLENBQUMscUJBQXFCLENBQUMsRUFBRTtnQkFDakMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsQ0FBQztTQUVOO0lBQ0gsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxFQUFZO1FBQ2pDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUFFO1FBQ25FLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FBRTtRQUN4RSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBRTdDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7U0FFMUM7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBUztRQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBSTtRQUNuQixJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxJQUFJLElBQUksRUFBRTtZQUFFLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUM7U0FBRTtRQUNwSCxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVztZQUFFLE9BQU87UUFFeEQsOEZBQThGO1FBQzlGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxjQUFjLEdBQUcsSUFBSTtZQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLGNBQWM7WUFDeEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFFeEIsSUFBSSxjQUFjLElBQUksSUFBSSxJQUFJLE9BQU8sY0FBYyxJQUFJLFdBQVcsRUFBRTtZQUNsRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxFQUFrQyxDQUFDO1lBQzlELGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDL0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFDRCxzQkFBc0I7SUFFdEIsYUFBYTtRQUNYLE1BQU0sbUJBQW1CLEdBQ3ZCLElBQUksS0FBSyxFQUFzQixDQUFDO1FBQ2xDLG1CQUFtQixDQUFDLElBQUksQ0FBQztZQUN2QixTQUFTLEVBQUUsUUFBUTtZQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQzVCLFNBQVMsRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDO1NBQ3hDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQ25ELG1CQUFtQixFQUNuQixDQUFDLEdBQWdCLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFN0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLElBQUksSUFBSSxFQUFFO2dCQUMxRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDdEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxFQUFtQixDQUFDO2dCQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDbEQsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUVqRixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLHFCQUFxQixJQUFJLElBQUksRUFBRTtvQkFDdkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztpQkFDOUY7YUFDRjtRQUVILENBQUMsRUFDRCxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsYUFBYSxDQUFDLFFBQVEsQ0FBQyx3Q0FBd0MsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN4RyxhQUFhLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssRUFBbUIsQ0FBQztZQUM3QyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztTQUM1RDthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztZQUM3QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7U0FDcEQ7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7U0FDaEU7YUFBTTtZQUNMLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztTQUNwRDtJQUNILENBQUM7SUFFRCwyQkFBMkI7UUFDekIsYUFBYSxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzdHLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUF3QjtRQUN6QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsb0JBQW9CO1FBRWxCLElBQUksMEJBQTBCLEdBQTRCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdE0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLElBQUksSUFBSSxJQUFJLENBQUMsMEJBQTBCLElBQUksSUFBSSxJQUFJLDBCQUEwQixDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsRUFBRTtZQUN6TSxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksS0FBSyxFQUFPLENBQUM7WUFDeEQsMEJBQTBCLEdBQUcsSUFBSSxLQUFLLEVBQW9CLENBQUM7WUFDM0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixFQUFFLEVBQUU7Z0JBRWxELElBQUksUUFBUSxHQUFxQixJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hELFFBQVEsQ0FBQyxlQUFlLEdBQUcsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO2dCQUM1RCxRQUFRLENBQUMsMEJBQTBCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBRXRELElBQUksZ0JBQWdCLENBQUMsZUFBZSxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDakUsUUFBUSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztpQkFDbkM7Z0JBQ0QsSUFBSSxnQkFBZ0IsQ0FBQyxlQUFlLElBQUksYUFBYSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7b0JBQ3ZFLFFBQVEsQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7aUJBQ2hDO2dCQUVELElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNwRCwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFNUMsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxFQUFFO2dCQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxLQUFLLEVBQW9CLENBQUM7YUFBRTtZQUMvRywwQkFBMEIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDLENBQUM7U0FFSjtRQUNELElBQUksSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ2pOLElBQUksQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO0lBQy9CLENBQUM7O0FBbGpGdUIsbUNBQWEsR0FBRztJQUN0Qyx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0I7SUFDeEYsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUI7SUFDM0YsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLHNCQUFzQjtJQUN2RyxpQ0FBaUMsRUFBRSw0QkFBNEIsRUFBRSxnQ0FBZ0M7SUFDakcsdUJBQXVCLEVBQUUsMkJBQTJCLEVBQUUsdUJBQXVCLEVBQUUsZ0JBQWdCO0lBQy9GLHlCQUF5QixFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLHNCQUFzQjtJQUN6RixtQ0FBbUMsRUFBRSxrQkFBa0IsRUFBRSx3QkFBd0IsRUFBRSx1Q0FBdUM7Q0FDM0gsQ0FBQztBQUNzQixpQ0FBVyxHQUFHO0lBQ3BDLGFBQWEsRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsYUFBYTtJQUN4RixnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCO0lBQzdGLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUscUJBQXFCO0lBQzNFLDRCQUE0QixFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQjtJQUMvRix3QkFBd0IsRUFBRSw2QkFBNkIsRUFBRSxtQkFBbUIsRUFBRSwyQkFBMkI7SUFDekcsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQUUsa0JBQWtCLEVBQUUsK0JBQStCO0lBQ2hHLHVCQUF1QixFQUFFLG1CQUFtQjtDQUM3QyxDQUFDO0FBQ3NCLHFDQUFlLEdBQUc7SUFDeEMsV0FBVyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLFVBQVU7SUFDeEUsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVk7SUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFVBQVU7SUFDekQsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGNBQWM7Q0FDN0QsQ0FBQzttSEFqRFMscUJBQXFCO3VHQUFyQixxQkFBcUIscWhIQzVGbEMsKzg3SkF3ckVBOzRGRDVsRWEscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLG1DQUFtQztzUEFNcEMsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLEdBQUc7c0JBQVosTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLHVCQUF1QjtzQkFBaEMsTUFBTTtnQkFDRyx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBRUUscUJBQXFCO3NCQUE3QixLQUFLO2dCQTZFTixxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdwRCxzQkFBc0I7c0JBRHJCLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdyRCx1QkFBdUI7c0JBRHRCLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUd0RCx5QkFBeUI7c0JBRHhCLFNBQVM7dUJBQUMsMkJBQTJCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUd4RCx3QkFBd0I7c0JBRHZCLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUd2RCxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdwRCx3QkFBd0I7c0JBRHZCLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUd2RCwyQkFBMkI7c0JBRDFCLFNBQVM7dUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUcxRCxzQkFBc0I7c0JBRHJCLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdyRCxpQ0FBaUM7c0JBRGhDLFNBQVM7dUJBQUMsbUNBQW1DLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdoRSw4QkFBOEI7c0JBRDdCLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUc3RCwwQkFBMEI7c0JBRHpCLFNBQVM7dUJBQUMsNEJBQTRCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUd6RCx1QkFBdUI7c0JBRHRCLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUd0RCxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQWNILGFBQWE7c0JBQTFELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFVNUMsK0JBQStCO3NCQUQ5QixTQUFTO3VCQUFDLGlDQUFpQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFnQ0MsOEJBQThCO3NCQUE1RixTQUFTO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDQSw0QkFBNEI7c0JBQXhGLFNBQVM7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNJLDhCQUE4QjtzQkFBNUYsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0gsd0JBQXdCO3NCQUFqRixTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDUCxlQUFlO3NCQUEvRCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFNTixRQUFRO3NCQUFoRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gIFVudHlwZWRGb3JtQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUdyb3VwLFxyXG4gIFZhbGlkYXRpb25FcnJvcnMsXHJcbiAgVmFsaWRhdG9yRm4sXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XHJcbmltcG9ydCB7XHJcbiAgQXR0YWNobWVudFR5cGUsXHJcbiAgRXFwQXR0YWNobWVudERpYWxvZ1NlcnZpY2UsXHJcbiAgRXFwQXR0YWNobWVudHNDb21wb25lbnQsXHJcbiAgSUF0dGFjaG1lbnREVE8sXHJcbn0gZnJvbSBcIkBlcXByb2plY3QvZXFwLWF0dGFjaG1lbnRzXCI7XHJcbmltcG9ydCB7IEVudW1IZWxwZXIgfSBmcm9tIFwiQGVxcHJvamVjdC9lcXAtc2VsZWN0XCI7XHJcbmltcG9ydCB7IENvbmZpZ0NvbHVtbiwgVHlwZUNvbHVtbiB9IGZyb20gXCJAZXFwcm9qZWN0L2VxcC10YWJsZVwiO1xyXG5pbXBvcnQge1xyXG4gIEJhc2VGaWVsZCxcclxuICBDb2xTcGFuU2l6ZXNFbnVtLFxyXG4gIERhdGFHZXR0ZXJDYXJkaW5hbGl0eUVudW0sXHJcbiAgRmllbGRJbnZpc2liaWxpdHlFbnVtLFxyXG4gIEZpZWxkVHlwZUVudW1cclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIEF0dGFjaG1lbnRGaWVsZCxcclxuICBBdHRhY2htZW50RmllbGRTdHlsZUNTUyxcclxuICBBdmFpbGFibGVGaWxlRXh0ZW5zaW9ucyxcclxuICBBdmFpbGFibGVJbWFnZUV4dGVuc2lvbnMsXHJcbn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvYXR0YWNobWVudEZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgQm9vbGVhbkZpZWxkLFxyXG4gIEJvb2xlYW5GaWVsZFN0eWxlQ1NTLFxyXG4gIEJvb2xQcmVzZW50YW50aW9FbnVtLFxyXG59IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2Jvb2xlYW5GaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIERhdGVGaWVsZCxcclxuICBEYXRlRmllbGRTdHlsZUNTUyxcclxuICBEYXRlVGltZVR5cGVFbnVtLFxyXG59IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2RhdGVGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbWFnZUZpZWxkLCBJbWFnZUZpZWxkU3R5bGVDU1MgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9pbWFnZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgTGlzdFByZXNlbnRhdGlvbkVudW0sXHJcbiAgTGlzdFZhbHVlRmllbGQsXHJcbiAgTGlzdFZhbHVlRmllbGRTdHlsZUNTUyxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9saXN0VmFsdWVGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBMb29rdXBGaWVsZCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2xvb2t1cEZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IE51bWVyaWNGaWVsZCwgTnVtZXJpY0ZpZWxkSWNvblBvc2l0aW9uRW51bSwgTnVtZXJpY0ZpZWxkU3R5bGVDU1MgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9udW1lcmljRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgVGV4dGFyZWFGaWVsZCwgVGV4dGFyZWFGaWVsZEljb25Qb3NpdGlvbkVudW0sIFRleHRhcmVhRmllbGRTdHlsZUNTUyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL3RleHRhcmVhRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBUZXh0RmllbGRJY29uUG9zaXRpb25FbnVtLFxyXG4gIFRleHRGaWVsZFN0eWxlQ1NTLFxyXG4gIFRleHRNYXNrRW51bSxcclxuICBUZXh0RmllbGQsXHJcbn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvdGV4dEZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEZvcm1GaWVsZEdyb3VwLCBGb3JtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBVdGlsaXR5SGVscGVyU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXR5SGVscGVyLnNlcnZpY2VzXCI7XHJcbmltcG9ydCB7IEdsb2JhbFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZ2xvYmFsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW1hZ2VTZWxlY3RvckZpZWxkLCBJbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlU2VsZWN0b3JGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9lcXAtZHluYW1pYy1tb2R1bGUtZGlhbG9nLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgTGFiZWxGaWVsZCwgTGFiZWxGaWVsZFN0eWxlQ1NTIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvbGFiZWxGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBJbWFnZVdpdGhNYXJrZXJzRmllbGQsIEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWVsZFR5cGVFbnVtLCBEeW5BdHRhY2htZW50IH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9keW5BdHRhY2htZW50XCI7XHJcbmltcG9ydCB7IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhLCBldmVudE91dCB9IGZyb20gXCIuLi8uLi8uLi9kaXJlY3RpdmVzL2R5bmFtaWMtbG9hZGVyL2R5bmFtaWMtbG9hZGVyLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IERhdGFHZXR0ZXJUeXBlRW51bSwgRGF0YUdldHRlciB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWwnO1xyXG5pbXBvcnQgeyBRdWVyeUVkaXRvck1vZGVFbnVtIH0gZnJvbSBcIi4uL2RiZ2V0dGVyL2RiZ2V0dGVyLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBNb2RlRW51bSwgVGltZVR5cGVFbnVtIH0gZnJvbSBcInRtdy1waWNrZXJcIjtcclxuaW1wb3J0IHsgRW5kUG9pbnRDb25maWd1cmF0aW9uLCBFbmRQb2ludERhdGFQYXJhbXMsIFBhcmFtVHlwZUVudW0gfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2VuZFBvaW50Q29uZmlndXJhdGlvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBDb250ZXN0dWFsaXphdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZ2V0dGVyLm1vZGVsXCI7XHJcbmltcG9ydCB7IENhcGFjaXRvciB9IGZyb20gJ0BjYXBhY2l0b3IvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvbkJ1dHRvbkZpZWxkLCBBY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTLCBLZXlUeXBlVmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9hY3Rpb25CdXR0b24ubW9kZWxcIjtcclxuaW1wb3J0IHsgRmllbGRFeHRyYUNvbmZpZywgRmllbGRFeHRyYVZhbHVlcyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9maWVsZEV4dHJhQ29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgTm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3N0YXRpc3RpYy5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJlcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm0tZmllbGRcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL2FkZC1mb3JtLWZpZWxkLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL2FkZC1mb3JtLWZpZWxkLmNvbXBvbmVudC5zY3NzXCJdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWRkRm9ybUZpZWxkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgZmllbGRzRXh0cmFDb25maWc6IEFycmF5PEZpZWxkRXh0cmFDb25maWc+O1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgQElucHV0KCkgZW5kUG9pbnRDb25maWd1cmF0aW9uOiBFbmRQb2ludENvbmZpZ3VyYXRpb247XHJcbiAgQElucHV0KCkgZmllbGQ6IEJhc2VGaWVsZCB8IGFueTtcclxuICBASW5wdXQoKSBpbmRleEZpZWxkOiBudW1iZXI7XHJcbiAgQElucHV0KCkgZm9ybUZpZWxkc0dyb3VwczogQXJyYXk8Rm9ybUZpZWxkR3JvdXA+O1xyXG4gIC8qKiBFbGVuY28gZGVpIEZpZWxkIGNyZWF0aSBuZWxsYSBmb3JtLCB1c2F0aSBwZXIgcG9wb2xhcmUgbCdhdXRvY29tcGxldGUgZGVsbGEgcHJvcHJpZXTDoCBGb3JtdWxhLiAqL1xyXG4gIEBJbnB1dCgpIGF2YWlsYWJsZUZpZWxkczogQXJyYXk8QmFzZUZpZWxkPjtcclxuICBASW5wdXQoKSBmaWVsZFR5cGVzVG9FeGNsdWRlOiBBcnJheTxGaWVsZFR5cGVFbnVtPiA9IFtGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl0sIEZpZWxkVHlwZUVudW0uTG9va3VwXTtcclxuICBASW5wdXQoKSBRdWVyeUVkaXRvckNvbXBvbmVudDogRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGE7IC8vIEwnaW50ZXJvIGNvbXBvbmVudGUgcXVlcnkgRWRpdG9yXHJcbiAgQElucHV0KCkgY29udGVzdHVhbGl6YXRpb246IEFycmF5PENvbnRlc3R1YWxpemF0aW9uPiA9IG51bGw7XHJcbiAgQElucHV0KCkgYWN0aW9uQnV0dG9uczogYW55O1xyXG4gIEBJbnB1dCgpIGZvcm11bGFPYmplY3Q6IGFueTtcclxuXHJcbiAgQE91dHB1dCgpIG91dDogRXZlbnRFbWl0dGVyPGV2ZW50T3V0PiA9IG5ldyBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+KCk7XHJcbiAgQE91dHB1dCgpIHNhdmVGaWVsZEV2ZW50OiBFdmVudEVtaXR0ZXI8eyBmaWVsZDogQmFzZUZpZWxkLCByZW9wZW46IG51bWJlciB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBmaWVsZDogQmFzZUZpZWxkLCByZW9wZW46IG51bWJlciB9PigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuQWlFZGl0Rm9yRmllbGRFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgb3BlbkFpR3JhcGhpY1N1Z2dlc3RFdmVudDogRXZlbnRFbWl0dGVyPHsgY29kZTogc3RyaW5nOyBoaW50OiBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgY29kZTogc3RyaW5nOyBoaW50OiBzdHJpbmcgfT4oKTtcclxuXHJcbiAgQElucHV0KCkgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNob3dHcmFwaGljU3VnZ2VzdElucHV0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZ3JhcGhpY1N1Z2dlc3RIaW50OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSElOVF9QQUxFVFRFUyA9IFtcclxuICAgICdtb25vY3JvbWF0aWNvIHZpYnJhbnRlJywgJ2NvbXBsZW1lbnRhcmUnLCAndHJpYWRpY28nLCAnYW5hbG9nbyBjYWxkbycsICdhbmFsb2dvIGZyZWRkbycsXHJcbiAgICAncGFzdGVsbG8gZGVsaWNhdG8nLCAnbmVvbiBzdSBzY3VybycsICdlYXJ0aCB0b25lcycsICdvY2Vhbm8gcHJvZm9uZG8nLCAndHJhbW9udG8gY29sb3JhdG8nLFxyXG4gICAgJ2ZvcmVzdGEgYXV0dW5uYWxlJywgJ2xhdmFuZGEgZSBvcm8nLCAnY29yYWxsbyBlIHR1cmNoZXNlJywgJ3Jvc3NvIGUgYW50cmFjaXRlJywgJ3ZlcmRlIGFjcXVhIGUgc2FiYmlhJyxcclxuICAgICd2aW9sYSBlbGV0dHJpY28gZSBnaWFsbG8gbGltb25lJywgJ3Jvc2EgY2lwcmlhIGUgZ3JpZ2lvIHBlcmxhJywgJ2JsdSBjb2JhbHRvIGUgYXJhbmNpbyBicnVjaWF0bycsXHJcbiAgICAnb3JvIGFudGljbyBlIGJvcmRlYXV4JywgJ21lbnRhIGZyZXNjYSBlIGNpb2Njb2xhdG8nLCAnYXJnZW50byBlIGJsdSBhY2NpYWlvJywgJ3Blc2NhIGUgaW5kYWNvJyxcclxuICAgICdyb3NzbyBjaWxpZWdpYSBlIGF2b3JpbycsICd0ZWFsIHNjdXJvIGUgcmFtZScsICdsaW1lIGUgYmx1IG5hdnknLCAnbGlsbGEgZSB2ZXJkZSBzYWx2aWEnLFxyXG4gICAgJ2F6enVycm8gZ2hpYWNjaW8gZSBncmlnaW8gYXJkZXNpYScsICdhbWJyYSBlIHBldHJvbGlvJywgJ3NtZXJhbGRvIGUgcm9zYSBhbnRpY28nLCAnYmlhbmNvIGUgbmVybyBjb24gYWNjZW50byByb3NzbyBmdW9jbycsXHJcbiAgXTtcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBISU5UX1NUWUxFUyA9IFtcclxuICAgICdtaW5pbWFsaXN0YScsICdib2xkIGUgdml2YWNlJywgJ2VsZWdhbnRlIGUgc29icmlvJywgJ2dpb2Nvc28gZSBkaW5hbWljbycsICdpbmR1c3RyaWFsZScsXHJcbiAgICAncmV0cm9mdXR1cmlzdGEnLCAnb3JnYW5pY28gZSBuYXR1cmFsZScsICd0ZWNoL2RpZ2l0YWxlJywgJ2x1eHVyeSBwcmVtaXVtJywgJ3ZpbnRhZ2UgbW9yYmlkbycsXHJcbiAgICAnZmxhdCBkZXNpZ24gcHVsaXRvJywgJ2dsYXNzbW9ycGhpc20nLCAnbmV1bW9yZmlzbW8nLCAnZGFyayBtb2RlIHJhZmZpbmF0bycsXHJcbiAgICAnYnJ1dGFsaXN0IGNvbiBib3JkaSBzcGVzc2knLCAnc2NhbmRpbmF2byBwdWxpdG8nLCAnYXJ0IGTDqWNvIGdlb21ldHJpY28nLCAnY3liZXJwdW5rIGRpc3RvcGljbycsXHJcbiAgICAncG9wIGFydCBhIHRpbnRlIHBpYXR0ZScsICd3YXRlcmNvbG9yIHBhc3RlbGxvIHNmdW1hdG8nLCAnbmVvbiBhbm5pIG90dGFudGEnLCAnbWF0ZXJpYWwgZGVzaWduIGNvbiBvbWJyZScsXHJcbiAgICAnYXVyb3JhIGJvcmVhbGUnLCAnc3dpc3Mgc3R5bGUgdGlwb2dyYWZpY28nLCAndHJvcGljYWxlIHZpdmFjZScsICdtb25vY3JvbW8gY29uIGFjY2VudG8gc2luZ29sbycsXHJcbiAgICAnYXVyb3JhIG5vdHR1cm5hIHNjdXJhJywgJ2NvdHRhZ2Vjb3JlIGNhbGRvJyxcclxuICBdO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEhJTlRfQURKRUNUSVZFUyA9IFtcclxuICAgICdvcmlnaW5hbGUnLCAnaW1wcmV2ZWRpYmlsZScsICdhY2NhdHRpdmFudGUnLCAnc3BldHRhY29sYXJlJywgJ2RlbGljYXRvJyxcclxuICAgICdhdWRhY2UnLCAncmFmZmluYXRvJywgJ2dpb2Nvc28nLCAndml2YWNlJywgJ21pc3Rlcmlvc28nLFxyXG4gICAgJ2NhbGRvJywgJ2ZyZXNjbycsICdyb21hbnRpY28nLCAnZnV0dXJpc3RpY28nLCAnZWxlZ2FudGUnLFxyXG4gICAgJ3J1c3RpY28nLCAnbW9kZXJubycsICd2aW50YWdlJywgJ2FybW9uaW9zbycsICdzb3JwcmVuZGVudGUnLFxyXG4gIF07XHJcblxyXG4gIHJhbmRvbWl6ZUdyYXBoaWNIaW50KCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGljayA9IDxUPihhcnI6IFRbXSk6IFQgPT4gYXJyW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGFyci5sZW5ndGgpXTtcclxuICAgIGNvbnN0IEMgPSBBZGRGb3JtRmllbGRDb21wb25lbnQ7XHJcbiAgICBjb25zdCBwYWxldHRlID0gcGljayhDLkhJTlRfUEFMRVRURVMpO1xyXG4gICAgY29uc3Qgc3R5bGUgICA9IHBpY2soQy5ISU5UX1NUWUxFUyk7XHJcbiAgICBjb25zdCBhZGoxICAgID0gcGljayhDLkhJTlRfQURKRUNUSVZFUyk7XHJcbiAgICBjb25zdCB1c2VUd28gID0gTWF0aC5yYW5kb20oKSA8IDAuNTtcclxuICAgIGNvbnN0IGFkajIgICAgPSB1c2VUd28gPyBwaWNrKEMuSElOVF9BREpFQ1RJVkVTLmZpbHRlcihhID0+IGEgIT09IGFkajEpKSA6IG51bGw7XHJcbiAgICBjb25zdCBhZGpUZXh0ID0gYWRqMiA/IGAke2FkajF9IGUgJHthZGoyfWAgOiBhZGoxO1xyXG4gICAgdGhpcy5ncmFwaGljU3VnZ2VzdEhpbnQgPSBgUGFsZXR0ZSAke3BhbGV0dGV9LCBzdGlsZSAke3N0eWxlfSwgJHthZGpUZXh0fWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGVuc3VyZUZpZWxkQ29kZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLmZpZWxkPy5MYWJlbD8udHJpbSgpKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuRGVzY3JpcHRpb24gPSB0aGlzLmZpZWxkLkRlc2NyaXB0aW9uPy50cmltKCkgfHwgJ0NhbXBvIHNlbnphIE5vbWUnO1xyXG4gICAgICB0aGlzLmZpZWxkLkxhYmVsID0gJ19jYW1wb3Nlbnphbm9tZV8nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZmllbGQuTGFiZWw7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5BaUVkaXRGb3JGaWVsZCgpOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbkFpRWRpdEZvckZpZWxkRXZlbnQuZW1pdCh0aGlzLmZpZWxkPy5MYWJlbCA/PyAnJyk7XHJcbiAgfVxyXG5cclxuICBvbkdyYXBoaWNTdWdnZXN0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgY29kZSA9IHRoaXMuZW5zdXJlRmllbGRDb2RlKCk7XHJcbiAgICB0aGlzLm9wZW5BaUdyYXBoaWNTdWdnZXN0RXZlbnQuZW1pdCh7IGNvZGUsIGhpbnQ6IHRoaXMuZ3JhcGhpY1N1Z2dlc3RIaW50IH0pO1xyXG4gICAgdGhpcy5zaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9IGZhbHNlO1xyXG4gICAgdGhpcy5ncmFwaGljU3VnZ2VzdEhpbnQgPSAnJztcclxuICB9XHJcblxyXG4gIHJlc2l6ZWRJbWFnZXNIZWlnaHRQeDogbnVtYmVyO1xyXG4gIGZpZWxkRm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwO1xyXG4gIGtleVZhbHVlT2JqZWN0OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0gPSB7IGtleTogXCJcIiwgdmFsdWU6IFwiXCIgfTtcclxuICBhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmU6IEFycmF5PENvbFNwYW5TaXplc0VudW0+ID0gW107XHJcbiAgYXZhaWxhYmxlQ29sU3BhblNpemVzUmlzcG9zdGE6IEFycmF5PENvbFNwYW5TaXplc0VudW0+ID0gW107XHJcbiAgZm9ybXVsYUF1dG9jb21wbGV0ZU9wdGlvbnM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PjtcclxuICBWaXNpYmxlSWZBdXRvY29tcGxldGVPcHRpb25zOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT47XHJcbiAgQXZhaWxhYmxlRmlsZUV4dGVuc2lvbnMgPSBBdmFpbGFibGVGaWxlRXh0ZW5zaW9ucztcclxuICBBdmFpbGFibGVJbWFnZUV4dGVuc2lvbnMgPSBBdmFpbGFibGVJbWFnZUV4dGVuc2lvbnM7XHJcbiAgZmllbGRJbnZpc2liaWxpdHlFbnVtID0gRmllbGRJbnZpc2liaWxpdHlFbnVtO1xyXG4gIGNvbHVtbktleXM6IEFycmF5PHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4gPSBuZXcgQXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PigpO1xyXG4gIGFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtOiBhbnk7XHJcblxyXG4gIC8vI3JlZ2lvbiBUZW1wbGF0ZSBkZWkgdmFyaSBwZXp6aSBkaSBmb3JtIHBlciBsYSBjcmVhemlvbmUgZGkgdW4gY2FtcG8oaW4gYmFzZSBhbCB0aXBvIHNjZWx0bykuXHJcbiAgZmllbGRUeXBlRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJ0ZXh0RmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICB0ZXh0RmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImxhYmVsRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBsYWJlbEZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJidXR0b25GaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGJ1dHRvbkZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJ0ZXh0YXJlYUZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgdGV4dGFyZWFGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiYm9vbGVhZEZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgYm9vbGVhZEZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkYXRlRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBkYXRlRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcIm51bWVyaWNGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIG51bWVyaWNGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiYXR0YWNobWVudEZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgYXR0YWNobWVudEZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJpbWFnZUZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgaW1hZ2VGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJpbWFnZUZpZWxkU2VsZWN0b3JGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBpbWFnZUZpZWxkU2VsZWN0b3JGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImxpc3RWYWx1ZUZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgbGlzdFZhbHVlRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImxvb2t1cEZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgbG9va3VwRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImRhdGFHZXR0ZXJUZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRhdGFHZXR0ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBQcm9wcmlldMOgIHBlciBnZXN0aXJlIGkgbWV0YWRhdGEgbmVpIGNhbXBpIHRpIGRpcG8gQWxsZWdhdG8gbyBJbW1hZ2luZVxyXG4gIG1ldGFkYXRhQ29sdW1uczogQXJyYXk8Q29uZmlnQ29sdW1uPjtcclxuICAvL0BWaWV3Q2hpbGQoJ21ldGFkYXRhRmllbGRzVGFibGUnLCB7IHN0YXRpYzogZmFsc2UgfSkgbWV0YWRhdGFGaWVsZHNUYWJsZTogRXFwVGFibGVDb21wb25lbnQ7XHJcbiAgc2VsZWN0ZWRNZXRhZGF0YTogQmFzZUZpZWxkO1xyXG4gIC8vaW5kZXhTZWxlY3RlZE1ldGFkYXRhOiBudW1iZXI7XHJcbiAgLy9kaWFsb2dNZXRhZGF0YVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIGRpYWxvZ1Zpc2libGVJZlJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIGRpYWxvZ1JlYWRPbmx5SWZSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICAvL0BWaWV3Q2hpbGQoJ2RpYWxvZ01ldGFkYXRhJywgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nTWV0YWRhdGE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ0Zvcm11bGFcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nRm9ybXVsYTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBkaWFsb2dGb3JtdWxhUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyBAVmlld0NoaWxkKFwiZGlhbG9nQXZhbnRpSW5kaWV0cm9cIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nQXZhbnRpSW5kaWV0cm86IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLy8gZGlhbG9nQXZhbnRpSW5kaWV0cm9SZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuXHJcbiAgLy8jcmVnaW9uIFByb3ByaWV0w6AgcGVyIGdlc3RpcmUgbGUgaW1tYWdpbmkgbmVpIGNhcGkgZGkgdGlwbyBlbGVuY28gZ2VuZXJpY29cclxuICBAVmlld0NoaWxkKFwiYnV0dG9uSW1hZ2VzS2V5VmFsdWVJbnB1dENvbHVtblwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGJ1dHRvbkltYWdlc0tleVZhbHVlSW5wdXRDb2x1bW46IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBFbnVtZXJhdG9yaSB1c2F0aSBuZWxsJ2h0bWxcclxuICBGaWVsZFR5cGVFbnVtID0gRmllbGRUeXBlRW51bTtcclxuICBCb29sUHJlc2VudGFudGlvRW51bSA9IEJvb2xQcmVzZW50YW50aW9FbnVtO1xyXG4gIERhdGVUaW1lVHlwZUVudW0gPSBEYXRlVGltZVR5cGVFbnVtO1xyXG4gIExpc3RQcmVzZW50YXRpb25FbnVtID0gTGlzdFByZXNlbnRhdGlvbkVudW07XHJcbiAgVGV4dE1hc2tFbnVtID0gVGV4dE1hc2tFbnVtO1xyXG4gIFRleHRGaWVsZEljb25Qb3NpdGlvbkVudW0gPSBUZXh0RmllbGRJY29uUG9zaXRpb25FbnVtO1xyXG4gIE51bWVyaWNGaWVsZEljb25Qb3NpdGlvbkVudW0gPSBOdW1lcmljRmllbGRJY29uUG9zaXRpb25FbnVtO1xyXG4gIFRleHRhcmVhRmllbGRJY29uUG9zaXRpb25FbnVtID0gVGV4dGFyZWFGaWVsZEljb25Qb3NpdGlvbkVudW07XHJcblxyXG4gIHJlYWRvbmx5IGRhdGVUaW1lSWNvblBvc2l0aW9uT3B0aW9ucyA9IFtcclxuICAgIHsgdmFsdWU6ICdsZWZ0JywgIGxhYmVsOiAnU2luaXN0cmEnIH0sXHJcbiAgICB7IHZhbHVlOiAncmlnaHQnLCBsYWJlbDogJ0Rlc3RyYScgfSxcclxuICBdO1xyXG4gIEF0dGFjaG1lbnRUeXBlID0gQXR0YWNobWVudFR5cGU7XHJcbiAgYXR0YWNobWVudEZpZWxkVHlwZUVudW0gPSBBdHRhY2htZW50RmllbGRUeXBlRW51bTtcclxuICBkYXRhR2V0dGVyVHlwZUVudW0gPSBEYXRhR2V0dGVyVHlwZUVudW07XHJcbiAgc3Vic2NyaXB0aW9uOiBhbnk7XHJcblxyXG4gIHNob3dUZXh0RmllbGRJY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd051bWVyaWNGaWVsZEljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93VGV4dGFyZWFGaWVsZEljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vI3JlZ2lvbiBHZXN0aW9uZSBkZWxsZSBsaXN0ZSBkaSBpbW1hZ2luaVxyXG4gIGNvbmZpZ0NvbHVtbkxpc3RJbWFnZXM6IEFycmF5PENvbmZpZ0NvbHVtbj4gPSBuZXcgQXJyYXk8Q29uZmlnQ29sdW1uPigpO1xyXG4gIGNvbmZpZ0NvbHVtbkltYWdlOiBBcnJheTxDb25maWdDb2x1bW4+ID0gbmV3IEFycmF5PENvbmZpZ0NvbHVtbj4oKTtcclxuICBAVmlld0NoaWxkKCdHZW5lcmljTGlzdEltYWdlc0ltYWdlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBHZW5lcmljTGlzdEltYWdlc0ltYWdlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnR2VuZXJpY0xpc3RJbWFnZXNLZXlUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIEdlbmVyaWNMaXN0SW1hZ2VzS2V5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnR2VuZXJpY0xpc3RJbWFnZXNWYWx1ZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgR2VuZXJpY0xpc3RJbWFnZXNWYWx1ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2ltYWdlU2VsZWN0b3JBdHRhY2htZW50cycsIHsgc3RhdGljOiBmYWxzZSB9KSBpbWFnZVNlbGVjdG9yQXR0YWNobWVudHM6IEVxcEF0dGFjaG1lbnRzQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ2ltYWdlQXR0YWNobWVudCcsIHsgc3RhdGljOiBmYWxzZSB9KSBpbWFnZUF0dGFjaG1lbnQ6IEVxcEF0dGFjaG1lbnRzQ29tcG9uZW50O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyBEQiBHZXR0ZXJcclxuICBkaWFsb2dRRVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIC8vQFZpZXdDaGlsZCgnZGlhbG9nTWV0YWRhdGEnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dNZXRhZGF0YTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nUUVcIiwgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nUUU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8vIFRNVy1QSUNLRVJcclxuICBtb2RlID0gTW9kZUVudW1cclxuICB0aW1lVHlwZSA9IFRpbWVUeXBlRW51bVxyXG5cclxuICAvLyBETSBHZXR0ZXJcclxuICBmb3JtczogQXJyYXk8Rm9ybT4gPSBuZXcgQXJyYXk8Rm9ybT4oKTtcclxuICBETU1vZHVsZTogYW55O1xyXG4gIERNRmllbGQ6IGFueTtcclxuICBETUZpZWxkczogQXJyYXk8eyBrZXk6IHN0cmluZyB9PjtcclxuICBETUdldHRlckNhcmRpbmFsaXRpZXMgPSBEYXRhR2V0dGVyQ2FyZGluYWxpdHlFbnVtO1xyXG5cclxuICBwbGF0Zm9ybTogc3RyaW5nID0gQ2FwYWNpdG9yLmdldFBsYXRmb3JtKCk7XHJcblxyXG4gIGxvYWRlZEZpZWxkRXh0cmE6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBhZ2dyZWdhdGlvbkZpZWxkTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vIFByZXZpZXcgbGl2ZSBwZXIgVGV4dEZpZWxkIC8gTnVtZXJpY0ZpZWxkXHJcbiAgcHJldmlld1JlY29yZDogYW55ID0ge307XHJcbiAgc3R5bGVWZXJzaW9uOiBudW1iZXIgPSAwO1xyXG4gIHByZXZpZXdGb3JjZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgZ2V0IGlzVGV4dEZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydDYW1wbyBkaSB0ZXN0byddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTnVtZXJpY0ZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydDYW1wbyBudW1lcmljbyddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzVGV4dGFyZWFGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnQXJlYSBkaSB0ZXN0byddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQm9vbGVhbkZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydCb29sZWFubyddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQXR0YWNobWVudEZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydBbGxlZ2F0byddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTGFiZWxGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnRXRpY2hldHRhJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNEYXRlRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0RhdGEgZS9vIG9yYSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzQWN0aW9uQnV0dG9uRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0JvdHRvbmUnXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0ltYWdlRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0ltbWFnaW5lJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNJbWFnZVdpdGhNYXJrZXJzRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0ltbWFnaW5lIGNvbiBtYXJrZXJzJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNMaXN0VmFsdWVGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGdlbmVyaWNvJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNJbWFnZVNlbGVjdG9yRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0VsZW5jbyBpbW1hZ2luaSddO1xyXG4gIH1cclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBUZXh0RmllbGQgcGVyIGxlIHRhYiBDU1MgKi9cclxuICByZWFkb25seSB0ZXh0RmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0lucHV0JywgICAgICAgbGFiZWw6ICdDYXNlbGxhIGRpIHRlc3RvJyB9LFxyXG4gICAgeyBrZXk6ICdEZXNjcml6aW9uZScsIGxhYmVsOiAnRGVzY3JpemlvbmUgKGxhYmVsKScgfSxcclxuICAgIHsga2V5OiAnSWNvbmEnLCAgICAgICBsYWJlbDogJ0ljb25hJyB9LFxyXG4gICAgeyBrZXk6ICdNaWNyb2Zvbm8nLCAgIGxhYmVsOiAnTWljcm9mb25vJyB9LFxyXG4gICAgeyBrZXk6ICdFcnJvcmUnLCAgICAgIGxhYmVsOiAnVGVzdG8gZXJyb3JlJyB9LFxyXG4gIF07XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBzdGF0aSBwZXIgbGUgdGFiIENTUyAqL1xyXG4gIHJlYWRvbmx5IHRleHRGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ0ZvY3VzZWQnLCAgIGxhYmVsOiAnU2VsZXppb25hdG8nIH0sXHJcbiAgICB7IGtleTogJ05vdFZhbGlkJywgIGxhYmVsOiAnTm9uIFZhbGlkbycgfSxcclxuICAgIHsga2V5OiAnUmVhZG9ubHknLCAgbGFiZWw6ICdTb2xhIExldHR1cmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRUZXh0RmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBOdW1lcmljRmllbGQgcGVyIGxlIHRhYiBDU1MgKHNlbnphIE1pY3JvZm9ubykgKi9cclxuICByZWFkb25seSBudW1lcmljRmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0lucHV0JywgICAgICAgbGFiZWw6ICdDYXNlbGxhIG51bWVyaWNhJyB9LFxyXG4gICAgeyBrZXk6ICdEZXNjcml6aW9uZScsIGxhYmVsOiAnRGVzY3JpemlvbmUgKGxhYmVsKScgfSxcclxuICAgIHsga2V5OiAnSWNvbmEnLCAgICAgICBsYWJlbDogJ0ljb25hJyB9LFxyXG4gICAgeyBrZXk6ICdFcnJvcmUnLCAgICAgIGxhYmVsOiAnVGVzdG8gZXJyb3JlJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IG51bWVyaWNGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ0ZvY3VzZWQnLCAgIGxhYmVsOiAnU2VsZXppb25hdG8nIH0sXHJcbiAgICB7IGtleTogJ05vdFZhbGlkJywgIGxhYmVsOiAnTm9uIFZhbGlkbycgfSxcclxuICAgIHsga2V5OiAnUmVhZG9ubHknLCAgbGFiZWw6ICdTb2xhIExldHR1cmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWROdW1lcmljRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBUZXh0YXJlYUZpZWxkIHBlciBsZSB0YWIgQ1NTICovXHJcbiAgcmVhZG9ubHkgdGV4dGFyZWFGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnSW5wdXQnLCAgICAgICBsYWJlbDogJ0FyZWEgZGkgdGVzdG8nIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gICAgeyBrZXk6ICdJY29uYScsICAgICAgIGxhYmVsOiAnSWNvbmEnIH0sXHJcbiAgICB7IGtleTogJ01pY3JvZm9ubycsICAgbGFiZWw6ICdNaWNyb2Zvbm8nIH0sXHJcbiAgICB7IGtleTogJ0Vycm9yZScsICAgICAgbGFiZWw6ICdUZXN0byBlcnJvcmUnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgdGV4dGFyZWFGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ0ZvY3VzZWQnLCAgIGxhYmVsOiAnU2VsZXppb25hdG8nIH0sXHJcbiAgICB7IGtleTogJ05vdFZhbGlkJywgIGxhYmVsOiAnTm9uIFZhbGlkbycgfSxcclxuICAgIHsga2V5OiAnUmVhZG9ubHknLCAgbGFiZWw6ICdTb2xhIExldHR1cmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRUZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgQm9vbGVhbkZpZWxkIHBlciBsZSB0YWIgQ1NTICgzIGVsZW1lbnRpLCBzZW56YSBOb3RWYWxpZCkgKi9cclxuICByZWFkb25seSBib29sZWFuRmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ1NjZWx0YScsICAgICAgbGFiZWw6ICdDb250cm9sbG8gKHRvZ2dsZSAvIGNoZWNrYm94IC8gcmFkaW8pJyB9LFxyXG4gICAgeyBrZXk6ICdEZXNjcml6aW9uZScsIGxhYmVsOiAnRGVzY3JpemlvbmUgKGxhYmVsKScgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBib29sZWFuRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gICAgeyBrZXk6ICdGb2N1c2VkJywgICBsYWJlbDogJ1NlbGV6aW9uYXRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZEJvb2xlYW5GaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIEF0dGFjaG1lbnRGaWVsZCBwZXIgbGUgdGFiIENTUyAqL1xyXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgICAgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdMYWJlbCcsICAgICAgICAgICAgbGFiZWw6ICdMYWJlbCAvIGludGVzdGF6aW9uZScgfSxcclxuICAgIHsga2V5OiAnQm90dG9uZUFnZ2l1bmdpJywgIGxhYmVsOiAnQm90dG9uZSBBZ2dpdW5naScgfSxcclxuICAgIHsga2V5OiAnQm90dG9uZURvd25sb2FkJywgIGxhYmVsOiAnQm90dG9uZSBEb3dubG9hZCcgfSxcclxuICAgIHsga2V5OiAnQm90dG9uZUVsaW1pbmEnLCAgIGxhYmVsOiAnQm90dG9uZSBFbGltaW5hJyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lQW50ZXByaW1hJywgbGFiZWw6ICdCb3R0b25lIEFudGVwcmltYScgfSxcclxuICAgIHsga2V5OiAnQ2FtcG9Ob21lRmlsZScsICAgIGxhYmVsOiAnQ2FtcG8gbm9tZSBmaWxlJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ05vdFZhbGlkJywgIGxhYmVsOiAnTm9uIFZhbGlkbycgfSxcclxuICAgIHsga2V5OiAnUmVhZG9ubHknLCAgbGFiZWw6ICdTb2xhIExldHR1cmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRBdHRhY2htZW50RmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBMYWJlbEZpZWxkIHBlciBsZSB0YWIgQ1NTICgxIGVsZW1lbnRvLCAyIHN0YXRpKSAqL1xyXG4gIHJlYWRvbmx5IGxhYmVsRmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IGxhYmVsRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkTGFiZWxGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIERhdGVGaWVsZCBwZXIgbGUgdGFiIENTUyAoOCBlbGVtZW50aSwgNSBzdGF0aSkgKi9cclxuICByZWFkb25seSBkYXRlRmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgICAgICAgICBsYWJlbDogJ0NvbnRlbml0b3JlIGVzdGVybm8nIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgICAgICAgIGxhYmVsOiAnRGVzY3JpemlvbmUgKGxhYmVsKScgfSxcclxuICAgIHsga2V5OiAnQ29udGVuaXRvcmVJbnRlcm5vJywgbGFiZWw6ICdDb250ZW5pdG9yZSBpbnRlcm5vJyB9LFxyXG4gICAgeyBrZXk6ICdDYW1wb0RhdGEnLCAgICAgICAgICBsYWJlbDogJ0Nhc2VsbGEgZGkgdGVzdG8nIH0sXHJcbiAgICB7IGtleTogJ0ljb25hQ2FsZW5kYXJpbycsICAgIGxhYmVsOiAnQm90dG9uZSBjYWxlbmRhcmlvJyB9LFxyXG4gICAgeyBrZXk6ICdJY29uYU9yb2xvZ2lvJywgICAgICBsYWJlbDogJ0JvdHRvbmUgb3JvbG9naW8nIH0sXHJcbiAgICB7IGtleTogJ0ljb25hQ2FuY2VsbGF6aW9uZScsIGxhYmVsOiAnQm90dG9uZSBjYW5jZWxsYXppb25lJyB9LFxyXG4gICAgeyBrZXk6ICdUb29sdGlwJywgICAgICAgICAgICBsYWJlbDogJ1Rvb2x0aXAnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgZGF0ZUZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnRm9jdXNlZCcsICAgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZERhdGVGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIEFjdGlvbkJ1dHRvbkZpZWxkIHBlciBsZSB0YWIgQ1NTICgzIGVsZW1lbnRpLCAzIHN0YXRpKSAqL1xyXG4gIHJlYWRvbmx5IGFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICBsYWJlbDogJ0JvdHRvbmUnIH0sXHJcbiAgICB7IGtleTogJ0ljb25hJywgICAgICAgbGFiZWw6ICdJY29uYScgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCBsYWJlbDogJ0V0aWNoZXR0YSAobGFiZWwpJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IGFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCAgIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ1NlbGV6aW9uYXRvJywgbGFiZWw6ICdTZWxlemlvbmF0byAoY2xpY2spJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkQWN0aW9uQnV0dG9uRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBJbWFnZUZpZWxkIHBlciBsZSB0YWIgQ1NTICgzIGVsZW1lbnRpLCAyIHN0YXRpKSAqL1xyXG4gIHJlYWRvbmx5IGltYWdlRmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgICAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgICAgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lRGlzZWduYScsIGxhYmVsOiAnQm90dG9uZSBEaXNlZ25hJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IGltYWdlRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkSW1hZ2VGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIEltYWdlV2l0aE1hcmtlcnNGaWVsZCBwZXIgbGUgdGFiIENTUyAoMyBlbGVtZW50aSwgMiBzdGF0aSkgKi9cclxuICByZWFkb25seSBpbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdEZXNjcml6aW9uZScsICBsYWJlbDogJ0Rlc2NyaXppb25lIChsYWJlbCknIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmVNYXJjYScsIGxhYmVsOiAnQm90dG9uZSBNYXJjYScgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBpbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vI3JlZ2lvbiBMaXN0VmFsdWVGaWVsZFN0eWxlQ1NTIOKAlCBtZXRhZGF0aSBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IGxpc3RWYWx1ZUNvbWJvRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgICAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0xhYmVsJywgICAgICAgICAgIGxhYmVsOiAnRXRpY2hldHRhJyB9LFxyXG4gICAgeyBrZXk6ICdDYXNlbGxhVHJpZ2dlcicsICBsYWJlbDogJ0Nhc2VsbGEgU2VsZWN0JyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lQ2FuY2VsbGEnLCBsYWJlbDogJ0JvdHRvbmUgQ2FuY2VsbGEnIH0sXHJcbiAgXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGxpc3RWYWx1ZVJhZGlvRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0xhYmVsJywgICAgIGxhYmVsOiAnRXRpY2hldHRhJyB9LFxyXG4gICAgeyBrZXk6ICdPcHppb25lJywgICBsYWJlbDogJ09wemlvbmUnIH0sXHJcbiAgICB7IGtleTogJ1NlbGV6aW9uZScsIGxhYmVsOiAnU2VsZXppb25lIChyYWRpbyknIH0sXHJcbiAgXTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGxpc3RWYWx1ZUJ1dHRvbkVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdMYWJlbCcsICAgbGFiZWw6ICdFdGljaGV0dGEnIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmUnLCBsYWJlbDogJ0JvdHRvbmUnIH0sXHJcbiAgXTtcclxuXHJcbiAgZ2V0IGxpc3RWYWx1ZVN0eWxlRWxlbWVudHMoKSB7XHJcbiAgICBjb25zdCBsdiA9IHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQ7XHJcbiAgICBjb25zdCBtb2RlID0gTnVtYmVyKGx2Py5QcmVzZW50YXRpb25Nb2RlKTtcclxuICAgIGlmIChtb2RlID09PSBMaXN0UHJlc2VudGF0aW9uRW51bVsnQ29tYm8gYm94J10pIHJldHVybiB0aGlzLmxpc3RWYWx1ZUNvbWJvRWxlbWVudHM7XHJcbiAgICBpZiAobW9kZSA9PT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ1B1bHNhbnRlIGNvbiB0ZXN0byddKSByZXR1cm4gdGhpcy5saXN0VmFsdWVCdXR0b25FbGVtZW50cztcclxuICAgIHJldHVybiB0aGlzLmxpc3RWYWx1ZVJhZGlvRWxlbWVudHM7XHJcbiAgfVxyXG5cclxuICByZWFkb25seSBsaXN0VmFsdWVGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgICBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gICAgeyBrZXk6ICdTZWxlemlvbmF0bycsIGxhYmVsOiAnU2VsZXppb25hdG8nIH0sXHJcbiAgICB7IGtleTogJ05vdFZhbGlkJywgICAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICAgIGxhYmVsOiAnU29sYSBMZXR0dXJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkTGlzdFZhbHVlRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8jZW5kcmVnaW9uIExpc3RWYWx1ZUZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTIOKAlCBtZXRhZGF0aSBwZXIgbGUgdGFiIENTU1xyXG5cclxuICByZWFkb25seSBpbWFnZVNlbGVjdG9yRmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgICAgICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnQ2FzZWxsYVNlbGV6aW9uZScsIGxhYmVsOiAnQ2FzZWxsYSBkaSBzZWxlemlvbmUnIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgICAgICBsYWJlbDogJ0Rlc2NyaXppb25lIChsYWJlbCknIH0sXHJcbiAgICB7IGtleTogJ1NlbGV6aW9uaScsICAgICAgICBsYWJlbDogJ1NlbGV6aW9uaSAoY2hlY2tib3gpJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IGltYWdlU2VsZWN0b3JGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgICBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gICAgeyBrZXk6ICdTZWxlemlvbmF0bycsIGxhYmVsOiAnU2VsZXppb25hdG8nIH0sXHJcbiAgICB7IGtleTogJ05vdFZhbGlkJywgICAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICAgIGxhYmVsOiAnU29sYSBMZXR0dXJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBJbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTU1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IFVudHlwZWRGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgZW51bUhlbHBlcjogRW51bUhlbHBlcixcclxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHV0aWxpdHlIZWxwZXJTZXJ2aWNlOiBVdGlsaXR5SGVscGVyU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG5cclxuICAgIHRoaXMuY29uZmlndXJlQ29sdW1ucygpO1xyXG4gICAgdGhpcy5jb25maWd1cmVGaWVsZHNFeHRyYSgpO1xyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIgPT0gbnVsbCkgeyB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIgPSBuZXcgRGF0YUdldHRlcigpOyB9XHJcbiAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlICE9IG51bGwgJiYgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IERhdGFHZXR0ZXJUeXBlRW51bVtcIkRhIG1vZHVsbyBkaW5hbWljb1wiXSkge1xyXG4gICAgICBhd2FpdCB0aGlzLmdldEFsbE1vZHVsZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySGFzUmVzZXRCdXR0b24gPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IFwidW5kZWZpbmVkXCIgJiYgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlQ29sdW1uS2V5cyh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLlBhcmFtcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5maWVsZFR5cGVzVG9FeGNsdWRlLmluY2x1ZGVzKEZpZWxkVHlwZUVudW1bXCJGb3JtIGRpIGRldHRhZ2xpb1wiXSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZpZWxkVHlwZXNUb0V4Y2x1ZGUucHVzaChGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25GaWVsZFR5cGVDaGFuZ2UoZmFsc2UpO1xyXG4gICAgdGhpcy5hdmFpbGFibGVGaWVsZHMgPSB0aGlzLmF2YWlsYWJsZUZpZWxkc1xyXG4gICAgICA/IHRoaXMuYXZhaWxhYmxlRmllbGRzLmZpbHRlcigoZikgPT4gZiAhPSB0aGlzLmZpZWxkKVxyXG4gICAgICA6IFtdO1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgaW1wb3N0YXJlIGkgdmFsb3JpIGRhIHN1Z2dlcmlyZSBuZWxsJ2F1dG9jb21wbGV0ZSBkZWwgY2FtcG8gRm9ybXVsYS5cclxuICAgKiBWaWVuZSBzY2F0ZW5hdG8gYWwgZm9jdXMgKGluIHF1ZXN0byBjYXNvIHZpZW5lIHBhc3NhdG8gaWwgcGFyYW1ldHJvIGEgbnVsbCBwZXIgZGlmZmVyZW56aWFybG9cclxuICAgKiBkYWxsJ2V2ZW50byBkaSBjbGljayBzdWxsYSB0YXN0aWVyYSkgZSBhbCBrZXl1cCBzdWxsJ2lucHV0IChpbCBwYXJhbWV0cm8gw6ggZGl2ZXJzbyBkYSBudWxsKS5cclxuICAgKiBAcGFyYW0ga2V5Ym9hcmRFdmVudCBFdmVudG8gc2NhdGVuYXRvIGFsIGtleXVwIHN1bGxhIHRhc3RpZXJhLiBTZSBudWxsIGFsbG9yYSBpbCBtZXRvZG8gw6ggc3RhdG8gaW52b2NhdG8gZGFsIGZvY3VzIHN1bGwnaW5wdXQuXHJcbiAgICogQHN1bW1hcnkgQWdnaW9ybmEgbCdlbGVuY28gZGVpIHN1Z2dlcmltZW50aSBwZXIgbCdhdXRvY29tcGxldGUgc2UgbCd1dGVudGUgZXNlZ3VlIGlsIGZvY3VzIHN1bGwnaW5wdXRcclxuICAgKiBvcHB1cmUgYWwga2V5dXAgc3VsbGEgdGFzdGllcmEgZGkgdW4gdGFzdG8gZGl2ZXJzbyBkYWxsZSBmcmVjY2UuXHJcbiAgICovXHJcbiAgLy8gc2V0Rm9ybXVsYUF1dG9jb21wbGV0ZU9wdGlvbnMoa2V5Ym9hcmRFdmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gIC8vICAgLy8gQ3JlbyBsJ2FycmF5IHBlciBsJ2F1dG9jb21wbGV0ZSBzb2xvIHNlIHN0byBmYWNlbmRvIGlsIGZvY3VzIHN1bGwnaW5wdXQgbyBzZSBzdG8gcHJlbWVuZG8gdW4gdGFzdG9cclxuICAvLyAgIC8vIHN1bGxhIHRhc3RpZXJhIGRpdmVyc28gZGFsbGUgZnJlY2NlIChpbiBxdWVzdCd1bHRpbW8gY2Fzbywgc2Ugbm9uIHZpZW5lIGVzZWd1aXRvIGlsIGZpbHRybyBzdWxsJ2V2ZW50byxcclxuICAvLyAgIC8vIG5vbiBzaSBwdcOyIHNlbGV6aW9uYXJlIHVuIHN1Z2dlcmltZW50byBkZWxsJ2F1dG9jb21wbGV0ZSBwZXJjaMOoIGFsIGNsaWNrIHZlcnJlYmJlIHJpY2FyaWNhdG8gbCdhcnJheSBlXHJcbiAgLy8gICAvLyBzaSBwcmVkZXJlYmJlIGxhIHNlbGV6aW9uZSBhcHBlbmEgZmF0dGEpLlxyXG4gIC8vICAgaWYgKCFrZXlib2FyZEV2ZW50IHx8ICFrZXlib2FyZEV2ZW50LmNvZGUuaW5jbHVkZXMoXCJBcnJvd1wiKSkge1xyXG4gIC8vICAgICB0aGlzLmZvcm11bGFBdXRvY29tcGxldGVPcHRpb25zID0gVXRpbGl0eUhlbHBlclNlcnZpY2UuR2V0QXV0b2NvbXBsZXRlT3B0aW9ucyh0aGlzLmF2YWlsYWJsZUZpZWxkcywgdGhpcy5maWVsZC5Gb3JtdWxhKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcbiAgc2V0VmlzaWJsZUlmQXV0b2NvbXBsZXRlT3B0aW9ucyhrZXlib2FyZEV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAvLyBDcmVvIGwnYXJyYXkgcGVyIGwnYXV0b2NvbXBsZXRlIHNvbG8gc2Ugc3RvIGZhY2VuZG8gaWwgZm9jdXMgc3VsbCdpbnB1dCBvIHNlIHN0byBwcmVtZW5kbyB1biB0YXN0b1xyXG4gICAgLy8gc3VsbGEgdGFzdGllcmEgZGl2ZXJzbyBkYWxsZSBmcmVjY2UgKGluIHF1ZXN0J3VsdGltbyBjYXNvLCBzZSBub24gdmllbmUgZXNlZ3VpdG8gaWwgZmlsdHJvIHN1bGwnZXZlbnRvLFxyXG4gICAgLy8gbm9uIHNpIHB1w7Igc2VsZXppb25hcmUgdW4gc3VnZ2VyaW1lbnRvIGRlbGwnYXV0b2NvbXBsZXRlIHBlcmNow6ggYWwgY2xpY2sgdmVycmViYmUgcmljYXJpY2F0byBsJ2FycmF5IGVcclxuICAgIC8vIHNpIHByZWRlcmViYmUgbGEgc2VsZXppb25lIGFwcGVuYSBmYXR0YSkuXHJcbiAgICBpZiAoIWtleWJvYXJkRXZlbnQgfHwgIWtleWJvYXJkRXZlbnQuY29kZS5pbmNsdWRlcyhcIkFycm93XCIpKSB7XHJcbiAgICAgIHRoaXMuVmlzaWJsZUlmQXV0b2NvbXBsZXRlT3B0aW9ucyA9XHJcbiAgICAgICAgVXRpbGl0eUhlbHBlclNlcnZpY2UuR2V0QXV0b2NvbXBsZXRlT3B0aW9ucyhcclxuICAgICAgICAgIHRoaXMuYXZhaWxhYmxlRmllbGRzLFxyXG4gICAgICAgICAgdGhpcy5maWVsZC5WaXNpYmxlSWZcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbWl0X3NwZWNpYWxfY2hhcihldmVudCkge1xyXG4gICAgdmFyIGs7XHJcbiAgICBrID0gZXZlbnQua2V5Q29kZTsgLy8gICAgICAgICBrID0gZXZlbnQua2V5Q29kZTsgIChCb3RoIGNhbiBiZSB1c2VkKVxyXG4gICAgaWYgKGsgPT0gMzQpIHtcclxuICAgICAgZXZlbnQua2V5Q29kZSA9IDA7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWEgaWwgRm9ybUdyb3VwIHBlciBsJ2FnZ2l1bnRhIGRpIHVuIG51b3ZvIGNhbXBvIGFsbCdpbnRlcm5vIGRlbGxhIGZvcm0uXHJcbiAgICogTWV0b2RvIHJpY2hpYW1hdG8gb2duaSB2b2x0YSBjaGUgY2FtYmlhIGlsIHRpcG8gZGVsIGNhbXBvIHNjZWx0byBvIHZpZW5lIGFnZ2l1bnRvL21vZGlmaWNhdG8gdW4gRmllbGRcclxuICAgKi9cclxuICBjcmVhdGVGaWVsZEZvcm0oKSB7XHJcbiAgICB0aGlzLmZpZWxkRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIExhYmVsOiBbXHJcbiAgICAgICAgdGhpcy5maWVsZC5MYWJlbCxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGwsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeW2EtekEtWiBdKiRcIiksXHJcbiAgICAgICAgXSxcclxuICAgICAgXSxcclxuICAgICAgRGVzY3JpcHRpb246IFtcclxuICAgICAgICB0aGlzLmZpZWxkLkRlc2NyaXB0aW9uLFxyXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIF0sXHJcbiAgICAgIFJlYWRvbmx5OiBbdGhpcy5maWVsZC5SZWFkb25seV0sXHJcbiAgICAgIFJlYWRvbmx5SWY6IFt0aGlzLmZpZWxkLlJlYWRvbmx5SWZdLFxyXG4gICAgICBSZXF1aXJlZDogW3RoaXMuZmllbGQuUmVxdWlyZWRdLFxyXG4gICAgICBGaWVsZFR5cGU6IFtcclxuICAgICAgICB0aGlzLmZpZWxkLkZpZWxkVHlwZSxcclxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBdLFxyXG4gICAgICBETU1vZHVsZTogW251bGxdLFxyXG4gICAgICBETUZpZWxkOiBbbnVsbF0sXHJcbiAgICAgIERhdGFHZXR0ZXJUeXBlOiBbXHJcbiAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlLFxyXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgXSxcclxuICAgICAgQ29sU3BhblNpemVzOiBbdGhpcy5maWVsZC5Db2xTcGFuU2l6ZXNdLFxyXG4gICAgICBJbkxpc3RWaWV3OiBbdGhpcy5maWVsZC5Jbkxpc3RWaWV3XSxcclxuICAgICAgSW52aXNpYmlsaXR5OiBbdGhpcy5maWVsZC5JbnZpc2liaWxpdHldLFxyXG4gICAgICBWaXNpYmxlSWY6IFt0aGlzLmZpZWxkLlZpc2libGVJZiwgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBNYWludGFpbl9WYWx1ZTogW3RoaXMuZmllbGQuTWFpbnRhaW5fVmFsdWVdLFxyXG4gICAgICBUb29sdGlwOiBbdGhpcy5maWVsZC5Ub29sdGlwLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIExhYmVsc3R5bGVDU1M6IFt0aGlzLmZpZWxkLkxhYmVsc3R5bGVDU1MsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgRmllbGRzdHlsZUNTUzogW3RoaXMuZmllbGQuRmllbGRzdHlsZUNTUywgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBGb3JtdWxhOiBbdGhpcy5maWVsZC5Gb3JtdWxhLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIERhdGFHZXR0ZXJWYWx1ZTogW3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uOiBbdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiwgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBEYXRhR2V0dGVySXNNdWx0aXNlbGVjdDogW3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySXNNdWx0aXNlbGVjdCwgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG5cclxuICAgICAgQW5zd2VyU3R5bGVMYWJlbHN0eWxlQ1NTOiBbdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5MYWJlbHN0eWxlQ1NTLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIEFuc3dlclN0eWxlRmllbGRzdHlsZUNTUzogW3RoaXMuZmllbGQuQW5zd2VyU3R5bGUuRmllbGRzdHlsZUNTUywgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBBbnN3ZXJTdHlsZVZpc2libGVJZjogW3RoaXMuZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIEFuc3dlclN0eWxlQ29sU3BhblNpemVzOiBbdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5Db2xTcGFuU2l6ZXNdLFxyXG4gICAgICBBbnN3ZXJTdHlsZUluTGlzdFZpZXc6IFt0aGlzLmZpZWxkLkFuc3dlclN0eWxlLkluTGlzdFZpZXddLFxyXG4gICAgICBBbnN3ZXJTdHlsZUludmlzaWJpbGl0eTogW3RoaXMuZmllbGQuQW5zd2VyU3R5bGUuSW52aXNpYmlsaXR5XSxcclxuICAgIH0pO1xyXG5cclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJGT1JNIEZJRUxEIENSRUFUT1wiLCB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIpO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm1GaWVsZHNHcm91cHMpIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgIFwiRmllbGRHcm91cFwiLFxyXG4gICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2wodGhpcy5maWVsZC5GaWVsZEdyb3VwLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBxdWVzdGlvblBvbGwoY29udHJvbDogRm9ybUNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgLy8gYyfDqCB1biBGb3JtQ29udHJvbCBjaGUgw6ggdnVvdG8gY2hlIGRhIHByb2JsZW1pIChwcm9iYWJpbG1lbnRlIHR5cGUgRGF0YSwgY2FtcG8gRm9ybWF0bylcclxuICAgIGlmIChjb250cm9sLnZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgVXRpbGl0eUhlbHBlclNlcnZpY2Uuc3RyaW5nQ2hlY2tQYXJlbnRlc2lzKFxyXG4gICAgICAgICAgY29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIGNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4geyBcIk1pc3NpbmcgUGFyZW50aGVzaXNcIjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgc3RyaW5nU2FuaXRhaXplZFZhbGlkYXRvcihjb250cm9sOiBGb3JtQ29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICAvLyBjJ8OoIHVuIEZvcm1Db250cm9sIGNoZSDDqCB2dW90byBjaGUgZGEgcHJvYmxlbWkgKHByb2JhYmlsbWVudGUgdHlwZSBEYXRhLCBjYW1wbyBGb3JtYXRvKVxyXG4gICAgaWYgKGNvbnRyb2wudmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBVdGlsaXR5SGVscGVyU2VydmljZS5zdHJpbmdDaGVja1BhcmVudGVzaXMoXHJcbiAgICAgICAgICBjb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgY29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB7IFwiTGEgZm9ybXVsYSBub24gw6ggdmFsaWRhXCI6IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIGdldEFsbEZvcm1WYWxpZGF0aW9uRXJyb3JzKCkge1xyXG4gIC8vICAgT2JqZWN0LmtleXModGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgLy8gICAgIGNvbnN0IGNvbnRyb2xFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgPVxyXG4gIC8vICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KGtleSkuZXJyb3JzO1xyXG4gIC8vICAgICBpZiAoY29udHJvbEVycm9ycyAhPSBudWxsKSB7XHJcbiAgLy8gICAgICAgT2JqZWN0LmtleXMoY29udHJvbEVycm9ycykuZm9yRWFjaCgoa2V5RXJyb3IpID0+IHtcclxuICAvLyAgICAgICAgIGNvbnNvbGUubG9nKFxyXG4gIC8vICAgICAgICAgICBcIktleSBjb250cm9sOiBcIiArIGtleSArIFwiLCBrZXlFcnJvcjogXCIgKyBrZXlFcnJvciArIFwiLCBlcnIgdmFsdWU6IFwiLFxyXG4gIC8vICAgICAgICAgICBjb250cm9sRXJyb3JzW2tleUVycm9yXVxyXG4gIC8vICAgICAgICAgKTtcclxuICAvLyAgICAgICB9KTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hpYW1hdG8gZGFpIG1hdC1lcnJvciBwZXIgcHJlbmRlcmUgZ2xpIGVycm9yaSBnZW5lcmF0aSByZWxhdGl2aSBhbCBjYW1wby5cclxuICAgKiBAcGFyYW0gY29udHJvbCDDqCBpbCBub21lIGRlbCBHcm91cENvbnRyb2wgZGkgY3VpIGxlZ2dlcmUgc2UgY2kgc29ubyBlcnJvcmlcclxuICAgKi9cclxuICBnZXRGb3JtVmFsaWRhdGlvbkVycm9ycyhjb250cm9sOiBzdHJpbmcpIHtcclxuICAgIGlmIChjb250cm9sID09IFwiTGFiZWxcIikgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnZ2V0Rm9ybVZhbGlkYXRpb25FcnJvcnMnLCB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiTGFiZWxcIl0pO1xyXG5cclxuICAgIGNvbnN0IGNvbnRyb2xFcnJvcnM6IFZhbGlkYXRpb25FcnJvcnMgPVxyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xdLmVycm9ycztcclxuICAgIGxldCBlcnJvcnMgPSBbXTtcclxuICAgIGxldCB2YWx1ZXMgPSBbXTtcclxuICAgIGlmIChjb250cm9sRXJyb3JzICE9IG51bGwpIHtcclxuICAgICAgT2JqZWN0LmtleXMoY29udHJvbEVycm9ycykuZm9yRWFjaCgoa2V5RXJyb3IpID0+IHtcclxuICAgICAgICBlcnJvcnMucHVzaChrZXlFcnJvcik7XHJcbiAgICAgIH0pO1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdjb250cm9sOiAnLCBjb250cm9sKTtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnZXJyb3JzOiAnLCBlcnJvcnMpO1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCd2YWx1ZXM6ICcsIHZhbHVlcyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXJyb3JzLmpvaW4oXCIsIFwiKTtcclxuICB9XHJcblxyXG4gIHNldEFnZ3JlZ2F0aW9uKGVudW1UeXBlOiBhbnksIHJlc2V0OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtID0gZW51bVR5cGU7XHJcbiAgICBpZiAocmVzZXQpIHsgdGhpcy5maWVsZC5BZ2dyZWdhdGlvbnMgPSBbXTsgfVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7IHRoaXMuYWdncmVnYXRpb25GaWVsZExvYWRlZCA9IHRydWU7IH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gb25GaWVsZFR5cGVDaGFuZ2VcclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hpYW1hdG8gcXVhbmRvIGNhbWJpYSBpbCBGaWVsZFR5cGUgZGVsIEJhc2VGaWVsZCBjaGUgc2kgc3RhIGFnZ2l1bmdlbmRvL21vZGlmaWNhbmRvLlxyXG4gICAqIFJpY3JlYSBsJ29nZ2V0dG8gZmllbGQgcG9wb2xhbmRvIHNvbG8gbGUgcHJvcHJpZXTDoCBkZWwgQmFzZUZpZWxkIGluc2VyaXRlIGRhbGwndXRlbnRlXHJcbiAgICogKHF1ZWxsZSBjb211bmkgYSB0dXR0ZSBsZSB0aXBvbG9naWUgZGkgY2FtcG8pLCByaWNyZWEgbGEgZm9ybSBlLCBpbiBiYXNlIGFsIEZpZWxkVHlwZSBzY2VsdG8sXHJcbiAgICogYWdnaXVuZ2UgYWxsYSBmb3JtIGkgRm9ybUNvbnRyb2wgbmVjZXNzYXJpIGUgc2VsZXppb25hIGlsIHRlbXBsYXRlIGNvcnJldHRvIGRhIHVzYXJlLlxyXG4gICAqIEBwYXJhbSByZXN0b3JlRmllbGQgU2UgVFJVRSByaXByaXN0aW5hIGkgdmFsb3JpIGJhc2UgKGVyZWRpdGF0aSBkYWwgbW9kZWxsbyBCYXNlRmllbGQpIGRlbCBjYW1wbyBhZ2dpdW50by9tb2RpZmljYXRvXHJcbiAgICovXHJcbiAgb25GaWVsZFR5cGVDaGFuZ2UocmVzdG9yZUZpZWxkOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbkZpZWxkTG9hZGVkID0gZmFsc2U7XHJcblxyXG5cclxuICAgIGlmIChyZXN0b3JlRmllbGQpIHtcclxuICAgICAgdGhpcy5yZXN0b3JlQmFzZUZpZWxkUHJvcGVydGllcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3JlYXRlRmllbGRGb3JtKCk7XHJcbiAgICB0aGlzLm9uQ29sU3BhblNpemVTZWxlY3QoKTtcclxuICAgIGlmICgodGhpcy5maWVsZCBhcyBCYXNlRmllbGQpLkluTGlzdFZpZXcgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZpZWxkLkluTGlzdFZpZXcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCh0aGlzLmZpZWxkIGFzIEJhc2VGaWVsZCkuSW52aXNpYmlsaXR5ID09IG51bGwpIHtcclxuICAgICAgdGhpcy5maWVsZC5JbnZpc2liaWxpdHkgPSBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE87XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IG51bGw7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmZpZWxkLkZpZWxkVHlwZSkge1xyXG5cclxuICAgICAgLy8jcmVnaW9uIENBTVBPIERJIFRFU1RPXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkNhbXBvIGRpIHRlc3RvXCJdOlxyXG4gICAgICAgIHRoaXMuc2V0QWdncmVnYXRpb24oTm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIHJlc3RvcmVGaWVsZCk7XHJcblxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLlRleHRNYXNrICE9IG51bGwpIHtcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuVGV4dE1hc2sgPSBOdW1iZXIoKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5UZXh0TWFzaykgYXMgVGV4dE1hc2tFbnVtO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuTWljcm9waG9uZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLk1pY3JvcGhvbmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJUZXh0TWFza1wiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLlRleHRNYXNrKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNYXhMZW5naHRcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5NYXhMZW5naHQsIFtcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGwsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bMC05XSokXCIpLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWluTGVuZ2h0XCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuTWluTGVuZ2h0LCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeWzAtOV0qJFwiKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1pY3JvcGhvbmVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5NaWNyb3Bob25lKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJY29uTmFtZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLkljb25OYW1lKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJY29uUG9zaXRpb25cIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5JY29uUG9zaXRpb24pXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNob3dUZXh0RmllbGRJY29uID0gISEoKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5JY29uTmFtZSk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLnRleHRGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRUZXh0RmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBDQU1QTyBESSBURVNUT1xyXG5cclxuICAgICAgLy8jcmVnaW9uIExBQkVMXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVsnRXRpY2hldHRhJ106XHJcbiAgICAgICAgaWYgKCh0aGlzLmZpZWxkIGFzIExhYmVsRmllbGQpLkV0aWNoZXR0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLkV0aWNoZXR0YSA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkV0aWNoZXR0YVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBMYWJlbEZpZWxkKS5FdGljaGV0dGEpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMubGFiZWxGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRMYWJlbEZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gTEFCRUxcclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBCVVRUT05cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtWydCb3R0b25lJ106XHJcbiAgICAgICAgaWYgKCh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5CdXR0b25Db2RlID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuQnV0dG9uQ29kZSA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkNvZGljZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuQnV0dG9uQ29kZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLkJ1dHRvbkNvZGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5CdXR0b25Db2RlID0gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvbmFcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLkljb24pXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMuYnV0dG9uRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0QWN0aW9uQnV0dG9uRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBCVVRUT04gICAgICBcclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBBUkVBIERJIFRFU1RPXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkFyZWEgZGkgdGVzdG9cIl06XHJcbiAgICAgICAgdGhpcy5zZXRBZ2dyZWdhdGlvbihOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgcmVzdG9yZUZpZWxkKTtcclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLk1pY3JvcGhvbmUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5NaWNyb3Bob25lID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlJvd3NcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuUm93cywgW1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXlswLTldKiRcIiksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWF4TGVuZ2h0XCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLk1heExlbmdodCwgW1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXlswLTldKiRcIiksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWluTGVuZ2h0XCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLk1pbkxlbmdodCwgW1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXlswLTldKiRcIiksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWljcm9waG9uZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5NaWNyb3Bob25lKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvbk5hbWVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuSWNvbk5hbWUpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkljb25Qb3NpdGlvblwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5JY29uUG9zaXRpb24pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93VGV4dGFyZWFGaWVsZEljb24gPSAhISgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5JY29uTmFtZSk7XHJcbiAgICAgICAgdGhpcy5pbml0VGV4dGFyZWFGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMudGV4dGFyZWFGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIEFSRUEgREkgVEVTVE9cclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBCT09MRUFOT1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW0uQm9vbGVhbm86XHJcbiAgICAgICAgdGhpcy5zZXRBZ2dyZWdhdGlvbihOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgcmVzdG9yZUZpZWxkKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJc1RyaXN0YXRlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIEJvb2xlYW5GaWVsZCkuSXNUcmlzdGF0ZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlByZXNldGF0aW9uVHlwZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgQm9vbGVhbkZpZWxkKS5QcmVzZXRhdGlvblR5cGUsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5ib29sZWFkRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0Qm9vbGVhbkZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gQk9PTEVBTk9cclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBEQVRBIEUvSSBPUkFcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRGF0YSBlL28gb3JhXCJdOlxyXG4gICAgICAgIHRoaXMuc2V0QWdncmVnYXRpb24oTm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIHJlc3RvcmVGaWVsZCk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkLklzT25seURhdGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5Jc09ubHlEYXRlID0gRGF0ZVRpbWVUeXBlRW51bVtcIlNvbG8gZGF0YVwiXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSXNPbmx5RGF0ZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLklzT25seURhdGUsIFtcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGwsXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWluRGF0ZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkKS5NaW5EYXRlLFxyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWF4RGF0ZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkKS5NYXhEYXRlLFxyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiRGF0ZUZvcm1hdFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLkRhdGVGb3JtYXQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkljb25zUG9zaXRpb25cIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkKS5JY29uc1Bvc2l0aW9uKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJDbG9zZUljb25Qb3NpdGlvblwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLkNsb3NlSWNvblBvc2l0aW9uKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJVc2VUb29sdGlwXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuVXNlVG9vbHRpcCA/PyBmYWxzZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5kYXRlRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0RGF0ZUZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gREFUQSBFL0kgT1JBXHJcblxyXG4gICAgICAvLyNyZWdpb24gQ0FNUE8gTlVNRVJJQ09cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQ2FtcG8gbnVtZXJpY29cIl06XHJcbiAgICAgICAgdGhpcy5zZXRBZ2dyZWdhdGlvbihOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgcmVzdG9yZUZpZWxkKTtcclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuSXNJbnRlZ2VyID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuSXNJbnRlZ2VyID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSXNJbnRlZ2VyXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuSXNJbnRlZ2VyKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWluVmFsdWVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5NaW5WYWx1ZSwgW1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXi0/WzAtOV0rKCxbMC05XSt8XFwuWzAtOV0rKT8kXCIpLCAvLyhcIl5bMC05XSokXCIpLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1heFZhbHVlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuTWF4VmFsdWUsIFtcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGwsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl4tP1swLTldKygsWzAtOV0rfFxcLlswLTldKyk/JFwiKSwgLy8oXCJeWzAtOV0qJFwiKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJEZWNpbWFsU2VwYXJhdG9yXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLkRlY2ltYWxTZXBhcmF0b3IsXHJcbiAgICAgICAgICAgIFt0aGlzLnF1ZXN0aW9uUG9sbCwgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXlthLXpBLVogLS8nLC5fL1xcXFxePD5dK1wiKV1cclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkRlY2ltYWxQcmVjaXNpb25cIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuRGVjaW1hbFByZWNpc2lvbixcclxuICAgICAgICAgICAgW3RoaXMucXVlc3Rpb25Qb2xsLCBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeWzAtOV0rJFwiKV1cclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlRob3VzYW5kc1NlcGFyYXRvclwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5UaG91c2FuZHNTZXBhcmF0b3IsXHJcbiAgICAgICAgICAgIFt0aGlzLnF1ZXN0aW9uUG9sbCwgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXlthLXpBLVogLS8nLC5fL1xcXFxePD5dK1wiKV1cclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkN1cnJlbmN5U3ltYm9sXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLkN1cnJlbmN5U3ltYm9sLFxyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWVhc3VyZVVuaXRcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuTWVhc3VyZVVuaXQsXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkljb25OYW1lXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuSWNvbk5hbWUpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkljb25Qb3NpdGlvblwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLkljb25Qb3NpdGlvbilcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2hvd051bWVyaWNGaWVsZEljb24gPSAhISgodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLkljb25OYW1lKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMubnVtZXJpY0ZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdE51bWVyaWNGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIENBTVBPIE5VTUVSSUNPXHJcblxyXG4gICAgICAvLyNyZWdpb24gQUxMRUdBVE9cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkFsbGVnYXRvOlxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiQWxsb3dlZE1pbWVUeXBlc1wiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgQXR0YWNobWVudEZpZWxkKS5BbGxvd2VkTWltZVR5cGVzXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcImlzTXVsdGlBdHRhY2hcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgQXR0YWNobWVudEZpZWxkKS5pc011bHRpQXR0YWNoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmF0dGFjaG1lbnRGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRBdHRhY2htZW50RmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBBTExFR0FUT1xyXG5cclxuICAgICAgLy8jcmVnaW9uIElNTUFHSU5FXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5JbW1hZ2luZTpcclxuICAgICAgICBpZiAodHlwZW9mICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkR5bkF0dGFjaG1lbnQgPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRHluQXR0YWNobWVudCA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodHlwZW9mICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkVuYWJsZURyYXdpbmcgPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRW5hYmxlRHJhd2luZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJSZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeCxcclxuICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDQzMjApXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4ID0gKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4ICE9IG51bGwgPyAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHggOiAxMjg7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiRW5hYmxlRHJhd2luZ1wiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5FbmFibGVEcmF3aW5nKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5pbWFnZUZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdEltYWdlRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAvKlxyXG4gICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uID0gbmV3IEF0dGFjaG1lbnRGaWVsZCgpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgXCJFbmFibGVEcmF3aW5nXCIsXHJcbiAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5FbmFibGVEcmF3aW5nKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgXCJJbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnRcIixcclxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuSW1hZ2VJc0NvbnRleHR1YWxBdHRhY2htZW50XHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICAvLyBJbXBvc3RvIGkgRm9ybUNvbnRyb2wgdmFyaWFiaWxpLlxyXG4gICAgICB0aGlzLm9uSW1hZ2VJc0NvbnRleHR1YWxBdHRhY2htZW50Q2hhbmdlKCk7XHJcbiAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5pbWFnZUZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICBicmVhaztcclxuICAgICAgKi9cclxuICAgICAgLy8jZW5kcmVnaW9uIElNTUFHSU5FXHJcblxyXG4gICAgICAvLyNyZWdpb24gRUxFTkNPIEdFTkVSSUNPXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkVsZW5jbyBnZW5lcmljb1wiXTpcclxuICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0aW9uKE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCByZXN0b3JlRmllbGQpO1xyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkluTGlzdFZpZXcgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5Jbkxpc3RWaWV3ID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5JbnZpc2liaWxpdHkgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5JbnZpc2liaWxpdHkgPSBGaWVsZEludmlzaWJpbGl0eUVudW0uTkFTQ09TVE87XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIklzTXVsdGlDaG9pY2hlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5Jc011bHRpQ2hvaWNoZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlByZXNlbnRhdGlvbk1vZGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5QcmVzZW50YXRpb25Nb2RlLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMubGlzdFZhbHVlRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0TGlzdFZhbHVlRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBFTEVOQ08gR0VORVJJQ09cclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBFTEVOQ08gSU1NQUdJTklcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGltbWFnaW5pXCJdOlxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIklzTXVsdGlDaG9pY2hlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuSXNNdWx0aUNob2ljaGUpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJSZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4LFxyXG4gICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgoNDMyMCldXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMuaW1hZ2VGaWVsZFNlbGVjdG9yRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdEltYWdlU2VsZWN0b3JGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIEVMRU5DTyBJTU1BR0lOSVxyXG5cclxuICAgICAgLy8jcmVnaW9uIElNTUFHSU5FIENPTiBNQVJLRVJcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiSW1tYWdpbmUgY29uIG1hcmtlcnNcIl06XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiUmVzaXplZEltYWdlc0hlaWdodFB4XCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZVdpdGhNYXJrZXJzRmllbGQpLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeCxcclxuICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDQzMjApXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmltYWdlV2l0aE1hcmtlcnNGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRJbWFnZVdpdGhNYXJrZXJzRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBJTU1BR0lORSBDT04gTUFSS0VSICAgICAgICBcclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBMT09LVVBcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkxvb2t1cDpcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJFbnRpdHlTb3VyY2VOYW1lXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBMb29rdXBGaWVsZCkuRW50aXR5U291cmNlTmFtZSxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiVXNlQXNHZXRPckRpc2NhcmRcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTG9va3VwRmllbGQpLlVzZUFzR2V0T3JEaXNjYXJkKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmxvb2t1cEZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gTE9PS1VQXHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIFtcclxuICAgICAgICBGaWVsZFR5cGVFbnVtLkFsbGVnYXRvLFxyXG4gICAgICAgIEZpZWxkVHlwZUVudW0uSW1tYWdpbmUsXHJcbiAgICAgICAgRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdLFxyXG4gICAgICBdLmluY2x1ZGVzKHRoaXMuZmllbGQuRmllbGRUeXBlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuRm9ybXVsYSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJGb3JtdWxhXCJdLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkluTGlzdFZpZXdcIl0uZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiSW52aXNpYmlsaXR5XCJdLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJGb3JtdWxhXCJdLmVuYWJsZSgpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiSW5MaXN0Vmlld1wiXS5lbmFibGUoKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkludmlzaWJpbGl0eVwiXS5lbmFibGUoKTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgW1xyXG4gICAgICAgIEZpZWxkVHlwZUVudW0uQWxsZWdhdG8sXHJcbiAgICAgICAgRmllbGRUeXBlRW51bS5JbW1hZ2luZSxcclxuICAgICAgICBGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl0sXHJcbiAgICAgICAgRmllbGRUeXBlRW51bVtcIkRhdGEgZS9vIG9yYVwiXSxcclxuICAgICAgXS5pbmNsdWRlcyh0aGlzLmZpZWxkLkZpZWxkVHlwZSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiTGFiZWxzdHlsZUNTU1wiXS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJGaWVsZHN0eWxlQ1NTXCJdLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJMYWJlbHN0eWxlQ1NTXCJdLmVuYWJsZSgpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiRmllbGRzdHlsZUNTU1wiXS5lbmFibGUoKTtcclxuICAgIH1cclxuICAgIGlmIChbRmllbGRUeXBlRW51bS5Cb29sZWFub10uaW5jbHVkZXModGhpcy5maWVsZC5GaWVsZFR5cGUpKSB7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJMYWJlbHN0eWxlQ1NTXCJdLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJMYWJlbHN0eWxlQ1NTXCJdLmVuYWJsZSgpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBvbkZpZWxkVHlwZUNoYW5nZVxyXG5cclxuICAvLyNyZWdpb24gb25EYXRhR2V0dGVyVHlwZUNoYW5nZVxyXG4gIGFzeW5jIG9uRGF0YUdldHRlclR5cGVDaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IERhdGFHZXR0ZXJUeXBlRW51bVsnRGEgbW9kdWxvIGRpbmFtaWNvJ10gJiYgdGhpcy5mb3Jtcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICB0aGlzLmdldEFsbE1vZHVsZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlICE9IERhdGFHZXR0ZXJUeXBlRW51bS5Gb3JtdWxhKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuRm9ybXVsYSA9IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSA9IG51bGw7XHJcbiAgICB0aGlzLkRNTW9kdWxlID0gbnVsbDtcclxuICAgIHRoaXMuRE1GaWVsZCA9IG51bGw7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBvbkRhdGFHZXR0ZXJUeXBlQ2hhbmdlXHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbCBjYW1iaW8gZGVsIHZhbG9yZSBkZWxsYSBwcm9wcmlldMOgIEltYWdlSXNDb250ZXh0dWFsQXR0YWNobWVudCBuZWwgY2Fzb1xyXG4gICAqIGRpIGNhbXBpIGRpIHRpcG8gSW1tYWdpbmUuIFNlIFRSVUUgYWxsb3JhIHJpbXVvdmUgaSBGb3JtQ29udHJvbCBwZXIgbGUgcHJvcHJpZXTDoCBJc011bHRpQXR0YWNoXHJcbiAgICogZSBBbGxvd2VkTWltZVR5cGVzIGUgYWdnaXVuZ2UgaSBGb3JtQ29udHJvbCBwZXIgbGUgcHJvcHJpZXTDoCBJbWdOYW1lIGUgQ29udGV4dHVhbEF0dGFjaG1lbnQsXHJcbiAgICogYWx0cmltZW50aSBpbCBjb250cmFyaW8uXHJcbiAgICovXHJcbiAgb25JbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnRDaGFuZ2UoKSB7XHJcblxyXG4gICAgLypcclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkltZ05hbWUgPSBudWxsO1xyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQXR0YWNoRGVmaW5pdGlvbi5BbGxvd2VkTWltZVR5cGVzID0gW107XHJcbiAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uLklzTXVsdGlBdHRhY2ggPSBmYWxzZTtcclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkNvbnRleHR1YWxBdHRhY2htZW50ID0gbnVsbDtcclxuXHJcbiAgICBpZiAoKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuSW1hZ2VJc0NvbnRleHR1YWxBdHRhY2htZW50KSB7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAucmVtb3ZlQ29udHJvbChcIklzTXVsdGlBdHRhY2hcIik7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAucmVtb3ZlQ29udHJvbChcIkFsbG93ZWRNaW1lVHlwZXNcIik7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBcIkltZ05hbWVcIixcclxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuSW1nTmFtZSxcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICApXHJcbiAgICAgICk7ICAgICAgXHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBcIkNvbnRleHR1YWxBdHRhY2htZW50XCIsXHJcbiAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkNvbnRleHR1YWxBdHRhY2htZW50LFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAucmVtb3ZlQ29udHJvbChcIkltZ05hbWVcIik7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAucmVtb3ZlQ29udHJvbChcIkNvbnRleHR1YWxBdHRhY2htZW50XCIpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgXCJJc011bHRpQXR0YWNoXCIsXHJcbiAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24uSXNNdWx0aUF0dGFjaFxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgIFwiQWxsb3dlZE1pbWVUeXBlc1wiLFxyXG4gICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uLkFsbG93ZWRNaW1lVHlwZXNcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICAqL1xyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgaW50ZXJjZXR0YXJlIGwnYWdnaXVudGEgZGkgdW4gYWxsZWdhdG8gbmVpIGNhbXBpIGRpIHRpcG8gSW1tYWdpbmUgcGVyIGFnZ2lvcm5hcmVcclxuICAgKiBpbCB2YWxvcmUgZGVsbGEgcHJvcHJpZXTDoCBDb250ZXh0dWFsQXR0YWNobWVudCBlIGxhIHZhbGlkYXppb25lIGRlbCByZWxhdGl2byBGb3JtQ29udHJvbC5cclxuICAgKiBAcGFyYW0gZXZlbnQgQXJyYXkgY29udGVuZW50ZSBsJ2VsZW5jbyBhZ2dpb3JuYXRvIGRlZ2xpIGFsbGVnYXRpIGNhcmljYXRpIChuZWwgbm9zdHJvIGNhc28gbmUgY29udGllbmUgYWwgcGnDuSAxKS5cclxuICAgKi9cclxuICBjYXRjaENvbnRleHR1YWxBdHRhY2htZW50Q2hhbmdlKGV2ZW50OiBBcnJheTxJQXR0YWNobWVudERUTz4pIHtcclxuICAgIC8qXHJcbiAgICBpZiAoZXZlbnQgJiYgZXZlbnQubGVuZ3RoID4gMCkge1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5Db250ZXh0dWFsQXR0YWNobWVudCA9IGV2ZW50WzBdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQ29udGV4dHVhbEF0dGFjaG1lbnQgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkNvbnRleHR1YWxBdHRhY2htZW50XCJdLnNldFZhbHVlKFxyXG4gICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5Db250ZXh0dWFsQXR0YWNobWVudFxyXG4gICAgKTtcclxuICAgICovXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWxsYSBzZWxlemlvbmUgZGkgdW5hIGNsYXNzZSBuZWxsYSBzZWxlY3QgcGVyIGxlIGNvbG9ubmUgZGkgYm9vdHN0cmFwXHJcbiAgICogZGEgdXNhcmUgbmVsbGEgdmlzdWFsaXp6YXppb25lIGRlbCBjYW1wby4gUXVlc3RhIGZ1bnppb25lIG1hbmlwb2xhIGxhIHNvcmdlbnRlIGRhdGkgcGVyXHJcbiAgICogbGEgZXFwLXNlbGVjdCBpbiBtb2RvIGRhIGVzY2x1ZGVyZSBpIHZhbG9yaSBkZWxsJ2VudW1lcmF0b3JlIGNoZSBmYW5ubyByaWZlcmltZW50byBhZFxyXG4gICAqIHVuYSBsYXJnaGV6emEgZGkgc2NoZXJtbyBnacOgIHNlbGV6aW9uYXRhLiBFc2VtcGlvOiBwZXIgZ2xpIHNjaGVybWkgcGljY29saSAoc20pIGwndXRlbnRlXHJcbiAgICogc2VsZXppb25hIGxhIGNsYXNzZSBcImNvbC1zbS02XCIsIGFsIGNoYW5nZSBkZWwgdmFsb3JlIHF1ZXN0byBtZXRvZG8gcmltdW92ZSBkYWxsYSBzZWxlY3RcclxuICAgKiB0dXR0aSBnbGkgYWx0cmkgdmFsb3JpIHBlciBsYSBncmFuZGV6emEgZGkgc2NoZXJtbyBzZWxlemlvbmF0YS5cclxuICAgKi9cclxuICBvbkNvbFNwYW5TaXplU2VsZWN0KCkge1xyXG4gICAgLy8gUmVjdXBlcm8gbCdhcnJheSBkZWdsaSBvZ2dldHRpIGNoaWF2ZS12YWxvcmUgY2hlIHJhcHByZXNldGEgbCdlbnVtZXJhdG9yZVxyXG4gICAgbGV0IGNvbFNpemVDbGFzc0VudW1BcnJheSA9IHRoaXMuZW51bUhlbHBlci5nZXRFbnVtQXJyYXkoXHJcbiAgICAgIENvbFNwYW5TaXplc0VudW0sXHJcbiAgICAgIGZhbHNlLFxyXG4gICAgICBudWxsXHJcbiAgICApO1xyXG4gICAgLy8gQ29zdHJ1aXNjbyBsJ2FycmF5IGRlbGxlIGNsYXNzaSBzZWxlemlvbmF0ZSBkYWxsJ3V0ZW50ZSBpbiBmb3JtYXRvIHN0cmluZ2FcclxuICAgIGxldCBzZWxlY3RlZERpbWVuc2lvbnNDb21waWxhemlvbmU6IEFycmF5PHN0cmluZz4gPSB0aGlzLmZpZWxkLkNvbFNwYW5TaXplc1xyXG4gICAgICA/IHRoaXMuZmllbGQuQ29sU3BhblNpemVzLm1hcCgoY29sKSA9PiBDb2xTcGFuU2l6ZXNFbnVtW2NvbF0pXHJcbiAgICAgIDogW107XHJcbiAgICBsZXQgc2VsZWN0ZWREaW1lbnNpb25zUmlzcG9zdGE6IEFycmF5PHN0cmluZz4gPSB0aGlzLmZpZWxkLkFuc3dlclN0eWxlLkNvbFNwYW5TaXplc1xyXG4gICAgICA/IHRoaXMuZmllbGQuQW5zd2VyU3R5bGUuQ29sU3BhblNpemVzLm1hcCgoY29sKSA9PiBDb2xTcGFuU2l6ZXNFbnVtW2NvbF0pXHJcbiAgICAgIDogW107XHJcbiAgICAvLyBGaWx0cm8gaSB2YWxvcmkgb3R0ZW51dGkgZGFsbCdlbnVtZXJhdG9yZSBwZXIgZXNjbHVkZXJlIHR1dHRpIGkgdmFsb3JpIHBlciBsZVxyXG4gICAgLy8gZ3JhbmRlenplIGRpIHNjaGVybW8gZ2nDoCBzZWxlemlvbmF0ZWFkIGVzY2x1c2lvbmUgZGVpIHZhbG9yaSBzZWxlemlvbmF0aS5cclxuICAgIHRoaXMuYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lID0gY29sU2l6ZUNsYXNzRW51bUFycmF5LmZpbHRlcihcclxuICAgICAgKHZhbHVlOiB7IGtleTogbnVtYmVyOyB2YWx1ZTogc3RyaW5nIH0pID0+XHJcbiAgICAgICAgIXNlbGVjdGVkRGltZW5zaW9uc0NvbXBpbGF6aW9uZS5maW5kKFxyXG4gICAgICAgICAgKGNvbCkgPT5cclxuICAgICAgICAgICAgdmFsdWUudmFsdWUuaW5jbHVkZXMoY29sLnN1YnN0cmluZyg0LCA2KSkgJiYgdmFsdWUudmFsdWUgIT0gY29sXHJcbiAgICAgICAgKVxyXG4gICAgKTtcclxuICAgIHRoaXMuYXZhaWxhYmxlQ29sU3BhblNpemVzUmlzcG9zdGEgPSBjb2xTaXplQ2xhc3NFbnVtQXJyYXkuZmlsdGVyKFxyXG4gICAgICAodmFsdWU6IHsga2V5OiBudW1iZXI7IHZhbHVlOiBzdHJpbmcgfSkgPT5cclxuICAgICAgICAhc2VsZWN0ZWREaW1lbnNpb25zUmlzcG9zdGEuZmluZChcclxuICAgICAgICAgIChjb2wpID0+XHJcbiAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKGNvbC5zdWJzdHJpbmcoNCwgNikpICYmIHZhbHVlLnZhbHVlICE9IGNvbFxyXG4gICAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWwgY2FtYmlvIGRlbCB0aXBvIGRpIHZpc3VhbGl6emF6aW9uZSBzY2VsdGEgcGVyIGkgY2FtcGkgZGkgdGlwbyBlbGVuY28gZ2VuZXJpY28uXHJcbiAgICogU2UgdmllbmUgc2NlbHRhIGxhIHZpc3VhbGl6emF6aW9uZSBhZCBpbW1hZ2luaSBzdnVvdGEgbGEgbGlzdGEgZGVsbGUgY29wcGllIGNoaWF2ZS12YWxvcmUgaW5zZXJpdGVcclxuICAgKiBpbiBwcmVjZWRlbnphLCBhbHRyaW1lbnRpIHN2dW90YSBsYSBsaXN0YSBkZWxsZSBpbW1hZ2luaSBjYXJpY2F0ZS5cclxuICAgKi9cclxuICBvblByZXNlbnRhdGlvbk1vZGVDaGFuZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZC5QcmVzZW50YXRpb25Nb2RlID09IExpc3RQcmVzZW50YXRpb25FbnVtWydSYWRpbyBidXR0b24nXSkge1xyXG4gICAgICB0aGlzLmZpZWxkLklzTXVsdGlDaG9pY2hlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIHNhbHZhdGFnZ2lvIGRlZ2xpIGFsbGVnYXRpIHF1YW5kbyB2aWVuZSBjb25maWd1cmF0byB1biBjYW1wbyBkaSB0aXBvIFwiRWxlbmNvIGdlbmVyaWNvXCJcclxuICAgKiBjb24gaWwgdGlwbyBkaSB2aXN1YWxpenphemlvbmUgYWQgaW1tYWdpbmkuIEludGVyY2V0dGEgbCdlbGVuY28gYWdnaW9ybmF0byBkZWxsZSBpbW1hZ2luaSBjYXJpY2F0ZSBlIGxvXHJcbiAgICogbWVtb3JpenphIG5lbGwnb2dnZXR0byBmaWVsZCBjb3JyZW50ZS5cclxuICAgKiBAcGFyYW0gYXR0YWNobWVudHMgQXJyYXkgYWdnaW9ybmF0byBkZWdsaSBhbGxlZ2F0aSBjYXJpY2F0aS5cclxuICAgKi9cclxuICBjYXRjaEJ1dHRvbkltYWdlc0NoYW5nZShhdHRhY2htZW50czogQXJyYXk8SUF0dGFjaG1lbnREVE8+KSB7XHJcblxyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdCA9IGF0dGFjaG1lbnRzIGFzIEFycmF5PER5bkF0dGFjaG1lbnQ+O1xyXG5cclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QuZm9yRWFjaCgoYXR0YWNobWVudDogRHluQXR0YWNobWVudCkgPT4ge1xyXG4gICAgICBpZiAodHlwZW9mIGF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeCA9PSBcInVuZGVmaW5lZFwiKSB7XHJcblxyXG4gICAgICAgIHZhciBteUJhc2U2NCA9IFwiZGF0YTppbWFnZS9cIiArIGF0dGFjaG1lbnQuRmlsZUV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpICsgXCI7YmFzZTY0LFwiICsgYXR0YWNobWVudC5GaWxlRGF0YUJhc2U2NDtcclxuICAgICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7XHJcblxyXG4gICAgICAgIGltZy5zcmMgPSBteUJhc2U2NDtcclxuICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICBhdHRhY2htZW50LkltYWdlV2lkdGhQeCA9IGltZy53aWR0aDtcclxuICAgICAgICAgIGF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeCA9IGltZy5oZWlnaHQ7XHJcbiAgICAgICAgICBhdHRhY2htZW50LkF0dGFjaG1lbnRGaWVsZFR5cGUgPSBBdHRhY2htZW50RmllbGRUeXBlRW51bS5FTEVOQ09fSU1NQUdJTkk7XHJcbiAgICAgICAgICBpZiAoc2VsZi5pbWFnZVNlbGVjdG9yQXR0YWNobWVudHMpIHsgc2VsZi5pbWFnZVNlbGVjdG9yQXR0YWNobWVudHMucmVsb2FkRGF0YSgpOyB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBjYXRjaEJ1dHRvbkltYWdlQ2hhbmdlKGF0dGFjaG1lbnRzOiBBcnJheTxJQXR0YWNobWVudERUTz4pIHtcclxuXHJcbiAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5EeW5BdHRhY2htZW50ID0gYXR0YWNobWVudHNbMV0gYXMgRHluQXR0YWNobWVudDtcclxuXHJcbiAgICBpZiAodGhpcy5maWVsZC5EeW5BdHRhY2htZW50ICE9IG51bGwgJiYgdHlwZW9mIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZUhlaWdodFB4ID09IFwidW5kZWZpbmVkXCIpIHtcclxuXHJcbiAgICAgIHZhciBteUJhc2U2NCA9IFwiZGF0YTppbWFnZS9cIiArIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5GaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkgKyBcIjtiYXNlNjQsXCIgKyB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZURhdGFCYXNlNjQ7XHJcbiAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuXHJcbiAgICAgIGltZy5zcmMgPSBteUJhc2U2NDtcclxuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBzZWxmLmZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VXaWR0aFB4ID0gaW1nLndpZHRoO1xyXG4gICAgICAgIHNlbGYuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZUhlaWdodFB4ID0gaW1nLmhlaWdodDtcclxuICAgICAgICBzZWxmLmZpZWxkLkR5bkF0dGFjaG1lbnQuQXR0YWNobWVudEZpZWxkVHlwZSA9IEF0dGFjaG1lbnRGaWVsZFR5cGVFbnVtLklNTUFHSU5FO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgY2F0Y2hCdXR0b25JbWFnZVdpdGhNYXJrZXJzQ2hhbmdlKGF0dGFjaG1lbnRzOiBBcnJheTxJQXR0YWNobWVudERUTz4pIHtcclxuXHJcbiAgICAodGhpcy5maWVsZCBhcyBJbWFnZVdpdGhNYXJrZXJzRmllbGQpLkR5bkF0dGFjaG1lbnQgPSBhdHRhY2htZW50c1sxXSBhcyBEeW5BdHRhY2htZW50O1xyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQgIT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlSGVpZ2h0UHggPT0gXCJ1bmRlZmluZWRcIikge1xyXG5cclxuICAgICAgdmFyIG15QmFzZTY0ID0gXCJkYXRhOmltYWdlL1wiICsgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKSArIFwiO2Jhc2U2NCxcIiArIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5GaWxlRGF0YUJhc2U2NDtcclxuICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xyXG5cclxuICAgICAgaW1nLnNyYyA9IG15QmFzZTY0O1xyXG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHNlbGYuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZVdpZHRoUHggPSBpbWcud2lkdGg7XHJcbiAgICAgICAgc2VsZi5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlSGVpZ2h0UHggPSBpbWcuaGVpZ2h0O1xyXG4gICAgICAgIHNlbGYuZmllbGQuRHluQXR0YWNobWVudC5BdHRhY2htZW50RmllbGRUeXBlID0gQXR0YWNobWVudEZpZWxkVHlwZUVudW0uSU1NQUdJTkVfQ09OX01BUktFUlM7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hpYW1hdG8gYWwga2V5dXAgZGVnbGkgaW5wdXQgdGVzdHVhbGkgY2hlIHByZXZlZG9ubyBsJ2FnZ2l1bnRhIGRlbCB2YWxvcmUgaW5zZXJpdG8gaW4gdW4gYXJyYXkuXHJcbiAgICogU2UgbCd1dGVudGUgcHJlbWUgaWwgdGFzdG8gaW52aW8sIGluIGJhc2UgYWwgdGlwbyBkaSBjYW1wbyBjaGUgc3RhIGluc2VyZW5kby9tb2RpZmljYW5kbywgcXVlc3RvIG1ldG9kb1xyXG4gICAqIGFnZ2l1bmdlIGlsIHZhbG9yZSBpbnNlcml0byBkYWxsJ3V0ZW50ZSBuZWxsYSBsaXN0YSBkaSBzdHJpbmdoZSBjb3JyZXR0YSAoaW4gaW5wdXQgdmllbmUgcGFzc2F0byBpbCBub21lXHJcbiAgICogZGVsbGEgcHJvcHJpZXTDoCBpbiBjdWkgaW5zZXJpcmUgbGEgc3RyaW5nYSkuXHJcbiAgICogQHBhcmFtIGV2ZW50IEV2ZW50byBjaGUgcmFwcHJlc2VudGEgaWwga2V5dXAgZGVsbCd1dGVudGVcclxuICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIE5vbWUgZGVsbGEgcHJvcHJpZXTDoCBkZWwgZmllbGQgaW4gY3VpIGluc2VyaXJlIGxhIHN0cmluZ2EgZGlnaXRhdGEuXHJcbiAgICovXHJcbiAgb25NdWx0aVNlbGVjdElucHV0S2V5dXAoZXZlbnQsIHByb3BlcnR5TmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gXCJFbnRlclwiIHx8IGV2ZW50LmNvZGUgPT09IFwiTnVtcGFkRW50ZXJcIikge1xyXG4gICAgICBzd2l0Y2ggKHRoaXMuZmllbGQuRmllbGRUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkxvb2t1cDpcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW0uQWxsZWdhdG86XHJcbiAgICAgICAgICBpZiAoIXRoaXMuZmllbGRbcHJvcGVydHlOYW1lXSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpZWxkW3Byb3BlcnR5TmFtZV0gPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5maWVsZFtwcm9wZXJ0eU5hbWVdLnB1c2goZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJJbW1hZ2luZSBjb24gbWFya2Vyc1wiXTpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5JbW1hZ2luZTpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkVsZW5jbyBnZW5lcmljb1wiXTpcclxuICAgICAgICAgIGlmICghdGhpcy5rZXlWYWx1ZU9iamVjdC5rZXkgfHwgIXRoaXMua2V5VmFsdWVPYmplY3QudmFsdWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCEodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycykge1xyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycyA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnNbdGhpcy5rZXlWYWx1ZU9iamVjdC5rZXldID1cclxuICAgICAgICAgICAgdGhpcy5rZXlWYWx1ZU9iamVjdC52YWx1ZTtcclxuICAgICAgICAgIHRoaXMua2V5VmFsdWVPYmplY3QgPSB7IGtleTogXCJcIiwgdmFsdWU6IFwiXCIgfTtcclxuICAgICAgICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGlhbWF0byBwZXIgbW9zdHJhcmUgY29tZSBlbGVuY28gbGUgb3B6aW9uaSBhZ2dpdW50ZSBpbiB1biBjYW1wbyBkaSB0aXBvIFwiRWxlbmNvIGdlbmVyaWNvXCIuXHJcbiAgICogQHJldHVybnMgUmVzdGl0dWlzY2UgdW4gYXJyYXkgZGkgb2dnZXR0aSBkZWwgdGlwbyB7IGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIH0gY29uIGkgdmFsb3JpIGluc2VyaXRpIGRhbGwndXRlbnRlLlxyXG4gICAqL1xyXG4gIGdldERpY3Rpb25hcnlLZXlWYWx1ZSgpIHtcclxuICAgIGlmICgodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycykge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMpLm1hcCgoaykgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBrZXk6IGssXHJcbiAgICAgICAgICB2YWx1ZTogKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnNba10sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gW107XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpbXVvdmVyZSB1bmEgb3B6aW9uZSBhZ2dpdW50YSBhbCBjYW1wbyBkaSB0aXBvIFwiRWxlbmNvIGdlbmVyaWNvXCJcclxuICAgKiBAcGFyYW0ga2V5IE5vbWUgZGVsbGEgY2hpYXZlIGRhIHJpbXVvdmVyZVxyXG4gICAqL1xyXG4gIGRlbGV0ZUtleUZyb21EaWN0aW9uYXJ5KGtleTogc3RyaW5nKSB7XHJcbiAgICBkZWxldGUgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnNba2V5XTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gb3BlbkZvcm11bGFEaWFsb2dcclxuICBvcGVuRm9ybXVsYURpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGb3JtdWxhLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmF2YWlsYWJsZUZpZWxkcyxcclxuICAgICAgICBmb3JtdWxhOiB0aGlzLmZpZWxkLkZvcm11bGEsXHJcbiAgICAgICAgZm9ybXVsYU9iamVjdDogdGhpcy5mb3JtdWxhT2JqZWN0XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nRm9ybXVsYVJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuZmllbGQuRm9ybXVsYSA9IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCkgPT0gXCJcIiA/IG51bGwgOiByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBvcGVuRm9ybXVsYURpYWxvZ1xyXG5cclxuXHJcbiAgLy8jcmVnaW9uIGF2YW50aSBpbmRpZXRyb1xyXG4gIC8vIGF2YW50aUluZGlldHJvKHdoZXJlOiBzdHJpbmcpIHtcclxuICAvLyAgIHRoaXMuZGlhbG9nQXZhbnRpSW5kaWV0cm9SZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nQXZhbnRpSW5kaWV0cm8sIHtcclxuICAvLyAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAvLyAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgLy8gICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gIC8vICAgICBkYXRhOiB7XHJcbiAgLy8gICAgICAgd2hlcmU6IHdoZXJlXHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICB9KTtcclxuICAvLyAgIHRoaXMuZGlhbG9nQXZhbnRpSW5kaWV0cm9SZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gIC8vICAgICBjb25zb2xlLmxvZyhyZXN1bHQpXHJcbiAgLy8gICAgIGlmIChyZXN1bHQ/LmFjdGlvbiA9PT0gJ3NhdmUnKSB7XHJcbiAgLy8gICAgICAgLy8gY29uc29sZS5sb2coYEhhaSBzY2VsdG8gc2FsdmEgKCR7cmVzdWx0LndoZXJlfSlgKTtcclxuICAvLyAgICAgICBpZih3aGVyZSA9PSBcImF2YW50aVwiKXtcclxuICAvLyAgICAgICAgIHRoaXMuc2F2ZUFuZEV4aXRBZGRGaWVsZCh0cnVlLCAxKTtcclxuICAvLyAgICAgICB9IGVsc2UgaWYgKHdoZXJlID09IFwiaW5kaWV0cm9cIil7XHJcbiAgLy8gICAgICAgICB0aGlzLnNhdmVBbmRFeGl0QWRkRmllbGQodHJ1ZSwgLTEpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBpZiAocmVzdWx0Py5hY3Rpb24gPT09ICdub3NhdmUnKSB7XHJcbiAgLy8gICAgICAgLy8gY29uc29sZS5sb2coYEhhaSBzY2VsdG8gdmlhIHNlbnphIHNhbHZhcmUgKCR7cmVzdWx0LndoZXJlfSlgKTtcclxuICAvLyAgICAgICBpZih3aGVyZSA9PSBcImF2YW50aVwiKXtcclxuICAvLyAgICAgICAgIHRoaXMuc2F2ZUFuZEV4aXRBZGRGaWVsZChmYWxzZSwgMSk7XHJcbiAgLy8gICAgICAgfSBlbHNlIGlmICh3aGVyZSA9PSBcImluZGlldHJvXCIpe1xyXG4gIC8vICAgICAgICAgdGhpcy5zYXZlQW5kRXhpdEFkZEZpZWxkKGZhbHNlLCAtMSk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vIENsb3NlU2F2ZSgpIHtcclxuICAvLyAgIHRoaXMuZGlhbG9nQXZhbnRpSW5kaWV0cm9SZWYuY2xvc2UoeyBhY3Rpb246ICdzYXZlJyB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8vIENsb3NlKCkge1xyXG4gIC8vICAgdGhpcy5kaWFsb2dBdmFudGlJbmRpZXRyb1JlZi5jbG9zZSh7IGFjdGlvbjogJ25vc2F2ZSd9KTtcclxuICAvLyB9XHJcbiAgLy8jZW5kcmVnaW9uIGFuYW50aVxyXG5cclxuICAvLyNyZWdpb24gb3BlblZpc2libGVJZkRpYWxvZ1xyXG4gIG9wZW5WaXNpYmxlSWZEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGVJZlJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGb3JtdWxhLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmF2YWlsYWJsZUZpZWxkcyxcclxuICAgICAgICBmb3JtdWxhOiB0aGlzLmZpZWxkLlZpc2libGVJZixcclxuICAgICAgICBmb3JtdWxhT2JqZWN0OiB0aGlzLmZvcm11bGFPYmplY3RcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlSWZSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkLlZpc2libGVJZiA9IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCkgPT0gXCJcIiA/IG51bGwgOiByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBvcGVuVmlzaWJsZUlmRGlhbG9nXHJcblxyXG4gIC8vI3JlZ2lvbiBvcGVuUmVhZE9ubHlJZkRpYWxvZ1xyXG4gIG9wZW5SZWFkT25seUlmRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWFkT25seUlmUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0Zvcm11bGEsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmaWVsZHM6IHRoaXMuYXZhaWxhYmxlRmllbGRzLFxyXG4gICAgICAgIGZvcm11bGE6IHRoaXMuZmllbGQuUmVhZG9ubHlJZixcclxuICAgICAgICBmb3JtdWxhT2JqZWN0OiB0aGlzLmZvcm11bGFPYmplY3RcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWFkT25seUlmUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5maWVsZC5SZWFkb25seUlmID0gcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKSA9PSBcIlwiID8gbnVsbCA6IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9wZW5SZWFkT25seUlmRGlhbG9nXHJcblxyXG4gIC8vI3JlZ2lvbiBvcGVuQW5zd2VyU3R5bGVWaXNpYmxlSWZEaWFsb2dcclxuICBvcGVuQW5zd2VyU3R5bGVWaXNpYmxlSWZEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGVJZlJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGb3JtdWxhLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmF2YWlsYWJsZUZpZWxkcyxcclxuICAgICAgICBmb3JtdWxhOiB0aGlzLmZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZixcclxuICAgICAgICBmb3JtdWxhT2JqZWN0OiB0aGlzLmZvcm11bGFPYmplY3RcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlSWZSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZiA9IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCkgPT0gXCJcIiA/IG51bGwgOiByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBvcGVuQW5zd2VyU3R5bGVWaXNpYmxlSWZEaWFsb2dcclxuXHJcbiAgb25UZXh0RmllbGRJY29uVG9nZ2xlKGVuYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghZW5hYmxlZCkge1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLkljb25OYW1lID0gbnVsbDtcclxuICAgICAgKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5JY29uUG9zaXRpb24gPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5jb250YWlucygnSWNvbk5hbWUnKSkge1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdJY29uTmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdJY29uUG9zaXRpb24nKSkge1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdJY29uUG9zaXRpb24nKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBUZXh0RmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICAvKiogTGVnZ2UgaWwgdmFsb3JlIGRpIHVuYSBwcm9wcmlldMOgIENTUyBkYSBUZXh0RmllbGRTdHlsZUNTUyAqL1xyXG4gIGdldFN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5UZXh0RmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICAvKiogSW1wb3N0YSBvIGNhbmNlbGxhIHVuYSBwcm9wcmlldMOgIENTUyBpbiBUZXh0RmllbGRTdHlsZUNTUyBlIGFnZ2lvcm5hIGwnYW50ZXByaW1hICovXHJcbiAgc2V0U3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdGYgPSB0aGlzLmZpZWxkIGFzIFRleHRGaWVsZDtcclxuICAgIGlmICghdGYuVGV4dEZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgdGYuVGV4dEZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIC8vIHVuZGVmaW5lZCB2aWVuZSBlc2NsdXNvIGRhIEpTT04uc3RyaW5naWZ5IOKGkiBpbCBKU09OIHJpbWFuZSBjb21wYXR0b1xyXG4gICAgKHRmLlRleHRGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvKiogSW5pemlhbGl6emEgbGEgcHJldmlldyBkZWwgVGV4dEZpZWxkIChGb3JtRm9ybUdyb3VwICsgcmVjb3JkIGR1bW15KSAqL1xyXG4gIGluaXRUZXh0RmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzVGV4dEZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCB0ZiA9IHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkO1xyXG4gICAgaWYgKCF0Zi5UZXh0RmllbGRTdHlsZUNTUykge1xyXG4gICAgICB0Zi5UZXh0RmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsIHx8ICdwcmV2aWV3X3RmJztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbY29udHJvbE5hbWVdOiAnJyB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIFtjb250cm9sTmFtZV06IFsnJywgW1xyXG4gICAgICAgIC4uLih0Zi5NaW5MZW5naHQgPyBbVmFsaWRhdG9ycy5taW5MZW5ndGgoTnVtYmVyKHRmLk1pbkxlbmdodCkpXSA6IFtdKSxcclxuICAgICAgICAuLi4odGYuTWF4TGVuZ2h0ID8gW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKE51bWJlcih0Zi5NYXhMZW5naHQpKV0gOiBbXSksXHJcbiAgICAgIF1dXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvKiogQWdnaW9ybmEgTmFtZSBlIEZvcm1Gb3JtR3JvdXAgcXVhbmRvIGlsIENvZGljZSBjYW1iaWEsIHBlciBtYW50ZW5lcmUgbGEgcHJldmlldyBhbGxpbmVhdGEgKi9cclxuICBvbkxhYmVsQ2hhbmdlRm9yUHJldmlldyhuZXdMYWJlbDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNUZXh0RmllbGQgJiYgIXRoaXMuaXNOdW1lcmljRmllbGQgJiYgIXRoaXMuaXNUZXh0YXJlYUZpZWxkICYmICF0aGlzLmlzQm9vbGVhbkZpZWxkICYmICF0aGlzLmlzQXR0YWNobWVudEZpZWxkICYmICF0aGlzLmlzTGFiZWxGaWVsZCAmJiAhdGhpcy5pc0RhdGVGaWVsZCAmJiAhdGhpcy5pc0FjdGlvbkJ1dHRvbkZpZWxkICYmICF0aGlzLmlzTGlzdFZhbHVlRmllbGQpIHJldHVybjtcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IG5ld0xhYmVsIHx8ICdwcmV2aWV3X3RmJztcclxuICAgIGNvbnN0IGluaXRWYWwgPSB0aGlzLmlzQXR0YWNobWVudEZpZWxkID8gW10gOiAodGhpcy5pc0RhdGVGaWVsZCA/IG51bGwgOiAodGhpcy5pc0xpc3RWYWx1ZUZpZWxkID8gKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5Jc011bHRpQ2hvaWNoZSA/IFtdIDogbnVsbCkgOiAnJykpO1xyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbdGhpcy5maWVsZC5OYW1lXTogaW5pdFZhbCB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIFt0aGlzLmZpZWxkLk5hbWVdOiBbaW5pdFZhbF1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBUZXh0RmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gTnVtZXJpY0ZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgLyoqIFNpbmNyb25penphIE1pblZhbHVlL01heFZhbHVlIGRhbCBmaWVsZEZvcm1Hcm91cCBhbCBjYW1wbyBlIGFnZ2lvcm5hIGkgdmFsaWRhdG9yIGRlbGwnYW50ZXByaW1hICovXHJcbiAgb25OdW1lcmljTWluTWF4Q2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmYgPSB0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZDtcclxuICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdNaW5WYWx1ZScpKSB7XHJcbiAgICAgIG5mLk1pblZhbHVlID0gdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ01pblZhbHVlJykudmFsdWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5jb250YWlucygnTWF4VmFsdWUnKSkge1xyXG4gICAgICBuZi5NYXhWYWx1ZSA9IHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdNYXhWYWx1ZScpLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIG9uTnVtZXJpY0ZpZWxkSWNvblRvZ2dsZShlbmFibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWVuYWJsZWQpIHtcclxuICAgICAgKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5JY29uTmFtZSA9IG51bGw7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuSWNvblBvc2l0aW9uID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ0ljb25OYW1lJykpIHtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnSWNvbk5hbWUnKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5jb250YWlucygnSWNvblBvc2l0aW9uJykpIHtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnSWNvblBvc2l0aW9uJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBnZXROdW1lcmljU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLk51bWVyaWNGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldE51bWVyaWNTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZiA9IHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkO1xyXG4gICAgaWYgKCFuZi5OdW1lcmljRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBuZi5OdW1lcmljRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKG5mLk51bWVyaWNGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0TnVtZXJpY0ZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc051bWVyaWNGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgbmYgPSB0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZDtcclxuICAgIGlmICghbmYuTnVtZXJpY0ZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgbmYuTnVtZXJpY0ZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5maWVsZC5MYWJlbCB8fCAncHJldmlld19uZic7XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogJycgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBbY29udHJvbE5hbWVdOiBbJyddXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gTnVtZXJpY0ZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIFRleHRhcmVhRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBvblRleHRhcmVhRmllbGRJY29uVG9nZ2xlKGVuYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghZW5hYmxlZCkge1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5JY29uTmFtZSA9IG51bGw7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLkljb25Qb3NpdGlvbiA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdJY29uTmFtZScpKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ0ljb25OYW1lJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ0ljb25Qb3NpdGlvbicpKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ0ljb25Qb3NpdGlvbicpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGV4dGFyZWFTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLlRleHRhcmVhRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRUZXh0YXJlYVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRhID0gdGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkO1xyXG4gICAgaWYgKCF0YS5UZXh0YXJlYUZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgdGEuVGV4dGFyZWFGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAodGEuVGV4dGFyZWFGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0VGV4dGFyZWFGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNUZXh0YXJlYUZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCB0YSA9IHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZDtcclxuICAgIGlmICghdGEuVGV4dGFyZWFGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIHRhLlRleHRhcmVhRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsIHx8ICdwcmV2aWV3X3RhJztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbY29udHJvbE5hbWVdOiAnJyB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIFtjb250cm9sTmFtZV06IFsnJ11cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBUZXh0YXJlYUZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIEJvb2xlYW5GaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIGdldEJvb2xlYW5TdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIEJvb2xlYW5GaWVsZCkuQm9vbGVhbkZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0Qm9vbGVhblN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGJmID0gdGhpcy5maWVsZCBhcyBCb29sZWFuRmllbGQ7XHJcbiAgICBpZiAoIWJmLkJvb2xlYW5GaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGJmLkJvb2xlYW5GaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAoYmYuQm9vbGVhbkZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRCb29sZWFuRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzQm9vbGVhbkZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBiZiA9IHRoaXMuZmllbGQgYXMgQm9vbGVhbkZpZWxkO1xyXG4gICAgaWYgKCFiZi5Cb29sZWFuRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBiZi5Cb29sZWFuRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsIHx8ICdwcmV2aWV3X2JmJztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbY29udHJvbE5hbWVdOiBmYWxzZSB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIFtjb250cm9sTmFtZV06IFtmYWxzZV1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBCb29sZWFuRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gQXR0YWNobWVudEZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgZ2V0QXR0YWNobWVudFN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgQXR0YWNobWVudEZpZWxkKS5BdHRhY2htZW50RmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRBdHRhY2htZW50U3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgYWYgPSB0aGlzLmZpZWxkIGFzIEF0dGFjaG1lbnRGaWVsZDtcclxuICAgIGlmICghYWYuQXR0YWNobWVudEZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgYWYuQXR0YWNobWVudEZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChhZi5BdHRhY2htZW50RmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEF0dGFjaG1lbnRGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNBdHRhY2htZW50RmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGFmID0gdGhpcy5maWVsZCBhcyBBdHRhY2htZW50RmllbGQ7XHJcbiAgICBpZiAoIWFmLkF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGFmLkF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBpZiAoIWFmLkFsbG93ZWRNaW1lVHlwZXMpIHtcclxuICAgICAgYWYuQWxsb3dlZE1pbWVUeXBlcyA9IEF2YWlsYWJsZUZpbGVFeHRlbnNpb25zLmNvbmNhdChBdmFpbGFibGVJbWFnZUV4dGVuc2lvbnMpLm1hcChleHQgPT4gZXh0LmtleSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfYWYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06IFtdIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2NvbnRyb2xOYW1lXTogW1tdXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIEF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBMYWJlbEZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgZ2V0TGFiZWxTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIExhYmVsRmllbGQpLkxhYmVsRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRMYWJlbFN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxmID0gdGhpcy5maWVsZCBhcyBMYWJlbEZpZWxkO1xyXG4gICAgaWYgKCFsZi5MYWJlbEZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgbGYuTGFiZWxGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAobGYuTGFiZWxGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0TGFiZWxGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNMYWJlbEZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBsZiA9IHRoaXMuZmllbGQgYXMgTGFiZWxGaWVsZDtcclxuICAgIGlmICghbGYuTGFiZWxGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGxmLkxhYmVsRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsIHx8ICdwcmV2aWV3X2xmJztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgaWYgKCFsZi5FdGljaGV0dGEpIHtcclxuICAgICAgbGYuRXRpY2hldHRhID0gdGhpcy5maWVsZC5EZXNjcmlwdGlvbiB8fCAnVGVzdG8gZXRpY2hldHRhIGRpIGVzZW1waW8nO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbY29udHJvbE5hbWVdOiBsZi5FdGljaGV0dGEgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoeyBbY29udHJvbE5hbWVdOiBbJyddIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBMYWJlbEZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIERhdGVGaWVsZCDigJQgaGVscGVycyBzcGVjaWZpY2hlIGUgQ1NTXHJcblxyXG4gIG9uRGF0ZVR5cGVDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZiA9IHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkO1xyXG4gICAgbGV0IGZtdDogc3RyaW5nO1xyXG4gICAgc3dpdGNoIChkZi5Jc09ubHlEYXRlKSB7XHJcbiAgICAgIGNhc2UgRGF0ZVRpbWVUeXBlRW51bVsnU29sbyBvcmFyaW8nXTogZm10ID0gJ0hIOm1tJzsgICAgICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBEYXRlVGltZVR5cGVFbnVtWydEYXRhIGUgb3JhJ106ICBmbXQgPSAnZGQvTU0veXl5eSBISDptbSc7IGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10ID0gJ2RkL01NL3l5eXknOyAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICBkZi5EYXRlRm9ybWF0ID0gZm10O1xyXG4gICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ0RhdGVGb3JtYXQnKT8uc2V0VmFsdWUoZm10KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBnZXREYXRlU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLkRhdGVGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldERhdGVTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZiA9IHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkO1xyXG4gICAgaWYgKCFkZi5EYXRlRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBkZi5EYXRlRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGRmLkRhdGVGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0RGF0ZUZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0RhdGVGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgZGYgPSB0aGlzLmZpZWxkIGFzIERhdGVGaWVsZDtcclxuICAgIGlmICghZGYuRGF0ZUZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgZGYuRGF0ZUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIGlmIChkZi5Jc09ubHlEYXRlID09IG51bGwpIHtcclxuICAgICAgZGYuSXNPbmx5RGF0ZSA9IERhdGVUaW1lVHlwZUVudW1bJ1NvbG8gZGF0YSddO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsIHx8ICdwcmV2aWV3X2RmJztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbY29udHJvbE5hbWVdOiBudWxsIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2NvbnRyb2xOYW1lXTogW251bGxdXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gRGF0ZUZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgZ2V0QWN0aW9uQnV0dG9uU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRBY3Rpb25CdXR0b25TdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBhYiA9IHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQ7XHJcbiAgICBpZiAoIWFiLkFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgYWIuQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGFiLkFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRBY3Rpb25CdXR0b25GaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNBY3Rpb25CdXR0b25GaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgYWIgPSB0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkO1xyXG4gICAgaWYgKCFhYi5BY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGFiLkFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gSW1hZ2VGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIGdldEltYWdlU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5JbWFnZUZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0SW1hZ2VTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpbWcgPSB0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQ7XHJcbiAgICBpZiAoIWltZy5JbWFnZUZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgaW1nLkltYWdlRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGltZy5JbWFnZUZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRJbWFnZUZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0ltYWdlRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGltZyA9IHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZDtcclxuICAgIGlmICghaW1nLkltYWdlRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBpbWcuSW1hZ2VGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIEltYWdlRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgZ2V0SW1hZ2VXaXRoTWFya2Vyc1N0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkKS5JbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRJbWFnZVdpdGhNYXJrZXJzU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgaXdtID0gdGhpcy5maWVsZCBhcyBJbWFnZVdpdGhNYXJrZXJzRmllbGQ7XHJcbiAgICBpZiAoIWl3bS5JbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBpd20uSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChpd20uSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRJbWFnZVdpdGhNYXJrZXJzRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBpd20gPSB0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZDtcclxuICAgIGlmICghaXdtLkltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGl3bS5JbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gTGlzdFZhbHVlRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRMaXN0VmFsdWVTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5MaXN0VmFsdWVGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldExpc3RWYWx1ZVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGx2ID0gdGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZDtcclxuICAgIGlmICghbHYuTGlzdFZhbHVlRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBsdi5MaXN0VmFsdWVGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAobHYuTGlzdFZhbHVlRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdExpc3RWYWx1ZUZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0xpc3RWYWx1ZUZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBsdiA9IHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQ7XHJcbiAgICBpZiAoIWx2Lkxpc3RWYWx1ZUZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgbHYuTGlzdFZhbHVlRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsIHx8ICdwcmV2aWV3X2x2JztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgY29uc3QgaW5pdFZhbCA9IGx2LklzTXVsdGlDaG9pY2hlID8gW10gOiBudWxsO1xyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbY29udHJvbE5hbWVdOiBpbml0VmFsIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHsgW2NvbnRyb2xOYW1lXTogW2luaXRWYWxdIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIG9uSXNNdWx0aUNob2ljaGVDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNMaXN0VmFsdWVGaWVsZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5pbml0TGlzdFZhbHVlRmllbGRQcmV2aWV3KCk7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gTGlzdFZhbHVlRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgZ2V0SW1hZ2VTZWxlY3RvclN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5JbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRJbWFnZVNlbGVjdG9yU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgaXNmID0gdGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQ7XHJcbiAgICBpZiAoIWlzZi5JbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBpc2YuSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChpc2YuSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRJbWFnZVNlbGVjdG9yRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzSW1hZ2VTZWxlY3RvckZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBpc2YgPSB0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZDtcclxuICAgIGlmICghaXNmLkltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGlzZi5JbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsIHx8ICdwcmV2aWV3X2lzZic7XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIGNvbnN0IGluaXRWYWwgPSBpc2YuSXNNdWx0aUNob2ljaGUgPyBbXSA6IG51bGw7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06IGluaXRWYWwgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoeyBbY29udHJvbE5hbWVdOiBbaW5pdFZhbF0gfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIHN0cmluZ1Nhbml0aXplcih2YWx1ZSkge1xyXG4gICAgaWYgKCFVdGlsaXR5SGVscGVyU2VydmljZS5zdHJpbmdDaGVja1BhcmVudGVzaXModmFsdWUpKSB7XHJcbiAgICAgIC8vIGFsZXJ0KFwiZXJyb3JlIVwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBkaXNhYmxlU2F2ZUZpZWxkXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBkaXNhYmlsaXRhcmUgaWwgcHVsc2FudGUgcGVyIHNhbHZhcmUgaWwgY2FtcG8gaW5zZXJpdG8vbW9kaWZpY2F0by5cclxuICAgKiBAcmV0dXJucyBSZXN0aXR1aXNjZSB1biBib29sZWFubywgc2UgdHJ1ZSBpbCBzYWx2YXRhZ2dpbyB2aWVuZSBkaXNhYmlsaXRhdG8uXHJcbiAgICovXHJcbiAgZGlzYWJsZVNhdmVGaWVsZCgpOiBib29sZWFuIHtcclxuXHJcbiAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAodGhpcy5maWVsZC5GaWVsZFR5cGUpIHtcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGdlbmVyaWNvXCJdOlxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuRm9ybXVsYSAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5Gb3JtdWxhICE9IFwiXCJcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGlmICghKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMpIHtcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMgPSB7fTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVN0cmluZyAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVN0cmluZyAhPSBudWxsICYmXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVTdHJpbmcgIT0gXCJcIikge1xyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgISh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzIHx8XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycy5sZW5ndGggPT09IDBcclxuICAgICAgICApO1xyXG5cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGltbWFnaW5pXCJdOlxyXG5cclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgISh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QgfHxcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkF0dGFjaG1lbnRMaXN0LmZpbmQoXHJcbiAgICAgICAgICAgIChpKSA9PiAoaS5CdXR0b25LZXkgPT0gbnVsbCB8fCBpLkJ1dHRvbktleSA9PT0gXCJ1bmRlZmluZWRcIiB8fCBpLkJ1dHRvbktleSA9PSAnJykgfHwgKGkuQnV0dG9uVmFsdWUgPT0gbnVsbCB8fCBpLkJ1dHRvblZhbHVlID09PSBcInVuZGVmaW5lZFwiIHx8IGkuQnV0dG9uVmFsdWUgPT0gJycpXHJcbiAgICAgICAgICApICE9IG51bGxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkxvb2t1cDpcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgISh0aGlzLmZpZWxkIGFzIExvb2t1cEZpZWxkKS5GaWVsZE5hbWVzIHx8XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBMb29rdXBGaWVsZCkuRmllbGROYW1lcy5sZW5ndGggPT09IDBcclxuICAgICAgICApO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIGRpc2FibGVTYXZlRmllbGRcclxuXHJcbiAgb25TYXZlQ2xpY2soKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5kaXNhYmxlU2F2ZUZpZWxkKCkpIHtcclxuICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5jb2xsZWN0VmFsaWRhdGlvbkVycm9ycygpO1xyXG4gICAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5XYXJuaW5nKFxyXG4gICAgICAgIGVycm9ycy5sZW5ndGggPiAwID8gZXJyb3JzIDogWydJbCBmb3JtIGNvbnRpZW5lIGVycm9yaSBkaSB2YWxpZGF6aW9uZS4nXSxcclxuICAgICAgICAnSW1wb3NzaWJpbGUgc2FsdmFyZSdcclxuICAgICAgKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zYXZlQW5kRXhpdEFkZEZpZWxkKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb2xsZWN0VmFsaWRhdGlvbkVycm9ycygpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgY29uc3QgbGFiZWxNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgIExhYmVsOiAnQ29kaWNlJyxcclxuICAgICAgRGVzY3JpcHRpb246ICdEZXNjcml6aW9uZScsXHJcbiAgICAgIEZpZWxkVHlwZTogJ1RpcG8gY2FtcG8nLFxyXG4gICAgICBGb3JtdWxhOiAnRm9ybXVsYScsXHJcbiAgICAgIFZpc2libGVJZjogJ1Zpc2liaWxlIHNlJyxcclxuICAgICAgUmVhZG9ubHlJZjogJ1NvbGEgbGV0dHVyYSBzZScsXHJcbiAgICAgIFRleHRNYXNrOiAnTWFzY2hlcmEnLFxyXG4gICAgICBNYXhMZW5ndGg6ICdMdW5naGV6emEgbWFzc2ltYScsXHJcbiAgICAgIE1pblZhbHVlOiAnVmFsb3JlIG1pbmltbycsXHJcbiAgICAgIE1heFZhbHVlOiAnVmFsb3JlIG1hc3NpbW8nLFxyXG4gICAgICBEYXRlRm9ybWF0OiAnRm9ybWF0byBkYXRhJyxcclxuICAgICAgRXRpY2hldHRhOiAnVGVzdG8gZXRpY2hldHRhJyxcclxuICAgICAgSWNvbk5hbWU6ICdJY29uYScsXHJcbiAgICAgIEJ1dHRvbkxhYmVsOiAnRXRpY2hldHRhIGJvdHRvbmUnLFxyXG4gICAgICBJbkxpc3RWaWV3OiAnVmlzaWJpbGUgaW4gbGlzdGEnLFxyXG4gICAgICBSZXF1aXJlZDogJ09iYmxpZ2F0b3JpbycsXHJcbiAgICAgIEludmlzaWJpbGl0eTogJ0ludmlzaWJpbGl0w6AnLFxyXG4gICAgICBGaWVsZHN0eWxlQ1NTOiAnU3RpbGUgY2FtcG8nLFxyXG4gICAgICBMYWJlbHN0eWxlQ1NTOiAnU3RpbGUgZXRpY2hldHRhJyxcclxuICAgICAgQWxsb3dlZE1pbWVUeXBlczogJ1RpcGkgTUlNRSBjb25zZW50aXRpJyxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgZXJyb3JNc2dNYXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgIHJlcXVpcmVkOiAnw6ggb2JibGlnYXRvcmlvJyxcclxuICAgICAgbWlubGVuZ3RoOiAnw6ggdHJvcHBvIGNvcnRvJyxcclxuICAgICAgbWF4bGVuZ3RoOiAnw6ggdHJvcHBvIGx1bmdvJyxcclxuICAgICAgcGF0dGVybjogJ2NvbnRpZW5lIGNhcmF0dGVyaSBub24gdmFsaWRpJyxcclxuICAgICAgbWluOiAnw6ggaW5mZXJpb3JlIGFsIHZhbG9yZSBtaW5pbW8nLFxyXG4gICAgICBtYXg6ICfDqCBzdXBlcmlvcmUgYWwgdmFsb3JlIG1hc3NpbW8nLFxyXG4gICAgICBlbWFpbDogJ25vbiDDqCB1biBpbmRpcml6em8gZW1haWwgdmFsaWRvJyxcclxuICAgICAgbWF0RGF0ZXBpY2tlclBhcnNlOiAnbm9uIMOoIHVuYSBkYXRhIHZhbGlkYScsXHJcbiAgICB9O1xyXG5cclxuICAgIE9iamVjdC5rZXlzKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goY29udHJvbE5hbWUgPT4ge1xyXG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoY29udHJvbE5hbWUpO1xyXG4gICAgICBpZiAoY29udHJvbCAmJiBjb250cm9sLmludmFsaWQgJiYgY29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgICBjb25zdCBsYWJlbCA9IGxhYmVsTWFwW2NvbnRyb2xOYW1lXSB8fCBjb250cm9sTmFtZTtcclxuICAgICAgICBPYmplY3Qua2V5cyhjb250cm9sLmVycm9ycykuZm9yRWFjaChlcnJvcktleSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBtc2cgPSBlcnJvck1zZ01hcFtlcnJvcktleV0gfHwgYGhhIHVuIGVycm9yZSAoJHtlcnJvcktleX0pYDtcclxuICAgICAgICAgIGVycm9ycy5wdXNoKGBJbCBjYW1wbyBcIiR7bGFiZWx9XCIgJHttc2d9YCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIEVycm9yaSBzcGVjaWZpY2kgcGVyIHRpcG8gY2FtcG9cclxuICAgIHN3aXRjaCAodGhpcy5maWVsZC5GaWVsZFR5cGUpIHtcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGdlbmVyaWNvXCJdOiB7XHJcbiAgICAgICAgY29uc3QgbHYgPSB0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkO1xyXG4gICAgICAgIGNvbnN0IGhhc0Zvcm11bGEgPSBsdi5Gb3JtdWxhICYmIGx2LkZvcm11bGEgIT09ICcnO1xyXG4gICAgICAgIGNvbnN0IGhhc1ZhbHVlU3RyaW5nID0gbHYuVmFsdWVTdHJpbmcgJiYgbHYuVmFsdWVTdHJpbmcgIT09ICcnO1xyXG4gICAgICAgIGNvbnN0IGhhc1ZhbHVlUGFpcnMgPSBsdi5WYWx1ZVBhaXJzICYmIGx2LlZhbHVlUGFpcnMubGVuZ3RoID4gMDtcclxuICAgICAgICBpZiAoIWhhc0Zvcm11bGEgJiYgIWhhc1ZhbHVlU3RyaW5nICYmICFoYXNWYWx1ZVBhaXJzKSB7XHJcbiAgICAgICAgICBlcnJvcnMucHVzaCgnTFxcJ2VsZW5jbyBub24gY29udGllbmUgdmFsb3JpJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkVsZW5jbyBpbW1hZ2luaVwiXToge1xyXG4gICAgICAgIGNvbnN0IGlzZiA9IHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkO1xyXG4gICAgICAgIGlmICghaXNmLkF0dGFjaG1lbnRMaXN0IHx8IGlzZi5BdHRhY2htZW50TGlzdC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIGVycm9ycy5wdXNoKCdMXFwnZWxlbmNvIGltbWFnaW5pIG5vbiBjb250aWVuZSBlbGVtZW50aScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNmLkF0dGFjaG1lbnRMaXN0LmZpbmQoXHJcbiAgICAgICAgICBpID0+ICFpLkJ1dHRvbktleSB8fCBpLkJ1dHRvbktleSA9PT0gJ3VuZGVmaW5lZCcgfHwgaS5CdXR0b25LZXkgPT09ICcnIHx8XHJcbiAgICAgICAgICAgICAgICFpLkJ1dHRvblZhbHVlIHx8IGkuQnV0dG9uVmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IGkuQnV0dG9uVmFsdWUgPT09ICcnXHJcbiAgICAgICAgKSkge1xyXG4gICAgICAgICAgZXJyb3JzLnB1c2goJ0FsY3VuaSBlbGVtZW50aSBkZWxsXFwnZWxlbmNvIGltbWFnaW5pIG5vbiBzb25vIGNvbXBsZXRpIChjaGlhdmUgbyB2YWxvcmUgbWFuY2FudGkpJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5Mb29rdXA6IHtcclxuICAgICAgICBjb25zdCBsZiA9IHRoaXMuZmllbGQgYXMgTG9va3VwRmllbGQ7XHJcbiAgICAgICAgaWYgKCFsZi5GaWVsZE5hbWVzIHx8IGxmLkZpZWxkTmFtZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBlcnJvcnMucHVzaCgnSWwgTG9va3VwIG5vbiBoYSBuZXNzdW4gY2FtcG8gY29uZmlndXJhdG8nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZXJyb3JzO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIHNhdmVBbmRFeGl0QWRkRmllbGRcclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHNhbHZhcmUgaWwgY2FtcG8gaW5zZXJpdG8vbW9kaWZpY2F0by5cclxuICAgKiBTZSDDqCBzdGF0byBpbnNlcml0byB1biBmaWVsZCBjb24gbGEgc3Rlc3NhIGxhYmVsIHZpZW5lIGdlbmVyYXRvIHVuIGVycm9yZSAobGUgbGFiZWwgZGV2b25vIGVzc2VyZSB1bml2b2NoZSkuXHJcbiAgICogVW5hIHZvbHRhIGFnZ2l1bnRvL2FnZ2lvcm5hdG8gaWwgY2FtcG8gbmVsbCdlbGVuY28gZGVpIEZpZWxkIGRlbGxhIEZvcm0gY2hpdWRlIGlsIGRpYWxvZyBlIHJpY2FyaWNhIGxhIHRhYmVsbGFcclxuICAgKiBjaGUgbW9zdHJhIGwnZWxlbmNvIGRlaSBjYW1waSBhZ2dpdW50aSBhbGxhIGZvcm0uXHJcbiAgICovXHJcbiAgc2F2ZUFuZEV4aXRBZGRGaWVsZChzYXZlOiBib29sZWFuLCBuZXh0UmVsYXRpdmVJbmRleDogbnVtYmVyID0gMCkge1xyXG4gICAgdGhpcy5zZXRSZXNpemVkSW1hZ2VzSGVpZ2h0UHgoKTtcclxuICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgIGlmICh0aGlzLmltYWdlU2VsZWN0b3JBdHRhY2htZW50cykgeyB0aGlzLmltYWdlU2VsZWN0b3JBdHRhY2htZW50cy5yZWxvYWREYXRhKCk7IH1cclxuICAgIGlmIChzYXZlKSB7XHJcblxyXG4gICAgICB0aGlzLmZpZWxkLk5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsO1xyXG4gICAgICAvLyByZXRyb2NvbXBhdGliaWxpdMOgIGNvbiB2YWx1ZXBhaXJzIHBlciBFbGVuY28gR2VuZXJpY29cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl0pIHtcclxuICAgICAgICBpZiAoKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5Gb3JtdWxhICYmICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5Gb3JtdWxhICE9IFwiXCIpIHx8ICgodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVTdHJpbmcgJiYgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlU3RyaW5nICE9IFwiXCIpKSB7XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGltbWFnaW5pXCJdKSB7XHJcbiAgICAgICAgaWYgKCgodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkF0dGFjaG1lbnRMaXN0Lmxlbmd0aCA+IDApKSB7XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkF0dGFjaG1lbnRMaXN0LmZvckVhY2goKGF0dGFjaG1lbnQpID0+IHtcclxuICAgICAgICAgICAgYXR0YWNobWVudC5SZXNpemVkSW1hZ2VIZWlnaHRQeCA9ICh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4O1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtLkltbWFnaW5lKSB7XHJcbiAgICAgICAgaWYgKCgodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5EeW5BdHRhY2htZW50ICE9IG51bGwpKSB7XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5EeW5BdHRhY2htZW50LlJlc2l6ZWRJbWFnZUhlaWdodFB4ID0gKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVtcIkltbWFnaW5lIGNvbiBtYXJrZXJzXCJdKSB7XHJcbiAgICAgICAgaWYgKCgodGhpcy5maWVsZCBhcyBJbWFnZVdpdGhNYXJrZXJzRmllbGQpLkR5bkF0dGFjaG1lbnQgIT0gbnVsbCkpIHtcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZCkuRHluQXR0YWNobWVudC5SZXNpemVkSW1hZ2VIZWlnaHRQeCA9ICh0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVtcIkJvdHRvbmVcIl0pIHtcclxuICAgICAgICBpZiAoKCh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5mb3JtdWxhc1RlbXAgIT0gbnVsbCkpIHtcclxuXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuZm9ybXVsYXMgPSBuZXcgQXJyYXk8S2V5VHlwZVZhbHVlPigpO1xyXG5cclxuICAgICAgICAgIHZhciBmb3JtdWxhcyA9ICh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5mb3JtdWxhc1RlbXA7XHJcbiAgICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGZvcm11bGFzKTtcclxuXHJcbiAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzQW5BY3Rpb25LZXkoa2V5LCB0aGlzLmZpZWxkLCBmb3JtdWxhcykpIHsgcmV0dXJuOyB9XHJcbiAgICAgICAgICAgICAgdmFyIGt0djogS2V5VHlwZVZhbHVlID0gbmV3IEtleVR5cGVWYWx1ZSgpO1xyXG4gICAgICAgICAgICAgIGt0di5rZXkgPSBrZXk7XHJcbiAgICAgICAgICAgICAga3R2LnRvb2x0aXAgPSBmb3JtdWxhc1trZXldLnRvb2x0aXA7XHJcbiAgICAgICAgICAgICAga3R2LnR5cGUgPSBmb3JtdWxhc1trZXldLnR5cGU7XHJcbiAgICAgICAgICAgICAga3R2LnZhbHVlID0gZm9ybXVsYXNba2V5XS52YWx1ZTtcclxuICAgICAgICAgICAgICAvKiogcGVyIGNhbXBpIGNvbiB2YWxvcmkgdmluY29sYXRpIGEgdW5hIGxpc3RhLCBwb3J0byBkaWV0cm8gc2lhIGlsIHZhbG9yZSBzZWxlemlvbmF0byBjaGUgcXVlbGxpIGFtbWlzc2liaWxpICovXHJcbiAgICAgICAgICAgICAga3R2LmFsbG93ZWRWYWx1ZXMgPSBmb3JtdWxhc1trZXldLmFsbG93ZWRWYWx1ZXM7XHJcbiAgICAgICAgICAgICAga3R2LnNlbGVjdGVkQWxsb3dlZFZhbHVlID0gZm9ybXVsYXNba2V5XS5zZWxlY3RlZEFsbG93ZWRWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLmZvcm11bGFzLnB1c2goa3R2KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnNldENvZGVUb0V4dHJhRmllbGRzKCk7XHJcblxyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdhZGQtZm9ybS1maWVsZCBzYXZlJywgdGhpcy5maWVsZClcclxuICAgICAgbGV0IG91dCA9IHsgZmllbGQ6IHRoaXMuZmllbGQsIHJlb3BlbjogbmV4dFJlbGF0aXZlSW5kZXggfVxyXG4gICAgICB0aGlzLnNhdmVGaWVsZEV2ZW50LmVtaXQob3V0KTtcclxuXHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IG91dCA9IHsgZmllbGQ6IG51bGwsIHJlb3BlbjogbmV4dFJlbGF0aXZlSW5kZXggfVxyXG4gICAgICB0aGlzLnNhdmVGaWVsZEV2ZW50LmVtaXQob3V0KTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBzYXZlQW5kRXhpdEFkZEZpZWxkXHJcblxyXG4gIGlzQW5BY3Rpb25LZXkoa2V5LCBmaWVsZDogQWN0aW9uQnV0dG9uRmllbGQsIGZvcm11bGFzOiBBcnJheTxhbnk+KSB7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaXNBbkFjdGlvbktleSAtIGtleVwiLCBrZXkpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImlzQW5BY3Rpb25LZXkgLSBmaWVsZFwiLCBmaWVsZCk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaXNBbkFjdGlvbktleSAtIGZvcm11bGFzXCIsIGZvcm11bGFzKTtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gICAgLyp2YXIgY29kZSA9IGZpZWxkLkJ1dHRvbkNvZGU7XHJcbiAgICB2YXIgZWxzID0gZm9ybXVsYXNbY29kZV07XHJcbiAgICByZXR1cm4gKE9iamVjdC5rZXlzKGVscykuZmluZCh4ID0+IHggPT0ga2V5KSAhPSBudWxsKTsqL1xyXG4gIH1cclxuXHJcbiAgc2V0Q29kZVRvRXh0cmFGaWVsZHMoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzICE9IG51bGwgJiYgdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzLmZpbHRlcih4ID0+IHguRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPT09IHVuZGVmaW5lZCkuZm9yRWFjaCgodWZpZWxkcykgPT4ge1xyXG4gICAgICAgIHVmaWVsZHMuRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPSB0aGlzLmZpZWxkLk5hbWU7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB1ZmllbGRzLkZpZWxkQ29uZmlnVmFsdWUgPT0gXCJib29sZWFuXCIpIHsgdWZpZWxkcy5GaWVsZENvbmZpZ1ZhbHVlID0gdWZpZWxkcy5GaWVsZENvbmZpZ1ZhbHVlID8gXCJ0cnVlXCIgOiBcImZhbHNlXCI7IH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzICE9IG51bGwgJiYgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzLmZpbHRlcih4ID0+IHguRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPT09IHVuZGVmaW5lZCkuZm9yRWFjaCgodWZpZWxkcykgPT4ge1xyXG4gICAgICAgIHVmaWVsZHMuRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPSB0aGlzLmZpZWxkLk5hbWU7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB1ZmllbGRzLkZpZWxkQ29uZmlnVmFsdWUgPT0gXCJib29sZWFuXCIpIHsgdWZpZWxkcy5GaWVsZENvbmZpZ1ZhbHVlID0gdWZpZWxkcy5GaWVsZENvbmZpZ1ZhbHVlID8gXCJ0cnVlXCIgOiBcImZhbHNlXCI7IH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gcmVzdG9yZUJhc2VGaWVsZFByb3BlcnRpZXNcclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIHJpcHJpc3RpbmFyZSBsJ29nZ2V0dG8gZmllbGQgYWwgY2FtYmlvIGRlbCB0aXBvIHNlbGV6aW9uYXRvLlxyXG4gICAqIExhc2NpYSB2YWxvcml6emF0ZSBzb2xvIGxlIHByb3ByaWV0w6AgZGVsbCdvZ2dldHRvIEJhc2VGaWVsZCBjb211bmUgYSB0dXR0aSBpIHRpcGkgZGkgY2FtcG8uXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZXN0b3JlQmFzZUZpZWxkUHJvcGVydGllcygpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkKSB7XHJcbiAgICAgIGNvbnN0IHRtcEJhc2VGaWVsZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5maWVsZCwgKGtleSwgdmFsdWUpID0+IGtleSA9PT0gJ0Zvcm1Gb3JtR3JvdXAnID8gdW5kZWZpbmVkIDogdmFsdWUpKTtcclxuICAgICAgdGhpcy5maWVsZCA9IG5ldyBCYXNlRmllbGQoKTtcclxuICAgICAgdGhpcy5maWVsZC5MYWJlbCA9IHRtcEJhc2VGaWVsZC5MYWJlbDtcclxuICAgICAgdGhpcy5maWVsZC5EZXNjcmlwdGlvbiA9IHRtcEJhc2VGaWVsZC5EZXNjcmlwdGlvbjtcclxuICAgICAgdGhpcy5maWVsZC5SZXF1aXJlZCA9IHRtcEJhc2VGaWVsZC5SZXF1aXJlZDtcclxuICAgICAgdGhpcy5maWVsZC5GaWVsZFR5cGUgPSB0bXBCYXNlRmllbGQuRmllbGRUeXBlO1xyXG4gICAgICB0aGlzLmZpZWxkLkZvcm11bGEgPSB0bXBCYXNlRmllbGQuRm9ybXVsYTtcclxuICAgICAgdGhpcy5maWVsZC5Db2xTcGFuU2l6ZXMgPSB0bXBCYXNlRmllbGQuQ29sU3BhblNpemVzO1xyXG4gICAgICB0aGlzLmZpZWxkLkluTGlzdFZpZXcgPSB0bXBCYXNlRmllbGQuSW5MaXN0VmlldztcclxuICAgICAgdGhpcy5maWVsZC5JbnZpc2liaWxpdHkgPSB0bXBCYXNlRmllbGQuSW52aXNpYmlsaXR5O1xyXG4gICAgICB0aGlzLmZpZWxkLlRvb2x0aXAgPSB0bXBCYXNlRmllbGQuVG9vbHRpcDtcclxuICAgICAgdGhpcy5maWVsZC5SZWFkb25seSA9IHRtcEJhc2VGaWVsZC5SZWFkb25seTtcclxuICAgICAgdGhpcy5maWVsZC5GaWVsZEdyb3VwID0gdG1wQmFzZUZpZWxkLkZpZWxkR3JvdXA7XHJcbiAgICAgIHRoaXMuZmllbGQuVmlzaWJsZUlmID0gdG1wQmFzZUZpZWxkLlZpc2libGVJZjtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jcmVnaW9uIHJlc3RvcmVCYXNlRmllbGRQcm9wZXJ0aWVzXHJcblxyXG4gIGNvdW50VmFsdWVQYWlycyh2YWx1ZVBhaXJzKTogbnVtYmVyIHtcclxuICAgIGlmICh2YWx1ZVBhaXJzKSB7XHJcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZVBhaXJzKS5sZW5ndGg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBDb25maWd1cmVDb2x1bW5zXHJcbiAgY29uZmlndXJlQ29sdW1ucygpIHtcclxuXHJcbiAgICAvLyBMaXN0YSBHZW5lcmljYSBkaSBpbW1hZ2luaVxyXG4gICAgdGhpcy5jb25maWdDb2x1bW5MaXN0SW1hZ2VzID0gW107XHJcblxyXG4gICAgdGhpcy5jb25maWdDb2x1bW5MaXN0SW1hZ2VzLnB1c2goe1xyXG4gICAgICBrZXk6ICdhY3Rpb24nLCBkaXNwbGF5OiAnJywgdHlwZTogVHlwZUNvbHVtbi5NZW51QWN0aW9uLCBidXR0b25NZW51SWNvbjogJ21vcmVfdmVydCcsIHN0eWxlczogeyBmbGV4OiAnMCAwIDYlJyB9LFxyXG4gICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgeyBuYW1lOiAnRWxpbWluYScsIGljb246ICdkZWxldGUnLCBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+IHRoaXMuZGVsZXRlTGlzdEltYWdlKGVsZW1lbnQsIGluZGV4LCBjb2wpIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogXCJTcG9zdGEgc3VcIixcclxuICAgICAgICAgIGljb246IFwiYXJyb3dfdXB3YXJkXCIsXHJcbiAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoZWxlbWVudCwgdHJ1ZSksXHJcbiAgICAgICAgICBkaXNhYmxlZDogKGVsZW1lbnQpID0+IHRoaXMuZmllbGQuQXR0YWNobWVudExpc3QuaW5kZXhPZihlbGVtZW50KSA9PT0gMCxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6IFwiU3Bvc3RhIGdpw7lcIixcclxuICAgICAgICAgIGljb246IFwiYXJyb3dfZG93bndhcmRcIixcclxuICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgICAgdGhpcy5tb3ZlRWxlbWVudChlbGVtZW50LCBmYWxzZSksXHJcbiAgICAgICAgICBkaXNhYmxlZDogKGVsZW1lbnQpID0+XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGQuQXR0YWNobWVudExpc3QuaW5kZXhPZihlbGVtZW50KSA+PSB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0Lmxlbmd0aCAtIDEsXHJcbiAgICAgICAgfSxcclxuICAgICAgXVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb25maWdDb2x1bW5MaXN0SW1hZ2VzLnB1c2goe1xyXG4gICAgICBrZXk6IFwiRmlsZURhdGFCYXNlNjRcIixcclxuICAgICAgZGlzcGxheTogXCJJbW1hZ2luZVwiLFxyXG4gICAgICB0eXBlOiBUeXBlQ29sdW1uLkV4dGVybmFsVGVtcGxhdGUsXHJcbiAgICAgIGV4dGVybmFsVGVtcGxhdGU6IHRoaXMuR2VuZXJpY0xpc3RJbWFnZXNJbWFnZVRlbXBsYXRlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMucHVzaCh7XHJcbiAgICAgIGtleTogXCJCdXR0b25LZXlcIixcclxuICAgICAgZGlzcGxheTogXCJDaGlhdmUqXCIsXHJcbiAgICAgIHR5cGU6IFR5cGVDb2x1bW4uRXh0ZXJuYWxUZW1wbGF0ZSxcclxuICAgICAgZXh0ZXJuYWxUZW1wbGF0ZTogdGhpcy5HZW5lcmljTGlzdEltYWdlc0tleVRlbXBsYXRlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMucHVzaCh7XHJcbiAgICAgIGtleTogXCJCdXR0b25WYWx1ZVwiLFxyXG4gICAgICBkaXNwbGF5OiBcIlZhbG9yZSpcIixcclxuICAgICAgdHlwZTogVHlwZUNvbHVtbi5FeHRlcm5hbFRlbXBsYXRlLFxyXG4gICAgICBleHRlcm5hbFRlbXBsYXRlOiB0aGlzLkdlbmVyaWNMaXN0SW1hZ2VzVmFsdWVUZW1wbGF0ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb25maWdDb2x1bW5MaXN0SW1hZ2VzLnB1c2goe1xyXG4gICAgICBrZXk6IFwiSW1hZ2VXaWR0aFB4XCIsXHJcbiAgICAgIGRpc3BsYXk6IFwiTGFyZ2hlenphXCJcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb25maWdDb2x1bW5MaXN0SW1hZ2VzLnB1c2goe1xyXG4gICAgICBrZXk6IFwiSW1hZ2VIZWlnaHRQeFwiLFxyXG4gICAgICBkaXNwbGF5OiBcIkFsdGV6emFcIlxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gQ29uZmlndXJlQ29sdW1uc1xyXG5cclxuICAvLyNyZWdpb24gbW92ZUVsZW1lbnRcclxuICBwcml2YXRlIG1vdmVFbGVtZW50KFxyXG4gICAgZWxlbWVudDogRHluQXR0YWNobWVudCxcclxuICAgIG1vdmVVcDogYm9vbGVhblxyXG4gICkge1xyXG4gICAgY29uc3Qgc3RhcnRpbmdJbmRleCA9IHRoaXMuZmllbGQuQXR0YWNobWVudExpc3QuaW5kZXhPZihlbGVtZW50KTtcclxuICAgIGNvbnN0IGVuZGluZ0luZGV4ID0gc3RhcnRpbmdJbmRleCArIChtb3ZlVXAgPyAtMSA6IDEpO1xyXG5cclxuICAgIHRoaXMuZmllbGQuQXR0YWNobWVudExpc3Quc3BsaWNlKHN0YXJ0aW5nSW5kZXgsIDEpO1xyXG4gICAgdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5zcGxpY2UoZW5kaW5nSW5kZXgsIDAsIGVsZW1lbnQpO1xyXG5cclxuICAgIHRoaXMuc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKTtcclxuICAgIGlmICh0aGlzLmltYWdlU2VsZWN0b3JBdHRhY2htZW50cykgeyB0aGlzLmltYWdlU2VsZWN0b3JBdHRhY2htZW50cy5yZWxvYWREYXRhKCk7IH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG1vdmVFbGVtZW50XHJcblxyXG4gIC8vI3JlZ2lvbiBzZXRGaWVsZE9yZGluYWxQb3NpdGlvblxyXG4gIHByaXZhdGUgc2V0RmllbGRPcmRpbmFsUG9zaXRpb24oKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZC5BdHRhY2htZW50TGlzdCkge1xyXG4gICAgICB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LmZvckVhY2goKGZpZWxkKSA9PiB7XHJcbiAgICAgICAgZmllbGQuT3JkaW5hbFBvc2l0aW9uID0gdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5pbmRleE9mKGZpZWxkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBzZXRGaWVsZE9yZGluYWxQb3NpdGlvblxyXG5cclxuICBzZXRSZXNpemVkSW1hZ2VzSGVpZ2h0UHgoKSB7XHJcbiAgICB0aGlzLnJlc2l6ZWRJbWFnZXNIZWlnaHRQeCA9IHRoaXMuZmllbGQuUmVzaXplZEltYWdlc0hlaWdodFB4O1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlTGlzdEltYWdlKGVsOiBEeW5BdHRhY2htZW50LCBpOiBudW1iZXIsIGNvbDogbnVtYmVyKSB7XHJcbiAgICBFcXBEeW5hbWljTW9kdWxlRGlhbG9nU2VydmljZS5Db25maXJtKCdFbGltaW5hcmUgcXVlc3RhIGltbWFnaW5lPycsICgpID0+IHtcclxuICAgICAgdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5zcGxpY2UoZWwub3JpZ2luYWxJbmRleCwgMSk7XHJcbiAgICAgIGlmICh0aGlzLmltYWdlU2VsZWN0b3JBdHRhY2htZW50cykgeyB0aGlzLmltYWdlU2VsZWN0b3JBdHRhY2htZW50cy5yZWxvYWREYXRhKCk7IH1cclxuXHJcbiAgICB9LCBmYWxzZSwgJ1JpY2hpZXN0YSBjb25mZXJtYScpO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlSW1hZ2UoZWw6IER5bkF0dGFjaG1lbnQpIHtcclxuICAgIHRoaXMuZmllbGQuRHluQXR0YWNobWVudCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gREIgR0VUVEVSXHJcbiAgb3BlbkRCR2V0dGVyKCkge1xyXG4gICAgaWYgKHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQgIT0gbnVsbCAmJiAhdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy51c2VEeW5hbWljTW9kdWxlTW9jaykge1xyXG5cclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcubW9kZSA9IFF1ZXJ5RWRpdG9yTW9kZUVudW0uQ09NUE9TRVI7XHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLmxvYWRRdWVyeVN0YXR1c2VzID0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZTtcclxuXHJcbiAgICAgIHRoaXMuZGlhbG9nUUVSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nUUUsIHtcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgICAgcGFuZWxDbGFzczogJ3F1ZXJ5LWVkaXRvci1tb2RhbCcsXHJcbiAgICAgICAgd2lkdGg6ICc5MCUnXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KCcuL2Fzc2V0cy9tb2NrdXBzL21vY2tlZEZyb21RdWVyeUVkaXRvcl9RVUVSWV9XSVRIX1FVRVNUSU9OLnR4dCcsIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcgfSlcclxuICAgICAgICAuc3Vic2NyaWJlKG1vY2tlZEZyb21RdWVyeUVkaXRvciA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRyZWF0RGF0YUZyb21RdWVyeUVkaXRvcihKU09OLnBhcnNlKG1vY2tlZEZyb21RdWVyeUVkaXRvcikuUGFyYW1zKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9zZVFFTW9kYWwoKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1FFUmVmLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkV4dGVybmFsQ29tcG9uZW50T3V0KGV2OiBldmVudE91dCkge1xyXG4gICAgaWYgKGV2LkJlaGF2aW91cnMuaW5kZXhPZihcInNlbmQtb3V0XCIpICE9IC0xKSB7IHRoaXMub3V0LmVtaXQoZXYpOyB9XHJcbiAgICBpZiAoZXYuQmVoYXZpb3Vycy5pbmRleE9mKFwiY2xvc2UtbW9kYWxcIikgIT0gLTEpIHsgdGhpcy5jbG9zZVFFTW9kYWwoKTsgfVxyXG4gICAgaWYgKGV2LkJlaGF2aW91cnMuaW5kZXhPZihcInNhdmUtcXVlcnlcIikgIT0gLTEpIHtcclxuXHJcbiAgICAgIHRoaXMudHJlYXREYXRhRnJvbVF1ZXJ5RWRpdG9yKGV2LlBhcmFtcyk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHJlYXREYXRhRnJvbVF1ZXJ5RWRpdG9yKGRhdGE6IGFueSkge1xyXG4gICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSA9IGRhdGE7XHJcbiAgICB0aGlzLmNyZWF0ZUNvbHVtbktleXMoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVDb2x1bW5LZXlzKGRhdGEpIHtcclxuICAgIGlmIChkYXRhID09IG51bGwgJiYgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBudWxsKSB7IGRhdGEgPSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlOyB9XHJcbiAgICBpZiAoZGF0YSA9PSBudWxsIHx8IHR5cGVvZiBkYXRhID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XHJcblxyXG4gICAgLy8gVjIgKERhdGFHZXR0ZXJDb2RlVmVyc2lvbiA9PT0gMik6IHNlbGVjdGVkRmllbGRzIMOoIGRlbnRybyBxdWVyeUNvbW1hbmREYXRhYmFzZUNvbmZpZ3VyYXRpb25cclxuICAgIGNvbnN0IGlzVjIgPSBkYXRhLkRhdGFHZXR0ZXJDb2RlVmVyc2lvbiA9PT0gMjtcclxuICAgIGNvbnN0IHNlbGVjdGVkRmllbGRzID0gaXNWMlxyXG4gICAgICA/IGRhdGEucXVlcnlDb21tYW5kRGF0YWJhc2VDb25maWd1cmF0aW9uPy5zZWxlY3RlZEZpZWxkc1xyXG4gICAgICA6IGRhdGEuc2VsZWN0ZWRGaWVsZHM7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkRmllbGRzICE9IG51bGwgJiYgdHlwZW9mIHNlbGVjdGVkRmllbGRzICE9IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgdGhpcy5jb2x1bW5LZXlzID0gbmV3IEFycmF5PHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4oKTtcclxuICAgICAgc2VsZWN0ZWRGaWVsZHMuZm9yRWFjaCgoa2V5KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSBrZXkuQ3VycmVudFRyYW5zbGF0ZSB8fCBrZXkuUHJvcGVydHlOYW1lO1xyXG4gICAgICAgIHRoaXMuY29sdW1uS2V5cy5wdXNoKHsga2V5OiBrZXkuRGF0YWJhc2VUYWJsZU5hbWUgKyBcIl9cIiArIGtleS5Qcm9wZXJ0eU5hbWUgKyBcIl9fXCIgKyBsYWJlbC5yZXBsYWNlKFwiIFwiLCBcIl9cIiksIHZhbHVlOiBsYWJlbCB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBEQiBHRVRURVJcclxuXHJcbiAgZ2V0QWxsTW9kdWxlcygpIHtcclxuICAgIGNvbnN0IGR5bmFtaWNNb2R1bGVQYXJhbXM6IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4gPVxyXG4gICAgICBuZXcgQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPigpO1xyXG4gICAgZHluYW1pY01vZHVsZVBhcmFtcy5wdXNoKHtcclxuICAgICAgUGFyYW1OYW1lOiBcIm9yZ2FpZFwiLFxyXG4gICAgICBQYXJhbVZhbHVlOiB0aGlzLmZvcm0uT3JnYUlELFxyXG4gICAgICBQYXJhbVR5cGU6IFBhcmFtVHlwZUVudW1bXCJRdWVyeSBwYXJhbVwiXSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy51dGlsaXR5SGVscGVyU2VydmljZS5SdW5FbmRQb2ludENhbGwoXHJcbiAgICAgIHRoaXMuZW5kUG9pbnRDb25maWd1cmF0aW9uLkZvcm1zLkdldEFsbEZvcm1FbmRQb2ludCxcclxuICAgICAgZHluYW1pY01vZHVsZVBhcmFtcyxcclxuICAgICAgKHJlczogQXJyYXk8Rm9ybT4pID0+IHtcclxuICAgICAgICB0aGlzLmZvcm1zID0gcmVzO1xyXG4gICAgICAgIHRoaXMuZm9ybXMgPSB0aGlzLmZvcm1zLnNvcnQoKHVubywgZHVlKSA9PiB1bm8uTmFtZS5sb2NhbGVDb21wYXJlKGR1ZS5OYW1lKSk7XHJcblxyXG4gICAgICAgIHRoaXMuRE1GaWVsZCA9IG51bGw7XHJcbiAgICAgICAgaWYgKHRoaXMuRE1Nb2R1bGUgPT0gbnVsbCAmJiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuRE1Nb2R1bGUgPSB0aGlzLmZvcm1zLmZpbmQoeCA9PiB4LkNvZGUgPT0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSk7XHJcbiAgICAgICAgICB0aGlzLkRNTW9kdWxlLkZpZWxkcyA9IEpTT04ucGFyc2UodGhpcy5ETU1vZHVsZS5Kc29uRmllbGRzKTtcclxuICAgICAgICAgIHRoaXMuRE1GaWVsZHMgPSBuZXcgQXJyYXk8eyBrZXk6IHN0cmluZyB9PigpO1xyXG4gICAgICAgICAgdGhpcy5ETU1vZHVsZS5GaWVsZHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ETUZpZWxkcy5wdXNoKHsga2V5OiBlbGVtZW50LlZhbHVlLk5hbWUgfSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB0aGlzLkRNRmllbGRzID0gdGhpcy5ETUZpZWxkcy5zb3J0KCh1bm8sIGR1ZSkgPT4gdW5vLmtleS5sb2NhbGVDb21wYXJlKGR1ZS5rZXkpKTtcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuRE1GaWVsZCA9IHRoaXMuRE1GaWVsZHMuZmluZCh4ID0+IHgua2V5ID09IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0sXHJcbiAgICAgIChlcnIpID0+IHsgfVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlRE1Nb2R1bGUoKSB7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwidGhpcy4uZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWVcIiwgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwidGhpcy5ETU1vZHVsZVwiLCB0aGlzLkRNTW9kdWxlKTtcclxuICAgIGlmICh0aGlzLkRNTW9kdWxlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5ETU1vZHVsZS5GaWVsZHMgPSBKU09OLnBhcnNlKHRoaXMuRE1Nb2R1bGUuSnNvbkZpZWxkcyk7XHJcbiAgICAgIHRoaXMuRE1GaWVsZHMgPSBuZXcgQXJyYXk8eyBrZXk6IHN0cmluZyB9PigpO1xyXG4gICAgICB0aGlzLkRNTW9kdWxlLkZpZWxkcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIHRoaXMuRE1GaWVsZHMucHVzaCh7IGtleTogZWxlbWVudC5WYWx1ZS5OYW1lIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgPSB0aGlzLkRNTW9kdWxlLkNvZGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLkRNTW9kdWxlID0gbnVsbDtcclxuICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuRE1GaWVsZCA9IG51bGw7XHJcbiAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VETUZpZWxkKCkge1xyXG4gICAgaWYgKHRoaXMuRE1GaWVsZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPSB0aGlzLkRNRmllbGQua2V5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZURNQ29udGVzdHVhbGl6YXRpb24oKSB7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwib25DaGFuZ2VETUNvbnRlc3R1YWxpemF0aW9uKClcIiwgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb250ZXN0dWFsaXphdGlvbik7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VkQnV0dG9uRmllbGQoZmllbGQ6IEFjdGlvbkJ1dHRvbkZpZWxkKSB7XHJcbiAgICB0aGlzLmZpZWxkID0gZmllbGQ7XHJcbiAgfVxyXG5cclxuICBjb25maWd1cmVGaWVsZHNFeHRyYSgpIHtcclxuXHJcbiAgICB2YXIgdGhpc0ZpZWxkRXh0cmFDb25maWdWYWx1ZXM6IEFycmF5PEZpZWxkRXh0cmFWYWx1ZXM+ID0gdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzID09IG51bGwgPyBudWxsIDogdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzLmZpbHRlcih4ID0+IHguRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPT0gdGhpcy5maWVsZC5OYW1lKTtcclxuXHJcbiAgICBpZiAodGhpcy5maWVsZHNFeHRyYUNvbmZpZyAhPSBudWxsICYmIHRoaXMuZmllbGRzRXh0cmFDb25maWcubGVuZ3RoID4gMCAmJiB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgPT0gbnVsbCAmJiAodGhpc0ZpZWxkRXh0cmFDb25maWdWYWx1ZXMgPT0gbnVsbCB8fCB0aGlzRmllbGRFeHRyYUNvbmZpZ1ZhbHVlcy5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzID0gbmV3IEFycmF5PGFueT4oKTtcclxuICAgICAgdGhpc0ZpZWxkRXh0cmFDb25maWdWYWx1ZXMgPSBuZXcgQXJyYXk8RmllbGRFeHRyYVZhbHVlcz4oKTtcclxuICAgICAgdGhpcy5maWVsZHNFeHRyYUNvbmZpZy5mb3JFYWNoKChmaWVsZEV4dHJhQ29uZmlnKSA9PiB7XHJcblxyXG4gICAgICAgIHZhciBuZXdmaWVsZDogRmllbGRFeHRyYVZhbHVlcyA9IG5ldyBGaWVsZEV4dHJhVmFsdWVzKCk7XHJcbiAgICAgICAgbmV3ZmllbGQuRmllbGRDb25maWdDb2RlID0gZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ0NvZGU7XHJcbiAgICAgICAgbmV3ZmllbGQuRmllbGRDb25maWdQYXJlbnRGaWVsZENvZGUgPSB0aGlzLmZpZWxkLk5hbWU7XHJcblxyXG4gICAgICAgIGlmIChmaWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydCb29sZWFubyddKSB7XHJcbiAgICAgICAgICBuZXdmaWVsZC5GaWVsZENvbmZpZ1ZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChmaWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnVHlwZSA9PSBGaWVsZFR5cGVFbnVtWydDYW1wbyBkaSB0ZXN0byddKSB7XHJcbiAgICAgICAgICBuZXdmaWVsZC5GaWVsZENvbmZpZ1ZhbHVlID0gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcy5wdXNoKG5ld2ZpZWxkKTtcclxuICAgICAgICB0aGlzRmllbGRFeHRyYUNvbmZpZ1ZhbHVlcy5wdXNoKG5ld2ZpZWxkKTtcclxuXHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9PSBudWxsKSB7IHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IG5ldyBBcnJheTxGaWVsZEV4dHJhVmFsdWVzPigpOyB9XHJcbiAgICAgIHRoaXNGaWVsZEV4dHJhQ29uZmlnVmFsdWVzLmZvckVhY2goKGVjdikgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcy5wdXNoKGVjdik7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpZWxkc0V4dHJhQ29uZmlnICE9IG51bGwgJiYgdGhpcy5maWVsZHNFeHRyYUNvbmZpZy5sZW5ndGggPiAwICYmIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyAhPSBudWxsICYmICh0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgPT0gbnVsbCB8fCB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMubGVuZ3RoID09IDApKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcy5mb3JFYWNoKChleHRyYWZpZWxkKSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzLnB1c2goZXh0cmFmaWVsZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubG9hZGVkRmllbGRFeHRyYSA9IHRydWU7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8bWF0LWNhcmQgY2xhc3M9XCJhZGQtZm9ybS1maWVsZFwiPlxyXG5cclxuICAgIDwhLS0jcmVnaW9uIEhFQURFUiBjb24gc2ZvbmRvIC0tPlxyXG4gICAgPG1hdC1jYXJkLWhlYWRlciBjbGFzcz1cImFkZC1maWVsZC1oZWFkZXIgdy0xMDBcIj5cclxuICAgICAgICA8bWF0LWNhcmQtdGl0bGUgY2xhc3M9XCJ3LTEwMCBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmRleEZpZWxkICE9IG51bGwgJiYgaW5kZXhGaWVsZCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBiZy1kYW5nZXIgdGV4dC13aGl0ZVwiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUFuZEV4aXRBZGRGaWVsZChmYWxzZSwgLTEpXCI+4oaQIEFubnVsbGE8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBiZy1zdWNjZXNzIHRleHQtd2hpdGVcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVBbmRFeGl0QWRkRmllbGQodHJ1ZSwgLTEpXCI+4oaQIFNhbHZhPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZGVyLXRpdGxlXCIgbWF0VG9vbHRpcD1cIkluZGV4IHt7aW5kZXhGaWVsZH19XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBpbmRleEZpZWxkICE9IG51bGwgJiYgaW5kZXhGaWVsZCA+PSAwID8gXCJNb2RpZmljYVwiIDogXCJBZ2dpdW5naVwiIH19IGNhbXBvXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV4RmllbGQgIT0gbnVsbCAmJiBpbmRleEZpZWxkID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJnLWRhbmdlciB0ZXh0LXdoaXRlXCIgbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlQW5kRXhpdEFkZEZpZWxkKGZhbHNlLCAxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpbmRleEZpZWxkID09IHRoaXMuZm9ybS5GaWVsZHMubGVuZ3RoIC0gMSA/IFwiQW5udWxsYSBlIGFnZ2l1bmdpXCIgOiBcIkFubnVsbGEg4oaSXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBiZy1zdWNjZXNzIHRleHQtd2hpdGVcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVBbmRFeGl0QWRkRmllbGQodHJ1ZSwgMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaW5kZXhGaWVsZCA9PSB0aGlzLmZvcm0uRmllbGRzLmxlbmd0aCAtIDEgPyBcIlNhbHZhIGUgYWdnaXVuZ2lcIiA6IFwiU2FsdmEg4oaSXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxyXG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBIRUFERVIgLS0+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkLWFpLWFjdGlvbnMtcm93XCI+XHJcbiAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tYWktZmllbGRcIiAoY2xpY2spPVwib25PcGVuQWlFZGl0Rm9yRmllbGQoKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIE1vZGlmaWNhIGNvbiBBSVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZCBjb250YWluZXJDb250ZW50XCI+XHJcbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBBUkVBIFBSSU5DSVBBTEUgKDIgcmlnaGUgY29tcGF0dGUpIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZXFwLWRmb3JtLWFkZC1mb3JtLWZpZWxkLW1haW5cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gUklHQSAxOiBUaXBvLCBDb2RpY2UsIERlc2NyaXppb25lLCBTZXppb25lIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMSB0aXBvQ2FtcG9cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBbbmdDbGFzc109XCJ7J3RleHQtZGFuZ2VyJzogZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0ZpZWxkVHlwZSddLnN0YXR1cyAhPSAnVkFMSUQnICYmIGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydGaWVsZFR5cGUnXS50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBjYW1wbyAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiRmllbGRUeXBlRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5GaWVsZFR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRmllbGRUeXBlQ2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidGaWVsZFR5cGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbnVtRGF0YVRvRXhjbHVkZV09XCJmaWVsZFR5cGVzVG9FeGNsdWRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwieyd0ZXh0LWRhbmdlcic6IGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydMYWJlbCddLnN0YXR1cyAhPSAnVkFMSUQnICYmIGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydMYWJlbCddLnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2RpY2UgKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkxhYmVsXCIgcmVxdWlyZWQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25MYWJlbENoYW5nZUZvclByZXZpZXcoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuTGFiZWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0xhYmVsJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5PYmJsaWdhdG9yaW88L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTGFiZWwnXS5lcnJvcnM/LlsncGF0dGVybiddXCI+U29sbyBsZXR0ZXJlIGEtejwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydMYWJlbCddLmVycm9ycz8uWydNaXNzaW5nIFBhcmVudGhlc2lzJ11cIj5QYXJlbnRlc2kgbm9uIGNoaXVzZTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBbbmdDbGFzc109XCJ7J3RleHQtZGFuZ2VyJzogZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0Rlc2NyaXB0aW9uJ10uc3RhdHVzICE9ICdWQUxJRCcgJiYgZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0Rlc2NyaXB0aW9uJ10udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXppb25lICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRGVzY3JpcHRpb25cIiBmb3JtQ29udHJvbE5hbWU9XCJEZXNjcmlwdGlvblwiIHJlcXVpcmVkIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5EZXNjcmlwdGlvblwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkRlc2NyaXB0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydEZXNjcmlwdGlvbiddLmVycm9ycz8uWydyZXF1aXJlZCddXCI+T2JibGlnYXRvcmlvPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0Rlc2NyaXB0aW9uJ10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMVwiICpuZ0lmPVwiZm9ybUZpZWxkc0dyb3Vwc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIFtuZ0NsYXNzXT1cInsndGV4dC1kYW5nZXInOiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRmllbGRHcm91cCddLnN0YXR1cyAhPSAnVkFMSUQnICYmIGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydGaWVsZEdyb3VwJ10udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlemlvbmUgKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJmb3JtRmllbGRzR3JvdXBzXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkZpZWxkR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ05hbWUnXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInTmFtZSdcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidGaWVsZEdyb3VwJ1wiIHJlcXVpcmVkIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gUklHQSAxIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBSSUdBIDI6IFRvZ2dsZSArIFJlYWRPbmx5IElmICsgQWdncmVnYXppb25pIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMSBhbGlnbi1zZWxmLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLlJlcXVpcmVkXCIgZm9ybUNvbnRyb2xOYW1lPVwiUmVxdWlyZWRcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iYmxpZ2F0b3Jpb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMSBhbGlnbi1zZWxmLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLlJlYWRvbmx5XCIgZm9ybUNvbnRyb2xOYW1lPVwiUmVhZG9ubHlcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkT25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlJlYWRPbmx5IElmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJSZWFkb25seUlmXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5SZWFkb25seUlmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlblJlYWRPbmx5SWZEaWFsb2coKVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlJlYWRvbmx5SWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMSBhbGlnbi1zZWxmLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCAqbmdJZj1cImFnZ3JlZ2F0aW9uRmllbGRMb2FkZWRcIiBbcGxhY2Vob2xkZXJdPVwiJ0FnZ3JlZ2F6aW9uaSdcIiBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbnVtRGF0YV09XCJhZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5BZ2dyZWdhdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIFJJR0EgMiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEFSRUEgUFJJTkNJUEFMRSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBBUkVBIFRBQlMgLS0+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXRhYi1ncm91cCBjbGFzcz1cImVxcC1kZm9ybS1hZGQtZm9ybS1maWVsZC10YWJzXCIgbWF0LXN0cmV0Y2gtdGFicz1cImZhbHNlXCIgbWF0LWFsaWduLXRhYnM9XCJzdGFydFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBTVElMRSBDT01QSUxBWklPTkUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJTdGlsZSBDb21waWxhemlvbmVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIHRpcGkgTk9OIFRleHRGaWVsZCwgTk9OIE51bWVyaWNGaWVsZCwgTk9OIFRleHRhcmVhRmllbGQsIE5PTiBCb29sZWFuRmllbGQsIE5PTiBBdHRhY2htZW50RmllbGQsIE5PTiBMYWJlbEZpZWxkLCBOT04gRGF0ZUZpZWxkLCBOT04gQWN0aW9uQnV0dG9uRmllbGQsIE5PTiBJbWFnZUZpZWxkLCBOT04gSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkLCBOT04gTGlzdFZhbHVlRmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZXh0RmllbGQgJiYgIWlzTnVtZXJpY0ZpZWxkICYmICFpc1RleHRhcmVhRmllbGQgJiYgIWlzQm9vbGVhbkZpZWxkICYmICFpc0F0dGFjaG1lbnRGaWVsZCAmJiAhaXNMYWJlbEZpZWxkICYmICFpc0RhdGVGaWVsZCAmJiAhaXNBY3Rpb25CdXR0b25GaWVsZCAmJiAhaXNJbWFnZUZpZWxkICYmICFpc0ltYWdlV2l0aE1hcmtlcnNGaWVsZCAmJiAhaXNMaXN0VmFsdWVGaWVsZCAmJiAhaXNJbWFnZVNlbGVjdG9yRmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmFsZS1zZWN0aW9uLXRpdGxlXCI+R2VuZXJhbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTGFiZWxzdHlsZUNTUyBlIEZpZWxkc3R5bGVDU1M6IG5hc2Nvc3RpLCBtYW50ZW51dGkgcGVyIHJldHJvY29tcGF0aWJpbGl0w6AgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5GaWVsZHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSW5MaXN0Vmlld1wiIGZvcm1Db250cm9sTmFtZT1cIkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVmlzaWJsZUlmXCIgKGNsaWNrKT1cIm9wZW5WaXNpYmxlSWZEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VG9vbHRpcDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJUb29sdGlwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlRvb2x0aXBcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5Jbkxpc3RWaWV3ICYmIChmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JbnZpc2liaWxpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJbnZpc2liaWxpdHknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWFpbnRhaW5fVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbnRhaW5fVmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYWludGFpbl9WYWx1ZSddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW50aWVuaSBpbCB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgVGV4dEZpZWxkOiBzZXppb25lIEdlbmVyYWxlICsgc2V6aW9uZSBHcmFmaWNhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZXh0RmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmFsZS1zZWN0aW9uLXRpdGxlXCI+R2VuZXJhbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTGFiZWxzdHlsZUNTUyBlIEZpZWxkc3R5bGVDU1M6IG5hc2Nvc3RpLCBtYW50ZW51dGkgcGVyIHJldHJvY29tcGF0aWJpbGl0w6AgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5GaWVsZHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSW5MaXN0Vmlld1wiIGZvcm1Db250cm9sTmFtZT1cIkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVmlzaWJsZUlmXCIgKGNsaWNrKT1cIm9wZW5WaXNpYmxlSWZEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VG9vbHRpcDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJUb29sdGlwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlRvb2x0aXBcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5Jbkxpc3RWaWV3ICYmIChmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSW52aXNpYmlsaXR5XCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWFpbnRhaW5fVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbnRhaW5fVmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYWludGFpbl9WYWx1ZSddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW50aWVuaSBpbCB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwidGV4dEZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZFRleHRGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkVGV4dEZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIHRleHRGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRUZXh0RmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZFRleHRGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgTnVtZXJpY0ZpZWxkOiBzZXppb25lIEdlbmVyYWxlICsgc2V6aW9uZSBHcmFmaWNhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNOdW1lcmljRmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmFsZS1zZWN0aW9uLXRpdGxlXCI+R2VuZXJhbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTGFiZWxzdHlsZUNTUyBlIEZpZWxkc3R5bGVDU1M6IG5hc2Nvc3RpLCBtYW50ZW51dGkgcGVyIHJldHJvY29tcGF0aWJpbGl0w6AgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5GaWVsZHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSW5MaXN0Vmlld1wiIGZvcm1Db250cm9sTmFtZT1cIkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVmlzaWJsZUlmXCIgKGNsaWNrKT1cIm9wZW5WaXNpYmxlSWZEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VG9vbHRpcDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJUb29sdGlwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlRvb2x0aXBcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5Jbkxpc3RWaWV3ICYmIChmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSW52aXNpYmlsaXR5XCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWFpbnRhaW5fVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbnRhaW5fVmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYWludGFpbl9WYWx1ZSddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW50aWVuaSBpbCB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwibnVtZXJpY0ZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZE51bWVyaWNGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkTnVtZXJpY0ZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIG51bWVyaWNGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXROdW1lcmljU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkTnVtZXJpY0ZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXROdW1lcmljU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkTnVtZXJpY0ZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBUZXh0YXJlYUZpZWxkOiBzZXppb25lIEdlbmVyYWxlICsgc2V6aW9uZSBHcmFmaWNhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNUZXh0YXJlYUZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhbGUtc2VjdGlvbi10aXRsZVwiPkdlbmVyYWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExhYmVsc3R5bGVDU1MgZSBGaWVsZHN0eWxlQ1NTOiBuYXNjb3N0aSwgbWFudGVudXRpIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cInRleHRhcmVhRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkVGV4dGFyZWFGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkVGV4dGFyZWFGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiB0ZXh0YXJlYUZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldFRleHRhcmVhU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkVGV4dGFyZWFGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0VGV4dGFyZWFTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRUZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBCb29sZWFuRmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0Jvb2xlYW5GaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMYWJlbHN0eWxlQ1NTIGUgRmllbGRzdHlsZUNTUzogbmFzY29zdGksIG1hbnRlbnV0aSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JbnZpc2liaWxpdHlcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJbnZpc2liaWxpdHknXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJib29sZWFuRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkQm9vbGVhbkZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRCb29sZWFuRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgYm9vbGVhbkZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldEJvb2xlYW5TdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRCb29sZWFuRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEJvb2xlYW5TdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRCb29sZWFuRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIERhdGVGaWVsZDogc2V6aW9uZSBHZW5lcmFsZSArIHNlemlvbmUgR3JhZmljYSAoNSBlbGVtZW50aSwgNSBzdGF0aSkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0RhdGVGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImRhdGVGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWREYXRlRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZERhdGVGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBkYXRlRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0RGF0ZVN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZERhdGVGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0RGF0ZVN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZERhdGVGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgTGFiZWxGaWVsZDogc2V6aW9uZSBHZW5lcmFsZSArIHNlemlvbmUgR3JhZmljYSAoMSBlbGVtZW50bywgMiBzdGF0aSkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xhYmVsRmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmFsZS1zZWN0aW9uLXRpdGxlXCI+R2VuZXJhbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JbnZpc2liaWxpdHlcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJbnZpc2liaWxpdHknXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJsYWJlbEZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZExhYmVsRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZExhYmVsRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgbGFiZWxGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRMYWJlbFN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZExhYmVsRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldExhYmVsU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkTGFiZWxGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgQXR0YWNobWVudEZpZWxkOiBzZXppb25lIEdlbmVyYWxlICsgc2V6aW9uZSBHcmFmaWNhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBdHRhY2htZW50RmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmFsZS1zZWN0aW9uLXRpdGxlXCI+R2VuZXJhbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JbnZpc2liaWxpdHlcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJbnZpc2liaWxpdHknXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdHRhY2htZW50RmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkQXR0YWNobWVudEZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRBdHRhY2htZW50RmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgYXR0YWNobWVudEZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldEF0dGFjaG1lbnRTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRBdHRhY2htZW50RmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEF0dGFjaG1lbnRTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRBdHRhY2htZW50RmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIEFjdGlvbkJ1dHRvbkZpZWxkOiBzZXppb25lIEdyYWZpY2EgKDMgZWxlbWVudGksIDMgc3RhdGkpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBY3Rpb25CdXR0b25GaWVsZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRBY3Rpb25CdXR0b25GaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBhY3Rpb25CdXR0b25GaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRBY3Rpb25CdXR0b25TdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRBY3Rpb25CdXR0b25GaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0QWN0aW9uQnV0dG9uU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkQWN0aW9uQnV0dG9uRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIEltYWdlRmllbGQ6IHNlemlvbmUgR3JhZmljYSAoMyBlbGVtZW50aSwgMiBzdGF0aSkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ltYWdlRmllbGRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJpbWFnZUZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZEltYWdlRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZEltYWdlRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgaW1hZ2VGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRJbWFnZVN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEltYWdlRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEltYWdlU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkSW1hZ2VGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkOiBzZXppb25lIEdyYWZpY2EgKDMgZWxlbWVudGksIDIgc3RhdGkpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJbWFnZVdpdGhNYXJrZXJzRmllbGRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJpbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldEltYWdlV2l0aE1hcmtlcnNTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEltYWdlV2l0aE1hcmtlcnNTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIExpc3RWYWx1ZUZpZWxkOiBzZXppb25lIEdyYWZpY2EgKGVsZW1lbnRpIGRpbmFtaWNpIHBlciBtb2RhbGl0w6AsIDUgc3RhdGkpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMaXN0VmFsdWVGaWVsZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImxpc3RWYWx1ZUZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZExpc3RWYWx1ZUZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRMaXN0VmFsdWVGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBsaXN0VmFsdWVTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TGlzdFZhbHVlU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkTGlzdFZhbHVlRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldExpc3RWYWx1ZVN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZExpc3RWYWx1ZUZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBJbWFnZVNlbGVjdG9yRmllbGQ6IHNlemlvbmUgR3JhZmljYSAoMyBlbGVtZW50aSwgNSBzdGF0aSkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ltYWdlU2VsZWN0b3JGaWVsZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImltYWdlU2VsZWN0b3JGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRJbWFnZVNlbGVjdG9yRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBpbWFnZVNlbGVjdG9yRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0SW1hZ2VTZWxlY3RvclN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0SW1hZ2VTZWxlY3RvclN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gU1RJTEUgQ09NUElMQVpJT05FIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBTVElMRSBSSVNQT1NUQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlN0aWxlIFJpc3Bvc3RhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNSaXNwb3N0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5BbnN3ZXJTdHlsZS5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQW5zd2VyU3R5bGVDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhYmVsIGNzczwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJBbnN3ZXJTdHlsZUxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJBbnN3ZXJTdHlsZUxhYmVsc3R5bGVDU1NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5BbnN3ZXJTdHlsZS5MYWJlbHN0eWxlQ1NTXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuQW5zd2VyU3R5bGUuTGFiZWxzdHlsZUNTUylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkZpZWxkIGNzczwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJBbnN3ZXJTdHlsZUZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJBbnN3ZXJTdHlsZUZpZWxkc3R5bGVDU1NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5BbnN3ZXJTdHlsZS5GaWVsZHN0eWxlQ1NTXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuQW5zd2VyU3R5bGUuRmllbGRzdHlsZUNTUylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuQW5zd2VyU3R5bGUuSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIkFuc3dlclN0eWxlSW5MaXN0Vmlld1wiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snQW5zd2VyU3R5bGVJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5BbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgIGRlbCBjYW1wb1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQW5zd2VyU3R5bGUuSW52aXNpYmlsaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidBbnN3ZXJTdHlsZUludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkFuc3dlclN0eWxlVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiQW5zd2VyU3R5bGVWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5BbnN3ZXJTdHlsZVZpc2libGVJZkRpYWxvZygpXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtdGFiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIFNUSUxFIFJJU1BPU1RBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBTUEVDSUZJQ0hFIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiU3BlY2lmaWNoZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmllbGRUeXBlRm9ybVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtdGFiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIFNQRUNJRklDSEUgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIE1PREFMSVRBJyBSRUNVUEVSTyBEQVRJIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiTW9kYWxpdMOgIHJlY3VwZXJvIGRhdGlcIiAqbmdJZj1cImZpZWxkLkZpZWxkVHlwZSAhPSBGaWVsZFR5cGVFbnVtWydCb3R0b25lIGF6aW9uZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJkYXRhR2V0dGVyVHlwZUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25EYXRhR2V0dGVyVHlwZUNoYW5nZSgpXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0RhdGFHZXR0ZXJUeXBlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlICE9IGRhdGFHZXR0ZXJUeXBlRW51bS5NYW51YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmUgZGkgRGVmYXVsdDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkRhdGFHZXR0ZXJWYWx1ZVwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSAhPSBkYXRhR2V0dGVyVHlwZUVudW0uRm9ybXVsYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Rm9ybXVsYSAoSmF2YXNjcmlwdCk8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJGb3JtdWxhXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5Gb3JtdWxhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRm9ybXVsYURpYWxvZygpXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuRm9ybXVsYSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gZGF0YUdldHRlclR5cGVFbnVtWydEYSBkYXRhYmFzZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC00IGNvbmZpZ3VyYVF1ZXJ5RWRpdG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTBcIj5Db25maWd1cmEgaW4gUXVlcnkgRWRpdG9yPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5EQkdldHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSA9PSBudWxsXCI+UHJvY2VkaTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwib3BlbkRCR2V0dGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGxcIj5Nb2RpZmljYTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5TZWxlemlvbmEgY29sb25uYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJjb2x1bW5LZXlzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5QdWxzYW50ZSByZXNldD88L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySGFzUmVzZXRCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJEYXRhR2V0dGVySGFzUmVzZXRCdXR0b25cIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBkYXRhR2V0dGVyVHlwZUVudW1bJ0RhIG1vZHVsbyBkaW5hbWljbyddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtdC00XCIgKm5nSWY9XCJmb3Jtcy5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPk1vZHVsbzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidTZWxlemlvbmEgbW9kdWxvJ1wiIFthcnJheURhdGFdPVwiZm9ybXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiRE1Nb2R1bGVcIiBbaXNTZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInQ29kZSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInRE1Nb2R1bGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNoYW5nZURNTW9kdWxlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBudWxsICYmIERNTW9kdWxlICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPkNhbXBvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGV6aW9uYSBjYW1wbydcIiBbYXJyYXlEYXRhXT1cIkRNRmllbGRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cIkRNRmllbGRcIiBbaXNTZWFyY2hhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0RNRmllbGQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNoYW5nZURNRmllbGQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+Q2FyZGluYWxpdMOgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiRE1HZXR0ZXJDYXJkaW5hbGl0aWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNhcmRpbmFsaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPkNvbnRlc3R1YWxpenphemlvbmU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiY29udGVzdHVhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInZW50aXR5VGFibGVOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2VudGl0eVRhYmxlTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29udGVzdHVhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNoYW5nZURNQ29udGVzdHVhbGl6YXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gTU9EQUxJVEEnIFJFQ1VQRVJPIERBVEkgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEVYVFJBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiRXh0cmFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkc0V4dHJhQ29uZmlnICE9IG51bGwgJiYgZmllbGRzRXh0cmFDb25maWcubGVuZ3RoID4gMCAmJiBsb2FkZWRGaWVsZEV4dHJhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZmllbGRFeHRyYUNvbmZpZ1wiICpuZ0Zvcj1cImxldCBmaWVsZEV4dHJhQ29uZmlnIG9mIGZpZWxkc0V4dHJhQ29uZmlnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR5bmFtaWMtbW9kdWxlLWZpZWxkLWV4dHJhLWZpeCAjZmllbGRFeHRyYUNvbmZpZ1RlbXBsYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZEV4dHJhQ29uZmlnXT1cImZpZWxkRXh0cmFDb25maWdcIiBbZm9ybV09XCJmb3JtXCIgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R5bmFtaWMtbW9kdWxlLWZpZWxkLWV4dHJhLWZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gRVhUUkEgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9tYXQtdGFiLWdyb3VwPlxyXG4gICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gQVJFQSBUQUJTIC0tPlxyXG5cclxuICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxyXG5cclxuICAgIDxtYXQtY2FyZC1mb290ZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gcHgtMyBweS0yIGZvb3Rlci1yb3dcIj5cclxuICAgICAgICAgICAgPCEtLSBBbnRlcHJpbWEgbGl2ZSAoVGV4dEZpZWxkLCBOdW1lcmljRmllbGQsIFRleHRhcmVhRmllbGQsIEJvb2xlYW5GaWVsZCwgQXR0YWNobWVudEZpZWxkLCBMYWJlbEZpZWxkLCBEYXRlRmllbGQsIEFjdGlvbkJ1dHRvbkZpZWxkLCBMaXN0VmFsdWVGaWVsZCkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3LWFyZWFcIiAqbmdJZj1cIihpc1RleHRGaWVsZCB8fCBpc051bWVyaWNGaWVsZCB8fCBpc1RleHRhcmVhRmllbGQgfHwgaXNCb29sZWFuRmllbGQgfHwgaXNBdHRhY2htZW50RmllbGQgfHwgaXNMYWJlbEZpZWxkIHx8IGlzRGF0ZUZpZWxkIHx8IGlzQWN0aW9uQnV0dG9uRmllbGQgfHwgaXNMaXN0VmFsdWVGaWVsZCB8fCBpc0ltYWdlU2VsZWN0b3JGaWVsZCkgJiYgKGlzQWN0aW9uQnV0dG9uRmllbGQgfHwgKGZpZWxkPy5Gb3JtRm9ybUdyb3VwICYmIHByZXZpZXdSZWNvcmQpKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbWItMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJldmlldy1sYWJlbFwiPkFudGVwcmltYTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBbKG5nTW9kZWwpXT1cInByZXZpZXdGb3JjZVN0YXRlXCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1zZWxlY3QgZm9ybS1zZWxlY3Qtc20gcHJldmlldy1zdGF0ZS1zZWxlY3RcIiBzdHlsZT1cIndpZHRoOiAxMzBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCI+QXV0bzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiTm9ybWFsZVwiPk5vcm1hbGU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIk1vdXNlb3ZlclwiPk1vdXNlIFNvcHJhPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJGb2N1c2VkXCIgKm5nSWY9XCIhaXNBdHRhY2htZW50RmllbGQgJiYgIWlzTGFiZWxGaWVsZCAmJiAhaXNBY3Rpb25CdXR0b25GaWVsZCAmJiAhaXNMaXN0VmFsdWVGaWVsZCAmJiAhaXNJbWFnZVNlbGVjdG9yRmllbGRcIj5TZWxlemlvbmF0bzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiU2VsZXppb25hdG9cIiAqbmdJZj1cImlzQWN0aW9uQnV0dG9uRmllbGQgfHwgaXNMaXN0VmFsdWVGaWVsZCB8fCBpc0ltYWdlU2VsZWN0b3JGaWVsZFwiPlNlbGV6aW9uYXRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJOb3RWYWxpZFwiICpuZ0lmPVwiIWlzQm9vbGVhbkZpZWxkICYmICFpc0xhYmVsRmllbGQgJiYgIWlzQWN0aW9uQnV0dG9uRmllbGRcIj5Ob24gVmFsaWRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJSZWFkb25seVwiICpuZ0lmPVwiIWlzTGFiZWxGaWVsZCAmJiAhaXNBY3Rpb25CdXR0b25GaWVsZFwiPlNvbGEgTGV0dHVyYTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3Qtc21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlN1Z2dlcmlzY2kgZ3JhZmljYSBjb24gQUlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxMlwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlXCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIHN0eWxlPVwiZm9udC1zaXplOjE2cHg7d2lkdGg6MTZweDtoZWlnaHQ6MTZweFwiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5TdWdnZXJpc2NpPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDx0ZXh0LWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNUZXh0RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L3RleHQtZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bnVtZXJpYy1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cImlzTnVtZXJpY0ZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWNvcmRdPVwicHJldmlld1JlY29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZVZlcnNpb25dPVwic3R5bGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yY2VTdGF0ZV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9udW1lcmljLWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPHRleHRhcmVhLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNUZXh0YXJlYUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWNvcmRdPVwicHJldmlld1JlY29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZVZlcnNpb25dPVwic3R5bGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yY2VTdGF0ZV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC90ZXh0YXJlYS1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxib29sZWFuLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNCb29sZWFuRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2Jvb2xlYW4tZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8YXR0YWNobWVudC1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cImlzQXR0YWNobWVudEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWNvcmRdPVwicHJldmlld1JlY29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZVZlcnNpb25dPVwic3R5bGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yY2VTdGF0ZV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9hdHRhY2htZW50LWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNMYWJlbEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWNvcmRdPVwicHJldmlld1JlY29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZVZlcnNpb25dPVwic3R5bGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yY2VTdGF0ZV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9sYWJlbC1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxkYXRlLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNEYXRlRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2RhdGUtZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8YWN0aW9uLWJ1dHRvbi1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cImlzQWN0aW9uQnV0dG9uRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJ7fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZVZlcnNpb25dPVwic3R5bGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yY2VTdGF0ZV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9hY3Rpb24tYnV0dG9uLWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGxpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc0xpc3RWYWx1ZUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWNvcmRdPVwicHJldmlld1JlY29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZVZlcnNpb25dPVwic3R5bGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yY2VTdGF0ZV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9saXN0LXZhbHVlLWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGltYWdlLWZpZWxkLXNlbGVjdG9yLXRlbXBsYXRlICpuZ0lmPVwiaXNJbWFnZVNlbGVjdG9yRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2ltYWdlLWZpZWxkLXNlbGVjdG9yLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIighaXNUZXh0RmllbGQgJiYgIWlzTnVtZXJpY0ZpZWxkICYmICFpc1RleHRhcmVhRmllbGQgJiYgIWlzQm9vbGVhbkZpZWxkICYmICFpc0F0dGFjaG1lbnRGaWVsZCAmJiAhaXNMYWJlbEZpZWxkICYmICFpc0RhdGVGaWVsZCAmJiAhaXNBY3Rpb25CdXR0b25GaWVsZCAmJiAhaXNMaXN0VmFsdWVGaWVsZCAmJiAhaXNJbWFnZVNlbGVjdG9yRmllbGQpIHx8ICghaXNBY3Rpb25CdXR0b25GaWVsZCAmJiAhZmllbGQ/LkZvcm1Gb3JtR3JvdXApXCI+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIFB1bHNhbnRpIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIG1hdC1yYWlzZWQtYnV0dG9uIGJnLWRhbmdlciB0ZXh0LXdoaXRlIGNhbmNlbFwiIChjbGljayk9XCJzYXZlQW5kRXhpdEFkZEZpZWxkKGZhbHNlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOKdjCBBbm51bGxhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gW2NsYXNzLmJnLXN1Y2Nlc3NdPVwiIWRpc2FibGVTYXZlRmllbGQoKVwiIFtjbGFzcy5iZy1kYW5nZXJdPVwiZGlzYWJsZVNhdmVGaWVsZCgpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtd2hpdGUgc2F2ZVwiIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2F2ZUNsaWNrKClcIiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiZGlzYWJsZVNhdmVGaWVsZCgpXCIgc3R5bGU9XCJmb250LXNpemU6MThweDt3aWR0aDoxOHB4O2hlaWdodDoxOHB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6MnB4XCI+bG9jazwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAg8J+SviBTYWx2YVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtY2FyZC1mb290ZXI+XHJcblxyXG48L21hdC1jYXJkPlxyXG5cclxuXHJcblxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIERJIFRFU1RPIC0tPlxyXG48bmctdGVtcGxhdGUgI3RleHRGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDwhLS0jcmVnaW9uIE1BU0NIRVJBIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtM1wiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+TWFzY2hlcmE8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiVGV4dE1hc2tFbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLlRleHRNYXNrXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidUZXh0TWFzaydcIj5cclxuICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0jZW5kcmVnaW9uIE1BU0NIRVJBIC0tPlxyXG5cclxuICAgIDwhLS0jcmVnaW9uIExVTkdIRVpaQSBNSU5JTUEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwieyd0ZXh0LWRhbmdlcic6IGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNaW5MZW5naHQnXS5zdGF0dXMgIT0gJ1ZBTElEJyAmJiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWluTGVuZ2h0J10udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgTHVuZ2hlenphIG1pbmltYVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwibGVuZ3RoTWluXCIgZm9ybUNvbnRyb2xOYW1lPVwiTWluTGVuZ2h0XCIgdHlwZT1cIm51bWJlclwiIFttaW5dPVwiMFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1pbkxlbmdodFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuTWluTGVuZ2h0KVwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNaW5MZW5naHQnXS5lcnJvcnM/LlsncGF0dGVybiddXCI+SW5zZXJpcmUgdW4gdmFsb3JlIG51bWVyaWNvLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01pbkxlbmdodCddLmVycm9ycz8uWydNaXNzaW5nIFBhcmVudGhlc2lzJ11cIj5QYXJlbnRlc2kgbm9uIGNoaXVzZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSNlbmRyZWdpb24gTFVOR0hFWlpBIE1JTklNQSAtLT5cclxuXHJcbiAgICA8IS0tI3JlZ2lvbiBMVU5HSEVaWkEgTUFTU0lNQSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTNcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBbbmdDbGFzc109XCJ7J3RleHQtZGFuZ2VyJzogZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01heExlbmdodCddLnN0YXR1cyAhPSAnVkFMSUQnICYmIGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYXhMZW5naHQnXS50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICBMdW5naGV6emEgbWFzc2ltYVxyXG4gICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwibGVuZ3RoTWF4XCIgZm9ybUNvbnRyb2xOYW1lPVwiTWF4TGVuZ2h0XCIgdHlwZT1cIm51bWJlclwiIFttaW5dPVwiMFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1heExlbmdodFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuTWF4TGVuZ2h0KVwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYXhMZW5naHQnXS5lcnJvcnM/LlsncGF0dGVybiddXCI+SW5zZXJpcmUgdW4gdmFsb3JlIG51bWVyaWNvLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01heExlbmdodCddLmVycm9ycz8uWydNaXNzaW5nIFBhcmVudGhlc2lzJ11cIj5QYXJlbnRlc2kgbm9uIGNoaXVzZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSNlbmRyZWdpb24gTFVOR0hFWlpBIE1BU1NJTUEgLS0+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gU1BFRUNIIFRPIFRFWFQgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICBbaGlkZGVuXT1cImZpZWxkLlJlYWRvbmx5IHx8IHBsYXRmb3JtICE9ICd3ZWInXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NaWNyb3Bob25lXCIgZm9ybUNvbnRyb2xOYW1lPVwiTWljcm9waG9uZVwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICBTcGVlY2gtVG8tVGV4dFxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSNlbmRyZWdpb24gU1BFRUNIIFRPIFRFWFQgLS0+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gSUNPTkEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cInNob3dUZXh0RmllbGRJY29uXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVGV4dEZpZWxkSWNvblRvZ2dsZSgkZXZlbnQuY2hlY2tlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICBJY29uYVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNFwiICpuZ0lmPVwic2hvd1RleHRGaWVsZEljb25cIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkljb25hIE1hdGVyaWFsPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkljb25OYW1lXCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkljb25OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xkZXI9XCJlcy4gc2VhcmNoLCBwZXJzb24sIGhvbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNFwiICpuZ0lmPVwic2hvd1RleHRGaWVsZEljb25cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+UG9zaXppb25hbWVudG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJUZXh0RmllbGRJY29uUG9zaXRpb25FbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJY29uUG9zaXRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0jZW5kcmVnaW9uIElDT05BIC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgREkgVEVTVE8gLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgRVRJQ0hFVFRBIC0tPlxyXG48bmctdGVtcGxhdGUgI2xhYmVsRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9XCJFdGljaGV0dGFcIiBwbGFjZWhvbGRlcj1cIkV0aWNoZXR0YVwiIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIkV0aWNoZXR0YVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkV0aWNoZXR0YVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgRVRJQ0hFVFRBIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIEFSRUEgREkgVEVTVE8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdGV4dGFyZWFGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlJpZ2hlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicmlnaGVcIj5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwicm93c1wiIGZvcm1Db250cm9sTmFtZT1cIlJvd3NcIiB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5Sb3dzXCJcclxuICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuUm93cylcIj5cclxuICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snUm93cyddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5JbnNlcmlyZSB1biB2YWxvcmUgbnVtZXJpY28uPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snUm93cyddLmVycm9ycz8uWydNaXNzaW5nIFBhcmVudGhlc2lzJ11cIj5QYXJlbnRlc2kgbm9uIGNoaXVzZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yICBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgIFtoaWRkZW5dPVwiZmllbGQuUmVhZG9ubHkgfHwgcGxhdGZvcm0gIT0gJ3dlYidcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1pY3JvcGhvbmVcIiBmb3JtQ29udHJvbE5hbWU9XCJNaWNyb3Bob25lXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgIFNwZWVjaC1Uby1UZXh0XHJcbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5MdW5naGV6emEgbWluaW1hPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJsZW5ndGhNaW5cIiBmb3JtQ29udHJvbE5hbWU9XCJNaW5MZW5naHRcIiB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWluTGVuZ2h0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5NaW5MZW5naHQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01pbkxlbmdodCddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5JbnNlcmlyZSB1biB2YWxvcmUgbnVtZXJpY28uPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWluTGVuZ2h0J10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5MdW5naGV6emEgbWFzc2ltYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwibGVuZ3RoTWF4XCIgZm9ybUNvbnRyb2xOYW1lPVwiTWF4TGVuZ2h0XCIgdHlwZT1cIm51bWJlclwiIFttaW5dPVwiMFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1heExlbmdodFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuTWF4TGVuZ2h0KVwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYXhMZW5naHQnXS5lcnJvcnM/LlsncGF0dGVybiddXCI+SW5zZXJpcmUgdW4gdmFsb3JlIG51bWVyaWNvLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01heExlbmdodCddLmVycm9ycz8uWydNaXNzaW5nIFBhcmVudGhlc2lzJ11cIj5QYXJlbnRlc2kgbm9uIGNoaXVzZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0jcmVnaW9uIElDT05BIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJzaG93VGV4dGFyZWFGaWVsZEljb25cIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25UZXh0YXJlYUZpZWxkSWNvblRvZ2dsZSgkZXZlbnQuY2hlY2tlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICBJY29uYVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNFwiICpuZ0lmPVwic2hvd1RleHRhcmVhRmllbGRJY29uXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5JY29uYSBNYXRlcmlhbDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJJY29uTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5JY29uTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHBsYWNlaG9sZGVyPVwiZXMuIG5vdGVzLCBkZXNjcmlwdGlvbiwgZWRpdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00XCIgKm5nSWY9XCJzaG93VGV4dGFyZWFGaWVsZEljb25cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+UG9zaXppb25hbWVudG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJUZXh0YXJlYUZpZWxkSWNvblBvc2l0aW9uRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JY29uUG9zaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSWNvblBvc2l0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBJQ09OQSAtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIEFSRUEgREkgVEVTVE8gLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgQk9PTEVBTkkgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjYm9vbGVhZEZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yICBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLklzVHJpc3RhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJJc1RyaXN0YXRlXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgIEEgdHJlIHN0YXRpXHJcbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlRpcG8gZGkgcHJlc2VudGF6aW9uZSAqPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIkJvb2xQcmVzZW50YW50aW9FbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLlByZXNldGF0aW9uVHlwZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidQcmVzZXRhdGlvblR5cGUnXCI+XHJcbiAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBCT09MRUFOSSAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBEQVRBIC0tPlxyXG48bmctdGVtcGxhdGUgI2RhdGVGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+VGlwbyBkaSBkYXRhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIkRhdGVUaW1lVHlwZUVudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSXNPbmx5RGF0ZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJc09ubHlEYXRlJ1wiXHJcbiAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25EYXRlVHlwZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5Gb3JtYXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRGF0ZUZvcm1hdFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRGF0ZUZvcm1hdFwiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInSW5kaWNhcmUgaWwgZm9ybWF0byBzZWd1ZW5kbyBsYSBndWlkYSBkZWwgcGFjY2hldHRvIG1vbWVudGpzLidcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkZvcm1hdG8pXCJcclxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkRhdGEgbWluaW1hPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPHRtdy1kYXRldGltZXBpY2tlciAqbmdJZj1cImZpZWxkLklzT25seURhdGUgPT0gRGF0ZVRpbWVUeXBlRW51bVsnU29sbyBkYXRhJ11cIiBjbGFzcz1cImRhdGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1pbkRhdGVcIiBbcGlja2VyTW9kZV09XCJtb2RlLkRBVEVQSUNLRVJcIiBbb3V0cHV0Rm9ybWF0XT1cIidkZC9NTS95eXl5J1wiXHJcbiAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJmYWxzZVwiPjwvdG13LWRhdGV0aW1lcGlja2VyPlxyXG4gICAgICAgIDx0bXctZGF0ZXRpbWVwaWNrZXIgKm5nSWY9XCJmaWVsZC5Jc09ubHlEYXRlID09IERhdGVUaW1lVHlwZUVudW1bJ0RhdGEgZSBvcmEnXVwiIGNsYXNzPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWluRGF0ZVwiIFtwaWNrZXJNb2RlXT1cIm1vZGUuREFURVRJTUVQSUNLRVJcIiBbb3V0cHV0Rm9ybWF0XT1cIidkZC9NTS95eXl5IEhIOm1tJ1wiXHJcbiAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJmYWxzZVwiPjwvdG13LWRhdGV0aW1lcGlja2VyPlxyXG4gICAgICAgIDx0bXctZGF0ZXRpbWVwaWNrZXIgKm5nSWY9XCJmaWVsZC5Jc09ubHlEYXRlID09IERhdGVUaW1lVHlwZUVudW1bJ1NvbG8gb3JhcmlvJ11cIiBjbGFzcz1cImRhdGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1pbkRhdGVcIiBbcGlja2VyTW9kZV09XCJtb2RlLlRJTUVQSUNLRVJcIiBbb3V0cHV0Rm9ybWF0XT1cIidISDptbSdcIlxyXG4gICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj48L3Rtdy1kYXRldGltZXBpY2tlcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5EYXRhIG1hc3NpbWE8L21hdC1sYWJlbD5cclxuICAgICAgICA8dG13LWRhdGV0aW1lcGlja2VyICpuZ0lmPVwiZmllbGQuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtWydTb2xvIGRhdGEnXVwiIGNsYXNzPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWF4RGF0ZVwiIFtwaWNrZXJNb2RlXT1cIm1vZGUuREFURVBJQ0tFUlwiIFtvdXRwdXRGb3JtYXRdPVwiJ2RkL01NL3l5eXknXCJcclxuICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCI+PC90bXctZGF0ZXRpbWVwaWNrZXI+XHJcbiAgICAgICAgPHRtdy1kYXRldGltZXBpY2tlciAqbmdJZj1cImZpZWxkLklzT25seURhdGUgPT0gRGF0ZVRpbWVUeXBlRW51bVsnRGF0YSBlIG9yYSddXCIgY2xhc3M9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NYXhEYXRlXCIgW3BpY2tlck1vZGVdPVwibW9kZS5EQVRFVElNRVBJQ0tFUlwiIFtvdXRwdXRGb3JtYXRdPVwiJ2RkL01NL3l5eXkgSEg6bW0nXCJcclxuICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCI+PC90bXctZGF0ZXRpbWVwaWNrZXI+XHJcbiAgICAgICAgPHRtdy1kYXRldGltZXBpY2tlciAqbmdJZj1cImZpZWxkLklzT25seURhdGUgPT0gRGF0ZVRpbWVUeXBlRW51bVsnU29sbyBvcmFyaW8nXVwiIGNsYXNzPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWF4RGF0ZVwiIFtwaWNrZXJNb2RlXT1cIm1vZGUuVElNRVBJQ0tFUlwiIFtvdXRwdXRGb3JtYXRdPVwiJ0hIOm1tJ1wiXHJcbiAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJmYWxzZVwiPjwvdG13LWRhdGV0aW1lcGlja2VyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlBvc2l6aW9uZSBpY29uZSAoY2FsZW5kYXJpbyAvIG9yb2xvZ2lvKTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiZGF0ZVRpbWVJY29uUG9zaXRpb25PcHRpb25zXCJcclxuICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ3ZhbHVlJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSWNvbnNQb3NpdGlvblwiXHJcbiAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSWNvbnNQb3NpdGlvbidcIlxyXG4gICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+UG9zaXppb25lIGJvdHRvbmUgY2FuY2VsbGF6aW9uZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiZGF0ZVRpbWVJY29uUG9zaXRpb25PcHRpb25zXCJcclxuICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ3ZhbHVlJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ2xvc2VJY29uUG9zaXRpb25cIlxyXG4gICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0Nsb3NlSWNvblBvc2l0aW9uJ1wiXHJcbiAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuVXNlVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlVzZVRvb2x0aXBcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgICAgIE1vc3RyYSB0b29sdGlwXHJcbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBEQVRBIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIE5VTUVSSUNJIC0tPlxyXG48bmctdGVtcGxhdGUgI251bWVyaWNGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiAgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jc0ludGVnZXJcIiBmb3JtQ29udHJvbE5hbWU9XCJJc0ludGVnZXJcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgVmFsb3JlIGludGVyb1xyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFmaWVsZC5Jc0ludGVnZXJcIiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+U2VwYXJhdG9yZSBkZWNpbWFsaTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkRlY2ltYWxTZXBhcmF0b3JcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkRlY2ltYWxTZXBhcmF0b3JcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5EZWNpbWFsU2VwYXJhdG9yKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydEZWNpbWFsU2VwYXJhdG9yJ10uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPk5vbiDDqCBwb3NzaWJpbGUgaW5zZXJpcmUgZGVpIG51bWVyaS48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydEZWNpbWFsU2VwYXJhdG9yJ10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWZpZWxkLklzSW50ZWdlclwiIGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5QcmVjaXNpb25lIGRlY2ltYWxpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRGVjaW1hbFByZWNpc2lvblwiIHR5cGU9XCJudW1iZXJcIiBbbWluXT1cIjBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5EZWNpbWFsUHJlY2lzaW9uXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5EZWNpbWFsUHJlY2lzaW9uKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydEZWNpbWFsUHJlY2lzaW9uJ10uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkluc2VyaXJlIHVuIHZhbG9yZSBudW1lcmljby48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+U2VwYXJhdG9yZSBtaWdsaWFpYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIlRob3VzYW5kc1NlcGFyYXRvclwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuVGhvdXNhbmRzU2VwYXJhdG9yXCJcclxuICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVGhvdXNhbmRzU2VwYXJhdG9yKVwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsIG1hdFRvb2x0aXA9XCJTaW1ib2xvIHByaW1hIGRlbCB2YWxvcmVcIj5TaW1ib2xvIHZhbHV0YTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkN1cnJlbmN5U3ltYm9sXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5DdXJyZW5jeVN5bWJvbFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkN1cnJlbmN5U3ltYm9sKVwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsIG1hdFRvb2x0aXA9XCJTaW1ib2xvIGRvcG8gaWwgdmFsb3JlXCI+VW5pdMOgIGRpIG1pc3VyYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIk1lYXN1cmVVbml0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5NZWFzdXJlVW5pdFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLk1lYXN1cmVVbml0KVwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlZhbG9yZSBtaW5pbW88L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJNaW5WYWx1ZVwiIHR5cGU9XCJudW1iZXJcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLk1pblZhbHVlXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5NaW5WYWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk51bWVyaWNNaW5NYXhDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuPVwiXi0/WzAtOV0rKCxbMC05XSt8XFwuWzAtOV0rKT8kXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+VmFsb3JlIG1hc3NpbW88L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJNYXhWYWx1ZVwiIHR5cGU9XCJudW1iZXJcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLk1heFZhbHVlXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5NYXhWYWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk51bWVyaWNNaW5NYXhDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICBwYXR0ZXJuPVwiXi0/WzAtOV0rKCxbMC05XSt8XFwuWzAtOV0rKT8kXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0jcmVnaW9uIElDT05BIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJzaG93TnVtZXJpY0ZpZWxkSWNvblwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbk51bWVyaWNGaWVsZEljb25Ub2dnbGUoJGV2ZW50LmNoZWNrZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgSWNvbmFcclxuICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTRcIiAqbmdJZj1cInNob3dOdW1lcmljRmllbGRJY29uXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5JY29uYSBNYXRlcmlhbDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJJY29uTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5JY29uTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHBsYWNlaG9sZGVyPVwiZXMuIGV1cm8sIG1vbml0b3Jfd2VpZ2h0LCBmYXZvcml0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00XCIgKm5nSWY9XCJzaG93TnVtZXJpY0ZpZWxkSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Qb3NpemlvbmFtZW50bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIk51bWVyaWNGaWVsZEljb25Qb3NpdGlvbkVudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSWNvblBvc2l0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ljb25Qb3NpdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSNlbmRyZWdpb24gSUNPTkEgLS0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBOVU1FUklDSSAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBBTExFR0FUTyAtLT5cclxuPG5nLXRlbXBsYXRlICNhdHRhY2htZW50RmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuaXNNdWx0aUF0dGFjaFwiIGZvcm1Db250cm9sTmFtZT1cImlzTXVsdGlBdHRhY2hcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgQWxsZWdhdGkgbXVsdGlwbGlcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+RXN0ZW5zaW9uaSBhY2NldHRhdGU8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cIkF2YWlsYWJsZUZpbGVFeHRlbnNpb25zLmNvbmNhdChBdmFpbGFibGVJbWFnZUV4dGVuc2lvbnMpXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkFsbG93ZWRNaW1lVHlwZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0FsbG93ZWRNaW1lVHlwZXMnXCJcclxuICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBBTExFR0FUTyAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBMSVNUQSBESSBWQUxPUkkgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbGlzdFZhbHVlRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFtoaWRkZW5dPVwiZmllbGQuUHJlc2VudGF0aW9uTW9kZSA9PSBMaXN0UHJlc2VudGF0aW9uRW51bVsnUmFkaW8gYnV0dG9uJ11cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLklzTXVsdGlDaG9pY2hlXCIgZm9ybUNvbnRyb2xOYW1lPVwiSXNNdWx0aUNob2ljaGVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSXNNdWx0aUNob2ljaGVDaGFuZ2UoKVwiPlxyXG4gICAgICAgICAgICBTY2VsdGEgbXVsdGlwbGFcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+VGlwbyBkaSBwcmVzZW50YXppb25lKjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJMaXN0UHJlc2VudGF0aW9uRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5QcmVzZW50YXRpb25Nb2RlXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ1ByZXNlbnRhdGlvbk1vZGUnXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvblByZXNlbnRhdGlvbk1vZGVDaGFuZ2UoKVwiPlxyXG4gICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5BcmVhIGRlaSB2YWxvcmkgZGEgaW5zZXJpcmU8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBwbGFjZWhvbGRlcj1cImtleTF8dmFsdWUxO2tleTJ8dmFsdWUyXCIgWyhuZ01vZGVsKV09XCJmaWVsZC5WYWx1ZVN0cmluZ1wiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAobmdNb2RlbENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImNvdW50VmFsdWVQYWlycyhmaWVsZC5WYWx1ZVBhaXJzKSA+IDBcIj5cclxuICAgICAgICAgICAgPGg0IGNsYXNzPVwia2V5LXZhbHVlLWxpc3Qtc2VjdGlvbi10aXRsZVwiPiA8L2g0PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFiZWwgb3B6aW9uZSAoaW52aW8gcGVyIGNvbmZlcm1hcmUpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwia2V5VmFsdWVPYmplY3Qua2V5XCIgKGtleXVwKT1cIm9uTXVsdGlTZWxlY3RJbnB1dEtleXVwKCRldmVudCwgbnVsbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmFsb3JlIG9wemlvbmUgKGludmlvIHBlciBjb25mZXJtYXJlKTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImtleVZhbHVlT2JqZWN0LnZhbHVlXCIgKGtleXVwKT1cIm9uTXVsdGlTZWxlY3RJbnB1dEtleXVwKCRldmVudCwgbnVsbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTNcIj5PcHppb25pIGluc2VyaXRlOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cInZhbHVlLXBhaXJzLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGtleVZhbHVlUGFpciBvZiBnZXREaWN0aW9uYXJ5S2V5VmFsdWUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtci0xXCIgKGNsaWNrKT1cImRlbGV0ZUtleUZyb21EaWN0aW9uYXJ5KGtleVZhbHVlUGFpci5rZXkpXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48Yj5MYWJlbDogPC9iPnt7a2V5VmFsdWVQYWlyLmtleX19IC0gPGI+VmFsb3JlOiA8L2I+e3trZXlWYWx1ZVBhaXIudmFsdWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIExJU1RBIERJIFZBTE9SSSAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEJPVFRPTkUgQVpJT05FIC0tPlxyXG48bmctdGVtcGxhdGUgI2J1dHRvbkZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGFjdGlvbi1idXR0b24tY3JlYXRvciBbSW5GaWVsZF09XCJ0cnVlXCIgW2VuZFBvaW50Q29uZmlndXJhdGlvbl09XCJlbmRQb2ludENvbmZpZ3VyYXRpb25cIiBbZm9ybV09XCJmb3JtXCJcclxuICAgICAgICBbZm9ybXVsYXNdPVwiYWN0aW9uQnV0dG9uc1wiIFtmb3JtdWxhT2JqZWN0XT1cImZvcm11bGFPYmplY3RcIiBbYWN0aW9uQnV0dG9uRmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgIChvbkNoYW5nZVNvbWV0aGluZyk9XCJjaGFuZ2VkQnV0dG9uRmllbGQoJGV2ZW50KVwiPlxyXG4gICAgPC9hY3Rpb24tYnV0dG9uLWNyZWF0b3I+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEJPVFRPTkUgQVpJT05FIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBMSVNUQSBJTU1BR0lOSSAtLT5cclxuPG5nLXRlbXBsYXRlICNpbWFnZUZpZWxkU2VsZWN0b3JGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGNvbC14cy0xMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5BbHRlenphIGluIFBpeGVsIGRlbGxlIGltbWFnaW5pIHNjYWxhdGUqPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJSZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGNoYW5nZSk9XCJzZXRSZXNpemVkSW1hZ2VzSGVpZ2h0UHgoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvcj57eyBnZXRGb3JtVmFsaWRhdGlvbkVycm9ycygnUmVzaXplZEltYWdlc0hlaWdodFB4JykgfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY29sLXhzLTEyIGNvbC1taWRkbGVcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSXNNdWx0aUNob2ljaGVcIiBmb3JtQ29udHJvbE5hbWU9XCJJc011bHRpQ2hvaWNoZVwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgU2NlbHRhIG11bHRpcGxhXHJcbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGVxcC1hdHRhY2htZW50cyAjaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzIFthdHRhY2htZW50c0xpc3RdPVwiZmllbGQuQXR0YWNobWVudExpc3RcIiBbc2hvd01hdENhcmRdPVwiZmFsc2VcIlxyXG4gICAgICAgIFthbGxvd09ubHlJbWFnZXNdPVwidHJ1ZVwiIFtpc0Rpc2FibGVkXT1cImZhbHNlXCIgW3Nob3dJbmxpbmVQcmV2aWV3XT1cInRydWVcIiBbbXVsdGlwbGVBdHRhY2htZW50XT1cInRydWVcIlxyXG4gICAgICAgIFtzaG93SGVhZGVyXT1cImZhbHNlXCIgW2FsbG93ZWRUeXBlc109XCJbQXR0YWNobWVudFR5cGUuRklMRV1cIlxyXG4gICAgICAgIChsb2NhbEVkaXRlZEF0dGFjaG1lbnRzKT1cImNhdGNoQnV0dG9uSW1hZ2VzQ2hhbmdlKCRldmVudClcIiBbYXR0YWNobWVudHNDb2x1bW5zXT1cImNvbmZpZ0NvbHVtbkxpc3RJbWFnZXNcIj5cclxuICAgIDwvZXFwLWF0dGFjaG1lbnRzPlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIExJU1RBIElNTUFHSU5JIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIElNTUFHSU5FIC0tPlxyXG48bmctdGVtcGxhdGUgI2ltYWdlRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5FbmFibGVEcmF3aW5nXCIgZm9ybUNvbnRyb2xOYW1lPVwiRW5hYmxlRHJhd2luZ1wiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgSW1tYWdpbmUgZGlzZWduYWJpbGU/XHJcbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wteHMtMTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+QWx0ZXp6YSBpbiBQaXhlbCBkZWxsZSBpbW1hZ2luaSBzY2FsYXRlKjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiUmVzaXplZEltYWdlc0hlaWdodFB4XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5SZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIlxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChjaGFuZ2UpPVwic2V0UmVzaXplZEltYWdlc0hlaWdodFB4KClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+e3sgZ2V0Rm9ybVZhbGlkYXRpb25FcnJvcnMoJ1Jlc2l6ZWRJbWFnZXNIZWlnaHRQeCcpIH19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC14cy0xMlwiICpuZ0lmPVwiZmllbGQuRHluQXR0YWNobWVudCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RXRpY2hldHRhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uS2V5XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC14cy0xMlwiICpuZ0lmPVwiZmllbGQuRHluQXR0YWNobWVudCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+VmFsb3JlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uVmFsdWVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtOCBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxlcXAtYXR0YWNobWVudHMgW2F0dGFjaG1lbnRzTGlzdF09XCJmaWVsZC5EeW5BdHRhY2htZW50ID8gW2ZpZWxkLkR5bkF0dGFjaG1lbnRdIDogW11cIiBbc2hvd01hdENhcmRdPVwiZmFsc2VcIiBbYWxsb3dPbmx5SW1hZ2VzXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJmYWxzZVwiIFtzaG93SW5saW5lUHJldmlld109XCJ0cnVlXCIgW211bHRpcGxlQXR0YWNobWVudF09XCJmYWxzZVwiIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2FsbG93ZWRUeXBlc109XCJbQXR0YWNobWVudFR5cGUuRklMRV1cIiAobG9jYWxFZGl0ZWRBdHRhY2htZW50cyk9XCJjYXRjaEJ1dHRvbkltYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25EZWxldGVBdHRhY2htZW50KT1cImRlbGV0ZUltYWdlKCRldmVudClcIiAjaW1hZ2VBdHRhY2htZW50PlxyXG4gICAgICAgIDwvZXFwLWF0dGFjaG1lbnRzPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlQcm9maWxlSW1hZ2U+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJmaWVsZC5EeW5BdHRhY2htZW50XCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImRhdGE6e3tmaWVsZC5EeW5BdHRhY2htZW50LkZpbGVDb250ZW50VHlwZX19O2Jhc2U2NCx7e2ZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZURhdGFCYXNlNjR9fVwiIGFsdD1cIlwiPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIElNTUFHSU5FIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIElNTUFHSU5FIENPTiBNQVJLRVJTIC0tPlxyXG48bmctdGVtcGxhdGUgI2ltYWdlV2l0aE1hcmtlcnNGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLXhzLTEyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkFsdGV6emEgaW4gUGl4ZWwgZGVsbGUgaW1tYWdpbmkgc2NhbGF0ZSo8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuUmVzaXplZEltYWdlc0hlaWdodFB4XCJcclxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoY2hhbmdlKT1cInNldFJlc2l6ZWRJbWFnZXNIZWlnaHRQeCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yPnt7IGdldEZvcm1WYWxpZGF0aW9uRXJyb3JzKCdSZXNpemVkSW1hZ2VzSGVpZ2h0UHgnKSB9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wteHMtMTJcIiAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnQgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkV0aWNoZXR0YTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5EeW5BdHRhY2htZW50LkJ1dHRvbktleVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wteHMtMTJcIiAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnQgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPlZhbG9yZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5EeW5BdHRhY2htZW50LkJ1dHRvblZhbHVlXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTggbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8ZXFwLWF0dGFjaG1lbnRzIFthdHRhY2htZW50c0xpc3RdPVwiZmllbGQuRHluQXR0YWNobWVudCA/IFtmaWVsZC5EeW5BdHRhY2htZW50XSA6IFtdXCIgW3Nob3dNYXRDYXJkXT1cImZhbHNlXCIgW2FsbG93T25seUltYWdlc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiZmFsc2VcIiBbc2hvd0lubGluZVByZXZpZXddPVwidHJ1ZVwiIFttdWx0aXBsZUF0dGFjaG1lbnRdPVwiZmFsc2VcIiBbc2hvd0hlYWRlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFthbGxvd2VkVHlwZXNdPVwiW0F0dGFjaG1lbnRUeXBlLkZJTEVdXCIgKGxvY2FsRWRpdGVkQXR0YWNobWVudHMpPVwiY2F0Y2hCdXR0b25JbWFnZVdpdGhNYXJrZXJzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAob25EZWxldGVBdHRhY2htZW50KT1cImRlbGV0ZUltYWdlKCRldmVudClcIiAjaW1hZ2VBdHRhY2htZW50PlxyXG4gICAgICAgIDwvZXFwLWF0dGFjaG1lbnRzPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVhZG9ubHlQcm9maWxlSW1hZ2U+XHJcbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJmaWVsZC5EeW5BdHRhY2htZW50XCJcclxuICAgICAgICAgICAgICAgIHNyYz1cImRhdGE6e3tmaWVsZC5EeW5BdHRhY2htZW50LkZpbGVDb250ZW50VHlwZX19O2Jhc2U2NCx7e2ZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZURhdGFCYXNlNjR9fVwiIGFsdD1cIlwiPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIElNTUFHSU5FIENPTiBNQVJLRVJTIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIExPT0tVUCAtLT5cclxuPG5nLXRlbXBsYXRlICNsb29rdXBGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiAgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Vc2VBc0dldE9yRGlzY2FyZFwiIGZvcm1Db250cm9sTmFtZT1cIlVzZUFzR2V0T3JEaXNjYXJkXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlNlIHRydWUgbGEgbG9va3VwIHZpZW5lIHZpc3VhbGl6emF0YSBpbiB1bmEgbW9kYWxlIHBlciBsbyBzY2VnbGkgc2NhcnRhXCI+XHJcbiAgICAgICAgICAgIFVzYSBwZXIgc2NlZ2xpIG8gc2NhcnRhXHJcbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5Ob21lIGVudGl0w6A8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgbWF0VG9vbHRpcD1cIk5vbWUgZGVsbCdlbnRpdMOgIHJlbGF6aW9uYXRhXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJFbnRpdHlTb3VyY2VOYW1lXCIgcmVxdWlyZWQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5FbnRpdHlTb3VyY2VOYW1lXCJcclxuICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuRW50aXR5U291cmNlTmFtZSlcIj5cclxuICAgICAgICAgICAgPG1hdC1lcnJvcj57eyBnZXRGb3JtVmFsaWRhdGlvbkVycm9ycygnRW50aXR5U291cmNlTmFtZScpIH19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBtdC0yXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Tm9taSBkZWkgY2FtcGkgKGludmlvIHBlciBjb25mZXJtYXJlKTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIG1hdFRvb2x0aXA9XCJFbGVuY28gZGkgY2FtcGkgb3JkaW5hdG8gY2hlIHZlcnLDoCB2aXN1YWxpenphdG8gbmVsbGEgbG9va3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IChrZXl1cCk9XCJvbk11bHRpU2VsZWN0SW5wdXRLZXl1cCgkZXZlbnQsICdGaWVsZE5hbWVzJylcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTggIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yLTNcIj5Ob21pIHNlbGV6aW9uYXRpOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleHRlbnNpb24tY29udGFpbmVyXCIgKm5nRm9yPVwibGV0IGV4dGVuc2lvbiBvZiBmaWVsZC5GaWVsZE5hbWVzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tleHRlbnNpb259fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtbC0xXCIgKGNsaWNrKT1cImZpZWxkLkZpZWxkTmFtZXMuc3BsaWNlKGksMSlcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIExPT0tVUCAtLT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYnV0dG9uSW1hZ2VzS2V5VmFsdWVJbnB1dENvbHVtbiBsZXQtcm93PVwicm93XCIgbGV0LWNvbD1cImNvbFwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tjb2wuZGlzcGxheX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwicm93W2NvbC5rZXldXCIgcmVxdWlyZWQgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLURJQUxPRyBQRVIgU0VNUExJRklDQVJFIExBIFNDUklUVFVSQSBERUwgQ0FNUE8gRk9STVVMQS0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ0Zvcm11bGE+XHJcbiAgICA8ZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtdWxhLWNvbXBvbmVudD5cclxuICAgIDwvZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtdWxhLWNvbXBvbmVudD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjR2VuZXJpY0xpc3RJbWFnZXNJbWFnZVRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgICA8aW1nIHNyYz1cImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsIHt7cm93W2NvbC5rZXldfX1cIiBjbGFzcz1cIkdlbmVyaWNMaXN0SW1hZ2VzSW1hZ2VUZW1wbGF0ZVwiPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNHZW5lcmljTGlzdEltYWdlc0tleVRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5DaGlhdmU8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJyb3dbY29sLmtleV1cIj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0dlbmVyaWNMaXN0SW1hZ2VzVmFsdWVUZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LWNvbD1cImNvbFwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+VmFsb3JlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwicm93W2NvbC5rZXldXCI+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBURU1QTEFURSBQRVIgUVVFUlkgRURJVE9SIC0tPlxyXG48bmctdGVtcGxhdGUgI2RpYWxvZ1FFPlxyXG4gICAgPG5nLXRlbXBsYXRlIFthcHBEeW5hbWljTG9hZGVyXSBbZGF0YV09XCJRdWVyeUVkaXRvckNvbXBvbmVudFwiIChvdXQpPVwib25FeHRlcm5hbENvbXBvbmVudE91dCgkZXZlbnQpO1wiPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
2202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2FkZC1mb3JtLWZpZWxkL2FkZC1mb3JtLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hZGQtZm9ybS1maWVsZC9hZGQtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsa0JBQWtCLEVBSWxCLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxjQUFjLEdBSWYsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsYUFBYSxFQUNkLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUdMLHVCQUF1QixFQUN2Qix3QkFBd0IsR0FDekIsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLEVBR0wsb0JBQW9CLEdBQ3JCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUdMLGdCQUFnQixHQUNqQixNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFDTCxvQkFBb0IsR0FHckIsTUFBTSw2Q0FBNkMsQ0FBQztBQUVyRCxPQUFPLEVBQWdCLDRCQUE0QixFQUF3QixNQUFNLDJDQUEyQyxD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LE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBY0gsYUFBYTtzQkFBMUQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVU1QywrQkFBK0I7c0JBRDlCLFNBQVM7dUJBQUMsaUNBQWlDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQWdDQyw4QkFBOEI7c0JBQTVGLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNBLDRCQUE0QjtzQkFBeEYsU0FBUzt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0ksOEJBQThCO3NCQUE1RixTQUFTO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSCx3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNQLGVBQWU7c0JBQS9ELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU1OLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBGb3JtQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3JGbixcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtcclxuICBBdHRhY2htZW50VHlwZSxcclxuICBFcXBBdHRhY2htZW50RGlhbG9nU2VydmljZSxcclxuICBFcXBBdHRhY2htZW50c0NvbXBvbmVudCxcclxuICBJQXR0YWNobWVudERUTyxcclxufSBmcm9tIFwiQGVxcHJvamVjdC9lcXAtYXR0YWNobWVudHNcIjtcclxuaW1wb3J0IHsgRW51bUhlbHBlciB9IGZyb20gXCJAZXFwcm9qZWN0L2VxcC1zZWxlY3RcIjtcclxuaW1wb3J0IHsgQ29uZmlnQ29sdW1uLCBUeXBlQ29sdW1uIH0gZnJvbSBcIkBlcXByb2plY3QvZXFwLXRhYmxlXCI7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUZpZWxkLFxyXG4gIENvbFNwYW5TaXplc0VudW0sXHJcbiAgRGF0YUdldHRlckNhcmRpbmFsaXR5RW51bSxcclxuICBGaWVsZEludmlzaWJpbGl0eUVudW0sXHJcbiAgRmllbGRUeXBlRW51bVxyXG59IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgQXR0YWNobWVudEZpZWxkLFxyXG4gIEF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTLFxyXG4gIEF2YWlsYWJsZUZpbGVFeHRlbnNpb25zLFxyXG4gIEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucyxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9hdHRhY2htZW50RmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBCb29sZWFuRmllbGQsXHJcbiAgQm9vbGVhbkZpZWxkU3R5bGVDU1MsXHJcbiAgQm9vbFByZXNlbnRhbnRpb0VudW0sXHJcbn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvYm9vbGVhbkZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgRGF0ZUZpZWxkLFxyXG4gIERhdGVGaWVsZFN0eWxlQ1NTLFxyXG4gIERhdGVUaW1lVHlwZUVudW0sXHJcbn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvZGF0ZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEltYWdlRmllbGQsIEltYWdlRmllbGRTdHlsZUNTUyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBMaXN0UHJlc2VudGF0aW9uRW51bSxcclxuICBMaXN0VmFsdWVGaWVsZCxcclxuICBMaXN0VmFsdWVGaWVsZFN0eWxlQ1NTLFxyXG59IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2xpc3RWYWx1ZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IExvb2t1cEZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvbG9va3VwRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgTnVtZXJpY0ZpZWxkLCBOdW1lcmljRmllbGRJY29uUG9zaXRpb25FbnVtLCBOdW1lcmljRmllbGRTdHlsZUNTUyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL251bWVyaWNGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBUZXh0YXJlYUZpZWxkLCBUZXh0YXJlYUZpZWxkSWNvblBvc2l0aW9uRW51bSwgVGV4dGFyZWFGaWVsZFN0eWxlQ1NTIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvdGV4dGFyZWFGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIFRleHRGaWVsZEljb25Qb3NpdGlvbkVudW0sXHJcbiAgVGV4dEZpZWxkU3R5bGVDU1MsXHJcbiAgVGV4dE1hc2tFbnVtLFxyXG4gIFRleHRGaWVsZCxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy90ZXh0RmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkR3JvdXAsIEZvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXNcIjtcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbWFnZVNlbGVjdG9yRmllbGQsIEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvaW1hZ2VTZWxlY3RvckZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2VxcC1keW5hbWljLW1vZHVsZS1kaWFsb2cuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBMYWJlbEZpZWxkLCBMYWJlbEZpZWxkU3R5bGVDU1MgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9sYWJlbEZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEltYWdlV2l0aE1hcmtlcnNGaWVsZCwgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9pbWFnZVdpdGhNYXJrZXJzRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgQXR0YWNobWVudEZpZWxkVHlwZUVudW0sIER5bkF0dGFjaG1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2R5bkF0dGFjaG1lbnRcIjtcclxuaW1wb3J0IHsgRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEsIGV2ZW50T3V0IH0gZnJvbSBcIi4uLy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1sb2FkZXIvZHluYW1pYy1sb2FkZXIuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgRGF0YUdldHRlclR5cGVFbnVtLCBEYXRhR2V0dGVyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFF1ZXJ5RWRpdG9yTW9kZUVudW0gfSBmcm9tIFwiLi4vZGJnZXR0ZXIvZGJnZXR0ZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE1vZGVFbnVtLCBUaW1lVHlwZUVudW0gfSBmcm9tIFwidG13LXBpY2tlclwiO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24sIEVuZFBvaW50RGF0YVBhcmFtcywgUGFyYW1UeXBlRW51bSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IENvbnRlc3R1YWxpemF0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9nZXR0ZXIubW9kZWxcIjtcclxuaW1wb3J0IHsgQ2FwYWNpdG9yIH0gZnJvbSAnQGNhcGFjaXRvci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aW9uQnV0dG9uRmllbGQsIEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MsIEtleVR5cGVWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2FjdGlvbkJ1dHRvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBGaWVsZEV4dHJhQ29uZmlnLCBGaWVsZEV4dHJhVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpZWxkRXh0cmFDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc3RhdGlzdGljLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImVxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybS1maWVsZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWRkLWZvcm0tZmllbGQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vYWRkLWZvcm0tZmllbGQuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRGb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBmaWVsZHNFeHRyYUNvbmZpZzogQXJyYXk8RmllbGRFeHRyYUNvbmZpZz47XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBmaWVsZDogQmFzZUZpZWxkIHwgYW55O1xyXG4gIEBJbnB1dCgpIGluZGV4RmllbGQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBmb3JtRmllbGRzR3JvdXBzOiBBcnJheTxGb3JtRmllbGRHcm91cD47XHJcbiAgLyoqIEVsZW5jbyBkZWkgRmllbGQgY3JlYXRpIG5lbGxhIGZvcm0sIHVzYXRpIHBlciBwb3BvbGFyZSBsJ2F1dG9jb21wbGV0ZSBkZWxsYSBwcm9wcmlldMOgIEZvcm11bGEuICovXHJcbiAgQElucHV0KCkgYXZhaWxhYmxlRmllbGRzOiBBcnJheTxCYXNlRmllbGQ+O1xyXG4gIEBJbnB1dCgpIGZpZWxkVHlwZXNUb0V4Y2x1ZGU6IEFycmF5PEZpZWxkVHlwZUVudW0+ID0gW0ZpZWxkVHlwZUVudW1bXCJGb3JtIGRpIGRldHRhZ2xpb1wiXSwgRmllbGRUeXBlRW51bS5Mb29rdXBdO1xyXG4gIEBJbnB1dCgpIFF1ZXJ5RWRpdG9yQ29tcG9uZW50OiBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YTsgLy8gTCdpbnRlcm8gY29tcG9uZW50ZSBxdWVyeSBFZGl0b3JcclxuICBASW5wdXQoKSBjb250ZXN0dWFsaXphdGlvbjogQXJyYXk8Q29udGVzdHVhbGl6YXRpb24+ID0gbnVsbDtcclxuICBASW5wdXQoKSBhY3Rpb25CdXR0b25zOiBhbnk7XHJcbiAgQElucHV0KCkgZm9ybXVsYU9iamVjdDogYW55O1xyXG5cclxuICBAT3V0cHV0KCkgb3V0OiBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxldmVudE91dD4oKTtcclxuICBAT3V0cHV0KCkgc2F2ZUZpZWxkRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBCYXNlRmllbGQsIHJlb3BlbjogbnVtYmVyIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBCYXNlRmllbGQsIHJlb3BlbjogbnVtYmVyIH0+KCk7XHJcbiAgQE91dHB1dCgpIG9wZW5BaUVkaXRGb3JGaWVsZEV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuQWlHcmFwaGljU3VnZ2VzdEV2ZW50OiBFdmVudEVtaXR0ZXI8eyBjb2RlOiBzdHJpbmc7IGhpbnQ6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBjb2RlOiBzdHJpbmc7IGhpbnQ6IHN0cmluZyB9PigpO1xyXG5cclxuICBASW5wdXQoKSBhaUZpZWxkU3VnZ2VzdExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBncmFwaGljU3VnZ2VzdEhpbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBISU5UX1BBTEVUVEVTID0gW1xyXG4gICAgJ21vbm9jcm9tYXRpY28gdmlicmFudGUnLCAnY29tcGxlbWVudGFyZScsICd0cmlhZGljbycsICdhbmFsb2dvIGNhbGRvJywgJ2FuYWxvZ28gZnJlZGRvJyxcclxuICAgICdwYXN0ZWxsbyBkZWxpY2F0bycsICduZW9uIHN1IHNjdXJvJywgJ2VhcnRoIHRvbmVzJywgJ29jZWFubyBwcm9mb25kbycsICd0cmFtb250byBjb2xvcmF0bycsXHJcbiAgICAnZm9yZXN0YSBhdXR1bm5hbGUnLCAnbGF2YW5kYSBlIG9ybycsICdjb3JhbGxvIGUgdHVyY2hlc2UnLCAncm9zc28gZSBhbnRyYWNpdGUnLCAndmVyZGUgYWNxdWEgZSBzYWJiaWEnLFxyXG4gICAgJ3Zpb2xhIGVsZXR0cmljbyBlIGdpYWxsbyBsaW1vbmUnLCAncm9zYSBjaXByaWEgZSBncmlnaW8gcGVybGEnLCAnYmx1IGNvYmFsdG8gZSBhcmFuY2lvIGJydWNpYXRvJyxcclxuICAgICdvcm8gYW50aWNvIGUgYm9yZGVhdXgnLCAnbWVudGEgZnJlc2NhIGUgY2lvY2NvbGF0bycsICdhcmdlbnRvIGUgYmx1IGFjY2lhaW8nLCAncGVzY2EgZSBpbmRhY28nLFxyXG4gICAgJ3Jvc3NvIGNpbGllZ2lhIGUgYXZvcmlvJywgJ3RlYWwgc2N1cm8gZSByYW1lJywgJ2xpbWUgZSBibHUgbmF2eScsICdsaWxsYSBlIHZlcmRlIHNhbHZpYScsXHJcbiAgICAnYXp6dXJybyBnaGlhY2NpbyBlIGdyaWdpbyBhcmRlc2lhJywgJ2FtYnJhIGUgcGV0cm9saW8nLCAnc21lcmFsZG8gZSByb3NhIGFudGljbycsICdiaWFuY28gZSBuZXJvIGNvbiBhY2NlbnRvIHJvc3NvIGZ1b2NvJyxcclxuICBdO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEhJTlRfU1RZTEVTID0gW1xyXG4gICAgJ21pbmltYWxpc3RhJywgJ2JvbGQgZSB2aXZhY2UnLCAnZWxlZ2FudGUgZSBzb2JyaW8nLCAnZ2lvY29zbyBlIGRpbmFtaWNvJywgJ2luZHVzdHJpYWxlJyxcclxuICAgICdyZXRyb2Z1dHVyaXN0YScsICdvcmdhbmljbyBlIG5hdHVyYWxlJywgJ3RlY2gvZGlnaXRhbGUnLCAnbHV4dXJ5IHByZW1pdW0nLCAndmludGFnZSBtb3JiaWRvJyxcclxuICAgICdmbGF0IGRlc2lnbiBwdWxpdG8nLCAnZ2xhc3Ntb3JwaGlzbScsICduZXVtb3JmaXNtbycsICdkYXJrIG1vZGUgcmFmZmluYXRvJyxcclxuICAgICdicnV0YWxpc3QgY29uIGJvcmRpIHNwZXNzaScsICdzY2FuZGluYXZvIHB1bGl0bycsICdhcnQgZMOpY28gZ2VvbWV0cmljbycsICdjeWJlcnB1bmsgZGlzdG9waWNvJyxcclxuICAgICdwb3AgYXJ0IGEgdGludGUgcGlhdHRlJywgJ3dhdGVyY29sb3IgcGFzdGVsbG8gc2Z1bWF0bycsICduZW9uIGFubmkgb3R0YW50YScsICdtYXRlcmlhbCBkZXNpZ24gY29uIG9tYnJlJyxcclxuICAgICdhdXJvcmEgYm9yZWFsZScsICdzd2lzcyBzdHlsZSB0aXBvZ3JhZmljbycsICd0cm9waWNhbGUgdml2YWNlJywgJ21vbm9jcm9tbyBjb24gYWNjZW50byBzaW5nb2xvJyxcclxuICAgICdhdXJvcmEgbm90dHVybmEgc2N1cmEnLCAnY290dGFnZWNvcmUgY2FsZG8nLFxyXG4gIF07XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSElOVF9BREpFQ1RJVkVTID0gW1xyXG4gICAgJ29yaWdpbmFsZScsICdpbXByZXZlZGliaWxlJywgJ2FjY2F0dGl2YW50ZScsICdzcGV0dGFjb2xhcmUnLCAnZGVsaWNhdG8nLFxyXG4gICAgJ2F1ZGFjZScsICdyYWZmaW5hdG8nLCAnZ2lvY29zbycsICd2aXZhY2UnLCAnbWlzdGVyaW9zbycsXHJcbiAgICAnY2FsZG8nLCAnZnJlc2NvJywgJ3JvbWFudGljbycsICdmdXR1cmlzdGljbycsICdlbGVnYW50ZScsXHJcbiAgICAncnVzdGljbycsICdtb2Rlcm5vJywgJ3ZpbnRhZ2UnLCAnYXJtb25pb3NvJywgJ3NvcnByZW5kZW50ZScsXHJcbiAgXTtcclxuXHJcbiAgcmFuZG9taXplR3JhcGhpY0hpbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwaWNrID0gPFQ+KGFycjogVFtdKTogVCA9PiBhcnJbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYXJyLmxlbmd0aCldO1xyXG4gICAgY29uc3QgQyA9IEFkZEZvcm1GaWVsZENvbXBvbmVudDtcclxuICAgIGNvbnN0IHBhbGV0dGUgPSBwaWNrKEMuSElOVF9QQUxFVFRFUyk7XHJcbiAgICBjb25zdCBzdHlsZSAgID0gcGljayhDLkhJTlRfU1RZTEVTKTtcclxuICAgIGNvbnN0IGFkajEgICAgPSBwaWNrKEMuSElOVF9BREpFQ1RJVkVTKTtcclxuICAgIGNvbnN0IHVzZVR3byAgPSBNYXRoLnJhbmRvbSgpIDwgMC41O1xyXG4gICAgY29uc3QgYWRqMiAgICA9IHVzZVR3byA/IHBpY2soQy5ISU5UX0FESkVDVElWRVMuZmlsdGVyKGEgPT4gYSAhPT0gYWRqMSkpIDogbnVsbDtcclxuICAgIGNvbnN0IGFkalRleHQgPSBhZGoyID8gYCR7YWRqMX0gZSAke2FkajJ9YCA6IGFkajE7XHJcbiAgICB0aGlzLmdyYXBoaWNTdWdnZXN0SGludCA9IGBQYWxldHRlICR7cGFsZXR0ZX0sIHN0aWxlICR7c3R5bGV9LCAke2FkalRleHR9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5zdXJlRmllbGRDb2RlKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuZmllbGQ/LkxhYmVsPy50cmltKCkpIHtcclxuICAgICAgdGhpcy5maWVsZC5EZXNjcmlwdGlvbiA9IHRoaXMuZmllbGQuRGVzY3JpcHRpb24/LnRyaW0oKSB8fCAnQ2FtcG8gc2VuemEgTm9tZSc7XHJcbiAgICAgIHRoaXMuZmllbGQuTGFiZWwgPSAnX2NhbXBvc2VuemFub21lXyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZC5MYWJlbDtcclxuICB9XHJcblxyXG4gIG9uT3BlbkFpRWRpdEZvckZpZWxkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuQWlFZGl0Rm9yRmllbGRFdmVudC5lbWl0KHRoaXMuZmllbGQ/LkxhYmVsID8/ICcnKTtcclxuICB9XHJcblxyXG4gIG9uR3JhcGhpY1N1Z2dlc3QoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb2RlID0gdGhpcy5lbnN1cmVGaWVsZENvZGUoKTtcclxuICAgIHRoaXMub3BlbkFpR3JhcGhpY1N1Z2dlc3RFdmVudC5lbWl0KHsgY29kZSwgaGludDogdGhpcy5ncmFwaGljU3VnZ2VzdEhpbnQgfSk7XHJcbiAgICB0aGlzLnNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmdyYXBoaWNTdWdnZXN0SGludCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplZEltYWdlc0hlaWdodFB4OiBudW1iZXI7XHJcbiAgZmllbGRGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAga2V5VmFsdWVPYmplY3Q6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSA9IHsga2V5OiBcIlwiLCB2YWx1ZTogXCJcIiB9O1xyXG4gIGF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZTogQXJyYXk8Q29sU3BhblNpemVzRW51bT4gPSBbXTtcclxuICBhdmFpbGFibGVDb2xTcGFuU2l6ZXNSaXNwb3N0YTogQXJyYXk8Q29sU3BhblNpemVzRW51bT4gPSBbXTtcclxuICBmb3JtdWxhQXV0b2NvbXBsZXRlT3B0aW9uczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+O1xyXG4gIFZpc2libGVJZkF1dG9jb21wbGV0ZU9wdGlvbnM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PjtcclxuICBBdmFpbGFibGVGaWxlRXh0ZW5zaW9ucyA9IEF2YWlsYWJsZUZpbGVFeHRlbnNpb25zO1xyXG4gIEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucyA9IEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucztcclxuICBmaWVsZEludmlzaWJpbGl0eUVudW0gPSBGaWVsZEludmlzaWJpbGl0eUVudW07XHJcbiAgY29sdW1uS2V5czogQXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiA9IG5ldyBBcnJheTx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KCk7XHJcbiAgYWdncmVnYXRpb25GdW5jdGlvbkVudW06IGFueTtcclxuXHJcbiAgLy8jcmVnaW9uIFRlbXBsYXRlIGRlaSB2YXJpIHBlenppIGRpIGZvcm0gcGVyIGxhIGNyZWF6aW9uZSBkaSB1biBjYW1wbyhpbiBiYXNlIGFsIHRpcG8gc2NlbHRvKS5cclxuICBmaWVsZFR5cGVGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcInRleHRGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHRleHRGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwibGFiZWxGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGxhYmVsRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImJ1dHRvbkZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgYnV0dG9uRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcInRleHRhcmVhRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICB0ZXh0YXJlYUZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJib29sZWFkRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBib29sZWFkRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImRhdGVGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRhdGVGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwibnVtZXJpY0ZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgbnVtZXJpY0ZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJhdHRhY2htZW50RmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBhdHRhY2htZW50RmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImltYWdlRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBpbWFnZUZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJpbWFnZVdpdGhNYXJrZXJzRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBpbWFnZVdpdGhNYXJrZXJzRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImltYWdlRmllbGRTZWxlY3RvckZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGltYWdlRmllbGRTZWxlY3RvckZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwibGlzdFZhbHVlRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBsaXN0VmFsdWVGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwibG9va3VwRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBsb29rdXBGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiZGF0YUdldHRlclRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZGF0YUdldHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFByb3ByaWV0w6AgcGVyIGdlc3RpcmUgaSBtZXRhZGF0YSBuZWkgY2FtcGkgdGkgZGlwbyBBbGxlZ2F0byBvIEltbWFnaW5lXHJcbiAgbWV0YWRhdGFDb2x1bW5zOiBBcnJheTxDb25maWdDb2x1bW4+O1xyXG4gIC8vQFZpZXdDaGlsZCgnbWV0YWRhdGFGaWVsZHNUYWJsZScsIHsgc3RhdGljOiBmYWxzZSB9KSBtZXRhZGF0YUZpZWxkc1RhYmxlOiBFcXBUYWJsZUNvbXBvbmVudDtcclxuICBzZWxlY3RlZE1ldGFkYXRhOiBCYXNlRmllbGQ7XHJcbiAgLy9pbmRleFNlbGVjdGVkTWV0YWRhdGE6IG51bWJlcjtcclxuICAvL2RpYWxvZ01ldGFkYXRhUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgZGlhbG9nVmlzaWJsZUlmUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgZGlhbG9nUmVhZE9ubHlJZlJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIC8vQFZpZXdDaGlsZCgnZGlhbG9nTWV0YWRhdGEnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dNZXRhZGF0YTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nRm9ybXVsYVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dGb3JtdWxhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGRpYWxvZ0Zvcm11bGFSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vIEBWaWV3Q2hpbGQoXCJkaWFsb2dBdmFudGlJbmRpZXRyb1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dBdmFudGlJbmRpZXRybzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyBkaWFsb2dBdmFudGlJbmRpZXRyb1JlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgZ2VzdGlyZSBsZSBpbW1hZ2luaSBuZWkgY2FwaSBkaSB0aXBvIGVsZW5jbyBnZW5lcmljb1xyXG4gIEBWaWV3Q2hpbGQoXCJidXR0b25JbWFnZXNLZXlWYWx1ZUlucHV0Q29sdW1uXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgYnV0dG9uSW1hZ2VzS2V5VmFsdWVJbnB1dENvbHVtbjogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEVudW1lcmF0b3JpIHVzYXRpIG5lbGwnaHRtbFxyXG4gIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gIEJvb2xQcmVzZW50YW50aW9FbnVtID0gQm9vbFByZXNlbnRhbnRpb0VudW07XHJcbiAgRGF0ZVRpbWVUeXBlRW51bSA9IERhdGVUaW1lVHlwZUVudW07XHJcbiAgTGlzdFByZXNlbnRhdGlvbkVudW0gPSBMaXN0UHJlc2VudGF0aW9uRW51bTtcclxuICBUZXh0TWFza0VudW0gPSBUZXh0TWFza0VudW07XHJcbiAgVGV4dEZpZWxkSWNvblBvc2l0aW9uRW51bSA9IFRleHRGaWVsZEljb25Qb3NpdGlvbkVudW07XHJcbiAgTnVtZXJpY0ZpZWxkSWNvblBvc2l0aW9uRW51bSA9IE51bWVyaWNGaWVsZEljb25Qb3NpdGlvbkVudW07XHJcbiAgVGV4dGFyZWFGaWVsZEljb25Qb3NpdGlvbkVudW0gPSBUZXh0YXJlYUZpZWxkSWNvblBvc2l0aW9uRW51bTtcclxuXHJcbiAgcmVhZG9ubHkgZGF0ZVRpbWVJY29uUG9zaXRpb25PcHRpb25zID0gW1xyXG4gICAgeyB2YWx1ZTogJ2xlZnQnLCAgbGFiZWw6ICdTaW5pc3RyYScgfSxcclxuICAgIHsgdmFsdWU6ICdyaWdodCcsIGxhYmVsOiAnRGVzdHJhJyB9LFxyXG4gIF07XHJcbiAgQXR0YWNobWVudFR5cGUgPSBBdHRhY2htZW50VHlwZTtcclxuICBhdHRhY2htZW50RmllbGRUeXBlRW51bSA9IEF0dGFjaG1lbnRGaWVsZFR5cGVFbnVtO1xyXG4gIGRhdGFHZXR0ZXJUeXBlRW51bSA9IERhdGFHZXR0ZXJUeXBlRW51bTtcclxuICBzdWJzY3JpcHRpb246IGFueTtcclxuXHJcbiAgc2hvd1RleHRGaWVsZEljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93TnVtZXJpY0ZpZWxkSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dUZXh0YXJlYUZpZWxkSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEdlc3Rpb25lIGRlbGxlIGxpc3RlIGRpIGltbWFnaW5pXHJcbiAgY29uZmlnQ29sdW1uTGlzdEltYWdlczogQXJyYXk8Q29uZmlnQ29sdW1uPiA9IG5ldyBBcnJheTxDb25maWdDb2x1bW4+KCk7XHJcbiAgY29uZmlnQ29sdW1uSW1hZ2U6IEFycmF5PENvbmZpZ0NvbHVtbj4gPSBuZXcgQXJyYXk8Q29uZmlnQ29sdW1uPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ0dlbmVyaWNMaXN0SW1hZ2VzSW1hZ2VUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIEdlbmVyaWNMaXN0SW1hZ2VzSW1hZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdHZW5lcmljTGlzdEltYWdlc0tleVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgR2VuZXJpY0xpc3RJbWFnZXNLZXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdHZW5lcmljTGlzdEltYWdlc1ZhbHVlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBHZW5lcmljTGlzdEltYWdlc1ZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzJywgeyBzdGF0aWM6IGZhbHNlIH0pIGltYWdlU2VsZWN0b3JBdHRhY2htZW50czogRXFwQXR0YWNobWVudHNDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnaW1hZ2VBdHRhY2htZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIGltYWdlQXR0YWNobWVudDogRXFwQXR0YWNobWVudHNDb21wb25lbnQ7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vIERCIEdldHRlclxyXG4gIGRpYWxvZ1FFUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgLy9AVmlld0NoaWxkKCdkaWFsb2dNZXRhZGF0YScsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ01ldGFkYXRhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dRRVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dRRTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8gVE1XLVBJQ0tFUlxyXG4gIG1vZGUgPSBNb2RlRW51bVxyXG4gIHRpbWVUeXBlID0gVGltZVR5cGVFbnVtXHJcblxyXG4gIC8vIERNIEdldHRlclxyXG4gIGZvcm1zOiBBcnJheTxGb3JtPiA9IG5ldyBBcnJheTxGb3JtPigpO1xyXG4gIERNTW9kdWxlOiBhbnk7XHJcbiAgRE1GaWVsZDogYW55O1xyXG4gIERNRmllbGRzOiBBcnJheTx7IGtleTogc3RyaW5nIH0+O1xyXG4gIERNR2V0dGVyQ2FyZGluYWxpdGllcyA9IERhdGFHZXR0ZXJDYXJkaW5hbGl0eUVudW07XHJcblxyXG4gIHBsYXRmb3JtOiBzdHJpbmcgPSBDYXBhY2l0b3IuZ2V0UGxhdGZvcm0oKTtcclxuXHJcbiAgbG9hZGVkRmllbGRFeHRyYTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFnZ3JlZ2F0aW9uRmllbGRMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gUHJldmlldyBsaXZlIHBlciBUZXh0RmllbGQgLyBOdW1lcmljRmllbGRcclxuICBwcmV2aWV3UmVjb3JkOiBhbnkgPSB7fTtcclxuICBzdHlsZVZlcnNpb246IG51bWJlciA9IDA7XHJcbiAgcHJldmlld0ZvcmNlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgaXNUZXh0RmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNOdW1lcmljRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIG51bWVyaWNvJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNUZXh0YXJlYUZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydBcmVhIGRpIHRlc3RvJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNCb29sZWFuRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNBdHRhY2htZW50RmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0FsbGVnYXRvJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNMYWJlbEZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydFdGljaGV0dGEnXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0RhdGVGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnRGF0YSBlL28gb3JhJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNBY3Rpb25CdXR0b25GaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnQm90dG9uZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSW1hZ2VGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnSW1tYWdpbmUnXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0ltYWdlV2l0aE1hcmtlcnNGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnSW1tYWdpbmUgY29uIG1hcmtlcnMnXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0xpc3RWYWx1ZUZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0ltYWdlU2VsZWN0b3JGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGltbWFnaW5pJ107XHJcbiAgfVxyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIFRleHRGaWVsZCBwZXIgbGUgdGFiIENTUyAqL1xyXG4gIHJlYWRvbmx5IHRleHRGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnSW5wdXQnLCAgICAgICBsYWJlbDogJ0Nhc2VsbGEgZGkgdGVzdG8nIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gICAgeyBrZXk6ICdJY29uYScsICAgICAgIGxhYmVsOiAnSWNvbmEnIH0sXHJcbiAgICB7IGtleTogJ01pY3JvZm9ubycsICAgbGFiZWw6ICdNaWNyb2Zvbm8nIH0sXHJcbiAgICB7IGtleTogJ0Vycm9yZScsICAgICAgbGFiZWw6ICdUZXN0byBlcnJvcmUnIH0sXHJcbiAgXTtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIHN0YXRpIHBlciBsZSB0YWIgQ1NTICovXHJcbiAgcmVhZG9ubHkgdGV4dEZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnRm9jdXNlZCcsICAgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZFRleHRGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIE51bWVyaWNGaWVsZCBwZXIgbGUgdGFiIENTUyAoc2VuemEgTWljcm9mb25vKSAqL1xyXG4gIHJlYWRvbmx5IG51bWVyaWNGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnSW5wdXQnLCAgICAgICBsYWJlbDogJ0Nhc2VsbGEgbnVtZXJpY2EnIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gICAgeyBrZXk6ICdJY29uYScsICAgICAgIGxhYmVsOiAnSWNvbmEnIH0sXHJcbiAgICB7IGtleTogJ0Vycm9yZScsICAgICAgbGFiZWw6ICdUZXN0byBlcnJvcmUnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgbnVtZXJpY0ZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnRm9jdXNlZCcsICAgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZE51bWVyaWNGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIFRleHRhcmVhRmllbGQgcGVyIGxlIHRhYiBDU1MgKi9cclxuICByZWFkb25seSB0ZXh0YXJlYUZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdJbnB1dCcsICAgICAgIGxhYmVsOiAnQXJlYSBkaSB0ZXN0bycgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCBsYWJlbDogJ0Rlc2NyaXppb25lIChsYWJlbCknIH0sXHJcbiAgICB7IGtleTogJ0ljb25hJywgICAgICAgbGFiZWw6ICdJY29uYScgfSxcclxuICAgIHsga2V5OiAnTWljcm9mb25vJywgICBsYWJlbDogJ01pY3JvZm9ubycgfSxcclxuICAgIHsga2V5OiAnRXJyb3JlJywgICAgICBsYWJlbDogJ1Rlc3RvIGVycm9yZScgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSB0ZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnRm9jdXNlZCcsICAgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZFRleHRhcmVhRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBCb29sZWFuRmllbGQgcGVyIGxlIHRhYiBDU1MgKDMgZWxlbWVudGksIHNlbnphIE5vdFZhbGlkKSAqL1xyXG4gIHJlYWRvbmx5IGJvb2xlYW5GaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnU2NlbHRhJywgICAgICBsYWJlbDogJ0NvbnRyb2xsbyAodG9nZ2xlIC8gY2hlY2tib3ggLyByYWRpbyknIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IGJvb2xlYW5GaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ0ZvY3VzZWQnLCAgIGxhYmVsOiAnU2VsZXppb25hdG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgIGxhYmVsOiAnU29sYSBMZXR0dXJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkQm9vbGVhbkZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgQXR0YWNobWVudEZpZWxkIHBlciBsZSB0YWIgQ1NTICovXHJcbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICAgICAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0xhYmVsJywgICAgICAgICAgICBsYWJlbDogJ0xhYmVsIC8gaW50ZXN0YXppb25lJyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lQWdnaXVuZ2knLCAgbGFiZWw6ICdCb3R0b25lIEFnZ2l1bmdpJyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lRG93bmxvYWQnLCAgbGFiZWw6ICdCb3R0b25lIERvd25sb2FkJyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lRWxpbWluYScsICAgbGFiZWw6ICdCb3R0b25lIEVsaW1pbmEnIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmVBbnRlcHJpbWEnLCBsYWJlbDogJ0JvdHRvbmUgQW50ZXByaW1hJyB9LFxyXG4gICAgeyBrZXk6ICdDYW1wb05vbWVGaWxlJywgICAgbGFiZWw6ICdDYW1wbyBub21lIGZpbGUnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZEF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIExhYmVsRmllbGQgcGVyIGxlIHRhYiBDU1MgKDEgZWxlbWVudG8sIDIgc3RhdGkpICovXHJcbiAgcmVhZG9ubHkgbGFiZWxGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgbGFiZWxGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRMYWJlbEZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgRGF0ZUZpZWxkIHBlciBsZSB0YWIgQ1NTICg4IGVsZW1lbnRpLCA1IHN0YXRpKSAqL1xyXG4gIHJlYWRvbmx5IGRhdGVGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgICAgICAgIGxhYmVsOiAnQ29udGVuaXRvcmUgZXN0ZXJubycgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCAgICAgICAgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gICAgeyBrZXk6ICdDb250ZW5pdG9yZUludGVybm8nLCBsYWJlbDogJ0NvbnRlbml0b3JlIGludGVybm8nIH0sXHJcbiAgICB7IGtleTogJ0NhbXBvRGF0YScsICAgICAgICAgIGxhYmVsOiAnQ2FzZWxsYSBkaSB0ZXN0bycgfSxcclxuICAgIHsga2V5OiAnSWNvbmFDYWxlbmRhcmlvJywgICAgbGFiZWw6ICdCb3R0b25lIGNhbGVuZGFyaW8nIH0sXHJcbiAgICB7IGtleTogJ0ljb25hT3JvbG9naW8nLCAgICAgIGxhYmVsOiAnQm90dG9uZSBvcm9sb2dpbycgfSxcclxuICAgIHsga2V5OiAnSWNvbmFDYW5jZWxsYXppb25lJywgbGFiZWw6ICdCb3R0b25lIGNhbmNlbGxhemlvbmUnIH0sXHJcbiAgICB7IGtleTogJ1Rvb2x0aXAnLCAgICAgICAgICAgIGxhYmVsOiAnVG9vbHRpcCcgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBkYXRlRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gICAgeyBrZXk6ICdGb2N1c2VkJywgICBsYWJlbDogJ1NlbGV6aW9uYXRvJyB9LFxyXG4gICAgeyBrZXk6ICdOb3RWYWxpZCcsICBsYWJlbDogJ05vbiBWYWxpZG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgIGxhYmVsOiAnU29sYSBMZXR0dXJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkRGF0ZUZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgQWN0aW9uQnV0dG9uRmllbGQgcGVyIGxlIHRhYiBDU1MgKDMgZWxlbWVudGksIDMgc3RhdGkpICovXHJcbiAgcmVhZG9ubHkgYWN0aW9uQnV0dG9uRmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgIGxhYmVsOiAnQm90dG9uZScgfSxcclxuICAgIHsga2V5OiAnSWNvbmEnLCAgICAgICBsYWJlbDogJ0ljb25hJyB9LFxyXG4gICAgeyBrZXk6ICdEZXNjcml6aW9uZScsIGxhYmVsOiAnRXRpY2hldHRhIChsYWJlbCknIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgYWN0aW9uQnV0dG9uRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsICAgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnU2VsZXppb25hdG8nLCBsYWJlbDogJ1NlbGV6aW9uYXRvIChjbGljayknIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRBY3Rpb25CdXR0b25GaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIEltYWdlRmllbGQgcGVyIGxlIHRhYiBDU1MgKDMgZWxlbWVudGksIDIgc3RhdGkpICovXHJcbiAgcmVhZG9ubHkgaW1hZ2VGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCAgICBsYWJlbDogJ0Rlc2NyaXppb25lIChsYWJlbCknIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmVEaXNlZ25hJywgbGFiZWw6ICdCb3R0b25lIERpc2VnbmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgaW1hZ2VGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRJbWFnZUZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkIHBlciBsZSB0YWIgQ1NTICgzIGVsZW1lbnRpLCAyIHN0YXRpKSAqL1xyXG4gIHJlYWRvbmx5IGltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgIGxhYmVsOiAnRGVzY3JpemlvbmUgKGxhYmVsKScgfSxcclxuICAgIHsga2V5OiAnQm90dG9uZU1hcmNhJywgbGFiZWw6ICdCb3R0b25lIE1hcmNhJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IGltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8jcmVnaW9uIExpc3RWYWx1ZUZpZWxkU3R5bGVDU1Mg4oCUIG1ldGFkYXRpIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGlzdFZhbHVlQ29tYm9FbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICAgICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnTGFiZWwnLCAgICAgICAgICAgbGFiZWw6ICdFdGljaGV0dGEnIH0sXHJcbiAgICB7IGtleTogJ0Nhc2VsbGFUcmlnZ2VyJywgIGxhYmVsOiAnQ2FzZWxsYSBTZWxlY3QnIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmVDYW5jZWxsYScsIGxhYmVsOiAnQm90dG9uZSBDYW5jZWxsYScgfSxcclxuICBdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGlzdFZhbHVlUmFkaW9FbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnTGFiZWwnLCAgICAgbGFiZWw6ICdFdGljaGV0dGEnIH0sXHJcbiAgICB7IGtleTogJ09wemlvbmUnLCAgIGxhYmVsOiAnT3B6aW9uZScgfSxcclxuICAgIHsga2V5OiAnU2VsZXppb25lJywgbGFiZWw6ICdTZWxlemlvbmUgKHJhZGlvKScgfSxcclxuICBdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGlzdFZhbHVlQnV0dG9uRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0xhYmVsJywgICBsYWJlbDogJ0V0aWNoZXR0YScgfSxcclxuICAgIHsga2V5OiAnQm90dG9uZScsIGxhYmVsOiAnQm90dG9uZScgfSxcclxuICBdO1xyXG5cclxuICBnZXQgbGlzdFZhbHVlU3R5bGVFbGVtZW50cygpIHtcclxuICAgIGNvbnN0IGx2ID0gdGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZDtcclxuICAgIGNvbnN0IG1vZGUgPSBOdW1iZXIobHY/LlByZXNlbnRhdGlvbk1vZGUpO1xyXG4gICAgaWYgKG1vZGUgPT09IExpc3RQcmVzZW50YXRpb25FbnVtWydDb21ibyBib3gnXSkgcmV0dXJuIHRoaXMubGlzdFZhbHVlQ29tYm9FbGVtZW50cztcclxuICAgIGlmIChtb2RlID09PSBMaXN0UHJlc2VudGF0aW9uRW51bVsnUHVsc2FudGUgY29uIHRlc3RvJ10pIHJldHVybiB0aGlzLmxpc3RWYWx1ZUJ1dHRvbkVsZW1lbnRzO1xyXG4gICAgcmV0dXJuIHRoaXMubGlzdFZhbHVlUmFkaW9FbGVtZW50cztcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGxpc3RWYWx1ZUZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCAgIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ1NlbGV6aW9uYXRvJywgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgICBsYWJlbDogJ05vbiBWYWxpZG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgICAgbGFiZWw6ICdTb2xhIExldHR1cmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRMaXN0VmFsdWVGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyNlbmRyZWdpb24gTGlzdFZhbHVlRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1Mg4oCUIG1ldGFkYXRpIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIHJlYWRvbmx5IGltYWdlU2VsZWN0b3JGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgICAgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdDYXNlbGxhU2VsZXppb25lJywgbGFiZWw6ICdDYXNlbGxhIGRpIHNlbGV6aW9uZScgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCAgICAgIGxhYmVsOiAnRGVzY3JpemlvbmUgKGxhYmVsKScgfSxcclxuICAgIHsga2V5OiAnU2VsZXppb25pJywgICAgICAgIGxhYmVsOiAnU2VsZXppb25pIChjaGVja2JveCknIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgaW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCAgIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ1NlbGV6aW9uYXRvJywgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgICBsYWJlbDogJ05vbiBWYWxpZG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgICAgbGFiZWw6ICdTb2xhIExldHR1cmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRJbWFnZVNlbGVjdG9yRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8jZW5kcmVnaW9uIEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBlbnVtSGVscGVyOiBFbnVtSGVscGVyLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgdXRpbGl0eUhlbHBlclNlcnZpY2U6IFV0aWxpdHlIZWxwZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy5jb25maWd1cmVDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNvbmZpZ3VyZUZpZWxkc0V4dHJhKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlciA9PSBudWxsKSB7IHRoaXMuZmllbGQuRGF0YUdldHRlciA9IG5ldyBEYXRhR2V0dGVyKCk7IH1cclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtW1wiRGEgbW9kdWxvIGRpbmFtaWNvXCJdKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0QWxsTW9kdWxlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gXCJ1bmRlZmluZWRcIiAmJiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5jcmVhdGVDb2x1bW5LZXlzKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUuUGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmZpZWxkVHlwZXNUb0V4Y2x1ZGUuaW5jbHVkZXMoRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZmllbGRUeXBlc1RvRXhjbHVkZS5wdXNoKEZpZWxkVHlwZUVudW1bXCJGb3JtIGRpIGRldHRhZ2xpb1wiXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkZpZWxkVHlwZUNoYW5nZShmYWxzZSk7XHJcbiAgICB0aGlzLmF2YWlsYWJsZUZpZWxkcyA9IHRoaXMuYXZhaWxhYmxlRmllbGRzXHJcbiAgICAgID8gdGhpcy5hdmFpbGFibGVGaWVsZHMuZmlsdGVyKChmKSA9PiBmICE9IHRoaXMuZmllbGQpXHJcbiAgICAgIDogW107XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBpbXBvc3RhcmUgaSB2YWxvcmkgZGEgc3VnZ2VyaXJlIG5lbGwnYXV0b2NvbXBsZXRlIGRlbCBjYW1wbyBGb3JtdWxhLlxyXG4gICAqIFZpZW5lIHNjYXRlbmF0byBhbCBmb2N1cyAoaW4gcXVlc3RvIGNhc28gdmllbmUgcGFzc2F0byBpbCBwYXJhbWV0cm8gYSBudWxsIHBlciBkaWZmZXJlbnppYXJsb1xyXG4gICAqIGRhbGwnZXZlbnRvIGRpIGNsaWNrIHN1bGxhIHRhc3RpZXJhKSBlIGFsIGtleXVwIHN1bGwnaW5wdXQgKGlsIHBhcmFtZXRybyDDqCBkaXZlcnNvIGRhIG51bGwpLlxyXG4gICAqIEBwYXJhbSBrZXlib2FyZEV2ZW50IEV2ZW50byBzY2F0ZW5hdG8gYWwga2V5dXAgc3VsbGEgdGFzdGllcmEuIFNlIG51bGwgYWxsb3JhIGlsIG1ldG9kbyDDqCBzdGF0byBpbnZvY2F0byBkYWwgZm9jdXMgc3VsbCdpbnB1dC5cclxuICAgKiBAc3VtbWFyeSBBZ2dpb3JuYSBsJ2VsZW5jbyBkZWkgc3VnZ2VyaW1lbnRpIHBlciBsJ2F1dG9jb21wbGV0ZSBzZSBsJ3V0ZW50ZSBlc2VndWUgaWwgZm9jdXMgc3VsbCdpbnB1dFxyXG4gICAqIG9wcHVyZSBhbCBrZXl1cCBzdWxsYSB0YXN0aWVyYSBkaSB1biB0YXN0byBkaXZlcnNvIGRhbGxlIGZyZWNjZS5cclxuICAgKi9cclxuICAvLyBzZXRGb3JtdWxhQXV0b2NvbXBsZXRlT3B0aW9ucyhrZXlib2FyZEV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgLy8gICAvLyBDcmVvIGwnYXJyYXkgcGVyIGwnYXV0b2NvbXBsZXRlIHNvbG8gc2Ugc3RvIGZhY2VuZG8gaWwgZm9jdXMgc3VsbCdpbnB1dCBvIHNlIHN0byBwcmVtZW5kbyB1biB0YXN0b1xyXG4gIC8vICAgLy8gc3VsbGEgdGFzdGllcmEgZGl2ZXJzbyBkYWxsZSBmcmVjY2UgKGluIHF1ZXN0J3VsdGltbyBjYXNvLCBzZSBub24gdmllbmUgZXNlZ3VpdG8gaWwgZmlsdHJvIHN1bGwnZXZlbnRvLFxyXG4gIC8vICAgLy8gbm9uIHNpIHB1w7Igc2VsZXppb25hcmUgdW4gc3VnZ2VyaW1lbnRvIGRlbGwnYXV0b2NvbXBsZXRlIHBlcmNow6ggYWwgY2xpY2sgdmVycmViYmUgcmljYXJpY2F0byBsJ2FycmF5IGVcclxuICAvLyAgIC8vIHNpIHByZWRlcmViYmUgbGEgc2VsZXppb25lIGFwcGVuYSBmYXR0YSkuXHJcbiAgLy8gICBpZiAoIWtleWJvYXJkRXZlbnQgfHwgIWtleWJvYXJkRXZlbnQuY29kZS5pbmNsdWRlcyhcIkFycm93XCIpKSB7XHJcbiAgLy8gICAgIHRoaXMuZm9ybXVsYUF1dG9jb21wbGV0ZU9wdGlvbnMgPSBVdGlsaXR5SGVscGVyU2VydmljZS5HZXRBdXRvY29tcGxldGVPcHRpb25zKHRoaXMuYXZhaWxhYmxlRmllbGRzLCB0aGlzLmZpZWxkLkZvcm11bGEpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuICBzZXRWaXNpYmxlSWZBdXRvY29tcGxldGVPcHRpb25zKGtleWJvYXJkRXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIC8vIENyZW8gbCdhcnJheSBwZXIgbCdhdXRvY29tcGxldGUgc29sbyBzZSBzdG8gZmFjZW5kbyBpbCBmb2N1cyBzdWxsJ2lucHV0IG8gc2Ugc3RvIHByZW1lbmRvIHVuIHRhc3RvXHJcbiAgICAvLyBzdWxsYSB0YXN0aWVyYSBkaXZlcnNvIGRhbGxlIGZyZWNjZSAoaW4gcXVlc3QndWx0aW1vIGNhc28sIHNlIG5vbiB2aWVuZSBlc2VndWl0byBpbCBmaWx0cm8gc3VsbCdldmVudG8sXHJcbiAgICAvLyBub24gc2kgcHXDsiBzZWxlemlvbmFyZSB1biBzdWdnZXJpbWVudG8gZGVsbCdhdXRvY29tcGxldGUgcGVyY2jDqCBhbCBjbGljayB2ZXJyZWJiZSByaWNhcmljYXRvIGwnYXJyYXkgZVxyXG4gICAgLy8gc2kgcHJlZGVyZWJiZSBsYSBzZWxlemlvbmUgYXBwZW5hIGZhdHRhKS5cclxuICAgIGlmICgha2V5Ym9hcmRFdmVudCB8fCAha2V5Ym9hcmRFdmVudC5jb2RlLmluY2x1ZGVzKFwiQXJyb3dcIikpIHtcclxuICAgICAgdGhpcy5WaXNpYmxlSWZBdXRvY29tcGxldGVPcHRpb25zID1cclxuICAgICAgICBVdGlsaXR5SGVscGVyU2VydmljZS5HZXRBdXRvY29tcGxldGVPcHRpb25zKFxyXG4gICAgICAgICAgdGhpcy5hdmFpbGFibGVGaWVsZHMsXHJcbiAgICAgICAgICB0aGlzLmZpZWxkLlZpc2libGVJZlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9taXRfc3BlY2lhbF9jaGFyKGV2ZW50KSB7XHJcbiAgICB2YXIgaztcclxuICAgIGsgPSBldmVudC5rZXlDb2RlOyAvLyAgICAgICAgIGsgPSBldmVudC5rZXlDb2RlOyAgKEJvdGggY2FuIGJlIHVzZWQpXHJcbiAgICBpZiAoayA9PSAzNCkge1xyXG4gICAgICBldmVudC5rZXlDb2RlID0gMDtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYSBpbCBGb3JtR3JvdXAgcGVyIGwnYWdnaXVudGEgZGkgdW4gbnVvdm8gY2FtcG8gYWxsJ2ludGVybm8gZGVsbGEgZm9ybS5cclxuICAgKiBNZXRvZG8gcmljaGlhbWF0byBvZ25pIHZvbHRhIGNoZSBjYW1iaWEgaWwgdGlwbyBkZWwgY2FtcG8gc2NlbHRvIG8gdmllbmUgYWdnaXVudG8vbW9kaWZpY2F0byB1biBGaWVsZFxyXG4gICAqL1xyXG4gIGNyZWF0ZUZpZWxkRm9ybSgpIHtcclxuICAgIHRoaXMuZmllbGRGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgTGFiZWw6IFtcclxuICAgICAgICB0aGlzLmZpZWxkLkxhYmVsLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bYS16QS1aIF0qJFwiKSxcclxuICAgICAgICBdLFxyXG4gICAgICBdLFxyXG4gICAgICBEZXNjcmlwdGlvbjogW1xyXG4gICAgICAgIHRoaXMuZmllbGQuRGVzY3JpcHRpb24sXHJcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgXSxcclxuICAgICAgUmVhZG9ubHk6IFt0aGlzLmZpZWxkLlJlYWRvbmx5XSxcclxuICAgICAgUmVhZG9ubHlJZjogW3RoaXMuZmllbGQuUmVhZG9ubHlJZl0sXHJcbiAgICAgIFJlcXVpcmVkOiBbdGhpcy5maWVsZC5SZXF1aXJlZF0sXHJcbiAgICAgIEZpZWxkVHlwZTogW1xyXG4gICAgICAgIHRoaXMuZmllbGQuRmllbGRUeXBlLFxyXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIF0sXHJcbiAgICAgIERNTW9kdWxlOiBbbnVsbF0sXHJcbiAgICAgIERNRmllbGQ6IFtudWxsXSxcclxuICAgICAgRGF0YUdldHRlclR5cGU6IFtcclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUsXHJcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBdLFxyXG4gICAgICBDb2xTcGFuU2l6ZXM6IFt0aGlzLmZpZWxkLkNvbFNwYW5TaXplc10sXHJcbiAgICAgIEluTGlzdFZpZXc6IFt0aGlzLmZpZWxkLkluTGlzdFZpZXddLFxyXG4gICAgICBJbnZpc2liaWxpdHk6IFt0aGlzLmZpZWxkLkludmlzaWJpbGl0eV0sXHJcbiAgICAgIFZpc2libGVJZjogW3RoaXMuZmllbGQuVmlzaWJsZUlmLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIE1haW50YWluX1ZhbHVlOiBbdGhpcy5maWVsZC5NYWludGFpbl9WYWx1ZV0sXHJcbiAgICAgIFRvb2x0aXA6IFt0aGlzLmZpZWxkLlRvb2x0aXAsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgTGFiZWxzdHlsZUNTUzogW3RoaXMuZmllbGQuTGFiZWxzdHlsZUNTUywgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBGaWVsZHN0eWxlQ1NTOiBbdGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIEZvcm11bGE6IFt0aGlzLmZpZWxkLkZvcm11bGEsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgRGF0YUdldHRlclZhbHVlOiBbdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSwgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBEYXRhR2V0dGVySGFzUmVzZXRCdXR0b246IFt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIERhdGFHZXR0ZXJJc011bHRpc2VsZWN0OiBbdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJJc011bHRpc2VsZWN0LCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcblxyXG4gICAgICBBbnN3ZXJTdHlsZUxhYmVsc3R5bGVDU1M6IFt0aGlzLmZpZWxkLkFuc3dlclN0eWxlLkxhYmVsc3R5bGVDU1MsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgQW5zd2VyU3R5bGVGaWVsZHN0eWxlQ1NTOiBbdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5GaWVsZHN0eWxlQ1NTLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIEFuc3dlclN0eWxlVmlzaWJsZUlmOiBbdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgQW5zd2VyU3R5bGVDb2xTcGFuU2l6ZXM6IFt0aGlzLmZpZWxkLkFuc3dlclN0eWxlLkNvbFNwYW5TaXplc10sXHJcbiAgICAgIEFuc3dlclN0eWxlSW5MaXN0VmlldzogW3RoaXMuZmllbGQuQW5zd2VyU3R5bGUuSW5MaXN0Vmlld10sXHJcbiAgICAgIEFuc3dlclN0eWxlSW52aXNpYmlsaXR5OiBbdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5JbnZpc2liaWxpdHldLFxyXG4gICAgfSk7XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIkZPUk0gRklFTEQgQ1JFQVRPXCIsIHRoaXMuZmllbGQuRGF0YUdldHRlcik7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUZpZWxkc0dyb3Vwcykge1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgXCJGaWVsZEdyb3VwXCIsXHJcbiAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCh0aGlzLmZpZWxkLkZpZWxkR3JvdXAsIFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHF1ZXN0aW9uUG9sbChjb250cm9sOiBGb3JtQ29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICAvLyBjJ8OoIHVuIEZvcm1Db250cm9sIGNoZSDDqCB2dW90byBjaGUgZGEgcHJvYmxlbWkgKHByb2JhYmlsbWVudGUgdHlwZSBEYXRhLCBjYW1wbyBGb3JtYXRvKVxyXG4gICAgaWYgKGNvbnRyb2wudmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBVdGlsaXR5SGVscGVyU2VydmljZS5zdHJpbmdDaGVja1BhcmVudGVzaXMoXHJcbiAgICAgICAgICBjb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgY29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB7IFwiTWlzc2luZyBQYXJlbnRoZXNpc1wiOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICBzdHJpbmdTYW5pdGFpemVkVmFsaWRhdG9yKGNvbnRyb2w6IEZvcm1Db250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIC8vIGMnw6ggdW4gRm9ybUNvbnRyb2wgY2hlIMOoIHZ1b3RvIGNoZSBkYSBwcm9ibGVtaSAocHJvYmFiaWxtZW50ZSB0eXBlIERhdGEsIGNhbXBvIEZvcm1hdG8pXHJcbiAgICBpZiAoY29udHJvbC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIFV0aWxpdHlIZWxwZXJTZXJ2aWNlLnN0cmluZ0NoZWNrUGFyZW50ZXNpcyhcclxuICAgICAgICAgIGNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBjb250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHsgXCJMYSBmb3JtdWxhIG5vbiDDqCB2YWxpZGFcIjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gZ2V0QWxsRm9ybVZhbGlkYXRpb25FcnJvcnMoKSB7XHJcbiAgLy8gICBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAvLyAgICAgY29uc3QgY29udHJvbEVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9XHJcbiAgLy8gICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoa2V5KS5lcnJvcnM7XHJcbiAgLy8gICAgIGlmIChjb250cm9sRXJyb3JzICE9IG51bGwpIHtcclxuICAvLyAgICAgICBPYmplY3Qua2V5cyhjb250cm9sRXJyb3JzKS5mb3JFYWNoKChrZXlFcnJvcikgPT4ge1xyXG4gIC8vICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgLy8gICAgICAgICAgIFwiS2V5IGNvbnRyb2w6IFwiICsga2V5ICsgXCIsIGtleUVycm9yOiBcIiArIGtleUVycm9yICsgXCIsIGVyciB2YWx1ZTogXCIsXHJcbiAgLy8gICAgICAgICAgIGNvbnRyb2xFcnJvcnNba2V5RXJyb3JdXHJcbiAgLy8gICAgICAgICApO1xyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGlhbWF0byBkYWkgbWF0LWVycm9yIHBlciBwcmVuZGVyZSBnbGkgZXJyb3JpIGdlbmVyYXRpIHJlbGF0aXZpIGFsIGNhbXBvLlxyXG4gICAqIEBwYXJhbSBjb250cm9sIMOoIGlsIG5vbWUgZGVsIEdyb3VwQ29udHJvbCBkaSBjdWkgbGVnZ2VyZSBzZSBjaSBzb25vIGVycm9yaVxyXG4gICAqL1xyXG4gIGdldEZvcm1WYWxpZGF0aW9uRXJyb3JzKGNvbnRyb2w6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbnRyb2wgPT0gXCJMYWJlbFwiKSBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdnZXRGb3JtVmFsaWRhdGlvbkVycm9ycycsIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJMYWJlbFwiXSk7XHJcblxyXG4gICAgY29uc3QgY29udHJvbEVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbY29udHJvbF0uZXJyb3JzO1xyXG4gICAgbGV0IGVycm9ycyA9IFtdO1xyXG4gICAgbGV0IHZhbHVlcyA9IFtdO1xyXG4gICAgaWYgKGNvbnRyb2xFcnJvcnMgIT0gbnVsbCkge1xyXG4gICAgICBPYmplY3Qua2V5cyhjb250cm9sRXJyb3JzKS5mb3JFYWNoKChrZXlFcnJvcikgPT4ge1xyXG4gICAgICAgIGVycm9ycy5wdXNoKGtleUVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2NvbnRyb2w6ICcsIGNvbnRyb2wpO1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdlcnJvcnM6ICcsIGVycm9ycyk7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ3ZhbHVlczogJywgdmFsdWVzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlcnJvcnMuam9pbihcIiwgXCIpO1xyXG4gIH1cclxuXHJcbiAgc2V0QWdncmVnYXRpb24oZW51bVR5cGU6IGFueSwgcmVzZXQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuYWdncmVnYXRpb25GdW5jdGlvbkVudW0gPSBlbnVtVHlwZTtcclxuICAgIGlmIChyZXNldCkgeyB0aGlzLmZpZWxkLkFnZ3JlZ2F0aW9ucyA9IFtdOyB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5hZ2dyZWdhdGlvbkZpZWxkTG9hZGVkID0gdHJ1ZTsgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBvbkZpZWxkVHlwZUNoYW5nZVxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGlhbWF0byBxdWFuZG8gY2FtYmlhIGlsIEZpZWxkVHlwZSBkZWwgQmFzZUZpZWxkIGNoZSBzaSBzdGEgYWdnaXVuZ2VuZG8vbW9kaWZpY2FuZG8uXHJcbiAgICogUmljcmVhIGwnb2dnZXR0byBmaWVsZCBwb3BvbGFuZG8gc29sbyBsZSBwcm9wcmlldMOgIGRlbCBCYXNlRmllbGQgaW5zZXJpdGUgZGFsbCd1dGVudGVcclxuICAgKiAocXVlbGxlIGNvbXVuaSBhIHR1dHRlIGxlIHRpcG9sb2dpZSBkaSBjYW1wbyksIHJpY3JlYSBsYSBmb3JtIGUsIGluIGJhc2UgYWwgRmllbGRUeXBlIHNjZWx0byxcclxuICAgKiBhZ2dpdW5nZSBhbGxhIGZvcm0gaSBGb3JtQ29udHJvbCBuZWNlc3NhcmkgZSBzZWxlemlvbmEgaWwgdGVtcGxhdGUgY29ycmV0dG8gZGEgdXNhcmUuXHJcbiAgICogQHBhcmFtIHJlc3RvcmVGaWVsZCBTZSBUUlVFIHJpcHJpc3RpbmEgaSB2YWxvcmkgYmFzZSAoZXJlZGl0YXRpIGRhbCBtb2RlbGxvIEJhc2VGaWVsZCkgZGVsIGNhbXBvIGFnZ2l1bnRvL21vZGlmaWNhdG9cclxuICAgKi9cclxuICBvbkZpZWxkVHlwZUNoYW5nZShyZXN0b3JlRmllbGQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uRmllbGRMb2FkZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgaWYgKHJlc3RvcmVGaWVsZCkge1xyXG4gICAgICB0aGlzLnJlc3RvcmVCYXNlRmllbGRQcm9wZXJ0aWVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jcmVhdGVGaWVsZEZvcm0oKTtcclxuICAgIHRoaXMub25Db2xTcGFuU2l6ZVNlbGVjdCgpO1xyXG4gICAgaWYgKCh0aGlzLmZpZWxkIGFzIEJhc2VGaWVsZCkuSW5MaXN0VmlldyA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuSW5MaXN0VmlldyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoKHRoaXMuZmllbGQgYXMgQmFzZUZpZWxkKS5JbnZpc2liaWxpdHkgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZpZWxkLkludmlzaWJpbGl0eSA9IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTztcclxuICAgIH1cclxuICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gbnVsbDtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGQuRmllbGRUeXBlKSB7XHJcblxyXG4gICAgICAvLyNyZWdpb24gQ0FNUE8gREkgVEVTVE9cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQ2FtcG8gZGkgdGVzdG9cIl06XHJcbiAgICAgICAgdGhpcy5zZXRBZ2dyZWdhdGlvbihOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgcmVzdG9yZUZpZWxkKTtcclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuVGV4dE1hc2sgIT0gbnVsbCkge1xyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5UZXh0TWFzayA9IE51bWJlcigodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLlRleHRNYXNrKSBhcyBUZXh0TWFza0VudW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5NaWNyb3Bob25lID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuTWljcm9waG9uZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlRleHRNYXNrXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuVGV4dE1hc2spXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1heExlbmdodFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLk1heExlbmdodCwgW1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXlswLTldKiRcIiksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaW5MZW5naHRcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5NaW5MZW5naHQsIFtcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGwsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bMC05XSokXCIpLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWljcm9waG9uZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLk1pY3JvcGhvbmUpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkljb25OYW1lXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuSWNvbk5hbWUpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkljb25Qb3NpdGlvblwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLkljb25Qb3NpdGlvbilcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2hvd1RleHRGaWVsZEljb24gPSAhISgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLkljb25OYW1lKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMudGV4dEZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdFRleHRGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIENBTVBPIERJIFRFU1RPXHJcblxyXG4gICAgICAvLyNyZWdpb24gTEFCRUxcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtWydFdGljaGV0dGEnXTpcclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgTGFiZWxGaWVsZCkuRXRpY2hldHRhID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuRXRpY2hldHRhID0gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiRXRpY2hldHRhXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIExhYmVsRmllbGQpLkV0aWNoZXR0YSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5sYWJlbEZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdExhYmVsRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBMQUJFTFxyXG5cclxuICAgICAgLy8jcmVnaW9uIEJVVFRPTlxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bJ0JvdHRvbmUnXTpcclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLkJ1dHRvbkNvZGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5CdXR0b25Db2RlID0gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiQ29kaWNlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5CdXR0b25Db2RlKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuQnV0dG9uQ29kZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLkJ1dHRvbkNvZGUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJY29uYVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuSWNvbilcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5idXR0b25GaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRBY3Rpb25CdXR0b25GaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIEJVVFRPTiAgICAgIFxyXG5cclxuICAgICAgLy8jcmVnaW9uIEFSRUEgREkgVEVTVE9cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQXJlYSBkaSB0ZXN0b1wiXTpcclxuICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0aW9uKE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCByZXN0b3JlRmllbGQpO1xyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWljcm9waG9uZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLk1pY3JvcGhvbmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiUm93c1wiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5Sb3dzLCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeWzAtOV0qJFwiKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNYXhMZW5naHRcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWF4TGVuZ2h0LCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeWzAtOV0qJFwiKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaW5MZW5naHRcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWluTGVuZ2h0LCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeWzAtOV0qJFwiKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaWNyb3Bob25lXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLk1pY3JvcGhvbmUpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJY29uTmFtZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5JY29uTmFtZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvblBvc2l0aW9uXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLkljb25Qb3NpdGlvbilcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnNob3dUZXh0YXJlYUZpZWxkSWNvbiA9ICEhKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLkljb25OYW1lKTtcclxuICAgICAgICB0aGlzLmluaXRUZXh0YXJlYUZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy50ZXh0YXJlYUZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gQVJFQSBESSBURVNUT1xyXG5cclxuICAgICAgLy8jcmVnaW9uIEJPT0xFQU5PXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5Cb29sZWFubzpcclxuICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0aW9uKE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCByZXN0b3JlRmllbGQpO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIklzVHJpc3RhdGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgQm9vbGVhbkZpZWxkKS5Jc1RyaXN0YXRlKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiUHJlc2V0YXRpb25UeXBlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBCb29sZWFuRmllbGQpLlByZXNldGF0aW9uVHlwZSxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmJvb2xlYWRGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRCb29sZWFuRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBCT09MRUFOT1xyXG5cclxuICAgICAgLy8jcmVnaW9uIERBVEEgRS9JIE9SQVxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJEYXRhIGUvbyBvcmFcIl06XHJcbiAgICAgICAgdGhpcy5zZXRBZ2dyZWdhdGlvbihOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgcmVzdG9yZUZpZWxkKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGQuSXNPbmx5RGF0ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLklzT25seURhdGUgPSBEYXRlVGltZVR5cGVFbnVtW1wiU29sbyBkYXRhXCJdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJc09ubHlEYXRlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuSXNPbmx5RGF0ZSwgW1xyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaW5EYXRlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLk1pbkRhdGUsXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNYXhEYXRlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLk1heERhdGUsXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJEYXRlRm9ybWF0XCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuRGF0ZUZvcm1hdClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvbnNQb3NpdGlvblwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLkljb25zUG9zaXRpb24pXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkNsb3NlSWNvblBvc2l0aW9uXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuQ2xvc2VJY29uUG9zaXRpb24pXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlVzZVRvb2x0aXBcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkKS5Vc2VUb29sdGlwID8/IGZhbHNlKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmRhdGVGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXREYXRlRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBEQVRBIEUvSSBPUkFcclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBDQU1QTyBOVU1FUklDT1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJDYW1wbyBudW1lcmljb1wiXTpcclxuICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0aW9uKE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCByZXN0b3JlRmllbGQpO1xyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5Jc0ludGVnZXIgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5Jc0ludGVnZXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJc0ludGVnZXJcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5Jc0ludGVnZXIpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaW5WYWx1ZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLk1pblZhbHVlLCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeLT9bMC05XSsoLFswLTldK3xcXC5bMC05XSspPyRcIiksIC8vKFwiXlswLTldKiRcIiksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWF4VmFsdWVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5NYXhWYWx1ZSwgW1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXi0/WzAtOV0rKCxbMC05XSt8XFwuWzAtOV0rKT8kXCIpLCAvLyhcIl5bMC05XSokXCIpLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkRlY2ltYWxTZXBhcmF0b3JcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuRGVjaW1hbFNlcGFyYXRvcixcclxuICAgICAgICAgICAgW3RoaXMucXVlc3Rpb25Qb2xsLCBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeW2EtekEtWiAtLycsLl8vXFxcXF48Pl0rXCIpXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiRGVjaW1hbFByZWNpc2lvblwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5EZWNpbWFsUHJlY2lzaW9uLFxyXG4gICAgICAgICAgICBbdGhpcy5xdWVzdGlvblBvbGwsIFZhbGlkYXRvcnMucGF0dGVybihcIl5bMC05XSskXCIpXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiVGhvdXNhbmRzU2VwYXJhdG9yXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLlRob3VzYW5kc1NlcGFyYXRvcixcclxuICAgICAgICAgICAgW3RoaXMucXVlc3Rpb25Qb2xsLCBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeW2EtekEtWiAtLycsLl8vXFxcXF48Pl0rXCIpXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiQ3VycmVuY3lTeW1ib2xcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuQ3VycmVuY3lTeW1ib2wsXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNZWFzdXJlVW5pdFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5NZWFzdXJlVW5pdCxcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGxcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvbk5hbWVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5JY29uTmFtZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvblBvc2l0aW9uXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuSWNvblBvc2l0aW9uKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zaG93TnVtZXJpY0ZpZWxkSWNvbiA9ICEhKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuSWNvbk5hbWUpO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5udW1lcmljRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0TnVtZXJpY0ZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gQ0FNUE8gTlVNRVJJQ09cclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBBTExFR0FUT1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW0uQWxsZWdhdG86XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJBbGxvd2VkTWltZVR5cGVzXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBBdHRhY2htZW50RmllbGQpLkFsbG93ZWRNaW1lVHlwZXNcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiaXNNdWx0aUF0dGFjaFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBBdHRhY2htZW50RmllbGQpLmlzTXVsdGlBdHRhY2gpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMuYXR0YWNobWVudEZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdEF0dGFjaG1lbnRGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIEFMTEVHQVRPXHJcblxyXG4gICAgICAvLyNyZWdpb24gSU1NQUdJTkVcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkltbWFnaW5lOlxyXG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRHluQXR0YWNobWVudCA9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5EeW5BdHRhY2htZW50ID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRW5hYmxlRHJhd2luZyA9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5FbmFibGVEcmF3aW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4LFxyXG4gICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgoNDMyMCldXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHggPSAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHggIT0gbnVsbCA/ICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeCA6IDEyODtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJFbmFibGVEcmF3aW5nXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkVuYWJsZURyYXdpbmcpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmltYWdlRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0SW1hZ2VGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIC8qXHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24gPSBuZXcgQXR0YWNobWVudEZpZWxkKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBcIkVuYWJsZURyYXdpbmdcIixcclxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkVuYWJsZURyYXdpbmcpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBcIkltYWdlSXNDb250ZXh0dWFsQXR0YWNobWVudFwiLFxyXG4gICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5JbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnRcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIC8vIEltcG9zdG8gaSBGb3JtQ29udHJvbCB2YXJpYWJpbGkuXHJcbiAgICAgIHRoaXMub25JbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnRDaGFuZ2UoKTtcclxuICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmltYWdlRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgICAqL1xyXG4gICAgICAvLyNlbmRyZWdpb24gSU1NQUdJTkVcclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBFTEVOQ08gR0VORVJJQ09cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGdlbmVyaWNvXCJdOlxyXG4gICAgICAgIHRoaXMuc2V0QWdncmVnYXRpb24oTm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIHJlc3RvcmVGaWVsZCk7XHJcblxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuSW5MaXN0VmlldyA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLkluTGlzdFZpZXcgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkludmlzaWJpbGl0eSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLkludmlzaWJpbGl0eSA9IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSXNNdWx0aUNob2ljaGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLklzTXVsdGlDaG9pY2hlKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiUHJlc2VudGF0aW9uTW9kZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlByZXNlbnRhdGlvbk1vZGUsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5saXN0VmFsdWVGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRMaXN0VmFsdWVGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIEVMRU5DTyBHRU5FUklDT1xyXG5cclxuICAgICAgLy8jcmVnaW9uIEVMRU5DTyBJTU1BR0lOSVxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl06XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSXNNdWx0aUNob2ljaGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5Jc011bHRpQ2hvaWNoZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHgsXHJcbiAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heCg0MzIwKV1cclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5pbWFnZUZpZWxkU2VsZWN0b3JGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0SW1hZ2VTZWxlY3RvckZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gRUxFTkNPIElNTUFHSU5JXHJcblxyXG4gICAgICAvLyNyZWdpb24gSU1NQUdJTkUgQ09OIE1BUktFUlxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJJbW1hZ2luZSBjb24gbWFya2Vyc1wiXTpcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJSZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4LFxyXG4gICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgoNDMyMCldXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMuaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdEltYWdlV2l0aE1hcmtlcnNGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIElNTUFHSU5FIENPTiBNQVJLRVIgICAgICAgIFxyXG5cclxuICAgICAgLy8jcmVnaW9uIExPT0tVUFxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW0uTG9va3VwOlxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkVudGl0eVNvdXJjZU5hbWVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExvb2t1cEZpZWxkKS5FbnRpdHlTb3VyY2VOYW1lLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJVc2VBc0dldE9yRGlzY2FyZFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBMb29rdXBGaWVsZCkuVXNlQXNHZXRPckRpc2NhcmQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMubG9va3VwRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBMT09LVVBcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgW1xyXG4gICAgICAgIEZpZWxkVHlwZUVudW0uQWxsZWdhdG8sXHJcbiAgICAgICAgRmllbGRUeXBlRW51bS5JbW1hZ2luZSxcclxuICAgICAgICBGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl0sXHJcbiAgICAgIF0uaW5jbHVkZXModGhpcy5maWVsZC5GaWVsZFR5cGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5maWVsZC5Gb3JtdWxhID0gbnVsbDtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkZvcm11bGFcIl0uZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiSW5MaXN0Vmlld1wiXS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJJbnZpc2liaWxpdHlcIl0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkZvcm11bGFcIl0uZW5hYmxlKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJJbkxpc3RWaWV3XCJdLmVuYWJsZSgpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiSW52aXNpYmlsaXR5XCJdLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBbXHJcbiAgICAgICAgRmllbGRUeXBlRW51bS5BbGxlZ2F0byxcclxuICAgICAgICBGaWVsZFR5cGVFbnVtLkltbWFnaW5lLFxyXG4gICAgICAgIEZpZWxkVHlwZUVudW1bXCJGb3JtIGRpIGRldHRhZ2xpb1wiXSxcclxuICAgICAgICBGaWVsZFR5cGVFbnVtW1wiRGF0YSBlL28gb3JhXCJdLFxyXG4gICAgICBdLmluY2x1ZGVzKHRoaXMuZmllbGQuRmllbGRUeXBlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJMYWJlbHN0eWxlQ1NTXCJdLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkZpZWxkc3R5bGVDU1NcIl0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkxhYmVsc3R5bGVDU1NcIl0uZW5hYmxlKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJGaWVsZHN0eWxlQ1NTXCJdLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKFtGaWVsZFR5cGVFbnVtLkJvb2xlYW5vXS5pbmNsdWRlcyh0aGlzLmZpZWxkLkZpZWxkVHlwZSkpIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkxhYmVsc3R5bGVDU1NcIl0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkxhYmVsc3R5bGVDU1NcIl0uZW5hYmxlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9uRmllbGRUeXBlQ2hhbmdlXHJcblxyXG4gIC8vI3JlZ2lvbiBvbkRhdGFHZXR0ZXJUeXBlQ2hhbmdlXHJcbiAgYXN5bmMgb25EYXRhR2V0dGVyVHlwZUNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtWydEYSBtb2R1bG8gZGluYW1pY28nXSAmJiB0aGlzLmZvcm1zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuZ2V0QWxsTW9kdWxlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgIT0gRGF0YUdldHRlclR5cGVFbnVtLkZvcm11bGEpIHtcclxuICAgICAgdGhpcy5maWVsZC5Gb3JtdWxhID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuRE1Nb2R1bGUgPSBudWxsO1xyXG4gICAgdGhpcy5ETUZpZWxkID0gbnVsbDtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9uRGF0YUdldHRlclR5cGVDaGFuZ2VcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIGNhbWJpbyBkZWwgdmFsb3JlIGRlbGxhIHByb3ByaWV0w6AgSW1hZ2VJc0NvbnRleHR1YWxBdHRhY2htZW50IG5lbCBjYXNvXHJcbiAgICogZGkgY2FtcGkgZGkgdGlwbyBJbW1hZ2luZS4gU2UgVFJVRSBhbGxvcmEgcmltdW92ZSBpIEZvcm1Db250cm9sIHBlciBsZSBwcm9wcmlldMOgIElzTXVsdGlBdHRhY2hcclxuICAgKiBlIEFsbG93ZWRNaW1lVHlwZXMgZSBhZ2dpdW5nZSBpIEZvcm1Db250cm9sIHBlciBsZSBwcm9wcmlldMOgIEltZ05hbWUgZSBDb250ZXh0dWFsQXR0YWNobWVudCxcclxuICAgKiBhbHRyaW1lbnRpIGlsIGNvbnRyYXJpby5cclxuICAgKi9cclxuICBvbkltYWdlSXNDb250ZXh0dWFsQXR0YWNobWVudENoYW5nZSgpIHtcclxuXHJcbiAgICAvKlxyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuSW1nTmFtZSA9IG51bGw7XHJcbiAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uLkFsbG93ZWRNaW1lVHlwZXMgPSBbXTtcclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24uSXNNdWx0aUF0dGFjaCA9IGZhbHNlO1xyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQ29udGV4dHVhbEF0dGFjaG1lbnQgPSBudWxsO1xyXG5cclxuICAgIGlmICgodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5JbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnQpIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5yZW1vdmVDb250cm9sKFwiSXNNdWx0aUF0dGFjaFwiKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5yZW1vdmVDb250cm9sKFwiQWxsb3dlZE1pbWVUeXBlc1wiKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgIFwiSW1nTmFtZVwiLFxyXG4gICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5JbWdOYW1lLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxyXG4gICAgICAgIClcclxuICAgICAgKTsgICAgICBcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgIFwiQ29udGV4dHVhbEF0dGFjaG1lbnRcIixcclxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQ29udGV4dHVhbEF0dGFjaG1lbnQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5yZW1vdmVDb250cm9sKFwiSW1nTmFtZVwiKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5yZW1vdmVDb250cm9sKFwiQ29udGV4dHVhbEF0dGFjaG1lbnRcIik7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBcIklzTXVsdGlBdHRhY2hcIixcclxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQXR0YWNoRGVmaW5pdGlvbi5Jc011bHRpQXR0YWNoXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgXCJBbGxvd2VkTWltZVR5cGVzXCIsXHJcbiAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24uQWxsb3dlZE1pbWVUeXBlc1xyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgICovXHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBpbnRlcmNldHRhcmUgbCdhZ2dpdW50YSBkaSB1biBhbGxlZ2F0byBuZWkgY2FtcGkgZGkgdGlwbyBJbW1hZ2luZSBwZXIgYWdnaW9ybmFyZVxyXG4gICAqIGlsIHZhbG9yZSBkZWxsYSBwcm9wcmlldMOgIENvbnRleHR1YWxBdHRhY2htZW50IGUgbGEgdmFsaWRhemlvbmUgZGVsIHJlbGF0aXZvIEZvcm1Db250cm9sLlxyXG4gICAqIEBwYXJhbSBldmVudCBBcnJheSBjb250ZW5lbnRlIGwnZWxlbmNvIGFnZ2lvcm5hdG8gZGVnbGkgYWxsZWdhdGkgY2FyaWNhdGkgKG5lbCBub3N0cm8gY2FzbyBuZSBjb250aWVuZSBhbCBwacO5IDEpLlxyXG4gICAqL1xyXG4gIGNhdGNoQ29udGV4dHVhbEF0dGFjaG1lbnRDaGFuZ2UoZXZlbnQ6IEFycmF5PElBdHRhY2htZW50RFRPPikge1xyXG4gICAgLypcclxuICAgIGlmIChldmVudCAmJiBldmVudC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkNvbnRleHR1YWxBdHRhY2htZW50ID0gZXZlbnRbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5Db250ZXh0dWFsQXR0YWNobWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiQ29udGV4dHVhbEF0dGFjaG1lbnRcIl0uc2V0VmFsdWUoXHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkNvbnRleHR1YWxBdHRhY2htZW50XHJcbiAgICApO1xyXG4gICAgKi9cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbGxhIHNlbGV6aW9uZSBkaSB1bmEgY2xhc3NlIG5lbGxhIHNlbGVjdCBwZXIgbGUgY29sb25uZSBkaSBib290c3RyYXBcclxuICAgKiBkYSB1c2FyZSBuZWxsYSB2aXN1YWxpenphemlvbmUgZGVsIGNhbXBvLiBRdWVzdGEgZnVuemlvbmUgbWFuaXBvbGEgbGEgc29yZ2VudGUgZGF0aSBwZXJcclxuICAgKiBsYSBlcXAtc2VsZWN0IGluIG1vZG8gZGEgZXNjbHVkZXJlIGkgdmFsb3JpIGRlbGwnZW51bWVyYXRvcmUgY2hlIGZhbm5vIHJpZmVyaW1lbnRvIGFkXHJcbiAgICogdW5hIGxhcmdoZXp6YSBkaSBzY2hlcm1vIGdpw6Agc2VsZXppb25hdGEuIEVzZW1waW86IHBlciBnbGkgc2NoZXJtaSBwaWNjb2xpIChzbSkgbCd1dGVudGVcclxuICAgKiBzZWxlemlvbmEgbGEgY2xhc3NlIFwiY29sLXNtLTZcIiwgYWwgY2hhbmdlIGRlbCB2YWxvcmUgcXVlc3RvIG1ldG9kbyByaW11b3ZlIGRhbGxhIHNlbGVjdFxyXG4gICAqIHR1dHRpIGdsaSBhbHRyaSB2YWxvcmkgcGVyIGxhIGdyYW5kZXp6YSBkaSBzY2hlcm1vIHNlbGV6aW9uYXRhLlxyXG4gICAqL1xyXG4gIG9uQ29sU3BhblNpemVTZWxlY3QoKSB7XHJcbiAgICAvLyBSZWN1cGVybyBsJ2FycmF5IGRlZ2xpIG9nZ2V0dGkgY2hpYXZlLXZhbG9yZSBjaGUgcmFwcHJlc2V0YSBsJ2VudW1lcmF0b3JlXHJcbiAgICBsZXQgY29sU2l6ZUNsYXNzRW51bUFycmF5ID0gdGhpcy5lbnVtSGVscGVyLmdldEVudW1BcnJheShcclxuICAgICAgQ29sU3BhblNpemVzRW51bSxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIG51bGxcclxuICAgICk7XHJcbiAgICAvLyBDb3N0cnVpc2NvIGwnYXJyYXkgZGVsbGUgY2xhc3NpIHNlbGV6aW9uYXRlIGRhbGwndXRlbnRlIGluIGZvcm1hdG8gc3RyaW5nYVxyXG4gICAgbGV0IHNlbGVjdGVkRGltZW5zaW9uc0NvbXBpbGF6aW9uZTogQXJyYXk8c3RyaW5nPiA9IHRoaXMuZmllbGQuQ29sU3BhblNpemVzXHJcbiAgICAgID8gdGhpcy5maWVsZC5Db2xTcGFuU2l6ZXMubWFwKChjb2wpID0+IENvbFNwYW5TaXplc0VudW1bY29sXSlcclxuICAgICAgOiBbXTtcclxuICAgIGxldCBzZWxlY3RlZERpbWVuc2lvbnNSaXNwb3N0YTogQXJyYXk8c3RyaW5nPiA9IHRoaXMuZmllbGQuQW5zd2VyU3R5bGUuQ29sU3BhblNpemVzXHJcbiAgICAgID8gdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5Db2xTcGFuU2l6ZXMubWFwKChjb2wpID0+IENvbFNwYW5TaXplc0VudW1bY29sXSlcclxuICAgICAgOiBbXTtcclxuICAgIC8vIEZpbHRybyBpIHZhbG9yaSBvdHRlbnV0aSBkYWxsJ2VudW1lcmF0b3JlIHBlciBlc2NsdWRlcmUgdHV0dGkgaSB2YWxvcmkgcGVyIGxlXHJcbiAgICAvLyBncmFuZGV6emUgZGkgc2NoZXJtbyBnacOgIHNlbGV6aW9uYXRlYWQgZXNjbHVzaW9uZSBkZWkgdmFsb3JpIHNlbGV6aW9uYXRpLlxyXG4gICAgdGhpcy5hdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmUgPSBjb2xTaXplQ2xhc3NFbnVtQXJyYXkuZmlsdGVyKFxyXG4gICAgICAodmFsdWU6IHsga2V5OiBudW1iZXI7IHZhbHVlOiBzdHJpbmcgfSkgPT5cclxuICAgICAgICAhc2VsZWN0ZWREaW1lbnNpb25zQ29tcGlsYXppb25lLmZpbmQoXHJcbiAgICAgICAgICAoY29sKSA9PlxyXG4gICAgICAgICAgICB2YWx1ZS52YWx1ZS5pbmNsdWRlcyhjb2wuc3Vic3RyaW5nKDQsIDYpKSAmJiB2YWx1ZS52YWx1ZSAhPSBjb2xcclxuICAgICAgICApXHJcbiAgICApO1xyXG4gICAgdGhpcy5hdmFpbGFibGVDb2xTcGFuU2l6ZXNSaXNwb3N0YSA9IGNvbFNpemVDbGFzc0VudW1BcnJheS5maWx0ZXIoXHJcbiAgICAgICh2YWx1ZTogeyBrZXk6IG51bWJlcjsgdmFsdWU6IHN0cmluZyB9KSA9PlxyXG4gICAgICAgICFzZWxlY3RlZERpbWVuc2lvbnNSaXNwb3N0YS5maW5kKFxyXG4gICAgICAgICAgKGNvbCkgPT5cclxuICAgICAgICAgICAgdmFsdWUudmFsdWUuaW5jbHVkZXMoY29sLnN1YnN0cmluZyg0LCA2KSkgJiYgdmFsdWUudmFsdWUgIT0gY29sXHJcbiAgICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbCBjYW1iaW8gZGVsIHRpcG8gZGkgdmlzdWFsaXp6YXppb25lIHNjZWx0YSBwZXIgaSBjYW1waSBkaSB0aXBvIGVsZW5jbyBnZW5lcmljby5cclxuICAgKiBTZSB2aWVuZSBzY2VsdGEgbGEgdmlzdWFsaXp6YXppb25lIGFkIGltbWFnaW5pIHN2dW90YSBsYSBsaXN0YSBkZWxsZSBjb3BwaWUgY2hpYXZlLXZhbG9yZSBpbnNlcml0ZVxyXG4gICAqIGluIHByZWNlZGVuemEsIGFsdHJpbWVudGkgc3Z1b3RhIGxhIGxpc3RhIGRlbGxlIGltbWFnaW5pIGNhcmljYXRlLlxyXG4gICAqL1xyXG4gIG9uUHJlc2VudGF0aW9uTW9kZUNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLlByZXNlbnRhdGlvbk1vZGUgPT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ1JhZGlvIGJ1dHRvbiddKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuSXNNdWx0aUNob2ljaGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWwgc2FsdmF0YWdnaW8gZGVnbGkgYWxsZWdhdGkgcXVhbmRvIHZpZW5lIGNvbmZpZ3VyYXRvIHVuIGNhbXBvIGRpIHRpcG8gXCJFbGVuY28gZ2VuZXJpY29cIlxyXG4gICAqIGNvbiBpbCB0aXBvIGRpIHZpc3VhbGl6emF6aW9uZSBhZCBpbW1hZ2luaS4gSW50ZXJjZXR0YSBsJ2VsZW5jbyBhZ2dpb3JuYXRvIGRlbGxlIGltbWFnaW5pIGNhcmljYXRlIGUgbG9cclxuICAgKiBtZW1vcml6emEgbmVsbCdvZ2dldHRvIGZpZWxkIGNvcnJlbnRlLlxyXG4gICAqIEBwYXJhbSBhdHRhY2htZW50cyBBcnJheSBhZ2dpb3JuYXRvIGRlZ2xpIGFsbGVnYXRpIGNhcmljYXRpLlxyXG4gICAqL1xyXG4gIGNhdGNoQnV0dG9uSW1hZ2VzQ2hhbmdlKGF0dGFjaG1lbnRzOiBBcnJheTxJQXR0YWNobWVudERUTz4pIHtcclxuXHJcbiAgICAodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkF0dGFjaG1lbnRMaXN0ID0gYXR0YWNobWVudHMgYXMgQXJyYXk8RHluQXR0YWNobWVudD47XHJcblxyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdC5mb3JFYWNoKChhdHRhY2htZW50OiBEeW5BdHRhY2htZW50KSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2YgYXR0YWNobWVudC5JbWFnZUhlaWdodFB4ID09IFwidW5kZWZpbmVkXCIpIHtcclxuXHJcbiAgICAgICAgdmFyIG15QmFzZTY0ID0gXCJkYXRhOmltYWdlL1wiICsgYXR0YWNobWVudC5GaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkgKyBcIjtiYXNlNjQsXCIgKyBhdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0O1xyXG4gICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuXHJcbiAgICAgICAgaW1nLnNyYyA9IG15QmFzZTY0O1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIGF0dGFjaG1lbnQuSW1hZ2VXaWR0aFB4ID0gaW1nLndpZHRoO1xyXG4gICAgICAgICAgYXR0YWNobWVudC5JbWFnZUhlaWdodFB4ID0gaW1nLmhlaWdodDtcclxuICAgICAgICAgIGF0dGFjaG1lbnQuQXR0YWNobWVudEZpZWxkVHlwZSA9IEF0dGFjaG1lbnRGaWVsZFR5cGVFbnVtLkVMRU5DT19JTU1BR0lOSTtcclxuICAgICAgICAgIGlmIChzZWxmLmltYWdlU2VsZWN0b3JBdHRhY2htZW50cykgeyBzZWxmLmltYWdlU2VsZWN0b3JBdHRhY2htZW50cy5yZWxvYWREYXRhKCk7IH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGNhdGNoQnV0dG9uSW1hZ2VDaGFuZ2UoYXR0YWNobWVudHM6IEFycmF5PElBdHRhY2htZW50RFRPPikge1xyXG5cclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkR5bkF0dGFjaG1lbnQgPSBhdHRhY2htZW50c1sxXSBhcyBEeW5BdHRhY2htZW50O1xyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQgIT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlSGVpZ2h0UHggPT0gXCJ1bmRlZmluZWRcIikge1xyXG5cclxuICAgICAgdmFyIG15QmFzZTY0ID0gXCJkYXRhOmltYWdlL1wiICsgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKSArIFwiO2Jhc2U2NCxcIiArIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5GaWxlRGF0YUJhc2U2NDtcclxuICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xyXG5cclxuICAgICAgaW1nLnNyYyA9IG15QmFzZTY0O1xyXG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHNlbGYuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZVdpZHRoUHggPSBpbWcud2lkdGg7XHJcbiAgICAgICAgc2VsZi5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlSGVpZ2h0UHggPSBpbWcuaGVpZ2h0O1xyXG4gICAgICAgIHNlbGYuZmllbGQuRHluQXR0YWNobWVudC5BdHRhY2htZW50RmllbGRUeXBlID0gQXR0YWNobWVudEZpZWxkVHlwZUVudW0uSU1NQUdJTkU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBjYXRjaEJ1dHRvbkltYWdlV2l0aE1hcmtlcnNDaGFuZ2UoYXR0YWNobWVudHM6IEFycmF5PElBdHRhY2htZW50RFRPPikge1xyXG5cclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZCkuRHluQXR0YWNobWVudCA9IGF0dGFjaG1lbnRzWzFdIGFzIER5bkF0dGFjaG1lbnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGQuRHluQXR0YWNobWVudCAhPSBudWxsICYmIHR5cGVvZiB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeCA9PSBcInVuZGVmaW5lZFwiKSB7XHJcblxyXG4gICAgICB2YXIgbXlCYXNlNjQgPSBcImRhdGE6aW1hZ2UvXCIgKyB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZUV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpICsgXCI7YmFzZTY0LFwiICsgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0O1xyXG4gICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7XHJcblxyXG4gICAgICBpbWcuc3JjID0gbXlCYXNlNjQ7XHJcbiAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgc2VsZi5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlV2lkdGhQeCA9IGltZy53aWR0aDtcclxuICAgICAgICBzZWxmLmZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeCA9IGltZy5oZWlnaHQ7XHJcbiAgICAgICAgc2VsZi5maWVsZC5EeW5BdHRhY2htZW50LkF0dGFjaG1lbnRGaWVsZFR5cGUgPSBBdHRhY2htZW50RmllbGRUeXBlRW51bS5JTU1BR0lORV9DT05fTUFSS0VSUztcclxuICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGlhbWF0byBhbCBrZXl1cCBkZWdsaSBpbnB1dCB0ZXN0dWFsaSBjaGUgcHJldmVkb25vIGwnYWdnaXVudGEgZGVsIHZhbG9yZSBpbnNlcml0byBpbiB1biBhcnJheS5cclxuICAgKiBTZSBsJ3V0ZW50ZSBwcmVtZSBpbCB0YXN0byBpbnZpbywgaW4gYmFzZSBhbCB0aXBvIGRpIGNhbXBvIGNoZSBzdGEgaW5zZXJlbmRvL21vZGlmaWNhbmRvLCBxdWVzdG8gbWV0b2RvXHJcbiAgICogYWdnaXVuZ2UgaWwgdmFsb3JlIGluc2VyaXRvIGRhbGwndXRlbnRlIG5lbGxhIGxpc3RhIGRpIHN0cmluZ2hlIGNvcnJldHRhIChpbiBpbnB1dCB2aWVuZSBwYXNzYXRvIGlsIG5vbWVcclxuICAgKiBkZWxsYSBwcm9wcmlldMOgIGluIGN1aSBpbnNlcmlyZSBsYSBzdHJpbmdhKS5cclxuICAgKiBAcGFyYW0gZXZlbnQgRXZlbnRvIGNoZSByYXBwcmVzZW50YSBpbCBrZXl1cCBkZWxsJ3V0ZW50ZVxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgTm9tZSBkZWxsYSBwcm9wcmlldMOgIGRlbCBmaWVsZCBpbiBjdWkgaW5zZXJpcmUgbGEgc3RyaW5nYSBkaWdpdGF0YS5cclxuICAgKi9cclxuICBvbk11bHRpU2VsZWN0SW5wdXRLZXl1cChldmVudCwgcHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChldmVudC5jb2RlID09PSBcIkVudGVyXCIgfHwgZXZlbnQuY29kZSA9PT0gXCJOdW1wYWRFbnRlclwiKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5maWVsZC5GaWVsZFR5cGUpIHtcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW0uTG9va3VwOlxyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5BbGxlZ2F0bzpcclxuICAgICAgICAgIGlmICghdGhpcy5maWVsZFtwcm9wZXJ0eU5hbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRbcHJvcGVydHlOYW1lXSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZpZWxkW3Byb3BlcnR5TmFtZV0ucHVzaChldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkltbWFnaW5lIGNvbiBtYXJrZXJzXCJdOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkltbWFnaW5lOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGdlbmVyaWNvXCJdOlxyXG4gICAgICAgICAgaWYgKCF0aGlzLmtleVZhbHVlT2JqZWN0LmtleSB8fCAhdGhpcy5rZXlWYWx1ZU9iamVjdC52YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoISh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzKSB7XHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzID0ge307XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlyc1t0aGlzLmtleVZhbHVlT2JqZWN0LmtleV0gPVxyXG4gICAgICAgICAgICB0aGlzLmtleVZhbHVlT2JqZWN0LnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5rZXlWYWx1ZU9iamVjdCA9IHsga2V5OiBcIlwiLCB2YWx1ZTogXCJcIiB9O1xyXG4gICAgICAgICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWUgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoaWFtYXRvIHBlciBtb3N0cmFyZSBjb21lIGVsZW5jbyBsZSBvcHppb25pIGFnZ2l1bnRlIGluIHVuIGNhbXBvIGRpIHRpcG8gXCJFbGVuY28gZ2VuZXJpY29cIi5cclxuICAgKiBAcmV0dXJucyBSZXN0aXR1aXNjZSB1biBhcnJheSBkaSBvZ2dldHRpIGRlbCB0aXBvIHsga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfSBjb24gaSB2YWxvcmkgaW5zZXJpdGkgZGFsbCd1dGVudGUuXHJcbiAgICovXHJcbiAgZ2V0RGljdGlvbmFyeUtleVZhbHVlKCkge1xyXG4gICAgaWYgKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzKSB7XHJcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cygodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycykubWFwKChrKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogayxcclxuICAgICAgICAgIHZhbHVlOiAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlyc1trXSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmltdW92ZXJlIHVuYSBvcHppb25lIGFnZ2l1bnRhIGFsIGNhbXBvIGRpIHRpcG8gXCJFbGVuY28gZ2VuZXJpY29cIlxyXG4gICAqIEBwYXJhbSBrZXkgTm9tZSBkZWxsYSBjaGlhdmUgZGEgcmltdW92ZXJlXHJcbiAgICovXHJcbiAgZGVsZXRlS2V5RnJvbURpY3Rpb25hcnkoa2V5OiBzdHJpbmcpIHtcclxuICAgIGRlbGV0ZSAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlyc1trZXldO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBvcGVuRm9ybXVsYURpYWxvZ1xyXG4gIG9wZW5Gb3JtdWxhRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dGb3JtdWxhUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0Zvcm11bGEsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmaWVsZHM6IHRoaXMuYXZhaWxhYmxlRmllbGRzLFxyXG4gICAgICAgIGZvcm11bGE6IHRoaXMuZmllbGQuRm9ybXVsYSxcclxuICAgICAgICBmb3JtdWxhT2JqZWN0OiB0aGlzLmZvcm11bGFPYmplY3RcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dGb3JtdWxhUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5maWVsZC5Gb3JtdWxhID0gcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKSA9PSBcIlwiID8gbnVsbCA6IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9wZW5Gb3JtdWxhRGlhbG9nXHJcblxyXG5cclxuICAvLyNyZWdpb24gYXZhbnRpIGluZGlldHJvXHJcbiAgLy8gYXZhbnRpSW5kaWV0cm8od2hlcmU6IHN0cmluZykge1xyXG4gIC8vICAgdGhpcy5kaWFsb2dBdmFudGlJbmRpZXRyb1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dBdmFudGlJbmRpZXRybywge1xyXG4gIC8vICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxyXG4gIC8vICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAvLyAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgLy8gICAgIGRhdGE6IHtcclxuICAvLyAgICAgICB3aGVyZTogd2hlcmVcclxuICAvLyAgICAgfSxcclxuICAvLyAgIH0pO1xyXG4gIC8vICAgdGhpcy5kaWFsb2dBdmFudGlJbmRpZXRyb1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgLy8gICAgIGNvbnNvbGUubG9nKHJlc3VsdClcclxuICAvLyAgICAgaWYgKHJlc3VsdD8uYWN0aW9uID09PSAnc2F2ZScpIHtcclxuICAvLyAgICAgICAvLyBjb25zb2xlLmxvZyhgSGFpIHNjZWx0byBzYWx2YSAoJHtyZXN1bHQud2hlcmV9KWApO1xyXG4gIC8vICAgICAgIGlmKHdoZXJlID09IFwiYXZhbnRpXCIpe1xyXG4gIC8vICAgICAgICAgdGhpcy5zYXZlQW5kRXhpdEFkZEZpZWxkKHRydWUsIDEpO1xyXG4gIC8vICAgICAgIH0gZWxzZSBpZiAod2hlcmUgPT0gXCJpbmRpZXRyb1wiKXtcclxuICAvLyAgICAgICAgIHRoaXMuc2F2ZUFuZEV4aXRBZGRGaWVsZCh0cnVlLCAtMSk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGlmIChyZXN1bHQ/LmFjdGlvbiA9PT0gJ25vc2F2ZScpIHtcclxuICAvLyAgICAgICAvLyBjb25zb2xlLmxvZyhgSGFpIHNjZWx0byB2aWEgc2VuemEgc2FsdmFyZSAoJHtyZXN1bHQud2hlcmV9KWApO1xyXG4gIC8vICAgICAgIGlmKHdoZXJlID09IFwiYXZhbnRpXCIpe1xyXG4gIC8vICAgICAgICAgdGhpcy5zYXZlQW5kRXhpdEFkZEZpZWxkKGZhbHNlLCAxKTtcclxuICAvLyAgICAgICB9IGVsc2UgaWYgKHdoZXJlID09IFwiaW5kaWV0cm9cIil7XHJcbiAgLy8gICAgICAgICB0aGlzLnNhdmVBbmRFeGl0QWRkRmllbGQoZmFsc2UsIC0xKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gQ2xvc2VTYXZlKCkge1xyXG4gIC8vICAgdGhpcy5kaWFsb2dBdmFudGlJbmRpZXRyb1JlZi5jbG9zZSh7IGFjdGlvbjogJ3NhdmUnIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gQ2xvc2UoKSB7XHJcbiAgLy8gICB0aGlzLmRpYWxvZ0F2YW50aUluZGlldHJvUmVmLmNsb3NlKHsgYWN0aW9uOiAnbm9zYXZlJ30pO1xyXG4gIC8vIH1cclxuICAvLyNlbmRyZWdpb24gYW5hbnRpXHJcblxyXG4gIC8vI3JlZ2lvbiBvcGVuVmlzaWJsZUlmRGlhbG9nXHJcbiAgb3BlblZpc2libGVJZkRpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nVmlzaWJsZUlmUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0Zvcm11bGEsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmaWVsZHM6IHRoaXMuYXZhaWxhYmxlRmllbGRzLFxyXG4gICAgICAgIGZvcm11bGE6IHRoaXMuZmllbGQuVmlzaWJsZUlmLFxyXG4gICAgICAgIGZvcm11bGFPYmplY3Q6IHRoaXMuZm9ybXVsYU9iamVjdFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGVJZlJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuZmllbGQuVmlzaWJsZUlmID0gcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKSA9PSBcIlwiID8gbnVsbCA6IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9wZW5WaXNpYmxlSWZEaWFsb2dcclxuXHJcbiAgLy8jcmVnaW9uIG9wZW5SZWFkT25seUlmRGlhbG9nXHJcbiAgb3BlblJlYWRPbmx5SWZEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlYWRPbmx5SWZSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRm9ybXVsYSwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGZpZWxkczogdGhpcy5hdmFpbGFibGVGaWVsZHMsXHJcbiAgICAgICAgZm9ybXVsYTogdGhpcy5maWVsZC5SZWFkb25seUlmLFxyXG4gICAgICAgIGZvcm11bGFPYmplY3Q6IHRoaXMuZm9ybXVsYU9iamVjdFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlYWRPbmx5SWZSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkLlJlYWRvbmx5SWYgPSByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpID09IFwiXCIgPyBudWxsIDogcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb3BlblJlYWRPbmx5SWZEaWFsb2dcclxuXHJcbiAgLy8jcmVnaW9uIG9wZW5BbnN3ZXJTdHlsZVZpc2libGVJZkRpYWxvZ1xyXG4gIG9wZW5BbnN3ZXJTdHlsZVZpc2libGVJZkRpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nVmlzaWJsZUlmUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0Zvcm11bGEsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmaWVsZHM6IHRoaXMuYXZhaWxhYmxlRmllbGRzLFxyXG4gICAgICAgIGZvcm11bGE6IHRoaXMuZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmLFxyXG4gICAgICAgIGZvcm11bGFPYmplY3Q6IHRoaXMuZm9ybXVsYU9iamVjdFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGVJZlJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmID0gcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKSA9PSBcIlwiID8gbnVsbCA6IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9wZW5BbnN3ZXJTdHlsZVZpc2libGVJZkRpYWxvZ1xyXG5cclxuICBvblRleHRGaWVsZEljb25Ub2dnbGUoZW5hYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCFlbmFibGVkKSB7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuSWNvbk5hbWUgPSBudWxsO1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLkljb25Qb3NpdGlvbiA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdJY29uTmFtZScpKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ0ljb25OYW1lJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ0ljb25Qb3NpdGlvbicpKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ0ljb25Qb3NpdGlvbicpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFRleHRGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIC8qKiBMZWdnZSBpbCB2YWxvcmUgZGkgdW5hIHByb3ByaWV0w6AgQ1NTIGRhIFRleHRGaWVsZFN0eWxlQ1NTICovXHJcbiAgZ2V0U3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLlRleHRGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIC8qKiBJbXBvc3RhIG8gY2FuY2VsbGEgdW5hIHByb3ByaWV0w6AgQ1NTIGluIFRleHRGaWVsZFN0eWxlQ1NTIGUgYWdnaW9ybmEgbCdhbnRlcHJpbWEgKi9cclxuICBzZXRTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB0ZiA9IHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkO1xyXG4gICAgaWYgKCF0Zi5UZXh0RmllbGRTdHlsZUNTUykge1xyXG4gICAgICB0Zi5UZXh0RmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgLy8gdW5kZWZpbmVkIHZpZW5lIGVzY2x1c28gZGEgSlNPTi5zdHJpbmdpZnkg4oaSIGlsIEpTT04gcmltYW5lIGNvbXBhdHRvXHJcbiAgICAodGYuVGV4dEZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8qKiBJbml6aWFsaXp6YSBsYSBwcmV2aWV3IGRlbCBUZXh0RmllbGQgKEZvcm1Gb3JtR3JvdXAgKyByZWNvcmQgZHVtbXkpICovXHJcbiAgaW5pdFRleHRGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNUZXh0RmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IHRmID0gdGhpcy5maWVsZCBhcyBUZXh0RmllbGQ7XHJcbiAgICBpZiAoIXRmLlRleHRGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIHRmLlRleHRGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfdGYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06ICcnIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2NvbnRyb2xOYW1lXTogWycnLCBbXHJcbiAgICAgICAgLi4uKHRmLk1pbkxlbmdodCA/IFtWYWxpZGF0b3JzLm1pbkxlbmd0aChOdW1iZXIodGYuTWluTGVuZ2h0KSldIDogW10pLFxyXG4gICAgICAgIC4uLih0Zi5NYXhMZW5naHQgPyBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoTnVtYmVyKHRmLk1heExlbmdodCkpXSA6IFtdKSxcclxuICAgICAgXV1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8qKiBBZ2dpb3JuYSBOYW1lIGUgRm9ybUZvcm1Hcm91cCBxdWFuZG8gaWwgQ29kaWNlIGNhbWJpYSwgcGVyIG1hbnRlbmVyZSBsYSBwcmV2aWV3IGFsbGluZWF0YSAqL1xyXG4gIG9uTGFiZWxDaGFuZ2VGb3JQcmV2aWV3KG5ld0xhYmVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1RleHRGaWVsZCAmJiAhdGhpcy5pc051bWVyaWNGaWVsZCAmJiAhdGhpcy5pc1RleHRhcmVhRmllbGQgJiYgIXRoaXMuaXNCb29sZWFuRmllbGQgJiYgIXRoaXMuaXNBdHRhY2htZW50RmllbGQgJiYgIXRoaXMuaXNMYWJlbEZpZWxkICYmICF0aGlzLmlzRGF0ZUZpZWxkICYmICF0aGlzLmlzQWN0aW9uQnV0dG9uRmllbGQgJiYgIXRoaXMuaXNMaXN0VmFsdWVGaWVsZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gbmV3TGFiZWwgfHwgJ3ByZXZpZXdfdGYnO1xyXG4gICAgY29uc3QgaW5pdFZhbCA9IHRoaXMuaXNBdHRhY2htZW50RmllbGQgPyBbXSA6ICh0aGlzLmlzRGF0ZUZpZWxkID8gbnVsbCA6ICh0aGlzLmlzTGlzdFZhbHVlRmllbGQgPyAoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLklzTXVsdGlDaG9pY2hlID8gW10gOiBudWxsKSA6ICcnKSk7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFt0aGlzLmZpZWxkLk5hbWVdOiBpbml0VmFsIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW3RoaXMuZmllbGQuTmFtZV06IFtpbml0VmFsXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIFRleHRGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBOdW1lcmljRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICAvKiogU2luY3Jvbml6emEgTWluVmFsdWUvTWF4VmFsdWUgZGFsIGZpZWxkRm9ybUdyb3VwIGFsIGNhbXBvIGUgYWdnaW9ybmEgaSB2YWxpZGF0b3IgZGVsbCdhbnRlcHJpbWEgKi9cclxuICBvbk51bWVyaWNNaW5NYXhDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZiA9IHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkO1xyXG4gICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ01pblZhbHVlJykpIHtcclxuICAgICAgbmYuTWluVmFsdWUgPSB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnTWluVmFsdWUnKS52YWx1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdNYXhWYWx1ZScpKSB7XHJcbiAgICAgIG5mLk1heFZhbHVlID0gdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ01heFZhbHVlJykudmFsdWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgb25OdW1lcmljRmllbGRJY29uVG9nZ2xlKGVuYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghZW5hYmxlZCkge1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLkljb25OYW1lID0gbnVsbDtcclxuICAgICAgKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5JY29uUG9zaXRpb24gPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5jb250YWlucygnSWNvbk5hbWUnKSkge1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdJY29uTmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdJY29uUG9zaXRpb24nKSkge1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdJY29uUG9zaXRpb24nKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGdldE51bWVyaWNTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuTnVtZXJpY0ZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0TnVtZXJpY1N0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5mID0gdGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQ7XHJcbiAgICBpZiAoIW5mLk51bWVyaWNGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIG5mLk51bWVyaWNGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAobmYuTnVtZXJpY0ZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXROdW1lcmljRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzTnVtZXJpY0ZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBuZiA9IHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkO1xyXG4gICAgaWYgKCFuZi5OdW1lcmljRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBuZi5OdW1lcmljRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsIHx8ICdwcmV2aWV3X25mJztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbY29udHJvbE5hbWVdOiAnJyB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIFtjb250cm9sTmFtZV06IFsnJ11cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBOdW1lcmljRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gVGV4dGFyZWFGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIG9uVGV4dGFyZWFGaWVsZEljb25Ub2dnbGUoZW5hYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCFlbmFibGVkKSB7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLkljb25OYW1lID0gbnVsbDtcclxuICAgICAgKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuSWNvblBvc2l0aW9uID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ0ljb25OYW1lJykpIHtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnSWNvbk5hbWUnKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5jb250YWlucygnSWNvblBvc2l0aW9uJykpIHtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnSWNvblBvc2l0aW9uJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBnZXRUZXh0YXJlYVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuVGV4dGFyZWFGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldFRleHRhcmVhU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdGEgPSB0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQ7XHJcbiAgICBpZiAoIXRhLlRleHRhcmVhRmllbGRTdHlsZUNTUykge1xyXG4gICAgICB0YS5UZXh0YXJlYUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgICh0YS5UZXh0YXJlYUZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRUZXh0YXJlYUZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1RleHRhcmVhRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IHRhID0gdGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkO1xyXG4gICAgaWYgKCF0YS5UZXh0YXJlYUZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgdGEuVGV4dGFyZWFGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfdGEnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06ICcnIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2NvbnRyb2xOYW1lXTogWycnXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIFRleHRhcmVhRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gQm9vbGVhbkZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgZ2V0Qm9vbGVhblN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgQm9vbGVhbkZpZWxkKS5Cb29sZWFuRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRCb29sZWFuU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgYmYgPSB0aGlzLmZpZWxkIGFzIEJvb2xlYW5GaWVsZDtcclxuICAgIGlmICghYmYuQm9vbGVhbkZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgYmYuQm9vbGVhbkZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChiZi5Cb29sZWFuRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEJvb2xlYW5GaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNCb29sZWFuRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGJmID0gdGhpcy5maWVsZCBhcyBCb29sZWFuRmllbGQ7XHJcbiAgICBpZiAoIWJmLkJvb2xlYW5GaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGJmLkJvb2xlYW5GaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfYmYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06IGZhbHNlIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2NvbnRyb2xOYW1lXTogW2ZhbHNlXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIEJvb2xlYW5GaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBBdHRhY2htZW50RmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRBdHRhY2htZW50U3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBBdHRhY2htZW50RmllbGQpLkF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldEF0dGFjaG1lbnRTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBhZiA9IHRoaXMuZmllbGQgYXMgQXR0YWNobWVudEZpZWxkO1xyXG4gICAgaWYgKCFhZi5BdHRhY2htZW50RmllbGRTdHlsZUNTUykge1xyXG4gICAgICBhZi5BdHRhY2htZW50RmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGFmLkF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0QXR0YWNobWVudEZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0F0dGFjaG1lbnRGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgYWYgPSB0aGlzLmZpZWxkIGFzIEF0dGFjaG1lbnRGaWVsZDtcclxuICAgIGlmICghYWYuQXR0YWNobWVudEZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgYWYuQXR0YWNobWVudEZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIGlmICghYWYuQWxsb3dlZE1pbWVUeXBlcykge1xyXG4gICAgICBhZi5BbGxvd2VkTWltZVR5cGVzID0gQXZhaWxhYmxlRmlsZUV4dGVuc2lvbnMuY29uY2F0KEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucykubWFwKGV4dCA9PiBleHQua2V5KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5maWVsZC5MYWJlbCB8fCAncHJldmlld19hZic7XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogW10gfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBbY29udHJvbE5hbWVdOiBbW11dXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gQXR0YWNobWVudEZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIExhYmVsRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRMYWJlbFN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgTGFiZWxGaWVsZCkuTGFiZWxGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldExhYmVsU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgbGYgPSB0aGlzLmZpZWxkIGFzIExhYmVsRmllbGQ7XHJcbiAgICBpZiAoIWxmLkxhYmVsRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBsZi5MYWJlbEZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChsZi5MYWJlbEZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRMYWJlbEZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0xhYmVsRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGxmID0gdGhpcy5maWVsZCBhcyBMYWJlbEZpZWxkO1xyXG4gICAgaWYgKCFsZi5MYWJlbEZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgbGYuTGFiZWxGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfbGYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICBpZiAoIWxmLkV0aWNoZXR0YSkge1xyXG4gICAgICBsZi5FdGljaGV0dGEgPSB0aGlzLmZpZWxkLkRlc2NyaXB0aW9uIHx8ICdUZXN0byBldGljaGV0dGEgZGkgZXNlbXBpbyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06IGxmLkV0aWNoZXR0YSB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7IFtjb250cm9sTmFtZV06IFsnJ10gfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIExhYmVsRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gRGF0ZUZpZWxkIOKAlCBoZWxwZXJzIHNwZWNpZmljaGUgZSBDU1NcclxuXHJcbiAgb25EYXRlVHlwZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRmID0gdGhpcy5maWVsZCBhcyBEYXRlRmllbGQ7XHJcbiAgICBsZXQgZm10OiBzdHJpbmc7XHJcbiAgICBzd2l0Y2ggKGRmLklzT25seURhdGUpIHtcclxuICAgICAgY2FzZSBEYXRlVGltZVR5cGVFbnVtWydTb2xvIG9yYXJpbyddOiBmbXQgPSAnSEg6bW0nOyAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERhdGVUaW1lVHlwZUVudW1bJ0RhdGEgZSBvcmEnXTogIGZtdCA9ICdkZC9NTS95eXl5IEhIOm1tJzsgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSAnZGQvTU0veXl5eSc7ICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGRmLkRhdGVGb3JtYXQgPSBmbXQ7XHJcbiAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnRGF0ZUZvcm1hdCcpPy5zZXRWYWx1ZShmbXQpO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGdldERhdGVTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuRGF0ZUZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRmID0gdGhpcy5maWVsZCBhcyBEYXRlRmllbGQ7XHJcbiAgICBpZiAoIWRmLkRhdGVGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGRmLkRhdGVGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAoZGYuRGF0ZUZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXREYXRlRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRGF0ZUZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBkZiA9IHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkO1xyXG4gICAgaWYgKCFkZi5EYXRlRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBkZi5EYXRlRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKGRmLklzT25seURhdGUgPT0gbnVsbCkge1xyXG4gICAgICBkZi5Jc09ubHlEYXRlID0gRGF0ZVRpbWVUeXBlRW51bVsnU29sbyBkYXRhJ107XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfZGYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06IG51bGwgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBbY29udHJvbE5hbWVdOiBbbnVsbF1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBEYXRlRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRBY3Rpb25CdXR0b25TdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5BY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldEFjdGlvbkJ1dHRvblN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFiID0gdGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZDtcclxuICAgIGlmICghYWIuQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBhYi5BY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAoYWIuQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFjdGlvbkJ1dHRvbkZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0FjdGlvbkJ1dHRvbkZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBhYiA9IHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQ7XHJcbiAgICBpZiAoIWFiLkFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgYWIuQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBBY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBJbWFnZUZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgZ2V0SW1hZ2VTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkltYWdlRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRJbWFnZVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGltZyA9IHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZDtcclxuICAgIGlmICghaW1nLkltYWdlRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBpbWcuSW1hZ2VGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAoaW1nLkltYWdlRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEltYWdlRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzSW1hZ2VGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgaW1nID0gdGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkO1xyXG4gICAgaWYgKCFpbWcuSW1hZ2VGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGltZy5JbWFnZUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gSW1hZ2VGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRJbWFnZVdpdGhNYXJrZXJzU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBJbWFnZVdpdGhNYXJrZXJzRmllbGQpLkltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldEltYWdlV2l0aE1hcmtlcnNTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpd20gPSB0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZDtcclxuICAgIGlmICghaXdtLkltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGl3bS5JbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGl3bS5JbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEltYWdlV2l0aE1hcmtlcnNGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNJbWFnZVdpdGhNYXJrZXJzRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGl3bSA9IHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkO1xyXG4gICAgaWYgKCFpd20uSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgaXdtLkltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBMaXN0VmFsdWVGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIGdldExpc3RWYWx1ZVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkxpc3RWYWx1ZUZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0TGlzdFZhbHVlU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgbHYgPSB0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkO1xyXG4gICAgaWYgKCFsdi5MaXN0VmFsdWVGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGx2Lkxpc3RWYWx1ZUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChsdi5MaXN0VmFsdWVGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0TGlzdFZhbHVlRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzTGlzdFZhbHVlRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGx2ID0gdGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZDtcclxuICAgIGlmICghbHYuTGlzdFZhbHVlRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBsdi5MaXN0VmFsdWVGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfbHYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICBjb25zdCBpbml0VmFsID0gbHYuSXNNdWx0aUNob2ljaGUgPyBbXSA6IG51bGw7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06IGluaXRWYWwgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoeyBbY29udHJvbE5hbWVdOiBbaW5pdFZhbF0gfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgb25Jc011bHRpQ2hvaWNoZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0xpc3RWYWx1ZUZpZWxkKSByZXR1cm47XHJcbiAgICB0aGlzLmluaXRMaXN0VmFsdWVGaWVsZFByZXZpZXcoKTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBMaXN0VmFsdWVGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBJbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRJbWFnZVNlbGVjdG9yU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldEltYWdlU2VsZWN0b3JTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpc2YgPSB0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZDtcclxuICAgIGlmICghaXNmLkltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGlzZi5JbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGlzZi5JbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEltYWdlU2VsZWN0b3JGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNJbWFnZVNlbGVjdG9yRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGlzZiA9IHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkO1xyXG4gICAgaWYgKCFpc2YuSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgaXNmLkltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfaXNmJztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgY29uc3QgaW5pdFZhbCA9IGlzZi5Jc011bHRpQ2hvaWNoZSA/IFtdIDogbnVsbDtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogaW5pdFZhbCB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7IFtjb250cm9sTmFtZV06IFtpbml0VmFsXSB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1NcclxuXHJcbiAgc3RyaW5nU2FuaXRpemVyKHZhbHVlKSB7XHJcbiAgICBpZiAoIVV0aWxpdHlIZWxwZXJTZXJ2aWNlLnN0cmluZ0NoZWNrUGFyZW50ZXNpcyh2YWx1ZSkpIHtcclxuICAgICAgLy8gYWxlcnQoXCJlcnJvcmUhXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIGRpc2FibGVTYXZlRmllbGRcclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGRpc2FiaWxpdGFyZSBpbCBwdWxzYW50ZSBwZXIgc2FsdmFyZSBpbCBjYW1wbyBpbnNlcml0by9tb2RpZmljYXRvLlxyXG4gICAqIEByZXR1cm5zIFJlc3RpdHVpc2NlIHVuIGJvb2xlYW5vLCBzZSB0cnVlIGlsIHNhbHZhdGFnZ2lvIHZpZW5lIGRpc2FiaWxpdGF0by5cclxuICAgKi9cclxuICBkaXNhYmxlU2F2ZUZpZWxkKCk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmZpZWxkLkZpZWxkVHlwZSkge1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5Gb3JtdWxhICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkZvcm11bGEgIT0gXCJcIlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWYgKCEodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycykge1xyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycyA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlU3RyaW5nICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlU3RyaW5nICE9IG51bGwgJiZcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVN0cmluZyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAhKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMgfHxcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl06XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAhKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdCB8fFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdC5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QuZmluZChcclxuICAgICAgICAgICAgKGkpID0+IChpLkJ1dHRvbktleSA9PSBudWxsIHx8IGkuQnV0dG9uS2V5ID09PSBcInVuZGVmaW5lZFwiIHx8IGkuQnV0dG9uS2V5ID09ICcnKSB8fCAoaS5CdXR0b25WYWx1ZSA9PSBudWxsIHx8IGkuQnV0dG9uVmFsdWUgPT09IFwidW5kZWZpbmVkXCIgfHwgaS5CdXR0b25WYWx1ZSA9PSAnJylcclxuICAgICAgICAgICkgIT0gbnVsbFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW0uTG9va3VwOlxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAhKHRoaXMuZmllbGQgYXMgTG9va3VwRmllbGQpLkZpZWxkTmFtZXMgfHxcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExvb2t1cEZpZWxkKS5GaWVsZE5hbWVzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gZGlzYWJsZVNhdmVGaWVsZFxyXG5cclxuICBvblNhdmVDbGljaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVTYXZlRmllbGQoKSkge1xyXG4gICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmNvbGxlY3RWYWxpZGF0aW9uRXJyb3JzKCk7XHJcbiAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLldhcm5pbmcoXHJcbiAgICAgICAgZXJyb3JzLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiBbJ0lsIGZvcm0gY29udGllbmUgZXJyb3JpIGRpIHZhbGlkYXppb25lLiddLFxyXG4gICAgICAgICdJbXBvc3NpYmlsZSBzYWx2YXJlJ1xyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNhdmVBbmRFeGl0QWRkRmllbGQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbGxlY3RWYWxpZGF0aW9uRXJyb3JzKCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBsYWJlbE1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgTGFiZWw6ICdDb2RpY2UnLFxyXG4gICAgICBEZXNjcmlwdGlvbjogJ0Rlc2NyaXppb25lJyxcclxuICAgICAgRmllbGRUeXBlOiAnVGlwbyBjYW1wbycsXHJcbiAgICAgIEZvcm11bGE6ICdGb3JtdWxhJyxcclxuICAgICAgVmlzaWJsZUlmOiAnVmlzaWJpbGUgc2UnLFxyXG4gICAgICBSZWFkb25seUlmOiAnU29sYSBsZXR0dXJhIHNlJyxcclxuICAgICAgVGV4dE1hc2s6ICdNYXNjaGVyYScsXHJcbiAgICAgIE1heExlbmd0aDogJ0x1bmdoZXp6YSBtYXNzaW1hJyxcclxuICAgICAgTWluVmFsdWU6ICdWYWxvcmUgbWluaW1vJyxcclxuICAgICAgTWF4VmFsdWU6ICdWYWxvcmUgbWFzc2ltbycsXHJcbiAgICAgIERhdGVGb3JtYXQ6ICdGb3JtYXRvIGRhdGEnLFxyXG4gICAgICBFdGljaGV0dGE6ICdUZXN0byBldGljaGV0dGEnLFxyXG4gICAgICBJY29uTmFtZTogJ0ljb25hJyxcclxuICAgICAgQnV0dG9uTGFiZWw6ICdFdGljaGV0dGEgYm90dG9uZScsXHJcbiAgICAgIEluTGlzdFZpZXc6ICdWaXNpYmlsZSBpbiBsaXN0YScsXHJcbiAgICAgIFJlcXVpcmVkOiAnT2JibGlnYXRvcmlvJyxcclxuICAgICAgSW52aXNpYmlsaXR5OiAnSW52aXNpYmlsaXTDoCcsXHJcbiAgICAgIEZpZWxkc3R5bGVDU1M6ICdTdGlsZSBjYW1wbycsXHJcbiAgICAgIExhYmVsc3R5bGVDU1M6ICdTdGlsZSBldGljaGV0dGEnLFxyXG4gICAgICBBbGxvd2VkTWltZVR5cGVzOiAnVGlwaSBNSU1FIGNvbnNlbnRpdGknLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBlcnJvck1zZ01hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgcmVxdWlyZWQ6ICfDqCBvYmJsaWdhdG9yaW8nLFxyXG4gICAgICBtaW5sZW5ndGg6ICfDqCB0cm9wcG8gY29ydG8nLFxyXG4gICAgICBtYXhsZW5ndGg6ICfDqCB0cm9wcG8gbHVuZ28nLFxyXG4gICAgICBwYXR0ZXJuOiAnY29udGllbmUgY2FyYXR0ZXJpIG5vbiB2YWxpZGknLFxyXG4gICAgICBtaW46ICfDqCBpbmZlcmlvcmUgYWwgdmFsb3JlIG1pbmltbycsXHJcbiAgICAgIG1heDogJ8OoIHN1cGVyaW9yZSBhbCB2YWxvcmUgbWFzc2ltbycsXHJcbiAgICAgIGVtYWlsOiAnbm9uIMOoIHVuIGluZGlyaXp6byBlbWFpbCB2YWxpZG8nLFxyXG4gICAgICBtYXREYXRlcGlja2VyUGFyc2U6ICdub24gw6ggdW5hIGRhdGEgdmFsaWRhJyxcclxuICAgIH07XHJcblxyXG4gICAgT2JqZWN0LmtleXModGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChjb250cm9sTmFtZSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldChjb250cm9sTmFtZSk7XHJcbiAgICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiBjb250cm9sLmVycm9ycykge1xyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gbGFiZWxNYXBbY29udHJvbE5hbWVdIHx8IGNvbnRyb2xOYW1lO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5mb3JFYWNoKGVycm9yS2V5ID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycm9yTXNnTWFwW2Vycm9yS2V5XSB8fCBgaGEgdW4gZXJyb3JlICgke2Vycm9yS2V5fSlgO1xyXG4gICAgICAgICAgZXJyb3JzLnB1c2goYElsIGNhbXBvIFwiJHtsYWJlbH1cIiAke21zZ31gKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gRXJyb3JpIHNwZWNpZmljaSBwZXIgdGlwbyBjYW1wb1xyXG4gICAgc3dpdGNoICh0aGlzLmZpZWxkLkZpZWxkVHlwZSkge1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06IHtcclxuICAgICAgICBjb25zdCBsdiA9IHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQ7XHJcbiAgICAgICAgY29uc3QgaGFzRm9ybXVsYSA9IGx2LkZvcm11bGEgJiYgbHYuRm9ybXVsYSAhPT0gJyc7XHJcbiAgICAgICAgY29uc3QgaGFzVmFsdWVTdHJpbmcgPSBsdi5WYWx1ZVN0cmluZyAmJiBsdi5WYWx1ZVN0cmluZyAhPT0gJyc7XHJcbiAgICAgICAgY29uc3QgaGFzVmFsdWVQYWlycyA9IGx2LlZhbHVlUGFpcnMgJiYgbHYuVmFsdWVQYWlycy5sZW5ndGggPiAwO1xyXG4gICAgICAgIGlmICghaGFzRm9ybXVsYSAmJiAhaGFzVmFsdWVTdHJpbmcgJiYgIWhhc1ZhbHVlUGFpcnMpIHtcclxuICAgICAgICAgIGVycm9ycy5wdXNoKCdMXFwnZWxlbmNvIG5vbiBjb250aWVuZSB2YWxvcmknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGltbWFnaW5pXCJdOiB7XHJcbiAgICAgICAgY29uc3QgaXNmID0gdGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQ7XHJcbiAgICAgICAgaWYgKCFpc2YuQXR0YWNobWVudExpc3QgfHwgaXNmLkF0dGFjaG1lbnRMaXN0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgZXJyb3JzLnB1c2goJ0xcXCdlbGVuY28gaW1tYWdpbmkgbm9uIGNvbnRpZW5lIGVsZW1lbnRpJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc2YuQXR0YWNobWVudExpc3QuZmluZChcclxuICAgICAgICAgIGkgPT4gIWkuQnV0dG9uS2V5IHx8IGkuQnV0dG9uS2V5ID09PSAndW5kZWZpbmVkJyB8fCBpLkJ1dHRvbktleSA9PT0gJycgfHxcclxuICAgICAgICAgICAgICAgIWkuQnV0dG9uVmFsdWUgfHwgaS5CdXR0b25WYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgaS5CdXR0b25WYWx1ZSA9PT0gJydcclxuICAgICAgICApKSB7XHJcbiAgICAgICAgICBlcnJvcnMucHVzaCgnQWxjdW5pIGVsZW1lbnRpIGRlbGxcXCdlbGVuY28gaW1tYWdpbmkgbm9uIHNvbm8gY29tcGxldGkgKGNoaWF2ZSBvIHZhbG9yZSBtYW5jYW50aSknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkxvb2t1cDoge1xyXG4gICAgICAgIGNvbnN0IGxmID0gdGhpcy5maWVsZCBhcyBMb29rdXBGaWVsZDtcclxuICAgICAgICBpZiAoIWxmLkZpZWxkTmFtZXMgfHwgbGYuRmllbGROYW1lcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIGVycm9ycy5wdXNoKCdJbCBMb29rdXAgbm9uIGhhIG5lc3N1biBjYW1wbyBjb25maWd1cmF0bycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlcnJvcnM7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gc2F2ZUFuZEV4aXRBZGRGaWVsZFxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgc2FsdmFyZSBpbCBjYW1wbyBpbnNlcml0by9tb2RpZmljYXRvLlxyXG4gICAqIFNlIMOoIHN0YXRvIGluc2VyaXRvIHVuIGZpZWxkIGNvbiBsYSBzdGVzc2EgbGFiZWwgdmllbmUgZ2VuZXJhdG8gdW4gZXJyb3JlIChsZSBsYWJlbCBkZXZvbm8gZXNzZXJlIHVuaXZvY2hlKS5cclxuICAgKiBVbmEgdm9sdGEgYWdnaXVudG8vYWdnaW9ybmF0byBpbCBjYW1wbyBuZWxsJ2VsZW5jbyBkZWkgRmllbGQgZGVsbGEgRm9ybSBjaGl1ZGUgaWwgZGlhbG9nIGUgcmljYXJpY2EgbGEgdGFiZWxsYVxyXG4gICAqIGNoZSBtb3N0cmEgbCdlbGVuY28gZGVpIGNhbXBpIGFnZ2l1bnRpIGFsbGEgZm9ybS5cclxuICAgKi9cclxuICBzYXZlQW5kRXhpdEFkZEZpZWxkKHNhdmU6IGJvb2xlYW4sIG5leHRSZWxhdGl2ZUluZGV4OiBudW1iZXIgPSAwKSB7XHJcbiAgICB0aGlzLnNldFJlc2l6ZWRJbWFnZXNIZWlnaHRQeCgpO1xyXG4gICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgaWYgKHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzKSB7IHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzLnJlbG9hZERhdGEoKTsgfVxyXG4gICAgaWYgKHNhdmUpIHtcclxuXHJcbiAgICAgIHRoaXMuZmllbGQuTmFtZSA9IHRoaXMuZmllbGQuTGFiZWw7XHJcbiAgICAgIC8vIHJldHJvY29tcGF0aWJpbGl0w6AgY29uIHZhbHVlcGFpcnMgcGVyIEVsZW5jbyBHZW5lcmljb1xyXG4gICAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVtcIkVsZW5jbyBnZW5lcmljb1wiXSkge1xyXG4gICAgICAgIGlmICgoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkZvcm11bGEgJiYgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkZvcm11bGEgIT0gXCJcIikgfHwgKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVN0cmluZyAmJiAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVTdHJpbmcgIT0gXCJcIikpIHtcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl0pIHtcclxuICAgICAgICBpZiAoKCh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QubGVuZ3RoID4gMCkpIHtcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QuZm9yRWFjaCgoYXR0YWNobWVudCkgPT4ge1xyXG4gICAgICAgICAgICBhdHRhY2htZW50LlJlc2l6ZWRJbWFnZUhlaWdodFB4ID0gKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHg7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW0uSW1tYWdpbmUpIHtcclxuICAgICAgICBpZiAoKCh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkR5bkF0dGFjaG1lbnQgIT0gbnVsbCkpIHtcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkR5bkF0dGFjaG1lbnQuUmVzaXplZEltYWdlSGVpZ2h0UHggPSAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtW1wiSW1tYWdpbmUgY29uIG1hcmtlcnNcIl0pIHtcclxuICAgICAgICBpZiAoKCh0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZCkuRHluQXR0YWNobWVudCAhPSBudWxsKSkge1xyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkKS5EeW5BdHRhY2htZW50LlJlc2l6ZWRJbWFnZUhlaWdodFB4ID0gKHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtW1wiQm90dG9uZVwiXSkge1xyXG4gICAgICAgIGlmICgoKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLmZvcm11bGFzVGVtcCAhPSBudWxsKSkge1xyXG5cclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5mb3JtdWxhcyA9IG5ldyBBcnJheTxLZXlUeXBlVmFsdWU+KCk7XHJcblxyXG4gICAgICAgICAgdmFyIGZvcm11bGFzID0gKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLmZvcm11bGFzVGVtcDtcclxuICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZm9ybXVsYXMpO1xyXG5cclxuICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNBbkFjdGlvbktleShrZXksIHRoaXMuZmllbGQsIGZvcm11bGFzKSkgeyByZXR1cm47IH1cclxuICAgICAgICAgICAgICB2YXIga3R2OiBLZXlUeXBlVmFsdWUgPSBuZXcgS2V5VHlwZVZhbHVlKCk7XHJcbiAgICAgICAgICAgICAga3R2LmtleSA9IGtleTtcclxuICAgICAgICAgICAgICBrdHYudG9vbHRpcCA9IGZvcm11bGFzW2tleV0udG9vbHRpcDtcclxuICAgICAgICAgICAgICBrdHYudHlwZSA9IGZvcm11bGFzW2tleV0udHlwZTtcclxuICAgICAgICAgICAgICBrdHYudmFsdWUgPSBmb3JtdWxhc1trZXldLnZhbHVlO1xyXG4gICAgICAgICAgICAgIC8qKiBwZXIgY2FtcGkgY29uIHZhbG9yaSB2aW5jb2xhdGkgYSB1bmEgbGlzdGEsIHBvcnRvIGRpZXRybyBzaWEgaWwgdmFsb3JlIHNlbGV6aW9uYXRvIGNoZSBxdWVsbGkgYW1taXNzaWJpbGkgKi9cclxuICAgICAgICAgICAgICBrdHYuYWxsb3dlZFZhbHVlcyA9IGZvcm11bGFzW2tleV0uYWxsb3dlZFZhbHVlcztcclxuICAgICAgICAgICAgICBrdHYuc2VsZWN0ZWRBbGxvd2VkVmFsdWUgPSBmb3JtdWxhc1trZXldLnNlbGVjdGVkQWxsb3dlZFZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuZm9ybXVsYXMucHVzaChrdHYpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0Q29kZVRvRXh0cmFGaWVsZHMoKTtcclxuXHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2FkZC1mb3JtLWZpZWxkIHNhdmUnLCB0aGlzLmZpZWxkKVxyXG4gICAgICBsZXQgb3V0ID0geyBmaWVsZDogdGhpcy5maWVsZCwgcmVvcGVuOiBuZXh0UmVsYXRpdmVJbmRleCB9XHJcbiAgICAgIHRoaXMuc2F2ZUZpZWxkRXZlbnQuZW1pdChvdXQpO1xyXG5cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgb3V0ID0geyBmaWVsZDogbnVsbCwgcmVvcGVuOiBuZXh0UmVsYXRpdmVJbmRleCB9XHJcbiAgICAgIHRoaXMuc2F2ZUZpZWxkRXZlbnQuZW1pdChvdXQpO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIHNhdmVBbmRFeGl0QWRkRmllbGRcclxuXHJcbiAgaXNBbkFjdGlvbktleShrZXksIGZpZWxkOiBBY3Rpb25CdXR0b25GaWVsZCwgZm9ybXVsYXM6IEFycmF5PGFueT4pIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJpc0FuQWN0aW9uS2V5IC0ga2V5XCIsIGtleSk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaXNBbkFjdGlvbktleSAtIGZpZWxkXCIsIGZpZWxkKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJpc0FuQWN0aW9uS2V5IC0gZm9ybXVsYXNcIiwgZm9ybXVsYXMpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgICAvKnZhciBjb2RlID0gZmllbGQuQnV0dG9uQ29kZTtcclxuICAgIHZhciBlbHMgPSBmb3JtdWxhc1tjb2RlXTtcclxuICAgIHJldHVybiAoT2JqZWN0LmtleXMoZWxzKS5maW5kKHggPT4geCA9PSBrZXkpICE9IG51bGwpOyovXHJcbiAgfVxyXG5cclxuICBzZXRDb2RlVG9FeHRyYUZpZWxkcygpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgIT0gbnVsbCAmJiB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMuZmlsdGVyKHggPT4geC5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9PT0gdW5kZWZpbmVkKS5mb3JFYWNoKCh1ZmllbGRzKSA9PiB7XHJcbiAgICAgICAgdWZpZWxkcy5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9IHRoaXMuZmllbGQuTmFtZTtcclxuICAgICAgICBpZiAodHlwZW9mIHVmaWVsZHMuRmllbGRDb25maWdWYWx1ZSA9PSBcImJvb2xlYW5cIikgeyB1ZmllbGRzLkZpZWxkQ29uZmlnVmFsdWUgPSB1ZmllbGRzLkZpZWxkQ29uZmlnVmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIjsgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgIT0gbnVsbCAmJiB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMuZmlsdGVyKHggPT4geC5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9PT0gdW5kZWZpbmVkKS5mb3JFYWNoKCh1ZmllbGRzKSA9PiB7XHJcbiAgICAgICAgdWZpZWxkcy5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9IHRoaXMuZmllbGQuTmFtZTtcclxuICAgICAgICBpZiAodHlwZW9mIHVmaWVsZHMuRmllbGRDb25maWdWYWx1ZSA9PSBcImJvb2xlYW5cIikgeyB1ZmllbGRzLkZpZWxkQ29uZmlnVmFsdWUgPSB1ZmllbGRzLkZpZWxkQ29uZmlnVmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIjsgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiByZXN0b3JlQmFzZUZpZWxkUHJvcGVydGllc1xyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmlwcmlzdGluYXJlIGwnb2dnZXR0byBmaWVsZCBhbCBjYW1iaW8gZGVsIHRpcG8gc2VsZXppb25hdG8uXHJcbiAgICogTGFzY2lhIHZhbG9yaXp6YXRlIHNvbG8gbGUgcHJvcHJpZXTDoCBkZWxsJ29nZ2V0dG8gQmFzZUZpZWxkIGNvbXVuZSBhIHR1dHRpIGkgdGlwaSBkaSBjYW1wby5cclxuICAgKi9cclxuICBwcml2YXRlIHJlc3RvcmVCYXNlRmllbGRQcm9wZXJ0aWVzKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQpIHtcclxuICAgICAgY29uc3QgdG1wQmFzZUZpZWxkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpZWxkLCAoa2V5LCB2YWx1ZSkgPT4ga2V5ID09PSAnRm9ybUZvcm1Hcm91cCcgPyB1bmRlZmluZWQgOiB2YWx1ZSkpO1xyXG4gICAgICB0aGlzLmZpZWxkID0gbmV3IEJhc2VGaWVsZCgpO1xyXG4gICAgICB0aGlzLmZpZWxkLkxhYmVsID0gdG1wQmFzZUZpZWxkLkxhYmVsO1xyXG4gICAgICB0aGlzLmZpZWxkLkRlc2NyaXB0aW9uID0gdG1wQmFzZUZpZWxkLkRlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLmZpZWxkLlJlcXVpcmVkID0gdG1wQmFzZUZpZWxkLlJlcXVpcmVkO1xyXG4gICAgICB0aGlzLmZpZWxkLkZpZWxkVHlwZSA9IHRtcEJhc2VGaWVsZC5GaWVsZFR5cGU7XHJcbiAgICAgIHRoaXMuZmllbGQuRm9ybXVsYSA9IHRtcEJhc2VGaWVsZC5Gb3JtdWxhO1xyXG4gICAgICB0aGlzLmZpZWxkLkNvbFNwYW5TaXplcyA9IHRtcEJhc2VGaWVsZC5Db2xTcGFuU2l6ZXM7XHJcbiAgICAgIHRoaXMuZmllbGQuSW5MaXN0VmlldyA9IHRtcEJhc2VGaWVsZC5Jbkxpc3RWaWV3O1xyXG4gICAgICB0aGlzLmZpZWxkLkludmlzaWJpbGl0eSA9IHRtcEJhc2VGaWVsZC5JbnZpc2liaWxpdHk7XHJcbiAgICAgIHRoaXMuZmllbGQuVG9vbHRpcCA9IHRtcEJhc2VGaWVsZC5Ub29sdGlwO1xyXG4gICAgICB0aGlzLmZpZWxkLlJlYWRvbmx5ID0gdG1wQmFzZUZpZWxkLlJlYWRvbmx5O1xyXG4gICAgICB0aGlzLmZpZWxkLkZpZWxkR3JvdXAgPSB0bXBCYXNlRmllbGQuRmllbGRHcm91cDtcclxuICAgICAgdGhpcy5maWVsZC5WaXNpYmxlSWYgPSB0bXBCYXNlRmllbGQuVmlzaWJsZUlmO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNyZWdpb24gcmVzdG9yZUJhc2VGaWVsZFByb3BlcnRpZXNcclxuXHJcbiAgY291bnRWYWx1ZVBhaXJzKHZhbHVlUGFpcnMpOiBudW1iZXIge1xyXG4gICAgaWYgKHZhbHVlUGFpcnMpIHtcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHZhbHVlUGFpcnMpLmxlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIENvbmZpZ3VyZUNvbHVtbnNcclxuICBjb25maWd1cmVDb2x1bW5zKCkge1xyXG5cclxuICAgIC8vIExpc3RhIEdlbmVyaWNhIGRpIGltbWFnaW5pXHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMucHVzaCh7XHJcbiAgICAgIGtleTogJ2FjdGlvbicsIGRpc3BsYXk6ICcnLCB0eXBlOiBUeXBlQ29sdW1uLk1lbnVBY3Rpb24sIGJ1dHRvbk1lbnVJY29uOiAnbW9yZV92ZXJ0Jywgc3R5bGVzOiB7IGZsZXg6ICcwIDAgNiUnIH0sXHJcbiAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICB7IG5hbWU6ICdFbGltaW5hJywgaWNvbjogJ2RlbGV0ZScsIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5kZWxldGVMaXN0SW1hZ2UoZWxlbWVudCwgaW5kZXgsIGNvbCkgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiBcIlNwb3N0YSBzdVwiLFxyXG4gICAgICAgICAgaWNvbjogXCJhcnJvd191cHdhcmRcIixcclxuICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgICAgdGhpcy5tb3ZlRWxlbWVudChlbGVtZW50LCB0cnVlKSxcclxuICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT4gdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5pbmRleE9mKGVsZW1lbnQpID09PSAwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogXCJTcG9zdGEgZ2nDuVwiLFxyXG4gICAgICAgICAgaWNvbjogXCJhcnJvd19kb3dud2FyZFwiLFxyXG4gICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICB0aGlzLm1vdmVFbGVtZW50KGVsZW1lbnQsIGZhbHNlKSxcclxuICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgICAgdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5pbmRleE9mKGVsZW1lbnQpID49IHRoaXMuZmllbGQuQXR0YWNobWVudExpc3QubGVuZ3RoIC0gMSxcclxuICAgICAgICB9LFxyXG4gICAgICBdXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMucHVzaCh7XHJcbiAgICAgIGtleTogXCJGaWxlRGF0YUJhc2U2NFwiLFxyXG4gICAgICBkaXNwbGF5OiBcIkltbWFnaW5lXCIsXHJcbiAgICAgIHR5cGU6IFR5cGVDb2x1bW4uRXh0ZXJuYWxUZW1wbGF0ZSxcclxuICAgICAgZXh0ZXJuYWxUZW1wbGF0ZTogdGhpcy5HZW5lcmljTGlzdEltYWdlc0ltYWdlVGVtcGxhdGUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29uZmlnQ29sdW1uTGlzdEltYWdlcy5wdXNoKHtcclxuICAgICAga2V5OiBcIkJ1dHRvbktleVwiLFxyXG4gICAgICBkaXNwbGF5OiBcIkNoaWF2ZSpcIixcclxuICAgICAgdHlwZTogVHlwZUNvbHVtbi5FeHRlcm5hbFRlbXBsYXRlLFxyXG4gICAgICBleHRlcm5hbFRlbXBsYXRlOiB0aGlzLkdlbmVyaWNMaXN0SW1hZ2VzS2V5VGVtcGxhdGUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29uZmlnQ29sdW1uTGlzdEltYWdlcy5wdXNoKHtcclxuICAgICAga2V5OiBcIkJ1dHRvblZhbHVlXCIsXHJcbiAgICAgIGRpc3BsYXk6IFwiVmFsb3JlKlwiLFxyXG4gICAgICB0eXBlOiBUeXBlQ29sdW1uLkV4dGVybmFsVGVtcGxhdGUsXHJcbiAgICAgIGV4dGVybmFsVGVtcGxhdGU6IHRoaXMuR2VuZXJpY0xpc3RJbWFnZXNWYWx1ZVRlbXBsYXRlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMucHVzaCh7XHJcbiAgICAgIGtleTogXCJJbWFnZVdpZHRoUHhcIixcclxuICAgICAgZGlzcGxheTogXCJMYXJnaGV6emFcIlxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMucHVzaCh7XHJcbiAgICAgIGtleTogXCJJbWFnZUhlaWdodFB4XCIsXHJcbiAgICAgIGRpc3BsYXk6IFwiQWx0ZXp6YVwiXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBDb25maWd1cmVDb2x1bW5zXHJcblxyXG4gIC8vI3JlZ2lvbiBtb3ZlRWxlbWVudFxyXG4gIHByaXZhdGUgbW92ZUVsZW1lbnQoXHJcbiAgICBlbGVtZW50OiBEeW5BdHRhY2htZW50LFxyXG4gICAgbW92ZVVwOiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBjb25zdCBzdGFydGluZ0luZGV4ID0gdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5pbmRleE9mKGVsZW1lbnQpO1xyXG4gICAgY29uc3QgZW5kaW5nSW5kZXggPSBzdGFydGluZ0luZGV4ICsgKG1vdmVVcCA/IC0xIDogMSk7XHJcblxyXG4gICAgdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5zcGxpY2Uoc3RhcnRpbmdJbmRleCwgMSk7XHJcbiAgICB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LnNwbGljZShlbmRpbmdJbmRleCwgMCwgZWxlbWVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgaWYgKHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzKSB7IHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzLnJlbG9hZERhdGEoKTsgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gbW92ZUVsZW1lbnRcclxuXHJcbiAgLy8jcmVnaW9uIHNldEZpZWxkT3JkaW5hbFBvc2l0aW9uXHJcbiAgcHJpdmF0ZSBzZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0KSB7XHJcbiAgICAgIHRoaXMuZmllbGQuQXR0YWNobWVudExpc3QuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmaWVsZC5PcmRpbmFsUG9zaXRpb24gPSB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LmluZGV4T2YoZmllbGQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIHNldEZpZWxkT3JkaW5hbFBvc2l0aW9uXHJcblxyXG4gIHNldFJlc2l6ZWRJbWFnZXNIZWlnaHRQeCgpIHtcclxuICAgIHRoaXMucmVzaXplZEltYWdlc0hlaWdodFB4ID0gdGhpcy5maWVsZC5SZXNpemVkSW1hZ2VzSGVpZ2h0UHg7XHJcbiAgfVxyXG5cclxuICBkZWxldGVMaXN0SW1hZ2UoZWw6IER5bkF0dGFjaG1lbnQsIGk6IG51bWJlciwgY29sOiBudW1iZXIpIHtcclxuICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkNvbmZpcm0oJ0VsaW1pbmFyZSBxdWVzdGEgaW1tYWdpbmU/JywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LnNwbGljZShlbC5vcmlnaW5hbEluZGV4LCAxKTtcclxuICAgICAgaWYgKHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzKSB7IHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzLnJlbG9hZERhdGEoKTsgfVxyXG5cclxuICAgIH0sIGZhbHNlLCAnUmljaGllc3RhIGNvbmZlcm1hJyk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJbWFnZShlbDogRHluQXR0YWNobWVudCkge1xyXG4gICAgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBEQiBHRVRURVJcclxuICBvcGVuREJHZXR0ZXIoKSB7XHJcbiAgICBpZiAodGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudCAhPSBudWxsICYmICF0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLnVzZUR5bmFtaWNNb2R1bGVNb2NrKSB7XHJcblxyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5tb2RlID0gUXVlcnlFZGl0b3JNb2RlRW51bS5DT01QT1NFUjtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcubG9hZFF1ZXJ5U3RhdHVzZXMgPSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5kaWFsb2dRRVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dRRSwge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICBwYW5lbENsYXNzOiAncXVlcnktZWRpdG9yLW1vZGFsJyxcclxuICAgICAgICB3aWR0aDogJzkwJSdcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoJy4vYXNzZXRzL21vY2t1cHMvbW9ja2VkRnJvbVF1ZXJ5RWRpdG9yX1FVRVJZX1dJVEhfUVVFU1RJT04udHh0JywgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yID0+IHtcclxuICAgICAgICAgIHRoaXMudHJlYXREYXRhRnJvbVF1ZXJ5RWRpdG9yKEpTT04ucGFyc2UobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yKS5QYXJhbXMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlUUVNb2RhbCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUUVSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uRXh0ZXJuYWxDb21wb25lbnRPdXQoZXY6IGV2ZW50T3V0KSB7XHJcbiAgICBpZiAoZXYuQmVoYXZpb3Vycy5pbmRleE9mKFwic2VuZC1vdXRcIikgIT0gLTEpIHsgdGhpcy5vdXQuZW1pdChldik7IH1cclxuICAgIGlmIChldi5CZWhhdmlvdXJzLmluZGV4T2YoXCJjbG9zZS1tb2RhbFwiKSAhPSAtMSkgeyB0aGlzLmNsb3NlUUVNb2RhbCgpOyB9XHJcbiAgICBpZiAoZXYuQmVoYXZpb3Vycy5pbmRleE9mKFwic2F2ZS1xdWVyeVwiKSAhPSAtMSkge1xyXG5cclxuICAgICAgdGhpcy50cmVhdERhdGFGcm9tUXVlcnlFZGl0b3IoZXYuUGFyYW1zKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmVhdERhdGFGcm9tUXVlcnlFZGl0b3IoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlID0gZGF0YTtcclxuICAgIHRoaXMuY3JlYXRlQ29sdW1uS2V5cyhkYXRhKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNvbHVtbktleXMoZGF0YSkge1xyXG4gICAgaWYgKGRhdGEgPT0gbnVsbCAmJiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGwpIHsgZGF0YSA9IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWU7IH1cclxuICAgIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcclxuXHJcbiAgICAvLyBWMiAoRGF0YUdldHRlckNvZGVWZXJzaW9uID09PSAyKTogc2VsZWN0ZWRGaWVsZHMgw6ggZGVudHJvIHF1ZXJ5Q29tbWFuZERhdGFiYXNlQ29uZmlndXJhdGlvblxyXG4gICAgY29uc3QgaXNWMiA9IGRhdGEuRGF0YUdldHRlckNvZGVWZXJzaW9uID09PSAyO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRGaWVsZHMgPSBpc1YyXHJcbiAgICAgID8gZGF0YS5xdWVyeUNvbW1hbmREYXRhYmFzZUNvbmZpZ3VyYXRpb24/LnNlbGVjdGVkRmllbGRzXHJcbiAgICAgIDogZGF0YS5zZWxlY3RlZEZpZWxkcztcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWRGaWVsZHMgIT0gbnVsbCAmJiB0eXBlb2Ygc2VsZWN0ZWRGaWVsZHMgIT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICB0aGlzLmNvbHVtbktleXMgPSBuZXcgQXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PigpO1xyXG4gICAgICBzZWxlY3RlZEZpZWxkcy5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBsYWJlbCA9IGtleS5DdXJyZW50VHJhbnNsYXRlIHx8IGtleS5Qcm9wZXJ0eU5hbWU7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5LZXlzLnB1c2goeyBrZXk6IGtleS5EYXRhYmFzZVRhYmxlTmFtZSArIFwiX1wiICsga2V5LlByb3BlcnR5TmFtZSArIFwiX19cIiArIGxhYmVsLnJlcGxhY2UoXCIgXCIsIFwiX1wiKSwgdmFsdWU6IGxhYmVsIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIFYyOiBhdXRvLXNlbGV6aW9uYSBsYSBjb2xvbm5hIHN1Z2dlcml0YSBkYWxsJ0FJIG5lbCBwYW5uZWxsbyBkaSBjb25maWd1cmF6aW9uZVxyXG4gICAgICBpZiAoaXNWMiAmJiBkYXRhLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZT8ua2V5KSB7XHJcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmNvbHVtbktleXMuZmluZChrID0+IGsua2V5ID09PSBkYXRhLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXkpO1xyXG4gICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9IG1hdGNoLmtleTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIERCIEdFVFRFUlxyXG5cclxuICBnZXRBbGxNb2R1bGVzKCkge1xyXG4gICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICBQYXJhbU5hbWU6IFwib3JnYWlkXCIsXHJcbiAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5PcmdhSUQsXHJcbiAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QWxsRm9ybUVuZFBvaW50LFxyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAocmVzOiBBcnJheTxGb3JtPikgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5mb3JtcyA9IHRoaXMuZm9ybXMuc29ydCgodW5vLCBkdWUpID0+IHVuby5OYW1lLmxvY2FsZUNvbXBhcmUoZHVlLk5hbWUpKTtcclxuXHJcbiAgICAgICAgdGhpcy5ETUZpZWxkID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5ETU1vZHVsZSA9PSBudWxsICYmIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5ETU1vZHVsZSA9IHRoaXMuZm9ybXMuZmluZCh4ID0+IHguQ29kZSA9PSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuRE1Nb2R1bGUuRmllbGRzID0gSlNPTi5wYXJzZSh0aGlzLkRNTW9kdWxlLkpzb25GaWVsZHMpO1xyXG4gICAgICAgICAgdGhpcy5ETUZpZWxkcyA9IG5ldyBBcnJheTx7IGtleTogc3RyaW5nIH0+KCk7XHJcbiAgICAgICAgICB0aGlzLkRNTW9kdWxlLkZpZWxkcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLkRNRmllbGRzLnB1c2goeyBrZXk6IGVsZW1lbnQuVmFsdWUuTmFtZSB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuRE1GaWVsZHMgPSB0aGlzLkRNRmllbGRzLnNvcnQoKHVubywgZHVlKSA9PiB1bm8ua2V5LmxvY2FsZUNvbXBhcmUoZHVlLmtleSkpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5ETUZpZWxkID0gdGhpcy5ETUZpZWxkcy5maW5kKHggPT4geC5rZXkgPT0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4geyB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VETU1vZHVsZSgpIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJ0aGlzLi5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZVwiLCB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJ0aGlzLkRNTW9kdWxlXCIsIHRoaXMuRE1Nb2R1bGUpO1xyXG4gICAgaWYgKHRoaXMuRE1Nb2R1bGUgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkRNTW9kdWxlLkZpZWxkcyA9IEpTT04ucGFyc2UodGhpcy5ETU1vZHVsZS5Kc29uRmllbGRzKTtcclxuICAgICAgdGhpcy5ETUZpZWxkcyA9IG5ldyBBcnJheTx7IGtleTogc3RyaW5nIH0+KCk7XHJcbiAgICAgIHRoaXMuRE1Nb2R1bGUuRmllbGRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgdGhpcy5ETUZpZWxkcy5wdXNoKHsga2V5OiBlbGVtZW50LlZhbHVlLk5hbWUgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSA9IHRoaXMuRE1Nb2R1bGUuQ29kZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuRE1Nb2R1bGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5ETUZpZWxkID0gbnVsbDtcclxuICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZURNRmllbGQoKSB7XHJcbiAgICBpZiAodGhpcy5ETUZpZWxkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9IHRoaXMuRE1GaWVsZC5rZXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlRE1Db250ZXN0dWFsaXphdGlvbigpIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJvbkNoYW5nZURNQ29udGVzdHVhbGl6YXRpb24oKVwiLCB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbnRlc3R1YWxpemF0aW9uKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZWRCdXR0b25GaWVsZChmaWVsZDogQWN0aW9uQnV0dG9uRmllbGQpIHtcclxuICAgIHRoaXMuZmllbGQgPSBmaWVsZDtcclxuICB9XHJcblxyXG4gIGNvbmZpZ3VyZUZpZWxkc0V4dHJhKCkge1xyXG5cclxuICAgIHZhciB0aGlzRmllbGRFeHRyYUNvbmZpZ1ZhbHVlczogQXJyYXk8RmllbGRFeHRyYVZhbHVlcz4gPSB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgPT0gbnVsbCA/IG51bGwgOiB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMuZmlsdGVyKHggPT4geC5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9PSB0aGlzLmZpZWxkLk5hbWUpO1xyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkc0V4dHJhQ29uZmlnICE9IG51bGwgJiYgdGhpcy5maWVsZHNFeHRyYUNvbmZpZy5sZW5ndGggPiAwICYmIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9PSBudWxsICYmICh0aGlzRmllbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9PSBudWxsIHx8IHRoaXNGaWVsZEV4dHJhQ29uZmlnVmFsdWVzLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgICB0aGlzRmllbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IG5ldyBBcnJheTxGaWVsZEV4dHJhVmFsdWVzPigpO1xyXG4gICAgICB0aGlzLmZpZWxkc0V4dHJhQ29uZmlnLmZvckVhY2goKGZpZWxkRXh0cmFDb25maWcpID0+IHtcclxuXHJcbiAgICAgICAgdmFyIG5ld2ZpZWxkOiBGaWVsZEV4dHJhVmFsdWVzID0gbmV3IEZpZWxkRXh0cmFWYWx1ZXMoKTtcclxuICAgICAgICBuZXdmaWVsZC5GaWVsZENvbmZpZ0NvZGUgPSBmaWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnQ29kZTtcclxuICAgICAgICBuZXdmaWVsZC5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9IHRoaXMuZmllbGQuTmFtZTtcclxuXHJcbiAgICAgICAgaWYgKGZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ10pIHtcclxuICAgICAgICAgIG5ld2ZpZWxkLkZpZWxkQ29uZmlnVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ10pIHtcclxuICAgICAgICAgIG5ld2ZpZWxkLkZpZWxkQ29uZmlnVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzLnB1c2gobmV3ZmllbGQpO1xyXG4gICAgICAgIHRoaXNGaWVsZEV4dHJhQ29uZmlnVmFsdWVzLnB1c2gobmV3ZmllbGQpO1xyXG5cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzID09IG51bGwpIHsgdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzID0gbmV3IEFycmF5PEZpZWxkRXh0cmFWYWx1ZXM+KCk7IH1cclxuICAgICAgdGhpc0ZpZWxkRXh0cmFDb25maWdWYWx1ZXMuZm9yRWFjaCgoZWN2KSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzLnB1c2goZWN2KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmllbGRzRXh0cmFDb25maWcgIT0gbnVsbCAmJiB0aGlzLmZpZWxkc0V4dHJhQ29uZmlnLmxlbmd0aCA+IDAgJiYgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzICE9IG51bGwgJiYgKHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9PSBudWxsIHx8IHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcy5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzLmZvckVhY2goKGV4dHJhZmllbGQpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMucHVzaChleHRyYWZpZWxkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkZWRGaWVsZEV4dHJhID0gdHJ1ZTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxtYXQtY2FyZCBjbGFzcz1cImFkZC1mb3JtLWZpZWxkXCI+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gSEVBREVSIGNvbiBzZm9uZG8gLS0+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwiYWRkLWZpZWxkLWhlYWRlciB3LTEwMFwiPlxyXG4gICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cInctMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV4RmllbGQgIT0gbnVsbCAmJiBpbmRleEZpZWxkID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJnLWRhbmdlciB0ZXh0LXdoaXRlXCIgbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlQW5kRXhpdEFkZEZpZWxkKGZhbHNlLCAtMSlcIj7ihpAgQW5udWxsYTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJnLXN1Y2Nlc3MgdGV4dC13aGl0ZVwiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUFuZEV4aXRBZGRGaWVsZCh0cnVlLCAtMSlcIj7ihpAgU2FsdmE8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGl0bGVcIiBtYXRUb29sdGlwPVwiSW5kZXgge3tpbmRleEZpZWxkfX1cIj5cclxuICAgICAgICAgICAgICAgIHt7IGluZGV4RmllbGQgIT0gbnVsbCAmJiBpbmRleEZpZWxkID49IDAgPyBcIk1vZGlmaWNhXCIgOiBcIkFnZ2l1bmdpXCIgfX0gY2FtcG9cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kZXhGaWVsZCAhPSBudWxsICYmIGluZGV4RmllbGQgPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYmctZGFuZ2VyIHRleHQtd2hpdGVcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVBbmRFeGl0QWRkRmllbGQoZmFsc2UsIDEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGluZGV4RmllbGQgPT0gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggLSAxID8gXCJBbm51bGxhIGUgYWdnaXVuZ2lcIiA6IFwiQW5udWxsYSDihpJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJnLXN1Y2Nlc3MgdGV4dC13aGl0ZVwiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUFuZEV4aXRBZGRGaWVsZCh0cnVlLCAxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpbmRleEZpZWxkID09IHRoaXMuZm9ybS5GaWVsZHMubGVuZ3RoIC0gMSA/IFwiU2FsdmEgZSBhZ2dpdW5naVwiIDogXCJTYWx2YSDihpJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDwhLS0jZW5kcmVnaW9uIEhFQURFUiAtLT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQtYWktYWN0aW9ucy1yb3dcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1haS1maWVsZFwiIChjbGljayk9XCJvbk9wZW5BaUVkaXRGb3JGaWVsZCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgTW9kaWZpY2EgY29uIEFJXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIGNvbnRhaW5lckNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEFSRUEgUFJJTkNJUEFMRSAoMiByaWdoZSBjb21wYXR0ZSkgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBlcXAtZGZvcm0tYWRkLWZvcm0tZmllbGQtbWFpblwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBSSUdBIDE6IFRpcG8sIENvZGljZSwgRGVzY3JpemlvbmUsIFNlemlvbmUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xIHRpcG9DYW1wb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIFtuZ0NsYXNzXT1cInsndGV4dC1kYW5nZXInOiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRmllbGRUeXBlJ10uc3RhdHVzICE9ICdWQUxJRCcgJiYgZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0ZpZWxkVHlwZSddLnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGNhbXBvICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJGaWVsZFR5cGVFbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkZpZWxkVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWVsZFR5cGVDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ZpZWxkVHlwZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VudW1EYXRhVG9FeGNsdWRlXT1cImZpZWxkVHlwZXNUb0V4Y2x1ZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBbbmdDbGFzc109XCJ7J3RleHQtZGFuZ2VyJzogZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0xhYmVsJ10uc3RhdHVzICE9ICdWQUxJRCcgJiYgZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0xhYmVsJ10udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGljZSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxcIiByZXF1aXJlZCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkxhYmVsQ2hhbmdlRm9yUHJldmlldygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5MYWJlbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTGFiZWwnXS5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPk9iYmxpZ2F0b3JpbzwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydMYWJlbCddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5Tb2xvIGxldHRlcmUgYS16PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0xhYmVsJ10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIFtuZ0NsYXNzXT1cInsndGV4dC1kYW5nZXInOiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRGVzY3JpcHRpb24nXS5zdGF0dXMgIT0gJ1ZBTElEJyAmJiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRGVzY3JpcHRpb24nXS50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpemlvbmUgKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJEZXNjcmlwdGlvblwiIGZvcm1Db250cm9sTmFtZT1cIkRlc2NyaXB0aW9uXCIgcmVxdWlyZWQgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkRlc2NyaXB0aW9uXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuRGVzY3JpcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0Rlc2NyaXB0aW9uJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5PYmJsaWdhdG9yaW88L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRGVzY3JpcHRpb24nXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2U8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xXCIgKm5nSWY9XCJmb3JtRmllbGRzR3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwieyd0ZXh0LWRhbmdlcic6IGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydGaWVsZEdyb3VwJ10uc3RhdHVzICE9ICdWQUxJRCcgJiYgZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0ZpZWxkR3JvdXAnXS50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V6aW9uZSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImZvcm1GaWVsZHNHcm91cHNcIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuRmllbGRHcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInTmFtZSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidOYW1lJ1wiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ZpZWxkR3JvdXAnXCIgcmVxdWlyZWQgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBSSUdBIDEgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIFJJR0EgMjogVG9nZ2xlICsgUmVhZE9ubHkgSWYgKyBBZ2dyZWdhemlvbmkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuUmVxdWlyZWRcIiBmb3JtQ29udHJvbE5hbWU9XCJSZXF1aXJlZFwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JibGlnYXRvcmlvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuUmVhZG9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJSZWFkb25seVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+UmVhZE9ubHkgSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIlJlYWRvbmx5SWZcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLlJlYWRvbmx5SWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVhZE9ubHlJZkRpYWxvZygpXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuUmVhZG9ubHlJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0ICpuZ0lmPVwiYWdncmVnYXRpb25GaWVsZExvYWRlZFwiIFtwbGFjZWhvbGRlcl09XCInQWdncmVnYXppb25pJ1wiIFtpc011bHRpU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VudW1EYXRhXT1cImFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkFnZ3JlZ2F0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gUklHQSAyIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gQVJFQSBQUklOQ0lQQUxFIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEFSRUEgVEFCUyAtLT5cclxuICAgICAgICAgICAgICAgIDxtYXQtdGFiLWdyb3VwIGNsYXNzPVwiZXFwLWRmb3JtLWFkZC1mb3JtLWZpZWxkLXRhYnNcIiBtYXQtc3RyZXRjaC10YWJzPVwiZmFsc2VcIiBtYXQtYWxpZ24tdGFicz1cInN0YXJ0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIFNUSUxFIENPTVBJTEFaSU9ORSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlN0aWxlIENvbXBpbGF6aW9uZVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgdGlwaSBOT04gVGV4dEZpZWxkLCBOT04gTnVtZXJpY0ZpZWxkLCBOT04gVGV4dGFyZWFGaWVsZCwgTk9OIEJvb2xlYW5GaWVsZCwgTk9OIEF0dGFjaG1lbnRGaWVsZCwgTk9OIExhYmVsRmllbGQsIE5PTiBEYXRlRmllbGQsIE5PTiBBY3Rpb25CdXR0b25GaWVsZCwgTk9OIEltYWdlRmllbGQsIE5PTiBJbWFnZVdpdGhNYXJrZXJzRmllbGQsIE5PTiBMaXN0VmFsdWVGaWVsZDogc2V6aW9uZSBHZW5lcmFsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RleHRGaWVsZCAmJiAhaXNOdW1lcmljRmllbGQgJiYgIWlzVGV4dGFyZWFGaWVsZCAmJiAhaXNCb29sZWFuRmllbGQgJiYgIWlzQXR0YWNobWVudEZpZWxkICYmICFpc0xhYmVsRmllbGQgJiYgIWlzRGF0ZUZpZWxkICYmICFpc0FjdGlvbkJ1dHRvbkZpZWxkICYmICFpc0ltYWdlRmllbGQgJiYgIWlzSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkICYmICFpc0xpc3RWYWx1ZUZpZWxkICYmICFpc0ltYWdlU2VsZWN0b3JGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMYWJlbHN0eWxlQ1NTIGUgRmllbGRzdHlsZUNTUzogbmFzY29zdGksIG1hbnRlbnV0aSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBUZXh0RmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RleHRGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMYWJlbHN0eWxlQ1NTIGUgRmllbGRzdHlsZUNTUzogbmFzY29zdGksIG1hbnRlbnV0aSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JbnZpc2liaWxpdHlcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJbnZpc2liaWxpdHknXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJ0ZXh0RmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkVGV4dEZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRUZXh0RmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgdGV4dEZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldFN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZFRleHRGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0U3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkVGV4dEZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBOdW1lcmljRmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc051bWVyaWNGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMYWJlbHN0eWxlQ1NTIGUgRmllbGRzdHlsZUNTUzogbmFzY29zdGksIG1hbnRlbnV0aSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JbnZpc2liaWxpdHlcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJbnZpc2liaWxpdHknXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJudW1lcmljRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkTnVtZXJpY0ZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWROdW1lcmljRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgbnVtZXJpY0ZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldE51bWVyaWNTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWROdW1lcmljRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldE51bWVyaWNTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWROdW1lcmljRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIFRleHRhcmVhRmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RleHRhcmVhRmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmFsZS1zZWN0aW9uLXRpdGxlXCI+R2VuZXJhbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTGFiZWxzdHlsZUNTUyBlIEZpZWxkc3R5bGVDU1M6IG5hc2Nvc3RpLCBtYW50ZW51dGkgcGVyIHJldHJvY29tcGF0aWJpbGl0w6AgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5GaWVsZHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSW5MaXN0Vmlld1wiIGZvcm1Db250cm9sTmFtZT1cIkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVmlzaWJsZUlmXCIgKGNsaWNrKT1cIm9wZW5WaXNpYmxlSWZEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VG9vbHRpcDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJUb29sdGlwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlRvb2x0aXBcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5Jbkxpc3RWaWV3ICYmIChmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSW52aXNpYmlsaXR5XCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWFpbnRhaW5fVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbnRhaW5fVmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYWludGFpbl9WYWx1ZSddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW50aWVuaSBpbCB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwidGV4dGFyZWFGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRUZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRUZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIHRleHRhcmVhRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0VGV4dGFyZWFTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRUZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRUZXh0YXJlYVN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZFRleHRhcmVhRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIEJvb2xlYW5GaWVsZDogc2V6aW9uZSBHZW5lcmFsZSArIHNlemlvbmUgR3JhZmljYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQm9vbGVhbkZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhbGUtc2VjdGlvbi10aXRsZVwiPkdlbmVyYWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExhYmVsc3R5bGVDU1MgZSBGaWVsZHN0eWxlQ1NTOiBuYXNjb3N0aSwgbWFudGVudXRpIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImJvb2xlYW5GaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRCb29sZWFuRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZEJvb2xlYW5GaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBib29sZWFuRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0Qm9vbGVhblN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEJvb2xlYW5GaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0Qm9vbGVhblN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEJvb2xlYW5GaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgRGF0ZUZpZWxkOiBzZXppb25lIEdlbmVyYWxlICsgc2V6aW9uZSBHcmFmaWNhICg1IGVsZW1lbnRpLCA1IHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGF0ZUZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhbGUtc2VjdGlvbi10aXRsZVwiPkdlbmVyYWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5GaWVsZHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSW5MaXN0Vmlld1wiIGZvcm1Db250cm9sTmFtZT1cIkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVmlzaWJsZUlmXCIgKGNsaWNrKT1cIm9wZW5WaXNpYmxlSWZEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VG9vbHRpcDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJUb29sdGlwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlRvb2x0aXBcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5Jbkxpc3RWaWV3ICYmIChmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSW52aXNpYmlsaXR5XCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWFpbnRhaW5fVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbnRhaW5fVmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYWludGFpbl9WYWx1ZSddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW50aWVuaSBpbCB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiZGF0ZUZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZERhdGVGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkRGF0ZUZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGRhdGVGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXREYXRlU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkRGF0ZUZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXREYXRlU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkRGF0ZUZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBMYWJlbEZpZWxkOiBzZXppb25lIEdlbmVyYWxlICsgc2V6aW9uZSBHcmFmaWNhICgxIGVsZW1lbnRvLCAyIHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFiZWxGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImxhYmVsRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkTGFiZWxGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkTGFiZWxGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBsYWJlbEZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldExhYmVsU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkTGFiZWxGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0TGFiZWxTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRMYWJlbEZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBBdHRhY2htZW50RmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0F0dGFjaG1lbnRGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRBdHRhY2htZW50RmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZEF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBhdHRhY2htZW50RmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0QXR0YWNobWVudFN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0QXR0YWNobWVudFN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgQWN0aW9uQnV0dG9uRmllbGQ6IHNlemlvbmUgR3JhZmljYSAoMyBlbGVtZW50aSwgMyBzdGF0aSkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FjdGlvbkJ1dHRvbkZpZWxkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYWN0aW9uQnV0dG9uRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkQWN0aW9uQnV0dG9uRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldEFjdGlvbkJ1dHRvblN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRBY3Rpb25CdXR0b25TdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRBY3Rpb25CdXR0b25GaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgSW1hZ2VGaWVsZDogc2V6aW9uZSBHcmFmaWNhICgzIGVsZW1lbnRpLCAyIHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2VGaWVsZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImltYWdlRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkSW1hZ2VGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkSW1hZ2VGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBpbWFnZUZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldEltYWdlU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkSW1hZ2VGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0SW1hZ2VTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRJbWFnZUZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBJbWFnZVdpdGhNYXJrZXJzRmllbGQ6IHNlemlvbmUgR3JhZmljYSAoMyBlbGVtZW50aSwgMiBzdGF0aSkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ltYWdlV2l0aE1hcmtlcnNGaWVsZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBpbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0SW1hZ2VXaXRoTWFya2Vyc1N0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0SW1hZ2VXaXRoTWFya2Vyc1N0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgTGlzdFZhbHVlRmllbGQ6IHNlemlvbmUgR3JhZmljYSAoZWxlbWVudGkgZGluYW1pY2kgcGVyIG1vZGFsaXTDoCwgNSBzdGF0aSkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xpc3RWYWx1ZUZpZWxkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwibGlzdFZhbHVlRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkTGlzdFZhbHVlRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZExpc3RWYWx1ZUZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGxpc3RWYWx1ZVN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRMaXN0VmFsdWVTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRMaXN0VmFsdWVGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0TGlzdFZhbHVlU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkTGlzdFZhbHVlRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIEltYWdlU2VsZWN0b3JGaWVsZDogc2V6aW9uZSBHcmFmaWNhICgzIGVsZW1lbnRpLCA1IHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2VTZWxlY3RvckZpZWxkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiaW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGltYWdlU2VsZWN0b3JGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRJbWFnZVNlbGVjdG9yU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRJbWFnZVNlbGVjdG9yU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBTVElMRSBDT01QSUxBWklPTkUgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIFNUSUxFIFJJU1BPU1RBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiU3RpbGUgUmlzcG9zdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc1Jpc3Bvc3RhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkFuc3dlclN0eWxlLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidBbnN3ZXJTdHlsZUNvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFiZWwgY3NzPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkFuc3dlclN0eWxlTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkFuc3dlclN0eWxlTGFiZWxzdHlsZUNTU1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkFuc3dlclN0eWxlLkxhYmVsc3R5bGVDU1NcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5BbnN3ZXJTdHlsZS5MYWJlbHN0eWxlQ1NTKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RmllbGQgY3NzPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkFuc3dlclN0eWxlRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkFuc3dlclN0eWxlRmllbGRzdHlsZUNTU1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkFuc3dlclN0eWxlLkZpZWxkc3R5bGVDU1NcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5BbnN3ZXJTdHlsZS5GaWVsZHN0eWxlQ1NTKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5BbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiQW5zd2VyU3R5bGVJbkxpc3RWaWV3XCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydBbnN3ZXJTdHlsZUluTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkFuc3dlclN0eWxlLkluTGlzdFZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6AgZGVsIGNhbXBvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5BbnN3ZXJTdHlsZS5JbnZpc2liaWxpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0Fuc3dlclN0eWxlSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiQW5zd2VyU3R5bGVWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJBbnN3ZXJTdHlsZVZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkFuc3dlclN0eWxlVmlzaWJsZUlmRGlhbG9nKClcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gU1RJTEUgUklTUE9TVEEgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIFNQRUNJRklDSEUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJTcGVjaWZpY2hlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFR5cGVGb3JtVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gU1BFQ0lGSUNIRSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gTU9EQUxJVEEnIFJFQ1VQRVJPIERBVEkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJNb2RhbGl0w6AgcmVjdXBlcm8gZGF0aVwiICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlICE9IEZpZWxkVHlwZUVudW1bJ0JvdHRvbmUgYXppb25lJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImRhdGFHZXR0ZXJUeXBlRW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGVcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkRhdGFHZXR0ZXJUeXBlQ2hhbmdlKClcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInRGF0YUdldHRlclR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgIT0gZGF0YUdldHRlclR5cGVFbnVtLk1hbnVhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZhbG9yZSBkaSBEZWZhdWx0PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRGF0YUdldHRlclZhbHVlXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlICE9IGRhdGFHZXR0ZXJUeXBlRW51bS5Gb3JtdWxhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Gb3JtdWxhIChKYXZhc2NyaXB0KTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkZvcm11bGFcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkZvcm11bGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Gb3JtdWxhRGlhbG9nKClcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Gb3JtdWxhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBkYXRhR2V0dGVyVHlwZUVudW1bJ0RhIGRhdGFiYXNlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTQgY29uZmlndXJhUXVlcnlFZGl0b3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPkNvbmZpZ3VyYSBpbiBRdWVyeSBFZGl0b3I8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib3BlbkRCR2V0dGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlID09IG51bGxcIj5Qcm9jZWRpPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJvcGVuREJHZXR0ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbFwiPk1vZGlmaWNhPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlNlbGV6aW9uYSBjb2xvbm5hPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImNvbHVtbktleXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlB1bHNhbnRlIHJlc2V0PzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IGRhdGFHZXR0ZXJUeXBlRW51bVsnRGEgbW9kdWxvIGRpbmFtaWNvJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTRcIiAqbmdJZj1cImZvcm1zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+TW9kdWxvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGV6aW9uYSBtb2R1bG8nXCIgW2FycmF5RGF0YV09XCJmb3Jtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJETU1vZHVsZVwiIFtpc1NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidDb2RlJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ05hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidETU1vZHVsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ2hhbmdlRE1Nb2R1bGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGwgJiYgRE1Nb2R1bGUgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+Q2FtcG88L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInU2VsZXppb25hIGNhbXBvJ1wiIFthcnJheURhdGFdPVwiRE1GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiRE1GaWVsZFwiIFtpc1NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInRE1GaWVsZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ2hhbmdlRE1GaWVsZCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5DYXJkaW5hbGl0w6A8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJETUdldHRlckNhcmRpbmFsaXRpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ2FyZGluYWxpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+Q29udGVzdHVhbGl6emF6aW9uZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJjb250ZXN0dWFsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidlbnRpdHlUYWJsZU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInZW50aXR5VGFibGVOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb250ZXN0dWFsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ2hhbmdlRE1Db250ZXN0dWFsaXphdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBNT0RBTElUQScgUkVDVVBFUk8gREFUSSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gRVhUUkEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJFeHRyYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGRzRXh0cmFDb25maWcgIT0gbnVsbCAmJiBmaWVsZHNFeHRyYUNvbmZpZy5sZW5ndGggPiAwICYmIGxvYWRlZEZpZWxkRXh0cmFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBmaWVsZEV4dHJhQ29uZmlnXCIgKm5nRm9yPVwibGV0IGZpZWxkRXh0cmFDb25maWcgb2YgZmllbGRzRXh0cmFDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4ICNmaWVsZEV4dHJhQ29uZmlnVGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkRXh0cmFDb25maWddPVwiZmllbGRFeHRyYUNvbmZpZ1wiIFtmb3JtXT1cImZvcm1cIiBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBFWFRSQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L21hdC10YWItZ3JvdXA+XHJcbiAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBBUkVBIFRBQlMgLS0+XHJcblxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG4gICAgPG1hdC1jYXJkLWZvb3Rlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBweC0zIHB5LTIgZm9vdGVyLXJvd1wiPlxyXG4gICAgICAgICAgICA8IS0tIEFudGVwcmltYSBsaXZlIChUZXh0RmllbGQsIE51bWVyaWNGaWVsZCwgVGV4dGFyZWFGaWVsZCwgQm9vbGVhbkZpZWxkLCBBdHRhY2htZW50RmllbGQsIExhYmVsRmllbGQsIERhdGVGaWVsZCwgQWN0aW9uQnV0dG9uRmllbGQsIExpc3RWYWx1ZUZpZWxkKSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYXJlYVwiICpuZ0lmPVwiKGlzVGV4dEZpZWxkIHx8IGlzTnVtZXJpY0ZpZWxkIHx8IGlzVGV4dGFyZWFGaWVsZCB8fCBpc0Jvb2xlYW5GaWVsZCB8fCBpc0F0dGFjaG1lbnRGaWVsZCB8fCBpc0xhYmVsRmllbGQgfHwgaXNEYXRlRmllbGQgfHwgaXNBY3Rpb25CdXR0b25GaWVsZCB8fCBpc0xpc3RWYWx1ZUZpZWxkIHx8IGlzSW1hZ2VTZWxlY3RvckZpZWxkKSAmJiAoaXNBY3Rpb25CdXR0b25GaWVsZCB8fCAoZmllbGQ/LkZvcm1Gb3JtR3JvdXAgJiYgcHJldmlld1JlY29yZCkpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmV2aWV3LWxhYmVsXCI+QW50ZXByaW1hOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwicHJldmlld0ZvcmNlU3RhdGVcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBwcmV2aWV3LXN0YXRlLXNlbGVjdFwiIHN0eWxlPVwid2lkdGg6IDEzMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIj5BdXRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJOb3JtYWxlXCI+Tm9ybWFsZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiTW91c2VvdmVyXCI+TW91c2UgU29wcmE8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkZvY3VzZWRcIiAqbmdJZj1cIiFpc0F0dGFjaG1lbnRGaWVsZCAmJiAhaXNMYWJlbEZpZWxkICYmICFpc0FjdGlvbkJ1dHRvbkZpZWxkICYmICFpc0xpc3RWYWx1ZUZpZWxkICYmICFpc0ltYWdlU2VsZWN0b3JGaWVsZFwiPlNlbGV6aW9uYXRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJTZWxlemlvbmF0b1wiICpuZ0lmPVwiaXNBY3Rpb25CdXR0b25GaWVsZCB8fCBpc0xpc3RWYWx1ZUZpZWxkIHx8IGlzSW1hZ2VTZWxlY3RvckZpZWxkXCI+U2VsZXppb25hdG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIk5vdFZhbGlkXCIgKm5nSWY9XCIhaXNCb29sZWFuRmllbGQgJiYgIWlzTGFiZWxGaWVsZCAmJiAhaXNBY3Rpb25CdXR0b25GaWVsZFwiPk5vbiBWYWxpZG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlJlYWRvbmx5XCIgKm5nSWY9XCIhaXNMYWJlbEZpZWxkICYmICFpc0FjdGlvbkJ1dHRvbkZpZWxkXCI+U29sYSBMZXR0dXJhPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiU3VnZ2VyaXNjaSBncmFmaWNhIGNvbiBBSVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjEyXCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGVcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgc3R5bGU9XCJmb250LXNpemU6MTZweDt3aWR0aDoxNnB4O2hlaWdodDoxNnB4XCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlN1Z2dlcmlzY2k8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHRleHQtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc1RleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvdGV4dC1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxudW1lcmljLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNOdW1lcmljRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L251bWVyaWMtZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc1RleHRhcmVhRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L3RleHRhcmVhLWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGJvb2xlYW4tZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc0Jvb2xlYW5GaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvYm9vbGVhbi1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxhdHRhY2htZW50LWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNBdHRhY2htZW50RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2F0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc0xhYmVsRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsLWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGRhdGUtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc0RhdGVGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvZGF0ZS1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxhY3Rpb24tYnV0dG9uLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNBY3Rpb25CdXR0b25GaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInt9XCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FjdGlvbi1idXR0b24tZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cImlzTGlzdFZhbHVlRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8aW1hZ2UtZmllbGQtc2VsZWN0b3ItdGVtcGxhdGUgKm5nSWY9XCJpc0ltYWdlU2VsZWN0b3JGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvaW1hZ2UtZmllbGQtc2VsZWN0b3ItdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKCFpc1RleHRGaWVsZCAmJiAhaXNOdW1lcmljRmllbGQgJiYgIWlzVGV4dGFyZWFGaWVsZCAmJiAhaXNCb29sZWFuRmllbGQgJiYgIWlzQXR0YWNobWVudEZpZWxkICYmICFpc0xhYmVsRmllbGQgJiYgIWlzRGF0ZUZpZWxkICYmICFpc0FjdGlvbkJ1dHRvbkZpZWxkICYmICFpc0xpc3RWYWx1ZUZpZWxkICYmICFpc0ltYWdlU2VsZWN0b3JGaWVsZCkgfHwgKCFpc0FjdGlvbkJ1dHRvbkZpZWxkICYmICFmaWVsZD8uRm9ybUZvcm1Hcm91cClcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUHVsc2FudGkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbWF0LXJhaXNlZC1idXR0b24gYmctZGFuZ2VyIHRleHQtd2hpdGUgY2FuY2VsXCIgKGNsaWNrKT1cInNhdmVBbmRFeGl0QWRkRmllbGQoZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAg4p2MIEFubnVsbGFcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBbY2xhc3MuYmctc3VjY2Vzc109XCIhZGlzYWJsZVNhdmVGaWVsZCgpXCIgW2NsYXNzLmJnLWRhbmdlcl09XCJkaXNhYmxlU2F2ZUZpZWxkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBzYXZlXCIgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TYXZlQ2xpY2soKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJkaXNhYmxlU2F2ZUZpZWxkKClcIiBzdHlsZT1cImZvbnQtc2l6ZToxOHB4O3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDoycHhcIj5sb2NrPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICDwn5K+IFNhbHZhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkLWZvb3Rlcj5cclxuXHJcbjwvbWF0LWNhcmQ+XHJcblxyXG5cclxuXHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgREkgVEVTVE8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdGV4dEZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPCEtLSNyZWdpb24gTUFTQ0hFUkEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5NYXNjaGVyYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJUZXh0TWFza0VudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuVGV4dE1hc2tcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ1RleHRNYXNrJ1wiPlxyXG4gICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSNlbmRyZWdpb24gTUFTQ0hFUkEgLS0+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gTFVOR0hFWlpBIE1JTklNQSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTNcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBbbmdDbGFzc109XCJ7J3RleHQtZGFuZ2VyJzogZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01pbkxlbmdodCddLnN0YXR1cyAhPSAnVkFMSUQnICYmIGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNaW5MZW5naHQnXS50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICBMdW5naGV6emEgbWluaW1hXHJcbiAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJsZW5ndGhNaW5cIiBmb3JtQ29udHJvbE5hbWU9XCJNaW5MZW5naHRcIiB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWluTGVuZ2h0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5NaW5MZW5naHQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01pbkxlbmdodCddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5JbnNlcmlyZSB1biB2YWxvcmUgbnVtZXJpY28uPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWluTGVuZ2h0J10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBMVU5HSEVaWkEgTUlOSU1BIC0tPlxyXG5cclxuICAgIDwhLS0jcmVnaW9uIExVTkdIRVpaQSBNQVNTSU1BIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtM1wiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsIFtuZ0NsYXNzXT1cInsndGV4dC1kYW5nZXInOiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWF4TGVuZ2h0J10uc3RhdHVzICE9ICdWQUxJRCcgJiYgZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01heExlbmdodCddLnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgIEx1bmdoZXp6YSBtYXNzaW1hXHJcbiAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJsZW5ndGhNYXhcIiBmb3JtQ29udHJvbE5hbWU9XCJNYXhMZW5naHRcIiB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWF4TGVuZ2h0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5NYXhMZW5naHQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01heExlbmdodCddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5JbnNlcmlyZSB1biB2YWxvcmUgbnVtZXJpY28uPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWF4TGVuZ2h0J10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBMVU5HSEVaWkEgTUFTU0lNQSAtLT5cclxuXHJcbiAgICA8IS0tI3JlZ2lvbiBTUEVFQ0ggVE8gVEVYVCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgIFtoaWRkZW5dPVwiZmllbGQuUmVhZG9ubHkgfHwgcGxhdGZvcm0gIT0gJ3dlYidcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1pY3JvcGhvbmVcIiBmb3JtQ29udHJvbE5hbWU9XCJNaWNyb3Bob25lXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgIFNwZWVjaC1Uby1UZXh0XHJcbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBTUEVFQ0ggVE8gVEVYVCAtLT5cclxuXHJcbiAgICA8IS0tI3JlZ2lvbiBJQ09OQSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwic2hvd1RleHRGaWVsZEljb25cIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25UZXh0RmllbGRJY29uVG9nZ2xlKCRldmVudC5jaGVja2VkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEljb25hXHJcbiAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00XCIgKm5nSWY9XCJzaG93VGV4dEZpZWxkSWNvblwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+SWNvbmEgTWF0ZXJpYWw8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiSWNvbk5hbWVcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuSWNvbk5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cImVzLiBzZWFyY2gsIHBlcnNvbiwgaG9tZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00XCIgKm5nSWY9XCJzaG93VGV4dEZpZWxkSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Qb3NpemlvbmFtZW50bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIlRleHRGaWVsZEljb25Qb3NpdGlvbkVudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSWNvblBvc2l0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ljb25Qb3NpdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSNlbmRyZWdpb24gSUNPTkEgLS0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBESSBURVNUTyAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBFVElDSEVUVEEgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbGFiZWxGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiAgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT1cIkV0aWNoZXR0YVwiIHBsYWNlaG9sZGVyPVwiRXRpY2hldHRhXCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRXRpY2hldHRhXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRXRpY2hldHRhXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBFVElDSEVUVEEgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgQVJFQSBESSBURVNUTyAtLT5cclxuPG5nLXRlbXBsYXRlICN0ZXh0YXJlYUZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+UmlnaGU8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJyaWdoZVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJyb3dzXCIgZm9ybUNvbnRyb2xOYW1lPVwiUm93c1wiIHR5cGU9XCJudW1iZXJcIiBbbWluXT1cIjBcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLlJvd3NcIlxyXG4gICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Sb3dzKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydSb3dzJ10uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkluc2VyaXJlIHVuIHZhbG9yZSBudW1lcmljby48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydSb3dzJ10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5SZWFkb25seSB8fCBwbGF0Zm9ybSAhPSAnd2ViJ1wiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWljcm9waG9uZVwiIGZvcm1Db250cm9sTmFtZT1cIk1pY3JvcGhvbmVcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgU3BlZWNoLVRvLVRleHRcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkx1bmdoZXp6YSBtaW5pbWE8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cImxlbmd0aE1pblwiIGZvcm1Db250cm9sTmFtZT1cIk1pbkxlbmdodFwiIHR5cGU9XCJudW1iZXJcIiBbbWluXT1cIjBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NaW5MZW5naHRcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLk1pbkxlbmdodClcIj5cclxuICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWluTGVuZ2h0J10uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkluc2VyaXJlIHVuIHZhbG9yZSBudW1lcmljby48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNaW5MZW5naHQnXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkx1bmdoZXp6YSBtYXNzaW1hPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJsZW5ndGhNYXhcIiBmb3JtQ29udHJvbE5hbWU9XCJNYXhMZW5naHRcIiB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWF4TGVuZ2h0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5NYXhMZW5naHQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01heExlbmdodCddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5JbnNlcmlyZSB1biB2YWxvcmUgbnVtZXJpY28uPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWF4TGVuZ2h0J10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gSUNPTkEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cInNob3dUZXh0YXJlYUZpZWxkSWNvblwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblRleHRhcmVhRmllbGRJY29uVG9nZ2xlKCRldmVudC5jaGVja2VkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEljb25hXHJcbiAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00XCIgKm5nSWY9XCJzaG93VGV4dGFyZWFGaWVsZEljb25cIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkljb25hIE1hdGVyaWFsPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkljb25OYW1lXCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkljb25OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xkZXI9XCJlcy4gbm90ZXMsIGRlc2NyaXB0aW9uLCBlZGl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTRcIiAqbmdJZj1cInNob3dUZXh0YXJlYUZpZWxkSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Qb3NpemlvbmFtZW50bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIlRleHRhcmVhRmllbGRJY29uUG9zaXRpb25FbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJY29uUG9zaXRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0jZW5kcmVnaW9uIElDT05BIC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgQVJFQSBESSBURVNUTyAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBCT09MRUFOSSAtLT5cclxuPG5nLXRlbXBsYXRlICNib29sZWFkRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSXNUcmlzdGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cIklzVHJpc3RhdGVcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgQSB0cmUgc3RhdGlcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+VGlwbyBkaSBwcmVzZW50YXppb25lICo8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiQm9vbFByZXNlbnRhbnRpb0VudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuUHJlc2V0YXRpb25UeXBlXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ1ByZXNldGF0aW9uVHlwZSdcIj5cclxuICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIEJPT0xFQU5JIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIERBVEEgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGF0ZUZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5UaXBvIGRpIGRhdGE8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiRGF0ZVRpbWVUeXBlRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Jc09ubHlEYXRlXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0lzT25seURhdGUnXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkRhdGVUeXBlQ2hhbmdlKClcIj5cclxuICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkZvcm1hdG88L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJEYXRlRm9ybWF0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5EYXRlRm9ybWF0XCJcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidJbmRpY2FyZSBpbCBmb3JtYXRvIHNlZ3VlbmRvIGxhIGd1aWRhIGRlbCBwYWNjaGV0dG8gbW9tZW50anMuJ1wiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuRm9ybWF0bylcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+RGF0YSBtaW5pbWE8L21hdC1sYWJlbD5cclxuICAgICAgICA8dG13LWRhdGV0aW1lcGlja2VyICpuZ0lmPVwiZmllbGQuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtWydTb2xvIGRhdGEnXVwiIGNsYXNzPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWluRGF0ZVwiIFtwaWNrZXJNb2RlXT1cIm1vZGUuREFURVBJQ0tFUlwiIFtvdXRwdXRGb3JtYXRdPVwiJ2RkL01NL3l5eXknXCJcclxuICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCI+PC90bXctZGF0ZXRpbWVwaWNrZXI+XHJcbiAgICAgICAgPHRtdy1kYXRldGltZXBpY2tlciAqbmdJZj1cImZpZWxkLklzT25seURhdGUgPT0gRGF0ZVRpbWVUeXBlRW51bVsnRGF0YSBlIG9yYSddXCIgY2xhc3M9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NaW5EYXRlXCIgW3BpY2tlck1vZGVdPVwibW9kZS5EQVRFVElNRVBJQ0tFUlwiIFtvdXRwdXRGb3JtYXRdPVwiJ2RkL01NL3l5eXkgSEg6bW0nXCJcclxuICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCI+PC90bXctZGF0ZXRpbWVwaWNrZXI+XHJcbiAgICAgICAgPHRtdy1kYXRldGltZXBpY2tlciAqbmdJZj1cImZpZWxkLklzT25seURhdGUgPT0gRGF0ZVRpbWVUeXBlRW51bVsnU29sbyBvcmFyaW8nXVwiIGNsYXNzPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWluRGF0ZVwiIFtwaWNrZXJNb2RlXT1cIm1vZGUuVElNRVBJQ0tFUlwiIFtvdXRwdXRGb3JtYXRdPVwiJ0hIOm1tJ1wiXHJcbiAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJmYWxzZVwiPjwvdG13LWRhdGV0aW1lcGlja2VyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkRhdGEgbWFzc2ltYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDx0bXctZGF0ZXRpbWVwaWNrZXIgKm5nSWY9XCJmaWVsZC5Jc09ubHlEYXRlID09IERhdGVUaW1lVHlwZUVudW1bJ1NvbG8gZGF0YSddXCIgY2xhc3M9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NYXhEYXRlXCIgW3BpY2tlck1vZGVdPVwibW9kZS5EQVRFUElDS0VSXCIgW291dHB1dEZvcm1hdF09XCInZGQvTU0veXl5eSdcIlxyXG4gICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj48L3Rtdy1kYXRldGltZXBpY2tlcj5cclxuICAgICAgICA8dG13LWRhdGV0aW1lcGlja2VyICpuZ0lmPVwiZmllbGQuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtWydEYXRhIGUgb3JhJ11cIiBjbGFzcz1cImRhdGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1heERhdGVcIiBbcGlja2VyTW9kZV09XCJtb2RlLkRBVEVUSU1FUElDS0VSXCIgW291dHB1dEZvcm1hdF09XCInZGQvTU0veXl5eSBISDptbSdcIlxyXG4gICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj48L3Rtdy1kYXRldGltZXBpY2tlcj5cclxuICAgICAgICA8dG13LWRhdGV0aW1lcGlja2VyICpuZ0lmPVwiZmllbGQuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtWydTb2xvIG9yYXJpbyddXCIgY2xhc3M9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NYXhEYXRlXCIgW3BpY2tlck1vZGVdPVwibW9kZS5USU1FUElDS0VSXCIgW291dHB1dEZvcm1hdF09XCInSEg6bW0nXCJcclxuICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCI+PC90bXctZGF0ZXRpbWVwaWNrZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+UG9zaXppb25lIGljb25lIChjYWxlbmRhcmlvIC8gb3JvbG9naW8pPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJkYXRlVGltZUljb25Qb3NpdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIndmFsdWUnXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JY29uc1Bvc2l0aW9uXCJcclxuICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJY29uc1Bvc2l0aW9uJ1wiXHJcbiAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5Qb3NpemlvbmUgYm90dG9uZSBjYW5jZWxsYXppb25lPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJkYXRlVGltZUljb25Qb3NpdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIndmFsdWUnXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5DbG9zZUljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ2xvc2VJY29uUG9zaXRpb24nXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Vc2VUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVXNlVG9vbHRpcFwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgTW9zdHJhIHRvb2x0aXBcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIERBVEEgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgTlVNRVJJQ0kgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbnVtZXJpY0ZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yICBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLklzSW50ZWdlclwiIGZvcm1Db250cm9sTmFtZT1cIklzSW50ZWdlclwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICBWYWxvcmUgaW50ZXJvXHJcbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWZpZWxkLklzSW50ZWdlclwiIGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5TZXBhcmF0b3JlIGRlY2ltYWxpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRGVjaW1hbFNlcGFyYXRvclwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRGVjaW1hbFNlcGFyYXRvclwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkRlY2ltYWxTZXBhcmF0b3IpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0RlY2ltYWxTZXBhcmF0b3InXS5lcnJvcnM/LlsncGF0dGVybiddXCI+Tm9uIMOoIHBvc3NpYmlsZSBpbnNlcmlyZSBkZWkgbnVtZXJpLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0RlY2ltYWxTZXBhcmF0b3InXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhZmllbGQuSXNJbnRlZ2VyXCIgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlByZWNpc2lvbmUgZGVjaW1hbGk8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJEZWNpbWFsUHJlY2lzaW9uXCIgdHlwZT1cIm51bWJlclwiIFttaW5dPVwiMFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkRlY2ltYWxQcmVjaXNpb25cIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkRlY2ltYWxQcmVjaXNpb24pXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0RlY2ltYWxQcmVjaXNpb24nXS5lcnJvcnM/LlsncGF0dGVybiddXCI+SW5zZXJpcmUgdW4gdmFsb3JlIG51bWVyaWNvLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5TZXBhcmF0b3JlIG1pZ2xpYWlhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiVGhvdXNhbmRzU2VwYXJhdG9yXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5UaG91c2FuZHNTZXBhcmF0b3JcIlxyXG4gICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5UaG91c2FuZHNTZXBhcmF0b3IpXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgbWF0VG9vbHRpcD1cIlNpbWJvbG8gcHJpbWEgZGVsIHZhbG9yZVwiPlNpbWJvbG8gdmFsdXRhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiQ3VycmVuY3lTeW1ib2xcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkN1cnJlbmN5U3ltYm9sXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuQ3VycmVuY3lTeW1ib2wpXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgbWF0VG9vbHRpcD1cIlNpbWJvbG8gZG9wbyBpbCB2YWxvcmVcIj5Vbml0w6AgZGkgbWlzdXJhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTWVhc3VyZVVuaXRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLk1lYXN1cmVVbml0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuTWVhc3VyZVVuaXQpXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+VmFsb3JlIG1pbmltbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIk1pblZhbHVlXCIgdHlwZT1cIm51bWJlclwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuTWluVmFsdWVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLk1pblZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTnVtZXJpY01pbk1heENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgIHBhdHRlcm49XCJeLT9bMC05XSsoLFswLTldK3xcXC5bMC05XSspPyRcIj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmUgbWFzc2ltbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIk1heFZhbHVlXCIgdHlwZT1cIm51bWJlclwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuTWF4VmFsdWVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLk1heFZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTnVtZXJpY01pbk1heENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgIHBhdHRlcm49XCJeLT9bMC05XSsoLFswLTldK3xcXC5bMC05XSspPyRcIj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gSUNPTkEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cInNob3dOdW1lcmljRmllbGRJY29uXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTnVtZXJpY0ZpZWxkSWNvblRvZ2dsZSgkZXZlbnQuY2hlY2tlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICBJY29uYVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNFwiICpuZ0lmPVwic2hvd051bWVyaWNGaWVsZEljb25cIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkljb25hIE1hdGVyaWFsPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkljb25OYW1lXCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkljb25OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xkZXI9XCJlcy4gZXVybywgbW9uaXRvcl93ZWlnaHQsIGZhdm9yaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTRcIiAqbmdJZj1cInNob3dOdW1lcmljRmllbGRJY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlBvc2l6aW9uYW1lbnRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiTnVtZXJpY0ZpZWxkSWNvblBvc2l0aW9uRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JY29uUG9zaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSWNvblBvc2l0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBJQ09OQSAtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIE5VTUVSSUNJIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIEFMTEVHQVRPIC0tPlxyXG48bmctdGVtcGxhdGUgI2F0dGFjaG1lbnRGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiAgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5pc011bHRpQXR0YWNoXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNNdWx0aUF0dGFjaFwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICBBbGxlZ2F0aSBtdWx0aXBsaVxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5Fc3RlbnNpb25pIGFjY2V0dGF0ZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiQXZhaWxhYmxlRmlsZUV4dGVuc2lvbnMuY29uY2F0KEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucylcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQWxsb3dlZE1pbWVUeXBlc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQWxsb3dlZE1pbWVUeXBlcydcIlxyXG4gICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIEFMTEVHQVRPIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIExJU1RBIERJIFZBTE9SSSAtLT5cclxuPG5nLXRlbXBsYXRlICNsaXN0VmFsdWVGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiAgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgW2hpZGRlbl09XCJmaWVsZC5QcmVzZW50YXRpb25Nb2RlID09IExpc3RQcmVzZW50YXRpb25FbnVtWydSYWRpbyBidXR0b24nXVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuSXNNdWx0aUNob2ljaGVcIiBmb3JtQ29udHJvbE5hbWU9XCJJc011bHRpQ2hvaWNoZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25Jc011bHRpQ2hvaWNoZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgIFNjZWx0YSBtdWx0aXBsYVxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5UaXBvIGRpIHByZXNlbnRhemlvbmUqPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIkxpc3RQcmVzZW50YXRpb25FbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLlByZXNlbnRhdGlvbk1vZGVcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInUHJlc2VudGF0aW9uTW9kZSdcIlxyXG4gICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uUHJlc2VudGF0aW9uTW9kZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkFyZWEgZGVpIHZhbG9yaSBkYSBpbnNlcmlyZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IHBsYWNlaG9sZGVyPVwia2V5MXx2YWx1ZTE7a2V5Mnx2YWx1ZTJcIiBbKG5nTW9kZWwpXT1cImZpZWxkLlZhbHVlU3RyaW5nXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChuZ01vZGVsQ2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiY291bnRWYWx1ZVBhaXJzKGZpZWxkLlZhbHVlUGFpcnMpID4gMFwiPlxyXG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJrZXktdmFsdWUtbGlzdC1zZWN0aW9uLXRpdGxlXCI+IDwvaDQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYWJlbCBvcHppb25lIChpbnZpbyBwZXIgY29uZmVybWFyZSk8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJrZXlWYWx1ZU9iamVjdC5rZXlcIiAoa2V5dXApPVwib25NdWx0aVNlbGVjdElucHV0S2V5dXAoJGV2ZW50LCBudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmUgb3B6aW9uZSAoaW52aW8gcGVyIGNvbmZlcm1hcmUpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwia2V5VmFsdWVPYmplY3QudmFsdWVcIiAoa2V5dXApPVwib25NdWx0aVNlbGVjdElucHV0S2V5dXAoJGV2ZW50LCBudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCAgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItM1wiPk9wemlvbmkgaW5zZXJpdGU6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidmFsdWUtcGFpcnMtbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQga2V5VmFsdWVQYWlyIG9mIGdldERpY3Rpb25hcnlLZXlWYWx1ZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTFcIiAoY2xpY2spPVwiZGVsZXRlS2V5RnJvbURpY3Rpb25hcnkoa2V5VmFsdWVQYWlyLmtleSlcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiPkxhYmVsOiA8L2I+e3trZXlWYWx1ZVBhaXIua2V5fX0gLSA8Yj5WYWxvcmU6IDwvYj57e2tleVZhbHVlUGFpci52YWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgTElTVEEgREkgVkFMT1JJIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gQk9UVE9ORSBBWklPTkUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjYnV0dG9uRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8YWN0aW9uLWJ1dHRvbi1jcmVhdG9yIFtJbkZpZWxkXT1cInRydWVcIiBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgIFtmb3JtdWxhc109XCJhY3Rpb25CdXR0b25zXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFthY3Rpb25CdXR0b25GaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgKG9uQ2hhbmdlU29tZXRoaW5nKT1cImNoYW5nZWRCdXR0b25GaWVsZCgkZXZlbnQpXCI+XHJcbiAgICA8L2FjdGlvbi1idXR0b24tY3JlYXRvcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gQk9UVE9ORSBBWklPTkUgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIExJU1RBIElNTUFHSU5JIC0tPlxyXG48bmctdGVtcGxhdGUgI2ltYWdlRmllbGRTZWxlY3RvckZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY29sLXhzLTEyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkFsdGV6emEgaW4gUGl4ZWwgZGVsbGUgaW1tYWdpbmkgc2NhbGF0ZSo8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuUmVzaXplZEltYWdlc0hlaWdodFB4XCJcclxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoY2hhbmdlKT1cInNldFJlc2l6ZWRJbWFnZXNIZWlnaHRQeCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yPnt7IGdldEZvcm1WYWxpZGF0aW9uRXJyb3JzKCdSZXNpemVkSW1hZ2VzSGVpZ2h0UHgnKSB9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjb2wteHMtMTIgY29sLW1pZGRsZVwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jc011bHRpQ2hvaWNoZVwiIGZvcm1Db250cm9sTmFtZT1cIklzTXVsdGlDaG9pY2hlXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICBTY2VsdGEgbXVsdGlwbGFcclxuICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZXFwLWF0dGFjaG1lbnRzICNpbWFnZVNlbGVjdG9yQXR0YWNobWVudHMgW2F0dGFjaG1lbnRzTGlzdF09XCJmaWVsZC5BdHRhY2htZW50TGlzdFwiIFtzaG93TWF0Q2FyZF09XCJmYWxzZVwiXHJcbiAgICAgICAgW2FsbG93T25seUltYWdlc109XCJ0cnVlXCIgW2lzRGlzYWJsZWRdPVwiZmFsc2VcIiBbc2hvd0lubGluZVByZXZpZXddPVwidHJ1ZVwiIFttdWx0aXBsZUF0dGFjaG1lbnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIiBbYWxsb3dlZFR5cGVzXT1cIltBdHRhY2htZW50VHlwZS5GSUxFXVwiXHJcbiAgICAgICAgKGxvY2FsRWRpdGVkQXR0YWNobWVudHMpPVwiY2F0Y2hCdXR0b25JbWFnZXNDaGFuZ2UoJGV2ZW50KVwiIFthdHRhY2htZW50c0NvbHVtbnNdPVwiY29uZmlnQ29sdW1uTGlzdEltYWdlc1wiPlxyXG4gICAgPC9lcXAtYXR0YWNobWVudHM+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gTElTVEEgSU1NQUdJTkkgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgSU1NQUdJTkUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaW1hZ2VGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkVuYWJsZURyYXdpbmdcIiBmb3JtQ29udHJvbE5hbWU9XCJFbmFibGVEcmF3aW5nXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICBJbW1hZ2luZSBkaXNlZ25hYmlsZT9cclxuICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC14cy0xMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5BbHRlenphIGluIFBpeGVsIGRlbGxlIGltbWFnaW5pIHNjYWxhdGUqPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJSZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGNoYW5nZSk9XCJzZXRSZXNpemVkSW1hZ2VzSGVpZ2h0UHgoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvcj57eyBnZXRGb3JtVmFsaWRhdGlvbkVycm9ycygnUmVzaXplZEltYWdlc0hlaWdodFB4JykgfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLXhzLTEyXCIgKm5nSWY9XCJmaWVsZC5EeW5BdHRhY2htZW50ICE9IG51bGxcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5FdGljaGV0dGE8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRHluQXR0YWNobWVudC5CdXR0b25LZXlcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLXhzLTEyXCIgKm5nSWY9XCJmaWVsZC5EeW5BdHRhY2htZW50ICE9IG51bGxcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmU8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRHluQXR0YWNobWVudC5CdXR0b25WYWx1ZVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC04IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPGVxcC1hdHRhY2htZW50cyBbYXR0YWNobWVudHNMaXN0XT1cImZpZWxkLkR5bkF0dGFjaG1lbnQgPyBbZmllbGQuRHluQXR0YWNobWVudF0gOiBbXVwiIFtzaG93TWF0Q2FyZF09XCJmYWxzZVwiIFthbGxvd09ubHlJbWFnZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImZhbHNlXCIgW3Nob3dJbmxpbmVQcmV2aWV3XT1cInRydWVcIiBbbXVsdGlwbGVBdHRhY2htZW50XT1cImZhbHNlXCIgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbYWxsb3dlZFR5cGVzXT1cIltBdHRhY2htZW50VHlwZS5GSUxFXVwiIChsb2NhbEVkaXRlZEF0dGFjaG1lbnRzKT1cImNhdGNoQnV0dG9uSW1hZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkRlbGV0ZUF0dGFjaG1lbnQpPVwiZGVsZXRlSW1hZ2UoJGV2ZW50KVwiICNpbWFnZUF0dGFjaG1lbnQ+XHJcbiAgICAgICAgPC9lcXAtYXR0YWNobWVudHM+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seVByb2ZpbGVJbWFnZT5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiZGF0YTp7e2ZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZUNvbnRlbnRUeXBlfX07YmFzZTY0LHt7ZmllbGQuRHluQXR0YWNobWVudC5GaWxlRGF0YUJhc2U2NH19XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgSU1NQUdJTkUgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgSU1NQUdJTkUgQ09OIE1BUktFUlMgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wteHMtMTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+QWx0ZXp6YSBpbiBQaXhlbCBkZWxsZSBpbW1hZ2luaSBzY2FsYXRlKjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiUmVzaXplZEltYWdlc0hlaWdodFB4XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5SZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIlxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChjaGFuZ2UpPVwic2V0UmVzaXplZEltYWdlc0hlaWdodFB4KClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+e3sgZ2V0Rm9ybVZhbGlkYXRpb25FcnJvcnMoJ1Jlc2l6ZWRJbWFnZXNIZWlnaHRQeCcpIH19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC14cy0xMlwiICpuZ0lmPVwiZmllbGQuRHluQXR0YWNobWVudCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RXRpY2hldHRhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uS2V5XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC14cy0xMlwiICpuZ0lmPVwiZmllbGQuRHluQXR0YWNobWVudCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+VmFsb3JlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uVmFsdWVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtOCBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxlcXAtYXR0YWNobWVudHMgW2F0dGFjaG1lbnRzTGlzdF09XCJmaWVsZC5EeW5BdHRhY2htZW50ID8gW2ZpZWxkLkR5bkF0dGFjaG1lbnRdIDogW11cIiBbc2hvd01hdENhcmRdPVwiZmFsc2VcIiBbYWxsb3dPbmx5SW1hZ2VzXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJmYWxzZVwiIFtzaG93SW5saW5lUHJldmlld109XCJ0cnVlXCIgW211bHRpcGxlQXR0YWNobWVudF09XCJmYWxzZVwiIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2FsbG93ZWRUeXBlc109XCJbQXR0YWNobWVudFR5cGUuRklMRV1cIiAobG9jYWxFZGl0ZWRBdHRhY2htZW50cyk9XCJjYXRjaEJ1dHRvbkltYWdlV2l0aE1hcmtlcnNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkRlbGV0ZUF0dGFjaG1lbnQpPVwiZGVsZXRlSW1hZ2UoJGV2ZW50KVwiICNpbWFnZUF0dGFjaG1lbnQ+XHJcbiAgICAgICAgPC9lcXAtYXR0YWNobWVudHM+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seVByb2ZpbGVJbWFnZT5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiZGF0YTp7e2ZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZUNvbnRlbnRUeXBlfX07YmFzZTY0LHt7ZmllbGQuRHluQXR0YWNobWVudC5GaWxlRGF0YUJhc2U2NH19XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgSU1NQUdJTkUgQ09OIE1BUktFUlMgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgTE9PS1VQIC0tPlxyXG48bmctdGVtcGxhdGUgI2xvb2t1cEZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yICBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLlVzZUFzR2V0T3JEaXNjYXJkXCIgZm9ybUNvbnRyb2xOYW1lPVwiVXNlQXNHZXRPckRpc2NhcmRcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiU2UgdHJ1ZSBsYSBsb29rdXAgdmllbmUgdmlzdWFsaXp6YXRhIGluIHVuYSBtb2RhbGUgcGVyIGxvIHNjZWdsaSBzY2FydGFcIj5cclxuICAgICAgICAgICAgVXNhIHBlciBzY2VnbGkgbyBzY2FydGFcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPk5vbWUgZW50aXTDoDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBtYXRUb29sdGlwPVwiTm9tZSBkZWxsJ2VudGl0w6AgcmVsYXppb25hdGFcIj5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkVudGl0eVNvdXJjZU5hbWVcIiByZXF1aXJlZCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkVudGl0eVNvdXJjZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5FbnRpdHlTb3VyY2VOYW1lKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yPnt7IGdldEZvcm1WYWxpZGF0aW9uRXJyb3JzKCdFbnRpdHlTb3VyY2VOYW1lJykgfX08L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIG10LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ob21pIGRlaSBjYW1waSAoaW52aW8gcGVyIGNvbmZlcm1hcmUpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgbWF0VG9vbHRpcD1cIkVsZW5jbyBkaSBjYW1waSBvcmRpbmF0byBjaGUgdmVycsOgIHZpc3VhbGl6emF0byBuZWxsYSBsb29rdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cIm9uTXVsdGlTZWxlY3RJbnB1dEtleXVwKCRldmVudCwgJ0ZpZWxkTmFtZXMnKVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCAgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItM1wiPk5vbWkgc2VsZXppb25hdGk6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4dGVuc2lvbi1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgZXh0ZW5zaW9uIG9mIGZpZWxkLkZpZWxkTmFtZXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2V4dGVuc2lvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1sLTFcIiAoY2xpY2spPVwiZmllbGQuRmllbGROYW1lcy5zcGxpY2UoaSwxKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgTE9PS1VQIC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNidXR0b25JbWFnZXNLZXlWYWx1ZUlucHV0Q29sdW1uIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57e2NvbC5kaXNwbGF5fX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJyb3dbY29sLmtleV1cIiByZXF1aXJlZCBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tRElBTE9HIFBFUiBTRU1QTElGSUNBUkUgTEEgU0NSSVRUVVJBIERFTCBDQU1QTyBGT1JNVUxBLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nRm9ybXVsYT5cclxuICAgIDxlcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm11bGEtY29tcG9uZW50PlxyXG4gICAgPC9lcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm11bGEtY29tcG9uZW50PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNHZW5lcmljTGlzdEltYWdlc0ltYWdlVGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1jb2w9XCJjb2xcIj5cclxuICAgIDxpbWcgc3JjPVwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwge3tyb3dbY29sLmtleV19fVwiIGNsYXNzPVwiR2VuZXJpY0xpc3RJbWFnZXNJbWFnZVRlbXBsYXRlXCI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0dlbmVyaWNMaXN0SW1hZ2VzS2V5VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1jb2w9XCJjb2xcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPkNoaWF2ZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInJvd1tjb2wua2V5XVwiPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjR2VuZXJpY0xpc3RJbWFnZXNWYWx1ZVRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmU8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJyb3dbY29sLmtleV1cIj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRFTVBMQVRFIFBFUiBRVUVSWSBFRElUT1IgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nUUU+XHJcbiAgICA8bmctdGVtcGxhdGUgW2FwcER5bmFtaWNMb2FkZXJdIFtkYXRhXT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgKG91dCk9XCJvbkV4dGVybmFsQ29tcG9uZW50T3V0KCRldmVudCk7XCI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|