@fundamental-ngx/core 0.43.51 → 0.43.52
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/esm2020/multi-combobox/multi-combobox.component.mjs +4 -2
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs +3 -1
- package/fesm2015/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs +3 -1
- package/fesm2020/fundamental-ngx-core-multi-combobox.mjs.map +1 -1
- package/fundamental-ngx-core-v0.43.52.tgz +0 -0
- package/package.json +3 -3
- package/schematics/add-dependencies/index.js +4 -4
- package/fundamental-ngx-core-v0.43.51.tgz +0 -0
|
@@ -413,7 +413,9 @@ export class MultiComboboxComponent extends BaseMultiCombobox {
|
|
|
413
413
|
}
|
|
414
414
|
else if (!KeyUtil.isKeyCode(event, [...this._nonOpeningKeys, CONTROL])) {
|
|
415
415
|
this._showList(true);
|
|
416
|
-
const acceptedKeys = !KeyUtil.isKeyType(event, 'alphabetical') &&
|
|
416
|
+
const acceptedKeys = !KeyUtil.isKeyType(event, 'alphabetical') &&
|
|
417
|
+
!KeyUtil.isKeyType(event, 'numeric') &&
|
|
418
|
+
!KeyUtil.isKeyType(event, 'ime');
|
|
417
419
|
if (acceptedKeys) {
|
|
418
420
|
// SetTimeout is needed for input to receive new value.
|
|
419
421
|
setTimeout(() => {
|
|
@@ -673,4 +675,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
673
675
|
type: ViewChild,
|
|
674
676
|
args: ['inputGroup', { read: ElementRef }]
|
|
675
677
|
}] } });
|
|
676
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbXVsdGktY29tYm9ib3gvbXVsdGktY29tYm9ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbXVsdGktY29tYm9ib3gvbXVsdGktY29tYm9ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRixPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQWMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBR0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUV2QixPQUFPLEVBRVAsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixnQkFBZ0IsRUFDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQTBCLE1BQU0sNEJBQTRCLENBQUM7QUFJdkYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxLQUFLLE1BQU0saUJBQWlCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFaEcsT0FBTyxFQUFFLHlCQUF5QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxXQUFXLEVBQWMsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFckYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFTLFlBQVksRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBb0M1RixNQUFNLE9BQU8sc0JBQWdDLFNBQVEsaUJBQW9CO0lBT3JFLCtCQUErQjtJQUMvQixJQUNJLGFBQWEsQ0FBQyxLQUFVO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxJQUFJLGFBQWE7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQStERCxrQ0FBa0M7SUFDbEMsSUFDSSxLQUFLLENBQUMsS0FBVTtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBaUlELHVDQUF1QztJQUN2QyxJQUFJLFNBQVMsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBRTdCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxJQUFJLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRCw2QkFBNkI7SUFDN0IsSUFBSSxZQUFZO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFJLE9BQU87UUFDUCxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUE2QkQsY0FBYztJQUNkLFlBQ3FCLFNBQW1CLEVBQ25CLGlCQUFtQyxFQUNuQyx3QkFBaUQsRUFDN0MsTUFBOEI7UUFFbkQsS0FBSyxFQUFFLENBQUM7UUFMUyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDbkMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUF5QjtRQXpRdEU7O1dBRUc7UUFFSCxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQVV0QixjQUFjO1FBQ04sbUJBQWMsR0FBUSxFQUFFLENBQUM7UUFFakMsbURBQW1EO1FBRW5ELGNBQVMsR0FBRyxPQUFPLENBQUM7UUFFcEI7OztXQUdHO1FBRUgsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFFeEIsc0VBQXNFO1FBRXRFLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBVXBCLGlFQUFpRTtRQUVqRSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBTWYsMERBQTBEO1FBRTFELFVBQUssR0FBRyxLQUFLLENBQUM7UUFVZCxrRUFBa0U7UUFFbEUsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRTFCLDRGQUE0RjtRQUU1RiwyQkFBc0IsR0FBcUIsT0FBTyxDQUFDO1FBRW5ELDZDQUE2QztRQUU3QyxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBRWxCLHFFQUFxRTtRQUVyRSwrQkFBMEIsR0FBRyxJQUFJLENBQUM7UUFXbEM7Ozs7O1dBS0c7UUFFSCxvQkFBZSxHQUFvQixVQUFVLENBQUM7UUF5QzlDLDRFQUE0RTtRQUU1RSw0QkFBdUIsR0FBRyxJQUFJLENBQUM7UUFFL0IsMkNBQTJDO1FBRTNDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQXFDLENBQUM7UUFFeEUsMERBQTBEO1FBRTFELGlCQUFZLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFFbEUsb0RBQW9EO1FBRXBELHVCQUFrQixHQUF3QixJQUFJLFlBQVksRUFBUyxDQUFDO1FBRXBFLGtEQUFrRDtRQUVsRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFNUMsbURBQW1EO1FBRW5ELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQXNEM0MsY0FBYztRQUNkLG9CQUFlLEdBQW1CLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxjQUFjLElBQUksTUFBTSxDQUFDO1FBd0J0Rix5Q0FBeUM7UUFDekMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQWNmOzs7V0FHRztRQUNILGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRXBDLGNBQWM7UUFDTix5QkFBb0IsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUE2RnpEOzs7O2FBSUs7UUFDTCwwQkFBcUIsR0FBRyxDQUFDLE1BQWUsRUFBUSxFQUFFO1lBQzlDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDekUsSUFBSSxDQUFDLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDckUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUU1QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUM7UUEzRkUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFnQixFQUFFLEVBQUU7WUFDM0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQ3hELElBQUksRUFDSix5Q0FBeUMsQ0FDNUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVDLENBQUM7SUFFRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsY0FBYztJQUNkLEtBQUssQ0FBQyxlQUFlO1FBQ2pCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNiLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDakM7UUFFRCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUU5QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV6QixJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztJQUNkLGdCQUFnQixDQUFDLElBQTBCLEVBQUUsbUJBQW1CLEdBQUcsS0FBSztRQUNwRSxNQUFNLEdBQUcsR0FBRyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdkUsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDWixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDO2FBQU07WUFDSCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM1QztRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRS9CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxFQUFFO1lBQ25DLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzlCO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYztJQUNkLHdCQUF3QixDQUFDLEtBQWlCLEVBQUUsS0FBYTtRQUNyRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWM7SUFDZCxlQUFlLENBQUMsS0FBd0I7UUFDcEMsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ2xCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDTiwyQkFBMkIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVM7UUFDckQsTUFBTSxJQUFJLEdBQUcseUJBQXlCLENBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNFLElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQWdCRDs7O09BR0c7SUFDSyxZQUFZLENBQUMsS0FBNkIsRUFBRSxRQUE4QztRQUM5RixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2YsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2FBQzlDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsY0FBYztJQUNkLGlCQUFpQixDQUFDLEtBQW9CO1FBQ2xDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2pFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUMzQztJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsWUFBWSxDQUFDLEtBQTJCLEVBQUUsS0FBa0I7UUFDeEQsSUFBSSxLQUFLLEVBQUU7WUFDUCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDMUI7UUFDRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUUsSUFBSSxVQUFVLEVBQUU7WUFDWixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDL0I7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNkLFlBQVk7UUFDUixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPO1lBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdGLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQy9CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUMzRSxDQUFDO1FBRVIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO0lBQ2QsT0FBTyxDQUFDLEtBQWlCO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxhQUE0QixDQUFDO1FBQ2xELElBQUksTUFBTSxFQUFFO1lBQ1IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztZQUN0RSxJQUFJLE1BQU0sRUFBRTtnQkFDUixPQUFPO2FBQ1Y7WUFDRCxJQUNJLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxLQUFLLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxTQUFTO2dCQUM3QyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUNoQztnQkFDRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztTQUN2QjtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSywyQkFBMkIsQ0FBQyxJQUFnQjtRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYztJQUNkLHFCQUFxQixDQUFDLEtBQW9CO1FBQ3RDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hCO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDMUYsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNyQzthQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFBRTtZQUN4RSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BDO2FBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDZCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDaEI7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO2FBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQy9CO0lBQ0wsQ0FBQztJQUVELGNBQWM7SUFDZCxnQkFBZ0IsQ0FBQyxLQUFpQixFQUFFLEtBQWE7UUFDN0MsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxNQUE4QjtRQUN6QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWM7UUFDVixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYztJQUNkLHdCQUF3QixDQUFDLE1BQWU7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQscUNBQXFDO0lBQ3JDLElBQUk7UUFDQSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsc0NBQXNDO0lBQ3RDLEtBQUs7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO0lBQ2QsU0FBUyxDQUFDLE1BQWU7UUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRTtZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztZQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2hDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDL0I7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO0lBQ2Qsa0JBQWtCLENBQUMsT0FBZSxJQUFJLENBQUMsU0FBUztRQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXZCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNwQztRQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFeEQsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDZjtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILHFCQUFxQixDQUFDLE1BQWU7UUFDakMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUVELElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMzQjthQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3pCO1FBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNsRDtJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxzQkFBc0IsQ0FBQyxLQUFvQjtRQUN2QyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3BCLE9BQU87U0FDVjtRQUVELElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUU7WUFDdEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRXZCLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3hCO1lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNyQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDNUI7U0FDSjthQUFNLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDM0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBRXZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO2FBQU0sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtZQUN4QyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztTQUN0QzthQUFNLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUU7WUFDekMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRXhCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDekI7YUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRTtZQUN0RSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3JCLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN2RyxJQUFJLFlBQVksRUFBRTtnQkFDZCx1REFBdUQ7Z0JBQ3ZELFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ1osSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO3dCQUNuQixJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztxQkFDeEM7Z0JBQ0wsQ0FBQyxDQUFDLENBQUM7YUFDTjtTQUNKO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILHNCQUFzQixDQUFDLFNBQStCO1FBQ2xELElBQUksU0FBUyxLQUFLLElBQUksRUFBRTtZQUNwQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWEsQ0FBQyxNQUFhO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZCxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzNDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHFCQUFxQixDQUFDLEtBQWlCLEVBQUUsS0FBYTtRQUMxRCxpRUFBaUU7UUFDakUsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssY0FBYyxFQUFFO2dCQUNyQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUU7b0JBQ2xCLDRDQUE0QztvQkFDNUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2xDO3FCQUFNO29CQUNILGdEQUFnRDtvQkFDaEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDM0M7Z0JBQ0QsT0FBTyxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUM7YUFDckM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxVQUFVO1lBQ3JELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztJQUNuRSxDQUFDO0lBRUQsY0FBYztJQUNOLGdCQUFnQixDQUFDLFlBQXNCO1FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLFlBQVksRUFBRTtZQUM5QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUM3QjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ04sS0FBSyxDQUFDLGdCQUFnQjtRQUMxQixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzdCLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNsRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDekIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLENBQUMsd0JBQXdCLENBQUMsbUJBQW1CLENBQ25ELEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUNoRix5QkFBeUIsRUFDekIsNEJBQTRCLEVBQzVCLElBQUksQ0FBQyxpQkFBaUIsRUFDdEIsUUFBUSxDQUNYLENBQUM7SUFDTixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssZ0JBQWdCLENBQUMsTUFBYztRQUNuQyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtZQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNwQixPQUFPO1NBQ1Y7UUFFRCxNQUFNLFdBQVcsR0FBRyx5QkFBeUIsQ0FBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzVGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsQ0FBQztRQUNoRixNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUN0RyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFN0MsSUFBSSxJQUFJLEVBQUU7WUFDTixJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNsRyxJQUFJLGFBQWEsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRUQsY0FBYztJQUNOLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUU1QixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNsQixPQUFPO1NBQ1Y7UUFFRCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQzthQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDbkQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELGNBQWM7SUFDTixvQkFBb0I7UUFDeEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztRQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQ3BFLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMzRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDakcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSyxzQkFBc0I7UUFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QyxRQUFRLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDeEIsS0FBSyxvQkFBb0I7b0JBQ3JCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO29CQUMvQyxNQUFNO2dCQUNWLEtBQUssbUJBQW1CO29CQUNwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQztvQkFDOUMsTUFBTTtnQkFDVixLQUFLLHVCQUF1QjtvQkFDeEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUM7b0JBQ2xELE1BQU07Z0JBQ1YsS0FBSyxzQkFBc0I7b0JBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDO29CQUNqRCxNQUFNO2FBQ2I7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O21IQXB2QlEsc0JBQXNCLGlIQTJRbkIsV0FBVzt1R0EzUWQsc0JBQXNCLHE5QkFkcEI7UUFDUCxVQUFVO1FBQ1YsK0JBQStCLEVBQUU7UUFDakM7WUFDSSxPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLFFBQVEsRUFBRSw2QkFBNkI7U0FDMUM7UUFDRDtZQUNJLE9BQU8sRUFBRSx3QkFBd0I7WUFDakMsV0FBVyxFQUFFLHNCQUFzQjtTQUN0QztRQUNELGdCQUFnQjtLQUNuQiwwREF5S2dCLGlCQUFpQiw0RUFSdkIsaUJBQWlCLHNJQUlhLFVBQVUsMFFBZ0J4QyxrQkFBa0IsdUhBSUksVUFBVSx1WUNyUi9DLCsyWkE2U0E7MkZEL01hLHNCQUFzQjtrQkFsQ2xDLFNBQVM7K0JBQ0ksbUJBQW1CLGlCQUdkLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sa0JBQy9CO3dCQUNaOzRCQUNJLFNBQVMsRUFBRSxZQUFZOzRCQUN2Qix1RUFBdUU7NEJBQ3ZFLE1BQU0sRUFBRSxDQUFDLFlBQVksRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQzt5QkFDakc7d0JBQ0Q7NEJBQ0ksU0FBUyxFQUFFLG1CQUFtQjs0QkFDOUIsdUVBQXVFOzRCQUN2RSxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUM7NEJBQ3RCLHdFQUF3RTs0QkFDeEUsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO3lCQUMzQjtxQkFDSixhQUNVO3dCQUNQLFVBQVU7d0JBQ1YsK0JBQStCLEVBQUU7d0JBQ2pDOzRCQUNJLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFFBQVEsRUFBRSw2QkFBNkI7eUJBQzFDO3dCQUNEOzRCQUNJLE9BQU8sRUFBRSx3QkFBd0I7NEJBQ2pDLFdBQVcsd0JBQXdCO3lCQUN0Qzt3QkFDRCxnQkFBZ0I7cUJBQ25COzswQkE2UUksTUFBTTsyQkFBQyxXQUFXOzRDQXRRdkIsYUFBYTtzQkFEWixLQUFLO2dCQUtGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBWU4sU0FBUztzQkFEUixLQUFLO2dCQVFOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBU04sV0FBVztzQkFEVixLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04sS0FBSztzQkFESixLQUFLO2dCQUtOLFFBQVE7c0JBRFAsS0FBSztnQkFLTixZQUFZO3NCQURYLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBS04sMEJBQTBCO3NCQUR6QixLQUFLO2dCQUtGLEtBQUs7c0JBRFIsS0FBSztnQkFlTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQVFOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQVVOLFVBQVU7c0JBRFQsS0FBSztnQkFTTixJQUFJO3NCQURILEtBQUs7Z0JBS04sdUJBQXVCO3NCQUR0QixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU07Z0JBS1UsYUFBYTtzQkFEN0IsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBS25CLGtCQUFrQjtzQkFEMUIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS3BDLGVBQWU7c0JBRC9CLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUtqQixxQkFBcUI7c0JBRHJDLFNBQVM7dUJBQUMsdUJBQXVCO2dCQUtqQixZQUFZO3NCQUQ1QixTQUFTO3VCQUFDLGNBQWM7Z0JBS1IsVUFBVTtzQkFEMUIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBS1osV0FBVztzQkFEM0IsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xuaW1wb3J0IHsgQSwgQ09OVFJPTCwgRE9XTl9BUlJPVywgRU5URVIsIEVTQ0FQRSwgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlRGlyZWN0aXZlLCBGRF9EQVRBX1NPVVJDRV9UUkFOU0ZPUk1FUiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2RhdGEtc291cmNlJztcbmltcG9ydCB7IEN2YUNvbnRyb2wsIEN2YURpcmVjdGl2ZSwgU2VsZWN0SXRlbSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQXV0b0NvbXBsZXRlRXZlbnQsXG4gICAgQ29udGVudERlbnNpdHksXG4gICAgRGVzdHJveWVkU2VydmljZSxcbiAgICBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICBGb2N1c0VzY2FwZURpcmVjdGlvbixcbiAgICBLZXlVdGlsLFxuICAgIE51bGxhYmxlLFxuICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIGNvZXJjZUFycmF5U2FmZSxcbiAgICByZXNpemVPYnNlcnZhYmxlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZEX0xJU1RfQ09NUE9ORU5ULCBMaXN0Q29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBQb3BvdmVyRmlsbE1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuaW1wb3J0IHsgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgVG9rZW5pemVyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Rva2VuJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgT3B0aW9uSXRlbSwgU2VsZWN0YWJsZU9wdGlvbkl0ZW0gfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlTXVsdGlDb21ib2JveCB9IGZyb20gJy4vYmFzZS1tdWx0aS1jb21ib2JveC5jbGFzcyc7XG5pbXBvcnQgeyBNb2JpbGVNdWx0aUNvbWJvYm94Q29tcG9uZW50IH0gZnJvbSAnLi9tb2JpbGUvbW9iaWxlLW11bHRpLWNvbWJvYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2JpbGVNdWx0aUNvbWJvYm94TW9kdWxlIH0gZnJvbSAnLi9tb2JpbGUvbW9iaWxlLW11bHRpLWNvbWJvYm94Lm1vZHVsZSc7XG5pbXBvcnQgeyBNVUxUSV9DT01CT0JPWF9DT01QT05FTlQgfSBmcm9tICcuL211bHRpLWNvbWJvYm94LnRva2VuJztcblxuaW1wb3J0IHsgTXVsdGlDb21ib2JveERhdGFTb3VyY2VQYXJzZXIgfSBmcm9tICcuL2RhdGEtc291cmNlL211bHRpLWNvbWJvYm94LWRhdGEtc291cmNlLXBhcnNlcic7XG5cbmltcG9ydCB7IGdldFNlbGVjdEl0ZW1CeUlucHV0VmFsdWUsIGdldFRva2VuSW5kZXhCeUlkbE9yVmFsdWUgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgTXVsdGlDb21ib2JveFNlbGVjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0aW9uLWNoYW5nZS5ldmVudCc7XG5pbXBvcnQgeyBGRF9MQU5HVUFHRSwgRmRMYW5ndWFnZSwgVHJhbnNsYXRpb25SZXNvbHZlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5cbmV4cG9ydCBjb25zdCBGRF9NQVBfTElNSVQgPSBuZXcgSW5qZWN0aW9uVG9rZW48bnVtYmVyPignTWFwIGxpbWl04omlJywgeyBmYWN0b3J5OiAoKSA9PiAxMiB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1tdWx0aS1jb21ib2JveCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWNvbWJvYm94LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tdWx0aS1jb21ib2JveC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBDdmFEaXJlY3RpdmUsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgICAgICAgaW5wdXRzOiBbJ2lkOmlucHV0SWQnLCAncGxhY2Vob2xkZXInLCAnc3RhdGUnLCAnc3RhdGVNZXNzYWdlJywgJ2Rpc2FibGVkJywgJ3JlYWRvbmx5JywgJ25hbWUnXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IERhdGFTb3VyY2VEaXJlY3RpdmUsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgICAgICAgaW5wdXRzOiBbJ2RhdGFTb3VyY2UnXSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgICAgICAgb3V0cHV0czogWydkYXRhQ2hhbmdlZCddXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBDdmFDb250cm9sLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCksXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RBVEFfU09VUkNFX1RSQU5TRk9STUVSLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IE11bHRpQ29tYm9ib3hEYXRhU291cmNlUGFyc2VyXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE1VTFRJX0NPTUJPQk9YX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBNdWx0aUNvbWJvYm94Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIERlc3Ryb3llZFNlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpQ29tYm9ib3hDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBCYXNlTXVsdGlDb21ib2JveDxUPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBTaG93IHNlbGVjdCBhbGwgY2hlY2tib3hcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dTZWxlY3RBbGwgPSBmYWxzZTtcblxuICAgIC8qKiBQcm92aWRlcyBzZWxlY3RlZCBpdGVtcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3RlZEl0ZW1zKHZhbHVlOiBUW10pIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IGNvZXJjZUFycmF5U2FmZSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBzZWxlY3RlZEl0ZW1zKCk6IFRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGVkSXRlbXM6IFRbXSA9IFtdO1xuXG4gICAgLyoqIFByb3ZpZGVzIG1heGltdW0gaGVpZ2h0IGZvciB0aGUgb3B0aW9uUGFuZWwuICovXG4gICAgQElucHV0KClcbiAgICBtYXhIZWlnaHQgPSAnMjUwcHgnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBBZGRPbiBCdXR0b24gc2hvdWxkIGJlIGZvY3VzYWJsZVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBidXR0b25Gb2N1c2FibGUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgc2hvdWxkIGJlIGVuYWJsZWQ7IEVuYWJsZWQgYnkgZGVmYXVsdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9Db21wbGV0ZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUT0RPOiBOYW1lIG9mIHRoZSBlbnRpdHkgZm9yIHdoaWNoIERhdGFQcm92aWRlciB3aWxsIGJlIGxvYWRlZC4gWW91IGNhbiBlaXRoZXIgcGFzcyBsaXN0IG9mXG4gICAgICogaXRlbXMgb3IgdXNlIHRoaXMgZW50aXR5Q2xhc3MgYW5kIGludGVybmFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gbG9va3VwIHRvIHNvbWUgcmVnaXN0cnlcbiAgICAgKiBhbmQgcmV0cmlldmUgdGhlIGJlc3QgbWF0Y2hpbmcgRGF0YVByb3ZpZGVyIHRoYXQgaXMgc2V0IG9uIGFwcGxpY2F0aW9uIGxldmVsXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBlbnRpdHlDbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIG11bHRpLWNvbWJvYm94IHNob3VsZCBiZSBidWlsdCBvbiBtb2JpbGUgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIE11bHRpIENvbWJvYm94IE1vYmlsZSBDb25maWd1cmF0aW9uLCBpdCdzIGFwcGxpZWQgb25seSwgd2hlbiBtb2JpbGUgaXMgZW5hYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZztcblxuICAgIC8qKiBUZWxscyB0aGUgbXVsdGktY29tYm9ib3ggaWYgd2UgbmVlZCB0byBncm91cCBpdGVtcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdyb3VwID0gZmFsc2U7XG5cbiAgICAvKiogQSBmaWVsZCBuYW1lIHRvIHVzZSB0byBncm91cCBkYXRhIGJ5IChzdXBwb3J0IGRvdHRlZCBub3RhdGlvbikuICovXG4gICAgQElucHV0KClcbiAgICBncm91cEtleTogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBmaWVsZCB0byBzaG93IGRhdGEgaW4gc2Vjb25kYXJ5IGNvbHVtbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeUtleTogc3RyaW5nO1xuXG4gICAgLyoqIFNob3cgdGhlIHNlY29uZCBjb2x1bW4gKGFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkuICovXG4gICAgQElucHV0KClcbiAgICBzaG93U2Vjb25kYXJ5VGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqIEhvcml6b250YWxseSBhbGlnbiB0ZXh0IGluc2lkZSB0aGUgc2Vjb25kIGNvbHVtbiAoYXBwbGljYWJsZSBmb3IgdHdvIGNvbHVtbnMgbGF5b3V0KS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeVRleHRBbGlnbm1lbnQ6ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnO1xuXG4gICAgLyoqIFR1cm5zIG9uL29mZiBBZGp1c3RhYmxlIFdpZHRoIGZlYXR1cmUuICovXG4gICAgQElucHV0KClcbiAgICBhdXRvUmVzaXplID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIG9wZW4gdGhlIGRyb3Bkb3duIHdoZW4gdGhlIGFkZG9uIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgb3BlbkRyb3Bkb3duT25BZGRPbkNsaWNrZWQgPSB0cnVlO1xuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSBtdWx0aSBjb21ib2JveCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBUW10pIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSwgdHJ1ZSk7XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3ZhLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXNldCBvcHRpb25zIGZvciB0aGUgU2VsZWN0IGJvZHkgd2lkdGgsIHdoYXRldmVyIGlzIGNob3NlbiwgdGhlIGJvZHkgaGFzIGEgNjAwcHggbGltaXQuXG4gICAgICogKiBgYXQtbGVhc3RgIHdpbGwgYXBwbHkgYSBtaW5pbXVtIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLiAtIERlZmF1bHRcbiAgICAgKiAqIGBlcXVhbGAgd2lsbCBhcHBseSBhIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLlxuICAgICAqICogJ2ZpdC1jb250ZW50JyB3aWxsIGFwcGx5IHdpZHRoIG5lZWRlZCB0byBwcm9wZXJseSBkaXNwbGF5IGl0ZW1zIGluc2lkZSwgaW5kZXBlbmRlbnQgb2YgY29udHJvbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxDb250cm9sTW9kZTogUG9wb3ZlckZpbGxNb2RlID0gJ2F0LWxlYXN0JztcblxuICAgIC8qKiBTZXRzIHRpdGxlIGF0dHJpYnV0ZSB0byBhZGRvbiBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBhZGRvbkljb25UaXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBpMThuIG1vZHVsZSB0byBtb2RpZnkgdGhlIHRyYW5zbGF0aW9uIGZvciB0aGlzIHN0cmluZy5cbiAgICAgKiBTZXRzIGludmFsaWQgZW50cnkgbWVzc2FnZS5cbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW52YWxpZEVudHJ5TWVzc2FnZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBUdXJucyBsaW1pdGxlc3MgbW9kZSwgT04gb3IgT0ZGICovXG4gICAgQElucHV0KClcbiAgICBsaW1pdGxlc3M6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGluIGZpbHRlcnMgYW5kIGFueSBraW5kIG9mIGNvbXBhcmF0b3JzIHdoZW4gd2Ugd29yayB3aXRoIG9iamVjdHMgYW5kIHRoaXMgaWRlbnRpZnlcbiAgICAgKiB1bmlxdWUgZmllbGQgbmFtZSBiYXNlZCBvbiB3aGljaCB3ZSBhcmUgZ29pbmcgdG8gZG8gdGhlIGpvYlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbG9va3VwS2V5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHdlIGRlYWwgd2l0aCB1bmtub3duIG9iamVjdCB3ZSBjYW4gdXNlIGBkaXNwbGF5S2V5YCB0byByZXRyaWV2ZSB2YWx1ZSBmcm9tIHNwZWNpZmljXG4gICAgICogcHJvcGVydHkgb2YgdGhlIG9iamVjdCB0byBhY3QgYXMgZGlzcGxheSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBTZWUgQ29tYm9Cb3gsIFNlbGVjdCwgUmFkaW9Hcm91cCwgQ2hlY2tCb3ggR3JvdXBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlLZXk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgdmFsdWVzLCBpdCBjYW4gYmUgb2YgdHlwZSBTZWxlY3RJdGVtLCBzdHJpbmcgb3IgYW55IG9iamVjdC5cbiAgICAgKiBHZW5lcmljIG9iamVjdCB0eXBlIGlzIGFtb25nIHRoZSBsaXN0IG9mIHR5cGVzLFxuICAgICAqIGJlY2F1c2Ugd2UgYWxsb3cgdG8gZ2V0IGxhYmVscyBhbmQgdmFsdWVzIHVzaW5nIGBkaXNwbGF5S2V5YCBhbmQgYGxvb2t1cEtleWAgaW5wdXRzIGFjY29yZGluZ2x5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGlzdDogQXJyYXk8U2VsZWN0SXRlbSB8IHN0cmluZyB8IG9iamVjdD47XG5cbiAgICAvKiogVGltZSBpbiBtcyBmb3IgaG93IGxvbmcgbWVzc2FnZSBvZiBpbnZhbGlkIGVudHJ5IHNob3VsZCBiZSBkaXNwbGF5ZWQuICovXG4gICAgQElucHV0KClcbiAgICBpbnZhbGlkRW50cnlEaXNwbGF5VGltZSA9IDMwMDA7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aUNvbWJvYm94U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBFbWl0cyBldmVudCB3aGVuIHRoZSBtZW51IGlzIG9wZW5lZC9jbG9zZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgaXNPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRW1pdHMgZXZlbnQgd2hlbiB0aGUgYWRkb24gYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgYWRkT25CdXR0b25DbGlja2VkOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIHN0YXJ0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZGF0YVJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIGZpbmlzaGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGRhdGFSZWNlaXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChGRF9MSVNUX0NPTVBPTkVOVClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RDb21wb25lbnQ6IExpc3RDb21wb25lbnRJbnRlcmZhY2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHJlYWRvbmx5IHNlYXJjaElucHV0RWxlbWVudDogTnVsbGFibGU8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ21vYmlsZUNvbnRyb2xUZW1wbGF0ZScpXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2JpbGVDb250cm9sVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xpc3RUZW1wbGF0ZScpXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoVG9rZW5pemVyQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuaXplcjogVG9rZW5pemVyQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEdyb3VwJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaW5wdXRHcm91cDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIE9wdGlvbiBpdGVtIFRlbXBsYXRlLlxuICAgICAqL1xuICAgIG9wdGlvbkl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDdXN0b20gR3JvdXAgSGVhZGVyIGl0ZW0gVGVtcGxhdGUuXG4gICAgICovXG4gICAgZ3JvdXBJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIFNlY29uZGFyeSBpdGVtIFRlbXBsYXRlLlxuICAgICAqL1xuICAgIHNlY29uZGFyeUl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDdXN0b20gU2VsZWN0ZWQgb3B0aW9uIGl0ZW0gVGVtcGxhdGUuXG4gICAgICovXG4gICAgc2VsZWN0ZWRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHkgPSB0aGlzLl9tdWx0aUNvbWJvYm94Q29uZmlnPy5jb250ZW50RGVuc2l0eSA/PyAnY296eSc7XG5cbiAgICAvKiogU2V0IHRoZSBpbnB1dCB0ZXh0IG9mIHRoZSBpbnB1dC4gKi9cbiAgICBzZXQgaW5wdXRUZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5faW5wdXRUZXh0VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLl9jdmEub25Ub3VjaGVkKCk7XG4gICAgfVxuXG4gICAgLyoqIEdldCB0aGUgaW5wdXQgdGV4dCBvZiB0aGUgaW5wdXQuICovXG4gICAgZ2V0IGlucHV0VGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRUZXh0VmFsdWUgfHwgJyc7XG4gICAgfVxuXG4gICAgLyoqIElzIGVtcHR5IHNlYXJjaCBmaWVsZC4gKi9cbiAgICBnZXQgaXNFbXB0eVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0dyb3VwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwS2V5KTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgTXVsdGkgSW5wdXQgaXMgb3BlbmVkLiAqL1xuICAgIGlzT3BlbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1heCB3aWR0aCBvZiBsaXN0IGNvbnRhaW5lclxuICAgICAqL1xuICAgIG1heFdpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWluIHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICovXG4gICAgbWluV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBOZWVkIGZvciBvcGVuaW5nIG1vYmlsZSB2ZXJzaW9uXG4gICAgICovXG4gICAgb3BlbkNoYW5nZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyYW5zbGF0aW9uUmVzb2x2ZXIgPSBuZXcgVHJhbnNsYXRpb25SZXNvbHZlcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgQEluamVjdChGRF9MQU5HVUFHRSkgX2xhbmckOiBPYnNlcnZhYmxlPEZkTGFuZ3VhZ2U+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5fbGFuZ1N1YnNjcmlwdGlvbiA9IF9sYW5nJC5zdWJzY3JpYmUoKGxhbmc6IEZkTGFuZ3VhZ2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZEVudHJ5TWVzc2FnZSA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShcbiAgICAgICAgICAgICAgICBsYW5nLFxuICAgICAgICAgICAgICAgICdwbGF0Zm9ybU11bHRpQ29tYm9ib3guaW52YWxpZEVudHJ5RXJyb3InXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdmFDb250cm9sLmxpc3RlblRvQ2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9vcGVuRGF0YVN0cmVhbSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xhbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXRVcE1vYmlsZU1vZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Fzc2lnbkN1c3RvbVRlbXBsYXRlcygpO1xuXG4gICAgICAgIHRoaXMuX2luaXRXaW5kb3dSZXNpemUoKTtcblxuICAgICAgICB0aGlzLl90b2tlbml6ZXIuX3Nob3dPdmVyZmxvd1BvcG92ZXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVTZWxlY3Rpb24oaXRlbTogU2VsZWN0YWJsZU9wdGlvbkl0ZW0sIGZyb21Ub2tlbkNsb3NlQ2xpY2sgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZHggPSBnZXRUb2tlbkluZGV4QnlJZGxPclZhbHVlKGl0ZW0sIHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMpO1xuICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5wdXNoKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZDtcblxuICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UoZnJvbVRva2VuQ2xvc2VDbGljayk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNUb1NlYXJjaEZpZWxkKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25PcHRpb25DaGVja2JveENsaWNrZWQoZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuX29uTGlzdEVsZW1lbnRDbGlja2VkKGV2ZW50LCBpbmRleCk7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuX3NlYXJjaFRlcm1DaGFuZ2VkKCcnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkNvbXBsZXRlVGVybShldmVudDogQXV0b0NvbXBsZXRlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmZvcmNlQ2xvc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3RvZ2dsZVNlbGVjdGlvbkJ5SW5wdXRUZXh0KGV2ZW50LnRlcm0pO1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90b2dnbGVTZWxlY3Rpb25CeUlucHV0VGV4dCh0ZXh0ID0gdGhpcy5pbnB1dFRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGdldFNlbGVjdEl0ZW1CeUlucHV0VmFsdWU8VD4odGhpcy5fZnVsbEZsYXRTdWdnZXN0aW9ucywgdGV4dCk7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICB0aGlzLl90b2dnbGVTZWxlY3Rpb24oaXRlbSk7XG4gICAgICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IHNlbGVjdHMgYWxsIHBvc3NpYmxlIG9wdGlvbnMuXG4gICAgICogKnNlbGVjdCogYXR0cmlidXRlIOKAkyBpZiAqdHJ1ZSogc2VsZWN0IGFsbCwgaWYgKmZhbHNlKiB1bnNlbGVjdCBhbGxcbiAgICAgKiAqL1xuICAgIF9oYW5kbGVTZWxlY3RBbGxJdGVtcyA9IChzZWxlY3Q6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5fZmxhdFN1Z2dlc3Rpb25zLmZvckVhY2goKGl0ZW0pID0+IChpdGVtLnNlbGVjdGVkID0gc2VsZWN0KSk7XG4gICAgICAgIHRoaXMuX29uRXZlcnlJdGVtKHRoaXMuX3N1Z2dlc3Rpb25zLCAoaXRlbSkgPT4gKGl0ZW0uc2VsZWN0ZWQgPSBzZWxlY3QpKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucyA9IHNlbGVjdCA/IFsuLi50aGlzLl9mbGF0U3VnZ2VzdGlvbnNdIDogW107XG4gICAgICAgIHRoaXMuX3JhbmdlU2VsZWN0b3IucmVzZXQoKTtcblxuICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEl0ZXJhdGUgb3ZlciBldmVyeSBpdGVtIGFuZCBwZXJmb3JtIGNhbGxiYWNrXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb25FdmVyeUl0ZW0oaXRlbXM6IFNlbGVjdGFibGVPcHRpb25JdGVtW10sIGNhbGxiYWNrOiAoaXRlbTogU2VsZWN0YWJsZU9wdGlvbkl0ZW0pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2soaXRlbSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkV2ZXJ5SXRlbShpdGVtLmNoaWxkcmVuLCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9uYXZpZ2F0ZUJ5VG9rZW5zKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0RPV05fQVJST1csIFVQX0FSUk9XXSkgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMubGlzdENvbXBvbmVudC5pdGVtcz8uZmlyc3QuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JlbW92ZVRva2VuKHRva2VuOiBTZWxlY3RhYmxlT3B0aW9uSXRlbSwgZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25JdGVtID0gdGhpcy5fc3VnZ2VzdGlvbnMuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gdG9rZW4udmFsdWUpO1xuICAgICAgICBpZiAob3B0aW9uSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlU2VsZWN0aW9uKG9wdGlvbkl0ZW0sIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fcmFuZ2VTZWxlY3Rvci5yZXNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbW9yZUNsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdGhpcy5pc0dyb3VwXG4gICAgICAgICAgICA/IHRoaXMuX2NvbnZlcnRPYmplY3RzVG9Hcm91cE9wdGlvbkl0ZW1zKHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKSlcbiAgICAgICAgICAgIDogdGhpcy5fc3VnZ2VzdGlvbnMuZmlsdGVyKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMuc29tZSgoaXRlbSkgPT4gZXF1YWwoaXRlbS52YWx1ZSwgdmFsdWUudmFsdWUpKVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3Nob3dMaXN0KHRydWUpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkU2hvd24kLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uQmx1cihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBpc0xpc3QgPSAhIXRhcmdldC5jbG9zZXN0KCcuZmQtbXVsdGktY29tYm9ib3hfX2xpc3QtY29udGFpbmVyJyk7XG4gICAgICAgICAgICBpZiAoaXNMaXN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zPy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1swXS5sYWJlbCA9PT0gdGhpcy5pbnB1dFRleHQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5fc3VnZ2VzdGlvbnNbMF0uc2VsZWN0ZWRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZVNlbGVjdGlvbih0aGlzLl9zdWdnZXN0aW9uc1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zaG93TGlzdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0byBzZXQgaW5wdXQgdGV4dCBhcyBpdGVtIGxhYmVsLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3NldElucHV0VGV4dEZyb21PcHRpb25JdGVtKGl0ZW06IE9wdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSBpdGVtLmxhYmVsO1xuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2hvd0xpc3QoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uSXRlbUtleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRVNDQVBFKSkge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNUb1NlYXJjaEZpZWxkKCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEEpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU2VsZWN0QWxsSXRlbXMoZmFsc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBBKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVNlbGVjdEFsbEl0ZW1zKHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBFTlRFUikpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLnJlc2V0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFNQQUNFKSkge1xuICAgICAgICAgICAgdGhpcy5fcmFuZ2VTZWxlY3Rvci5yZXNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25PcHRpb25DbGlja2VkKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uTGlzdEVsZW1lbnRDbGlja2VkKGV2ZW50LCBpbmRleCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSGFuZGxlIGRpYWxvZyBkaXNtaXNzaW5nLCBjbG9zZXMgcG9wb3ZlciBhbmQgc2V0cyBiYWNrdXAgZGF0YS5cbiAgICAgKi9cbiAgICBfZGlhbG9nRGlzbWlzcyhiYWNrdXA6IFNlbGVjdGFibGVPcHRpb25JdGVtW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucyA9IFsuLi5iYWNrdXBdO1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB0aGlzLl9zaG93TGlzdChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTaG93biQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEhhbmRsZSBkaWFsb2cgYXBwcm92YWwsIGNsb3NlcyBwb3BvdmVyIGFuZCBwcm9wYWdhdGVzIGRhdGEgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBfZGlhbG9nQXBwcm92ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5fc2hvd0xpc3QoZmFsc2UpO1xuICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9wb3Zlck9wZW5DaGFuZ2VIYW5kbGUoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gaXNPcGVuO1xuICAgICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBzZWxlY3QgcG9wb3ZlciBib2R5LiAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh0aGlzLmlzT3Blbik7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZXMgdGhlIHNlbGVjdCBwb3BvdmVyIGJvZHkuICovXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzVG9TZWFyY2hGaWVsZCgpO1xuICAgICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTaG93biQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG5cbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh0aGlzLmlzT3Blbik7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dMaXN0KGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4gIT09IGlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG4gICAgICAgICAgICB0aGlzLl9jdmEub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLm9wZW5DaGFuZ2UubmV4dChpc09wZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fc2VhcmNoVGVybUNoYW5nZWQoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VhcmNoVGVybUNoYW5nZWQodGV4dDogc3RyaW5nID0gdGhpcy5pbnB1dFRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBtYXAuc2V0KCdxdWVyeScsIHRleHQpO1xuXG4gICAgICAgIGlmICghdGhpcy5saW1pdGxlc3MpIHtcbiAgICAgICAgICAgIG1hcC5zZXQoJ2xpbWl0JywgdGhpcy5fbWFwTGltaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFTb3VyY2VQcm92aWRlcj8ubWF0Y2gobWFwKTtcblxuICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgQ2xpY2sgb24gQnV0dG9uXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9vblByaW1hcnlCdXR0b25DbGljayhpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaFRlcm1DaGFuZ2VkKCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW5Ecm9wZG93bk9uQWRkT25DbGlja2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93TGlzdCghaXNPcGVuKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fc2hvd0xpc3QoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIEtleWRvd24gb24gSW5wdXRcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX29uSW5wdXRLZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY3ZhLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd0xpc3QodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RDb21wb25lbnQuc2V0SXRlbUFjdGl2ZSgwKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hvb3NlT3RoZXJJdGVtKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2Nob29zZU90aGVySXRlbSgtMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEVOVEVSKSkge1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlU2VsZWN0aW9uQnlJbnB1dFRleHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRVNDQVBFKSkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX3Nob3dMaXN0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmICghS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFsuLi50aGlzLl9ub25PcGVuaW5nS2V5cywgQ09OVFJPTF0pKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93TGlzdCh0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IGFjY2VwdGVkS2V5cyA9ICFLZXlVdGlsLmlzS2V5VHlwZShldmVudCwgJ2FscGhhYmV0aWNhbCcpICYmICFLZXlVdGlsLmlzS2V5VHlwZShldmVudCwgJ251bWVyaWMnKTtcbiAgICAgICAgICAgIGlmIChhY2NlcHRlZEtleXMpIHtcbiAgICAgICAgICAgICAgICAvLyBTZXRUaW1lb3V0IGlzIG5lZWRlZCBmb3IgaW5wdXQgdG8gcmVjZWl2ZSBuZXcgdmFsdWUuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50Py5zZXRJdGVtQWN0aXZlKDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHBhc3NlZCB0byBsaXN0IGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBfaGFuZGxlTGlzdEZvY3VzRXNjYXBlKGRpcmVjdGlvbjogRm9jdXNFc2NhcGVEaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNUb1NlYXJjaEZpZWxkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2FkZE9uQ2xpY2tlZCgkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRkT25CdXR0b25DbGlja2VkLmVtaXQoJGV2ZW50KTtcbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fb25QcmltYXJ5QnV0dG9uQ2xpY2sodGhpcy5pc09wZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGFwcGx5aW5nIHJhbmdlIHNlbGVjdGlvbi4gTm90ZSwgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBhZnRlciBjb21ib2JveCBpdGVtJ3MgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZFxuICAgICAqL1xuICAgIHByaXZhdGUgX29uTGlzdEVsZW1lbnRDbGlja2VkKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgYXQgdGhpcyBwb2ludCwgc28gaXQgY2FuIGJlIHNhZmVseSB1c2VkXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblN0YXRlID0gdGhpcy5fc3VnZ2VzdGlvbnNbaW5kZXhdLnNlbGVjdGVkO1xuICAgICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLm9uUmFuZ2VFbGVtZW50VG9nZ2xlZChpbmRleCwgZXZlbnQpO1xuICAgICAgICBjb25zdCB0b1JlbW92ZVNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5fcmFuZ2VTZWxlY3Rvci5hcHBseVZhbHVlVG9FYWNoSW5SYW5nZSgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fc3VnZ2VzdGlvbnNbaWR4XTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50LnNlbGVjdGVkICE9PSBzZWxlY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92aW5nIGZyb20gXCJfc2VsZWN0ZWRTdWdnZXN0aW9uc1wiIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgdG9SZW1vdmVTZXQuYWRkKGN1cnJlbnQudmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZGluZyBjdXJyZW50IGl0ZW0gdG8gXCJfc2VsZWN0ZWRTdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMucHVzaChjdXJyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudC5zZWxlY3RlZCA9IHNlbGVjdGlvblN0YXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucyA9IHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMuZmlsdGVyKChzKSA9PiAhdG9SZW1vdmVTZXQuaGFzKHMudmFsdWUpKTtcbiAgICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlKCk7XG5cbiAgICAgICAgdGhpcy5fdG9rZW5pemVyLm9uUmVzaXplKCk7XG5cbiAgICAgICAgdGhpcy5fdG9rZW5pemVyLnRva2VuaXplcklubmVyRWwubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID1cbiAgICAgICAgICAgIHRoaXMuX3Rva2VuaXplci50b2tlbml6ZXJJbm5lckVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcm9wYWdhdGVDaGFuZ2UoZW1pdEluTW9iaWxlPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubW9iaWxlIHx8IGVtaXRJbk1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fbWFwQW5kVXBkYXRlTW9kZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0VXBNb2JpbGVNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1VTFRJX0NPTUJPQk9YX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUR5bmFtaWNNb2R1bGUoXG4gICAgICAgICAgICB7IGxpc3RUZW1wbGF0ZTogdGhpcy5saXN0VGVtcGxhdGUsIGNvbnRyb2xUZW1wbGF0ZTogdGhpcy5tb2JpbGVDb250cm9sVGVtcGxhdGUgfSxcbiAgICAgICAgICAgIE1vYmlsZU11bHRpQ29tYm9ib3hNb2R1bGUsXG4gICAgICAgICAgICBNb2JpbGVNdWx0aUNvbWJvYm94Q29tcG9uZW50LFxuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIGluamVjdG9yXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IHBpY2tzIG90aGVyIHZhbHVlIG1vdmVkIGZyb20gY3VycmVudCBvbmUgYnkgb2Zmc2V0LCBjYWxsZWQgb25seSB3aGVuIE11bHRpIENvbWJvYm94IGlzIGNsb3NlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jaG9vc2VPdGhlckl0ZW0ob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnM/Lmxlbmd0aCA9PT0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZVZhbHVlID0gZ2V0U2VsZWN0SXRlbUJ5SW5wdXRWYWx1ZTxUPih0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zLCB0aGlzLmlucHV0VGV4dCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zLmZpbmRJbmRleCgodmFsdWUpID0+IHZhbHVlID09PSBhY3RpdmVWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gIXRoaXMuaW5wdXRUZXh0ICYmIG9mZnNldCA9PT0gLTEgPyB0aGlzLl9mbGF0U3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSA6IGluZGV4ICsgb2Zmc2V0O1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zW3Bvc2l0aW9uXTtcblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0SW5wdXRUZXh0RnJvbU9wdGlvbkl0ZW0oaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5maW5kSW5kZXgoKHZhbHVlKSA9PiB2YWx1ZS5sYWJlbCA9PT0gaXRlbT8ubGFiZWwpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuX2Nob29zZU90aGVySXRlbShvZmZzZXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0V2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9nZXRPcHRpb25zTGlzdFdpZHRoKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmF1dG9SZXNpemUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5faW5wdXRHcm91cC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9nZXRPcHRpb25zTGlzdFdpZHRoKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0T3B0aW9uc0xpc3RXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9pbnB1dEdyb3VwLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbEJhcldpZHRoID0gYm9keS5vZmZzZXRXaWR0aCAtIGJvZHkuY2xpZW50V2lkdGg7XG4gICAgICAgIHRoaXMubWF4V2lkdGggPSB0aGlzLmF1dG9SZXNpemUgPyB3aW5kb3cuaW5uZXJXaWR0aCAtIHNjcm9sbEJhcldpZHRoIC0gcmVjdC5sZWZ0IDogdGhpcy5taW5XaWR0aDtcbiAgICAgICAgdGhpcy5taW5XaWR0aCA9IHJlY3Qud2lkdGggLSAyO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEFzc2lnbiBjdXN0b20gdGVtcGxhdGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXNzaWduQ3VzdG9tVGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoICh0ZW1wbGF0ZS5nZXROYW1lKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdvcHRpb25JdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbkl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdncm91cEl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kYXJ5SXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRhcnlJdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0ZWRJdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmQtbXVsdGktY29tYm9ib3hcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiICpuZ0lmPVwibW9iaWxlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAqbmdJZj1cIiFtb2JpbGVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtcG9wb3Zlci1jdXN0b20tbGlzdCBmZC1tdWx0aS1jb21ib2JveF9fbGlzdC1jb250YWluZXJcIlxuICAgICAgICAoaXNPcGVuQ2hhbmdlKT1cIl9wb3BvdmVyT3BlbkNoYW5nZUhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgW2lzT3Blbl09XCJpc09wZW5cIlxuICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgICAgICBbZGlzYWJsZWRdPVwidGhpcy5fY3ZhLmRpc2FibGVkXCJcbiAgICAgICAgW2ZpbGxDb250cm9sTW9kZV09XCJmaWxsQ29udHJvbE1vZGVcIlxuICAgID5cbiAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IFtzdHlsZS53aWR0aC4lXT1cIiFhdXRvUmVzaXplICYmIDEwMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XG4gICAgPGZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cD5cbiAgICAgICAgPGZkLWlucHV0LWdyb3VwXG4gICAgICAgICAgICAjaW5wdXRHcm91cFxuICAgICAgICAgICAgW2lkXT1cInRoaXMuX2N2YS5pZCArICctaW5wdXQtZ3JvdXAtY29udGFpbmVyJ1wiXG4gICAgICAgICAgICBbc3RhdGVdPVwidGhpcy5fY3ZhLnN0YXRlXCJcbiAgICAgICAgICAgIFtidXR0b25Gb2N1c2FibGVdPVwiYnV0dG9uRm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtidXR0b25dPVwiIXRoaXMuX2N2YS5yZWFkb25seVwiXG4gICAgICAgICAgICBbZ2x5cGhdPVwiIXRoaXMuX2N2YS5yZWFkb25seSA/ICduYXZpZ2F0aW9uLWRvd24tYXJyb3cnIDogJyAnXCJcbiAgICAgICAgICAgIFtpc0NvbnRyb2xdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidGhpcy5fY3ZhLmRpc2FibGVkIHx8IHRoaXMuX2N2YS5yZWFkb25seVwiXG4gICAgICAgICAgICBbaXNFeHBhbmRlZF09XCIhbW9iaWxlICYmIGlzT3BlbiAmJiBfc3VnZ2VzdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRoaXMuX2N2YS5kaXNhYmxlZCB8fCB0aGlzLl9jdmEucmVhZG9ubHlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1yZWFkb25seV09XCJ0aGlzLl9jdmEucmVhZG9ubHlcIlxuICAgICAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cInRoaXMuX2N2YS5hcmlhTGFiZWwgfHwgKCdwbGF0Zm9ybU11bHRpQ29tYm9ib3guaW5wdXRHbHlwaEFyaWFMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCJhZGRvbkljb25UaXRsZSB8fCAoJ3BsYXRmb3JtTXVsdGlDb21ib2JveC5pbnB1dEdseXBoQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAoYWRkT25CdXR0b25DbGlja2VkKT1cIl9hZGRPbkNsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwibW9iaWxlICYmICFpc09wZW4gJiYgX29uUHJpbWFyeUJ1dHRvbkNsaWNrKGZhbHNlKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJfbmF2aWdhdGVCeVRva2VucygkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLXRva2VuaXplclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX3NlbGVjdGVkU3VnZ2VzdGlvbnNcIlxuICAgICAgICAgICAgICAgIFt0b2tlbml6ZXJGb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtjb21wYWN0Q29sbGFwc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgI3Rva2VuaXplclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbXVsdGktY29tYm9ib3gtdG9rZW5pemVyLWN1c3RvbVwiXG4gICAgICAgICAgICAgICAgKG1vcmVDbGlja2VkRXZlbnQpPVwiX21vcmVDbGlja2VkKClcIlxuICAgICAgICAgICAgICAgIGZkTXVsdGlBbm5vdW5jZXJcbiAgICAgICAgICAgICAgICBbbXVsdGlBbm5vdW5jZXJPcHRpb25zXT1cIl9zdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZkLXRva2VuXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJ0aGlzLl9jdmEuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAob25DbG9zZUNsaWNrKT1cIl9yZW1vdmVUb2tlbih0b2tlbiwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0b2tlbiBvZiBfc2VsZWN0ZWRTdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyB0b2tlbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvZmQtdG9rZW4+XG5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgI3NlYXJjaElucHV0RWxlbWVudFxuICAgICAgICAgICAgICAgICAgICBmZGtBdXRvQ29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgKG9uQ29tcGxldGUpPVwiX29uQ29tcGxldGVUZXJtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfc3VnZ2VzdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRUZXh0XT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCInY29yZU11bHRpQ29tYm9Cb3gubXVsdGlDb21ib0JveEFyaWFMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0aGlzLl9jdmEuYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWF1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGUgJiYgIW1vYmlsZSA/ICdsaXN0JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLW93bnNdPVwiYXV0b0NvbXBsZXRlICYmICFtb2JpbGUgPyB0aGlzLl9jdmEuaWQgKyAnLXJlc3VsdCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhdXRvQ29tcGxldGUgJiYgIW1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwidGhpcy5fY3ZhLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidGhpcy5fY3ZhLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfb25JbnB1dEtleWRvd25IYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidGhpcy5fY3ZhLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfc2VhcmNoVGVybUNoYW5nZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0aGlzLl9jdmEucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwidGhpcy5fY3ZhLm9uVG91Y2hlZCgpOyB0b2tlbml6ZXIuX3Nob3dBbGxUb2tlbnMoKVwiXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cIiFtb2JpbGUgJiYgX29uQmx1cigkZXZlbnQpOyB0b2tlbml6ZXIuX2hpZGVUb2tlbnMoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRoaXMuX2N2YS5yZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwidGhpcy5fY3ZhLnJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJ0aGlzLl9jdmEucmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5Rm5cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXRva2VuaXplcl9faW5wdXRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2ZkLXRva2VuaXplcj5cbiAgICAgICAgPC9mZC1pbnB1dC1ncm91cD5cblxuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlXG4gICAgICAgICAgICAqbmdJZj1cIm1vYmlsZSAmJiBpc09wZW4gPyBmYWxzZSA6ICEhdGhpcy5fY3ZhLnN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBbdHlwZV09XCJ0aGlzLl9jdmEuc3RhdGVcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJ0aGlzLl9jdmEuc3RhdGVNZXNzYWdlXCJcbiAgICAgICAgPjwvZmQtZm9ybS1tZXNzYWdlPlxuICAgIDwvZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2JpbGVDb250cm9sVGVtcGxhdGU+XG4gICAgPGZkLWlucHV0LWdyb3VwXG4gICAgICAgIFtpZF09XCJ0aGlzLl9jdmEuaWQgKyAnLWlucHV0LWdyb3VwLWNvbnRhaW5lcidcIlxuICAgICAgICBjbGFzcz1cImZkLW11bHRpLWNvbWJvYm94LWlucHV0LWdyb3VwLWN1c3RvbVwiXG4gICAgICAgIFtzdGF0ZV09XCJ0aGlzLl9jdmEuc3RhdGVcIlxuICAgICAgICBbYnV0dG9uRm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgW2lzQ29udHJvbF09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInRoaXMuX2N2YS5kaXNhYmxlZCB8fCB0aGlzLl9jdmEucmVhZG9ubHlcIlxuICAgICAgICBbaXNFeHBhbmRlZF09XCIhbW9iaWxlICYmIGlzT3BlbiAmJiBfc3VnZ2VzdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwidGhpcy5fY3ZhLmRpc2FibGVkIHx8IHRoaXMuX2N2YS5yZWFkb25seVwiXG4gICAgICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwidGhpcy5fY3ZhLnJlYWRvbmx5XCJcbiAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cInRoaXMuX2N2YS5hcmlhTGFiZWxcIlxuICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBmZGtBdXRvQ29tcGxldGVcbiAgICAgICAgICAgIChvbkNvbXBsZXRlKT1cIl9vbkNvbXBsZXRlVGVybSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cIl9zdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICBbaW5wdXRUZXh0XT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ2NvcmVNdWx0aUNvbWJvQm94Lm11bHRpQ29tYm9Cb3hBcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRoaXMuX2N2YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWF1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGUgJiYgIW1vYmlsZSA/ICdsaXN0JyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlID8gdGhpcy5fY3ZhLmlkICsgJy1yZXN1bHQnIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlXCJcbiAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgZmQtaW5wdXQtZ3JvdXAtaW5wdXRcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICBbaWRdPVwidGhpcy5fY3ZhLmlkXCJcbiAgICAgICAgICAgIFtuYW1lXT1cInRoaXMuX2N2YS5uYW1lXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIl9vbklucHV0S2V5ZG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidGhpcy5fY3ZhLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9zZWFyY2hUZXJtQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0aGlzLl9jdmEucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGZvY3VzKT1cInRoaXMuX2N2YS5vblRvdWNoZWQoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCIhbW9iaWxlICYmIF9vbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwidGhpcy5fY3ZhLnJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwidGhpcy5fY3ZhLnJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtkaXNwbGF5Rm5dPVwiX2Rpc3BsYXlGblwiXG4gICAgICAgIC8+XG4gICAgPC9mZC1pbnB1dC1ncm91cD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdFRlbXBsYXRlPlxuICAgIDx1bFxuICAgICAgICBmZC1saXN0XG4gICAgICAgIChmb2N1c0VzY2FwZUxpc3QpPVwiX2hhbmRsZUxpc3RGb2N1c0VzY2FwZSgkZXZlbnQpXCJcbiAgICAgICAgW2Ryb3Bkb3duTW9kZV09XCJ0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJmZC1tdWx0aS1jb21ib2JveF9fbGlzdCBmZC1saXN0LS1tdWx0aS1pbnB1dFwiXG4gICAgICAgIFtpZF09XCJ0aGlzLl9jdmEuaWQgKyAnLXJlc3VsdCdcIlxuICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIiFtb2JpbGUgJiYgbWF4SGVpZ2h0XCJcbiAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCIhbW9iaWxlICYmIG1pbldpZHRoICsgJ3B4J1wiXG4gICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiYXV0b1Jlc2l6ZSAmJiBtYXhXaWR0aCArICdweCdcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGhpcy5fY3ZhLmlkICsgJy1zZWFyY2gnXCJcbiAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgKGtleWRvd24udGFiKT1cImNsb3NlKClcIlxuICAgICAgICAoa2V5ZG93bi5zaGlmdC50YWIpPVwiY2xvc2UoKVwiXG4gICAgPlxuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlXG4gICAgICAgICAgICAqbmdJZj1cIiEhdGhpcy5fY3ZhLnN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBbdHlwZV09XCJ0aGlzLl9jdmEuc3RhdGVcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJ0aGlzLl9jdmEuc3RhdGVNZXNzYWdlXCJcbiAgICAgICAgPjwvZmQtZm9ybS1tZXNzYWdlPlxuICAgICAgICA8ZmQtbXVsdGktY29tYm9ib3gtc2VsZWN0LWFsbC10b2dnbGVyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dTZWxlY3RBbGxcIlxuICAgICAgICAgICAgW3NlbGVjdEFsbEhhbmRsZXJdPVwiX2hhbmRsZVNlbGVjdEFsbEl0ZW1zXCJcbiAgICAgICAgICAgIFt2YWx1ZUNoYW5nZXNdPVwic2VsZWN0aW9uQ2hhbmdlXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cIl9zZWxlY3RlZFN1Z2dlc3Rpb25zXCJcbiAgICAgICAgICAgIFtmbGF0SXRlbXNdPVwiX2ZsYXRTdWdnZXN0aW9uc1wiXG4gICAgICAgID48L2ZkLW11bHRpLWNvbWJvYm94LXNlbGVjdC1hbGwtdG9nZ2xlcj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNHcm91cDsgZWxzZSBmbGF0TGlzdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgX3N1Z2dlc3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cEl0ZW1UZW1wbGF0ZTsgZWxzZSBncm91cEl0ZW1UZW1wbGF0ZVJlbmRlcmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1saXN0LWdyb3VwLWhlYWRlciByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgZ3JvdXAubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2dyb3VwSXRlbVRlbXBsYXRlUmVuZGVyZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdyb3VwSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBsYWJlbDogZ3JvdXAubGFiZWwgfSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbkl0ZW0gb2YgZ3JvdXAuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFtb2JpbGUgJiYgY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl9vbkl0ZW1LZXlEb3duSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIiEhb3B0aW9uSXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25PcHRpb25DaGVja2JveENsaWNrZWQoJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfdG9nZ2xlU2VsZWN0aW9uKG9wdGlvbkl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbkl0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbkl0ZW06IG9wdGlvbkl0ZW0sIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXRMaXN0PlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbkl0ZW0gb2YgX3N1Z2dlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFtb2JpbGUgJiYgX29uT3B0aW9uQ2xpY2tlZCgkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfb25JdGVtS2V5RG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIiEhb3B0aW9uSXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25PcHRpb25DaGVja2JveENsaWNrZWQoJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl90b2dnbGVTZWxlY3Rpb24ob3B0aW9uSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25JdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uSXRlbTogb3B0aW9uSXRlbSwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1vcHRpb25JdGVtPVwib3B0aW9uSXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgI2xpc3RJdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJvcHRpb25JdGVtLnNlbGVjdGVkICYmICEhc2VsZWN0ZWRJdGVtVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uSXRlbS52YWx1ZSwgaW5kZXg6IGluZGV4IH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKG9wdGlvbkl0ZW0uc2VsZWN0ZWQgJiYgc2VsZWN0ZWRJdGVtVGVtcGxhdGUpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvbkl0ZW1Tb3VyY2VcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uSXRlbTogb3B0aW9uSXRlbSwgaW5kZXg6IGluZGV4IH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2Vjb25kYXJ5VGV4dFNvdXJjZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb25JdGVtOiBvcHRpb25JdGVtIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LW9wdGlvbkl0ZW09XCJvcHRpb25JdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIiAjb3B0aW9uSXRlbVNvdXJjZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9wdGlvbkl0ZW1UZW1wbGF0ZTsgZWxzZSBvcHRpb25JdGVtVGVtcGxhdGVSZW5kZXJlclwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgZmQtbGlzdC10aXRsZVxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwib3B0aW9uSXRlbS5sYWJlbFwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbkl0ZW0ubGFiZWwgfCBoaWdobGlnaHQgOiBpbnB1dFRleHRcIlxuICAgICAgICAgICAgZmRUcnVuY2F0ZWRUaXRsZVxuICAgICAgICA+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNvcHRpb25JdGVtVGVtcGxhdGVSZW5kZXJlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uSXRlbS52YWx1ZSwgaW5kZXg6IGluZGV4IH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uSXRlbT1cIm9wdGlvbkl0ZW1cIiAjc2Vjb25kYXJ5VGV4dFNvdXJjZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NlY29uZGFyeVRleHRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWNvbmRhcnlJdGVtVGVtcGxhdGU7IGVsc2Ugc2Vjb25kYXJ5SXRlbVRlbXBsYXRlUmVuZGVyZXJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPVwic2Vjb25kYXJ5VGV4dEFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgZmQtbGlzdC1zZWNvbmRhcnlcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJvcHRpb25JdGVtLnNlY29uZGFyeVRleHRcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9uSXRlbS5zZWNvbmRhcnlUZXh0IHwgaGlnaGxpZ2h0IDogaW5wdXRUZXh0XCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2Vjb25kYXJ5SXRlbVRlbXBsYXRlUmVuZGVyZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2Vjb25kYXJ5SXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbkl0ZW0udmFsdWUgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
678
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbXVsdGktY29tYm9ib3gvbXVsdGktY29tYm9ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvbXVsdGktY29tYm9ib3gvbXVsdGktY29tYm9ib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMvRixPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBR0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkcsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQWMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBR0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUV2QixPQUFPLEVBRVAsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixnQkFBZ0IsRUFDbkIsTUFBTSw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsaUJBQWlCLEVBQTBCLE1BQU0sNEJBQTRCLENBQUM7QUFJdkYsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDeEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1B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LEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLHNCQUFzQjtzQkFEckIsS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBS04sMEJBQTBCO3NCQUR6QixLQUFLO2dCQUtGLEtBQUs7c0JBRFIsS0FBSztnQkFlTixlQUFlO3NCQURkLEtBQUs7Z0JBS04sY0FBYztzQkFEYixLQUFLO2dCQVFOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFLTixTQUFTO3NCQURSLEtBQUs7Z0JBUU4sU0FBUztzQkFEUixLQUFLO2dCQVVOLFVBQVU7c0JBRFQsS0FBSztnQkFTTixJQUFJO3NCQURILEtBQUs7Z0JBS04sdUJBQXVCO3NCQUR0QixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxZQUFZO3NCQURYLE1BQU07Z0JBS1UsYUFBYTtzQkFEN0IsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBS25CLGtCQUFrQjtzQkFEMUIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBS3BDLGVBQWU7c0JBRC9CLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUtqQixxQkFBcUI7c0JBRHJDLFNBQVM7dUJBQUMsdUJBQXVCO2dCQUtqQixZQUFZO3NCQUQ1QixTQUFTO3VCQUFDLGNBQWM7Z0JBS1IsVUFBVTtzQkFEMUIsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBS1osV0FBVztzQkFEM0IsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZyAqL1xuaW1wb3J0IHsgQSwgQ09OVFJPTCwgRE9XTl9BUlJPVywgRU5URVIsIEVTQ0FQRSwgU1BBQ0UsIFVQX0FSUk9XIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlRGlyZWN0aXZlLCBGRF9EQVRBX1NPVVJDRV9UUkFOU0ZPUk1FUiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2RhdGEtc291cmNlJztcbmltcG9ydCB7IEN2YUNvbnRyb2wsIEN2YURpcmVjdGl2ZSwgU2VsZWN0SXRlbSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgQXV0b0NvbXBsZXRlRXZlbnQsXG4gICAgQ29udGVudERlbnNpdHksXG4gICAgRGVzdHJveWVkU2VydmljZSxcbiAgICBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICBGb2N1c0VzY2FwZURpcmVjdGlvbixcbiAgICBLZXlVdGlsLFxuICAgIE51bGxhYmxlLFxuICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgIGNvZXJjZUFycmF5U2FmZSxcbiAgICByZXNpemVPYnNlcnZhYmxlXG59IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IEZEX0xJU1RfQ09NUE9ORU5ULCBMaXN0Q29tcG9uZW50SW50ZXJmYWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpc3QnO1xuaW1wb3J0IHsgTW9iaWxlTW9kZUNvbmZpZyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tb2JpbGUtbW9kZSc7XG5pbXBvcnQgeyBQb3BvdmVyRmlsbE1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2hhcmVkJztcblxuaW1wb3J0IHsgY29udGVudERlbnNpdHlPYnNlcnZlclByb3ZpZGVycyB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9jb250ZW50LWRlbnNpdHknO1xuaW1wb3J0IHsgVG9rZW5pemVyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Rva2VuJztcbmltcG9ydCBlcXVhbCBmcm9tICdmYXN0LWRlZXAtZXF1YWwnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgT3B0aW9uSXRlbSwgU2VsZWN0YWJsZU9wdGlvbkl0ZW0gfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlTXVsdGlDb21ib2JveCB9IGZyb20gJy4vYmFzZS1tdWx0aS1jb21ib2JveC5jbGFzcyc7XG5pbXBvcnQgeyBNb2JpbGVNdWx0aUNvbWJvYm94Q29tcG9uZW50IH0gZnJvbSAnLi9tb2JpbGUvbW9iaWxlLW11bHRpLWNvbWJvYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNb2JpbGVNdWx0aUNvbWJvYm94TW9kdWxlIH0gZnJvbSAnLi9tb2JpbGUvbW9iaWxlLW11bHRpLWNvbWJvYm94Lm1vZHVsZSc7XG5pbXBvcnQgeyBNVUxUSV9DT01CT0JPWF9DT01QT05FTlQgfSBmcm9tICcuL211bHRpLWNvbWJvYm94LnRva2VuJztcblxuaW1wb3J0IHsgTXVsdGlDb21ib2JveERhdGFTb3VyY2VQYXJzZXIgfSBmcm9tICcuL2RhdGEtc291cmNlL211bHRpLWNvbWJvYm94LWRhdGEtc291cmNlLXBhcnNlcic7XG5cbmltcG9ydCB7IGdldFNlbGVjdEl0ZW1CeUlucHV0VmFsdWUsIGdldFRva2VuSW5kZXhCeUlkbE9yVmFsdWUgfSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgTXVsdGlDb21ib2JveFNlbGVjdGlvbkNoYW5nZUV2ZW50IH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0aW9uLWNoYW5nZS5ldmVudCc7XG5pbXBvcnQgeyBGRF9MQU5HVUFHRSwgRmRMYW5ndWFnZSwgVHJhbnNsYXRpb25SZXNvbHZlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvaTE4bic7XG5cbmV4cG9ydCBjb25zdCBGRF9NQVBfTElNSVQgPSBuZXcgSW5qZWN0aW9uVG9rZW48bnVtYmVyPignTWFwIGxpbWl04omlJywgeyBmYWN0b3J5OiAoKSA9PiAxMiB9KTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1tdWx0aS1jb21ib2JveCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL211bHRpLWNvbWJvYm94LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9tdWx0aS1jb21ib2JveC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgZGlyZWN0aXZlOiBDdmFEaXJlY3RpdmUsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgICAgICAgaW5wdXRzOiBbJ2lkOmlucHV0SWQnLCAncGxhY2Vob2xkZXInLCAnc3RhdGUnLCAnc3RhdGVNZXNzYWdlJywgJ2Rpc2FibGVkJywgJ3JlYWRvbmx5JywgJ25hbWUnXVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IERhdGFTb3VyY2VEaXJlY3RpdmUsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgICAgICAgaW5wdXRzOiBbJ2RhdGFTb3VyY2UnXSxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICAgICAgICAgICAgb3V0cHV0czogWydkYXRhQ2hhbmdlZCddXG4gICAgICAgIH1cbiAgICBdLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICBDdmFDb250cm9sLFxuICAgICAgICBjb250ZW50RGVuc2l0eU9ic2VydmVyUHJvdmlkZXJzKCksXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IEZEX0RBVEFfU09VUkNFX1RSQU5TRk9STUVSLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IE11bHRpQ29tYm9ib3hEYXRhU291cmNlUGFyc2VyXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE1VTFRJX0NPTUJPQk9YX0NPTVBPTkVOVCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBNdWx0aUNvbWJvYm94Q29tcG9uZW50XG4gICAgICAgIH0sXG4gICAgICAgIERlc3Ryb3llZFNlcnZpY2VcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpQ29tYm9ib3hDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBCYXNlTXVsdGlDb21ib2JveDxUPiBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBTaG93IHNlbGVjdCBhbGwgY2hlY2tib3hcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dTZWxlY3RBbGwgPSBmYWxzZTtcblxuICAgIC8qKiBQcm92aWRlcyBzZWxlY3RlZCBpdGVtcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBzZWxlY3RlZEl0ZW1zKHZhbHVlOiBUW10pIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IGNvZXJjZUFycmF5U2FmZSh2YWx1ZSk7XG4gICAgfVxuICAgIGdldCBzZWxlY3RlZEl0ZW1zKCk6IFRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NlbGVjdGVkSXRlbXM6IFRbXSA9IFtdO1xuXG4gICAgLyoqIFByb3ZpZGVzIG1heGltdW0gaGVpZ2h0IGZvciB0aGUgb3B0aW9uUGFuZWwuICovXG4gICAgQElucHV0KClcbiAgICBtYXhIZWlnaHQgPSAnMjUwcHgnO1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBBZGRPbiBCdXR0b24gc2hvdWxkIGJlIGZvY3VzYWJsZVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBidXR0b25Gb2N1c2FibGUgPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBhdXRvY29tcGxldGUgc2hvdWxkIGJlIGVuYWJsZWQ7IEVuYWJsZWQgYnkgZGVmYXVsdC4gKi9cbiAgICBASW5wdXQoKVxuICAgIGF1dG9Db21wbGV0ZSA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUT0RPOiBOYW1lIG9mIHRoZSBlbnRpdHkgZm9yIHdoaWNoIERhdGFQcm92aWRlciB3aWxsIGJlIGxvYWRlZC4gWW91IGNhbiBlaXRoZXIgcGFzcyBsaXN0IG9mXG4gICAgICogaXRlbXMgb3IgdXNlIHRoaXMgZW50aXR5Q2xhc3MgYW5kIGludGVybmFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8gZG8gbG9va3VwIHRvIHNvbWUgcmVnaXN0cnlcbiAgICAgKiBhbmQgcmV0cmlldmUgdGhlIGJlc3QgbWF0Y2hpbmcgRGF0YVByb3ZpZGVyIHRoYXQgaXMgc2V0IG9uIGFwcGxpY2F0aW9uIGxldmVsXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBlbnRpdHlDbGFzczogc3RyaW5nO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIG11bHRpLWNvbWJvYm94IHNob3VsZCBiZSBidWlsdCBvbiBtb2JpbGUgbW9kZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZSA9IGZhbHNlO1xuXG4gICAgLyoqIE11bHRpIENvbWJvYm94IE1vYmlsZSBDb25maWd1cmF0aW9uLCBpdCdzIGFwcGxpZWQgb25seSwgd2hlbiBtb2JpbGUgaXMgZW5hYmxlZC4gKi9cbiAgICBASW5wdXQoKVxuICAgIG1vYmlsZUNvbmZpZzogTW9iaWxlTW9kZUNvbmZpZztcblxuICAgIC8qKiBUZWxscyB0aGUgbXVsdGktY29tYm9ib3ggaWYgd2UgbmVlZCB0byBncm91cCBpdGVtcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIGdyb3VwID0gZmFsc2U7XG5cbiAgICAvKiogQSBmaWVsZCBuYW1lIHRvIHVzZSB0byBncm91cCBkYXRhIGJ5IChzdXBwb3J0IGRvdHRlZCBub3RhdGlvbikuICovXG4gICAgQElucHV0KClcbiAgICBncm91cEtleTogc3RyaW5nO1xuXG4gICAgLyoqIFRoZSBmaWVsZCB0byBzaG93IGRhdGEgaW4gc2Vjb25kYXJ5IGNvbHVtbi4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeUtleTogc3RyaW5nO1xuXG4gICAgLyoqIFNob3cgdGhlIHNlY29uZCBjb2x1bW4gKGFwcGxpY2FibGUgZm9yIHR3byBjb2x1bW5zIGxheW91dCkuICovXG4gICAgQElucHV0KClcbiAgICBzaG93U2Vjb25kYXJ5VGV4dCA9IGZhbHNlO1xuXG4gICAgLyoqIEhvcml6b250YWxseSBhbGlnbiB0ZXh0IGluc2lkZSB0aGUgc2Vjb25kIGNvbHVtbiAoYXBwbGljYWJsZSBmb3IgdHdvIGNvbHVtbnMgbGF5b3V0KS4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNlY29uZGFyeVRleHRBbGlnbm1lbnQ6ICdsZWZ0JyB8ICdyaWdodCcgPSAncmlnaHQnO1xuXG4gICAgLyoqIFR1cm5zIG9uL29mZiBBZGp1c3RhYmxlIFdpZHRoIGZlYXR1cmUuICovXG4gICAgQElucHV0KClcbiAgICBhdXRvUmVzaXplID0gdHJ1ZTtcblxuICAgIC8qKiBXaGV0aGVyIHRvIG9wZW4gdGhlIGRyb3Bkb3duIHdoZW4gdGhlIGFkZG9uIGJ1dHRvbiBpcyBjbGlja2VkLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgb3BlbkRyb3Bkb3duT25BZGRPbkNsaWNrZWQgPSB0cnVlO1xuXG4gICAgLyoqIFZhbHVlIG9mIHRoZSBtdWx0aSBjb21ib2JveCAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBUW10pIHtcbiAgICAgICAgdGhpcy5zZXRWYWx1ZSh2YWx1ZSwgdHJ1ZSk7XG4gICAgfVxuICAgIGdldCB2YWx1ZSgpOiBUW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fY3ZhLnZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByZXNldCBvcHRpb25zIGZvciB0aGUgU2VsZWN0IGJvZHkgd2lkdGgsIHdoYXRldmVyIGlzIGNob3NlbiwgdGhlIGJvZHkgaGFzIGEgNjAwcHggbGltaXQuXG4gICAgICogKiBgYXQtbGVhc3RgIHdpbGwgYXBwbHkgYSBtaW5pbXVtIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLiAtIERlZmF1bHRcbiAgICAgKiAqIGBlcXVhbGAgd2lsbCBhcHBseSBhIHdpZHRoIHRvIHRoZSBib2R5IGVxdWl2YWxlbnQgdG8gdGhlIHdpZHRoIG9mIHRoZSBjb250cm9sLlxuICAgICAqICogJ2ZpdC1jb250ZW50JyB3aWxsIGFwcGx5IHdpZHRoIG5lZWRlZCB0byBwcm9wZXJseSBkaXNwbGF5IGl0ZW1zIGluc2lkZSwgaW5kZXBlbmRlbnQgb2YgY29udHJvbC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbGxDb250cm9sTW9kZTogUG9wb3ZlckZpbGxNb2RlID0gJ2F0LWxlYXN0JztcblxuICAgIC8qKiBTZXRzIHRpdGxlIGF0dHJpYnV0ZSB0byBhZGRvbiBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBhZGRvbkljb25UaXRsZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIHRoZSBpMThuIG1vZHVsZSB0byBtb2RpZnkgdGhlIHRyYW5zbGF0aW9uIGZvciB0aGlzIHN0cmluZy5cbiAgICAgKiBTZXRzIGludmFsaWQgZW50cnkgbWVzc2FnZS5cbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaW52YWxpZEVudHJ5TWVzc2FnZTogTnVsbGFibGU8c3RyaW5nPjtcblxuICAgIC8qKiBUdXJucyBsaW1pdGxlc3MgbW9kZSwgT04gb3IgT0ZGICovXG4gICAgQElucHV0KClcbiAgICBsaW1pdGxlc3M6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBVc2VkIGluIGZpbHRlcnMgYW5kIGFueSBraW5kIG9mIGNvbXBhcmF0b3JzIHdoZW4gd2Ugd29yayB3aXRoIG9iamVjdHMgYW5kIHRoaXMgaWRlbnRpZnlcbiAgICAgKiB1bmlxdWUgZmllbGQgbmFtZSBiYXNlZCBvbiB3aGljaCB3ZSBhcmUgZ29pbmcgdG8gZG8gdGhlIGpvYlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbG9va3VwS2V5OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBXaGVuIHdlIGRlYWwgd2l0aCB1bmtub3duIG9iamVjdCB3ZSBjYW4gdXNlIGBkaXNwbGF5S2V5YCB0byByZXRyaWV2ZSB2YWx1ZSBmcm9tIHNwZWNpZmljXG4gICAgICogcHJvcGVydHkgb2YgdGhlIG9iamVjdCB0byBhY3QgYXMgZGlzcGxheSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIEBTZWUgQ29tYm9Cb3gsIFNlbGVjdCwgUmFkaW9Hcm91cCwgQ2hlY2tCb3ggR3JvdXBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlLZXk6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgdmFsdWVzLCBpdCBjYW4gYmUgb2YgdHlwZSBTZWxlY3RJdGVtLCBzdHJpbmcgb3IgYW55IG9iamVjdC5cbiAgICAgKiBHZW5lcmljIG9iamVjdCB0eXBlIGlzIGFtb25nIHRoZSBsaXN0IG9mIHR5cGVzLFxuICAgICAqIGJlY2F1c2Ugd2UgYWxsb3cgdG8gZ2V0IGxhYmVscyBhbmQgdmFsdWVzIHVzaW5nIGBkaXNwbGF5S2V5YCBhbmQgYGxvb2t1cEtleWAgaW5wdXRzIGFjY29yZGluZ2x5LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbGlzdDogQXJyYXk8U2VsZWN0SXRlbSB8IHN0cmluZyB8IG9iamVjdD47XG5cbiAgICAvKiogVGltZSBpbiBtcyBmb3IgaG93IGxvbmcgbWVzc2FnZSBvZiBpbnZhbGlkIGVudHJ5IHNob3VsZCBiZSBkaXNwbGF5ZWQuICovXG4gICAgQElucHV0KClcbiAgICBpbnZhbGlkRW50cnlEaXNwbGF5VGltZSA9IDMwMDA7XG5cbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIGl0ZW0gaXMgc2VsZWN0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdWx0aUNvbWJvYm94U2VsZWN0aW9uQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiBFbWl0cyBldmVudCB3aGVuIHRoZSBtZW51IGlzIG9wZW5lZC9jbG9zZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgaXNPcGVuQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgICAvKiogRW1pdHMgZXZlbnQgd2hlbiB0aGUgYWRkb24gYnV0dG9uIGlzIGNsaWNrZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgYWRkT25CdXR0b25DbGlja2VkOiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIHN0YXJ0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZGF0YVJlcXVlc3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBFdmVudCBlbWl0dGVkIHdoZW4gZGF0YSBsb2FkaW5nIGlzIGZpbmlzaGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGRhdGFSZWNlaXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZChGRF9MSVNUX0NPTVBPTkVOVClcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxpc3RDb21wb25lbnQ6IExpc3RDb21wb25lbnRJbnRlcmZhY2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0RWxlbWVudCcsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHJlYWRvbmx5IHNlYXJjaElucHV0RWxlbWVudDogTnVsbGFibGU8RWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50Pj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGVtcGxhdGVEaXJlY3RpdmUpXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21UZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxUZW1wbGF0ZURpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ21vYmlsZUNvbnRyb2xUZW1wbGF0ZScpXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2JpbGVDb250cm9sVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xpc3RUZW1wbGF0ZScpXG4gICAgcHJpdmF0ZSByZWFkb25seSBsaXN0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoVG9rZW5pemVyQ29tcG9uZW50KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuaXplcjogVG9rZW5pemVyQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEdyb3VwJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSByZWFkb25seSBfaW5wdXRHcm91cDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIE9wdGlvbiBpdGVtIFRlbXBsYXRlLlxuICAgICAqL1xuICAgIG9wdGlvbkl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDdXN0b20gR3JvdXAgSGVhZGVyIGl0ZW0gVGVtcGxhdGUuXG4gICAgICovXG4gICAgZ3JvdXBJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQ3VzdG9tIFNlY29uZGFyeSBpdGVtIFRlbXBsYXRlLlxuICAgICAqL1xuICAgIHNlY29uZGFyeUl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBDdXN0b20gU2VsZWN0ZWQgb3B0aW9uIGl0ZW0gVGVtcGxhdGUuXG4gICAgICovXG4gICAgc2VsZWN0ZWRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHkgPSB0aGlzLl9tdWx0aUNvbWJvYm94Q29uZmlnPy5jb250ZW50RGVuc2l0eSA/PyAnY296eSc7XG5cbiAgICAvKiogU2V0IHRoZSBpbnB1dCB0ZXh0IG9mIHRoZSBpbnB1dC4gKi9cbiAgICBzZXQgaW5wdXRUZXh0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5faW5wdXRUZXh0VmFsdWUgPSB2YWx1ZTtcblxuICAgICAgICB0aGlzLl9jdmEub25Ub3VjaGVkKCk7XG4gICAgfVxuXG4gICAgLyoqIEdldCB0aGUgaW5wdXQgdGV4dCBvZiB0aGUgaW5wdXQuICovXG4gICAgZ2V0IGlucHV0VGV4dCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5wdXRUZXh0VmFsdWUgfHwgJyc7XG4gICAgfVxuXG4gICAgLyoqIElzIGVtcHR5IHNlYXJjaCBmaWVsZC4gKi9cbiAgICBnZXQgaXNFbXB0eVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBpc0dyb3VwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISEodGhpcy5ncm91cCAmJiB0aGlzLmdyb3VwS2V5KTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgTXVsdGkgSW5wdXQgaXMgb3BlbmVkLiAqL1xuICAgIGlzT3BlbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1heCB3aWR0aCBvZiBsaXN0IGNvbnRhaW5lclxuICAgICAqL1xuICAgIG1heFdpZHRoOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWluIHdpZHRoIG9mIGxpc3QgY29udGFpbmVyXG4gICAgICovXG4gICAgbWluV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBOZWVkIGZvciBvcGVuaW5nIG1vYmlsZSB2ZXJzaW9uXG4gICAgICovXG4gICAgb3BlbkNoYW5nZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3RyYW5zbGF0aW9uUmVzb2x2ZXIgPSBuZXcgVHJhbnNsYXRpb25SZXNvbHZlcigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9sYW5nU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbiAgICAgICAgQEluamVjdChGRF9MQU5HVUFHRSkgX2xhbmckOiBPYnNlcnZhYmxlPEZkTGFuZ3VhZ2U+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5fbGFuZ1N1YnNjcmlwdGlvbiA9IF9sYW5nJC5zdWJzY3JpYmUoKGxhbmc6IEZkTGFuZ3VhZ2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZEVudHJ5TWVzc2FnZSA9IHRoaXMuX3RyYW5zbGF0aW9uUmVzb2x2ZXIucmVzb2x2ZShcbiAgICAgICAgICAgICAgICBsYW5nLFxuICAgICAgICAgICAgICAgICdwbGF0Zm9ybU11bHRpQ29tYm9ib3guaW52YWxpZEVudHJ5RXJyb3InXG4gICAgICAgICAgICApO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvbnRlbnREZW5zaXR5T2JzZXJ2ZXIuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdmFDb250cm9sLmxpc3RlblRvQ2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9vcGVuRGF0YVN0cmVhbSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2xhbmdTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXRVcE1vYmlsZU1vZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2Fzc2lnbkN1c3RvbVRlbXBsYXRlcygpO1xuXG4gICAgICAgIHRoaXMuX2luaXRXaW5kb3dSZXNpemUoKTtcblxuICAgICAgICB0aGlzLl90b2tlbml6ZXIuX3Nob3dPdmVyZmxvd1BvcG92ZXIgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90b2dnbGVTZWxlY3Rpb24oaXRlbTogU2VsZWN0YWJsZU9wdGlvbkl0ZW0sIGZyb21Ub2tlbkNsb3NlQ2xpY2sgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpZHggPSBnZXRUb2tlbkluZGV4QnlJZGxPclZhbHVlKGl0ZW0sIHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMpO1xuICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5wdXNoKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZDtcblxuICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UoZnJvbVRva2VuQ2xvc2VDbGljayk7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZFN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNUb1NlYXJjaEZpZWxkKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25PcHRpb25DaGVja2JveENsaWNrZWQoZXZlbnQ6IE1vdXNlRXZlbnQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuX29uTGlzdEVsZW1lbnRDbGlja2VkKGV2ZW50LCBpbmRleCk7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG4gICAgICAgIHRoaXMuX3NlYXJjaFRlcm1DaGFuZ2VkKCcnKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9vbkNvbXBsZXRlVGVybShldmVudDogQXV0b0NvbXBsZXRlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmZvcmNlQ2xvc2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3RvZ2dsZVNlbGVjdGlvbkJ5SW5wdXRUZXh0KGV2ZW50LnRlcm0pO1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF90b2dnbGVTZWxlY3Rpb25CeUlucHV0VGV4dCh0ZXh0ID0gdGhpcy5pbnB1dFRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGdldFNlbGVjdEl0ZW1CeUlucHV0VmFsdWU8VD4odGhpcy5fZnVsbEZsYXRTdWdnZXN0aW9ucywgdGV4dCk7XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICB0aGlzLl90b2dnbGVTZWxlY3Rpb24oaXRlbSk7XG4gICAgICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IHNlbGVjdHMgYWxsIHBvc3NpYmxlIG9wdGlvbnMuXG4gICAgICogKnNlbGVjdCogYXR0cmlidXRlIOKAkyBpZiAqdHJ1ZSogc2VsZWN0IGFsbCwgaWYgKmZhbHNlKiB1bnNlbGVjdCBhbGxcbiAgICAgKiAqL1xuICAgIF9oYW5kbGVTZWxlY3RBbGxJdGVtcyA9IChzZWxlY3Q6IGJvb2xlYW4pOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5fZmxhdFN1Z2dlc3Rpb25zLmZvckVhY2goKGl0ZW0pID0+IChpdGVtLnNlbGVjdGVkID0gc2VsZWN0KSk7XG4gICAgICAgIHRoaXMuX29uRXZlcnlJdGVtKHRoaXMuX3N1Z2dlc3Rpb25zLCAoaXRlbSkgPT4gKGl0ZW0uc2VsZWN0ZWQgPSBzZWxlY3QpKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucyA9IHNlbGVjdCA/IFsuLi50aGlzLl9mbGF0U3VnZ2VzdGlvbnNdIDogW107XG4gICAgICAgIHRoaXMuX3JhbmdlU2VsZWN0b3IucmVzZXQoKTtcblxuICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UoKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEl0ZXJhdGUgb3ZlciBldmVyeSBpdGVtIGFuZCBwZXJmb3JtIGNhbGxiYWNrXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb25FdmVyeUl0ZW0oaXRlbXM6IFNlbGVjdGFibGVPcHRpb25JdGVtW10sIGNhbGxiYWNrOiAoaXRlbTogU2VsZWN0YWJsZU9wdGlvbkl0ZW0pID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2soaXRlbSk7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vbkV2ZXJ5SXRlbShpdGVtLmNoaWxkcmVuLCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9uYXZpZ2F0ZUJ5VG9rZW5zKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgW0RPV05fQVJST1csIFVQX0FSUk9XXSkgJiYgdGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMubGlzdENvbXBvbmVudC5pdGVtcz8uZmlyc3QuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3JlbW92ZVRva2VuKHRva2VuOiBTZWxlY3RhYmxlT3B0aW9uSXRlbSwgZXZlbnQ/OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcHRpb25JdGVtID0gdGhpcy5fc3VnZ2VzdGlvbnMuZmluZCgocykgPT4gcy52YWx1ZSA9PT0gdG9rZW4udmFsdWUpO1xuICAgICAgICBpZiAob3B0aW9uSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlU2VsZWN0aW9uKG9wdGlvbkl0ZW0sIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fcmFuZ2VTZWxlY3Rvci5yZXNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfbW9yZUNsaWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zID0gdGhpcy5pc0dyb3VwXG4gICAgICAgICAgICA/IHRoaXMuX2NvbnZlcnRPYmplY3RzVG9Hcm91cE9wdGlvbkl0ZW1zKHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMubWFwKCh7IHZhbHVlIH0pID0+IHZhbHVlKSlcbiAgICAgICAgICAgIDogdGhpcy5fc3VnZ2VzdGlvbnMuZmlsdGVyKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMuc29tZSgoaXRlbSkgPT4gZXF1YWwoaXRlbS52YWx1ZSwgdmFsdWUudmFsdWUpKVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3Nob3dMaXN0KHRydWUpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkU2hvd24kLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uQmx1cihldmVudDogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgICAgICBjb25zdCBpc0xpc3QgPSAhIXRhcmdldC5jbG9zZXN0KCcuZmQtbXVsdGktY29tYm9ib3hfX2xpc3QtY29udGFpbmVyJyk7XG4gICAgICAgICAgICBpZiAoaXNMaXN0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zPy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1swXS5sYWJlbCA9PT0gdGhpcy5pbnB1dFRleHQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5fc3VnZ2VzdGlvbnNbMF0uc2VsZWN0ZWRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3RvZ2dsZVNlbGVjdGlvbih0aGlzLl9zdWdnZXN0aW9uc1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9zaG93TGlzdChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0byBzZXQgaW5wdXQgdGV4dCBhcyBpdGVtIGxhYmVsLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3NldElucHV0VGV4dEZyb21PcHRpb25JdGVtKGl0ZW06IE9wdGlvbkl0ZW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSBpdGVtLmxhYmVsO1xuXG4gICAgICAgIGlmICh0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2hvd0xpc3QoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uSXRlbUtleURvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRVNDQVBFKSkge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNUb1NlYXJjaEZpZWxkKCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleSkgJiYgZXZlbnQuc2hpZnRLZXkgJiYgS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEEpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5faGFuZGxlU2VsZWN0QWxsSXRlbXMoZmFsc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKChldmVudC5jdHJsS2V5IHx8IGV2ZW50Lm1ldGFLZXkpICYmIEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBBKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVNlbGVjdEFsbEl0ZW1zKHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBFTlRFUikpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2JpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLnJlc2V0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFNQQUNFKSkge1xuICAgICAgICAgICAgdGhpcy5fcmFuZ2VTZWxlY3Rvci5yZXNldCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25PcHRpb25DbGlja2VkKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uTGlzdEVsZW1lbnRDbGlja2VkKGV2ZW50LCBpbmRleCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogSGFuZGxlIGRpYWxvZyBkaXNtaXNzaW5nLCBjbG9zZXMgcG9wb3ZlciBhbmQgc2V0cyBiYWNrdXAgZGF0YS5cbiAgICAgKi9cbiAgICBfZGlhbG9nRGlzbWlzcyhiYWNrdXA6IFNlbGVjdGFibGVPcHRpb25JdGVtW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucyA9IFsuLi5iYWNrdXBdO1xuICAgICAgICB0aGlzLmlucHV0VGV4dCA9ICcnO1xuICAgICAgICB0aGlzLl9zaG93TGlzdChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTaG93biQubmV4dChmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEhhbmRsZSBkaWFsb2cgYXBwcm92YWwsIGNsb3NlcyBwb3BvdmVyIGFuZCBwcm9wYWdhdGVzIGRhdGEgY2hhbmdlcy5cbiAgICAgKi9cbiAgICBfZGlhbG9nQXBwcm92ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSAnJztcbiAgICAgICAgdGhpcy5fc2hvd0xpc3QoZmFsc2UpO1xuICAgICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2UodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfcG9wb3Zlck9wZW5DaGFuZ2VIYW5kbGUoaXNPcGVuOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gaXNPcGVuO1xuICAgICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgLyoqIE9wZW5zIHRoZSBzZWxlY3QgcG9wb3ZlciBib2R5LiAqL1xuICAgIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh0aGlzLmlzT3Blbik7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBDbG9zZXMgdGhlIHNlbGVjdCBwb3BvdmVyIGJvZHkuICovXG4gICAgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzVG9TZWFyY2hGaWVsZCgpO1xuICAgICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTaG93biQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuaW5wdXRUZXh0ID0gJyc7XG5cbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc09wZW5DaGFuZ2UuZW1pdCh0aGlzLmlzT3Blbik7XG4gICAgICAgIHRoaXMuX2NkLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3Nob3dMaXN0KGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc09wZW4gIT09IGlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBpc09wZW47XG4gICAgICAgICAgICB0aGlzLl9jdmEub25Ub3VjaGVkKCk7XG4gICAgICAgICAgICB0aGlzLm9wZW5DaGFuZ2UubmV4dChpc09wZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fc2VhcmNoVGVybUNoYW5nZWQoJycpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VhcmNoVGVybUNoYW5nZWQodGV4dDogc3RyaW5nID0gdGhpcy5pbnB1dFRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICBtYXAuc2V0KCdxdWVyeScsIHRleHQpO1xuXG4gICAgICAgIGlmICghdGhpcy5saW1pdGxlc3MpIHtcbiAgICAgICAgICAgIG1hcC5zZXQoJ2xpbWl0JywgdGhpcy5fbWFwTGltaXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlRGlyZWN0aXZlLmRhdGFTb3VyY2VQcm92aWRlcj8ubWF0Y2gobWFwKTtcblxuICAgICAgICBpZiAodGV4dCkge1xuICAgICAgICAgICAgdGhpcy5vcGVuKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgQ2xpY2sgb24gQnV0dG9uXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9vblByaW1hcnlCdXR0b25DbGljayhpc09wZW46IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKCFpc09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaFRlcm1DaGFuZ2VkKCcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wZW5Ecm9wZG93bk9uQWRkT25DbGlja2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93TGlzdCghaXNPcGVuKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgICAgdGhpcy5fc2hvd0xpc3QoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0RWxlbWVudD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIEtleWRvd24gb24gSW5wdXRcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX29uSW5wdXRLZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fY3ZhLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIERPV05fQVJST1cpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2hvd0xpc3QodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzT3BlbiAmJiB0aGlzLmxpc3RDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpc3RDb21wb25lbnQuc2V0SXRlbUFjdGl2ZSgwKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hvb3NlT3RoZXJJdGVtKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKEtleVV0aWwuaXNLZXlDb2RlKGV2ZW50LCBVUF9BUlJPVykpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgIHRoaXMuX2Nob29zZU90aGVySXRlbSgtMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIEVOVEVSKSkge1xuICAgICAgICAgICAgdGhpcy5fdG9nZ2xlU2VsZWN0aW9uQnlJbnB1dFRleHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChLZXlVdGlsLmlzS2V5Q29kZShldmVudCwgRVNDQVBFKSkge1xuICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgIHRoaXMuX3Nob3dMaXN0KGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIGlmICghS2V5VXRpbC5pc0tleUNvZGUoZXZlbnQsIFsuLi50aGlzLl9ub25PcGVuaW5nS2V5cywgQ09OVFJPTF0pKSB7XG4gICAgICAgICAgICB0aGlzLl9zaG93TGlzdCh0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IGFjY2VwdGVkS2V5cyA9XG4gICAgICAgICAgICAgICAgIUtleVV0aWwuaXNLZXlUeXBlKGV2ZW50LCAnYWxwaGFiZXRpY2FsJykgJiZcbiAgICAgICAgICAgICAgICAhS2V5VXRpbC5pc0tleVR5cGUoZXZlbnQsICdudW1lcmljJykgJiZcbiAgICAgICAgICAgICAgICAhS2V5VXRpbC5pc0tleVR5cGUoZXZlbnQsICdpbWUnKTtcbiAgICAgICAgICAgIGlmIChhY2NlcHRlZEtleXMpIHtcbiAgICAgICAgICAgICAgICAvLyBTZXRUaW1lb3V0IGlzIG5lZWRlZCBmb3IgaW5wdXQgdG8gcmVjZWl2ZSBuZXcgdmFsdWUuXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRW1wdHlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saXN0Q29tcG9uZW50Py5zZXRJdGVtQWN0aXZlKDApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogTWV0aG9kIHBhc3NlZCB0byBsaXN0IGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBfaGFuZGxlTGlzdEZvY3VzRXNjYXBlKGRpcmVjdGlvbjogRm9jdXNFc2NhcGVEaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ3VwJykge1xuICAgICAgICAgICAgdGhpcy5fZm9jdXNUb1NlYXJjaEZpZWxkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2FkZE9uQ2xpY2tlZCgkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRkT25CdXR0b25DbGlja2VkLmVtaXQoJGV2ZW50KTtcbiAgICAgICAgaWYgKCF0aGlzLm1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fb25QcmltYXJ5QnV0dG9uQ2xpY2sodGhpcy5pc09wZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIGFwcGx5aW5nIHJhbmdlIHNlbGVjdGlvbi4gTm90ZSwgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBhZnRlciBjb21ib2JveCBpdGVtJ3MgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZFxuICAgICAqL1xuICAgIHByaXZhdGUgX29uTGlzdEVsZW1lbnRDbGlja2VkKGV2ZW50OiBNb3VzZUV2ZW50LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIC8vIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgYXQgdGhpcyBwb2ludCwgc28gaXQgY2FuIGJlIHNhZmVseSB1c2VkXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvblN0YXRlID0gdGhpcy5fc3VnZ2VzdGlvbnNbaW5kZXhdLnNlbGVjdGVkO1xuICAgICAgICB0aGlzLl9yYW5nZVNlbGVjdG9yLm9uUmFuZ2VFbGVtZW50VG9nZ2xlZChpbmRleCwgZXZlbnQpO1xuICAgICAgICBjb25zdCB0b1JlbW92ZVNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgdGhpcy5fcmFuZ2VTZWxlY3Rvci5hcHBseVZhbHVlVG9FYWNoSW5SYW5nZSgoaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50ID0gdGhpcy5fc3VnZ2VzdGlvbnNbaWR4XTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50LnNlbGVjdGVkICE9PSBzZWxlY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92aW5nIGZyb20gXCJfc2VsZWN0ZWRTdWdnZXN0aW9uc1wiIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgdG9SZW1vdmVTZXQuYWRkKGN1cnJlbnQudmFsdWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFkZGluZyBjdXJyZW50IGl0ZW0gdG8gXCJfc2VsZWN0ZWRTdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMucHVzaChjdXJyZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudC5zZWxlY3RlZCA9IHNlbGVjdGlvblN0YXRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucyA9IHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnMuZmlsdGVyKChzKSA9PiAhdG9SZW1vdmVTZXQuaGFzKHMudmFsdWUpKTtcbiAgICAgICAgdGhpcy5fcHJvcGFnYXRlQ2hhbmdlKCk7XG5cbiAgICAgICAgdGhpcy5fdG9rZW5pemVyLm9uUmVzaXplKCk7XG5cbiAgICAgICAgdGhpcy5fdG9rZW5pemVyLnRva2VuaXplcklubmVyRWwubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0ID1cbiAgICAgICAgICAgIHRoaXMuX3Rva2VuaXplci50b2tlbml6ZXJJbm5lckVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9wcm9wYWdhdGVDaGFuZ2UoZW1pdEluTW9iaWxlPzogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMubW9iaWxlIHx8IGVtaXRJbk1vYmlsZSkge1xuICAgICAgICAgICAgdGhpcy5fbWFwQW5kVXBkYXRlTW9kZWwoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0VXBNb2JpbGVNb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE1VTFRJX0NPTUJPQk9YX0NPTVBPTkVOVCwgdXNlVmFsdWU6IHRoaXMgfV0sXG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUR5bmFtaWNNb2R1bGUoXG4gICAgICAgICAgICB7IGxpc3RUZW1wbGF0ZTogdGhpcy5saXN0VGVtcGxhdGUsIGNvbnRyb2xUZW1wbGF0ZTogdGhpcy5tb2JpbGVDb250cm9sVGVtcGxhdGUgfSxcbiAgICAgICAgICAgIE1vYmlsZU11bHRpQ29tYm9ib3hNb2R1bGUsXG4gICAgICAgICAgICBNb2JpbGVNdWx0aUNvbWJvYm94Q29tcG9uZW50LFxuICAgICAgICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIGluamVjdG9yXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIE1ldGhvZCB0aGF0IHBpY2tzIG90aGVyIHZhbHVlIG1vdmVkIGZyb20gY3VycmVudCBvbmUgYnkgb2Zmc2V0LCBjYWxsZWQgb25seSB3aGVuIE11bHRpIENvbWJvYm94IGlzIGNsb3NlZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jaG9vc2VPdGhlckl0ZW0ob2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkU3VnZ2VzdGlvbnM/Lmxlbmd0aCA9PT0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFRleHQgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFjdGl2ZVZhbHVlID0gZ2V0U2VsZWN0SXRlbUJ5SW5wdXRWYWx1ZTxUPih0aGlzLl9mdWxsRmxhdFN1Z2dlc3Rpb25zLCB0aGlzLmlucHV0VGV4dCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zLmZpbmRJbmRleCgodmFsdWUpID0+IHZhbHVlID09PSBhY3RpdmVWYWx1ZSk7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gIXRoaXMuaW5wdXRUZXh0ICYmIG9mZnNldCA9PT0gLTEgPyB0aGlzLl9mbGF0U3VnZ2VzdGlvbnMubGVuZ3RoIC0gMSA6IGluZGV4ICsgb2Zmc2V0O1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5fZmxhdFN1Z2dlc3Rpb25zW3Bvc2l0aW9uXTtcblxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0SW5wdXRUZXh0RnJvbU9wdGlvbkl0ZW0oaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5fc2VsZWN0ZWRTdWdnZXN0aW9ucy5maW5kSW5kZXgoKHZhbHVlKSA9PiB2YWx1ZS5sYWJlbCA9PT0gaXRlbT8ubGFiZWwpO1xuICAgICAgICBpZiAoc2VsZWN0ZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuX2Nob29zZU90aGVySXRlbShvZmZzZXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pbml0V2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9nZXRPcHRpb25zTGlzdFdpZHRoKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmF1dG9SZXNpemUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc2l6ZU9ic2VydmFibGUodGhpcy5faW5wdXRHcm91cC5uYXRpdmVFbGVtZW50KVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9nZXRPcHRpb25zTGlzdFdpZHRoKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0T3B0aW9uc0xpc3RXaWR0aCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYm9keSA9IGRvY3VtZW50LmJvZHk7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLl9pbnB1dEdyb3VwLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHNjcm9sbEJhcldpZHRoID0gYm9keS5vZmZzZXRXaWR0aCAtIGJvZHkuY2xpZW50V2lkdGg7XG4gICAgICAgIHRoaXMubWF4V2lkdGggPSB0aGlzLmF1dG9SZXNpemUgPyB3aW5kb3cuaW5uZXJXaWR0aCAtIHNjcm9sbEJhcldpZHRoIC0gcmVjdC5sZWZ0IDogdGhpcy5taW5XaWR0aDtcbiAgICAgICAgdGhpcy5taW5XaWR0aCA9IHJlY3Qud2lkdGggLSAyO1xuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEFzc2lnbiBjdXN0b20gdGVtcGxhdGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfYXNzaWduQ3VzdG9tVGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlcy5mb3JFYWNoKCh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgICAgc3dpdGNoICh0ZW1wbGF0ZS5nZXROYW1lKCkpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdvcHRpb25JdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbkl0ZW1UZW1wbGF0ZSA9IHRlbXBsYXRlLnRlbXBsYXRlUmVmO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdncm91cEl0ZW1UZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2Vjb25kYXJ5SXRlbVRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWNvbmRhcnlJdGVtVGVtcGxhdGUgPSB0ZW1wbGF0ZS50ZW1wbGF0ZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnc2VsZWN0ZWRJdGVtVGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbVRlbXBsYXRlID0gdGVtcGxhdGUudGVtcGxhdGVSZWY7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmQtbXVsdGktY29tYm9ib3hcIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRyb2xUZW1wbGF0ZVwiICpuZ0lmPVwibW9iaWxlXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8ZmQtcG9wb3ZlclxuICAgICAgICAqbmdJZj1cIiFtb2JpbGVcIlxuICAgICAgICBhZGRpdGlvbmFsQm9keUNsYXNzPVwiZmQtcG9wb3Zlci1jdXN0b20tbGlzdCBmZC1tdWx0aS1jb21ib2JveF9fbGlzdC1jb250YWluZXJcIlxuICAgICAgICAoaXNPcGVuQ2hhbmdlKT1cIl9wb3BvdmVyT3BlbkNoYW5nZUhhbmRsZSgkZXZlbnQpXCJcbiAgICAgICAgW2lzT3Blbl09XCJpc09wZW5cIlxuICAgICAgICBbdHJpZ2dlcnNdPVwiW11cIlxuICAgICAgICBbZGlzYWJsZWRdPVwidGhpcy5fY3ZhLmRpc2FibGVkXCJcbiAgICAgICAgW2ZpbGxDb250cm9sTW9kZV09XCJmaWxsQ29udHJvbE1vZGVcIlxuICAgID5cbiAgICAgICAgPGZkLXBvcG92ZXItY29udHJvbD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbnRyb2xUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICA8ZmQtcG9wb3Zlci1ib2R5IFtzdHlsZS53aWR0aC4lXT1cIiFhdXRvUmVzaXplICYmIDEwMFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3RUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2ZkLXBvcG92ZXItYm9keT5cbiAgICA8L2ZkLXBvcG92ZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjb250cm9sVGVtcGxhdGU+XG4gICAgPGZkLWZvcm0taW5wdXQtbWVzc2FnZS1ncm91cD5cbiAgICAgICAgPGZkLWlucHV0LWdyb3VwXG4gICAgICAgICAgICAjaW5wdXRHcm91cFxuICAgICAgICAgICAgW2lkXT1cInRoaXMuX2N2YS5pZCArICctaW5wdXQtZ3JvdXAtY29udGFpbmVyJ1wiXG4gICAgICAgICAgICBbc3RhdGVdPVwidGhpcy5fY3ZhLnN0YXRlXCJcbiAgICAgICAgICAgIFtidXR0b25Gb2N1c2FibGVdPVwiYnV0dG9uRm9jdXNhYmxlXCJcbiAgICAgICAgICAgIFtidXR0b25dPVwiIXRoaXMuX2N2YS5yZWFkb25seVwiXG4gICAgICAgICAgICBbZ2x5cGhdPVwiIXRoaXMuX2N2YS5yZWFkb25seSA/ICduYXZpZ2F0aW9uLWRvd24tYXJyb3cnIDogJyAnXCJcbiAgICAgICAgICAgIFtpc0NvbnRyb2xdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidGhpcy5fY3ZhLmRpc2FibGVkIHx8IHRoaXMuX2N2YS5yZWFkb25seVwiXG4gICAgICAgICAgICBbaXNFeHBhbmRlZF09XCIhbW9iaWxlICYmIGlzT3BlbiAmJiBfc3VnZ2VzdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInRoaXMuX2N2YS5kaXNhYmxlZCB8fCB0aGlzLl9jdmEucmVhZG9ubHlcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1yZWFkb25seV09XCJ0aGlzLl9jdmEucmVhZG9ubHlcIlxuICAgICAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cInRoaXMuX2N2YS5hcmlhTGFiZWwgfHwgKCdwbGF0Zm9ybU11bHRpQ29tYm9ib3guaW5wdXRHbHlwaEFyaWFMYWJlbCcgfCBmZFRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgW2ljb25UaXRsZV09XCJhZGRvbkljb25UaXRsZSB8fCAoJ3BsYXRmb3JtTXVsdGlDb21ib2JveC5pbnB1dEdseXBoQXJpYUxhYmVsJyB8IGZkVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAoYWRkT25CdXR0b25DbGlja2VkKT1cIl9hZGRPbkNsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY2xpY2spPVwibW9iaWxlICYmICFpc09wZW4gJiYgX29uUHJpbWFyeUJ1dHRvbkNsaWNrKGZhbHNlKVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJfbmF2aWdhdGVCeVRva2VucygkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGZkLXRva2VuaXplclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiX3NlbGVjdGVkU3VnZ2VzdGlvbnNcIlxuICAgICAgICAgICAgICAgIFt0b2tlbml6ZXJGb2N1c2FibGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtjb21wYWN0Q29sbGFwc2VdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgI3Rva2VuaXplclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtbXVsdGktY29tYm9ib3gtdG9rZW5pemVyLWN1c3RvbVwiXG4gICAgICAgICAgICAgICAgKG1vcmVDbGlja2VkRXZlbnQpPVwiX21vcmVDbGlja2VkKClcIlxuICAgICAgICAgICAgICAgIGZkTXVsdGlBbm5vdW5jZXJcbiAgICAgICAgICAgICAgICBbbXVsdGlBbm5vdW5jZXJPcHRpb25zXT1cIl9zdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZkLXRva2VuXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJ0aGlzLl9jdmEuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAob25DbG9zZUNsaWNrKT1cIl9yZW1vdmVUb2tlbih0b2tlbiwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0b2tlbiBvZiBfc2VsZWN0ZWRTdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyB0b2tlbi5sYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvZmQtdG9rZW4+XG5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgI3NlYXJjaElucHV0RWxlbWVudFxuICAgICAgICAgICAgICAgICAgICBmZGtBdXRvQ29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgKG9uQ29tcGxldGUpPVwiX29uQ29tcGxldGVUZXJtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJfc3VnZ2VzdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbaW5wdXRUZXh0XT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cImNvbWJvYm94XCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgW2FyaWFMYWJlbF09XCInY29yZU11bHRpQ29tYm9Cb3gubXVsdGlDb21ib0JveEFyaWFMYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJ0aGlzLl9jdmEuYXJpYUxhYmVsbGVkQnlcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWF1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGUgJiYgIW1vYmlsZSA/ICdsaXN0JyA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLW93bnNdPVwiYXV0b0NvbXBsZXRlICYmICFtb2JpbGUgPyB0aGlzLl9jdmEuaWQgKyAnLXJlc3VsdCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1oYXNwb3B1cF09XCJhdXRvQ29tcGxldGUgJiYgIW1vYmlsZVwiXG4gICAgICAgICAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgICAgICAgICBmZC1pbnB1dC1ncm91cC1pbnB1dFxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwidGhpcy5fY3ZhLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwidGhpcy5fY3ZhLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfb25JbnB1dEtleWRvd25IYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidGhpcy5fY3ZhLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfc2VhcmNoVGVybUNoYW5nZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0aGlzLl9jdmEucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwidGhpcy5fY3ZhLm9uVG91Y2hlZCgpOyB0b2tlbml6ZXIuX3Nob3dBbGxUb2tlbnMoKVwiXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cIiFtb2JpbGUgJiYgX29uQmx1cigkZXZlbnQpOyB0b2tlbml6ZXIuX2hpZGVUb2tlbnMoKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNPcGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRoaXMuX2N2YS5yZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwidGhpcy5fY3ZhLnJlYWRvbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJ0aGlzLl9jdmEucmVxdWlyZWRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5Rm5cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLXRva2VuaXplcl9faW5wdXRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2ZkLXRva2VuaXplcj5cbiAgICAgICAgPC9mZC1pbnB1dC1ncm91cD5cblxuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlXG4gICAgICAgICAgICAqbmdJZj1cIm1vYmlsZSAmJiBpc09wZW4gPyBmYWxzZSA6ICEhdGhpcy5fY3ZhLnN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBbdHlwZV09XCJ0aGlzLl9jdmEuc3RhdGVcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJ0aGlzLl9jdmEuc3RhdGVNZXNzYWdlXCJcbiAgICAgICAgPjwvZmQtZm9ybS1tZXNzYWdlPlxuICAgIDwvZmQtZm9ybS1pbnB1dC1tZXNzYWdlLWdyb3VwPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2JpbGVDb250cm9sVGVtcGxhdGU+XG4gICAgPGZkLWlucHV0LWdyb3VwXG4gICAgICAgIFtpZF09XCJ0aGlzLl9jdmEuaWQgKyAnLWlucHV0LWdyb3VwLWNvbnRhaW5lcidcIlxuICAgICAgICBjbGFzcz1cImZkLW11bHRpLWNvbWJvYm94LWlucHV0LWdyb3VwLWN1c3RvbVwiXG4gICAgICAgIFtzdGF0ZV09XCJ0aGlzLl9jdmEuc3RhdGVcIlxuICAgICAgICBbYnV0dG9uRm9jdXNhYmxlXT1cImZhbHNlXCJcbiAgICAgICAgW2lzQ29udHJvbF09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cInRoaXMuX2N2YS5kaXNhYmxlZCB8fCB0aGlzLl9jdmEucmVhZG9ubHlcIlxuICAgICAgICBbaXNFeHBhbmRlZF09XCIhbW9iaWxlICYmIGlzT3BlbiAmJiBfc3VnZ2VzdGlvbnMubGVuZ3RoID4gMFwiXG4gICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwidGhpcy5fY3ZhLmRpc2FibGVkIHx8IHRoaXMuX2N2YS5yZWFkb25seVwiXG4gICAgICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwidGhpcy5fY3ZhLnJlYWRvbmx5XCJcbiAgICAgICAgW2dseXBoQXJpYUxhYmVsXT1cInRoaXMuX2N2YS5hcmlhTGFiZWxcIlxuICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBmZGtBdXRvQ29tcGxldGVcbiAgICAgICAgICAgIChvbkNvbXBsZXRlKT1cIl9vbkNvbXBsZXRlVGVybSgkZXZlbnQpXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cIl9zdWdnZXN0aW9uc1wiXG4gICAgICAgICAgICBbaW5wdXRUZXh0XT1cImlucHV0VGV4dFwiXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICByb2xlPVwiY29tYm9ib3hcIlxuICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIFthcmlhTGFiZWxdPVwiJ2NvcmVNdWx0aUNvbWJvQm94Lm11bHRpQ29tYm9Cb3hBcmlhTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cInRoaXMuX2N2YS5hcmlhTGFiZWxsZWRCeVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWF1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGUgJiYgIW1vYmlsZSA/ICdsaXN0JyA6IG51bGxcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1vd25zXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlID8gdGhpcy5fY3ZhLmlkICsgJy1yZXN1bHQnIDogbnVsbFwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWhhc3BvcHVwXT1cImF1dG9Db21wbGV0ZSAmJiAhbW9iaWxlXCJcbiAgICAgICAgICAgIGZkLWZvcm0tY29udHJvbFxuICAgICAgICAgICAgZmQtaW5wdXQtZ3JvdXAtaW5wdXRcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICBbaWRdPVwidGhpcy5fY3ZhLmlkXCJcbiAgICAgICAgICAgIFtuYW1lXT1cInRoaXMuX2N2YS5uYW1lXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIl9vbklucHV0S2V5ZG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwidGhpcy5fY3ZhLmRpc2FibGVkXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl9zZWFyY2hUZXJtQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0aGlzLl9jdmEucGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgKGZvY3VzKT1cInRoaXMuX2N2YS5vblRvdWNoZWQoKVwiXG4gICAgICAgICAgICAoYmx1cik9XCIhbW9iaWxlICYmIF9vbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlblwiXG4gICAgICAgICAgICBbcmVhZG9ubHldPVwidGhpcy5fY3ZhLnJlYWRvbmx5XCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtcmVhZG9ubHldPVwidGhpcy5fY3ZhLnJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtkaXNwbGF5Rm5dPVwiX2Rpc3BsYXlGblwiXG4gICAgICAgIC8+XG4gICAgPC9mZC1pbnB1dC1ncm91cD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdFRlbXBsYXRlPlxuICAgIDx1bFxuICAgICAgICBmZC1saXN0XG4gICAgICAgIChmb2N1c0VzY2FwZUxpc3QpPVwiX2hhbmRsZUxpc3RGb2N1c0VzY2FwZSgkZXZlbnQpXCJcbiAgICAgICAgW2Ryb3Bkb3duTW9kZV09XCJ0cnVlXCJcbiAgICAgICAgY2xhc3M9XCJmZC1tdWx0aS1jb21ib2JveF9fbGlzdCBmZC1saXN0LS1tdWx0aS1pbnB1dFwiXG4gICAgICAgIFtpZF09XCJ0aGlzLl9jdmEuaWQgKyAnLXJlc3VsdCdcIlxuICAgICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICAgIFtzdHlsZS5tYXgtaGVpZ2h0XT1cIiFtb2JpbGUgJiYgbWF4SGVpZ2h0XCJcbiAgICAgICAgW3N0eWxlLm1pbi13aWR0aF09XCIhbW9iaWxlICYmIG1pbldpZHRoICsgJ3B4J1wiXG4gICAgICAgIFtzdHlsZS5tYXgtd2lkdGhdPVwiYXV0b1Jlc2l6ZSAmJiBtYXhXaWR0aCArICdweCdcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwidGhpcy5fY3ZhLmlkICsgJy1zZWFyY2gnXCJcbiAgICAgICAgYXJpYS1tdWx0aXNlbGVjdGFibGU9XCJ0cnVlXCJcbiAgICAgICAgKGtleWRvd24udGFiKT1cImNsb3NlKClcIlxuICAgICAgICAoa2V5ZG93bi5zaGlmdC50YWIpPVwiY2xvc2UoKVwiXG4gICAgPlxuICAgICAgICA8ZmQtZm9ybS1tZXNzYWdlXG4gICAgICAgICAgICAqbmdJZj1cIiEhdGhpcy5fY3ZhLnN0YXRlTWVzc2FnZVwiXG4gICAgICAgICAgICBbdHlwZV09XCJ0aGlzLl9jdmEuc3RhdGVcIlxuICAgICAgICAgICAgW2lubmVySHRtbF09XCJ0aGlzLl9jdmEuc3RhdGVNZXNzYWdlXCJcbiAgICAgICAgPjwvZmQtZm9ybS1tZXNzYWdlPlxuICAgICAgICA8ZmQtbXVsdGktY29tYm9ib3gtc2VsZWN0LWFsbC10b2dnbGVyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dTZWxlY3RBbGxcIlxuICAgICAgICAgICAgW3NlbGVjdEFsbEhhbmRsZXJdPVwiX2hhbmRsZVNlbGVjdEFsbEl0ZW1zXCJcbiAgICAgICAgICAgIFt2YWx1ZUNoYW5nZXNdPVwic2VsZWN0aW9uQ2hhbmdlXCJcbiAgICAgICAgICAgIFtzZWxlY3RlZEl0ZW1zXT1cIl9zZWxlY3RlZFN1Z2dlc3Rpb25zXCJcbiAgICAgICAgICAgIFtmbGF0SXRlbXNdPVwiX2ZsYXRTdWdnZXN0aW9uc1wiXG4gICAgICAgID48L2ZkLW11bHRpLWNvbWJvYm94LXNlbGVjdC1hbGwtdG9nZ2xlcj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNHcm91cDsgZWxzZSBmbGF0TGlzdFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgX3N1Z2dlc3Rpb25zXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFncm91cEl0ZW1UZW1wbGF0ZTsgZWxzZSBncm91cEl0ZW1UZW1wbGF0ZVJlbmRlcmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1saXN0LWdyb3VwLWhlYWRlciByb2xlPVwiZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgZ3JvdXAubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2dyb3VwSXRlbVRlbXBsYXRlUmVuZGVyZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImdyb3VwSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogeyBsYWJlbDogZ3JvdXAubGFiZWwgfSB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbkl0ZW0gb2YgZ3JvdXAuY2hpbGRyZW47IGxldCBpID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFt0YWJpbmRleF09XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFtb2JpbGUgJiYgY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIl9vbkl0ZW1LZXlEb3duSGFuZGxlcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIiEhb3B0aW9uSXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25PcHRpb25DaGVja2JveENsaWNrZWQoJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJfdG9nZ2xlU2VsZWN0aW9uKG9wdGlvbkl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cIm9wdGlvbkl0ZW0uc2VsZWN0ZWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IG9wdGlvbkl0ZW06IG9wdGlvbkl0ZW0sIGluZGV4OiBpIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2ZsYXRMaXN0PlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbkl0ZW0gb2YgX3N1Z2dlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBmZC1saXN0LWl0ZW1cbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICBbdGFiaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIiFtb2JpbGUgJiYgX29uT3B0aW9uQ2xpY2tlZCgkZXZlbnQsIGkpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJfb25JdGVtS2V5RG93bkhhbmRsZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW3NlbGVjdGVkXT1cIiEhb3B0aW9uSXRlbS5zZWxlY3RlZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZkLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfb25PcHRpb25DaGVja2JveENsaWNrZWQoJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIl90b2dnbGVTZWxlY3Rpb24ob3B0aW9uSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJvcHRpb25JdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9mZC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxpc3RJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uSXRlbTogb3B0aW9uSXRlbSwgaW5kZXg6IGkgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3VsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlIGxldC1vcHRpb25JdGVtPVwib3B0aW9uSXRlbVwiIGxldC1pbmRleD1cImluZGV4XCIgI2xpc3RJdGVtPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJvcHRpb25JdGVtLnNlbGVjdGVkICYmICEhc2VsZWN0ZWRJdGVtVGVtcGxhdGVcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RlZEl0ZW1UZW1wbGF0ZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uSXRlbS52YWx1ZSwgaW5kZXg6IGluZGV4IH1cIlxuICAgID48L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhKG9wdGlvbkl0ZW0uc2VsZWN0ZWQgJiYgc2VsZWN0ZWRJdGVtVGVtcGxhdGUpXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wdGlvbkl0ZW1Tb3VyY2VcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgb3B0aW9uSXRlbTogb3B0aW9uSXRlbSwgaW5kZXg6IGluZGV4IH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2Vjb25kYXJ5VGV4dFNvdXJjZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb25JdGVtOiBvcHRpb25JdGVtIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgbGV0LW9wdGlvbkl0ZW09XCJvcHRpb25JdGVtXCIgbGV0LWluZGV4PVwiaW5kZXhcIiAjb3B0aW9uSXRlbVNvdXJjZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9wdGlvbkl0ZW1UZW1wbGF0ZTsgZWxzZSBvcHRpb25JdGVtVGVtcGxhdGVSZW5kZXJlclwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgZmQtbGlzdC10aXRsZVxuICAgICAgICAgICAgW2F0dHIudGl0bGVdPVwib3B0aW9uSXRlbS5sYWJlbFwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm9wdGlvbkl0ZW0ubGFiZWwgfCBoaWdobGlnaHQgOiBpbnB1dFRleHRcIlxuICAgICAgICAgICAgZmRUcnVuY2F0ZWRUaXRsZVxuICAgICAgICA+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNvcHRpb25JdGVtVGVtcGxhdGVSZW5kZXJlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uSXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogb3B0aW9uSXRlbS52YWx1ZSwgaW5kZXg6IGluZGV4IH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSBsZXQtb3B0aW9uSXRlbT1cIm9wdGlvbkl0ZW1cIiAjc2Vjb25kYXJ5VGV4dFNvdXJjZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd1NlY29uZGFyeVRleHRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWNvbmRhcnlJdGVtVGVtcGxhdGU7IGVsc2Ugc2Vjb25kYXJ5SXRlbVRlbXBsYXRlUmVuZGVyZXJcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRleHQtYWxpZ25dPVwic2Vjb25kYXJ5VGV4dEFsaWdubWVudFwiXG4gICAgICAgICAgICAgICAgZmQtbGlzdC1zZWNvbmRhcnlcbiAgICAgICAgICAgICAgICBbYXR0ci50aXRsZV09XCJvcHRpb25JdGVtLnNlY29uZGFyeVRleHRcIlxuICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwib3B0aW9uSXRlbS5zZWNvbmRhcnlUZXh0IHwgaGlnaGxpZ2h0IDogaW5wdXRUZXh0XCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2Vjb25kYXJ5SXRlbVRlbXBsYXRlUmVuZGVyZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic2Vjb25kYXJ5SXRlbVRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IG9wdGlvbkl0ZW0udmFsdWUgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1252,7 +1252,9 @@ class MultiComboboxComponent extends BaseMultiCombobox {
|
|
|
1252
1252
|
}
|
|
1253
1253
|
else if (!KeyUtil.isKeyCode(event, [...this._nonOpeningKeys, CONTROL])) {
|
|
1254
1254
|
this._showList(true);
|
|
1255
|
-
const acceptedKeys = !KeyUtil.isKeyType(event, 'alphabetical') &&
|
|
1255
|
+
const acceptedKeys = !KeyUtil.isKeyType(event, 'alphabetical') &&
|
|
1256
|
+
!KeyUtil.isKeyType(event, 'numeric') &&
|
|
1257
|
+
!KeyUtil.isKeyType(event, 'ime');
|
|
1256
1258
|
if (acceptedKeys) {
|
|
1257
1259
|
// SetTimeout is needed for input to receive new value.
|
|
1258
1260
|
setTimeout(() => {
|